:root{--ink:#23211d;--mute:#6f6a62;--line:#e2ddd2;--fill:#eeeae1;--paper:#faf8f3;--card:#fffefb;--blue:#3a6fd6;--blue-t:#e6edfb;--green:#2f8f55;--green-t:#e3f2e8;--amber:#b97f0f;--amber-t:#fbf1da;--red:#c9483a;--red-t:#f9e4e0;--purple:#7457c4;--purple-t:#eee8fb;--grey:#8f8a82;--grey-t:#efede8;--radius:14px;--shadow:0 1px 2px #23211d0d, 0 4px 14px #23211d0d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:var(--paper);color:var(--ink);-webkit-text-size-adjust:100%;margin:0;font-family:Nunito,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.35}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--blue)}h1,h2,p{margin:0}.app{background:var(--paper);flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;display:flex}@media (width>=560px){.app{border-left:1.5px solid var(--line);border-right:1.5px solid var(--line)}}.screen{flex-direction:column;flex:1;gap:12px;padding:4px 16px 28px;display:flex}.header{align-items:center;gap:12px;padding:18px 16px 8px;display:flex}.h1{font-size:24px;font-weight:800;line-height:1.15}.h2{font-size:19px;font-weight:800}.grow{flex:1;min-width:0}.muted{color:var(--mute)}.small{font-size:14px}.block{display:block}.center{text-align:center}.row{align-items:center;gap:12px;display:flex}.col{flex-direction:column;gap:8px;display:flex}.gap4{gap:4px}.wrap{flex-wrap:wrap}.card{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.card.link-card{color:inherit;text-decoration:none;display:flex}.card.accent{border-color:var(--blue)}.card.warn{border-color:var(--red)}.section-label{letter-spacing:.06em;text-transform:uppercase;color:var(--mute);justify-content:space-between;align-items:center;gap:8px;padding:12px 2px 0;font-size:13px;font-weight:800;display:flex}.section-label .badge,.section-label .link{text-transform:none;letter-spacing:0}.btn{border:1.5px solid var(--ink);background:var(--card);cursor:pointer;min-height:48px;color:var(--ink);white-space:nowrap;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-weight:800;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.danger{background:var(--red);border-color:var(--red);color:#fff}.btn.ghost{border-color:var(--line)}.btn.small{min-height:40px;padding:0 12px;font-size:15px}.btn.block{width:100%}.icon-btn{border:1.5px solid var(--line);background:var(--card);cursor:pointer;width:44px;height:44px;color:var(--ink);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.icon-btn:disabled{opacity:.4;cursor:default}.link{color:var(--blue);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:8px 4px;font-weight:800;text-decoration:underline}.link.danger{color:var(--red)}.input{border:1.5px solid var(--line);background:var(--card);border-radius:10px;width:100%;min-height:46px;padding:10px 12px}textarea.input{resize:vertical;min-height:72px}.input:focus,.btn:focus-visible,.seg-opt:focus-visible,.icon-btn:focus-visible,.chip:focus-visible,.check:focus-visible{outline-offset:1px;outline:3px solid #3a6fd666}.field{flex-direction:column;gap:6px;display:flex}.label{letter-spacing:.05em;text-transform:uppercase;color:var(--mute);font-size:13px;font-weight:800}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1.5px solid var(--line);background:var(--card);cursor:pointer;white-space:nowrap;min-height:36px;color:var(--ink);border-radius:18px;align-items:center;gap:6px;padding:0 12px;font-size:15px;font-weight:700;display:inline-flex}.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}.chip.static{cursor:default}.chip.ok{border-color:var(--green);color:var(--green);background:var(--green-t)}.chip.info{border-color:var(--blue);color:var(--blue);background:var(--blue-t)}.seg{border:1.5px solid var(--ink);background:var(--card);border-radius:12px;flex-shrink:0;display:flex;overflow:hidden}.seg-opt{cursor:pointer;white-space:nowrap;background:0 0;border:none;flex:1;min-height:42px;padding:0 10px;font-size:15px;font-weight:800}.seg-opt+.seg-opt{border-left:1.5px solid var(--ink)}.seg-opt.on{background:var(--ink);color:#fff}.seg-opt.on.danger{background:var(--red)}.seg.disabled{opacity:.55}.badge{white-space:nowrap;border:1.5px solid;border-radius:14px;align-items:center;gap:5px;height:28px;padding:0 10px 0 7px;font-size:14px;font-weight:800;display:inline-flex}.badge-exceeding{color:var(--purple);background:var(--purple-t)}.badge-on_track{color:var(--green);background:var(--green-t)}.badge-at_risk{color:var(--amber);background:var(--amber-t)}.badge-underperforming{color:var(--red);background:var(--red-t)}.badge-neutral{color:var(--grey);background:var(--grey-t)}.avatar{color:var(--ink);border:2px solid var(--ink);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:800;display:inline-flex}.bar{background:var(--fill);border-radius:99px;width:100%;position:relative}.bar-fill{border-radius:99px;height:100%;transition:width .4s}.bar-marker{border-left:3px dashed var(--ink);position:absolute;top:-6px;bottom:-6px;transform:translate(-1.5px)}.nav{background:var(--card);border-top:1.5px solid var(--line);padding-bottom:env(safe-area-inset-bottom);z-index:5;display:flex;position:sticky;bottom:0}.nav-item{min-height:64px;color:var(--mute);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:12.5px;font-weight:800;text-decoration:none;display:flex;position:relative}.nav-item.active{color:var(--blue)}.nav-item.active:before{content:"";background:var(--blue);border-radius:0 0 3px 3px;height:3px;position:absolute;top:0;left:25%;right:25%}.nav-badge{background:var(--red);color:#fff;border-radius:10px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 5px;font-size:12px;display:flex;position:absolute;top:8px;left:56%}.task{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);align-items:center;gap:12px;min-height:64px;padding:10px 12px;display:flex}.task.col{flex-direction:column;align-items:stretch;gap:10px}.task.bonus{border:2px dashed var(--purple)}.task.adjusted{border-color:var(--amber)}.task.rejected{border-color:var(--red)}.task-title{align-items:center;gap:6px;font-size:17px;font-weight:800;display:flex}.task-sub{color:var(--mute);font-size:14px}.task-sub.bad{color:var(--red)}.task-open{min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;gap:12px;padding:0;display:flex}.task-open .grow{display:block}.clamp1{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pts{white-space:nowrap;align-items:center;gap:3px;font-weight:800;display:inline-flex}.check{border:2px solid var(--ink);background:var(--card);cursor:pointer;width:36px;height:36px;color:var(--ink);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}.check.on{background:var(--ink);color:#fff}.check.adjusted{border-color:var(--amber);background:var(--amber-t);color:var(--amber)}.check.rejected{border-color:var(--red);background:var(--red);color:#fff}.check:disabled{cursor:default}.check.pending{opacity:.5}.toggle{appearance:none;background:var(--fill);border:1.5px solid var(--line);cursor:pointer;border-radius:15px;flex-shrink:0;width:52px;height:30px;margin:0;transition:background .2s;position:relative}.toggle:after{content:"";background:#fff;border-radius:50%;width:21px;height:21px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.toggle:checked{background:var(--blue);border-color:var(--blue)}.toggle:checked:after{transform:translate(22px)}.set-row{border-bottom:1.5px solid var(--line);cursor:pointer;align-items:center;gap:12px;min-height:56px;padding:8px 0;display:flex}.stepper{border:1.5px solid var(--ink);border-radius:10px;flex-shrink:0;align-items:center;display:inline-flex;overflow:hidden}.stepper button{background:var(--card);cursor:pointer;border:none;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.stepper span{text-align:center;min-width:52px;font-weight:800}.backdrop{z-index:20;background:#23211d6b;justify-content:center;align-items:flex-end;animation:.15s fade;display:flex;position:fixed;inset:0}.sheet{background:var(--paper);width:100%;max-width:480px;max-height:92dvh;padding:8px 16px calc(22px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;flex-direction:column;gap:14px;animation:.2s up;display:flex;overflow-y:auto}.sheet-grab{background:var(--line);border-radius:3px;align-self:center;width:44px;height:5px}.sheet-head{align-items:center;gap:12px;display:flex}.sheet-title{flex:1;align-items:center;gap:8px;min-width:0;font-size:20px;font-weight:800;display:flex}@keyframes up{0%{opacity:.6;transform:translateY(24px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}}.notice{border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-weight:700;display:flex}.notice-error{background:var(--red-t);color:var(--red)}.notice-info{background:var(--blue-t);color:var(--blue)}.notice-warn{background:var(--amber-t);color:var(--ink)}.loading{text-align:center;color:var(--mute);padding:48px 16px}.empty{text-align:center;color:var(--mute);flex-direction:column;align-items:center;gap:12px;padding:28px 16px;display:flex}.grid7{text-align:center;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.grid3{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.dot{border-radius:50%;width:28px;height:28px;margin:0 auto}.dot.sm{width:22px;height:22px}.dot.future{border:2px dashed var(--line)}.dot.today{outline:2.5px solid var(--ink);outline-offset:2px}.dot.excused{background:repeating-linear-gradient(45deg, var(--fill) 0 4px, var(--card) 4px 8px);border:1.5px solid var(--line)}.big-num{font-size:44px;font-weight:800;line-height:1}.list-row{border:none;border-bottom:1.5px solid var(--line);text-align:left;width:100%;min-height:60px;color:inherit;background:0 0;align-items:center;gap:12px;padding:8px 0;text-decoration:none;display:flex}button.list-row,a.list-row{cursor:pointer}.icon-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.icon-choice{border:1.5px solid var(--line);background:var(--card);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;height:48px;display:flex}.icon-choice.on{border-color:var(--blue);background:var(--blue-t);color:var(--blue)}.weekday{border:1.5px solid var(--line);background:var(--card);cursor:pointer;border-radius:10px;height:44px;padding:0;font-weight:800}.weekday.on{background:var(--ink);color:#fff;border-color:var(--ink)}.share{background:var(--blue-t);border-radius:12px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.threshold-box{border:2px solid var(--ink);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:62px;height:40px;font-weight:800;display:flex}.banner-child{background:var(--amber-t);align-items:center;gap:10px;padding:8px 16px;font-size:14px;font-weight:800;display:flex}.celebrate{z-index:30;text-align:center;background:#faf8f3f7;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;animation:.2s fade;display:flex;position:fixed;inset:0;overflow:hidden}.celebrate .big{font-size:34px;font-weight:800}.confetti{border-radius:2px;width:10px;height:14px;animation:1.8s ease-in forwards fall;position:absolute;top:-20px}@keyframes fall{to{opacity:0;transform:translateY(80vh)rotate(540deg)}}.ring-anim{transition:stroke-dasharray .5s}.color-swatch{border:2px solid var(--line);cursor:pointer;border-radius:50%;width:40px;height:40px;padding:0}.color-swatch.on{border-color:var(--ink);outline:2px solid var(--ink);outline-offset:2px}.code{letter-spacing:.14em;text-align:center;font-size:36px;font-weight:800}.code-input{text-align:center;letter-spacing:.3em;text-transform:uppercase;font-size:28px;font-weight:800}.welcome{flex-direction:column;flex:1;justify-content:center;gap:14px;padding:32px 24px;display:flex}.logo{width:76px;height:76px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
