:root{--bg:#0b1220;--panel:#0f172a;--panel2:#111827;--border:#1e293b;--text:#f8fafc;--muted:#94a3b8;--blue:#2563eb;--purple:#7c3aed;--green:#10b981;--orange:#f59e0b;--red:#ef4444}*{box-sizing:border-box}body{margin:0;background:linear-gradient(135deg,#060b14,#0b1220 45%,#111827);color:var(--text);font-family:Inter,Segoe UI,Arial,sans-serif}.app-shell{display:flex;min-height:100vh}.sidebar{width:285px;background:#08111f;border-right:1px solid var(--border);padding:22px;position:fixed;inset:0 auto 0 0}.brand{display:flex;gap:12px;align-items:center;margin-bottom:26px}.brand-icon{width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,var(--blue),var(--purple));display:grid;place-items:center;font-weight:800}.brand h1{margin:0;font-size:20px}.brand p,.eyebrow{margin:0;color:var(--muted);font-size:12px;letter-spacing:.06em;text-transform:uppercase}.nav-item{display:block;width:100%;margin:8px 0;padding:12px 14px;border:1px solid transparent;border-radius:12px;background:transparent;color:#cbd5e1;text-align:left;cursor:pointer}.nav-item:hover,.nav-item.active{border-color:#334155;background:#111827;box-shadow:0 0 0 1px rgba(37,99,235,.18)}.note-card{position:absolute;bottom:22px;left:22px;right:22px;border:1px solid rgba(245,158,11,.35);background:rgba(245,158,11,.08);border-radius:16px;padding:14px}.note-card span{display:block;margin-top:8px;color:#fcd58b;font-size:12px;line-height:1.45}.main{margin-left:285px;width:calc(100% - 285px);padding:22px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;background:rgba(15,23,42,.78);border:1px solid var(--border);border-radius:18px;padding:18px 20px;backdrop-filter:blur(12px)}h2,h3,h4{margin:0}.topbar h2{font-size:24px}.top-actions{display:flex;gap:10px}.btn{border:1px solid var(--border);border-radius:12px;padding:10px 14px;color:var(--text);background:#111827;cursor:pointer;text-decoration:none;font-weight:700}.btn:hover{transform:translateY(-1px);box-shadow:0 12px 30px rgba(0,0,0,.25)}.btn.primary{background:var(--blue);border-color:#3b82f6}.btn.success{background:rgba(16,185,129,.16);border-color:rgba(16,185,129,.45);color:#86efac}.btn.ghost{background:#0f172a}.btn:disabled,.disabled{opacity:.45;pointer-events:none}.grid{display:grid;gap:16px}.hero-grid{grid-template-columns:1.25fr .75fr}.config-grid{grid-template-columns:1fr 1fr;margin-top:16px}.visual-grid{grid-template-columns:1.35fr .65fr;margin-top:16px}.kpi-grid{grid-template-columns:repeat(4,1fr);margin-top:16px}.panel,.kpi{background:rgba(15,23,42,.92);border:1px solid var(--border);border-radius:18px;padding:18px;box-shadow:0 18px 44px rgba(0,0,0,.2)}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.status{border:1px solid var(--border);border-radius:999px;padding:6px 10px;font-size:12px}.status.ok{color:#86efac;border-color:rgba(16,185,129,.5);background:rgba(16,185,129,.1)}.status.muted{color:var(--muted)}.dropzone{position:relative;min-height:190px;border:1.5px dashed #334155;border-radius:18px;display:grid;place-items:center;background:radial-gradient(circle at center,rgba(37,99,235,.09),transparent 55%);cursor:pointer}.dropzone input{position:absolute;inset:0;opacity:0;cursor:pointer}.drop-content{text-align:center}.upload-icon{margin:0 auto 12px;width:60px;height:60px;border-radius:16px;background:#111827;border:1px solid #334155;display:grid;place-items:center;color:#60a5fa;font-weight:900}.drop-content p,.muted-text{color:var(--muted);font-size:13px}.workflow{display:grid;grid-template-columns:auto 1fr auto 1fr auto 1fr auto;align-items:center;gap:10px;margin-top:15px;color:#cbd5e1;font-size:12px}.workflow span{height:1px;background:#334155}.meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.meta-grid div,.source-box{border:1px solid var(--border);background:#111827;border-radius:14px;padding:12px}.meta-grid span,.kpi span{display:block;color:var(--muted);font-size:12px;margin-bottom:6px}.meta-grid b,.kpi b{font-size:18px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.form-grid.two{grid-template-columns:repeat(2,1fr)}label{display:block;color:#cbd5e1;font-size:12px}select,input[type=number]{width:100%;margin-top:6px;background:#08111f;border:1px solid #334155;border-radius:10px;color:var(--text);padding:10px}.checklist{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.checklist label{border:1px solid var(--border);background:#111827;border-radius:999px;padding:8px 12px}.kpi{padding:16px}.kpi b{font-size:26px}.plot-empty{height:640px;border:1px dashed #334155;border-radius:16px;display:grid;place-items:center;color:var(--muted);background:#0b1220}.plot-empty.small{height:380px}table{width:100%;border-collapse:collapse;margin-top:8px}th,td{padding:12px;border-bottom:1px solid var(--border);text-align:left;font-size:13px}th{color:#93c5fd;background:#111827}td{color:#dbeafe}.badge{border-radius:999px;padding:5px 9px;font-weight:800;font-size:11px}.badge.Excellent{background:rgba(16,185,129,.14);color:#86efac}.badge.Good{background:rgba(37,99,235,.14);color:#93c5fd}.badge.Review{background:rgba(245,158,11,.14);color:#fcd34d}@media(max-width:1100px){.sidebar{position:static;width:100%}.app-shell{display:block}.main{margin:0;width:100%}.hero-grid,.config-grid,.visual-grid,.kpi-grid{grid-template-columns:1fr}.topbar{display:block}.top-actions{margin-top:14px;flex-wrap:wrap}.form-grid,.form-grid.two{grid-template-columns:1fr}}


/* Step 04 verified layout fix: keep Plotly inside its grid columns and prevent page overflow */
.main{
  box-sizing:border-box;
  width:calc(100vw - 285px);
  max-width:calc(100vw - 285px);
  overflow-x:hidden;
}

.visual-grid{
  grid-template-columns:minmax(0, 1fr) minmax(320px, 0.42fr);
  align-items:start;
  gap:16px;
  overflow:hidden;
}

.visual-grid > .panel,
.log-panel,
#logPlot{
  min-width:0;
  max-width:100%;
  box-sizing:border-box;
}

