:root{font-family:ui-rounded,"SF Pro Rounded",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#fff9e9;background:#173e2d;font-synthesis:none;-webkit-tap-highlight-color:transparent;--cream:#fff6df;--ink:#294132;--coral:#ed9676;--gold:#f4c47c;--dial-size:min(85vw,calc(100svh - 345px),540px)}
*{box-sizing:border-box}html{min-height:100%;background:#173e2d}body{margin:0;min-width:280px;min-height:100svh;background:linear-gradient(180deg,rgba(9,37,22,.22),rgba(9,35,22,.5)),url('./assets/forest.webp') center/cover fixed;overflow-x:hidden}button,input{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:default;opacity:.45}button:focus-visible,input:focus-visible{outline:3px solid #f4c47c;outline-offset:5px}button{border:0}svg.icon{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.icon-definitions{position:absolute;width:0;height:0;overflow:hidden} [hidden]{display:none!important}
.app-shell{width:100%;max-width:1180px;margin:auto;min-height:100svh;padding:max(22px,env(safe-area-inset-top)) max(22px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(22px,env(safe-area-inset-left));display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-shrink:0}.brand-kicker{font-size:10px;font-weight:700;letter-spacing:2.1px;color:#e4e9c6}.brand h1{font-size:21px;line-height:1.2;font-weight:650;letter-spacing:-.6px;margin:5px 0 0;text-shadow:0 2px 8px #173e2d80}.top-actions{display:flex;gap:8px}.icon-button{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;color:#fff8e5;background:#ffffff17;box-shadow:inset 0 0 0 1px #ffffff1c;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.icon-button[aria-pressed=false]{background:#fff6df;color:var(--ink)}
.timer-layout{flex:1;display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;align-content:center;gap:8px;padding-top:22px}.visual-section{display:flex;align-items:center;flex-direction:column;min-width:0;width:100%}.dial-wrap{position:relative;width:var(--dial-size);height:var(--dial-size);max-width:100%;flex-shrink:0}.dial{position:relative;border-radius:50%;isolation:isolate;overflow:hidden;width:100%;height:100%;background:#b9d8d6;border:7px solid #f3edcf;box-shadow:0 12px 38px #082d2570,0 2px 0 1px #c4b899;transform:translateZ(0)}.animal-image{display:block;width:100%;height:100%;object-fit:cover}.dial-cover{position:absolute;inset:-1px;background-color:var(--coral);background-image:radial-gradient(#fff4d91f 2px,transparent 2px);background-size:26px 26px;display:grid;place-items:center;mask-image:conic-gradient(from 0deg,transparent 0deg 0deg,#000 0deg 360deg);-webkit-mask-image:conic-gradient(from 0deg,transparent 0deg 0deg,#000 0deg 360deg)}.question{font-size:76px;line-height:1;font-weight:500;color:#fff4dc;opacity:.9;user-select:none}.encouragement{font-size:16px;font-weight:500;min-height:22px;line-height:1.4;text-align:center;margin:20px 0 0;text-shadow:0 2px 8px #082c2080;color:#fff4d9}.control-section{width:100%;max-width:360px;min-width:0;align-self:center}.time-display{text-align:center;margin-bottom:17px}.time-label{font-size:12px;color:#e6ebd3;display:block}.time{font-size:49px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.13;letter-spacing:-1.8px;margin:3px 0 2px;text-shadow:0 2px 10px #082d2555}.state-status{font-size:12px;line-height:1.4;min-height:17px;color:#e0e8cd;margin:0}.setup-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 14px}.setup-choice{background:#fff8e9f2;border-radius:17px;display:flex;align-items:center;min-height:65px;gap:9px;padding:11px;color:var(--ink);text-align:left;box-shadow:0 3px 10px #082d2520}.setup-choice>span{flex:1;min-width:0}.setup-choice small{display:block;font-size:9px;font-weight:700;letter-spacing:1.1px;color:#6b7969;margin-bottom:3px}.setup-choice strong{display:block;font-size:14px;font-weight:650;white-space:nowrap}.setup-choice>.icon{width:24px;height:24px;color:#71816a}.setup-choice>.chevron{width:14px;height:14px;color:#7e8a72}.setup-choice img{width:34px;height:34px;object-fit:cover;border-radius:50%;flex-shrink:0}.primary-button{width:100%;display:flex;align-items:center;justify-content:center;gap:11px;min-height:58px;border-radius:19px;background:var(--gold);color:#344530;font-size:18px;font-weight:700;box-shadow:0 5px 0 #a7783f,0 10px 24px #082d2530;transition:transform .12s,box-shadow .12s}.primary-button:active{transform:translateY(3px);box-shadow:0 2px 0 #a7783f,0 5px 15px #082d2530}.text-button{background:transparent;color:#f2f0dc;font-size:13px;min-height:44px;display:block;margin:8px auto 0;padding:10px 12px}.timer-buttons{display:flex;align-items:center;justify-content:center;gap:27px}.adjust-button{width:68px;height:68px;border-radius:50%;background:#fff6e6e8;color:var(--ink);display:flex;align-items:center;justify-content:center;gap:3px;box-shadow:0 4px 12px #082d2540;flex-shrink:0}.adjust-button span:last-child{font-weight:650;font-size:17px;white-space:nowrap}.adjust-sign{font-size:25px;font-weight:500;line-height:1}.pause-button{width:90px;height:90px;border-radius:50%;background:var(--gold);color:#344530;box-shadow:0 5px 0 #a7783f,0 10px 22px #082d2530;display:flex;align-items:center;justify-content:center;gap:2px;flex-direction:column;flex-shrink:0}.pause-button .icon{width:32px;height:32px}.pause-button span{font-size:12px;font-weight:700;margin-top:3px}.reset-button{margin-top:8px}.audio-hint{font-size:12px;text-align:center;line-height:1.4;margin:10px 0 0;color:#fff1ce}.finished-actions .text-button{margin-top:10px}#app[data-state=finished] .time{font-size:46px}#app[data-state=paused] .encouragement{color:#ffe1ab}
.celebration{position:absolute;inset:0;pointer-events:none;opacity:0;color:#ffe6a3}.celebration span{position:absolute;font-size:28px;text-shadow:0 2px 8px #092e25a0}.celebration span:nth-child(1){top:5%;left:0}.celebration span:nth-child(2){top:-5%;left:37%}.celebration span:nth-child(3){top:17%;right:-3%}.celebration span:nth-child(4){bottom:13%;right:-3%}.celebration span:nth-child(5){bottom:-4%;left:45%}.celebration span:nth-child(6){bottom:15%;left:-5%}#app[data-state=finished] .celebration{opacity:1}#app[data-state=finished] .celebration span{animation:celebrate 1.2s ease-out both}#app[data-state=finished] .celebration span:nth-child(even){animation-delay:.15s}@keyframes celebrate{0%{opacity:0;transform:scale(.2) translateY(15px)}55%{opacity:1;transform:scale(1.2) translateY(-4px)}100%{opacity:1;transform:scale(1) translateY(0)}}
.sheet{color:var(--ink);background:#fffaf0;border:0;border-radius:29px;padding:25px;width:calc(100% - 28px);max-width:470px;max-height:min(90svh,780px);overflow-y:auto;box-shadow:0 20px 100px #062a25a6}.sheet::backdrop{background:#06291fad;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}.sheet-header{display:flex;gap:12px;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.eyebrow{font-size:10px;font-weight:750;letter-spacing:1.6px;color:#7a886e}.sheet h2{font-size:23px;line-height:1.18;font-weight:650;letter-spacing:-.6px;margin:6px 0 0}.close-button{display:grid;place-items:center;width:44px;height:44px;flex-shrink:0;border-radius:50%;background:#eaf0e1;color:#4f684e;margin:-5px -5px 0 0}.close-button .icon{width:21px;height:21px}.presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:24px}.presets button{font-size:14px;font-weight:600;border-radius:12px;min-height:48px;color:#436044;background:#eaf0e1;padding:8px}.presets button[aria-pressed=true]{background:#416344;color:#fff9e9}.field-heading{font-size:13px;font-weight:600;margin:0 0 12px}.custom-time{display:grid;grid-template-columns:minmax(0,1fr) 10px minmax(0,1fr);gap:12px;align-items:end;margin-bottom:20px}.custom-time label{display:flex;flex-direction:column;gap:7px;font-size:12px;color:#6c7864}.custom-time input{width:100%;min-width:0;border:1px solid #d5dfca;border-radius:14px;background:#fffef9;color:#294132;padding:13px;text-align:center;font-size:27px;font-weight:500;font-variant-numeric:tabular-nums;appearance:textfield;-moz-appearance:textfield}.custom-time input::-webkit-inner-spin-button{appearance:none}.custom-time>span{font-size:26px;padding-bottom:13px;text-align:center}.sheet-primary{width:100%;min-height:51px;border-radius:15px;color:#fff9e9;background:#416344;font-size:16px;font-weight:600}.form-error{font-size:13px;color:#a54533;line-height:1.4}.animal-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.animal-choice{background:transparent;border-radius:20px;color:#3b553d;padding:8px 4px;position:relative;display:flex;align-items:center;flex-direction:column;gap:9px;font-size:14px;font-weight:600;box-shadow:inset 0 0 0 2px transparent}.animal-choice img{width:100%;aspect-ratio:1;max-width:107px;border-radius:50%;object-fit:cover;box-shadow:0 3px 8px #29413215}.animal-choice[aria-pressed=true]{background:#e7efdc;box-shadow:inset 0 0 0 2px #70915d}.animal-choice .selected-check{display:none;position:absolute;right:9px;top:9px;width:23px;height:23px;border-radius:50%;background:#416344;color:#fff;align-items:center;justify-content:center}.animal-choice[aria-pressed=true] .selected-check{display:flex}.selected-check .icon{width:15px;height:15px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px 0;border-bottom:1px solid #e1e7d8;min-height:80px}.setting-row strong{display:block;font-size:15px;font-weight:600}.setting-row small{display:block;font-size:12px;line-height:1.5;color:#72806a;margin-top:4px}.switch{appearance:none;-webkit-appearance:none;width:48px;height:29px;border:0;border-radius:20px;background:#d5ddcb;position:relative;cursor:pointer;flex-shrink:0;margin:0;transition:background .15s}.switch:before{content:"";position:absolute;top:3px;left:3px;width:23px;height:23px;border-radius:50%;background:#fffef8;box-shadow:0 1px 4px #18391b25;transition:transform .15s}.switch:checked{background:#608252}.switch:checked:before{transform:translateX(19px)}.volume-setting{display:block;padding:22px 0 15px;border-bottom:1px solid #e1e7d8}.volume-setting>span{display:flex;justify-content:space-between;font-size:14px;font-weight:600;margin-bottom:13px}.volume-setting output{color:#6a7d5d;font-weight:500}.volume-setting input{display:block;width:100%;height:25px;accent-color:#608252;margin:0}.offline-note{display:flex;align-items:flex-start;gap:9px;background:#eaf0e1;border-radius:14px;padding:13px 14px;margin:22px 0 0;font-size:12px;line-height:1.5;color:#56724f}.offline-note .icon{width:17px;height:17px;margin-top:1px}.install-help h3{font-size:14px;margin:22px 0 6px;font-weight:600}.install-help p{font-size:12px;line-height:1.7;color:#74816d;margin:0}.install-help strong{font-weight:600;color:#4f664c}.toast{position:fixed;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translateX(-50%);padding:13px 18px;border-radius:17px;color:#294132;background:#fff8e9;box-shadow:0 8px 30px #06291f55;max-width:min(90vw,390px);width:max-content;font-size:13px;line-height:1.5;text-align:center;z-index:10}.noscript{padding:25px;color:#fff8e9;text-align:center}
@media(min-width:768px) and (orientation:landscape){:root{--dial-size:min(48vw,calc(100svh - 155px),560px)}.app-shell{padding:30px 36px}.brand h1{font-size:25px}.brand-kicker{font-size:11px}.timer-layout{grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr);gap:45px;padding-top:18px}.control-section{max-width:350px}.time{font-size:70px}.time-display{margin-bottom:27px}.time-label{font-size:14px}.state-status{font-size:13px}.encouragement{font-size:18px;margin-top:24px}.setup-choices{gap:12px;margin-bottom:18px}.setup-choice{min-height:73px}.primary-button{min-height:63px}.timer-buttons{gap:28px}.adjust-button{width:75px;height:75px}.pause-button{width:105px;height:105px}.pause-button .icon{width:37px;height:37px}.pause-button span{font-size:13px}}
@media(min-width:768px) and (orientation:portrait){.app-shell{padding:34px 40px}.timer-layout{gap:12px}.control-section{max-width:430px}.setup-choice{min-height:77px;padding:16px}.setup-choice strong{font-size:17px}.primary-button{min-height:68px;font-size:20px}.encouragement{font-size:20px}.time{font-size:65px}.time-display{margin-bottom:21px}.adjust-button{width:80px;height:80px}.pause-button{width:112px;height:112px}.timer-buttons{gap:37px}.pause-button .icon{width:39px;height:39px}}
@media(max-height:720px) and (orientation:portrait){:root{--dial-size:min(82vw,calc(100svh - 320px),380px)}.app-shell{padding-top:max(14px,env(safe-area-inset-top));padding-bottom:max(14px,env(safe-area-inset-bottom))}.timer-layout{padding-top:15px;gap:2px}.encouragement{margin-top:12px;font-size:14px}.time{font-size:42px}.time-display{margin-bottom:12px}.time-label{font-size:11px}.state-status{font-size:11px}.setup-choice{min-height:58px}.primary-button{min-height:52px}.pause-button{width:78px;height:78px}.adjust-button{width:62px;height:62px}.reset-button{margin-top:2px}.question{font-size:62px}}
@media(orientation:landscape) and (max-height:560px){:root{--dial-size:min(43vw,calc(100svh - 100px),350px)}.app-shell{padding:12px max(22px,env(safe-area-inset-right)) 12px max(22px,env(safe-area-inset-left))}.brand-kicker{display:none}.brand h1{font-size:18px;margin:0}.topbar{min-height:40px}.icon-button{width:40px;height:40px}.timer-layout{grid-template-columns:minmax(0,1fr) minmax(250px,1fr);gap:25px;padding-top:8px}.encouragement{font-size:12px;margin-top:9px}.control-section{max-width:315px}.time{font-size:39px}.time-display{margin-bottom:9px}.time-label{font-size:10px}.state-status{font-size:10px;min-height:14px}.setup-choices{margin-bottom:10px}.setup-choice{min-height:50px;border-radius:13px;padding:8px}.setup-choice small{font-size:8px}.setup-choice strong{font-size:12px}.setup-choice img{width:28px;height:28px}.setup-choice>.icon{width:20px;height:20px}.setup-choice>.chevron{width:12px;height:12px}.primary-button{min-height:46px;border-radius:14px;font-size:16px}.pause-button{width:68px;height:68px}.pause-button .icon{width:25px;height:25px}.pause-button span{font-size:10px}.adjust-button{width:55px;height:55px}.adjust-button span:last-child{font-size:14px}.timer-buttons{gap:24px}.text-button{font-size:11px;min-height:38px;margin-top:3px}.question{font-size:54px}.sheet{max-height:90svh}}
@media(max-width:360px){.app-shell{padding-left:16px;padding-right:16px}.brand h1{font-size:19px}.brand-kicker{font-size:9px;letter-spacing:1.6px}.top-actions{gap:6px}.icon-button{width:40px;height:40px}.setup-choices{gap:8px}.setup-choice{gap:6px;padding:9px}.setup-choice strong{font-size:13px}.setup-choice>.chevron{width:10px}.timer-buttons{gap:23px}.sheet{padding:20px}.sheet h2{font-size:21px}.animal-gallery{gap:7px}.presets button{font-size:12px}}
@media(max-height:620px) and (orientation:portrait){:root{--dial-size:min(82vw,calc(100svh - 337px),300px)}.timer-layout{padding-top:9px}.encouragement{margin-top:9px;font-size:13px}.time-display{margin-bottom:10px}.time{font-size:39px}.finished-actions .text-button{margin-top:5px}.app-shell{padding-bottom:max(10px,env(safe-area-inset-bottom))}}
@media(min-width:768px) and (orientation:portrait){:root{--dial-size:min(78vw,calc(100svh - 500px),620px)}}
@media(orientation:landscape) and (max-height:560px){:root{--dial-size:min(43vw,calc(100svh - 108px),350px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.animal-choice img{height:auto}
.celebration-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:5}
#app.show-finale .dial{animation:finale-glow 1.6s ease-out 4}
#app.show-finale .time{color:#ffe49c;text-shadow:0 0 24px #f4c47c70}
@keyframes finale-glow{0%,100%{box-shadow:0 12px 38px #082d2570,0 0 0 0 #ffe4a344}45%{box-shadow:0 12px 38px #082d2570,0 0 0 13px #ffe4a300,0 0 48px #f4c47c66}}
.countdown-cue{position:absolute;inset:0;z-index:2;display:grid;place-items:center;pointer-events:none;background:radial-gradient(circle,#173e2d80 0%,#173e2d00 65%)}
.countdown-cue span{display:block;color:#ffe8a6;font-size:calc(var(--dial-size) * .43);font-weight:800;line-height:1;font-variant-numeric:tabular-nums;text-shadow:0 4px 0 #244d36,0 7px 24px #082d25b3;-webkit-text-stroke:2px #244d36;paint-order:stroke fill;animation:countdown-pop .32s cubic-bezier(.2,.8,.3,1) both}
@keyframes countdown-pop{from{opacity:.3;transform:scale(.72)}to{opacity:1;transform:scale(1)}}
.franklin-scene{position:absolute;inset:0;overflow:hidden;background:radial-gradient(ellipse at 48% 30%,#f7fffb 0%,#d7eee5 48%,#91c8b6 100%)}
.franklin-scene:before{content:"";position:absolute;inset:0;background:linear-gradient(#ffffff40 1px,transparent 1px),linear-gradient(90deg,#ffffff40 1px,transparent 1px);background-size:18% 18%;opacity:.45}
.franklin-character{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 7px 8px #2a654331);transform:translate(var(--franklin-x,0%),var(--franklin-y,0%));transform-origin:0 0}
.franklin-progress{position:absolute;inset:0;pointer-events:none;border-radius:50%;background:conic-gradient(from -90deg,#f4c47c 0deg var(--brushing-progress,0deg),#ffffff40 var(--brushing-progress,0deg) 360deg);mask:radial-gradient(farthest-side,transparent calc(100% - 9px),#000 calc(100% - 8px));-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 9px),#000 calc(100% - 8px))}
.franklin-hello{position:absolute;inset:7px;z-index:3;border-radius:50%;background:transparent;cursor:pointer;padding:0;touch-action:manipulation}
.franklin-hello:focus-visible{outline:4px solid #f4c47c;outline-offset:9px}
.animal-choice[data-animal=franklin] img,#app[data-animal=franklin] #chosenThumb{background:#d7eee5}
.animal-choice .animated-badge{font-size:8px;letter-spacing:.7px;font-weight:750;line-height:1;background:#d8ead3;color:#416344;border-radius:8px;padding:5px 7px;margin-top:-3px}
