:root{--bg:#f9f9f7;--surface:#fcfcfb;--ink:#0b0b0b;--ink-secondary:#52514e;--ink-muted:#898781;--hairline:#e1e0d9;--baseline:#c3c2b7;--border:#0b0b0b1a;--critical:#d03b3b;--good-text:#006300;--font-serif:georgia, "Times New Roman", times, serif;--font-sans:system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:ui-monospace, sfmono-regular, menlo, consolas, monospace}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);margin:0}.app{min-height:100vh}.top-bar{border-bottom:1px solid var(--hairline);background:var(--surface);flex-wrap:wrap;align-items:center;gap:1.25rem;padding:.75rem 1.5rem;display:flex}.wordmark{font-family:var(--font-serif);margin:0 auto 0 0;font-size:1.2rem;font-weight:400}.year-nav{align-items:center;gap:.25rem;display:flex}.year-nav button{color:var(--ink-secondary);cursor:pointer;background:0 0;border:none;padding:0 .4rem;font-size:1.1rem}.year-nav button:hover{color:var(--ink)}.year-value{font-family:var(--font-mono);font-size:.95rem}.segmented{border:1px solid var(--hairline);border-radius:6px;margin:0;padding:0;display:flex;overflow:hidden}.segmented button{font-family:var(--font-sans);color:var(--ink-secondary);cursor:pointer;background:0 0;border:none;padding:.35rem .8rem;font-size:.8rem;transition:background-color .15s ease-out}.segmented button+button{border-left:1px solid var(--hairline)}.segmented button:hover{background:var(--bg)}.segmented button.active{background:var(--ink);color:var(--surface)}.band-toggle{color:var(--ink-secondary);cursor:pointer;align-items:center;gap:.4rem;font-size:.8rem;display:flex}.band-toggle.disabled{opacity:.45;cursor:default}.print-button{border:1px solid var(--hairline);color:var(--ink-secondary);cursor:pointer;background:0 0;border-radius:6px;padding:.35rem .8rem;font-size:.8rem}.print-button:hover{background:var(--bg)}.loading,.load-error{text-align:center;color:var(--ink-secondary);padding:3rem}.load-error{color:var(--critical)}.workspace{grid-template-columns:minmax(0,1fr) 340px;gap:1.5rem;max-width:1400px;margin:0 auto;padding:1.5rem;display:grid}@media (width<=900px){.workspace{grid-template-columns:minmax(0,1fr)}}.wheel-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:1.5rem}.item-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;max-height:calc(100vh - 8rem);padding:1rem 1.25rem;overflow-y:auto}.item-group h3{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-secondary);align-items:center;gap:.5rem;margin:1rem 0 .4rem;font-size:.75rem;font-weight:600;display:flex}.item-group:first-child h3{margin-top:0}.item-group ul{margin:0;padding:0;list-style:none}.item-group li{border-bottom:1px solid var(--hairline);grid-template-columns:1.1rem minmax(0,1fr) auto;align-items:baseline;gap:.5rem;padding:.28rem 0;font-size:.82rem;display:grid}.item-group li:last-child{border-bottom:none}.item-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.item-title a{color:inherit}.item-dates{font-family:var(--font-mono);color:var(--ink-muted);white-space:nowrap;font-size:.68rem}.swatch{border-radius:3px;width:10px;height:10px;display:inline-block}.swatch-outline{border:1.5px solid var(--ink-secondary);background:0 0}.status-chip{font-family:var(--font-mono);text-align:center;font-size:.75rem}.status-done{color:var(--good-text)}.status-missed{color:var(--critical);font-weight:700}.status-planned{color:var(--ink-muted)}.artifact{text-align:center;max-width:860px;margin:0 auto;padding:3.5rem 2rem 4rem}.artifact-title{font-family:var(--font-serif);margin:0 0 .5rem;font-size:2.4rem;font-weight:400}.artifact-subtitle{font-family:var(--font-mono);color:var(--ink-muted);margin:0 0 2.5rem;font-size:.78rem}.voice-artifact .top-bar{background:0 0;border-bottom-color:#0000}.legend{color:var(--ink-secondary);justify-content:center;gap:1.5rem;margin:2.5rem 0 0;padding:0;font-size:.82rem;list-style:none;display:flex}.legend li{align-items:center;gap:.45rem;display:flex}.wheel-frame{max-width:760px;margin:0 auto;position:relative}.wheel-frame svg{width:100%;height:auto;display:block}.month-line{stroke:var(--hairline);stroke-width:1px}.month-label{font-family:var(--font-mono);letter-spacing:.08em;fill:var(--ink-muted);font-size:17px}.ring-track{fill:none;stroke:var(--hairline);stroke-width:1px}.ring-label{font-family:var(--font-sans);fill:var(--ink-secondary);paint-order:stroke;stroke:var(--surface);stroke-width:4px;font-size:16px}.mark{cursor:default}.window.mark-done{stroke-opacity:.62}.window.mark-planned{stroke-opacity:.26}.window.mark-missed{stroke-opacity:.5}.project{fill:none;stroke:var(--ink-secondary);stroke-width:1.3px}.project.mark-planned{stroke:var(--ink-muted)}.project.mark-missed{stroke:var(--critical)}.layer{transition:opacity .45s ease-out}.layer-projects[data-visible=false]{opacity:0;pointer-events:none}.wheel-frame[data-mode=operations] .layer-projects[data-visible=true]{opacity:.45}.wheel-frame[data-mode=compliance] .window.mark-planned{stroke-opacity:.14}.wheel-frame[data-mode=compliance] .dot.mark-planned{opacity:.45}.today-marker{stroke:var(--ink);stroke-width:1.5px;animation:4s ease-out infinite breath}@keyframes breath{0%{opacity:1}50%{opacity:.55}to{opacity:1}}@media (prefers-reduced-motion:reduce){.today-marker{animation:none}.layer,.segmented button{transition:none}}.center-year{font-family:var(--font-serif);fill:var(--ink);font-size:82px}.center-week{font-family:var(--font-mono);letter-spacing:.04em;fill:var(--ink-muted);font-size:21px}.center-tally{font-family:var(--font-sans);fill:var(--ink-secondary);font-size:22px}.wheel-tooltip{background:var(--surface);border:1px solid var(--border);pointer-events:none;text-align:left;z-index:2;border-radius:6px;flex-direction:column;gap:2px;width:max-content;max-width:240px;padding:.5rem .7rem;display:flex;position:absolute;box-shadow:0 2px 10px #0b0b0b14}.tooltip-title{font-size:.82rem;font-weight:600}.tooltip-dates{font-family:var(--font-mono);color:var(--ink-muted);font-size:.7rem}.wheel-tooltip .status-chip{text-align:left;font-size:.7rem}@media print{body{background:#fff}.chrome,.top-bar{display:none}.artifact{padding-top:1rem}.today-marker{animation:none}}
