:root,:root[data-theme=dark]{--bg: #0b0c0e;--surface: #131417;--surface-2: #1a1c20;--surface-3: #22252a;--border: #26292f;--grid: #2a2d33;--text: #f2f3f5;--text-2: #a6abb5;--muted: #6f7580;--green: #22c55e;--green-soft: rgba(34, 197, 94, .45);--green-bg: rgba(34, 197, 94, .14);--red: #f05252;--red-bg: rgba(240, 82, 82, .12);--blue: #60a5fa;--amber: #fbbf24;--violet: #a78bfa;--shadow: 0 10px 40px rgba(0, 0, 0, .45);color-scheme:dark}:root[data-theme=light]{--bg: #f7f7f5;--surface: #ffffff;--surface-2: #f3f3f1;--surface-3: #e9e9e6;--border: #e4e4e0;--grid: #e7e7e3;--text: #16181b;--text-2: #4b515b;--muted: #8a909a;--green: #16a34a;--green-soft: rgba(22, 163, 74, .4);--green-bg: rgba(22, 163, 74, .12);--red: #dc2626;--red-bg: rgba(220, 38, 38, .08);--blue: #2563eb;--amber: #d97706;--violet: #7c3aed;--shadow: 0 10px 40px rgba(20, 20, 20, .12);color-scheme:light}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);font:14px/1.5 Inter,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;min-height:100vh;transition:background .25s,color .25s}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}code{font-family:JetBrains Mono,monospace;font-size:.9em;background:var(--surface-2);padding:1px 5px;border-radius:4px}.muted{color:var(--muted);font-weight:400}.small{font-size:12px}:focus-visible{outline:2px solid var(--green);outline-offset:2px}input:not([type=checkbox]):not([type=range]),select,textarea{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;width:100%;transition:border-color .15s,background .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--green)}textarea{resize:vertical;min-height:72px}select{cursor:pointer}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);font-weight:500;white-space:nowrap;transition:transform .1s,background .15s,border-color .15s}.btn:hover:not(:disabled){background:var(--surface-3)}.btn:active:not(:disabled){transform:scale(.97)}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--green)}.btn.ghost{background:transparent}.btn.danger{background:var(--red);border-color:var(--red);color:#fff}.btn.sm{padding:6px 12px;font-size:13px}.btn.block{width:100%;padding:11px}.icon-btn{width:34px;height:34px;border-radius:8px;border:1px solid var(--border);background:var(--surface);display:inline-grid;place-items:center;font-size:16px;transition:background .15s}.icon-btn:hover:not(:disabled){background:var(--surface-3)}.icon-btn.xs{width:28px;height:28px;font-size:12px}.icon-btn.danger:hover{background:var(--red-bg)}.link{background:none;border:0;color:var(--text-2);font-weight:600;padding:0}.link:hover{color:var(--green)}.danger-text{color:var(--red)!important}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:32px 28px;box-shadow:var(--shadow);animation:rise .35s ease}.auth-card h1{font-size:22px;margin:22px 0 4px;letter-spacing:-.02em}.auth-card .muted{margin:0 0 20px}.auth-card label{display:block;font-size:13px;color:var(--text-2);margin-bottom:14px}.auth-card label input{margin-top:6px}.auth-links{display:flex;justify-content:space-between;margin-top:16px;font-size:13px;gap:12px;flex-wrap:wrap}.auth-links a{color:var(--text-2);text-decoration:none}.auth-links a:hover{color:var(--green)}.form-msg{font-size:13px;margin:14px 0 0;min-height:1em}.form-msg.err{color:var(--red)}.form-msg.ok{color:var(--green)}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16px;letter-spacing:-.01em}.brand-mark{width:28px;height:28px;border-radius:8px;background:var(--green);color:#fff;display:grid;place-items:center;font-size:15px}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:12px max(16px,env(safe-area-inset-left));gap:12px;background:color-mix(in srgb,var(--bg) 85%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.topbar-right{display:flex;align-items:center;gap:8px}.save-state{font-size:12px;color:var(--green);background:var(--green-bg);padding:4px 10px;border-radius:999px;transition:opacity .2s,color .2s,background .2s;white-space:nowrap}.save-state[data-state=saving]{color:var(--text-2);background:var(--surface-2)}.save-state[data-state=error]{color:var(--red);background:var(--red-bg)}.menu{position:relative}.menu-pop{position:absolute;right:0;top:42px;min-width:240px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:6px;box-shadow:var(--shadow);animation:rise .15s ease;z-index:30}.menu-pop button{display:block;width:100%;text-align:left;background:none;border:0;padding:9px 10px;border-radius:8px;color:var(--text)}.menu-pop button:hover{background:var(--surface-2)}.menu-head{padding:8px 10px 10px;border-bottom:1px solid var(--border);margin-bottom:4px;font-weight:600}.menu-head small{display:block;color:var(--muted);font-weight:400;overflow:hidden;text-overflow:ellipsis}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;max-width:1400px;margin:0 auto;padding:16px 16px 4px}.tabs{display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:3px}.tabs button{border:0;background:none;padding:6px 12px;border-radius:7px;color:var(--text-2);font-weight:500;font-size:13px;transition:background .15s,color .15s}.tabs button[aria-selected=true]{background:var(--surface-3);color:var(--text)}.month-nav{display:flex;align-items:center;gap:6px;flex:1}.month-nav select{width:auto;padding:6px 8px}.month-nav.year-only #sel-month,.month-nav.year-only #prev,.month-nav.year-only #next{display:none}.body{max-width:1400px;margin:0 auto;padding:12px 16px 64px;display:grid;gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px;animation:rise .3s ease;min-width:0}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}.card-head h2{font-size:16px;margin:0;letter-spacing:-.01em}.pill{font-size:12px;background:var(--green-bg);color:var(--green);padding:3px 10px;border-radius:999px;font-weight:600}.loading-screen{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:14px;color:var(--text-2)}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--green);animation:spin .8s linear infinite}.empty{text-align:center;padding:32px;color:var(--text-2)}.sheet-card{padding:18px 0 8px}.sheet-card .card-head{padding:0 18px}.sheet-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:thin}.sheet{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-variant-numeric:tabular-nums}.sheet th,.sheet td{border-bottom:1px solid var(--grid);border-right:1px solid var(--grid);padding:0;text-align:center}.sheet thead th{border-top:1px solid var(--grid);background:var(--surface-2);font-weight:500}.habit-col{position:sticky;left:0;z-index:2;background:var(--surface)!important;text-align:left!important;padding:0 12px!important;min-width:190px;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500;box-shadow:1px 0 0 var(--grid)}.sheet thead .habit-col,.sheet tfoot .habit-col{background:var(--surface-2)!important;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.habit-col .emoji{margin-right:8px}.habit-col .hname{vertical-align:middle}.tag{font-size:10px;padding:1px 6px;border-radius:4px;margin-left:6px;text-transform:uppercase;letter-spacing:.04em}.tag.avoid{background:var(--red-bg);color:var(--red)}th.day{width:36px;min-width:36px;padding:6px 0;cursor:pointer;transition:background .15s}th.day:hover{background:var(--surface-3)}th.day .wd{display:block;font-size:10px;color:var(--muted);text-transform:uppercase}th.day .dn{display:block;font-size:13px;font-weight:600}th.day.is-weekend .wd{color:var(--text-2)}th.day.is-today{background:var(--green-bg)}th.day.is-today .dn{color:var(--green)}th.day.is-selected{box-shadow:inset 0 -2px 0 var(--green)}td.is-today{background:color-mix(in srgb,var(--green) 5%,transparent)}.sheet tbody tr{height:40px}.sheet tbody tr:hover td,.sheet tbody tr:hover .habit-col{background:var(--surface-2)!important}.total-col{min-width:44px;font-weight:600;color:var(--text-2);background:var(--surface-2);position:sticky;right:0}.sheet tfoot td,.sheet tfoot th{background:var(--surface-2);font-size:12px;color:var(--muted);height:30px}.cell{width:24px;height:24px;border-radius:6px;border:1.5px solid var(--grid);background:transparent;padding:0;display:inline-grid;place-items:center;transition:background .15s,border-color .15s,transform .1s}.cell:hover:not(:disabled){border-color:var(--green-soft)}.cell.on{background:var(--green);border-color:var(--green)}.cell.on:after{content:"";width:10px;height:5px;border:solid #fff;border-width:0 0 2px 2px;transform:translateY(-1px) rotate(-45deg)}.cell:disabled{opacity:.25}.cell.pop{animation:pop .25s ease}.sheet.year td.yc{min-width:64px;height:40px;font-size:12px;font-weight:600;background:color-mix(in srgb,var(--green) calc(var(--p) * .85%),transparent)}.sheet.year td.yc span{color:var(--text)}.sheet.year td.yc.empty{color:var(--muted)}.sheet.year thead th{padding:8px 4px;font-size:12px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:6px;animation:rise .3s ease}.kpi-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.kpi-val{font-size:28px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.kpi-val.sm{font-size:20px}.kpi-val small{font-size:14px;color:var(--muted);font-weight:500}.bar{height:6px;border-radius:3px;background:var(--surface-3);overflow:hidden}.bar i{display:block;height:100%;background:var(--green);border-radius:3px;transition:width .5s cubic-bezier(.2,.8,.2,1)}.habit-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}.hstat{border:1px solid var(--border);border-radius:12px;padding:14px;background:var(--surface-2);display:grid;gap:10px}.hstat-top{display:flex;justify-content:space-between;gap:8px}.hstat-top b{font-weight:600}.hstat .pct{font-weight:700;color:var(--green);font-variant-numeric:tabular-nums}.hstat-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 10px;font-size:12px;color:var(--text-2)}.hstat-grid b{color:var(--text)}.journal-nav{display:flex;gap:8px;align-items:center}.journal-nav input{width:auto;padding:5px 8px}.journal{display:grid;grid-template-columns:1.3fr .7fr 1fr;gap:18px}.field{display:grid;gap:8px;align-content:start}.field.full{grid-column:1 / -1}.field-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.field-label b{color:var(--text);font-size:14px}.moods{display:flex;gap:6px}.mood{flex:1;font-size:22px;padding:6px 0;border-radius:10px;border:1px solid var(--border);background:var(--surface-2);filter:grayscale(.8);opacity:.7;transition:all .15s}.mood:hover{opacity:1;filter:none}.mood.on{filter:none;opacity:1;border-color:var(--green);background:var(--green-bg);transform:translateY(-2px)}input[type=range]{width:100%;accent-color:var(--green);height:28px}input[type=range].unset{opacity:.4}.hist-list{display:flex;gap:8px;flex-wrap:wrap}.hist{display:flex;gap:10px;align-items:center;border:1px solid var(--border);background:var(--surface-2);border-radius:10px;padding:8px 12px;transition:all .15s}.hist b{color:var(--green);font-size:12px}.hist:hover,.hist.on{border-color:var(--green)}.hist.on{background:var(--green-bg)}.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.charts figure{margin:0;border:1px solid var(--border);border-radius:12px;padding:14px;background:var(--surface-2);min-width:0}.charts figcaption{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px}.chart-box{position:relative;height:220px}.dialog{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:16px;padding:22px;width:min(420px,calc(100vw - 32px));box-shadow:var(--shadow)}.dialog.wide{width:min(760px,calc(100vw - 24px));max-height:calc(100vh - 48px);overflow:auto}.dialog::backdrop{background:#0000008c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.dialog[open]{animation:rise .2s ease}.dialog h3{margin:0 0 8px;font-size:17px}.dialog p{color:var(--text-2);margin:0 0 16px}.dialog label{display:grid;gap:6px;font-size:13px;color:var(--text-2);margin-bottom:16px}.dialog-actions,.dlg-foot{display:flex;justify-content:flex-end;gap:8px}.dlg-foot{justify-content:space-between;margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}.dlg-head{display:flex;justify-content:space-between;align-items:center}.ed-list{list-style:none;padding:0;margin:12px 0;display:grid;gap:6px}.ed-row{display:grid;grid-template-columns:auto auto 1fr 96px auto auto auto;gap:8px;align-items:center;padding:8px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2);transition:opacity .2s}.ed-row.inactive{opacity:.5}.ed-order{display:flex;flex-direction:column;gap:2px}.ed-order .icon-btn.xs{width:24px;height:16px;font-size:8px;border-radius:4px}.emoji-btn{width:38px;height:38px;border-radius:8px;border:1px solid var(--border);background:var(--surface);font-size:18px}.ed-row select,.ed-add select{padding:7px 6px}.ed-add{display:grid;grid-template-columns:auto 1fr 96px auto;gap:8px;align-items:center;padding:8px;border:1px dashed var(--border);border-radius:10px}.emoji-pop{position:absolute;z-index:5;display:grid;grid-template-columns:repeat(8,32px);gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:8px;box-shadow:var(--shadow)}.emoji-pop button{border:0;background:none;font-size:18px;border-radius:6px;height:32px}.emoji-pop button:hover{background:var(--surface-3)}.emoji-pop input{grid-column:span 8;margin-top:4px}.switch{position:relative;width:36px;height:20px;display:inline-block}.switch input{opacity:0;width:0;height:0}.switch span{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--surface-3);border-radius:999px;transition:background .2s;cursor:pointer}.switch span:after{content:"";position:absolute;width:14px;height:14px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s}.switch input:checked+span{background:var(--green)}.switch input:checked+span:after{transform:translate(16px)}.toast{position:fixed;left:50%;bottom:max(20px,env(safe-area-inset-bottom));transform:translate(-50%,20px);background:var(--surface-3);color:var(--text);border:1px solid var(--border);padding:10px 16px;border-radius:10px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:100;max-width:calc(100vw - 32px);font-size:13px}.toast.show{opacity:1;transform:translate(-50%)}.toast.err{border-color:var(--red)}.toast.ok{border-color:var(--green)}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.22)}to{transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media (max-width: 900px){.kpis{grid-template-columns:repeat(2,1fr)}.journal{grid-template-columns:1fr 1fr}.journal .field:first-child{grid-column:1 / -1}}@media (max-width: 640px){body{font-size:14px}.toolbar{padding:12px 12px 0;gap:10px}.tabs{width:100%}.tabs button{flex:1}.month-nav{flex-wrap:wrap}.month-nav select{flex:1}#manage-btn{width:100%}.body{padding:10px 12px 48px;gap:12px}.card{padding:14px;border-radius:12px}.sheet-card{padding:14px 0 6px}.sheet-card .card-head{padding:0 14px}.habit-col{min-width:132px;max-width:150px;padding:0 8px!important;font-size:13px}.habit-col .tag{display:none}.kpi-val{font-size:22px}.journal,.charts{grid-template-columns:1fr}.save-state{font-size:11px;padding:3px 8px}.ed-row{display:flex;flex-wrap:wrap}.ed-row .ed-name{flex:1 1 calc(100% - 90px);width:auto}.ed-row .ed-kind{flex:1;width:auto}.ed-add{grid-template-columns:auto 1fr}.ed-add select{grid-column:1 / 2}.ed-add .btn{grid-column:2 / 3}.dialog.wide{padding:16px}.emoji-pop{grid-template-columns:repeat(6,32px)}.emoji-pop input{grid-column:span 6}}
