/* ============================================================
   P.A.G.E. — screen layouts (upload / processing / dashboard)
   ============================================================ */

/* ---------- charts shared ---------- */
.chart{width:100%;height:auto;display:block}
.ax-lbl{font-family:'IBM Plex Mono',monospace;font-size:10px;fill:var(--grey);letter-spacing:.02em}
.pt-lbl{font-family:'IBM Plex Mono',monospace;font-size:10.5px;fill:var(--ink);font-weight:600}
.row-lbl{font-family:'Archivo',sans-serif;font-size:12px;fill:var(--ink);font-weight:600}
.serif-lbl{font-family:'Fraunces',serif;font-weight:600}

/* ============================================================
   UPLOAD
   ============================================================ */
.up-wrap{max-width:1120px;margin:0 auto;padding:44px 32px 72px;width:100%}
.up-head{max-width:760px}
.up-h1{font-family:'Fraunces',serif;font-weight:900;font-size:clamp(30px,4.4vw,46px);
  line-height:1.02;letter-spacing:-.02em;margin:12px 0 0}
.up-lede{font-family:'Fraunces',serif;font-style:italic;font-size:18px;color:var(--steel);
  margin-top:14px;max-width:60ch}
.up-grid{display:grid;grid-template-columns:1fr 348px;gap:26px;margin-top:30px;align-items:start}

.dropzone{border:2px dashed var(--line);background:var(--panel);border-radius:var(--r-lg);
  padding:38px 28px;text-align:center;cursor:pointer;transition:.2s;position:relative}
