body{height:100vh;overflow:hidden;background:var(--canvas)}#portfolio-app{display:flex;flex-direction:column;height:100%;background:var(--surface)}.shell-header{flex:none;min-height:72px;display:flex;align-items:center;gap:12px;padding:12px 24px;background:var(--surface);border-bottom:1px solid var(--outline)}.shell-header h1,.detail-toolbar h2{margin:2px 0 0;font-size:21px;line-height:1.15}.eyebrow{color:var(--primary-ink);font-size:10px;font-weight:700;letter-spacing:.12em}.grow{flex:1}.snapshot-chip{padding:3px 8px;border:1px solid var(--outline);border-radius:var(--r-pill);color:var(--fg-4);font-size:10px}.snapshot-chip.live{border-color:var(--success);color:var(--success)}.account-name{max-width:180px;overflow:hidden;color:var(--fg-4);font-size:11px;text-overflow:ellipsis;white-space:nowrap}#signin{flex:1;min-height:0;align-content:center;justify-items:center;padding:32px;text-align:center}#signin[hidden]{display:none}#signin h2{margin:0 0 8px}#signin p{max-width:520px;margin:0 0 20px;color:var(--fg-4)}.primary{border-color:var(--primary);background:var(--primary);color:#fff}#portfolio-view{flex:1;min-height:0;overflow:auto;background:var(--well)}.summary-strip{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));background:var(--surface);border-bottom:1px solid var(--outline)}.summary-metric{padding:16px 20px;border-right:1px solid var(--outline-soft)}.summary-metric b{display:block;font-size:25px;line-height:1;color:var(--fg-1)}.summary-metric span{display:block;margin-top:6px;color:var(--fg-4);font-size:10px;letter-spacing:.08em}.summary-metric.danger b{color:var(--danger)}.portfolio-content{max-width:1480px;margin:0 auto;padding:24px}.section-head{display:flex;align-items:flex-end;gap:16px;margin-bottom:14px}.section-head h2{margin:0;font-size:18px}.section-head p{margin:4px 0 0;color:var(--fg-4)}.legend-inline{margin-left:auto;display:flex;align-items:center;gap:7px;color:var(--fg-4);font-size:11px}.legend-inline i{display:inline-block;width:20px;height:7px;border-radius:2px}.plan-key{background:var(--tertiary-variant)}.actual-key{background:var(--success)}.portfolio-timeline{border:1px solid var(--outline);border-radius:10px;overflow:hidden;background:var(--surface)}.portfolio-axis,.portfolio-row{display:grid;grid-template-columns:230px minmax(500px,1fr)}.portfolio-axis{min-height:50px;background:var(--surface-2);border-bottom:1px solid var(--outline)}.axis-label,.project-label{padding:10px 15px;border-right:1px solid var(--outline)}.axis-label{display:flex;flex-direction:column;justify-content:center;background:var(--secondary);color:#fff;font-weight:700}.axis-label small{color:var(--primary-ink);font-weight:500;margin-top:2px}.axis-track,.portfolio-track{position:relative;min-width:0;overflow:hidden}.axis-month{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;border-left:1px solid var(--outline);color:var(--fg-3);font-size:10px;font-weight:700}.portfolio-row{min-height:76px;border-bottom:1px solid var(--outline-soft);cursor:pointer}.portfolio-row:last-child{border-bottom:0}.portfolio-row:hover{background:var(--surface-2)}.project-label{display:flex;flex-direction:column;justify-content:center}.project-label b{font-size:14px}.project-label span{margin-top:4px;color:var(--fg-4);font-size:10px}.release-summary,.release-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.release-chip{display:inline-block;padding:2px 6px;border-radius:4px;background:var(--secondary);color:var(--primary-ink);font-size:9px;font-weight:700;letter-spacing:.03em;white-space:nowrap}.release-chip.v1-5{background:var(--primary);color:#fff}.release-chip.both{background:var(--secondary);color:#fff}.release-chip.v2{background:var(--tertiary-variant);color:#fff}.release-chip.phase-0,.release-chip.phase-1,.release-chip.phase-1-5,.release-chip.phase-2{background:var(--secondary);color:var(--primary-ink)}.release-chip.release{background:var(--sem-gate-fill);color:#fff;border-color:var(--sem-gate-line)}.release-list{margin-top:14px;padding-top:12px;border-top:1px solid var(--outline-soft)}.release-list>strong{color:var(--fg-4);font-size:9px;letter-spacing:.08em}.grid-line{position:absolute;top:0;bottom:0;width:1px;background:var(--grid-soft)}.today-line{position:absolute;top:0;bottom:0;width:1px;border-left:1px dashed var(--sem-today);z-index:2}.plan-bar{position:absolute;top:22px;height:30px;border-radius:5px;background:#5e80ed59;border:1px solid var(--tertiary-variant);overflow:hidden}.actual-fill{height:100%;background:var(--success);opacity:.9}.bar-label{position:absolute;inset:0;display:flex;align-items:center;padding:0 9px;color:#fff;font-size:11px;font-weight:600;white-space:nowrap}.product-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:16px}.product-card{min-width:0;padding:18px;background:var(--surface);border:1px solid var(--outline);border-radius:10px;cursor:pointer}.product-card:hover{border-color:var(--focus);transform:translateY(-1px)}.card-top{display:flex;align-items:flex-start;gap:12px}.card-top>div{flex:1;min-width:0}.card-top h3{margin:0;font-size:17px}.card-top p{margin:4px 0 0;color:var(--fg-4);font-size:11px}.health{margin-left:auto;padding:3px 8px;border-radius:var(--r-pill);background:#638c2a33;color:#a8d36c;font-size:10px;font-weight:700}.health.risk{background:transparent;border:1px solid var(--sem-warn-line);color:var(--sem-warn-ink)}.progress-pair{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:18px 0}.progress-pair>div{min-width:0}.progress-label{display:flex;justify-content:space-between;margin-bottom:6px;color:var(--fg-4);font-size:10px}.progress-label b{color:var(--fg-2);font-size:13px}.progress-track{height:7px;border-radius:4px;background:var(--grid-soft);overflow:hidden}.progress-track i{display:block;height:100%;background:var(--tertiary-variant)}.progress-track.actual i{background:var(--success)}.progress-help{display:block;margin-top:5px;color:var(--fg-5);font-size:10px;line-height:1.3}.card-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding-top:14px;border-top:1px solid var(--outline-soft)}.card-kpis b,.card-kpis span{display:block}.card-kpis b{font-size:16px}.card-kpis span{margin-top:3px;color:var(--fg-4);font-size:9px;letter-spacing:.04em}.card-kpis .danger{color:var(--danger)}.phase-list{margin-top:14px;padding-top:12px;border-top:1px solid var(--outline-soft)}.phase-list>strong{color:var(--fg-4);font-size:9px;letter-spacing:.08em}.phase-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}.phase-chips span{padding:4px 7px;border:1px solid var(--outline);border-radius:var(--r-pill);color:var(--fg-2);font-size:10px}.assumption-note{display:flex;gap:10px;margin-top:16px;padding:12px 14px;border-left:3px solid var(--primary);background:var(--surface);color:var(--fg-4);font-size:11px;line-height:1.5}.assumption-note strong{flex:none;color:var(--fg-2)}#detail-view{flex:1;min-height:0;display:flex;flex-direction:column}#detail-view[hidden]{display:none}.detail-toolbar{flex:none;display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid var(--outline)}.detail-toolbar>div:first-child{margin-right:auto}#ticket-search{width:190px}#detail-legend{flex:none;display:flex;gap:14px;min-height:34px;align-items:center;padding:7px 20px;background:var(--well);border-bottom:1px solid var(--outline-soft);color:var(--fg-4);font-size:11px}#detail-legend .detail-scope{color:var(--fg-2);font-weight:600}#detail-body{flex:1;min-height:0;display:flex}#chart{flex:1;min-width:0}#drawer{flex:none;width:392px;display:none;flex-direction:column;background:var(--surface-2);border-left:1px solid var(--outline);box-shadow:-8px 0 24px #0000007a}#drawer.on{display:flex}#drawer header{display:flex;align-items:center;gap:8px;padding:14px 18px 8px}#drawer .pad{padding:0 18px 18px;overflow:auto}#drawer h2{margin:4px 0 12px;font-size:18px}#drawer dl{display:grid;grid-template-columns:104px 1fr;margin:0;font-size:11px}#drawer dt,#drawer dd{margin:0;padding:7px 0;border-top:1px solid var(--grid-soft)}#drawer dt{color:var(--fg-4)}#drawer dd{color:var(--fg-2);word-break:break-word}#drawer footer{margin-top:auto;padding:14px 18px;border-top:1px solid var(--outline)}#drawer footer a{display:block;padding:9px;border-radius:var(--r-pill);background:var(--primary);color:#fff;text-align:center;font-weight:600}@media(max-width:820px){html,body,#portfolio-app{max-width:100%}body{overflow-y:auto;overflow-x:hidden;height:auto;min-height:100vh}#portfolio-app{min-height:100vh;overflow-x:hidden}.shell-header{flex-wrap:wrap;min-width:0;padding:12px;gap:8px}.shell-header>div:first-child{min-width:0}.shell-header h1{font-size:20px}.summary-strip{grid-template-columns:repeat(2,1fr)}.product-cards{grid-template-columns:1fr}.portfolio-content{width:100vw;max-width:100vw;padding:16px 12px;overflow:hidden}.section-head{align-items:flex-start}.legend-inline{display:none}.portfolio-timeline{width:100%;max-width:100%;min-width:0;overflow-x:auto}.portfolio-axis,.portfolio-row{min-width:760px}.product-cards{width:calc(100vw - 24px);max-width:calc(100vw - 24px)}.product-card{width:100%;max-width:100%;min-width:0;overflow:hidden}.card-top>div,.card-kpis>div{min-width:0}.progress-pair{grid-template-columns:1fr;gap:12px}.card-kpis{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:14px}.card-kpis span{font-size:9px}.shell-header>div:first-child{width:100%}.account-name{display:none}.detail-toolbar{flex-wrap:wrap}.detail-toolbar>div:first-child{width:100%}#drawer{position:fixed;inset:auto 0 0;z-index:50;width:100%;max-height:72vh}}.roadmap-tooltip{position:fixed;z-index:1000;max-width:min(380px,calc(100vw - 16px));padding:9px 12px;border:1px solid var(--outline);border-radius:6px;background:var(--surface-2);color:var(--fg-1);font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;box-shadow:0 4px 16px #0006;pointer-events:none}.health-note{color:var(--fg-4);font-size:11px;line-height:1.5}.progress-note{margin:8px 0 0;color:var(--fg-3);font-size:11px;line-height:1.4}.data-quality-note{color:var(--sem-warn-ink);font-size:11px;line-height:1.4}.fit-portfolio .portfolio-axis,.fit-portfolio .portfolio-row{min-width:0;grid-template-columns:minmax(110px,32%) minmax(0,1fr)}.fit-portfolio .bar-label{font-size:9px;white-space:normal;padding:0 3px}@media(max-width:820px){#detail-legend{flex-wrap:wrap;gap:8px 14px}}.load-error{padding:10px 20px;background:var(--surface-2);color:var(--danger);border-bottom:1px solid var(--danger)}#search-status:not(:empty){padding:6px 20px;color:var(--fg-3);font-size:11px}@media(max-width:820px){body{height:100dvh;min-height:0;overflow:hidden}#portfolio-app{height:100%;min-height:0}.shell-header .grow{display:none}.shell-header .snapshot-chip{margin-right:auto}.detail-toolbar{padding:10px 12px}.legend-inline{display:flex}.section-head{flex-wrap:wrap}.legend-inline{margin-left:0}}@media(max-width:599px){.ticket-label{display:grid!important;grid-template-columns:auto 1fr;gap:4px 6px!important;padding:6px 10px!important}.ticket-title{grid-column:1 / -1;grid-row:2;min-width:0;white-space:normal!important;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.ticket-label>span:last-child{justify-self:start}}
