:root{--bg:#f3f4ef;--surface:#fff;--surface-2:#e9ebe4;--line:#d9dcd2;--ink:#1d2528;--ink-2:#566064;--ink-3:#8a9396;--ok:#4f7a5a;--warn:#b4691c;--danger:#b23a3a;--a:#2b4c8c;--b:#e08a1a;--radius-lg:20px;--radius:14px;--radius-sm:9px;--display:"Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;--body:"Atkinson Hyperlegible", ui-sans-serif, system-ui, -apple-system, sans-serif;--tabbar:64px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#14191b;--surface:#1d2427;--surface-2:#262e31;--line:#333c40;--ink:#eef0ea;--ink-2:#aeb6b8;--ink-3:#7e878a;--ok:#7fb08a;--warn:#e3a35b;--danger:#e07a7a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--ink);margin:0}body{font-family:var(--body);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;font-size:16px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid color-mix(in srgb, var(--a) 60%, transparent);outline-offset:2px;border-radius:6px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.app{min-height:100dvh;padding:calc(env(safe-area-inset-top) + 12px) 16px calc(var(--tabbar) + env(safe-area-inset-bottom) + 24px);max-width:640px;margin:0 auto}h1,h2,h3{font-family:var(--display);letter-spacing:-.01em;margin:0;font-weight:700}h1{font-size:30px;line-height:1.1}h2{font-size:20px;line-height:1.2}h3{font-size:16px}p{margin:0}.muted{color:var(--ink-2)}.small{font-size:14px}.tiny{color:var(--ink-3);font-size:12.5px}.stack{flex-direction:column;gap:12px;display:flex}.row{align-items:center;gap:10px;display:flex}.spread{justify-content:space-between;align-items:center;gap:10px;display:flex}.section{margin-top:26px}.section>h2{margin-bottom:10px}.top{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px;display:flex}.top .date{color:var(--ink-2);margin-top:4px;font-size:15px}.status-pill{background:var(--surface-2);color:var(--ink-2);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:12.5px;display:inline-flex}.status-pill.off{background:color-mix(in srgb, var(--warn) 16%, var(--surface));color:var(--warn)}.status-pill .dot{background:var(--ok);border-radius:50%;width:7px;height:7px}.status-pill.off .dot{background:var(--warn)}.banner{border-radius:var(--radius);background:color-mix(in srgb, var(--warn) 12%, var(--surface));color:var(--ink);margin-bottom:14px;padding:12px 14px;font-size:14px}.panel{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--line);padding:16px}.panel.flat{background:var(--surface-2);border:none}.ribbon{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 14px 10px;position:relative}.ribbon-track{height:92px;margin-top:10px;position:relative}.ribbon-lane{background:var(--surface-2);border-radius:10px;height:34px;position:absolute;left:0;right:0}.ribbon-lane.l0{top:0}.ribbon-lane.l1{top:42px}.ribbon-busy{background:repeating-linear-gradient(135deg, transparent 0 5px, color-mix(in srgb, var(--ink-3) 22%, transparent) 5px 7px);border-radius:8px;height:100%;position:absolute;top:0}.ribbon-task{border-radius:7px;min-width:6px;position:absolute;top:3px;bottom:3px}.ribbon-task.done{opacity:.35}.ribbon-now{background:var(--ink);border-radius:2px;width:2px;position:absolute;top:-4px;bottom:6px}.ribbon-scale{height:16px;color:var(--ink-3);font-size:11.5px;position:relative}.ribbon-scale span{position:absolute;transform:translate(-50%)}.ribbon-legend{color:var(--ink-2);gap:14px;font-size:13px;display:flex}.ribbon-legend i{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.task{background:var(--surface);border-radius:var(--radius);border:1px solid var(--line);align-items:center;gap:12px;padding:12px;display:flex;position:relative}.task:before{content:"";background:var(--who,var(--a));border-radius:0 4px 4px 0;width:4px;position:absolute;top:10px;bottom:10px;left:0}.task.joint:before{background:linear-gradient(var(--a) 0 50%, var(--b) 50% 100%)}.task .ico{background:color-mix(in srgb, var(--who,var(--a)) 13%, var(--surface));width:40px;height:40px;color:var(--who,var(--a));border-radius:12px;flex:none;place-items:center;display:grid}.task .body{flex:1;min-width:0}.task .name{font-weight:700;line-height:1.25}.task .meta{color:var(--ink-2);margin-top:2px;font-size:13.5px}.task .why{color:var(--ink-3);margin-top:4px;font-size:13px}.task.done{opacity:.55}.task.done .name{text-decoration:line-through}.check{border:2px solid var(--line);background:var(--surface);width:44px;height:44px;color:var(--ok);border-radius:50%;flex:none;place-items:center;display:grid}.check:active{transform:scale(.94)}.check.on{background:var(--ok);border-color:var(--ok);color:#fff}.more-btn{width:36px;height:44px;color:var(--ink-3);background:0 0;border:none;flex:none;place-items:center;display:grid}.gauge{background:var(--surface-2);border-radius:99px;height:8px;position:relative;overflow:hidden}.gauge>div{background:var(--who,var(--a));border-radius:99px;height:100%}.gauge.over>div{background:var(--warn)}.gauge-label{color:var(--ink-2);justify-content:space-between;margin-bottom:5px;font-size:13px;display:flex}.days{scrollbar-width:none;gap:8px;margin:0 -16px 14px;padding-bottom:4px;padding-left:16px;padding-right:16px;display:flex;overflow-x:auto}.days::-webkit-scrollbar{display:none}.day-chip{border:1px solid var(--line);background:var(--surface);text-align:center;border-radius:14px;flex:none;min-width:54px;padding:8px 6px}.day-chip b{font-family:var(--display);font-size:19px;display:block}.day-chip span{color:var(--ink-2);font-size:12px}.day-chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.day-chip.on span{color:inherit;opacity:.8}.cols{grid-template-columns:1fr 1fr;align-items:start;gap:10px;display:grid}.col-head{border-radius:var(--radius);background:color-mix(in srgb, var(--who) 12%, var(--surface));margin-bottom:8px;padding:10px 12px}.col-head h3{color:var(--who)}.mini{background:var(--surface);border:1px solid var(--line);text-align:left;border-radius:12px;width:100%;margin-bottom:8px;padding:10px}.mini .t{align-items:flex-start;gap:6px;font-size:14.5px;font-weight:700;line-height:1.25;display:flex}.mini .t svg{color:var(--who);flex:none;margin-top:1px}.mini .m{color:var(--ink-2);margin-top:3px;font-size:12.5px}.mini.done{opacity:.5}.mini.done .t{text-decoration:line-through}.mini.joint{border-style:dashed}.empty-col{color:var(--ink-3);padding:12px 4px;font-size:13.5px}.btn{border:1px solid var(--line);background:var(--surface);border-radius:13px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:0 18px;font-weight:700;display:inline-flex}.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn.ghost{color:var(--ink-2);background:0 0;border-color:#0000}.btn.danger{color:var(--danger)}.btn.block{width:100%}.btn:disabled{opacity:.5}.btn.sm{border-radius:10px;min-height:36px;padding:0 12px;font-size:14px}label.field{color:var(--ink-2);flex-direction:column;gap:6px;font-size:14px;display:flex}.input,select.input,textarea.input{border:1px solid var(--line);background:var(--surface);width:100%;min-height:46px;color:var(--ink);border-radius:12px;padding:10px 12px;font-size:16px}.grid2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.seg{background:var(--surface-2);border-radius:12px;gap:3px;padding:3px;display:flex}.seg button{min-height:38px;color:var(--ink-2);background:0 0;border:none;border-radius:9px;flex:1;font-size:14px}.seg button.on{background:var(--surface);color:var(--ink);font-weight:700;box-shadow:0 1px 2px #00000014}.wk{gap:6px;display:flex}.wk button{border:1px solid var(--line);background:var(--surface);border-radius:10px;flex:1;min-height:40px;font-size:14px}.wk button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.switch{justify-content:space-between;align-items:center;gap:12px;min-height:44px;display:flex}.switch input{width:22px;height:22px;accent-color:var(--ink)}.list{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--line);overflow:hidden}.list>*+*{border-top:1px solid var(--line)}.li{text-align:left;background:0 0;border-bottom:0;border-left:0;border-right:0;align-items:center;gap:12px;width:100%;min-height:54px;padding:12px 14px;display:flex}.list>.li:first-child{border-top:0}.li .grow{flex:1;min-width:0}.li .chev{color:var(--ink-3)}.shop-add{top:calc(env(safe-area-inset-top) + 6px);z-index:5;gap:8px;display:flex;position:sticky}.shop-item{align-items:center;gap:12px;min-height:52px;padding:10px 14px;display:flex}.shop-item .box{border:2px solid var(--line);background:var(--surface);border-radius:8px;flex:none;place-items:center;width:26px;height:26px;display:grid}.shop-item.on .box{background:var(--ok);border-color:var(--ok);color:#fff}.shop-item.on .label{color:var(--ink-3);text-decoration:line-through}.agenda-day{margin-bottom:18px}.agenda-day h3{color:var(--ink-2);font-size:15px;font-family:var(--body);margin-bottom:8px}.ev{background:var(--surface);border:1px solid var(--line);text-align:left;border-radius:12px;align-items:center;gap:10px;width:100%;margin-bottom:6px;padding:9px 12px;display:flex}.ev .bar{background:var(--who);border-radius:4px;align-self:stretch;width:4px}.ev .time{color:var(--ink-2);flex:none;width:92px;font-size:13px}.ev.task-ev{background:0 0;border-style:dashed}.share{background:var(--surface-2);border-radius:99px;height:14px;display:flex;overflow:hidden}.share>div{height:100%}.badge{border-radius:99px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;font-weight:700;display:inline-flex}.badge.ok{background:color-mix(in srgb, var(--ok) 15%, var(--surface));color:var(--ok)}.badge.mid{background:color-mix(in srgb, var(--warn) 15%, var(--surface));color:var(--warn)}.badge.bad{background:color-mix(in srgb, var(--danger) 13%, var(--surface));color:var(--danger)}.tabbar{z-index:20;background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);position:fixed;bottom:0;left:0;right:0}.tabbar nav{max-width:640px;height:var(--tabbar);margin:0 auto;display:flex}.tabbar button{color:var(--ink-3);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:11.5px;display:flex}.tabbar button.on{color:var(--ink);font-weight:700}.scrim{z-index:40;background:#0a0e1061;justify-content:center;align-items:flex-end;animation:.15s ease-out fade;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);width:100%;max-width:640px;max-height:90dvh;padding:10px 16px calc(env(safe-area-inset-bottom) + 18px);border-radius:22px 22px 0 0;animation:.2s ease-out up;overflow-y:auto}.sheet .grab{background:var(--line);border-radius:9px;width:40px;height:5px;margin:0 auto 12px}.sheet h2{margin-bottom:4px}.action{text-align:left;background:0 0;border:none;border-radius:12px;align-items:center;gap:14px;width:100%;min-height:54px;padding:0 6px;font-size:16px;display:flex}.action:active{background:var(--surface-2)}.action svg{color:var(--ink-2);flex:none}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--line);background:var(--surface);border-radius:99px;min-height:40px;padding:0 14px;font-size:14.5px}.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}@keyframes fade{0%{opacity:0}}@keyframes up{0%{opacity:.6;transform:translateY(30px)}}.toast{left:16px;right:16px;bottom:calc(var(--tabbar) + env(safe-area-inset-bottom) + 12px);z-index:50;background:var(--ink);max-width:560px;color:var(--bg);border-radius:14px;margin:0 auto;padding:12px 16px;font-size:14.5px;animation:.2s ease-out up;position:fixed;box-shadow:0 8px 24px #0000002e}.toast.warn{background:var(--warn);color:#fff}.toast.error{background:var(--danger);color:#fff}.auth{max-width:420px;margin:0 auto;padding-top:8vh}.auth .mark{border-radius:18px;width:64px;height:64px;margin-bottom:18px}@media (width>=560px){.cols{gap:16px}}@media (width<=360px){.cols{grid-template-columns:1fr}}
