:root{--bg:#0f172a;--card:#1e293b;--hover:#253350;--hdr:#334155;--border:#334155;
--t1:#f8fafc;--t2:#e2e8f0;--tm:#94a3b8;--td:#64748b;--blue:#3b82f6;--bl:#93c5fd;
--bd:#1e3a5f;--green:#22c55e;--gt:#4ade80;--amber:#f59e0b;--red:#ef4444;--rt:#f87171;
--purple:#a855f7;--cyan:#38bdf8;--orange:#f97316;--yellow:#fbbf24}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(--t2);min-height:100vh;font-size:13px}
.app-nav{display:flex;justify-content:space-between;align-items:center;padding:8px 24px;
    background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}
.nav-brand{color:var(--t1);text-decoration:none;font-weight:700;font-size:.95rem;display:flex;align-items:center;gap:8px}
.nav-logo{height:28px;width:auto}
.results-icon{height:24px;width:auto;vertical-align:middle;margin-right:2px}
.nav-links{display:flex;gap:16px}
.nav-links a{color:var(--tm);text-decoration:none;font-size:.82rem;padding:4px 8px;border-radius:6px;transition:all .15s}
.nav-links a:hover{color:var(--t1);background:var(--hover)}

/* Download buttons */
.guide-btn{background:var(--hover) !important;border-color:var(--blue) !important}

/* Detection summary */
.detection-box{background:var(--card);border:1px solid var(--blue);border-radius:10px;padding:14px 16px;margin:12px 0}
.detection-title{font-weight:700;font-size:.88rem;color:var(--blue);margin-bottom:8px}
.detection-items{display:flex;flex-wrap:wrap;gap:6px}
.det-item{background:var(--bg);padding:4px 10px;border-radius:6px;font-size:.8rem;color:var(--t2)}
.param-auto{font-size:.82rem;color:var(--td);padding:6px 0}
.container{max-width:900px;margin:0 auto;padding:48px 24px}
.container-wide{max-width:1700px;margin:0 auto;padding:24px 20px}
h1{font-size:2rem;font-weight:700;color:var(--t1);margin-bottom:6px}
h1.sm{font-size:1.4rem}
h2{font-size:.85rem;font-weight:600;color:var(--tm);text-transform:uppercase;letter-spacing:.08em;
   margin:28px 0 12px;border-bottom:1px solid var(--border);padding-bottom:5px}
.sub{color:var(--tm);margin-bottom:32px;font-size:.9rem}
.section-subtitle{font-size:.8rem;color:var(--ts);margin:-4px 0 12px;font-weight:400}
.section-note{font-size:.78rem;color:var(--tm);margin:-4px 0 14px;padding:8px 12px;background:#f0f7ff;border-left:3px solid var(--blue);border-radius:0 4px 4px 0;line-height:1.5}
a.back{display:inline-block;margin-bottom:16px;color:var(--blue);text-decoration:none;font-weight:500}
a.back:hover{text-decoration:underline}

.upload-hint{font-size:.75rem;color:var(--td)}
.file-name{margin-top:8px;color:var(--gt);font-weight:500;font-size:.85rem}

.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.card{background:var(--card);border:2px solid var(--border);border-radius:12px;padding:16px;
    cursor:pointer;transition:.2s;position:relative}
.card:hover{border-color:#475569;background:var(--hover)}
.card.selected{border-color:var(--blue);background:var(--bd)}
.card input[type="radio"]{position:absolute;opacity:0;pointer-events:none}
.card .card-icon{font-size:1.5rem;margin-bottom:6px}
.card .card-name{font-weight:600;font-size:.95rem;margin-bottom:4px}
.card .card-desc{font-size:.78rem;color:var(--tm);line-height:1.4}

.btn-primary{display:inline-block;margin-top:32px;padding:16px 48px;background:var(--blue);color:#fff;
    border:none;border-radius:12px;font-size:1.05rem;font-weight:600;cursor:pointer;transition:.2s;width:100%}
.btn-primary:hover{background:#2563eb}.btn-primary:disabled{background:#475569;cursor:not-allowed}
.note{margin-top:12px;font-size:.78rem;color:var(--td);font-style:italic}

.badges{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.badge{background:var(--hdr);border-radius:8px;padding:5px 14px;font-size:.8rem;color:var(--t2)}
.badge.obj{background:var(--bd);border:1px solid var(--blue)}
.badge.warn{background:#7c2d12;border:1px solid var(--orange)}

/* Baseline comparison banner */
.baseline-banner{display:flex;align-items:center;gap:16px;flex-wrap:wrap;
    background:var(--card);border-radius:12px;padding:18px 24px;margin-bottom:20px;
    border:1px solid var(--border)}
.bl-col{text-align:center;min-width:140px}
.bl-label{font-size:.7rem;color:var(--tm);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}
.bl-value{font-size:1.3rem;font-weight:700}
.bl-value.muted{color:var(--td)}
.bl-value.improved{color:#22c55e}
.bl-value.worsened{color:#ef4444}
.bl-arrow{font-size:1.4rem;color:var(--td)}
.bl-highlight{border-radius:10px;padding:10px 18px;border:1px solid var(--bd)}
.bl-good{background:rgba(34,197,94,0.08);border-color:#22c55e}
.bl-good .bl-value{color:#22c55e}
.bl-bad{background:rgba(239,68,68,0.08);border-color:#ef4444}
.bl-bad .bl-value{color:#ef4444}
.bl-pct{font-size:.85rem;font-weight:400;opacity:.7}

.summary-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-bottom:6px}
.summary-card{background:var(--card);border-radius:10px;padding:12px;border-left:4px solid var(--blue)}
.summary-card.green{border-color:var(--green)}.summary-card.amber{border-color:var(--amber)}
.summary-card.red{border-color:var(--red)}.summary-card.purple{border-color:var(--purple)}
.summary-card .label{font-size:.66rem;color:var(--tm);text-transform:uppercase;letter-spacing:.05em}
.summary-card .value{font-size:1.15rem;font-weight:700;margin-top:2px}
.pos{color:var(--gt)}.neg{color:var(--rt)}

.hist-box{background:var(--card);border-radius:10px;padding:14px 18px;margin-bottom:16px;display:flex;flex-wrap:wrap;gap:20px}
.hist-item{font-size:.8rem}.hist-item .k{color:var(--td);font-size:.7rem;text-transform:uppercase}
.hist-item .v{font-weight:600;color:var(--t2)}

.tabs{display:flex;gap:8px;margin-bottom:14px}
.tab{padding:7px 18px;border-radius:8px;border:1px solid var(--border);background:transparent;
    color:var(--tm);cursor:pointer;font-size:.8rem;font-weight:500;transition:.2s}
.tab.active{background:var(--hdr);color:var(--t1);border-color:var(--blue)}
.tab-content{display:none}.tab-content.active{display:block}
.chart-tab{display:none}.chart-tab.active{display:block}

.block{background:var(--card);border-radius:10px;margin-bottom:8px;overflow:hidden}
.block-header{display:flex;align-items:center;gap:10px;padding:10px 14px;flex-wrap:wrap}
.block-header:hover{background:var(--hover)}
.block-signal{font-weight:700;font-size:.82rem;min-width:85px;text-transform:uppercase}
.block-time{color:var(--tm);font-size:.78rem;min-width:240px}
.block-duration{background:var(--hdr);border-radius:5px;padding:2px 8px;font-size:.72rem;color:#cbd5e1}
.block-revenue{font-weight:700;font-size:.85rem;margin-left:auto}
.block-body{padding:0 14px 12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:6px;font-size:.78rem}
.block-item{background:var(--bg);border-radius:5px;padding:7px 10px}
.block-item .k{color:var(--td);font-size:.68rem;text-transform:uppercase}.block-item .v{font-weight:600;margin-top:1px}
.block-action{padding:3px 14px 10px;color:var(--tm);font-size:.78rem;font-style:italic}

.table-wrapper{overflow-x:auto;border-radius:10px;background:var(--card);max-height:65vh;overflow-y:auto}
#schedule table{width:100%;border-collapse:collapse;font-size:.73rem}
#schedule th{background:var(--hdr);color:var(--bl);padding:7px 5px;text-align:right;position:sticky;top:0;
    white-space:nowrap;font-weight:600;font-size:.66rem;text-transform:uppercase;letter-spacing:.04em;z-index:1}
#schedule th:first-child,#schedule th:nth-child(2){text-align:left}
#schedule td{padding:5px;text-align:right;border-bottom:1px solid #1a2332;white-space:nowrap}
#schedule td:first-child,#schedule td:nth-child(2){text-align:left}#schedule td:first-child{color:var(--tm)}
#schedule tr:nth-child(even){background:#162032}#schedule tr:hover{background:var(--bd)}
.action-cell{max-width:180px;white-space:normal;font-size:.65rem;color:var(--tm);line-height:1.2;overflow:hidden;text-overflow:ellipsis}
#schedule tfoot .schedule-totals{background:var(--hdr);border-top:2px solid var(--blue);position:sticky;bottom:0;z-index:1}
#schedule tfoot .schedule-totals td{padding:6px 5px;font-size:.75rem}

.sig-charge{color:var(--cyan);font-weight:600}.sig-discharge{color:var(--orange);font-weight:600}
.sig-idle{color:var(--td)}.sig-offline{color:var(--red);font-weight:600}
.sig-na{color:#475569}.sig-derated{color:var(--yellow);font-weight:600}
.sig-normal{color:var(--td)}.sig-dr_active{color:#a78bfa;font-weight:600}

.error-page{padding:40px}.error-page h2{color:var(--rt);border:none;margin-bottom:16px}
.error-page pre{background:var(--card);padding:20px;border-radius:10px;overflow-x:auto;font-size:.82rem;line-height:1.5}

/* Template download button */
.upload-row{display:flex;gap:10px;align-items:center}
.upload-row .upload-zone{flex:1}
.upload-zone{border:2px dashed var(--border);border-radius:10px;padding:16px 16px;text-align:center;
    position:relative;cursor:pointer;transition:border .2s,background .2s}
.upload-zone:hover,.upload-zone.dragover{border-color:var(--blue);background:var(--bd)}
.upload-zone input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer}
.upload-icon{font-size:1.3rem;margin-bottom:4px;display:inline}
.upload-text{font-size:.8rem;color:#cbd5e1;margin-bottom:2px;display:inline;margin-left:6px}
.upload-hint{font-size:.7rem;color:var(--td);margin-top:2px}
.download-btns{display:flex;gap:6px;flex-direction:row}
.template-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;
    background:var(--card);border:1px solid var(--border);border-radius:8px;padding:8px 10px;
    text-decoration:none;color:var(--tm);transition:.2s;min-width:72px;text-align:center}
.template-btn:hover{border-color:var(--blue);color:var(--bl);background:var(--bd)}
.template-icon{font-size:1rem;margin-bottom:2px}
.template-label{font-size:.6rem;font-weight:600;line-height:1.2}
.template-btn-inline{display:inline-block;margin-top:12px;padding:10px 24px;background:var(--bd);
    border:1px solid var(--blue);border-radius:8px;color:var(--bl);text-decoration:none;
    font-size:.85rem;font-weight:500;transition:.2s}
.template-btn-inline:hover{background:var(--blue);color:#fff}

/* Disabled cards (incompatible combos) */
.card.disabled{opacity:.3;cursor:not-allowed;pointer-events:none;border-color:var(--border);background:var(--card)}
.card.disabled:hover{border-color:var(--border);background:var(--card)}

/* Validation report page */
.val-section{border-radius:10px;margin-bottom:12px;overflow:hidden}
.val-section.val-error{background:#2d1215;border:1px solid var(--red)}
.val-section.val-warn{background:#2d2412;border:1px solid var(--amber)}
.val-section.val-info{background:#12202d;border:1px solid var(--blue)}
.val-section.compact{margin-bottom:8px}
.val-header{padding:12px 16px;font-weight:600;font-size:.88rem}
.val-error .val-header{color:var(--rt)}
.val-warn .val-header{color:var(--amber)}
.val-info .val-header{color:var(--bl)}
.val-item{padding:6px 16px;font-size:.82rem;color:var(--t2);border-top:1px solid rgba(255,255,255,.06)}
.val-section.compact .val-item{padding:4px 12px;font-size:.78rem}
.val-action{margin-top:24px;padding:20px;background:var(--card);border-radius:10px;text-align:center}
.val-action p{margin-bottom:12px;color:var(--tm)}

/* Data quality collapsible on results page */
.dq-report{margin-bottom:16px}
.dq-summary{cursor:pointer;padding:10px 16px;background:var(--card);border-radius:10px;
    font-size:.85rem;font-weight:500;color:var(--tm);display:flex;align-items:center;gap:8px;
    border:1px solid var(--border);list-style:none}
.dq-summary::-webkit-details-marker{display:none}
.dq-summary::before{content:'\25B6';font-size:.65rem;transition:.2s}
details[open] .dq-summary::before{transform:rotate(90deg)}
.dq-summary:hover{background:var(--hover);border-color:#475569}
.dq-badge{padding:2px 10px;border-radius:5px;font-size:.72rem;font-weight:600}
.dq-badge.dq-warn{background:#2d2412;color:var(--amber)}
.dq-badge.dq-info{background:#12202d;color:var(--bl)}

/* Optimization parameters */
.params-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.param-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px 16px}
.param-label{display:block;font-size:.78rem;font-weight:600;color:var(--t1);margin-bottom:8px}
.param-select{width:100%;padding:8px 12px;background:#0f172a;border:1px solid #334155;
    border-radius:6px;color:#e2e8f0;font-size:.82rem;cursor:pointer;appearance:auto}
.param-select:focus{border-color:var(--blue);outline:none}
.param-select option{background:#0f172a;color:#e2e8f0}
.param-hint{margin-top:6px;font-size:.7rem;color:var(--td);line-height:1.3}

/* Toggle switch */
.toggle{position:relative;display:inline-block;width:44px;height:24px;cursor:pointer}
.toggle input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;inset:0;background:var(--border);border-radius:24px;transition:.3s}
.toggle-slider::before{content:'';position:absolute;height:18px;width:18px;left:3px;bottom:3px;
    background:#fff;border-radius:50%;transition:.3s}
.toggle input:checked + .toggle-slider{background:var(--blue)}
.toggle input:checked + .toggle-slider::before{transform:translateX(20px)}

/* Spinner */
.spinner-row{display:flex;align-items:center;gap:10px;padding:16px;color:var(--tm);font-size:.88rem}
.spinner{width:20px;height:20px;border:3px solid var(--border);border-top:3px solid var(--blue);
    border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* Validation fix hints */
.val-fix{color:var(--td);font-size:.76rem;font-style:italic}

/* Checkbox group (multi-horizon) */
.checkbox-group{display:flex;flex-direction:column;gap:8px}
.checkbox-item{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.82rem;color:var(--t2);cursor:pointer}
.checkbox-item input{accent-color:var(--blue);width:16px;height:16px}
.checkbox-desc{width:100%;padding-left:22px;font-size:.72rem;color:var(--td);line-height:1.3;margin-top:-2px}

/* Horizon comparison cards */
.horizon-compare{margin-bottom:16px}
.horizon-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.horizon-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px}
.horizon-card.primary{border-color:var(--blue);background:var(--bd)}
.horizon-label{font-weight:700;font-size:.9rem;color:var(--t1);margin-bottom:8px;text-transform:capitalize}
.horizon-stat{display:flex;justify-content:space-between;font-size:.78rem;padding:2px 0}
.horizon-stat .k{color:var(--td)}.horizon-stat .v{color:var(--t2);font-weight:500}

/* Grid info panel */
.grid-info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px;padding:12px}
.gi-item{display:flex;justify-content:space-between;font-size:.8rem;padding:6px 10px;
    background:var(--bg);border-radius:5px}
.gi-item .k{color:var(--td)}.gi-item .v{color:var(--t2);font-weight:600}
.gi-item.warn{background:#2d2412;border:1px solid var(--amber)}
.gi-item.warn .v{color:var(--amber)}

/* Results header with export button */
.results-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.btn-export{background:var(--blue);color:#fff;border:none;padding:8px 16px;border-radius:8px;
    font-size:.82rem;font-weight:600;cursor:pointer;transition:opacity .2s}
.btn-export:hover{opacity:.85}

/* Scenario analysis */
.scenario-section{margin-bottom:16px}
.confidence-band{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:12px}
.cb-label{font-weight:700;font-size:.88rem;color:var(--t1);margin-bottom:10px}
.cb-bar-container{max-width:85%;margin:0 auto}
.cb-bar{display:flex;align-items:center;justify-content:space-between;
    background:linear-gradient(90deg,rgba(100,116,139,0.15),rgba(56,189,248,0.12),rgba(56,189,248,0.2));
    border-radius:20px;padding:6px 16px;margin-bottom:6px}
.cb-pes{color:#64748b;font-size:1.1rem}.cb-exp{color:var(--blue);font-size:1.2rem}.cb-opt{color:#38bdf8;font-size:1.1rem}
.cb-fill{flex:1}
.cb-labels{display:flex;justify-content:space-between;max-width:85%;margin:0 auto}
.cb-val{font-size:.85rem;font-weight:700}
.cb-val.exp{color:var(--blue)}.cb-tag{font-size:.7rem;color:var(--td)}

.scenario-table{width:100%;border-collapse:collapse;font-size:.82rem;min-width:500px}
.scenario-table th{text-align:right;padding:8px 12px;border-bottom:2px solid var(--border);color:var(--td);font-weight:600;white-space:nowrap}
.scenario-table th:first-child{text-align:left}
.scenario-table td{padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap;text-align:right}
.scenario-table td:first-child{text-align:left}
.sc-net{font-size:.88rem}
.row-opt{background:rgba(56,189,248,0.06)}.row-exp{background:rgba(56,189,248,0.03)}.row-pes{background:rgba(100,116,139,0.06)}

/* Revenue waterfall */
.waterfall{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:16px}
.wf-row{display:flex;align-items:center;gap:10px;padding:5px 0}
.wf-label{width:130px;font-size:.8rem;color:var(--t2);text-align:right}
.wf-bar-track{flex:1;height:18px;background:var(--bg);border-radius:4px;overflow:hidden}
.wf-total .wf-bar-track{height:24px}
.wf-bar{height:100%;border-radius:4px;transition:width .5s}
.wf-bar.pos{background:var(--green)}.wf-bar.neg{background:var(--red)}
.wf-bar.ref{background:rgba(100,116,139,0.25);border:1px dashed #64748b}
.wf-row.wf-ref{opacity:.65}
.wf-val.ref{color:#64748b;font-style:italic;font-size:.75rem}
.wf-bar-labeled{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;overflow:visible}
.wf-bar-text{font-size:.65rem;font-weight:700;color:#fff;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.5);
    padding:0 4px;overflow:hidden;text-overflow:ellipsis}
.wf-val{width:110px;font-size:.8rem;font-weight:600;text-align:right}
.wf-total{border-top:2px solid var(--border);margin-top:4px;padding-top:8px}
.wf-subtotal{border-top:1px dashed var(--border);margin-top:2px;padding-top:4px;opacity:.85}
.wf-subtotal .wf-bar{opacity:.6}
.wf-dual{display:flex;gap:0;overflow:visible}
.wf-dual .wf-bar{border-radius:0;overflow:visible}
.wf-dual .wf-bar:first-child{border-radius:4px 0 0 4px}
.wf-dual .wf-bar:last-child{border-radius:0 4px 4px 0}
.wf-bar-text-outside{font-size:.65rem;font-weight:700;white-space:nowrap;padding:0 4px;display:flex;align-items:center}
.wf-bar-text-outside.pos{color:var(--green,#16a34a)}
.wf-bar-text-outside.neg{color:var(--red,#dc2626)}
.wf-section-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:8px 0 2px 0}
.wf-section-label.revenue{color:#22c55e}
.wf-section-label.cost{color:#ef4444}

/* Note text */
.note{font-size:.76rem;color:var(--td);font-style:italic;margin-top:4px}

/* Mockup panel */
.mockup-wrapper{position:relative}
.mockup-btn{cursor:pointer;background:linear-gradient(135deg,#7c3aed,#6d28d9) !important;border-color:#7c3aed !important}
.mockup-btn:hover{filter:brightness(1.1)}
.mockup-dropdown{position:absolute;top:100%;right:0;margin-top:6px;background:#1e293b;border:1px solid #334155;
    border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.5);width:300px;z-index:500}
.mockup-dd-header{padding:10px 14px;font-size:.78rem;font-weight:700;color:#e2e8f0;border-bottom:1px solid #334155}
.mockup-dd-body{padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.mdd-label{font-size:.68rem;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.04em}
.mdd-select{width:100%;padding:6px 8px;border-radius:6px;border:1px solid #334155;background:#0f172a;color:#e2e8f0;
    font-size:.78rem;outline:none;appearance:auto}
.mdd-select:focus{border-color:#2563eb}
.mdd-input{width:100%;padding:6px 8px;border-radius:6px;border:1px solid #334155;background:#0f172a;color:#e2e8f0;
    font-size:.78rem;outline:none;box-sizing:border-box}
.mdd-input:focus{border-color:#2563eb}
.mdd-checks{display:flex;gap:10px;flex-wrap:wrap}
.mdd-check{font-size:.75rem;color:#cbd5e1;display:flex;align-items:center;gap:4px;cursor:pointer}
.mdd-check input{accent-color:#7c3aed}
.mdd-row{display:flex;gap:8px}
.mdd-field{flex:1}
.mdd-generate{margin-top:4px;padding:8px 14px;border:none;border-radius:8px;
    background:linear-gradient(135deg,#7c3aed,#6d28d9);color:#fff;font-size:.8rem;font-weight:600;
    cursor:pointer;transition:.15s;width:100%}
.mdd-generate:hover{filter:brightness(1.15)}
.mdd-status{font-size:.72rem;color:#94a3b8;text-align:center;min-height:16px}
.mdd-status.mdd-ok{color:#22c55e}

/* Grouped panels */
.panel{background:var(--card);border:1px solid var(--border);border-radius:12px;margin:16px 0;overflow:hidden}
.panel-header{padding:10px 16px;font-weight:700;font-size:.9rem;letter-spacing:.02em}
.battery-hdr{background:linear-gradient(135deg,#1e3a5f,#2563eb);color:#fff}
.grid-hdr{background:linear-gradient(135deg,#065f46,#059669);color:#fff}
.ancillary-hdr{background:linear-gradient(135deg,#7c3aed,#a855f7);color:#fff}
.panel .summary-cards{padding:0;gap:8px}
.panel-subgroup{padding:12px 14px 8px;border-bottom:1px solid var(--border)}
.panel-subgroup:last-child{border-bottom:none}
.panel-sublabel{font-size:.68rem;font-weight:700;color:var(--td);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}

/* Tooltips — uses JS for positioning to avoid overflow clipping */
.tip{position:relative;cursor:help}
.tip i{font-style:normal;font-size:.65rem;color:var(--td);margin-left:2px;opacity:.6}
.tip:hover i{opacity:1}
.tip::after{content:attr(data-tip);position:fixed;
    background:#f8fafc;color:#334155;padding:10px 14px;border-radius:8px;font-size:.74rem;font-weight:400;
    line-height:1.5;white-space:normal;width:320px;max-width:90vw;z-index:99999;pointer-events:none;
    opacity:0;transition:opacity .12s;box-shadow:0 4px 16px rgba(0,0,0,.12);border:1px solid #e2e8f0;
    left:-9999px;top:-9999px}
.tip:hover::after{opacity:1}

/* Prevent tooltips from being clipped by overflow containers */
.summary-card{overflow:visible}
.panel{overflow:visible}
.panel-subgroup{overflow:visible}

/* Engine table */
.engine-table td{position:relative}
.engine-table-wrap{overflow:visible !important}

/* Run badge */
.run-badge{background:var(--blue);color:#fff;padding:2px 8px;border-radius:6px;font-size:.7rem;
    vertical-align:middle;margin-left:8px}

/* History page */
.history-table{width:100%;border-collapse:collapse;font-size:.8rem}
.history-table th{text-align:left;padding:10px 8px;border-bottom:2px solid var(--border);
    color:var(--td);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.5px;
    position:sticky;top:0;background:#1e293b;z-index:2}
.history-table td{padding:8px;border-bottom:1px solid var(--border)}
.history-table tr:hover{background:rgba(56,189,248,0.04)}
.run-id{font-weight:700;color:var(--blue)}.run-date{color:var(--td);font-size:.75rem}
.run-file{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.actions-cell{white-space:nowrap}
.btn-sm{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;
    border:1px solid var(--border);border-radius:6px;text-decoration:none;font-size:.85rem;
    cursor:pointer;background:var(--card);margin:0 2px;transition:all .15s}
.btn-sm:hover{background:var(--blue);border-color:var(--blue)}
.btn-del{background:transparent;color:var(--red);border-color:var(--red)}
.btn-del:hover{background:var(--red);color:#fff}
.btn-view:hover{color:#fff}.btn-dl:hover{color:#fff}
.empty-state{text-align:center;padding:40px;color:var(--td);font-size:.9rem}
.empty-state a{color:var(--blue)}

/* ── Landing Page ── */
.landing-hero{text-align:center;padding:32px 0 20px}
.landing-logo{height:48px;width:auto;margin-bottom:8px}
.landing-title{font-size:1.6rem;font-weight:800;color:var(--t1);margin:0}
.landing-sub{font-size:.88rem;color:var(--td);margin-top:4px}

.action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:24px 0}
.action-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:20px 16px;
    text-decoration:none;color:var(--t1);transition:.2s;position:relative;cursor:pointer}
.action-card:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:0 4px 16px rgba(0,0,0,.3)}
.action-primary{border-color:var(--blue);background:linear-gradient(135deg,rgba(37,99,235,0.08),rgba(37,99,235,0.02))}
.action-primary:hover{background:linear-gradient(135deg,rgba(37,99,235,0.15),rgba(37,99,235,0.05))}
.action-disabled{opacity:.5;cursor:default;pointer-events:none}
.action-icon{font-size:1.5rem;margin-bottom:8px}
.action-name{font-size:.95rem;font-weight:700;margin-bottom:4px}
.action-desc{font-size:.72rem;color:var(--td);line-height:1.4}
.action-tag{position:absolute;top:12px;right:12px;font-size:.58rem;font-weight:700;padding:2px 8px;
    border-radius:4px;background:rgba(34,197,94,0.15);color:#22c55e;text-transform:uppercase;letter-spacing:.5px}
.action-tag.soon{background:rgba(100,116,139,0.15);color:#94a3b8}

.dash-section{margin-top:28px}
.dash-heading{font-size:1rem;font-weight:700;color:var(--t1);margin-bottom:12px}
.dash-sub{font-size:.85rem;font-weight:600;color:var(--t2);margin:16px 0 8px}
.dash-empty{text-align:center;padding:32px;color:var(--td);background:var(--card);border:1px dashed var(--border);border-radius:12px}

/* Activity cards */
.activity-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media(max-width:640px){.activity-grid{grid-template-columns:repeat(2,1fr)}}
.act-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px 16px;
    display:flex;align-items:center;gap:12px;transition:border-color .15s,transform .15s}
.act-card:hover{border-color:#334155;transform:translateY(-1px)}
.act-icon{font-size:1.4rem;width:40px;height:40px;display:flex;align-items:center;justify-content:center;
    border-radius:10px;background:rgba(30,41,59,0.7);flex-shrink:0}
.act-primary .act-icon{background:rgba(37,99,235,0.15)}
.act-revenue .act-icon{background:rgba(34,197,94,0.12)}
.act-savings .act-icon{background:rgba(251,191,36,0.12)}
.act-content{flex:1;min-width:0}
.act-val{font-size:1.15rem;font-weight:800;color:var(--t1);line-height:1.1}
.act-label{font-size:.66rem;color:var(--td);margin-top:2px;letter-spacing:.02em}

/* Recent runs table */
.runs-table-wrap{border-radius:10px;overflow:auto;border:1px solid var(--border);max-height:340px}
.runs-table thead{position:sticky;top:0;z-index:2}
.runs-table{width:100%;border-collapse:collapse;font-size:.8rem}
.runs-table th{background:#1e293b;color:#94a3b8;padding:8px 12px;font-size:.68rem;font-weight:700;
    text-transform:uppercase;letter-spacing:.06em;text-align:left;border-bottom:1px solid #334155}
.runs-table th.r,.runs-table td.r{text-align:right}
.runs-row{cursor:pointer;transition:background .1s}
.runs-row:hover{background:var(--hover)}
.runs-row:nth-child(even){background:rgba(30,41,59,0.3)}
.runs-row:nth-child(even):hover{background:var(--hover)}
.runs-table td{padding:8px 12px;border-bottom:1px solid rgba(51,65,85,0.3);color:var(--t2)}
.runs-table tr:last-child td{border-bottom:none}
.runs-id{font-weight:700;color:var(--blue)}
.runs-file{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.runs-scen{color:var(--td);font-size:.72rem}
.runs-scen-badge{background:rgba(37,99,235,0.1);color:#60a5fa;border:1px solid rgba(37,99,235,0.2);
    border-radius:4px;padding:2px 6px;font-size:.68rem;white-space:nowrap}
.runs-rev{font-weight:700}
.runs-sav{font-size:.75rem}

@media(max-width:700px){.action-grid{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.action-grid{grid-template-columns:1fr}}

/* Landing actions row */
.landing-actions{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap}
.btn-coming-soon{opacity:.4;cursor:not-allowed;pointer-events:none;position:relative}

/* Engine method selector */
.engine-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-bottom:16px}
.engine-card{cursor:pointer}
.engine-card input{display:none}
.engine-card-inner{background:#0f172a;border:2px solid #334155;border-radius:10px;padding:12px;
    transition:border-color .15s,box-shadow .15s}
.engine-card input:checked + .engine-card-inner{border-color:#2563eb;box-shadow:0 0 0 1px #2563eb,0 2px 8px rgba(37,99,235,0.2)}
.engine-card:hover .engine-card-inner{border-color:#475569}
.engine-name{font-weight:700;font-size:.85rem;color:#e2e8f0;margin-bottom:4px}
.engine-cat{display:inline-block;font-size:.6rem;padding:2px 6px;border-radius:4px;font-weight:600;
    text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
.engine-cat.exact{background:rgba(37,99,235,0.15);color:#60a5fa}
.engine-cat.robust{background:rgba(234,179,8,0.15);color:#fbbf24}
.engine-cat.benchmark{background:rgba(148,163,184,0.15);color:#94a3b8}
.engine-desc{font-size:.72rem;color:#94a3b8;line-height:1.4;margin-bottom:6px}
.engine-meta{font-size:.65rem;color:#64748b}

/* Engine comparison table */
.engine-table{width:100%;border-collapse:collapse;font-size:.82rem}
.engine-table th{background:#1e293b;color:#94a3b8;padding:8px 12px;text-align:left;font-size:.72rem;
    text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid #334155}
.engine-table td{padding:8px 12px;border-bottom:1px solid #1e293b}
.engine-table tr.engine-best{background:rgba(37,99,235,0.08)}
.engine-label{font-weight:600;color:#e2e8f0}
.engine-cat-badge{font-size:.62rem;padding:2px 6px;border-radius:4px;font-weight:600;text-transform:uppercase}
.engine-cat-badge.exact{background:rgba(37,99,235,0.15);color:#60a5fa}
.engine-cat-badge.robust{background:rgba(234,179,8,0.15);color:#fbbf24}
.engine-cat-badge.benchmark{background:rgba(148,163,184,0.15);color:#94a3b8}
.engine-cat-badge.error{background:rgba(239,68,68,0.15);color:#f87171}

/* Results Explained narrative */
.explain-section{background:#0f172a;border:1px solid #1e293b;border-radius:10px;margin:16px 0;overflow:hidden}
.explain-header{padding:12px 16px;font-size:.88rem;font-weight:700;color:#e2e8f0;cursor:pointer;
    list-style:none;display:flex;align-items:center;gap:8px}
.explain-header::-webkit-details-marker{display:none}
.explain-header::after{content:'▾';margin-left:auto;font-size:.7rem;color:#64748b;transition:.15s}
details.explain-section:not([open]) .explain-header::after{transform:rotate(-90deg)}
.explain-body{padding:0 16px 16px;color:#94a3b8;font-size:.82rem;line-height:1.65}
.explain-body p{margin:0 0 8px}
.explain-body p:last-child{margin-bottom:0}
.explain-body strong{color:#e2e8f0}

/* Chart engine selector bar */
.chart-engine-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#0f172a;
    border:1px solid #1e293b;border-radius:8px;margin-bottom:8px}
.chart-engine-label{font-size:.75rem;font-weight:600;color:#94a3b8}
.chart-engine-bar select{background:#1e293b;color:#e2e8f0;border:1px solid #334155;border-radius:6px;
    padding:4px 8px;font-size:.78rem;min-width:200px}
.chart-engine-bar select option{background:#0f172a;color:#e2e8f0}

/* Model indicator badge */
.model-badge{display:inline-block;font-size:.65rem;padding:2px 8px;border-radius:4px;
    background:rgba(37,99,235,0.12);color:#60a5fa;font-weight:600;margin-left:10px;
    vertical-align:middle;letter-spacing:.02em;border:1px solid rgba(37,99,235,0.25)}

/* Step 5 — Optimization Parameters redesign */
.opt-sections{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:700px){.opt-sections{grid-template-columns:1fr}}
.opt-group{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:0;overflow:visible}
.opt-group-label{padding:10px 16px;font-size:.78rem;font-weight:700;color:#e2e8f0;
    border-bottom:1px solid var(--border);letter-spacing:.02em}
.opt-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 16px;
    border-bottom:1px solid rgba(51,65,85,0.4)}
.opt-row:last-child{border-bottom:none}
.opt-lbl{font-size:.78rem;font-weight:600;color:var(--t2);min-width:120px;flex-shrink:0}
.opt-sel{padding:6px 10px;background:#0f172a;border:1px solid #334155;border-radius:6px;
    color:#e2e8f0;font-size:.78rem;flex:1;min-width:120px;max-width:220px}
.opt-sel:focus{border-color:var(--blue);outline:none}
.opt-sel option{background:#0f172a;color:#e2e8f0}
.opt-note{font-size:.68rem;color:var(--td);flex-basis:100%;padding-left:128px;margin-top:-2px}
.opt-toggle-row .toggle{flex-shrink:0}
.opt-auto-badge{font-size:.72rem;color:#94a3b8;background:#1e293b;border:1px solid #334155;
    border-radius:6px;padding:4px 10px}
.opt-checks{display:flex;gap:12px;flex:1}
.opt-check{display:flex;align-items:center;gap:5px;font-size:.78rem;color:var(--t2);cursor:pointer;
    background:#0f172a;border:1px solid #334155;border-radius:6px;padding:5px 10px;transition:.15s}
.opt-check:has(input:checked){border-color:var(--blue);background:rgba(37,99,235,0.08)}
.opt-check input{accent-color:var(--blue);width:14px;height:14px;margin:0}
.opt-check span{white-space:nowrap}

/* ── Performance Panels (compact row-based layout) ── */
.perf-panel{background:var(--card);border:1px solid var(--border);border-radius:12px;margin:12px 0;overflow:visible}
.perf-hdr{padding:10px 16px;font-weight:700;font-size:.88rem;letter-spacing:.02em;display:flex;align-items:center;gap:8px}
.perf-body{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--border)}
@media(max-width:640px){.perf-body{grid-template-columns:1fr}}
.perf-col{padding:0;border-right:1px solid rgba(51,65,85,0.3)}
.perf-col:last-child{border-right:none}
.perf-section-label{font-size:.62rem;font-weight:700;color:var(--td);text-transform:uppercase;
    letter-spacing:.1em;padding:6px 14px 3px;background:rgba(15,23,42,0.4)}
.perf-row{display:flex;align-items:baseline;justify-content:space-between;padding:4px 14px;
    border-bottom:1px solid rgba(51,65,85,0.2)}
.perf-row:last-child{border-bottom:none}
.perf-k{font-size:.72rem;color:var(--t2)}
.perf-v{font-size:.82rem;font-weight:700;color:var(--t1);text-align:right;white-space:nowrap}
.perf-hero{font-size:.95rem}
.perf-accent{color:#38bdf8}
.perf-warn{color:var(--amber)}
.perf-pos .perf-hero{color:var(--green)}
.perf-neg .perf-hero{color:var(--red)}
.perf-v.pos{color:var(--gt)}
.perf-v.neg{color:var(--rt)}
span.pos{color:var(--gt)}
span.neg{color:var(--rt)}