#logPlot.plot-ready{
  display:block;
  border:0;
  background:#0b1220;
  overflow:hidden;
}

#logPlot .plot-container,
#logPlot .js-plotly-plot{
  max-width:100%;
}

@media(max-width:1100px){
  .main{width:100%;max-width:100%;overflow-x:hidden;}
  .visual-grid{grid-template-columns:1fr;}
}

/* Step 04 CO2 screening update: keep full-width Plotly layout, remove crossplot panel, add professional zone guide */
.step4-screening-grid{grid-template-columns:minmax(0,1.45fr) minmax(280px,.55fr);align-items:stretch}
.step4-info-panel{min-width:0}
.screening-legend{display:grid;gap:12px;margin-bottom:14px}
.screening-legend div{border:1px solid var(--border);background:rgba(17,24,39,.78);border-radius:14px;padding:12px;display:grid;grid-template-columns:18px 1fr;column-gap:10px;row-gap:3px;align-items:center}
.screening-legend small{grid-column:2;color:var(--muted);line-height:1.35}
.legend-chip{width:14px;height:14px;border-radius:999px;display:inline-block;box-shadow:0 0 0 3px rgba(255,255,255,.04)}
.legend-chip.co2{background:var(--green)}
.legend-chip.review{background:var(--orange)}
.legend-chip.poor{background:var(--red)}
.status-reason{border:0;cursor:pointer;font-family:inherit}
.status-reason:hover{filter:brightness(1.15);transform:translateY(-1px)}
.zone-reason-row td{background:rgba(37,99,235,.07);color:#cbd5e1;line-height:1.5;border-left:3px solid #3b82f6}
.poor-note,.badge.Poor{color:#fecaca;background:rgba(239,68,68,.14);border-radius:999px;padding:5px 9px;font-weight:800}
@media(max-width:1100px){.step4-screening-grid{grid-template-columns:1fr}}


/* Drake AI CCS polish: transparent logo, uploaded file label, professional dark Step 04/05 UI */
.logo-brand{justify-content:flex-start;margin-bottom:28px;padding:10px 8px;border:1px solid rgba(148,163,184,.16);border-radius:16px;background:linear-gradient(135deg,rgba(15,23,42,.75),rgba(2,6,23,.45))}
.brand-logo{width:210px;max-width:100%;height:auto;display:block;object-fit:contain;filter:drop-shadow(0 10px 22px rgba(0,0,0,.35))}
.topbar{background:linear-gradient(135deg,rgba(15,23,42,.96),rgba(2,8,23,.86));border-color:rgba(59,130,246,.22)}
.topbar h2{letter-spacing:-.02em;color:#f8fafc}
.uploaded-file-name{margin:10px auto 0;padding:8px 12px;border:1px solid rgba(16,185,129,.32);border-radius:999px;background:rgba(16,185,129,.09);color:#bbf7d0;font-weight:800;display:inline-block}
.step4-info-panel,.log-panel,#zones{background:linear-gradient(180deg,rgba(15,23,42,.96),rgba(3,7,18,.94));border-color:rgba(51,65,85,.95)}
.screening-legend div{background:linear-gradient(135deg,rgba(17,24,39,.96),rgba(2,6,23,.74));border-color:rgba(51,65,85,.9)}
.badge.Poor{background:rgba(239,68,68,.16);color:#fecaca;border:1px solid rgba(239,68,68,.35)}
.badge.Excellent{border:1px solid rgba(16,185,129,.35)}
.badge.Good{border:1px solid rgba(59,130,246,.35)}
.badge.Review{border:1px solid rgba(245,158,11,.35)}
.zone-reason-row td{background:linear-gradient(90deg,rgba(37,99,235,.10),rgba(15,23,42,.64));border-left:3px solid #3b82f6}
.zone-reason-row.poor-reason td{background:linear-gradient(90deg,rgba(239,68,68,.12),rgba(15,23,42,.64));border-left-color:#ef4444}
#zones table{border:1px solid rgba(51,65,85,.75);border-radius:14px;overflow:hidden;display:table}
#zones th{background:#07111f;color:#bfdbfe;text-transform:uppercase;letter-spacing:.04em;font-size:11px}

/* Final professional cleanup: no sidebar technical note, compact depth controls, no KPI strip */
.sidebar{padding-bottom:22px}
.depth-range-card{display:grid;grid-template-columns:repeat(2,minmax(140px,1fr)) auto auto;gap:10px;align-items:end;margin:0 0 12px 0;padding:12px;border:1px solid rgba(51,65,85,.9);border-radius:14px;background:linear-gradient(135deg,rgba(2,6,23,.72),rgba(15,23,42,.82))}
.depth-range-card label{font-weight:700;color:#cbd5e1}
.depth-range-card input{height:40px}
.depth-range-card .btn{height:40px;white-space:nowrap;padding:8px 12px}
#zones{overflow:auto}
#zones table{min-width:1040px}
@media(max-width:900px){.depth-range-card{grid-template-columns:1fr}.depth-range-card .btn{width:100%}}
