.charter-shell{--font-sans:inherit;--fs-10:.75rem;--fs-11:.8125rem;--fs-12:.875rem;--fs-13:.875rem;--fs-14:.875rem;--fs-15:.9375rem;--fs-16:1rem;--fs-18:1.125rem;--fs-22:1.375rem;--fs-28:1.75rem;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-extrabold:800;--radius-xs:4px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-full:9999px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--blue-50:#eff5ff;--blue-100:#dbe7fe;--blue-200:#bfd4fe;--blue-300:#93b4fd;--blue-400:#608ffa;--blue-500:#3b82f6;--blue-600:#2563eb;--blue-700:#1d4ed8;--blue-800:#1e40af;--blue-900:#1e3a8a;--green-500:#10b981;--green-600:#059669;--green-400:#34d399;--amber-500:#f59e0b;--amber-600:#d97706;--amber-400:#fbbf24;--red-500:#ef4444;--red-600:#dc2626;--anim-fast:.13s ease;--anim-std:.24s cubic-bezier(.4,0,.2,1)}.charter-shell[data-theme=light]{--color-bg:#eef1f6;--color-surface:#fff;--color-surface-2:#f3f5f9;--color-surface-3:#e9edf4;--color-border:#dde2ec;--color-border-subtle:#eef1f6;--color-text:#161a23;--color-text-muted:#5a6478;--color-text-dim:#98a0b3;--color-primary:var(--blue-600);--color-primary-hover:var(--blue-700);--color-primary-soft:var(--blue-50);--color-on-primary:#fff;--color-ok:var(--green-600);--color-ok-soft:#e7f7f0;--color-na:var(--amber-600);--color-na-soft:#fdf3e3;--color-pending:#94a3b8;--color-danger:var(--red-600);--hover-row:#0f172a09;--shadow-sm:0 1px 2px #1018280f;--shadow-md:0 4px 14px #10182814;--shadow-lg:0 12px 32px #1018281f;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.charter-shell[data-theme=dark]{--color-bg:#0e1016;--color-surface:#171a24;--color-surface-2:#1f2331;--color-surface-3:#272c3d;--color-border:#2c3245;--color-border-subtle:#1c2030;--color-text:#e9ebf6;--color-text-muted:#8a92ad;--color-text-dim:#5a6280;--color-primary:var(--blue-400);--color-primary-hover:var(--blue-300);--color-primary-soft:#3b82f629;--color-on-primary:#0b1220;--color-ok:var(--green-400);--color-ok-soft:#10b98129;--color-na:var(--amber-400);--color-na-soft:#f59e0b26;--color-pending:#5b6580;--color-danger:var(--red-500);--hover-row:#ffffff06;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 16px #00000080;--shadow-lg:0 12px 36px #0009;--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.charter-shell,.charter-shell *{box-sizing:border-box}.charter-shell{background:var(--color-bg);color:var(--color-text);height:100%;min-height:0;font-family:inherit;font-size:var(--fs-14);-webkit-font-smoothing:antialiased;transition:background var(--anim-std), color var(--anim-std);line-height:1.5}.app-shell{flex-direction:column;height:100%;min-height:600px;display:flex}.topbar{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:var(--sp-3) var(--sp-6);align-items:center;gap:var(--sp-5);box-shadow:var(--shadow-sm);z-index:20;flex-shrink:0;display:flex}.topbar-logo{align-items:center;gap:var(--sp-3);flex-shrink:0;display:flex}.topbar-logo-mark{border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);background:#fff;flex-shrink:0;justify-content:center;align-items:center;padding:5px 7px;display:flex}.charter-shell[data-theme=dark] .topbar-logo-mark{box-shadow:0 0 0 1px #ffffff0f}.topbar-logo-mark svg{width:auto;height:26px;display:block}.topbar-title{font-size:var(--fs-15);font-weight:var(--fw-bold);letter-spacing:-.02em;line-height:1.15}.topbar-title span{color:var(--color-primary)}.topbar-divider{background:var(--color-border);flex-shrink:0;width:1px;height:30px}.topbar-project{flex:1;min-width:0}.topbar-project label{font-size:var(--fs-10);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-dim);margin-bottom:2px;display:block}.topbar-project input{font:var(--fw-semibold) var(--fs-16) var(--font-sans);color:var(--color-text);background:0 0;border:none;outline:none;width:100%;max-width:420px;padding:0}.topbar-project input::placeholder{color:var(--color-text-dim)}.topbar-stats{align-items:center;gap:var(--sp-2);flex-shrink:0;display:flex}.stat-pill{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--fs-12);font-weight:var(--fw-semibold);align-items:center;gap:6px;padding:5px 12px;display:flex}.stat-pill .dot{border-radius:50%;width:7px;height:7px}.dot-ok{background:var(--color-ok)}.dot-na{background:var(--color-na)}.dot-pending{background:var(--color-pending)}.icon-btn{border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-2);width:36px;height:36px;color:var(--color-text-muted);cursor:pointer;transition:all var(--anim-fast);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{color:var(--color-text);border-color:var(--color-text-dim);background:var(--color-surface-3)}.icon-btn svg{width:18px;height:18px}.theme-toggle .moon,.charter-shell[data-theme=dark] .theme-toggle .sun{display:none}.charter-shell[data-theme=dark] .theme-toggle .moon{display:block}.btn{border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-2);color:var(--color-text-muted);cursor:pointer;font:var(--fw-semibold) var(--fs-12) var(--font-sans);transition:all var(--anim-fast);white-space:nowrap;align-items:center;gap:6px;padding:8px 14px;display:inline-flex}.btn:hover{color:var(--color-text);border-color:var(--color-text-dim)}.btn svg{width:14px;height:14px}.stage-nav{background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:0 var(--sp-6);scrollbar-width:none;flex-shrink:0;gap:2px;display:flex;overflow-x:auto}.stage-nav::-webkit-scrollbar{display:none}.stage-tab{cursor:pointer;color:var(--color-text-muted);font-family:var(--font-sans);white-space:nowrap;transition:color var(--anim-fast), border-color var(--anim-fast);background:0 0;border:none;border-bottom:2px solid #0000;flex-direction:column;align-items:flex-start;min-width:112px;padding:13px 18px 11px;display:flex;position:relative}.stage-tab:hover{color:var(--color-text)}.stage-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.stage-tab-label{font-weight:var(--fw-bold);font-size:var(--fs-11);text-transform:uppercase;letter-spacing:.06em;margin-bottom:1px}.stage-tab-sub{font-size:var(--fs-11);opacity:.8}.stage-tab-progress{background:var(--color-ok);height:2px;transition:width var(--anim-std);border-radius:2px 2px 0 0;position:absolute;bottom:0;left:0}.stage-tab.is-overview .stage-tab-label{color:var(--color-primary)}.main{padding:var(--sp-6);gap:var(--sp-4);flex-direction:column;flex:1;display:flex;overflow-y:auto}.main::-webkit-scrollbar{width:8px}.main::-webkit-scrollbar-track{background:0 0}.main::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.toolbar{gap:var(--sp-2);flex-direction:column;display:flex}.filter-bar{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.filter-label{font-size:var(--fs-10);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-dim);flex-shrink:0;padding-right:2px}.filter-btn{border-radius:var(--radius-full);border:1px solid var(--color-border);color:var(--color-text-muted);cursor:pointer;font:var(--fw-semibold) var(--fs-12) var(--font-sans);transition:all var(--anim-fast);background:0 0;padding:6px 14px}.filter-btn:hover{border-color:var(--color-text-dim);color:var(--color-text)}.filter-btn.active{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary)}.disc-btn{border-radius:var(--radius-full);border:1px solid var(--color-border);color:var(--color-text-muted);cursor:pointer;font:var(--fw-semibold) var(--fs-12) var(--font-sans);transition:all var(--anim-fast);background:0 0;align-items:center;gap:6px;padding:5px 12px;display:flex}.disc-btn:hover{border-color:var(--color-text-dim);color:var(--color-text)}.disc-btn .disc-dot{border-radius:2px;flex-shrink:0;width:8px;height:8px}.filter-spacer{flex:1}.reset-btn{border-radius:var(--radius-md);border:1px solid var(--color-border);color:var(--color-text-muted);cursor:pointer;font:var(--fw-medium) var(--fs-12) var(--font-sans);transition:all var(--anim-fast);background:0 0;padding:6px 14px}.reset-btn:hover{border-color:var(--color-danger);color:var(--color-danger)}.search-wrap{flex:1;min-width:200px;max-width:360px;position:relative}.search-wrap svg{width:15px;height:15px;color:var(--color-text-dim);pointer-events:none;position:absolute;top:50%;left:11px;transform:translateY(-50%)}.search-input{border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);width:100%;color:var(--color-text);font:var(--fw-medium) var(--fs-13) var(--font-sans);transition:border-color var(--anim-fast);outline:none;padding:7px 12px 7px 32px}.search-input:focus{border-color:var(--color-primary)}.search-input::placeholder{color:var(--color-text-dim)}.stage-sticky{z-index:5;gap:var(--sp-2);padding-bottom:var(--sp-2);background:linear-gradient(to bottom, var(--color-bg) 85%, transparent);flex-direction:column;display:flex;position:sticky;top:0}.toolbar.compact,.toolbar.compact .filter-bar{gap:6px}.disc-scroll{scrollbar-width:thin;flex-wrap:nowrap;padding-bottom:2px;overflow-x:auto}.disc-scroll::-webkit-scrollbar{height:4px}.disc-scroll::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.disc-scroll .disc-btn{flex-shrink:0}.stage-overview{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-4) var(--sp-5);align-items:center;gap:var(--sp-5);box-shadow:var(--shadow-sm);flex-wrap:wrap;display:flex}.stage-overview.compact{padding:10px var(--sp-4);gap:var(--sp-4)}.stage-overview.compact .stage-overview-title h2{font-size:var(--fs-15)}.stage-overview.compact .count-item .num{font-size:var(--fs-18)}.stage-overview-title{flex:1;min-width:200px}.stage-overview-title h2{font-size:var(--fs-18);font-weight:var(--fw-bold);letter-spacing:-.02em}.stage-overview-title p{font-size:var(--fs-12);color:var(--color-text-muted);margin-top:3px}.stage-progress-bar-wrap{flex:2;min-width:220px}.stage-progress-labels{font-size:var(--fs-11);color:var(--color-text-dim);justify-content:space-between;margin-bottom:6px;display:flex}.progress-track{background:var(--color-surface-3);border-radius:var(--radius-full);height:9px;display:flex;overflow:hidden}.progress-fill-ok{background:var(--color-ok);height:100%;transition:width var(--anim-std)}.progress-fill-na{background:var(--color-na);height:100%;transition:width var(--anim-std)}.stage-overview-counts{gap:var(--sp-5);flex-shrink:0;display:flex}.count-item{text-align:center}.count-item .num{font-size:var(--fs-22);font-weight:var(--fw-extrabold);line-height:1}.count-item .lbl{font-size:var(--fs-10);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-dim);margin-top:3px}.num-ok{color:var(--color-ok)}.num-na{color:var(--color-na)}.num-pending{color:var(--color-text-muted)}.discipline-grid{gap:var(--sp-4);flex-direction:column;display:flex}@media (width>=1280px){.discipline-grid.cols-2{gap:var(--sp-4);grid-template-columns:1fr 1fr;align-items:start;display:grid}}.discipline-section{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.discipline-header{align-items:center;gap:var(--sp-3);cursor:pointer;-webkit-user-select:none;user-select:none;border-bottom:1px solid var(--color-border-subtle);transition:background var(--anim-fast);padding:13px 18px;display:flex}.discipline-header:hover{background:var(--color-surface-2)}.discipline-badge{border-radius:3px;flex-shrink:0;width:11px;height:11px}.discipline-name{font-weight:var(--fw-bold);font-size:var(--fs-13);flex:1}.discipline-sub-counts{align-items:center;gap:6px;display:flex}.mini-pill{font-size:var(--fs-11);font-weight:var(--fw-semibold);border-radius:var(--radius-full);padding:2px 9px}.mini-ok{background:var(--color-ok-soft);color:var(--color-ok)}.mini-na{background:var(--color-na-soft);color:var(--color-na)}.mini-pending{background:var(--color-surface-3);color:var(--color-text-muted)}.discipline-chevron{color:var(--color-text-dim);transition:transform var(--anim-fast);flex-shrink:0}.discipline-section.collapsed .discipline-chevron{transform:rotate(-90deg)}.discipline-body{transition:max-height var(--anim-std);overflow:hidden}.discipline-section.collapsed .discipline-body{max-height:0!important}.deliverable-list{padding:2px 0 6px;list-style:none}.deliverable-item{align-items:flex-start;gap:var(--sp-3);border-bottom:1px solid var(--color-border-subtle);transition:background var(--anim-fast);padding:9px 18px;display:flex}.deliverable-item:last-child{border-bottom:none}.deliverable-item:hover{background:var(--hover-row)}.deliverable-main{flex:1;min-width:0}.deliverable-task{font-size:var(--fs-13);color:var(--color-text);line-height:1.45}.deliverable-item.is-ok .deliverable-task{color:var(--color-text-muted);text-decoration:line-through;-webkit-text-decoration-color:color-mix(in srgb, var(--color-ok) 55%, transparent);-webkit-text-decoration-color:color-mix(in srgb, var(--color-ok) 55%, transparent);text-decoration-color:color-mix(in srgb, var(--color-ok) 55%, transparent)}.deliverable-item.is-na .deliverable-task{color:var(--color-text-dim);font-style:italic}.note-box{resize:vertical;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-2);width:100%;min-height:38px;color:var(--color-text);font:var(--fw-regular) var(--fs-12) var(--font-sans);outline:none;margin-top:8px;padding:7px 9px;display:none}.note-box:focus{border-color:var(--color-primary)}.deliverable-item.show-note .note-box{display:block}.has-note .note-toggle{color:var(--color-primary)}.status-group{flex-shrink:0;align-items:center;gap:6px;display:flex}.status-btn{border-radius:var(--radius-full);border:1px solid var(--color-border);cursor:pointer;font:var(--fw-semibold) var(--fs-11) var(--font-sans);color:var(--color-text-dim);transition:all var(--anim-fast);letter-spacing:.03em;background:0 0;align-items:center;gap:4px;padding:4px 11px;display:flex}.status-btn:hover{border-color:var(--color-text-muted);color:var(--color-text-muted)}.status-btn.active-ok{background:var(--color-ok-soft);border-color:color-mix(in srgb, var(--color-ok) 45%, transparent);color:var(--color-ok)}.status-btn.active-na{background:var(--color-na-soft);border-color:color-mix(in srgb, var(--color-na) 45%, transparent);color:var(--color-na)}.status-btn svg{width:11px;height:11px}.note-toggle{border-radius:var(--radius-sm);border:1px solid var(--color-border);width:28px;height:26px;color:var(--color-text-dim);cursor:pointer;transition:all var(--anim-fast);background:0 0;justify-content:center;align-items:center;display:flex}.note-toggle:hover{color:var(--color-text-muted);border-color:var(--color-text-muted)}.note-toggle svg{width:14px;height:14px}.empty-state{text-align:center;color:var(--color-text-dim);font-size:var(--fs-13);padding:30px}.dash-hero{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-6);align-items:center;gap:var(--sp-8);box-shadow:var(--shadow-sm);flex-wrap:wrap;display:flex}.dash-ring{flex-shrink:0;width:132px;height:132px;position:relative}.dash-ring svg{transform:rotate(-90deg)}.dash-ring-center{flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.dash-ring-center .pct{font-size:var(--fs-28);font-weight:var(--fw-extrabold);line-height:1}.dash-ring-center .lbl{font-size:var(--fs-10);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-dim);margin-top:3px}.dash-hero-info{flex:1;min-width:240px}.dash-hero-info h2{font-size:var(--fs-22);font-weight:var(--fw-bold);letter-spacing:-.02em}.dash-hero-info p{color:var(--color-text-muted);font-size:var(--fs-13);margin-top:4px}.dash-hero-counts{gap:var(--sp-6);margin-top:var(--sp-4);display:flex}.dash-hero-counts .num{font-size:var(--fs-18);font-weight:var(--fw-extrabold)}.dash-hero-counts .lbl{font-size:var(--fs-10);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-dim)}.dash-hero-dist{border-left:1px solid var(--color-border-subtle);min-width:260px;padding-left:var(--sp-6);flex-direction:column;flex:1;justify-content:center;align-self:stretch;gap:12px;display:flex}.dist-head{font-size:var(--fs-11);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-dim)}.dist-bar{border-radius:var(--radius-full);background:var(--color-surface-3);height:16px;display:flex;overflow:hidden}.dist-bar>div{height:100%;transition:width var(--anim-std)}.dist-legend{gap:var(--sp-5);flex-wrap:wrap;display:flex}.dist-legend .it{font-size:var(--fs-12);color:var(--color-text-muted);align-items:center;gap:7px;display:flex}.dist-legend .it b{color:var(--color-text);font-weight:var(--fw-bold)}.dist-legend .sw{border-radius:3px;flex-shrink:0;width:10px;height:10px}@media (width<=820px){.dash-hero-dist{border-left:none;border-top:1px solid var(--color-border-subtle);padding-left:0;padding-top:var(--sp-4);flex-basis:100%}}.dash-grid{gap:var(--sp-3);grid-template-columns:repeat(7,1fr);display:grid}@media (width<=1500px){.dash-grid{grid-template-columns:repeat(4,1fr)}}@media (width<=1040px){.dash-grid{grid-template-columns:repeat(3,1fr)}}@media (width<=720px){.dash-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=460px){.dash-grid{grid-template-columns:1fr}}.dash-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--sp-4);cursor:pointer;transition:all var(--anim-fast);box-shadow:var(--shadow-sm)}.dash-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.dash-card-top{justify-content:space-between;align-items:baseline;display:flex}.dash-card-stage{font-size:var(--fs-11);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.06em;color:var(--color-primary)}.dash-card-pct{font-size:var(--fs-18);font-weight:var(--fw-extrabold)}.dash-card-sub{font-size:var(--fs-13);font-weight:var(--fw-semibold);margin-top:2px}.dash-card-track{background:var(--color-surface-3);border-radius:var(--radius-full);height:7px;margin-top:12px;display:flex;overflow:hidden}.dash-card-meta{gap:var(--sp-3);font-size:var(--fs-11);color:var(--color-text-muted);margin-top:10px;display:flex}.dash-card-meta b{font-weight:var(--fw-bold)}.section-heading{font-size:var(--fs-12);font-weight:var(--fw-bold);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-dim);margin:var(--sp-2) 0 0}.analytics-wrap{gap:var(--sp-4);flex-direction:column;display:flex}.chart-row{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.chart-row.single{grid-template-columns:1fr}@media (width<=960px){.chart-row{grid-template-columns:1fr}}.chart-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:18px 20px}.chart-card h3{font-size:var(--fs-14);font-weight:var(--fw-bold);letter-spacing:-.01em;align-items:center;gap:8px;display:flex}.chart-card h3 .dot{border-radius:50%;flex-shrink:0;width:9px;height:9px}.chart-card .sub{font-size:var(--fs-12);color:var(--color-text-muted);margin-top:3px;margin-bottom:16px}.chart-canvas-wrap{height:300px;position:relative}.chart-canvas-wrap.tall{height:360px}.chart-fallback{text-align:center;color:var(--color-text-dim);font-size:var(--fs-13);padding:40px}@media print{.topbar-stats,.theme-toggle,.toolbar,.stage-nav,.icon-btn,.btn{display:none!important}.main{padding:0;overflow:visible}body,.app-shell{height:auto}.discipline-section.collapsed .discipline-body{max-height:none!important}.discipline-section,.stage-overview,.dash-card,.dash-hero{box-shadow:none;break-inside:avoid}}@media (width<=720px){.topbar{gap:var(--sp-3);flex-wrap:wrap}.topbar-project{flex-basis:100%;order:3}}
