@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;600&family=Manrope:wght@200;300;400&display=swap');
:root{color-scheme:dark;--bg:#111c27;--fg:#e0e9ed;--muted:#93a6b4;--line:#334550;--accent:#b7d1dc;--button:#d5e5eb;--button-text:#172630;--surface:#1c2b36;--glow:#29455444}
html[data-theme=porcelain]{color-scheme:light;--bg:#f4f5f3;--fg:#283736;--muted:#687674;--line:#cbd5d1;--accent:#688984;--button:#314e4b;--button-text:#f7faf8;--surface:#e7ece8;--glow:#b5cbc744}
html[data-theme=dusk]{color-scheme:dark;--bg:#292031;--fg:#eee3ed;--muted:#b4a0b4;--line:#584359;--accent:#d1accb;--button:#e4cde0;--button-text:#302237;--surface:#392c42;--glow:#77517b33}
html[data-theme=earth]{color-scheme:light;--bg:#eae1d4;--fg:#44382b;--muted:#786955;--line:#c9b99f;--accent:#937448;--button:#584932;--button-text:#f6eddd;--surface:#ded2c0;--glow:#be9c6140}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:'DM Sans',sans-serif;font-size:16px;transition:background .5s,color .5s}button,select{font:inherit;color:inherit}button,a,select,input{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.25;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible+span{outline:2px solid var(--accent);outline-offset:6px}a{color:inherit}button{border:0}button,select{touch-action:manipulation}button:hover{filter:brightness(1.1)}.app{min-height:100svh;max-width:1060px;margin:auto;padding:38px 52px 24px;display:flex;flex-direction:column}header{display:flex;justify-content:space-between;align-items:center}.wordmark{font-family:'Manrope',sans-serif;font-weight:300;font-size:33px;letter-spacing:-1.5px;text-decoration:none}.wordmark span{color:var(--accent);padding-left:2px}.palettes{display:flex;gap:5px}.swatch{width:36px;height:36px;border-radius:50%;padding:8px;background:transparent;position:relative}.swatch:after{content:'';display:block;width:20px;height:20px;border-radius:50%;box-shadow:inset 0 0 0 1px #ffffff30}.swatch[aria-pressed=true]{outline:1px solid var(--muted);outline-offset:-3px}.moon:after{background:#243c4c}.porcelain:after{background:#e8eee9}.dusk:after{background:#a287a5}.earth:after{background:#c3a67d}main{width:min(100%,400px);margin:auto; padding:48px 0 34px}.eyebrow{font-size:12px;font-weight:500;letter-spacing:3px;text-align:center;color:var(--muted);margin:0 0 22px}.duration-wrap{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-bottom:35px}.dial{position:relative;width:258px;aspect-ratio:1;flex-shrink:1;background:radial-gradient(circle,var(--glow),transparent 65%)}.dial svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;transform:rotate(-90deg)}.track,.arc{fill:none;stroke-width:.9}.track{stroke:var(--line)}.arc{stroke:var(--accent);stroke-width:1.6;stroke-linecap:round;stroke-dasharray:754;transition:stroke-dashoffset .6s linear}.dial-inner{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;padding-top:6px}select{appearance:none;-webkit-appearance:none;border:0;background:none;line-height:1.1;font-family:'Manrope',sans-serif;font-weight:200;font-size:86px;text-align:center;text-align-last:center;letter-spacing:-5px;cursor:pointer;min-width:125px;padding:0 10px 4px 0}option{font:20px sans-serif;background:var(--bg);color:var(--fg)}.unit{color:var(--muted);font-size:14px;letter-spacing:1px;margin-top:3px}.step{width:46px;height:46px;flex-shrink:0;border:1px solid var(--line);border-radius:50%;background:none;font-size:24px;font-weight:300}.settings{margin-bottom:28px}.bell-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:0 0 24px;margin-bottom:24px}.bell-row label{font-size:16px}.bell-row p{color:var(--muted);font-size:13px;margin:7px 0 0}.switch{position:relative;display:block;width:44px;height:27px;flex-shrink:0;cursor:pointer}.switch input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.switch span{display:block;width:44px;height:27px;background:var(--line);border-radius:20px;pointer-events:none;transition:background .2s}.switch span:after{content:'';display:block;position:absolute;left:4px;top:4px;width:19px;height:19px;border-radius:50%;background:var(--muted);transition:transform .2s}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:after{transform:translateX(17px);background:var(--bg)}fieldset{padding:0;margin:0;border:0}legend{font-size:16px;margin-bottom:15px;padding:0;width:100%}legend span{float:right;font-size:12px;color:var(--muted);padding-top:3px}.sounds{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.sounds button{display:flex;flex-direction:column;align-items:center;gap:10px;padding:16px 1px 13px;background:transparent;border:1px solid var(--line);border-radius:15px;font-size:13px;color:var(--muted);transition:background .2s,border .2s}.sounds button[aria-pressed=true]{background:var(--surface);border-color:var(--accent);color:var(--fg)}.sounds svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}.primary{display:block;width:100%;border-radius:50px;background:var(--button);color:var(--button-text);padding:18px 24px;font-size:16px;font-weight:500;position:relative}.primary span{position:absolute;right:25px;font-size:21px;top:14px}.ritual{font-size:12px;color:var(--muted);text-align:center;margin:15px 0 0;line-height:1.7}footer{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px}footer span{letter-spacing:2px;font-size:10px}.text-button{background:none;padding:10px 0;font-size:12px;color:var(--muted)}[hidden]{display:none!important}.session-dial{width:290px;margin:35px auto}.timer{font-family:'Manrope',sans-serif;font-weight:200;font-size:64px;letter-spacing:-3px;font-variant-numeric:tabular-nums}.session-message{text-align:center;color:var(--muted);margin:26px 0 56px}.secondary{display:block;border:1px solid var(--line);border-radius:50px;background:none;padding:16px 28px;margin:auto;font-size:15px}.device-note{color:var(--muted);font-size:12px;text-align:center;margin-top:24px;line-height:1.6}#result{text-align:center}.result-time{margin:40px 0}.result-time>span{font-family:'Manrope',sans-serif;font-weight:200;font-size:88px;letter-spacing:-4px}.result-time p{font-size:14px;color:var(--muted);margin:0}.quote-rule{width:32px;height:1px;background:var(--accent);margin:42px auto 28px}blockquote{font-family:Georgia,serif;font-size:27px;line-height:1.5;font-weight:400;margin:0 0 22px}.attribution{font-size:12px;text-decoration:none;line-height:1.8;color:var(--muted)}.attribution span{font-size:11px}#result .primary{margin-top:50px}#notice{font-size:14px;color:var(--fg);line-height:1.6;text-align:center;padding:15px;border:1px solid var(--line);border-radius:12px}dialog{background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:24px;padding:32px;width:min(92vw,480px);max-height:85svh}dialog::backdrop{background:#0008;backdrop-filter:blur(5px)}dialog h2{font-family:'Manrope',sans-serif;font-weight:300;font-size:28px;margin-top:0}dialog h3{font-size:16px}dialog p,dialog li{font-size:14px;line-height:1.7;color:var(--muted)}dialog ul{padding-left:18px}.small{font-size:12px!important}.close{position:absolute;right:14px;top:12px;background:none;font-size:25px;width:36px;height:36px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}body.active footer{visibility:hidden}body.active .palettes{opacity:.5}body.active .wordmark{pointer-events:none}@media(min-width:800px){main{padding-top:40px}.app{min-height:max(100svh,800px)}}@media(max-width:520px){.app{padding:24px 25px 15px}main{padding-top:35px;padding-bottom:25px}.dial{width:240px}.duration-wrap{margin-bottom:30px;gap:0}.step{width:40px;height:40px}.eyebrow{margin-bottom:17px}.bell-row{padding-bottom:21px;margin-bottom:21px}.wordmark{font-size:30px}legend span{font-size:11px}.session-dial{width:270px}}@media(max-width:350px){.app{padding-inline:17px}.dial{width:220px}legend span{float:none;display:block}.sounds{gap:5px}.sounds button{font-size:12px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
