/* ===================================================================
   FootTrack Pro — "Precision Measurement Console"
   Industrial / IE-engineering aesthetic: engineering-paper light theme,
   faint blueprint grid, IBM Plex type, monospace instrument readouts,
   hi-vis safety-amber accent, dark video viewport.
   Class & CSS-var names preserved for the existing JS.
   =================================================================== */
*{margin:0;padding:0;box-sizing:border-box}

:root{
  /* type */
  --sans:'IBM Plex Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;
  --disp:'IBM Plex Sans Condensed','IBM Plex Sans',sans-serif;

  /* surfaces (light, engineering paper) */
  --bg:#E8EBEF;            /* inset wells (tracks, chips) */
  --paper:#EBEDF1;         /* app canvas */
  --surface:#FFFFFF;       /* sidebar / topbar */
  --card:#FFFFFF;
  --card-h:#F1F4F7;        /* hover / secondary surface */
  --border:#D6DCE3;
  --border-s:#E7EBF0;

  /* ink */
  --t1:#161A20;            /* primary text */
  --t2:#5B6471;            /* secondary */
  --tm:#9AA2AD;            /* muted / labels */

  /* brand + status (viz-safe on both white cards and dark video) */
  --accent:#E0590B;        /* hi-vis safety amber — primary action / active */
  --accent-d:#C24A05;
  --blue:#2563EB;--purple:#7C3AED;--green:#16A34A;--yellow:#D97706;--red:#DC2626;--orange:#F97316;

  /* sub-process coding */
  --cut:#2563EB;--sew:#7C3AED;--stk:#D97706;--asm:#0D9488;

  --shadow:0 1px 2px rgba(20,24,31,.05), 0 10px 30px -18px rgba(20,24,31,.35);
  --shadow-lg:0 2px 4px rgba(20,24,31,.06), 0 24px 48px -24px rgba(20,24,31,.4);
}

html,body{height:100%}
body{
  font-family:var(--sans);background:var(--paper);color:var(--t1);
  display:flex;height:100vh;overflow:hidden;font-size:13px;line-height:1.45;
  -webkit-font-smoothing:antialiased;letter-spacing:-.005em;
  /* faint blueprint grid */
  background-image:
    linear-gradient(rgba(35,55,90,.035) 1px,transparent 1px),
    linear-gradient(90deg,rgba(35,55,90,.035) 1px,transparent 1px);
  background-size:26px 26px;
}
::selection{background:rgba(224,89,11,.18)}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:#cdd4dc;border:3px solid transparent;background-clip:content-box;border-radius:8px}
*::-webkit-scrollbar-thumb:hover{background:#b6bfca;border:3px solid transparent;background-clip:content-box}

/* ===================== SIDEBAR ===================== */
.sb{width:244px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;position:relative;z-index:3}
.sb::after{content:"";position:absolute;top:0;right:-1px;bottom:0;width:1px;background:linear-gradient(180deg,transparent,rgba(224,89,11,.25),transparent)}
.sb-logo{padding:18px 18px 16px;border-bottom:1px solid var(--border-s);display:flex;align-items:center;gap:11px}
.logo-ico{width:36px;height:36px;background:linear-gradient(150deg,var(--accent),var(--accent-d));color:#fff;border-radius:9px;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 14px -6px rgba(224,89,11,.7), inset 0 1px 0 rgba(255,255,255,.3)}
.logo-t{font-family:var(--disp);font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--t1)}
.logo-t span{color:var(--accent);margin-left:3px}
.logo-s{font-family:var(--mono);font-size:9.5px;color:var(--tm);text-transform:uppercase;letter-spacing:.12em;margin-top:1px}

.nav-lbl{padding:16px 18px 6px;font-family:var(--mono);font-size:9.5px;font-weight:600;color:var(--tm);text-transform:uppercase;letter-spacing:.16em}
.ni{display:flex;align-items:center;gap:10px;padding:9px 18px;cursor:pointer;color:var(--t2);border-left:2px solid transparent;transition:all .14s ease;position:relative}
.ni:hover{background:var(--card-h);color:var(--t1)}
.ni.active{background:linear-gradient(90deg,rgba(224,89,11,.09),transparent);color:var(--accent-d);border-left-color:var(--accent);font-weight:600}
.ni-ico{font-size:14px;width:18px;text-align:center;opacity:.9}
.ni-txt{font-size:12.5px;letter-spacing:-.01em}

.sb-foot{margin-top:auto;padding:14px 18px;border-top:1px solid var(--border-s)}
.u-row{display:flex;align-items:center;gap:10px}
.avatar{width:32px;height:32px;background:#1b2027;color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:600}
.u-name{font-size:12px;font-weight:600;color:var(--t1)}
.u-role{font-family:var(--mono);font-size:9.5px;color:var(--tm);letter-spacing:.04em}

/* ===================== MAIN ===================== */
.main{flex:1;display:flex;flex-direction:column;overflow:hidden}
.topbar{min-height:58px;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:14px;flex-shrink:0;box-shadow:0 1px 0 rgba(20,24,31,.02)}
.tb-head{display:flex;flex-direction:column;justify-content:center}
.tb-title{font-family:var(--disp);font-size:18px;font-weight:700;letter-spacing:-.01em;line-height:1.1}
.tb-sub{font-size:11px;color:var(--t2);margin-top:1px}
.spacer{flex:1}

/* document-style spec strip */
.spec{display:flex;align-items:stretch;border:1px solid var(--border);border-radius:9px;overflow:hidden;background:var(--surface)}
.spec-i{display:flex;flex-direction:column;justify-content:center;padding:6px 13px;border-right:1px solid var(--border-s)}
.spec-i:last-child{border-right:0}
.spec-l{font-family:var(--mono);font-size:8.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--tm)}
.spec-v{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--t1);margin-top:1px}
.spec-v.ok{color:var(--green)}

