:root{--bg:#fff;--surface:#fff;--surface-2:#f7f5f1;--border:#e7e2d8;--text:#221d16;--text-muted:#8a8172;--accent:#8c6448;--accent-strong:#744f39;--accent-tint:#f5efe7;--complete:#505a43;--complete-tint:#eef1e9;--rest:#505762;--rest-tint:#edf0f3;--miss:#8c5b53;--shadow:0 1px 2px #1e180e0d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#1b1815;--surface:#242019;--surface-2:#2d2820;--border:#3a342a;--text:#f3eee3;--text-muted:#a79e8f;--accent:#aa7e5d;--accent-strong:#bf936f;--accent-tint:#453527;--complete:#8b9677;--complete-tint:#38402f;--rest:#8e96a0;--rest-tint:#2c323b;--miss:#ac7a72;--shadow:0 1px 3px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;padding-top:env(safe-area-inset-top);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);margin:0;font-family:Archivo,sans-serif}.app{background:var(--bg);flex-direction:column;max-width:480px;min-height:100vh;margin:0 auto;display:flex}.screen-scroll{flex:1;padding:20px 20px 16px;overflow-y:auto}.topbar{justify-content:space-between;align-items:center;margin-bottom:26px;display:flex}.wordmark{letter-spacing:.02em;text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:7px;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;margin:0;font-family:Big Shoulders Display,sans-serif;font-size:22px;font-weight:800;text-decoration-thickness:2.5px;display:inline-block}.wordmark span{color:var(--accent)}.topbar-actions{gap:8px;display:flex}.icon-btn{border:1px solid var(--border);background:var(--surface);width:40px;height:40px;color:var(--text-muted);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;display:flex}.icon-btn:hover{color:var(--text);border-color:var(--text-muted)}.btn,.icon-btn,.tab,.weekday-tabs button{transition:transform .15s cubic-bezier(.4,0,.2,1),background .2s,color .2s,border-color .2s}.btn:active,.icon-btn:active,.tab:active,.weekday-tabs button:active{transform:scale(.92)}.icon-btn:focus-visible,.check-row:focus-visible,.tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.icon-btn svg{width:18px;height:18px}.date-row{justify-content:space-between;align-items:baseline;margin-bottom:18px;display:flex}.date-row .date{font-size:15px;font-weight:600}.date-row .daytag{color:var(--text-muted);letter-spacing:.06em;font-size:11px}.streak-hero{border-bottom:1px solid var(--border);align-items:center;gap:18px;margin-bottom:20px;padding:18px 4px 22px;display:flex}.ring-wrap{flex-shrink:0;width:132px;height:132px;position:relative}.ring-wrap svg{transform:rotate(-90deg)}.ring-track{fill:none;stroke:var(--border);stroke-width:9px}.ring-fill{fill:none;stroke:var(--accent);stroke-width:9px;stroke-linecap:round}.ring-center{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.streak-num{font-variant-numeric:tabular-nums;font-family:Big Shoulders Display,sans-serif;font-size:46px;font-weight:800;line-height:1}.streak-label{color:var(--text-muted);letter-spacing:.05em;margin-top:3px;font-size:10px}.ring-badge{background:var(--complete);width:28px;height:28px;box-shadow:0 0 0 3px var(--bg);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;bottom:6px;right:-3px}.ring-badge svg{width:14px;height:14px;stroke:var(--bg)}.week-strip{flex:1}.week-strip-title{color:var(--text-muted);letter-spacing:.04em;margin:0 0 8px;font-size:10px}.week-cells{gap:6px;display:flex}.week-cell{flex-direction:column;align-items:center;gap:4px;display:flex}.week-cell .dot{border-radius:5px;justify-content:center;align-items:center;width:15px;height:15px;display:flex}.week-cell .dow{color:var(--text-muted);font-size:9px}.dot.done{background:var(--complete-tint);border:1.5px solid var(--complete)}.dot.rest{background:var(--rest-tint);border:1.5px dashed var(--rest)}.dot.miss{border:1.5px solid var(--border);background:0 0}.dot.future{border:1.5px dashed var(--border);opacity:.5;background:0 0}.dot svg{width:9px;height:9px;stroke:var(--complete)}.dot.rest svg{stroke:var(--rest)}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.section-head h2{letter-spacing:.02em;margin:0;font-size:13px;font-weight:700}.progress-count{font-variant-numeric:tabular-nums;color:var(--text-muted);font-family:Big Shoulders Display,sans-serif;font-size:15px;font-weight:700}.progress-count strong{color:var(--text)}.progress-bar{background:var(--border);border-radius:4px;height:4px;margin-bottom:16px;overflow:hidden}.progress-bar-fill{background:var(--accent);width:0%;height:100%;transition:width .4s cubic-bezier(.4,0,.2,1),background .3s}.checklist{flex-direction:column;gap:8px;margin-bottom:22px;display:flex}.check-row{background:var(--surface);border:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:10px;align-items:center;gap:12px;min-height:44px;padding:13px 12px;transition:background .25s,border-color .25s,opacity .25s;display:flex}.check-row .circle{border:2px solid var(--border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;transition:background .2s,border-color .2s,transform .2s;display:flex}.check-row .circle svg{width:13px;height:13px;stroke:var(--bg)}.check-row .info{flex:1;min-width:0}.check-row .exname{font-size:14px;font-weight:600;transition:color .25s}.check-row .exmeta{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:12px}.check-row.checked{background:var(--complete-tint);border-color:#0000}.check-row.checked .circle{background:var(--complete);border-color:var(--complete)}.check-row.checked .exname{color:var(--text-muted);text-decoration:line-through;-webkit-text-decoration-color:var(--text-muted);text-decoration-color:var(--text-muted);text-decoration-thickness:1.5px}.achieve-banner{background:var(--complete-tint);border:1px solid var(--complete);border-radius:12px;align-items:center;gap:10px;padding:11px 14px;display:flex;overflow:hidden}.achieve-banner .badge{background:var(--complete);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.achieve-banner .badge svg{width:15px;height:15px;stroke:var(--bg)}.achieve-banner strong{color:var(--complete);font-size:13.5px;display:block}.achieve-banner span{color:var(--text-muted);font-size:11.5px}@media (prefers-reduced-motion:reduce){.progress-bar-fill,.check-row,.circle,.circle svg,.btn,.icon-btn,.tab,.weekday-tabs button{transition:none!important}}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.history{padding-top:4px}.legend{flex-wrap:wrap;gap:14px;margin-bottom:12px;display:flex}.legend-item{color:var(--text-muted);align-items:center;gap:6px;font-size:10.5px;display:flex}.legend-swatch{border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;display:flex}.legend-swatch svg{width:9px;height:9px}.cal-nav{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.cal-month{font-variant-numeric:tabular-nums;font-family:Big Shoulders Display,sans-serif;font-size:22px;font-weight:800}.cal-grid{grid-template-columns:repeat(7,1fr);gap:4px;display:grid}.cal-dow{text-align:center;color:var(--text-muted);padding-bottom:4px;font-size:9px}.cal-cell{aspect-ratio:1;font-variant-numeric:tabular-nums;cursor:pointer;border-radius:7px;justify-content:center;align-items:center;padding:0;font-family:inherit;font-size:10.5px;display:flex;position:relative}.cal-cell.empty{visibility:hidden;pointer-events:none}.cal-cell.done{background:var(--complete-tint);color:var(--complete);border:1px solid var(--complete);font-weight:700}.cal-cell.rest{background:var(--rest-tint);color:var(--rest);border:1px dashed var(--rest)}.cal-cell.miss{color:var(--miss);border:1px solid var(--border);background:0 0}.cal-cell.future{color:var(--text-muted);opacity:.4}.cal-cell:not(.done):not(.rest):not(.miss){color:var(--text);background:0 0;border:1px solid #0000}.cal-cell.today{box-shadow:0 0 0 2px var(--accent-strong);font-weight:700}.cal-cell.selected{box-shadow:0 0 0 2px var(--accent)}.cal-cell:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.day-detail{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;margin-top:18px;padding:16px}.day-detail-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.day-detail-head>div{align-items:baseline;gap:8px;display:flex}.day-detail-head strong{font-size:15px}.day-detail-head span{color:var(--text-muted);font-size:11px}.day-detail-head .icon-btn{width:32px;height:32px;font-size:18px;line-height:1}.day-detail-list{flex-direction:column;gap:8px;display:flex}.check-row.static{cursor:default}.tabbar{border-top:1px solid var(--border);background:var(--surface);padding:8px 6px calc(6px + env(safe-area-inset-bottom));display:flex}.tab{color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;min-height:44px;padding:6px;font-size:10px;display:flex;position:relative}.tab svg{width:19px;height:19px}.tab.active{color:var(--accent)}.field-group{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.field-group label{color:var(--text-muted);letter-spacing:.03em;font-size:12px}.field-group input,.field-group select{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:10px 12px;font-family:inherit;font-size:14px}.field-row{gap:8px;display:flex}.field-row .field-group{flex:1}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:10px;min-height:44px;padding:11px 16px;font-family:inherit;font-size:14px;font-weight:600}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--bg)}.btn-danger{color:var(--miss)}.weekday-tabs{gap:4px;margin-bottom:16px;display:flex;overflow-x:auto}.weekday-tabs button{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:20px;flex-shrink:0;min-height:44px;padding:8px 12px;font-size:12px;font-weight:600}.weekday-tabs button.active{background:var(--accent-tint);border-color:var(--accent);color:var(--accent-strong)}.preset-label{color:var(--text-muted);letter-spacing:.03em;margin:12px 0 8px;font-size:11px}.preset-chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:20px;align-items:center;gap:5px;min-height:36px;padding:8px 12px;font-family:inherit;font-size:12.5px;font-weight:600;display:flex}.chip svg{width:13px;height:13px}.chip.added{color:var(--complete);border-color:var(--complete);background:var(--complete-tint);cursor:default}.menu-item-row{border:1px solid var(--border);background:var(--surface);border-radius:10px;align-items:center;gap:10px;margin-bottom:8px;padding:10px 12px;display:flex}.menu-item-row .info{flex:1}.empty-state{text-align:center;color:var(--text-muted);padding:40px 16px}.update-banner{background:var(--text);color:var(--bg);box-shadow:var(--shadow);z-index:20;border-radius:10px;align-items:center;gap:10px;padding:10px 16px;font-size:13px;display:flex;position:fixed;bottom:74px;left:50%;transform:translate(-50%)}.update-banner button{color:var(--bg);cursor:pointer;background:0 0;border:none;font-family:inherit;font-size:12px;font-weight:700;text-decoration:underline}
