:root{--bg:#f6f7f5;--surface:#fff;--surface-2:#eef1ee;--text:#1b1f1c;--muted:#5f6b63;--border:#dde2dd;--accent:#1d5c3f;--accent-hover:#174c34;--accent-fg:#fff;--accent-soft:#e2eee7;--warn:#7a4f00;--warn-soft:#fbefd3;--danger:#b3261e;--chart-line:#1f8a56;--chart-wash:#1f8a561a;--radius:10px;--side-width:232px;--tabs-height:60px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#121513;--surface:#1a1e1b;--surface-2:#232824;--text:#e6ebe7;--muted:#97a39b;--border:#2e3530;--accent:#5fbf8f;--accent-hover:#74cc9f;--accent-fg:#0d1f16;--accent-soft:#1f3329;--warn:#f0c46b;--warn-soft:#3a2f16;--danger:#ff8a80;--chart-line:#35a570;--chart-wash:#35a5701f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1,h2,h3{margin:0;line-height:1.25}h1{font-size:1.6rem}h2{margin-bottom:10px;font-size:1.05rem}h3{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:8px;font-size:.8rem}a{color:var(--accent)}code{background:var(--surface-2);border-radius:4px;padding:1px 5px;font:.9em ui-monospace,Cascadia Code,Consolas,monospace}input,select,textarea,button{font:inherit;color:inherit}input,select,textarea{background:var(--surface);border:1px solid var(--border);border-radius:8px;min-width:0;padding:8px 10px}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:1px}textarea{resize:vertical;width:100%}button{background:var(--surface-2);border:1px solid var(--border);cursor:pointer;white-space:nowrap;border-radius:8px;padding:7px 12px}button:hover:not(:disabled){border-color:var(--muted)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg);font-weight:600}button.primary:hover:not(:disabled){background:var(--accent-hover)}button.ghost{color:var(--muted);background:0 0;border-color:#0000}button.ghost:hover:not(:disabled){color:var(--text);border-color:var(--border)}button.small,.small{font-size:.85rem}button.small{padding:3px 8px}.muted{color:var(--muted)}.error{color:var(--danger);flex-basis:100%;margin:6px 0 0}.pad{padding:24px 16px}.row{flex-wrap:wrap;gap:8px;display:flex}.shell{min-height:100vh}.side{z-index:10;padding:10px 16px;padding-top:max(10px, env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:12px;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:8px;margin-right:auto;font-weight:700;text-decoration:none;display:flex}.site-switcher{max-width:50vw}.logout{display:none}.nav{height:calc(var(--tabs-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border);display:flex;position:fixed;bottom:0;left:0;right:0}.nav a{color:var(--muted);flex:1;justify-content:center;align-items:center;gap:6px;font-weight:500;text-decoration:none;display:flex}.nav a.active{color:var(--accent)}.count{background:var(--accent);min-width:20px;color:var(--accent-fg);text-align:center;border-radius:10px;padding:0 6px;font-size:.75rem;font-weight:700;line-height:20px;display:inline-block}.main{padding-bottom:calc(var(--tabs-height) + env(safe-area-inset-bottom) + 24px)}@media (width>=900px){.shell{grid-template-columns:var(--side-width) 1fr;display:grid}.side{border-bottom:0;border-right:1px solid var(--border);flex-direction:column;align-items:stretch;gap:16px;height:100vh;padding:20px 14px}.brand{margin-right:0}.site-switcher{max-width:none}.nav{background:0 0;border-top:0;flex-direction:column;gap:2px;height:auto;padding:0;position:static}.nav a{border-radius:8px;flex:none;justify-content:space-between;padding:8px 10px}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a.active{background:var(--accent-soft)}.logout{align-self:flex-start;margin-top:auto;display:block}.main{padding-bottom:48px}}.page{max-width:1080px;padding:20px 16px}@media (width>=900px){.page{padding:32px 40px}}.page section{margin-top:32px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 14px;display:flex}.page-head a{text-decoration:none}.back{margin-bottom:10px;font-size:.9rem;text-decoration:none;display:inline-block}.inline-add{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.inline-add input{flex:1}.board{gap:18px;display:grid}@media (width>=700px){.board{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));align-items:start}}.column{flex-direction:column;gap:8px;display:flex}@media (width<=699px){.column:not(:has(.card)){display:none}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.project-card{color:var(--text);flex-direction:column;gap:8px;text-decoration:none;display:flex}.project-card:hover{border-color:var(--accent)}.card-title{justify-content:space-between;align-items:flex-start;gap:8px;font-weight:600;display:flex}.badge{border-radius:10px;flex:none;padding:1px 7px;font-size:.72rem;font-weight:600}.badge-stalled{background:var(--warn-soft);color:var(--warn)}.progress{align-items:center;gap:10px;display:flex}.progress-track{background:var(--surface-2);border-radius:3px;flex:1;height:6px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:3px;height:100%}.progress-label{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.82rem}.progress-lg .progress-track{border-radius:6px;height:12px}.progress-lg .progress-label{color:var(--text);font-size:1rem;font-weight:600}details.fold{margin-top:14px}details.fold summary{cursor:pointer;color:var(--muted);font-weight:500}.fold-body{gap:8px;margin-top:10px;display:grid}@media (width>=700px){.fold-body{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}}.tasks,.log,.links,.ideas,.plain{margin:0;padding:0;list-style:none}.task label{border-bottom:1px solid var(--border);cursor:pointer;align-items:flex-start;gap:10px;padding:8px 0;display:flex}.task input{width:16px;height:16px;accent-color:var(--accent);margin-top:4px}.task.done span{color:var(--muted);text-decoration:line-through}.log li{border-bottom:1px solid var(--border);gap:12px;padding:7px 0;display:flex}.log time{width:64px;color:var(--muted);flex:none;padding-top:1px;font-size:.85rem}.links li{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:7px 0;display:flex}.links+.inline-add{margin-top:12px}.tag{text-transform:uppercase;letter-spacing:.03em;color:var(--muted);flex:none;width:52px;font-size:.72rem;font-weight:600}.link-target{overflow-wrap:anywhere;flex:1;min-width:0}.plain li{padding:6px 0}.editable{flex-wrap:wrap;align-items:baseline;gap:4px 10px;display:flex}.editable+.project-meta,.project-meta+.editable,.project-meta+.edit-form{margin-top:14px}.edit-form{gap:8px;margin-bottom:10px;display:grid}.edit-form input{font-size:1.3rem;font-weight:700}.description{white-space:pre-wrap;flex-basis:100%;max-width:68ch;margin:0}.project-meta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.chart{margin-top:16px}.chart-plot{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 0 0;position:relative}.chart-plot svg{touch-action:pan-y;display:block}.chart-plot svg:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:var(--radius)}.chart-grid{stroke:var(--border);stroke-width:1px}.chart-tick{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.chart-area{fill:var(--chart-wash)}.chart-line{fill:none;stroke:var(--chart-line);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart-dot{fill:var(--chart-line);stroke:var(--surface);stroke-width:2px}.chart-end{fill:var(--text);font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}.chart-crosshair{stroke:var(--muted);stroke-width:1px}.chart-tooltip{background:var(--surface);border:1px solid var(--border);white-space:nowrap;pointer-events:none;border-radius:8px;gap:2px;padding:6px 10px;font-size:.85rem;display:grid;position:absolute;transform:translate(-50%,-100%);box-shadow:0 4px 14px #0000001f}.readings{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;max-width:420px;margin-top:8px}.readings th,.readings td{text-align:left;border-bottom:1px solid var(--border);padding:5px 8px}.readings th{color:var(--muted);font-size:.85rem;font-weight:500}.breakdown{gap:8px;margin:12px 0 0;padding:0;list-style:none;display:grid}.breakdown li{grid-template-columns:minmax(0,1fr) minmax(140px,1.2fr);align-items:center;gap:12px;font-size:.9rem;display:grid}@media (width<=520px){.breakdown li{grid-template-columns:1fr;gap:2px}}.sync-row{justify-content:space-between;align-items:center;gap:10px;margin-top:12px;display:flex}.segmented{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.segmented button{background:var(--surface);border:0;border-radius:0}.segmented button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.page-head+.inline-add,.page-head+.flash,.page-head+.ideas{margin-top:18px}.flash{border-radius:var(--radius);background:var(--accent-soft);margin-bottom:14px;padding:10px 14px}.ideas{gap:10px;display:grid}.idea-text{white-space:pre-wrap;margin:0;font-size:1.02rem}.idea .muted{margin:4px 0 10px}.actions{flex-wrap:wrap;gap:8px;display:flex}.actions select{flex:180px}.empty{text-align:center;padding:32px 0}.login{place-items:center;min-height:100vh;padding:16px;display:grid}.login-form{justify-items:center;gap:12px;width:min(340px,100%);display:grid}.login-form input,.login-form button{width:100%}.login-form h1{margin-bottom:8px}
