.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr)}
.sidebar{position:sticky;top:0;height:100vh;padding:24px 17px;background:#203e33;color:#fff;display:flex;flex-direction:column;z-index:40}
.brand{display:block;padding:4px 8px 18px;border-bottom:1px solid #ffffff26}.brand-kicker{font-size:.68rem;letter-spacing:.16em;color:#d8e8e0}.brand-title{font-size:1.2rem;font-weight:850;margin-top:5px;line-height:1.25}
.day-nav{display:grid;gap:4px;margin:18px 0;overflow:auto}.day-link{display:grid;grid-template-columns:38px 1fr 10px;align-items:center;gap:8px;padding:10px;border-radius:10px;color:#e4eee9;font-size:.88rem}.day-link:hover{background:#ffffff12}.day-link.active{background:#fff;color:#203e33;font-weight:800}.day-num{font-size:.72rem;font-weight:850;letter-spacing:.04em}.day-dot{width:8px;height:8px;border-radius:50%;background:#ffffff38}.day-dot.some{background:#f0bd66}.day-dot.done{background:#91d7ae}
.sidebar-help{margin-top:auto;background:#ffffff0e;border:1px solid #ffffff18;border-radius:12px;padding:12px;font-size:.78rem;line-height:1.5;color:#dce9e3}.sidebar-help a{display:inline-block;margin-top:8px;text-decoration:underline}
.main{min-width:0}.topbar{position:sticky;top:0;z-index:35;height:var(--topbar);display:flex;justify-content:space-between;align-items:center;gap:18px;padding:10px 24px;background:#fffdf8ed;backdrop-filter:blur(14px);border-bottom:1px solid #d8d2c499}.topbar-left,.topbar-actions{display:flex;align-items:center;gap:10px;min-width:0}.page-title{font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.save-state{font-size:.75rem;color:var(--muted);white-space:nowrap}.save-state.ok{color:var(--forest)}
.content{max-width:1540px;margin:0 auto;padding:28px 30px 70px}.content.narrow{max-width:1150px}
.page-head{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:end;margin-bottom:22px}.page-head p{margin:8px 0 0;color:var(--muted)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.stack{display:grid;gap:16px}.section-gap{margin-top:20px}.sticky-tools{position:sticky;top:calc(var(--topbar) + 10px);z-index:20}
