:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f6f7fb;--surface:#fff;--surface-input:#fff;--hover:#f1f2f8;--text:#1c2024;--muted:#5f6675;--border:#e6e8ef;--control-border:#8a92a4;--primary:#5b5bd6;--primary-text:#4747c2;--primary-soft:#ededfc;--btn-bg:#5b5bd6;--btn-bg-hover:#4a4ac4;--danger-text:#c42b31;--danger-bg:#c92a30;--track:#f0f1f6;--bar:#a9a9ee;--cell-bg:#fafbfd;--streak-text:#9a4507;--streak-bg:#fff3e6;--done-pct:7%;--shadow:0 1px 2px #1018280a, 0 4px 16px #1018280a;--radius:16px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e1016;--surface:#171a22;--surface-input:#11141b;--hover:#222633;--text:#e9ebf1;--muted:#a3aabb;--border:#2a2f3d;--control-border:#6c7489;--primary:#9393f4;--primary-text:#b3b3fa;--primary-soft:#272a4a;--btn-bg:#5b5bd6;--btn-bg-hover:#4a4ac4;--danger-text:#ff8d91;--danger-bg:#c92a30;--track:#232735;--bar:#4f52a8;--cell-bg:#11141b;--streak-text:#fbbf6a;--streak-bg:#3a2a14;--done-pct:16%;--shadow:0 1px 2px #0006, 0 4px 16px #00000047}*{box-sizing:border-box}body{min-height:100vh;margin:0}h1,h2{letter-spacing:-.02em;margin:0}h1{font-size:1.6rem}h2{margin-bottom:16px;font-size:1.25rem}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--primary-text);outline-offset:2px}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;position:sticky;top:0}.topbar-inner{align-items:center;gap:12px;max-width:1100px;margin:0 auto;padding:14px 24px;display:flex}.brand{align-items:center;gap:10px;margin-right:auto;font-size:1.1rem;font-weight:700;display:flex}.brand-mark{background:var(--btn-bg);color:#fff;border-radius:9px;place-items:center;width:30px;height:30px;font-size:.95rem;display:grid}.nav{gap:4px;display:flex}.nav a{color:var(--muted);border-radius:999px;padding:8px 14px;font-size:.92rem;font-weight:500;text-decoration:none}.nav a:hover{background:var(--hover);color:var(--text)}.nav a.active{background:var(--primary-soft);color:var(--primary-text)}.theme-toggle{border:1px solid var(--control-border);background:var(--track);border-radius:999px;flex-shrink:0;width:56px;height:32px;padding:0;transition:background .2s;position:relative}.theme-toggle:hover{background:var(--hover)}.theme-toggle .thumb{background:var(--btn-bg);color:#fff;border-radius:50%;place-items:center;width:24px;height:24px;transition:transform .2s;display:grid;position:absolute;top:3px;left:3px}.theme-toggle[aria-checked=true] .thumb{transform:translate(24px)}.theme-toggle svg{width:14px;height:14px}.container{max-width:1100px;margin:0 auto;padding:28px 24px 60px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--primary-text);margin:0 0 4px;font-size:.72rem;font-weight:600}.muted{color:var(--muted);margin:4px 0 0;font-size:.9rem}.btn{border:none;border-radius:10px;padding:10px 18px;font-size:.92rem;font-weight:600;text-decoration:none;transition:background .15s,opacity .15s;display:inline-block}.btn.primary{background:var(--btn-bg);color:#fff}.btn.primary:hover{background:var(--btn-bg-hover)}.btn.primary:disabled{opacity:.55;cursor:not-allowed}.btn.ghost{color:var(--text);border:1px solid var(--control-border);background:0 0}.btn.ghost:hover{background:var(--hover)}.btn.danger{background:var(--danger-bg);color:#fff}.btn.sm{padding:7px 12px;font-size:.84rem}.danger-text{color:var(--danger-text)!important}.dashboard{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:start;gap:24px;display:grid}.today-head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.ring-track{fill:none;stroke:var(--primary-soft);stroke-width:8px}.ring-fill{fill:none;stroke:var(--primary);stroke-width:8px;stroke-linecap:round;transition:stroke-dashoffset .4s}.ring-text{fill:var(--text);font-size:17px;font-weight:700}.today-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.today-item{background:var(--surface);border:1px solid var(--border);text-align:left;border-radius:12px;align-items:center;gap:12px;width:100%;padding:14px 16px;transition:border-color .15s,background .15s,transform .1s;display:flex}.today-item:hover{border-color:var(--accent)}.today-item:active{transform:scale(.99)}.today-item .check{border:2px solid var(--control-border);color:#fff;border-radius:7px;flex-shrink:0;place-items:center;width:24px;height:24px;font-size:.85rem;font-weight:700;transition:all .15s;display:grid}.today-item.done{background:color-mix(in srgb, var(--accent) var(--done-pct), var(--surface));border-color:color-mix(in srgb, var(--accent) 40%, var(--surface))}.today-item.done .check{background:color-mix(in srgb, var(--accent) 78%, #000);border-color:color-mix(in srgb, var(--accent) 78%, #000)}.today-item.done .habit-name{color:var(--muted);text-decoration:line-through}.habit-emoji{font-size:1.2rem}.habit-name{overflow-wrap:anywhere;flex:1;min-width:0;font-weight:500}.streak{color:var(--streak-text);background:var(--streak-bg);white-space:nowrap;border-radius:999px;padding:3px 8px;font-size:.8rem;font-weight:600}.add-link{color:var(--primary-text);margin-top:16px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-block}.add-link:hover{text-decoration:underline}.week-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.week-stat{text-align:right}.week-stat strong{color:var(--primary-text);font-size:1.8rem;line-height:1;display:block}.bars{grid-template-columns:repeat(7,1fr);gap:10px;margin-bottom:24px;display:grid}.bar-col{color:var(--muted);flex-direction:column;align-items:center;gap:6px;font-size:.75rem;display:flex}.bar-track{background:var(--track);border-radius:8px;align-items:flex-end;width:100%;max-width:34px;height:80px;display:flex;overflow:hidden}.bar-fill{background:var(--bar);border-radius:8px;width:100%;transition:height .3s}.bar-col.is-today .bar-fill{background:var(--primary)}.bar-col.is-today span{color:var(--primary-text);font-weight:700}.grid-wrap{overflow-x:auto}.week-grid{border-collapse:collapse;width:100%;font-size:.88rem}.week-grid th{color:var(--muted);text-align:center;padding:6px 4px;font-size:.75rem;font-weight:600}.week-grid th small{font-weight:400;display:block}.week-grid th.is-today{color:var(--primary-text)}.week-grid td{text-align:center;border-top:1px solid var(--border);padding:5px 4px}.grid-name{white-space:nowrap;text-overflow:ellipsis;max-width:180px;font-weight:500;overflow:hidden;text-align:left!important}.grid-total{color:var(--muted);font-weight:700}.cell{border:1.5px solid var(--control-border);background:var(--cell-bg);border-radius:7px;width:26px;height:26px;transition:all .15s}.cell:hover{border-color:var(--accent)}.cell.on{background:var(--accent);border-color:var(--accent)}.empty{text-align:center;max-width:440px;margin:60px auto;padding:48px 32px}.empty-icon{margin-bottom:8px;font-size:2.6rem}.empty p{color:var(--muted);margin:8px 0 24px}.manage{flex-direction:column;gap:24px;max-width:680px;margin:0 auto;display:flex}.habit-form{flex-direction:column;gap:14px;display:flex}.input{border:1px solid var(--control-border);background:var(--surface-input);width:100%;color:var(--text);font:inherit;border-radius:10px;outline:none;padding:12px 14px;font-size:.95rem}.input::placeholder{color:var(--muted);opacity:1}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.picker-row{flex-direction:column;gap:12px;display:flex}.emoji-picker,.color-picker{flex-wrap:wrap;gap:6px;display:flex}.emoji-btn{border:1px solid var(--border);background:var(--surface-input);border-radius:10px;width:40px;height:40px;font-size:1.1rem}.emoji-btn:hover{border-color:var(--control-border)}.emoji-btn.selected{border:2px solid var(--primary);background:var(--primary-soft)}.swatch{border:3px solid var(--surface);width:28px;height:28px;box-shadow:0 0 0 1px var(--control-border);border-radius:50%}.swatch.selected{box-shadow:0 0 0 2px var(--text)}.form-actions{justify-content:flex-end;gap:8px;display:flex}.manage-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.manage-item{border:1px solid var(--border);border-left:4px solid var(--accent);background:var(--surface);border-radius:12px;padding:14px 16px}.manage-row{align-items:center;gap:14px;display:flex}.manage-emoji{font-size:1.4rem}.manage-info{overflow-wrap:anywhere;flex-direction:column;flex:1;min-width:0;display:flex}.manage-info .muted{margin-top:2px;font-size:.82rem}.row-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.confirm-text{color:var(--danger-text);font-size:.84rem;font-weight:600}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field.grow{flex:200px}.field-label{color:var(--muted);font-size:.8rem;font-weight:600}.select{appearance:auto;cursor:pointer}.inline-form{align-items:center;gap:8px;display:flex}.inline-form .input,.inline-form.grow{flex:1;min-width:0}.form-error{color:var(--danger-text);margin:8px 0 0;font-size:.85rem;font-weight:600}.form-error.full{width:100%;margin:0}.empty-note{margin:14px 0 0}.cat-list{flex-direction:column;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.cat-item{border:1px solid var(--border);background:var(--surface);border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 14px;display:flex}.cat-info{overflow-wrap:anywhere;flex-direction:column;flex:1;min-width:0;display:flex}.cat-info .muted{margin-top:2px;font-size:.82rem}.chip{background:var(--primary-soft);color:var(--primary-text);overflow-wrap:anywhere;border-radius:999px;align-self:flex-start;margin-top:6px;padding:2px 10px;font-size:.76rem;font-weight:600}.toolbar{flex-wrap:wrap;gap:12px;margin-bottom:8px;display:flex}.toolbar .field:not(.grow){flex:0 170px}.result-count{margin:8px 0 14px}.link-btn{color:var(--primary-text);font-weight:600;font-size:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.empty-inline{text-align:center;border:1px dashed var(--control-border);border-radius:12px;padding:24px 16px}.empty-inline p{margin:4px 0 14px}.stats{flex-direction:column;gap:24px;display:flex}.stats-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.segmented{border:1px solid var(--control-border);background:var(--surface);border-radius:10px;display:inline-flex;overflow:hidden}.seg-btn{min-height:40px;color:var(--text);background:0 0;border:none;padding:10px 16px;font-size:.9rem;font-weight:600}.seg-btn+.seg-btn{border-left:1px solid var(--control-border)}.seg-btn:hover{background:var(--hover)}.seg-btn.active{background:var(--btn-bg);color:#fff}.notice{background:var(--primary-soft);border-radius:12px;padding:14px 16px;font-size:.92rem}.notice a{color:var(--primary-text);font-weight:600}.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:0;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;padding:18px}.stat-card.wide{grid-column:1/-1}.stat-card dt{color:var(--muted);margin-bottom:6px;font-size:.8rem;font-weight:600}.stat-card dd{margin:0}.stat-value{letter-spacing:-.02em;color:var(--primary-text);overflow-wrap:anywhere;font-size:1.7rem;font-weight:700;line-height:1.15}.stat-value.name{color:var(--text);font-size:1.3rem}.stat-hint{color:var(--muted);overflow-wrap:anywhere;font-size:.82rem;margin-top:4px!important}.trend-plot{height:180px;margin-left:44px;position:relative}.trend-svg{width:100%;height:100%;display:block}.trend-ylabel{color:var(--muted);margin-right:8px;font-size:.72rem;position:absolute;right:100%;transform:translateY(-50%)}.trend-grid{stroke:var(--border);stroke-width:1px;vector-effect:non-scaling-stroke}.trend-line{fill:none;stroke:var(--primary);stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.trend-area{fill:var(--primary);opacity:.14}.trend-xlabels{color:var(--muted);justify-content:space-between;margin:8px 0 0 44px;font-size:.75rem;display:flex}.data-details{margin-top:16px}.data-details summary{cursor:pointer;color:var(--primary-text);font-size:.9rem;font-weight:600}.table-scroll{border:1px solid var(--border);border-radius:10px;max-height:260px;margin-top:10px;overflow:auto}.data-table{border-collapse:collapse;width:100%;font-size:.85rem}.data-table th,.data-table td{text-align:left;border-top:1px solid var(--border);padding:7px 12px}.data-table thead th{background:var(--surface);color:var(--muted);box-shadow:0 1px 0 var(--border);border-top:none;font-size:.78rem;position:sticky;top:0}.data-table tbody th{font-weight:500}.data-table tbody tr:first-child th,.data-table tbody tr:first-child td{border-top:none}.heatmap-wrap{overflow-x:auto}.heatmap{align-items:center;gap:3px;display:grid}.heat-label{color:var(--muted);padding-right:6px;font-size:.72rem}.heat-cell{aspect-ratio:1;border:1px solid var(--border);background:var(--track);border-radius:4px;display:block}.heat-cell.lv1{background:color-mix(in srgb, var(--primary) 25%, var(--track));border-color:#0000}.heat-cell.lv2{background:color-mix(in srgb, var(--primary) 50%, var(--track));border-color:#0000}.heat-cell.lv3{background:color-mix(in srgb, var(--primary) 75%, var(--track));border-color:#0000}.heat-cell.lv4{background:var(--primary);border-color:#0000}.heat-cell.na{border-style:dashed;border-color:var(--control-border);background:0 0}.heat-cell.is-today{outline:2px solid var(--text);outline-offset:1px}.heat-legend{color:var(--muted);align-items:center;gap:4px;margin-top:14px;font-size:.75rem;display:flex}.heat-legend .heat-cell{width:16px;height:16px}.heat-legend span:first-child{margin-right:4px}.heat-legend span:last-child{margin-left:4px}@media (width<=860px){.dashboard{grid-template-columns:1fr}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=520px){h1{font-size:1.35rem}.container{padding:20px 14px 48px}.card{padding:18px}.topbar-inner{flex-wrap:wrap;row-gap:8px;padding:10px 14px}.theme-toggle{order:2}.nav{order:3;width:100%}.nav a{text-align:center;flex:1;padding:9px 10px;font-size:.88rem}.today-item{gap:10px;padding:12px}.week-grid td{padding:4px 1px}.week-grid th{padding:6px 1px}.grid-name{max-width:72px;font-size:.8rem}.cell{width:24px;height:24px}.bars{gap:6px}.nav a{padding:9px 6px;font-size:.84rem}.stat-card{padding:14px}.stat-value{font-size:1.35rem}.stat-value.name{font-size:1.1rem}.stats-head{align-items:stretch}.segmented{width:100%}.seg-btn{flex:1;padding:10px 6px}.trend-plot{height:150px;margin-left:36px}.trend-xlabels{margin-left:36px}.inline-form{flex-wrap:wrap}.inline-form>.btn{flex:1}.toolbar .field,.toolbar .field:not(.grow){flex:100%}.heat-label{padding-right:4px;font-size:.68rem}.manage-row{flex-wrap:wrap}.row-actions{justify-content:flex-start;width:100%}.form-actions .btn{flex:1}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