.dropzone:hover{border-color:var(--copper);background:var(--panel-2)}
.dropzone.over{border-color:var(--copper);background:#f6ead9;transform:scale(1.005)}
.dz-icon{display:flex;gap:6px;justify-content:center;align-items:flex-end;height:42px;margin-bottom:14px}
.dz-icon span{width:13px;border-radius:3px;background:var(--copper);opacity:.85}
.dz-icon span:nth-child(1){height:24px;opacity:.55}
.dz-icon span:nth-child(2){height:42px}
.dz-icon span:nth-child(3){height:32px;opacity:.7}
.dz-title{font-family:'Fraunces',serif;font-weight:600;font-size:21px;color:var(--ink)}
.dz-sub{font-size:13.5px;color:var(--grey);margin-top:5px}
.dz-sub u{color:var(--copper);cursor:pointer}
.dz-demo{margin-top:16px;background:var(--ink);color:var(--paper);border:none;cursor:pointer;
  font-size:11.5px;letter-spacing:.04em;padding:9px 16px;border-radius:20px;transition:.2s}
.dz-demo:hover{background:var(--copper)}

.file-list{display:flex;flex-direction:column;gap:9px;margin-top:16px}
.file-row{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:14px;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;
  box-shadow:var(--shadow-sm)}
.file-ic{flex:0 0 auto;width:44px;height:44px;border-radius:6px;background:var(--ink);color:var(--paper);
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;letter-spacing:.04em}
.file-name{font-weight:600;font-size:14.5px}
.file-sub{font-size:11px;color:var(--grey);margin-top:2px}
.file-agent{font-size:11.5px;color:var(--copper);background:var(--cream2);border:1px solid var(--line);
  border-radius:20px;padding:4px 11px;white-space:nowrap}
.file-x{width:28px;height:28px;border-radius:50%;border:1px solid var(--line);background:var(--panel);
  color:var(--grey);font-size:18px;line-height:1;cursor:pointer;transition:.2s}
.file-x:hover{background:var(--red);color:#fff;border-color:var(--red)}
.file-empty{padding:22px;text-align:center;color:var(--grey);font-size:12.5px;border:1px dashed var(--line);
  border-radius:var(--r)}

.preview{margin-top:16px;overflow:hidden}
.preview-top{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;
  border-bottom:1px solid var(--line);background:var(--panel-2)}
.preview-flag{font-size:11px;color:var(--red);font-weight:500}
.table-scroll{overflow-x:auto}
.ptable{width:100%;border-collapse:collapse;font-size:12.5px;min-width:560px}
.ptable th{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--grey);text-align:left;padding:10px 16px;border-bottom:1px solid var(--line);font-weight:600}
.ptable td{padding:9px 16px;border-bottom:1px solid var(--line-soft);color:var(--ink2)}
.ptable td.num{font-family:'IBM Plex Mono',monospace;text-align:right}
.ptable td.flag{color:var(--red);font-weight:600}
.ptable tr:last-child td{border-bottom:none}

/* right column */
.up-side{position:sticky;top:24px;display:flex;flex-direction:column;gap:14px}
.brief{padding:20px}
.fld{display:block;margin-top:12px}
.fld span{display:block;font-size:12px;color:var(--steel);font-weight:600;margin-bottom:5px}
.fld input{width:100%;font-family:'Archivo',sans-serif;font-size:14px;color:var(--ink);
  background:var(--panel-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 12px}
.fld input:focus{outline:none;border-color:var(--copper);background:#fff}
.objs{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.obj{display:flex;align-items:flex-start;gap:11px;text-align:left;background:var(--panel-2);
  border:1px solid var(--line);border-radius:var(--r-sm);padding:11px 13px;cursor:pointer;transition:.18s}
.obj:hover{border-color:var(--steel)}
.obj.sel{border-color:var(--copper);background:#f7ead9}
.obj-radio{flex:0 0 auto;width:15px;height:15px;border-radius:50%;border:2px solid var(--line);margin-top:2px;
  transition:.18s}
.obj.sel .obj-radio{border-color:var(--copper);background:var(--copper);box-shadow:inset 0 0 0 3px var(--panel-2)}
.obj b{display:block;font-size:13.5px;font-weight:600}
.obj small{display:block;font-size:11.5px;color:var(--grey);margin-top:1px}
.brief-stats{display:flex;justify-content:space-between;margin-top:18px;padding-top:14px;
  border-top:1px solid var(--line);font-size:11px;color:var(--grey);text-align:center}
.brief-stats b{display:block;font-family:'Fraunces',serif;font-size:20px;color:var(--ink);font-weight:900}
.conduct{justify-content:center;width:100%;font-size:15px;padding:15px}
.conduct-note{font-size:10.5px;color:var(--grey);text-align:center;letter-spacing:.02em}

/* ============================================================
   PROCESSING
   ============================================================ */
.proc{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 28px}
.proc-inner{width:100%;max-width:760px}
.proc-head{text-align:center}
.proc-h1{font-family:'Fraunces',serif;font-weight:900;font-size:clamp(26px,3.6vw,38px);
  letter-spacing:-.02em;margin:10px 0 8px;line-height:1.04}
.proc-lede{font-size:12px;color:var(--grey);letter-spacing:.04em}

.conductor{display:flex;align-items:center;justify-content:center;gap:22px;margin:30px 0 18px}
.baton-lg{width:84px;height:84px;border-radius:50%;background:var(--ink);position:relative;
  box-shadow:0 14px 30px -12px rgba(27,42,51,.6);flex:0 0 auto}
.baton-lg span{position:absolute;inset:0;margin:auto;width:46px;height:3px;background:var(--copper-lt);
  transform:rotate(-32deg);border-radius:3px;transform-origin:center}
.baton-lg::after{content:"";position:absolute;width:10px;height:10px;border-radius:50%;
  background:var(--copper-lt);top:18px;right:16px}
.baton-lg[data-spin="true"] span{animation:wave 1.5s ease-in-out infinite}
@keyframes wave{0%,100%{transform:rotate(-40deg)}50%{transform:rotate(-22deg)}}
.cond-pct{text-align:left}
.pct-num{font-family:'Fraunces',serif;font-weight:900;font-size:54px;line-height:1;color:var(--ink)}
.pct-sym{font-family:'Fraunces',serif;font-weight:600;font-size:24px;color:var(--copper);margin-left:2px}

.proc-bar{height:8px;background:var(--panel-2);border:1px solid var(--line);border-radius:20px;
  overflow:hidden;margin-bottom:22px}
.proc-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--copper),var(--copper-lt));
  border-radius:20px;transition:width .12s linear}

.staves2{display:flex;flex-direction:column;gap:10px}
.stave2{display:grid;grid-template-columns:128px 1fr 78px;align-items:center;gap:16px;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:13px 16px;
  transition:.25s;opacity:.6}
.stave2.play{opacity:1;border-color:var(--copper);box-shadow:var(--shadow-sm)}
.stave2.done{opacity:1}
.stave2-id{display:flex;align-items:center;gap:10px}
.stave2-id b{font-family:'Fraunces',serif;font-weight:900;font-size:24px;color:var(--copper);width:20px;text-align:center}
.stave2-id span{font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--steel);font-weight:600}
.stave2-task{font-size:12.5px;color:var(--steel);margin-bottom:8px}
.stave2-track{position:relative;height:18px;background:var(--panel-2);border-radius:20px;overflow:hidden}
.stave2-fill{position:absolute;left:0;top:0;height:100%;background:linear-gradient(90deg,rgba(181,113,43,.22),rgba(208,139,63,.32));
  transition:width .12s linear}
.stave2-note{position:absolute;top:50%;transform:translateY(-50%);font-size:9px;color:var(--ink);
  transition:opacity .2s;white-space:nowrap}
.stave2-status{font-family:'IBM Plex Mono',monospace;font-size:11px;text-align:right;color:var(--grey);font-weight:500}
.stave2.done .stave2-status{color:var(--green)}
.stave2.play .stave2-status{color:var(--copper)}
.proc-foot{text-align:center;margin-top:24px}
.proc-foot p{font-size:11.5px;color:var(--grey);max-width:48ch;margin:0 auto 14px;line-height:1.5}

/* ============================================================
   DASHBOARD
   ============================================================ */
.dash{max-width:1240px;margin:0 auto;padding:30px 32px 70px;width:100%}
.dash-bar{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;
  border-bottom:3px solid var(--ink);padding-bottom:20px}
.dash-title h1{font-family:'Fraunces',serif;font-weight:900;font-size:clamp(26px,3.4vw,38px);
  letter-spacing:-.02em;line-height:1;margin:8px 0 6px}
.dash-period{font-size:12px;color:var(--grey);letter-spacing:.03em}
.dash-actions{display:flex;gap:10px;flex-wrap:wrap}

/* scope switcher */
.dash-scope{display:flex;align-items:center;gap:14px;margin:18px 0 2px;flex-wrap:wrap}
.scope-switch{display:inline-flex;background:var(--panel-2);border:1px solid var(--line);
  border-radius:24px;padding:3px}
.scope-btn{font-family:'IBM Plex Mono',monospace;font-size:11.5px;letter-spacing:.03em;border:none;
  background:transparent;color:var(--steel);padding:7px 16px;border-radius:20px;cursor:pointer;
  transition:.16s;white-space:nowrap}
.scope-btn:hover{color:var(--ink)}
.scope-btn.on{background:var(--copper);color:#fff;box-shadow:0 6px 14px -8px rgba(181,113,43,.7)}
.scope-note{font-size:11px;color:var(--grey);letter-spacing:.02em}

.phase-chip{flex:0 0 auto;width:22px;height:22px;border-radius:5px;display:inline-flex;align-items:center;
  justify-content:center;font-size:11px;font-weight:600;color:#fff;letter-spacing:0}
.phase-chip[data-k="S"]{background:var(--copper)}
.phase-chip[data-k="C"]{background:var(--steel)}
.phase-chip[data-k="A"]{background:var(--green)}
.phase-chip[data-k="L"]{background:#8A6BA8}
.phase-chip[data-k="E"]{background:var(--ink)}

.kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:13px;margin:22px 0}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:15px 16px;
  box-shadow:var(--shadow-sm)}
.kpi-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.kpi-label{font-size:11.5px;color:var(--steel);font-weight:600;line-height:1.25}
.kpi-val{font-family:'Fraunces',serif;font-weight:900;font-size:27px;letter-spacing:-.01em;
  color:var(--ink);margin:8px 0 6px}
.kpi-foot{display:flex;flex-direction:column;gap:2px}
.kpi-delta{font-size:12px;font-weight:700}
.kpi-delta.pos{color:var(--green)}
.kpi-delta.neg{color:var(--red)}
.kpi-sub{font-size:10px;color:var(--grey)}

.dash-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:4px}
.panel{padding:0;overflow:hidden;display:flex;flex-direction:column}
.panel.span2{grid-column:span 2}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px 12px}
.panel-title{font-size:18px;font-weight:600;line-height:1.1}
.panel-tag{display:block;font-size:10.5px;color:var(--grey);letter-spacing:.04em;margin-top:3px}
.panel-body{padding:4px 18px 8px;flex:1;display:flex;flex-direction:column;justify-content:center}
.panel-foot{font-size:11px;color:var(--steel);padding:12px 18px;border-top:1px solid var(--line-soft);
  background:var(--panel-2);line-height:1.45}
