:root{--bg:#faf7f1;--surface:#ffffff;--ink:#1c2130;--muted:#6b7080;--line:#e5e0d5;--cobalt:#141a2e;--cobalt-ink:#f0ecdf;--ochre:#c98a1b;--ochre-soft:#f5e7cc;--green:#2c7a4b;--red:#a13b2e;--mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--serif:"Fraunces",Georgia,"Times New Roman",serif;--sans:"Geist",-apple-system,"Segoe UI",Helvetica,Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5}header.topbar{background:var(--cobalt);color:var(--cobalt-ink);padding:.9rem 1.5rem;display:flex;align-items:baseline;gap:2rem;flex-wrap:wrap}header.topbar .brand{font-family:var(--serif);font-size:1.15rem;font-weight:600;letter-spacing:.02em}header.topbar .brand span{color:var(--ochre)}header.topbar nav{display:flex;gap:1.2rem}header.topbar a{color:var(--cobalt-ink);text-decoration:none;opacity:.75;font-size:.92rem}header.topbar a:hover{opacity:1}main{max-width:1080px;margin:0 auto;padding:2rem 1.5rem 4rem}h1{font-size:1.7rem;margin:0 0 .4rem}h1,h2{font-family:var(--serif);font-weight:600}h2{font-size:1.2rem;margin:2rem 0 .7rem}p.lead{color:var(--muted);margin-top:0}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-gap:1rem;gap:1rem;margin:1.5rem 0}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1rem 1.2rem}.kpi .value{font-family:var(--mono);font-size:1.5rem;font-weight:600}.kpi .label{color:var(--muted);font-size:.85rem}table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}td,th{text-align:left;padding:.55rem .8rem;border-bottom:1px solid var(--line);vertical-align:top}th{background:var(--ochre-soft);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}tr:last-child td{border-bottom:none}.mono{font-family:var(--mono);font-size:.88rem}.muted{color:var(--muted)}.right{text-align:right}.badge{display:inline-block;font-size:.72rem;padding:.1rem .5rem;border-radius:99px;border:1px solid var(--line);background:var(--bg);white-space:nowrap}.badge.git{border-color:#b8c4e8;background:#eef1fb}.badge.claude{border-color:#e0c9a0;background:#f9f0dd}.badge.import{border-color:#cdc6b8;background:#f2efe7}.badge.pushed,.badge.reviewed{border-color:#b5d4c1;background:#e8f4ed;color:var(--green)}.badge.open{border-color:#e2c48f;background:#f9f0dd;color:#8a6210}form.inline{display:contents}input,select,textarea{font:inherit;color:inherit;border:1px solid var(--line);border-radius:6px;padding:.4rem .55rem;background:#fff;width:100%}input[type=number]{font-family:var(--mono)}textarea{resize:vertical;min-height:3.2rem}button{font:inherit;border:none;border-radius:6px;padding:.45rem .9rem;cursor:pointer;background:var(--cobalt);color:var(--cobalt-ink)}button:hover{opacity:.92}button.secondary{background:transparent;color:var(--ink);border:1px solid var(--line)}button.danger{background:transparent;color:var(--red);border:1px solid var(--red)}button.primary{background:var(--ochre);color:#fff}button:disabled{opacity:.45;cursor:not-allowed}.row{gap:.6rem}.row,.spread{display:flex;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between;gap:1rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1.2rem 1.4rem;margin:1rem 0}.notice{background:var(--ochre-soft);border:1px solid #e2c48f;border-radius:8px;font-size:.9rem}.error,.notice{padding:.7rem 1rem;margin:1rem 0}.error{background:#f9e5e1;border:1px solid #dfb0a6;color:var(--red);border-radius:8px}.login-wrap{min-height:70vh;display:flex;align-items:center;justify-content:center}.login-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:2.2rem;width:340px}.week-nav{display:flex;gap:.6rem;align-items:center;margin:1rem 0}.week-nav a{border:1px solid var(--line);border-radius:6px;padding:.3rem .7rem;text-decoration:none;color:var(--ink);background:var(--surface)}a{color:var(--cobalt)}details.block-edit summary{cursor:pointer;color:var(--muted);font-size:.85rem}.grid-form{display:grid;grid-template-columns:130px 90px 1fr;grid-gap:.6rem;gap:.6rem;align-items:start}.grid-form .full{grid-column:1/-1}