:root{--bg:#f6f5f2;--panel:#fff;--ink:#1f2420;--muted:#6b6f6b;--line:#e4e1da;--accent:#3d5a45;--accent-soft:#e7efe9;--warn:#b5533c;--gold:#c9a24b;--gray-box:#eeece7;--radius:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0}h1{margin:0 0 4px;font-size:1.6rem}h2{color:var(--accent);margin:0 0 12px;font-size:1.1rem}.sub{color:var(--muted);margin-bottom:20px;font-size:.9rem}.wrap{max-width:1100px;margin:0 auto;padding:24px 16px 60px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:20px;padding:20px}.grid{gap:16px;display:grid}.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:1fr 1fr 1fr}@media (max-width:720px){.grid-2,.grid-3{grid-template-columns:1fr}}label{color:var(--muted);margin-bottom:4px;font-size:.82rem;font-weight:600;display:block}input[type=text],input[type=date],input[type=number],input[type=password],textarea,select{border:1px solid var(--line);width:100%;color:var(--ink);background:#fdfdfc;border-radius:6px;padding:8px 10px;font-size:.95rem}select{cursor:pointer}textarea{resize:vertical;min-height:50px}.field{margin-bottom:14px}.row{align-items:flex-end;gap:10px;display:flex}.row>div{flex:1}.toggle-group{align-items:center;gap:8px;display:flex}.switch{cursor:pointer;background:#d8d5cc;border-radius:20px;flex-shrink:0;width:44px;height:24px;transition:all .2s;position:relative}.switch.on{background:var(--accent)}.switch:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:all .2s;position:absolute;top:2px;left:2px}.switch.on:after{left:22px}.btn-group{gap:6px;display:flex}.btn-choice{border:1px solid var(--line);cursor:pointer;color:var(--muted);background:#fdfdfc;border-radius:6px;align-items:center;gap:6px;padding:6px 14px;font-size:.85rem;font-weight:600;display:inline-flex}.btn-choice.active{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:10px 20px;font-size:.95rem;font-weight:600}button.primary:hover{opacity:.9}button.primary:disabled{opacity:.6;cursor:not-allowed}button.ghost{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:6px;padding:6px 12px;font-size:.82rem}button.small-add{background:var(--accent-soft);border:1px dashed var(--accent);color:var(--accent);cursor:pointer;border-radius:6px;padding:5px 10px;font-size:.8rem;font-weight:600}.cat-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.cat-row input[type=text]{flex:2}.cat-row input[type=number]{flex:1}.cat-row .rm{cursor:pointer;color:var(--warn);padding:0 4px;font-size:1.1rem}.cat-row-footer{align-items:center;gap:10px;display:flex}.cat-row-name{flex:2;align-items:center;gap:8px;display:flex}.cat-row-name input[type=text]{flex:1}.hint{color:var(--muted);margin-top:2px;font-size:.78rem}.charts-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}@media (max-width:800px){.charts-grid{grid-template-columns:1fr}}.chart-box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.chart-box h3{color:var(--ink);margin:0 0 10px;font-size:.9rem}canvas{max-height:220px}.empty{color:var(--muted);text-align:center;padding:20px;font-size:.9rem}.radio-group{gap:16px;display:flex}.radio-group label{color:var(--ink);cursor:pointer;align-items:center;gap:6px;font-weight:500;display:flex}.range-picker{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.range-picker-dates{color:var(--muted);align-items:center;gap:8px;font-size:.82rem;display:flex}.range-picker-dates input[type=date]{width:auto;padding:5px 8px}.progress-row{margin-bottom:12px}.progress-row:last-child{margin-bottom:0}.progress-row-top{color:var(--ink);justify-content:space-between;margin-bottom:4px;font-size:.82rem;display:flex}.progress-row-val{color:var(--muted);font-weight:600}.progress-track{background:var(--gray-box);border-radius:6px;height:10px;overflow:hidden}.progress-fill{border-radius:6px;height:100%;transition:width .2s}.stat-strip{flex-wrap:wrap;gap:16px;margin-bottom:16px;display:flex}.stat{background:var(--accent-soft);border-radius:8px;min-width:110px;padding:10px 16px}.stat .num{color:var(--accent);font-size:1.3rem;font-weight:700}.stat .lbl{color:var(--muted);font-size:.75rem}.top-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.tab-bar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-end;gap:4px;margin-bottom:18px;display:flex}.tab-bar-tabs{display:flex}.tab-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 20px;font-size:.95rem;font-weight:600}.tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.hamburger-btn{flex-direction:column;justify-content:center;gap:4px;padding:9px 10px;display:none}.hamburger-btn span{background:var(--ink);border-radius:1px;width:18px;height:2px;display:block}.day-card{border:1px solid var(--line);cursor:pointer;background:#fdfdfc;border-radius:8px;margin-bottom:10px;padding:12px 16px;transition:all .15s}.day-card:hover{border-color:var(--accent)}.day-card.finished{background:var(--gray-box);color:var(--muted)}.day-card-top{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.day-card-title{font-size:.95rem;font-weight:700}.day-card-date{color:var(--muted);font-size:.8rem}.day-card-notes{color:var(--muted);white-space:pre-wrap;margin-top:4px;font-size:.85rem}.day-card-actions{gap:6px;margin-top:8px;display:flex}.day-card-actions button{padding:4px 10px;font-size:.78rem}.badge{background:var(--accent);color:#fff;border-radius:12px;margin-left:8px;padding:2px 8px;font-size:.7rem;font-weight:700;display:inline-block}.pagination{justify-content:center;align-items:center;gap:14px;margin-top:14px;display:flex}.badge.today{background:var(--gold);color:#3a2f10}.edit-section-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.no-active{text-align:center;padding:30px 10px}.no-active p{color:var(--muted);margin-bottom:14px}.modal-overlay{z-index:100;background:#14140f73;justify-content:center;align-items:center;padding:16px;display:none;position:fixed;inset:0}.modal-overlay.open{display:flex}.modal-box{border-radius:var(--radius);background:#fff;width:100%;max-width:400px;padding:24px}.modal-box h3{margin:0 0 16px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.modal-box-wide{max-width:760px;max-height:88vh;overflow-y:auto}.weekday-group{margin-bottom:22px}.weekday-group h3{color:var(--muted);margin:0 0 10px;font-size:.95rem}.confirm-message{margin:0 0 8px;font-size:.95rem;line-height:1.5}.toast-stack{z-index:200;flex-direction:column;gap:8px;max-width:340px;display:flex;position:fixed;bottom:20px;right:20px}.toast{color:#fff;cursor:pointer;border-radius:8px;padding:12px 16px;font-size:.85rem;line-height:1.4;animation:.2s ease-out toast-in;box-shadow:0 4px 14px #0000002e}.toast-error{background:#b5533c}.toast-success{background:#3d5a45}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.login-wrap{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-box{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);text-align:center;width:100%;max-width:320px;padding:32px}.login-box h1{margin-bottom:4px}.login-box .sub{margin-bottom:20px}.login-box input{margin-bottom:12px}.login-error{color:var(--warn);margin-bottom:12px;font-size:.85rem}.top-bar-user{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.landing{flex-direction:column;min-height:100vh;display:flex}.landing-nav{background:var(--panel);border-bottom:1px solid var(--line);z-index:10;justify-content:space-between;align-items:center;padding:14px 24px;display:flex;position:sticky;top:0}.landing-brand{color:var(--accent);font-size:1.05rem;font-weight:700;text-decoration:none}.landing-nav-btn{padding:7px 18px;font-size:.85rem}.landing-hero{background:var(--accent);color:#fff;text-align:center;padding:70px 16px}.landing-hero-inner{max-width:640px;margin:0 auto}.landing-hero h1{margin-bottom:12px;font-size:2.4rem}.landing-tagline{color:#e7efe9;margin-bottom:28px;font-size:1.05rem;line-height:1.6}.landing-cta{padding:12px 28px;font-size:1rem;text-decoration:none;display:inline-block}.landing-body{flex:1;padding-top:44px}.landing-body section{margin-bottom:40px}.landing-body section h2{margin-bottom:16px;font-size:1.3rem}.landing-feature-body{color:var(--muted);margin:0;font-size:.92rem;line-height:1.55}.landing-footer{text-align:center;color:var(--muted);border-top:1px solid var(--line);padding:20px 16px;font-size:.8rem}@media (max-width:520px){.landing-nav{padding:12px 16px}.landing-hero{padding:48px 16px}.landing-hero h1{font-size:1.8rem}.landing-tagline{font-size:.95rem}.landing-cta{width:100%;padding:12px 0}}.status-page{text-align:center;flex:1;justify-content:center;align-items:center;padding:60px 16px;display:flex}.status-page-inner{max-width:420px}.status-page-inner h1{color:var(--accent);margin-bottom:8px;font-size:3.2rem}.status-page-msg{color:var(--muted);margin-bottom:24px;font-size:1rem}@media (max-width:640px){.hamburger-btn{display:flex}.tab-bar{border-bottom:none;flex-direction:column;align-items:stretch;margin-bottom:14px;display:none}.tab-bar.nav-open{display:flex}.tab-bar-tabs{flex-direction:column;width:100%}.tab-bar .tab-btn{text-align:left;border-bottom:1px solid var(--line);width:100%;margin-bottom:0;padding:12px 6px}.tab-bar .sub{padding:8px 6px 0}.activity-row{border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;margin-bottom:22px;padding-bottom:16px}.activity-row:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.activity-row .cat-row-name,.activity-row .btn-group{width:100%}.activity-row .cat-row-footer{justify-content:space-between;width:100%}.settings-row .btn-choice-label{display:none}.settings-row .btn-choice{padding:7px 10px}}