.legend{display:flex;gap:18px;justify-content:center;font-size:11px;color:var(--steel);padding:4px 0 8px}
.legend span{display:flex;align-items:center;gap:7px}
.legend .sw{width:16px;height:3px;border-radius:2px;display:inline-block}
.legend .sw.swplan{display:inline-block;width:18px;height:3px;
  background:repeating-linear-gradient(90deg,var(--c2) 0 4px,transparent 4px 7px)!important;
  border-radius:0}

/* findings */
.findings{margin-top:36px}
.findings-head{display:flex;justify-content:space-between;align-items:baseline;gap:14px;
  border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:16px}
.findings-head h2{font-family:'Fraunces',serif;font-weight:900;font-size:24px;letter-spacing:-.01em}
.findings-head span{font-size:11px;color:var(--grey)}
.findings-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.finding{padding:18px 20px;border-left:4px solid var(--line);transition:.2s}
.finding[data-k="S"]{border-left-color:var(--copper)}
.finding[data-k="L"]{border-left-color:#8A6BA8}
.finding[data-k="E"]{border-left-color:var(--ink)}
.finding:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.finding-top{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.finding-tag{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--steel);font-weight:600}
.finding-impact{margin-left:auto;font-size:11px;color:var(--copper);font-weight:600;background:var(--cream2);
  border:1px solid var(--line);border-radius:20px;padding:3px 10px}
.finding-title{font-size:16.5px;font-weight:600;line-height:1.2;margin-bottom:7px}
.finding-body{font-size:13px;color:var(--steel);line-height:1.5}

/* forecast accuracy section */
.fc-section{margin-top:46px;padding-top:30px;border-top:3px solid var(--ink)}
.fc-band{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px}
.fc-band h2{font-family:'Fraunces',serif;font-weight:900;font-size:26px;letter-spacing:-.01em;margin-top:5px}
.fc-band-note{font-size:11px;color:var(--grey);letter-spacing:.03em}
.fc-kpis{grid-template-columns:repeat(4,1fr)!important;margin-top:0!important}
.fc-findings{margin-top:16px}

/* ---------- responsive ---------- */
@media(max-width:1080px){
  .kpi-row{grid-template-columns:repeat(3,1fr)}
  .up-grid{grid-template-columns:1fr}
  .up-side{position:static}
}
@media(max-width:860px){
  .dash-grid{grid-template-columns:1fr}
  .panel.span2{grid-column:span 1}
  .findings-grid{grid-template-columns:1fr}
  .kpi-row{grid-template-columns:repeat(2,1fr)}
  .fc-kpis{grid-template-columns:repeat(2,1fr)!important}
}