/* ===================== SCREENS ===================== */
.scr{display:none;flex:1;overflow:auto;padding:20px 22px 28px}
.scr.active{display:block;animation:fade .35s ease}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.mb12{margin-bottom:14px}

/* ===================== CARDS ===================== */
.card{background:var(--card);border:1px solid var(--border);border-radius:11px;padding:16px;box-shadow:var(--shadow);position:relative}
.card-t{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--t2);text-transform:uppercase;letter-spacing:.13em;margin-bottom:12px;display:flex;align-items:center;gap:7px}
.card-t::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--accent);box-shadow:0 0 0 3px rgba(224,89,11,.14)}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}

/* KPI — instrument readout */
.kpi{background:var(--card);border:1px solid var(--border);border-radius:11px;padding:15px 16px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),transparent 70%);opacity:.0;transition:opacity .2s}
.kpi:hover::before{opacity:1}
.kpi-l{font-family:var(--mono);font-size:9.5px;color:var(--tm);text-transform:uppercase;letter-spacing:.1em;margin-bottom:9px}
.kpi-v{font-family:var(--mono);font-size:27px;font-weight:600;letter-spacing:-.02em;font-feature-settings:"tnum" 1}
.kpi-u{font-family:var(--mono);font-size:12px;color:var(--t2);margin-left:3px}
.kpi-d{font-family:var(--mono);font-size:10px;margin-top:6px;letter-spacing:.01em}

