:root{--bg: #0a0b0d;--bg-2: #101114;--surface: #15171b;--surface-2: #1c1f24;--line: #24272d;--line-2: #30343b;--text: #ecebe6;--text-2: #a4a7ad;--text-3: #6b6f77;--green: #35d58e;--green-dim: #1f6d4b;--green-glow: rgba(53, 213, 142, .28);--red: #e5484d;--red-dim: #5c2326;--amber: #f2b94b;--sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", Inter, "Segoe UI", system-ui, sans-serif;--display: -apple-system, BlinkMacSystemFont, "SF Pro Display", Inter, "Segoe UI", system-ui, sans-serif;--r: 14px;--r-s: 10px;--ease: cubic-bezier(.2,.8,.2,1);--spring: cubic-bezier(.34,1.56,.64,1);--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{background:var(--bg);color-scheme:dark;height:100%}body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font:16px/1.45 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-variant-numeric:tabular-nums;overscroll-behavior-y:none;user-select:none;-webkit-user-select:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}input,textarea{font:inherit;color:inherit}h1,h2,h3,p{margin:0}a{color:inherit}[hidden]{display:none!important}#app{min-height:100dvh;display:flex;flex-direction:column}.screen{flex:1;padding:calc(20px + var(--safe-t)) 20px calc(96px + var(--safe-b));max-width:560px;width:100%;margin:0 auto;animation:fade .32s var(--ease)}.screen.full{padding-bottom:calc(24px + var(--safe-b))}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);font-weight:600}.eyebrow.green{color:var(--green)}.eyebrow.red{color:var(--red)}.eyebrow.amber{color:var(--amber)}.display{font-family:var(--display);font-weight:700;letter-spacing:-.03em;line-height:1}.display.xl{font-size:64px}.display.l{font-size:40px}.display.m{font-size:28px}.title{font-family:var(--display);font-weight:600;font-size:22px;letter-spacing:-.02em;line-height:1.2}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.small{font-size:14px}.tiny{font-size:13px}.center{text-align:center}.wordmark{font-family:var(--display);font-weight:700;letter-spacing:.22em;font-size:13px;text-transform:uppercase;color:var(--text-2)}.stack>*+*{margin-top:12px}.stack-l>*+*{margin-top:24px}.row{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.grow{flex:1;min-width:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:54px;padding:0 20px;border-radius:var(--r);font-weight:600;font-size:17px;letter-spacing:-.01em;transition:transform .15s var(--ease),opacity .2s,background .2s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;pointer-events:none}.btn.primary{background:var(--text);color:var(--bg)}.btn.green{background:var(--green);color:#06130c;box-shadow:0 0 0 0 var(--green-glow)}.btn.ghost{background:var(--surface);color:var(--text);border:1px solid var(--line)}.btn.danger{background:transparent;color:var(--red);border:1px solid var(--red-dim)}.btn.sm{min-height:40px;font-size:15px;width:auto;padding:0 14px;border-radius:var(--r-s)}.btn.link{width:auto;min-height:0;padding:8px 4px;color:var(--text-2);font-weight:500;font-size:15px}.btn.link:hover{color:var(--text)}.field{width:100%;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);padding:14px 16px;font-size:17px;outline:none;transition:border-color .2s}.field:focus{border-color:var(--text-2)}.field.sign{font-family:var(--display);font-size:26px;font-weight:600;letter-spacing:-.02em;text-align:center;padding:18px}.field::placeholder{color:var(--text-3)}label.lbl{display:block;font-size:13px;color:var(--text-2);margin:0 0 6px 2px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px}.note{font-size:14px;color:var(--text-2);line-height:1.5}.err{color:var(--red);font-size:14px;min-height:1em}.tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;justify-content:center;padding:8px 12px calc(10px + var(--safe-b));background:linear-gradient(to top,#0a0b0dfa 60%,#0a0b0d00)}.tabs-inner{display:flex;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:4px;width:100%;max-width:420px}.tab{flex:1;min-height:48px;border-radius:14px;font-size:12px;font-weight:600;letter-spacing:.02em;color:var(--text-3);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;transition:color .2s,background .2s}.tab svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tab.on{color:var(--text);background:var(--surface-2)}.today-head{padding:8px 0 20px}.today-head .display{margin-top:8px}.today-head .status{margin-top:10px;font-size:16px;color:var(--text-2);min-height:1.5em;transition:color .3s}.today-head.done .display{color:var(--green);text-shadow:0 0 32px var(--green-glow)}.pressure{margin-top:12px;padding:10px 12px;border-radius:var(--r-s);background:#f2b94b14;color:var(--amber);font-size:14px;font-weight:500;border:1px solid rgba(242,185,75,.18)}.pressure.red{background:#e5484d1a;color:var(--red);border-color:#e5484d40}.recover{margin:0 0 16px;padding:12px 14px;border-radius:var(--r-s);background:var(--surface);border:1px solid var(--line);color:var(--text-2);font-size:14px;line-height:1.5}.recover b{color:var(--text);font-weight:600}.list{display:flex;flex-direction:column;gap:8px}.item{display:flex;align-items:center;gap:14px;width:100%;text-align:left;padding:14px 14px 14px 16px;min-height:64px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);transition:background .25s,border-color .25s,transform .15s var(--ease)}.item:active{transform:scale(.985)}.item .t{font-size:17px;font-weight:500;letter-spacing:-.01em;transition:color .25s}.item .d{font-size:13px;color:var(--text-3);margin-top:2px;line-height:1.35}.item.on{background:var(--bg-2);border-color:var(--line)}.item.on .t{color:var(--text-2)}.box{width:28px;height:28px;flex:none;border-radius:9px;border:1.5px solid var(--line-2);display:grid;place-items:center;transition:background .2s var(--spring),border-color .2s,transform .25s var(--spring);position:relative}.box svg{width:16px;height:16px;stroke:#06130c;stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:24;stroke-dashoffset:24;transition:stroke-dashoffset .25s var(--ease) .05s}.item.on .box{background:var(--green);border-color:var(--green);animation:pop .35s var(--spring);box-shadow:0 0 18px var(--green-glow)}.item.on .box svg{stroke-dashoffset:0}@keyframes pop{0%{transform:scale(.8)}60%{transform:scale(1.12)}to{transform:scale(1)}}.item .box.na{background:var(--surface-2);border-color:var(--line-2)}.item .box.na:after{content:"";width:10px;height:1.5px;background:var(--text-3);border-radius:1px}.cond{display:flex;flex-direction:column;align-items:stretch;gap:10px;cursor:default}.cond .q{font-size:14px;color:var(--text-2)}.cond .choices{display:flex;gap:8px}.cond .choice{flex:1;min-height:42px;border-radius:10px;border:1px solid var(--line-2);font-size:15px;font-weight:500;color:var(--text-2);transition:all .2s}.cond .choice.sel-na{background:var(--surface-2);color:var(--text);border-color:var(--line-2)}.cond .choice.sel-done{background:var(--green);color:#06130c;border-color:var(--green)}.cond.resolved .q{display:none}.cond .box{transition:background .2s var(--spring),border-color .2s}.cond.on .box{background:var(--green);border-color:var(--green);box-shadow:0 0 18px var(--green-glow)}.cond.on .box svg{stroke-dashoffset:0}.item.corrected .t:after{content:" ·";color:var(--text-3)}.cal{display:grid;grid-template-columns:28px repeat(7,1fr);gap:6px;align-items:center}.cal .wd{font-size:11px;color:var(--text-3);text-align:center;font-weight:600;letter-spacing:.05em}.cal .mo{font-size:11px;color:var(--text-3);font-weight:600;letter-spacing:.05em;text-transform:uppercase}.sq{aspect-ratio:1;border-radius:8px;background:var(--surface);border:1px solid var(--line);display:grid;place-items:center;font-size:12px;color:var(--text-3);font-weight:500;transition:transform .2s var(--spring),background .3s,border-color .3s;position:relative}.sq.green{background:var(--green);border-color:var(--green);color:#06130c;box-shadow:0 0 14px #35d58e2e}.sq.red{background:var(--red-dim);border-color:#7a2b2f;color:#f3a5a8}.sq.today{border-color:var(--text);color:var(--text);animation:pulse 2.4s ease-in-out infinite}.sq.today.green{animation:none}.sq.future{opacity:.55}.sq.out{opacity:0;pointer-events:none}.sq.tappable:active{transform:scale(.9)}.sq.n{visibility:hidden}@keyframes pulse{0%,to{box-shadow:0 0 #ecebe600}50%{box-shadow:0 0 0 4px #ecebe614}}.legend{display:flex;gap:16px;font-size:13px;color:var(--text-2)}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px}.stat .v{font-family:var(--display);font-size:44px;font-weight:700;letter-spacing:-.03em;line-height:1;margin-top:10px}.stat .v.green{color:var(--green)}.ring{display:grid;place-items:center;position:relative}.ring svg{width:220px;height:220px;transform:rotate(-90deg)}.ring .c{position:absolute;text-align:center}.bars{display:flex;gap:3px;align-items:flex-end;height:32px}.bars i{flex:1;border-radius:2px;background:var(--surface-2);height:100%}.bars i.green{background:var(--green)}.bars i.red{background:var(--red-dim)}.bars i.today{background:var(--text-3)}.bars i.future{background:var(--surface)}.misses .m{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);font-size:15px}.misses .m:last-child{border-bottom:0}.brow{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}.brow.me{border-color:var(--line-2);background:var(--bg-2)}.brow .rank{width:22px;font-size:13px;color:var(--text-3);font-weight:600}.brow .name{font-weight:600;font-size:17px}.brow .sub{font-size:13px;color:var(--text-3);margin-top:2px}.brow .g{font-family:var(--display);font-size:30px;font-weight:700;letter-spacing:-.03em;color:var(--green)}.brow .g small{font-size:12px;color:var(--text-3);font-weight:600;letter-spacing:.04em;text-transform:uppercase;margin-left:4px}.pill{display:inline-block;font-size:12px;font-weight:600;padding:3px 8px;border-radius:999px;background:var(--surface-2);color:var(--text-2)}.pill.green{background:#35d58e24;color:var(--green)}.pill.amber{background:#f2b94b1f;color:var(--amber)}.set{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.set .r{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);min-height:56px;width:100%;text-align:left}.set .r:last-child{border-bottom:0}.set .r .k{font-size:16px;font-weight:500}.set .r .s{font-size:13px;color:var(--text-3);margin-top:2px}.set .r .v{font-size:14px;color:var(--text-2)}.chev{color:var(--text-3)}.rule-edit{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px}.rule-edit .field{background:var(--bg-2);padding:10px 12px;font-size:16px}.rule-edit .row+.row{margin-top:8px}.toggle{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--text-2)}.toggle input{width:18px;height:18px;accent-color:var(--green)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:10px 14px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);font-size:15px;font-weight:500;color:var(--text-2);transition:all .18s var(--ease)}.chip.on{background:var(--text);color:var(--bg);border-color:var(--text)}.commit-card{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:28px 24px;min-height:220px;display:flex;flex-direction:column;justify-content:space-between;animation:slide .35s var(--ease)}@keyframes slide{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.dots{display:flex;gap:5px;justify-content:center}.dots i{width:6px;height:6px;border-radius:3px;background:var(--line-2);transition:background .2s,width .2s}.dots i.done{background:var(--green)}.dots i.cur{width:18px;background:var(--text)}.reveal{position:fixed;inset:0;background:var(--bg);z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px}.reveal .grid{display:grid;grid-template-columns:repeat(10,1fr);gap:7px;width:min(320px,80vw)}.reveal .grid i{aspect-ratio:1;border-radius:6px;background:var(--surface-2);border:1px solid var(--line);opacity:0;transform:scale(.4);animation:sqin .45s var(--spring) forwards}.reveal .grid i.first{background:var(--text);border-color:var(--text)}@keyframes sqin{to{opacity:1;transform:scale(1)}}.reveal .txt{margin-top:36px;text-align:center;opacity:0;animation:fade .6s var(--ease) forwards}.reveal .txt .btn{margin-top:28px}.scrim{position:fixed;inset:0;background:#0009;z-index:40;animation:fadein .2s;display:flex;align-items:flex-end;justify-content:center}@keyframes fadein{0%{opacity:0}to{opacity:1}}.sheet{width:100%;max-width:560px;background:var(--bg-2);border:1px solid var(--line);border-radius:22px 22px 0 0;padding:20px 20px calc(24px + var(--safe-b));max-height:88dvh;overflow:auto;animation:up .3s var(--ease)}@keyframes up{0%{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}.sheet .handle{width:36px;height:4px;border-radius:2px;background:var(--line-2);margin:-6px auto 16px}.toast{position:fixed;left:50%;bottom:calc(100px + var(--safe-b));transform:translate(-50%);background:var(--text);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:14px;font-weight:600;z-index:60;animation:up .25s var(--ease);white-space:nowrap;max-width:90vw;overflow:hidden;text-overflow:ellipsis}.toast.err{background:var(--red);color:#fff}@media(min-width:640px){.display.xl{font-size:80px}.screen{padding-top:48px}.tabs{padding-bottom:16px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
