:root{--bg:#f4f3ef;--surface:#fbfaf7;--ink:#1b1b19;--muted:#6c6b66;--line:#00000014;--accent:#2f5d45;--danger:#a2372b;--l0:#e4e2db;--l1:#c3d5c7;--l2:#8db399;--l3:#4f8566;--l4:#2f5d45;--bar:#f4f3efd1;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-drawer:cubic-bezier(.32, .72, 0, 1);--cell:13px;--gap:3px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#121211;--surface:#1b1b19;--ink:#ecebe6;--muted:#97968f;--line:#ffffff14;--accent:#8cc5a0;--danger:#e9786b;--l0:#242422;--l1:#24402f;--l2:#2f6146;--l3:#4b8a63;--l4:#8cc5a0;--bar:#121211d1}}*{box-sizing:border-box;margin:0}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;overscroll-behavior:none;background:var(--bg)}body{color:var(--ink);background:var(--bg);font:16px/1.45 system-ui,-apple-system,sans-serif}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}button,[role=button]{touch-action:manipulation;-webkit-user-select:none;user-select:none}input{font:inherit;color:inherit;font-size:16px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.small{padding:4px 4px 24px;font-size:13px}.row-between{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.app{flex-direction:column;height:100dvh;display:flex}.screen{overscroll-behavior:contain;padding:calc(env(safe-area-inset-top,0px) + 20px) 20px 24px;flex-direction:column;flex:1;gap:24px;width:100%;max-width:560px;margin:0 auto;display:flex;overflow-y:auto}.head h1{letter-spacing:-.025em;font-variant-numeric:tabular-nums;font-size:34px;font-weight:650;line-height:1.08}.head .muted{margin-top:4px}.eyebrow{color:var(--muted);letter-spacing:.01em;margin-bottom:6px;font-size:13px}h2{letter-spacing:-.01em;font-size:17px;font-weight:600}.heat{background:var(--surface);border:1px solid var(--line);border-radius:18px;grid-template-rows:auto auto;grid-template-columns:auto 1fr;gap:10px 8px;padding:14px 0 12px 14px;display:grid}.heat-days{grid-template-rows:repeat(7, var(--cell));row-gap:var(--gap);font-size:10px;line-height:var(--cell);color:var(--muted);margin-top:21px;display:grid}.heat-scroll{overscroll-behavior-x:contain;scrollbar-width:none;padding-right:14px;overflow-x:auto}.heat-scroll::-webkit-scrollbar{display:none}.heat-months,.heat-grid{grid-auto-flow:column;grid-auto-columns:var(--cell);column-gap:var(--gap);width:max-content;display:grid}.heat-months{height:15px;color:var(--muted);margin-bottom:6px;font-size:10px}.heat-months span{white-space:nowrap;overflow:visible}.heat-grid{grid-template-rows:repeat(7, var(--cell));row-gap:var(--gap)}.cell{width:var(--cell);height:var(--cell);background:var(--l0);transition:background-color .2s ease, transform .12s var(--ease-out);border-radius:3.5px}.cell[data-level="1"]{background:var(--l1)}.cell[data-level="2"]{background:var(--l2)}.cell[data-level="3"]{background:var(--l3)}.cell[data-level="4"]{background:var(--l4)}.cell[data-future]{background:0 0}button.cell:active{transform:scale(.85)}.cell[aria-pressed=true]{box-shadow:0 0 0 1.5px var(--bg), 0 0 0 3px var(--ink)}.heat-legend{justify-content:flex-end;align-items:center;gap:var(--gap);color:var(--muted);grid-column:2;padding-right:14px;font-size:10px;display:flex}.heat-legend .cell{border-radius:2.5px;width:10px;height:10px}.day{flex-direction:column;gap:8px;display:flex}.empty{padding:4px 0}.list{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:0;list-style:none;overflow:hidden}.list li+li{border-top:1px solid var(--line)}.item{text-align:left;grid-template-columns:auto 1fr auto;align-items:baseline;gap:10px;width:100%;padding:14px 16px;transition:background-color .12s;display:grid}.item:active{background:var(--line)}.item .muted{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.item-type{font-weight:550}.card{background:var(--surface);border:1px solid var(--line);border-radius:18px;flex-direction:column;gap:10px;padding:18px;display:flex}.card .btn{margin-top:6px}.btn{height:52px;transition:transform .12s var(--ease-out), opacity .12s ease;border-radius:14px;padding:0 20px;font-weight:600}.btn:active{transform:scale(.97)}.btn-primary{background:var(--ink);color:var(--bg)}.btn-quiet{background:var(--line)}.btn-stop{background:var(--accent);color:var(--bg);border-radius:32px;min-width:104px;height:64px;font-size:18px}.btn-danger{color:var(--danger);background:0 0}.full{width:100%}.link{color:var(--muted);padding:6px 0;font-size:15px}.chips{scrollbar-width:none;gap:8px;margin:0 -20px;padding:0 20px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chips.wrap{flex-wrap:wrap;margin:0;padding:0}.chip{border:1px solid var(--line);background:var(--surface);height:36px;transition:background-color .15s ease, color .15s ease, transform .12s var(--ease-out);border-radius:18px;flex:none;padding:0 14px;font-size:15px}.chip:active{transform:scale(.96)}.chip[aria-checked=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.dock{border-top:1px solid var(--line);background:var(--bg);flex-direction:column;gap:12px;padding:14px 20px;display:flex}.dock>*{width:100%;max-width:520px;margin:0 auto}.dock-actions{grid-template-columns:1fr auto;gap:10px;display:grid}.dock-running{flex-direction:row;justify-content:space-between;align-items:center;max-width:none}.dock-running>div{max-width:none;margin:0}.dock-running>.btn{width:auto;margin:0}.clock{letter-spacing:-.03em;font-size:48px;font-weight:600;line-height:1}.tabs{padding:6px 12px calc(env(safe-area-inset-bottom,0px) + 6px);background:var(--bar);-webkit-backdrop-filter:blur(20px)saturate(180%);border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);display:grid}.tab{color:var(--muted);flex-direction:column;align-items:center;gap:2px;padding:6px 0;font-size:11px;font-weight:550;display:flex}.tab svg{fill:currentColor;stroke:currentColor;width:22px;height:22px}.tab[aria-current=page]{color:var(--ink)}.sheet{width:100%;max-width:560px;max-height:92dvh;padding:20px 20px calc(env(safe-area-inset-bottom,0px) + 20px);background:var(--surface);color:var(--ink);overscroll-behavior:contain;transition:transform .32s var(--ease-drawer), display .32s allow-discrete, overlay .32s allow-discrete;border:0;border-radius:22px 22px 0 0;margin:0 auto;position:fixed;inset:auto 0 0;transform:translateY(0)}.sheet:not([open]){transition-duration:.22s;transform:translateY(100%)}@starting-style{.sheet[open]{transform:translateY(100%)}}.sheet::backdrop{transition:opacity .32s ease, display .32s allow-discrete, overlay .32s allow-discrete;background:#00000059}.sheet:not([open])::backdrop{opacity:0}@starting-style{.sheet[open]::backdrop{opacity:0}}.sheet form{flex-direction:column;gap:16px;display:flex}.fields{grid-template-columns:1fr 1fr;gap:12px;display:grid}label{color:var(--muted);flex-direction:column;gap:6px;font-size:13px;display:flex}label input{border:1px solid var(--line);background:var(--bg);height:48px;color:var(--ink);appearance:none;border-radius:12px;width:100%;min-width:0;padding:0 12px}.error{color:var(--danger);font-size:15px}.toast-slot{left:0;right:0;top:calc(env(safe-area-inset-top,0px) + 12px);pointer-events:none;z-index:10;justify-content:center;display:flex;position:fixed}.toast{background:var(--ink);color:var(--bg);transition:transform .26s var(--ease-out), opacity .26s ease;border-radius:20px;padding:10px 16px;font-size:15px;font-weight:550}@starting-style{.toast{opacity:0;transform:translateY(-12px)}}@media (prefers-reduced-motion:reduce){.sheet,.sheet:not([open]){transition:opacity .2s ease, display .2s allow-discrete, overlay .2s allow-discrete;transform:none}.sheet:not([open]){opacity:0}@starting-style{.sheet[open]{opacity:0;transform:none}}@starting-style{.toast{transform:none}}}@media (prefers-reduced-transparency:reduce){.tabs{background:var(--bg);-webkit-backdrop-filter:none}}.screen-map{gap:0;max-width:none;padding:0;position:relative}.map{background:var(--l0);position:relative;overflow:hidden}.map>.map-canvas.maplibregl-map{position:absolute;inset:0}.map-full{flex:1}.map-card{border:1px solid var(--line);border-radius:16px;height:220px}.map-status:empty{display:none}.map-status{top:calc(env(safe-area-inset-top,0px) + 12px);background:var(--bar);-webkit-backdrop-filter:blur(20px)saturate(180%);white-space:nowrap;border-radius:18px;padding:8px 14px;font-size:14px;font-weight:550;position:absolute;left:50%;transform:translate(-50%)}.map-recenter{background:var(--surface);border:1px solid var(--line);transition:transform .12s var(--ease-out);border-radius:20px;padding:10px 14px;font-size:14px;font-weight:600;position:absolute;bottom:40px;right:12px;box-shadow:0 2px 10px #0000001f}.map-recenter:active{transform:scale(.96)}.map .maplibregl-ctrl-attrib{background:var(--bar);color:var(--muted);font-size:10px}.map .maplibregl-ctrl-attrib a{color:inherit}@media (prefers-color-scheme:dark){.map .maplibregl-ctrl-attrib-button{filter:invert()}}.dock-stats{margin-top:4px;font-size:17px;font-weight:600}.switch-row{width:100%;min-height:36px;color:var(--muted);justify-content:space-between;align-items:center;font-size:15px;display:flex}.switch{background:var(--l0);border-radius:13px;width:44px;height:26px;transition:background-color .2s;position:relative}.switch:after{content:"";width:20px;height:20px;transition:transform .22s var(--ease-out);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.switch-row[aria-checked=true] .switch{background:var(--accent)}.switch-row[aria-checked=true] .switch:after{transform:translate(18px)}.sheet-body{flex-direction:column;gap:12px;display:flex}.sheet-body h2{letter-spacing:-.02em;font-size:22px}.sheet-body .btn:first-of-type{margin-top:8px}.sheet-icon{background:var(--l1);border-radius:14px;place-items:center;width:48px;height:48px;display:grid}.sheet-icon svg{fill:none;width:26px;height:26px;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round}.steps{background:var(--bg);border-radius:12px;padding:12px 14px;font-size:15px}.small-note{font-size:14px}.sheet:focus{outline:none}