/* ===================== BADGES ===================== */
.bv{display:inline-flex;align-items:center;font-family:var(--mono);padding:2px 8px;border-radius:6px;font-size:10px;font-weight:600;border:1px solid transparent;letter-spacing:.02em}
.bg{background:rgba(22,163,74,.10);color:#15803D;border-color:rgba(22,163,74,.22)}
.br{background:rgba(220,38,38,.10);color:#C81E1E;border-color:rgba(220,38,38,.22)}
.by{background:rgba(217,119,6,.12);color:#B45309;border-color:rgba(217,119,6,.26)}
.bb{background:rgba(37,99,235,.10);color:#1D4ED8;border-color:rgba(37,99,235,.22)}
.bp{background:rgba(124,58,237,.10);color:#6D28D9;border-color:rgba(124,58,237,.22)}
.bo{background:rgba(249,115,22,.12);color:#C2410C;border-color:rgba(249,115,22,.26)}

/* ===================== BUTTONS ===================== */
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;font-family:var(--sans);font-size:12px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:all .14s;text-decoration:none;letter-spacing:-.01em}
.btn-p{background:var(--accent);color:#fff;box-shadow:0 6px 14px -7px rgba(224,89,11,.8),inset 0 1px 0 rgba(255,255,255,.25)}
.btn-p:hover{background:var(--accent-d)}
.btn-s{background:var(--surface);color:var(--t1);border-color:var(--border)}
.btn-s:hover{background:var(--card-h);border-color:#c5cdd6}

/* ===================== TABLE ===================== */
table{width:100%;border-collapse:collapse}
th{padding:9px 12px;text-align:left;font-family:var(--mono);font-size:9.5px;font-weight:600;color:var(--tm);text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid var(--border)}
td{padding:11px 12px;font-size:12.5px;border-bottom:1px solid var(--border-s);color:var(--t2);font-variant-numeric:tabular-nums}
tbody tr{transition:background .12s}
tbody tr:hover td{background:var(--card-h)}
td b,td .t1{color:var(--t1);font-weight:600}
/* numeric columns in mono */
#reportTbl td:nth-child(n+3){font-family:var(--mono);font-size:12px}

/* ===================== BAR (actual vs sop) ===================== */
.bar-row{margin-bottom:13px}
.bar-row:last-child{margin-bottom:2px}
.bar-top{display:flex;justify-content:space-between;align-items:baseline;font-size:11.5px;margin-bottom:5px;gap:10px}
.bar-top .t1{font-weight:600}
.bar-top span:last-child{font-family:var(--mono);font-size:10.5px;color:var(--t2);white-space:nowrap}
.bar-track{height:11px;background:var(--bg);border-radius:6px;position:relative;overflow:hidden;box-shadow:inset 0 1px 2px rgba(20,24,31,.06)}
.bar-fill{height:100%;border-radius:6px;background-image:linear-gradient(rgba(255,255,255,.18),rgba(0,0,0,.05));transition:width .5s cubic-bezier(.4,0,.2,1)}
.bar-sop{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--t1)}
.bar-sop::after{content:"SOP";position:absolute;top:-12px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:7.5px;color:var(--t2);letter-spacing:.05em}

/* ===================== ANALYSIS PLAYER ===================== */
.player-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;align-items:start}
.video-wrap{position:relative;background:#0c0f14;border-radius:12px;overflow:hidden;border:1px solid #c9d0d9;box-shadow:var(--shadow-lg), inset 0 0 0 1px rgba(255,255,255,.04)}
.video-wrap video{display:block;width:100%;max-height:62vh;background:#0c0f14}

/* HUD overlay on dark video */
.ovl{position:absolute;inset:0;pointer-events:none;font-variant-numeric:tabular-nums}
.ovl-top{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:flex-start;padding:13px 15px;background:linear-gradient(180deg,rgba(8,10,14,.78),transparent)}
.ovl-action{display:flex;flex-direction:column;gap:5px}
.ovl-tag{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.14em;color:#fff;opacity:.92;text-transform:uppercase}
.ovl-dot{width:9px;height:9px;border-radius:50%;box-shadow:0 0 0 3px rgba(255,255,255,.18)}
.ovl-label{font-family:var(--disp);font-size:19px;font-weight:600;color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.85);letter-spacing:-.01em}
.ovl-seg{font-family:var(--mono);font-size:12px;font-weight:500;color:#FFD9A8;text-shadow:0 1px 4px rgba(0,0,0,.85)}
.ovl-clocks{text-align:right}
.ovl-cyc{font-family:var(--mono);font-size:30px;font-weight:600;color:#fff;line-height:1;text-shadow:0 1px 8px rgba(0,0,0,.85);letter-spacing:-.01em}
.ovl-cyc-l{font-family:var(--mono);font-size:8.5px;font-weight:500;letter-spacing:.16em;color:#fff;opacity:.7;text-transform:uppercase;margin-top:5px}

.ovl-sop{position:absolute;top:62px;right:15px;background:rgba(8,10,14,.55);border:1px solid rgba(255,255,255,.16);border-radius:8px;padding:7px 11px;text-align:right;backdrop-filter:blur(4px)}
.ovl-sop .v{font-family:var(--mono);font-size:15px;font-weight:600}
.ovl-sop .l{font-family:var(--mono);font-size:8px;letter-spacing:.12em;color:rgba(255,255,255,.7);text-transform:uppercase;margin-top:2px}

.ovl-bottom{position:absolute;left:0;right:0;bottom:0;padding:12px 15px 14px;background:linear-gradient(0deg,rgba(8,10,14,.85),transparent)}
.tl{display:flex;height:20px;border-radius:5px;overflow:hidden;border:1px solid rgba(255,255,255,.2);box-shadow:0 2px 8px rgba(0,0,0,.4)}
.tl-seg{position:relative;height:100%;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:9px;color:rgba(255,255,255,.95);font-weight:600;overflow:hidden;white-space:nowrap;border-right:1px solid rgba(8,10,14,.4);transition:filter .15s}
.tl-seg.active{box-shadow:inset 0 0 0 2px #fff;filter:brightness(1.15)}
.tl-play{position:absolute;top:-3px;bottom:-3px;width:2px;background:#fff;box-shadow:0 0 8px 1px #fff;z-index:5}
.tl-scale{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;color:rgba(255,255,255,.65);margin-top:5px;letter-spacing:.03em}

.legend{display:flex;gap:16px;font-family:var(--mono);font-size:10.5px;color:var(--t2);margin-top:11px;flex-wrap:wrap;align-items:center}
.legend span{display:inline-flex;align-items:center;gap:6px}
.sw{width:11px;height:11px;border-radius:3px;display:inline-block}

/* segment list (measured actions) */
.seg-list{max-height:60vh;overflow:auto;margin:-4px}
.seg-row{display:flex;align-items:center;gap:10px;padding:9px 8px;border-bottom:1px solid var(--border-s);cursor:pointer;border-radius:8px;transition:background .12s}
.seg-row:hover{background:var(--card-h)}
.seg-row.active{background:linear-gradient(90deg,rgba(224,89,11,.08),transparent);box-shadow:inset 2px 0 0 var(--accent)}
.seg-idx{width:22px;height:22px;border-radius:6px;background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;font-weight:600;color:var(--t2);flex-shrink:0}
.seg-row.active .seg-idx{background:var(--accent);border-color:var(--accent);color:#fff}
.seg-mid{flex:1;min-width:0}
.seg-name{font-size:12.5px;font-weight:600;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seg-meta{font-family:var(--mono);font-size:9.5px;color:var(--t2);margin-top:2px;display:flex;align-items:center;gap:6px}
.seg-dur{font-family:var(--mono);font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}
.mini-bar{height:4px;background:var(--bg);border-radius:3px;margin-top:4px;overflow:hidden}
.mini-fill{height:100%;border-radius:3px}

/* mode toolbar emphasis */
#opPicker .op-card{font-family:var(--sans)}

/* ===================== EVENTS ===================== */
.ev{display:flex;gap:11px;padding:11px 2px;border-bottom:1px solid var(--border-s);font-size:12.5px;align-items:flex-start}
.ev:last-child{border-bottom:0}
.ev-ic{width:20px;flex-shrink:0;text-align:center;font-size:11px;line-height:1.5}
.ev-t{font-family:var(--mono);font-size:9.5px;color:var(--tm);margin-left:auto;white-space:nowrap;letter-spacing:.02em}

/* donut (unused fallback) */
.donut{--p:0;width:96px;height:96px;border-radius:50%;background:conic-gradient(var(--green) calc(var(--p)*1%),var(--card-h) 0);display:flex;align-items:center;justify-content:center;position:relative}
.donut::after{content:'';position:absolute;width:64px;height:64px;border-radius:50%;background:var(--card)}
.donut-c{position:relative;z-index:2;text-align:center}

/* ===================== SOP grid op cards ===================== */
#sopGrid .op-card{box-shadow:none;border:1px solid var(--border-s);border-radius:9px}
#sopGrid .op-card:hover{background:var(--card-h)}

/* ===================== TOPBAR CONTROLS (lang + theme) ===================== */
.ctrls{display:flex;align-items:center;gap:10px;padding-left:6px;border-left:1px solid var(--border-s);margin-left:2px}
.seg-toggle{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg)}
.seg-toggle button{font-family:var(--mono);font-size:11px;font-weight:600;padding:6px 11px;border:0;background:transparent;color:var(--t2);cursor:pointer;transition:all .13s;letter-spacing:.04em}
.seg-toggle button:hover{color:var(--t1)}
.seg-toggle button.on{background:var(--accent);color:#fff}
.icon-btn{width:34px;height:34px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--t2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .14s}
.icon-btn:hover{color:var(--accent);border-color:var(--accent)}
.icon-btn .ic-sun{display:none}
.icon-btn .ic-moon{display:block}
[data-theme="dark"] .icon-btn .ic-sun{display:block}
[data-theme="dark"] .icon-btn .ic-moon{display:none}

/* ===================== CHART / PLAYER chrome ===================== */
.chart svg text{font-family:var(--mono)}
.pl-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
#opPicker{display:flex;gap:8px;flex-wrap:wrap}
.mode-cluster{display:flex;gap:6px;align-items:center}
.tb-mini{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--tm);text-transform:uppercase;letter-spacing:.1em}
.pl-hint{margin-left:auto;color:var(--tm)}
.rep-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.method-note{font-size:11px;color:var(--t2);line-height:1.55;margin-bottom:11px;padding:9px 11px;background:var(--bg);border-radius:8px;border-left:2px solid var(--accent)}

/* ===================== SOP LIBRARY (master-detail) ===================== */
.sop-layout{display:grid;grid-template-columns:282px 1fr;gap:14px;align-items:start}
.sop-grp{margin-bottom:12px}
.sop-grp:last-child{margin-bottom:0}
.sop-grp-h{font-family:var(--mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;padding:4px 8px 6px}
.sop-item{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:7px;cursor:pointer;transition:background .12s}
.sop-item:hover{background:var(--card-h)}
.sop-item.active{background:linear-gradient(90deg,rgba(224,89,11,.1),transparent);box-shadow:inset 2px 0 0 var(--accent)}
.sop-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.sop-item-n{font-size:12px;font-weight:500;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sop-item.active .sop-item-n{font-weight:600}

.sop-d-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}
.sop-d-sub{font-family:var(--mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.sop-d-title{font-family:var(--disp);font-size:20px;font-weight:700;margin-top:2px}
.sop-d-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:18px}
.sop-vid{width:100%;border-radius:9px;background:#0c0f14;display:block;max-height:240px;border:1px solid var(--border)}
.sop-novid{height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:1.5px dashed var(--border);color:var(--tm);font-size:12px;font-size:13px;background:var(--bg)}
.sop-novid{font-size:30px}.sop-novid div{font-size:12px}
.sop-vid-cap{font-family:var(--mono);font-size:9px;color:var(--tm);margin-top:5px;text-align:center;letter-spacing:.04em}
.spec-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.sg{background:var(--bg);border:1px solid var(--border-s);border-radius:8px;padding:9px 11px}
.sg-l{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--tm)}
.sg-v{font-family:var(--mono);font-size:15px;font-weight:600;color:var(--t1);margin-top:2px}
.meter{margin-bottom:9px}
.meter-top{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10.5px;color:var(--t2);margin-bottom:4px}
.meter-v{font-weight:600}
.sop-verdict{display:flex;align-items:center;gap:9px;margin-top:11px;font-size:11.5px;color:var(--t2)}
.sop-steps th,.sop-steps td{padding:7px 9px;font-size:11.5px}
.sop-steps td:first-child,.sop-steps th:first-child{font-family:var(--mono);color:var(--tm)}
.muted-box{padding:18px;text-align:center;color:var(--tm);font-size:12px;border:1.5px dashed var(--border);border-radius:9px;background:var(--bg)}

/* ===================== UPLOAD & PROCESS ===================== */
.up-banner{font-size:11.5px;color:var(--t2);background:var(--bg);border-left:2px solid var(--accent);border-radius:8px;padding:10px 13px;margin-bottom:14px}
.up-banner.warn{border-left-color:var(--yellow);color:var(--yellow)}
.dropzone{border:2px dashed var(--border);border-radius:14px;padding:42px 20px;text-align:center;background:var(--surface);transition:all .16s;box-shadow:var(--shadow)}
.dropzone.over{border-color:var(--accent);background:rgba(224,89,11,.05)}
.dz-ic{font-size:36px;margin-bottom:6px}
.dz-t{font-family:var(--disp);font-size:17px;font-weight:600}
.dz-s{font-family:var(--mono);font-size:10px;color:var(--tm);text-transform:uppercase;letter-spacing:.1em;margin:9px 0}
.dz-formats{font-family:var(--mono);font-size:10px;color:var(--tm);margin-top:13px}
.dropzone .btn-p{cursor:pointer}
.up-samples{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:16px}
.sample-chip{border-left:3px solid var(--border)}
.up-fileinfo{display:flex;justify-content:space-between;align-items:center;gap:10px}
.up-fname{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--t1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.meta-form{display:grid;grid-template-columns:1fr 1fr;gap:11px}
.fld label{display:block;font-family:var(--mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--tm);margin-bottom:4px}
.fld input,.fld select{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--t1);border-radius:7px;padding:8px 10px;font-family:var(--sans);font-size:12.5px;outline:none;transition:border-color .12s}
.fld input:focus,.fld select:focus{border-color:var(--accent)}
.q-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.q-i{background:var(--bg);border:1px solid var(--border-s);border-radius:9px;padding:11px}
.q-l{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--tm)}
.q-v{font-family:var(--mono);font-size:15px;font-weight:600;color:var(--t1);margin-top:3px;display:flex;align-items:center;gap:5px}
.proc-card{max-width:560px;margin:0 auto}
.proc-bar{height:9px;background:var(--bg);border-radius:6px;overflow:hidden;margin-bottom:18px;box-shadow:inset 0 1px 2px rgba(0,0,0,.08)}
.proc-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-d));border-radius:6px;transition:width .5s cubic-bezier(.4,0,.2,1)}
.stepper{display:flex;flex-direction:column}
.stp{display:flex;align-items:center;gap:11px;padding:9px 2px;border-bottom:1px solid var(--border-s);color:var(--tm);transition:color .2s}
.stp:last-child{border-bottom:0}
.stp-dot{width:24px;height:24px;border-radius:7px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;font-weight:600;flex-shrink:0;background:var(--bg)}
.stp-l{font-size:12.5px}
.stp.done{color:var(--t2)}
.stp.done .stp-dot{background:var(--green);border-color:var(--green);color:#fff}
.stp.run{color:var(--t1);font-weight:600}
.stp.run .stp-dot{border-color:var(--accent);color:var(--accent)}
.spin{width:12px;height:12px;border:2px solid var(--accent);border-top-color:transparent;border-radius:50%;display:inline-block;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.up-result-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px;font-size:12.5px;color:var(--t2)}

@media(max-width:980px){.sop-layout{grid-template-columns:1fr}.sop-d-grid{grid-template-columns:1fr}.meta-form,.q-grid{grid-template-columns:1fr 1fr}}

/* ===================== DARK THEME ===================== */
[data-theme="dark"]{
  --bg:#11161d;--paper:#0c1015;--surface:#151b23;--card:#161c25;--card-h:#1d2531;
  --border:#2a313d;--border-s:#222a34;
  --t1:#e8edf3;--t2:#97a2b1;--tm:#5f6a79;
  --accent:#F2711C;--accent-d:#E0590B;
  --blue:#3B82F6;--purple:#A78BFA;--green:#22C55E;--yellow:#F59E0B;--red:#F05252;--orange:#FB923C;
  --cut:#3B82F6;--sew:#A78BFA;--stk:#F59E0B;--asm:#2DD4BF;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 12px 32px -18px rgba(0,0,0,.8);
  --shadow-lg:0 2px 6px rgba(0,0,0,.5), 0 26px 50px -24px rgba(0,0,0,.9);
}
[data-theme="dark"] body{
  background-image:
    linear-gradient(rgba(150,180,230,.028) 1px,transparent 1px),
    linear-gradient(90deg,rgba(150,180,230,.028) 1px,transparent 1px);
}
[data-theme="dark"] .video-wrap{border-color:#2a313d}
[data-theme="dark"] *::-webkit-scrollbar-thumb{background:#39424f;border:3px solid transparent;background-clip:content-box}
[data-theme="dark"] .avatar{background:var(--accent)}
[data-theme="dark"] .bg{background:rgba(34,197,94,.14);color:#4ADE80;border-color:rgba(34,197,94,.3)}
[data-theme="dark"] .br{background:rgba(240,82,82,.15);color:#F87171;border-color:rgba(240,82,82,.32)}
[data-theme="dark"] .by{background:rgba(245,158,11,.16);color:#FBBF24;border-color:rgba(245,158,11,.32)}
[data-theme="dark"] .bb{background:rgba(59,130,246,.15);color:#60A5FA;border-color:rgba(59,130,246,.3)}
[data-theme="dark"] .bp{background:rgba(167,139,250,.15);color:#C4B5FD;border-color:rgba(167,139,250,.3)}
[data-theme="dark"] .bo{background:rgba(251,146,60,.16);color:#FDBA74;border-color:rgba(251,146,60,.32)}

/* responsive */
@media(max-width:1080px){.player-grid{grid-template-columns:1fr}.g4{grid-template-columns:repeat(2,1fr)}.spec-i:nth-child(n+3){display:none}}
