:root{--page:#f6f8fb;--surface:#fff;--surface-soft:#f8fafc;--surface-tint:#eef6ff;--border:#dbe4ef;--border-strong:#c7d2e2;--text:#0f172a;--muted:#475569;--muted-strong:#334155;--primary:#2563eb;--primary-soft:#dbeafe;--success:#059669;--success-soft:#d1fae5;--warning:#d97706;--warning-soft:#fef3c7;--danger:#dc2626;--danger-soft:#fee2e2;--review:#0284c7;--review-soft:#e0f2fe;--purple:#7c3aed;--purple-soft:#ede9fe;--shadow:0 16px 40px #0f172a14;color:var(--text);background:var(--page);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{background:var(--page);margin:0}button{cursor:pointer;border:0;border-radius:999px;padding:.65rem 1rem;font-weight:800}button:focus-visible,a:focus-visible,summary:focus-visible,.project-card:focus-visible,.project-progress-row:focus-visible{outline-offset:3px;outline:3px solid #f59e0b}a{color:var(--primary)}summary{cursor:pointer;font-weight:900}.app-shell{max-width:1440px;margin:0 auto;padding:24px}.hero{border:1px solid var(--border);box-shadow:var(--shadow);background:linear-gradient(135deg,#fff,#eff6ff);border-radius:26px;justify-content:space-between;align-items:center;gap:1rem;padding:24px;display:flex}.hero h1{margin:4px 0 8px}.hero p:last-child{color:var(--muted-strong);margin-bottom:0}.eyebrow{color:var(--primary);text-transform:uppercase;letter-spacing:.12em;margin:0 0 6px;font-size:.78rem;font-weight:900}.view-switch{background:#e2e8f0;border-radius:999px;gap:4px;padding:4px;display:inline-flex}.view-switch button{color:var(--muted-strong);background:0 0}.view-switch button.active{background:var(--primary);color:#fff;box-shadow:0 8px 18px #2563eb38}.risk-banner,.sync-banner,.refresh-panel,.plain-guide,.projection-queues,.attention-group,.kanban-column,.anomalies,.queue-strip{background:var(--surface);border:1px solid var(--border);border-radius:20px;box-shadow:0 8px 24px #0f172a0d}.risk-banner{border-left:5px solid var(--warning);background:var(--warning-soft);margin:14px 0;padding:12px 16px}.risk-banner p{color:#78350f;margin:8px 0 0}.sync-banner{border-left:5px solid var(--primary);flex-wrap:wrap;align-items:center;gap:8px 14px;margin:14px 0;padding:12px 16px;display:flex}.sync-banner span,.sync-banner small{color:var(--muted-strong)}.sync-banner.fresh{border-left-color:var(--success);background:#f0fdf4}.sync-banner.aging{border-left-color:var(--warning);background:#fffbeb}.sync-banner.stale_cache{background:#fff7ed;border-left-color:#f97316}.sync-banner.failed_no_cache,.sync-banner.empty_success,.sync-banner.schema_error{border-left-color:var(--danger);background:#fff1f2}.freshness-pill{border-radius:999px;padding:3px 8px;font-weight:900;display:inline-block}.freshness-pill.fresh{background:var(--success-soft);color:#065f46}.freshness-pill.aging{background:var(--warning-soft);color:#92400e}.freshness-pill.stale_cache{color:#9a3412;background:#ffedd5}.freshness-pill.failed_no_cache,.freshness-pill.empty_success,.freshness-pill.schema_error{background:var(--danger-soft);color:#991b1b}.refresh-panel{border-left:5px solid var(--primary);margin:16px 0;padding:0}.refresh-panel summary{justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;list-style:none;display:flex}.refresh-panel summary::-webkit-details-marker{display:none}.projection-queues>details>summary::-webkit-details-marker{display:none}.plain-guide>details>summary::-webkit-details-marker{display:none}.refresh-panel summary span{gap:4px;display:grid}.refresh-panel summary small{color:var(--muted);font-weight:700}.refresh-panel details>div{border-top:1px solid var(--border);padding:16px}.refresh-panel h2{margin:0 0 8px}.refresh-panel dl{grid-template-columns:150px 1fr;margin:0}.refresh-panel.running{border-left-color:var(--warning)}.refresh-panel.succeeded{border-left-color:var(--success)}.refresh-panel.failed,.refresh-panel.static_unavailable{border-left-color:var(--danger)}.refresh-panel.rate_limited{border-left-color:#f97316}.refresh-button{background:var(--primary);color:#fff;min-width:128px}.refresh-button:disabled{color:var(--muted-strong);cursor:not-allowed;background:#cbd5e1}.refresh-error{color:#991b1b;margin:8px 0 0}.refresh-note{color:#7c2d12;margin:8px 0 0}.plain-guide{border-left:5px solid var(--success);margin:18px 0;padding:18px}.plain-guide>details[open]{grid-template-columns:minmax(260px,.85fr) minmax(320px,1.45fr);gap:18px;display:grid}.plain-guide>details>summary{grid-column:1/-1;justify-content:space-between;align-items:center;list-style:none;display:flex}.plain-guide>details>summary span{gap:4px;display:grid}.plain-guide h2{margin:0 0 8px}.plain-guide-main p:last-child{color:var(--muted-strong);margin:0;font-size:1.02rem;line-height:1.7}.plain-guide-notes{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.plain-guide-notes article{background:var(--surface-soft);border:1px solid var(--border);border-radius:16px;gap:6px;padding:12px;display:grid}.plain-guide-notes strong{color:#047857}.plain-guide-notes span{color:var(--muted-strong);line-height:1.55}.summary-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:18px 0;display:grid}.metric{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:14px;box-shadow:0 8px 20px #0f172a0a}.metric span{color:var(--muted);display:block}.metric strong{font-size:2rem}.queue-strip{grid-template-columns:minmax(180px,.3fr) 1fr;align-items:center;gap:14px;margin:14px 0 18px;padding:14px 16px;display:grid}.queue-strip h2{margin:0}.queue-strip-items{flex-wrap:wrap;gap:10px;display:flex}.queue-strip-items button{background:var(--surface-tint);color:#1e3a8a;border:1px solid #bfdbfe;align-items:center;gap:8px;display:inline-flex}.queue-strip-items strong{background:#fff;border-radius:999px;min-width:28px;padding:4px 8px}.projection-queues{margin:18px 0;padding:0}.projection-queues>details>summary{justify-content:space-between;align-items:center;padding:16px;display:flex}.projection-queues>details>summary span{gap:4px;display:grid}.projection-intro{color:var(--muted-strong);max-width:980px;margin:0;padding:0 16px 12px}.nested-details{border-top:1px solid var(--border);padding:12px 16px}.data-flow-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.data-flow-strip article{background:var(--surface-tint);border:1px solid #bfdbfe;border-radius:14px;gap:4px;padding:10px;display:grid}.data-flow-strip strong{color:#1d4ed8}.data-flow-strip span{color:var(--muted-strong);font-size:.9rem;line-height:1.45}.projection-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;padding:14px 16px 16px;display:grid}.projection-queue{background:var(--surface-soft);border:1px solid var(--border);border-left:5px solid var(--primary);border-radius:18px;min-width:0;padding:12px}.projection-queue:first-child{border-left-color:var(--warning)}.projection-queue:nth-child(3){border-left-color:var(--review)}.projection-queue:nth-child(4){border-left-color:#f97316}.projection-queue:nth-child(5){border-left-color:var(--danger)}.projection-queue:nth-child(6){border-left-color:var(--purple)}.projection-queue-title{justify-content:space-between;align-items:center;gap:10px;display:flex}.projection-queue-title h3{margin:0;font-size:1rem}.projection-queue-title strong{border:1px solid var(--border-strong);background:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:34px;padding:5px 8px;display:inline-flex}.projection-queue p{color:var(--muted);margin:8px 0;line-height:1.5}.projection-queue ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.projection-queue button{border:1px solid var(--border);color:inherit;text-align:left;background:#fff;border-radius:12px;gap:3px;width:100%;padding:10px;display:grid}.projection-queue button:hover{border-color:var(--primary)}.projection-queue span,.projection-queue small{overflow-wrap:anywhere}.projection-queue small{color:var(--muted)}.attention-list{gap:12px;min-width:0;display:grid}.attention-group{min-width:0;padding:12px}.attention-group h3{margin:0 0 10px}.empty-group,.empty-column,.empty-anomalies{color:var(--muted);margin:0}.empty-column,.empty-anomalies{border:1px dashed var(--border-strong);background:var(--surface-soft);border-radius:14px;padding:12px}.kanban-heading{margin-top:24px}.scroll-hint{background:var(--primary-soft);color:#1d4ed8;white-space:nowrap;border:1px solid #bfdbfe;border-radius:999px;padding:8px 12px;font-size:.9rem}.kanban-columns{scrollbar-color:var(--primary) #dbeafe;grid-template-columns:repeat(8,minmax(260px,1fr));gap:12px;padding:0 2px 12px;display:grid;overflow-x:auto}.kanban-columns:after{content:"";width:1px}.kanban-column{min-height:360px;padding:12px}.view-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin:20px 0 12px;display:flex}.view-heading h2{margin-bottom:4px}.view-heading p{color:var(--muted);margin-top:4px}.view-heading>span{background:var(--primary-soft);color:#1e40af;white-space:nowrap;border:1px solid #bfdbfe;border-radius:999px;padding:8px 12px}.progress-legend{grid-template-columns:repeat(7,minmax(132px,1fr));gap:8px;margin:0 0 14px;padding:0 0 8px;display:grid;overflow-x:auto}.progress-legend li{background:var(--surface);border:1px solid var(--border);border-radius:14px;gap:2px;min-width:132px;padding:10px;list-style:none;display:grid}.progress-legend strong{background:var(--primary);color:#fff;border-radius:999px;justify-content:center;align-items:center;width:24px;height:24px;display:inline-flex}.progress-legend small{color:var(--muted)}.project-progress-list{gap:10px;display:grid}.project-progress-row{background:var(--surface);border:1px solid var(--border);border-left:6px solid var(--success);color:inherit;font:inherit;text-align:left;border-radius:18px;grid-template-columns:minmax(220px,1.15fr) minmax(280px,.9fr) minmax(220px,1fr);gap:14px;width:100%;padding:12px 14px;display:grid;box-shadow:0 10px 24px #0f172a0d}.project-progress-row:hover{border-color:var(--primary);border-left-color:var(--primary);transform:translateY(-1px)}.project-progress-row.blocked{border-left-color:var(--danger)}.project-progress-row.decision{border-left-color:var(--warning)}.project-progress-row.externalWait{border-left-color:#f97316}.project-progress-row.reviewRelease{border-left-color:var(--review)}.project-progress-main h3{margin:6px 0 4px}.project-progress-main p{color:var(--muted-strong);margin:0}.project-progress-status{align-content:center;gap:8px;display:grid}.delivery-chip{background:var(--primary-soft);color:#1d4ed8;border:1px solid #bfdbfe;border-radius:999px;justify-self:start;padding:5px 9px;font-size:.86rem;font-weight:900}.progress-rail{grid-template-columns:repeat(7,1fr);align-items:center;gap:6px;min-width:0;display:grid}.progress-step{border:1px solid var(--border-strong);background:#eef2f7;border-radius:999px;justify-content:center;align-items:center;height:30px;display:flex;position:relative}.progress-step:before{background:var(--border-strong);content:"";height:2px;position:absolute;top:50%;left:calc(-50% - 3px);right:calc(50% + 15px);transform:translateY(-50%)}.progress-step:first-child:before{display:none}.progress-step span{z-index:1;background:#fff;border-radius:999px;justify-content:center;align-items:center;width:22px;height:22px;display:inline-flex;position:relative}.progress-step.done,.progress-step.done:before{border-color:var(--success);background:#a7f3d0}.progress-step.current{border-color:var(--primary);background:#bfdbfe;box-shadow:0 0 0 3px #2563eb1f}.progress-step.blocked-step{border-color:var(--danger);background:#fecaca;box-shadow:0 0 0 3px #dc26261f}.project-progress-meta{align-content:center;margin:0}.project-progress-meta dd{word-break:break-word}.next-preview{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.kanban-column small{color:var(--muted);display:block}.kanban-column.unknown{border-color:var(--warning)}.project-card{text-align:left;width:100%;min-width:0;color:inherit;font:inherit;background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-bottom:10px;padding:12px;display:block}.project-card:hover{border-color:var(--primary)}.project-card h3,.project-card p,.project-card dd,.project-card .badges span{overflow-wrap:anywhere;word-break:break-word}.project-card.compact h3{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:8px 0 6px;display:-webkit-box;overflow:hidden}.project-card.compact p{color:var(--muted-strong);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.project-card.compact dl{border-top:1px solid var(--border);grid-template-columns:78px 1fr;margin:10px 0 0;padding-top:8px}.project-card.compact dt:nth-of-type(n+5),.project-card.compact dt:nth-of-type(n+5)+dd{display:none}.badges{flex-wrap:wrap;gap:6px;display:flex}.badges span{background:var(--surface-soft);border:1px solid var(--border);color:var(--muted-strong);border-radius:999px;padding:4px 8px;font-size:.78rem}.badges .stale{background:var(--purple-soft);color:#5b21b6;border-color:#c4b5fd}.badges .anomaly{background:var(--danger-soft);color:#991b1b;border-color:#fecaca}dl{color:var(--muted-strong);grid-template-columns:90px 1fr;gap:4px 8px;display:grid}dt{color:var(--muted)}.anomalies{margin-top:24px;padding:16px}.anomaly-row{border-top:1px solid var(--border);gap:6px;padding:12px 0;display:grid}.anomaly-row code,pre{white-space:pre-wrap;color:#075985;background:#f1f5f9;border-radius:12px;padding:12px}.drawer-backdrop{z-index:20;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);box-sizing:border-box;background:#0f172a61;justify-content:flex-end;padding:24px;display:flex;position:fixed;inset:0}.drawer{background:var(--surface);border:1px solid #bfdbfe;border-radius:24px;width:min(560px,100vw - 48px);padding:24px;overflow-y:auto;box-shadow:0 24px 90px #0f172a59}.close{float:right;color:var(--text);background:#e2e8f0}.drawer-top-summary,.drawer-section,.decision-card{border:1px solid var(--border);border-radius:18px;margin:16px 0;padding:16px}.drawer-top-summary{background:var(--surface-tint);border-color:#bfdbfe;gap:12px;display:grid}.drawer-top-summary button,.decision-card button{background:var(--primary);color:#fff;justify-self:start}.drawer-section>summary{margin:-4px 0 10px}.next-step-section{background:var(--surface-tint);border-color:#bfdbfe}.explanation-section{background:#fffbeb;border-color:#fde68a}.timeline-section{background:#f0fdf4;border-color:#bbf7d0}.timeline-section ol{gap:10px;margin:0;padding-left:20px;display:grid}.timeline-section li{border-top:1px solid var(--border);padding-top:10px}.timeline-section li:first-child{border-top:0;padding-top:0}.timeline-section time,.timeline-section span{color:var(--muted);margin-top:2px;font-size:.82rem;display:block}.timeline-section p{overflow-wrap:anywhere;margin:6px 0}.source-section{background:var(--surface-soft)}.helper-text{color:var(--muted);margin-top:-4px}.option-buttons{flex-wrap:wrap;gap:8px;display:flex}.warning{color:#92400e}.copy-feedback{background:var(--success-soft);color:#065f46;border:1px solid #6ee7b7;border-radius:12px;padding:10px 12px}footer{color:var(--muted);margin:32px 0}@media (width<=767px){.app-shell{padding:12px}.hero{flex-direction:column;align-items:flex-start}.view-switch{width:100%}.view-switch button{flex:1}.sync-banner{flex-direction:column;align-items:flex-start}.refresh-panel summary{flex-direction:column;align-items:stretch;gap:12px}.plain-guide,.queue-strip,.plain-guide-notes,.data-flow-strip{grid-template-columns:1fr}.refresh-panel details>div{min-width:0}.refresh-panel dl{grid-template-columns:1fr;gap:2px 0}.refresh-panel dd{overflow-wrap:anywhere;margin:0 0 8px}.refresh-button{width:100%;min-width:0}.kanban-columns{display:block}.view-heading{flex-direction:column}.progress-legend{grid-template-columns:repeat(7,minmax(118px,1fr))}.project-progress-row{grid-template-columns:1fr;padding:12px}.progress-rail{grid-template-columns:repeat(7,minmax(42px,1fr));width:100%;min-width:0;overflow-x:auto}.drawer-backdrop{align-items:flex-end;padding:0}.drawer{box-sizing:border-box;border-radius:24px 24px 0 0;width:100%;max-height:88vh}}
