:root{
  --bg:#0a0b0d;--panel:#111317;--panel2:#171a20;--line:#22262e;--line2:#2c313b;
  --text:#eef0f4;--mut:#8a92a0;--dim:#5d6572;
  --ok:#35d49a;--warn:#ffb42e;--bad:#ff4f60;--blue:#4d7cff;
  --r:16px;--font:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;--disp:'Barlow Condensed','Inter',sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;-webkit-font-smoothing:antialiased}
body{background:radial-gradient(1200px 600px at 80% -10%,#1a1d26 0%,transparent 60%),var(--bg);min-height:100vh}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3{margin:0;font-weight:600}
.disp{font-family:var(--disp);letter-spacing:.02em}
.mut{color:var(--mut)}.dim{color:var(--dim)}
.hide{display:none!important}

/* Layout */
.shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}
.side{position:sticky;top:0;height:100vh;padding:22px 16px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:6px;background:linear-gradient(180deg,#0e1013,#0a0b0d)}
.brand{display:flex;align-items:center;gap:12px;padding:4px 8px 22px}
.brand .lg{width:46px;height:46px;border-radius:50%;background:#fff;display:grid;place-items:center;overflow:hidden;flex:none}
.brand .lg img{width:100%;height:100%;object-fit:contain}
.brand .lg b{color:#000;font-family:var(--disp);font-size:22px}
.brand h2{font-family:var(--disp);font-size:21px;letter-spacing:.04em;text-transform:uppercase;line-height:1}
.brand small{color:var(--mut);font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.nav a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;color:var(--mut);text-decoration:none;font-weight:500;transition:.15s}
.nav a svg{width:19px;height:19px;flex:none}
.nav a:hover{background:var(--panel2);color:var(--text)}
.nav a.on{background:#fff;color:#000}
.grow{flex:1}
.me{padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--panel);display:flex;align-items:center;gap:10px}
.me .av{width:34px;height:34px;border-radius:50%;background:var(--panel2);display:grid;place-items:center;font-weight:700;flex:none}
.me div{min-width:0;flex:1}.me b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me small{color:var(--mut)}
.main{padding:28px 34px 60px;min-width:0;max-width:1500px}
.top{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px;flex-wrap:wrap}
.top h1{font-family:var(--disp);font-size:38px;letter-spacing:.02em;text-transform:uppercase;line-height:1}
.top p{margin:6px 0 0;color:var(--mut)}
.burger{display:none}

/* Cards */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.card h3{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-bottom:14px;font-weight:600}
.card.flush{padding:0;overflow:hidden}
.grid{display:grid;gap:16px}
.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}
.g21{grid-template-columns:2fr 1fr}.g12{grid-template-columns:1fr 2fr}
.stat{position:relative;overflow:hidden}
.stat .n{font-family:var(--disp);font-size:56px;line-height:1;font-weight:600}
.stat .l{color:var(--mut);font-size:12px;letter-spacing:.08em;text-transform:uppercase;margin-top:6px}
.stat:after{content:"";position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:50%;background:var(--c,#fff);opacity:.1;filter:blur(2px)}

/* Botones */
.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:11px;border:1px solid var(--line2);background:var(--panel2);cursor:pointer;font-weight:600;transition:.15s;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:#4a5160;background:#1d2128}
.btn.pri{background:#fff;color:#000;border-color:#fff}.btn.pri:hover{background:#dfe3ea}
.btn.dan{color:#ff8b97;border-color:#4a2228;background:#1c1012}.btn.dan:hover{background:#2a1418}
.btn.sm{padding:6px 10px;font-size:12px;border-radius:9px}
.btn svg{width:16px;height:16px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.sp{justify-content:space-between}

/* Forms */
.f{display:grid;gap:14px}
.f2{grid-template-columns:1fr 1fr}.f3{grid-template-columns:1fr 1fr 1fr}
label.fl{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-bottom:6px}
input,select,textarea{width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--line2);background:#0b0c0f;outline:none;transition:.15s}
input:focus,select:focus,textarea:focus{border-color:#7a8397;box-shadow:0 0 0 3px #ffffff12}
textarea{resize:vertical;min-height:70px}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%238a92a0' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}
input[type=checkbox]{width:18px;height:18px;accent-color:#fff;flex:none}
input[type=file]{padding:9px}

/* Tablas */
table{width:100%;border-collapse:collapse}
th{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);text-align:left;padding:12px 16px;font-weight:600;border-bottom:1px solid var(--line)}
td{padding:12px 16px;border-bottom:1px solid var(--line)}
tr:last-child td{border-bottom:0}
tbody tr.click{cursor:pointer}tbody tr.click:hover td{background:#14171c}
.tw{overflow-x:auto}
.num{font-variant-numeric:tabular-nums}

/* Chips y semáforo */
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;background:color-mix(in srgb,var(--c) 15%,transparent);color:var(--c);border:1px solid color-mix(in srgb,var(--c) 35%,transparent)}
.chip:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c)}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--c);box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 22%,transparent)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:22px 0 20px;overflow-x:auto}
.tabs a{padding:12px 16px;color:var(--mut);text-decoration:none;font-weight:600;border-bottom:2px solid transparent;white-space:nowrap}
.tabs a:hover{color:var(--text)}.tabs a.on{color:#fff;border-color:#fff}
.seg{display:inline-flex;background:var(--panel2);border:1px solid var(--line);border-radius:11px;padding:3px}
.seg button{border:0;background:none;padding:7px 12px;border-radius:8px;color:var(--mut);cursor:pointer;font-weight:600}
.seg button.on{background:#fff;color:#000}

/* Jugadores */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.pc{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px;cursor:pointer;transition:.18s;position:relative;overflow:hidden}
.pc:hover{transform:translateY(-3px);border-color:#4a5160}
.pc .no{position:absolute;right:14px;top:4px;font-family:var(--disp);font-size:74px;font-weight:700;color:#ffffff0d;line-height:1}
.pc h3{font-size:17px;text-transform:none;letter-spacing:0;color:var(--text);margin:12px 0 2px}
.pc .meta{color:var(--mut);font-size:13px}
.ava{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#2a2f3a,#14171c);border:1px solid var(--line2);display:grid;place-items:center;font-family:var(--disp);font-size:22px;font-weight:600}
.phead{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.phead .ava{width:76px;height:76px;border-radius:20px;font-size:38px}
.kv{display:flex;gap:26px;flex-wrap:wrap;margin-top:8px}
.kv div small{display:block;color:var(--mut);font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.kv div b{font-size:15px}

/* KPIs de prueba */
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
.kpi{background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:14px;border-left:3px solid var(--c,var(--line2))}
.kpi small{color:var(--mut);display:block;min-height:30px;font-size:12px;line-height:1.25}
.kpi .v{font-family:var(--disp);font-size:30px;font-weight:600;margin-top:6px}
.kpi .v i{font-style:normal;font-size:13px;color:var(--mut);margin-left:4px;font-family:var(--font)}
.kpi .s{font-size:12px;color:var(--mut);margin-top:2px}
.bar{height:8px;border-radius:99px;background:#222730;overflow:hidden}
.bar i{display:block;height:100%;border-radius:99px;background:var(--c,#fff)}

/* Gráfico */
.chart{width:100%;height:auto;display:block}
.gl{stroke:#252a33;stroke-width:1}.gt{fill:#7c8594;font-size:11px}
.legend{display:flex;gap:16px;flex-wrap:wrap;margin-top:8px;color:var(--mut);font-size:12px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}
.legend i.dash{width:16px;height:0;border-top:2px dashed;border-radius:0;vertical-align:middle}
.empty{padding:34px;text-align:center;color:var(--dim)}

/* Atlas */
.atlas{position:relative;height:560px;border-radius:var(--r);background:radial-gradient(500px 400px at 50% 40%,#1c2028,#0c0d10);border:1px solid var(--line);overflow:hidden}
.atlas canvas{display:block;touch-action:none}
.atlas-tip{position:absolute;pointer-events:none;background:#fff;color:#000;font-weight:600;padding:5px 9px;border-radius:8px;font-size:12px;opacity:0;transition:opacity .12s;z-index:3;white-space:nowrap}
.atlas-ui{position:absolute;left:12px;top:12px;z-index:3;display:flex;flex-direction:column;gap:6px}
.atlas-leg{position:absolute;left:14px;bottom:12px;z-index:3;display:flex;gap:12px;font-size:12px;color:var(--mut);background:#0b0c0fcc;padding:7px 11px;border-radius:10px;border:1px solid var(--line)}
.atlas-help{position:absolute;right:14px;bottom:12px;z-index:3;font-size:12px;color:var(--dim);text-align:right}

/* Lista de lesiones */
.inj{display:flex;gap:12px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel2);margin-bottom:10px;cursor:pointer;border-left:3px solid var(--c)}
.inj:hover{border-color:#4a5160;border-left-color:var(--c)}
.inj b{display:block}.inj small{color:var(--mut)}

/* RTP */
.ph{border:1px solid var(--line);border-radius:14px;margin-bottom:10px;background:var(--panel2);overflow:hidden}
.ph>summary{list-style:none;cursor:pointer;padding:14px 16px;display:flex;align-items:center;gap:14px}
.ph>summary::-webkit-details-marker{display:none}
.ph .nb{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-family:var(--disp);font-size:18px;font-weight:700;background:#262b34}
.ph.done .nb{background:var(--ok);color:#000}.ph.cur{border-color:#fff}.ph.cur .nb{background:#fff;color:#000}
.ph .cr{padding:2px 16px 14px;display:grid;gap:10px}
.ph label.ck{display:flex;gap:12px;align-items:flex-start;cursor:pointer;line-height:1.4}
.ph label.ck input{margin-top:1px}

/* Informes */
.rgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}
.rc{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--panel2);cursor:pointer;transition:.15s}
.rc:hover{border-color:#4a5160;transform:translateY(-2px)}
.rc .th{height:150px;background:#0b0c0f center/cover no-repeat;display:grid;place-items:center;color:var(--dim)}
.rc .th svg{width:46px;height:46px}
.rc .bd{padding:12px}.rc b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc small{color:var(--mut)}

/* Postura */
.big{font-family:var(--disp);font-size:72px;font-weight:600;line-height:1}
.big i{font-size:22px;color:var(--mut);font-style:normal;margin-left:4px}
.gauge{height:10px;border-radius:99px;background:#232831;position:relative;margin:12px 0 4px;overflow:hidden}
.gauge i{position:absolute;left:0;top:0;bottom:0;border-radius:99px}
.gauge b{position:absolute;top:0;bottom:0;width:2px;background:#0b0c0e}
.gl3{display:flex;justify-content:space-between;font-size:11px;color:var(--mut);letter-spacing:.04em}
.rd{display:inline-block;width:10px;height:10px;border-radius:50%;margin:0 6px 0 2px;vertical-align:baseline}
.rp-top{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:16px;align-items:start}
.rp-top>div:last-child{display:grid;gap:16px}
.rp-idx{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:20px;border-top:3px solid var(--c)}
.rp-idx small{display:block;color:var(--mut);font-size:11px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:6px}
.rp-pose{background:radial-gradient(ellipse at 50% 40%,#1b1f27,#0d0f13);border-radius:14px}
.rp-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.rp-ph canvas{width:100%;height:auto;border-radius:10px;background:#000;display:block}
.rp-phh{font-weight:600;margin-bottom:6px}
.rp-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.rp-pair small{display:block;color:var(--mut);font-size:11px;text-align:center;margin-top:4px}
.fd{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--c);border-radius:14px;margin-bottom:10px}
.fd summary{padding:14px 16px;cursor:pointer;list-style:none}
.fd summary::-webkit-details-marker{display:none}
.fd-h{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.fd-h small{display:block;color:var(--mut);font-size:12px;margin-top:2px}
.fd-v{text-align:right;display:grid;gap:4px;justify-items:end}
.fd-d{font-size:12px;margin-top:6px}
.fd-b{padding:0 16px 14px;font-size:13px}
.fd-b h4,.mlist,.card h4{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);margin:12px 0 6px}
.fd-b ul,.mlist{margin:0;padding-left:18px;color:inherit;text-transform:none;letter-spacing:0;font-size:13px}
.mlist{color:inherit;font-weight:400;margin-top:0}.mlist li{margin-bottom:5px}
.pe-wrap{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:16px;align-items:start}
.pe-main{display:grid;gap:16px}.pe-side{display:grid;gap:14px}
.pe-stage{position:relative;background:#050608;border-radius:12px;overflow:hidden;min-height:340px;display:grid;place-items:center}
.pe-stage>canvas#peCv{width:auto;max-width:100%;max-height:70vh;display:block}
.pe-stage .cam-idle{position:absolute;inset:0}
.pe-cam{position:absolute;inset:0;background:#000;z-index:3}
.pe-cam video,.pe-cam canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.pe-cambar{position:absolute;left:0;right:0;bottom:0;display:flex;gap:8px;justify-content:center;flex-wrap:wrap;padding:12px;background:linear-gradient(transparent,#000c)}
.pe-count{position:absolute;inset:0;display:grid;place-items:center;font-size:140px;font-family:var(--disp);color:#fff;text-shadow:0 4px 30px #000;z-index:4}
.pe-msg{position:absolute;left:12px;right:12px;top:12px;background:#000c;color:#fff;border-radius:10px;padding:8px 12px;font-size:13px;z-index:5}
.pe-bar{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.pe-m{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);border-left:0}
.pe-m small{display:block;color:var(--mut);font-size:11px}
.pe-ix{margin-top:14px;padding:12px 14px;border-radius:12px;border:1px solid var(--c);background:#ffffff08;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pe-ix small{width:100%;color:var(--mut);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.pe-ix b{font-family:var(--disp);font-size:30px}
@media (max-width:1100px){.rp-top,.pe-wrap{grid-template-columns:1fr}.rp-photos{grid-template-columns:1fr}}
#printRoot{display:none}

/* Modal */
.ov{position:fixed;inset:0;background:#000a;backdrop-filter:blur(6px);z-index:50;display:grid;place-items:start center;padding:5vh 16px;overflow:auto}
.md{width:min(640px,100%);background:var(--panel);border:1px solid var(--line2);border-radius:20px;padding:24px;animation:pop .18s ease}
.md.wide{width:min(860px,100%)}
.md h2{font-family:var(--disp);font-size:26px;text-transform:uppercase;letter-spacing:.03em;margin-bottom:18px}
.md .act{display:flex;gap:10px;justify-content:flex-end;margin-top:22px;flex-wrap:wrap}
.lb{position:fixed;inset:0;background:#000e;z-index:60;display:grid;place-items:center;padding:20px;cursor:zoom-out}
.lb img{max-width:96vw;max-height:92vh;border-radius:10px}
@keyframes pop{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
#toasts{position:fixed;right:18px;bottom:18px;z-index:80;display:grid;gap:8px}
.toast{background:#fff;color:#000;padding:11px 16px;border-radius:12px;font-weight:600;box-shadow:0 10px 30px #0008;animation:pop .2s}
.toast.err{background:#ff4f60;color:#fff}

/* Login */
.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.login .c{width:min(400px,100%);background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:34px}
.login .lg{width:84px;height:84px;border-radius:50%;background:#fff;margin:0 auto 18px;display:grid;place-items:center;overflow:hidden}
.login .lg img{width:100%;height:100%;object-fit:contain}.login .lg b{color:#000;font-family:var(--disp);font-size:40px}
.login h1{text-align:center;font-family:var(--disp);text-transform:uppercase;font-size:30px;letter-spacing:.04em}
.login p{text-align:center;color:var(--mut);margin:6px 0 24px}

.note{font-size:12px;color:var(--mut);line-height:1.5;padding:12px 14px;border:1px dashed var(--line2);border-radius:12px}
.hr{height:1px;background:var(--line);margin:18px 0}

@media (max-width:1100px){.g4{grid-template-columns:repeat(2,1fr)}.g21,.g12,.g3{grid-template-columns:1fr}}
@media (max-width:900px){
  .shell{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;z-index:40;width:260px;transform:translateX(-100%);transition:.2s}
  .side.open{transform:none;box-shadow:0 0 0 100vmax #0008}
  .burger{display:inline-flex}
  .main{padding:18px 16px 60px}
  .g2,.f2,.f3{grid-template-columns:1fr}
  .atlas{height:440px}
  .top h1{font-size:30px}
}
@media print{.side,.btn,.tabs{display:none!important}.shell{display:block}body{background:#fff;color:#000}
body.printing>*:not(#printRoot){display:none!important}
body.printing{background:#fff!important;color:#111!important}
body.printing #printRoot{display:block;color:#111;font-size:12px;padding:0;--panel:#fff;--line:#d9dce2;--mut:#5b6270}
#printRoot .pr-h{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:2px solid #111;padding-bottom:8px;margin-bottom:14px}
#printRoot h1{font-size:20px;margin:0}#printRoot h2{font-size:13px;text-transform:uppercase;letter-spacing:.06em;margin:18px 0 8px;border-bottom:1px solid #ccc;padding-bottom:3px;break-after:avoid}
#printRoot .pr-3d{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}#printRoot .pr-3d img{width:100%;background:#1a1d24;border-radius:6px}
#printRoot .pr-ph{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}#printRoot .pr-ph img{width:100%;border-radius:6px}#printRoot figure{margin:0}#printRoot figcaption{text-align:center;font-weight:600;font-size:11px}
#printRoot .rp-idx,#printRoot .fd,#printRoot .inj{background:#fff;border-color:#ccc;break-inside:avoid}
#printRoot .gauge{background:#e5e7eb}#printRoot .gauge b{background:#fff}
#printRoot .mut,#printRoot small{color:#5b6270!important}
#printRoot .chip{border:1px solid var(--c);padding:1px 8px;border-radius:99px;font-size:11px}
#printRoot table{width:100%;border-collapse:collapse}#printRoot td,#printRoot th{border-bottom:1px solid #ddd;padding:4px 6px;text-align:left}
#printRoot .pr-n{font-size:10px;color:#666;margin-top:16px}#printRoot .pr-leg{font-size:11px;margin-top:4px}
#printRoot .grid.g2{grid-template-columns:1fr 1fr}
}

/* ---- Evaluación por cámara ---- */
.mut{color:var(--mut)}
.cam-wrap{display:grid;grid-template-columns:260px 1fr;gap:16px;align-items:start}
.cam-main{display:grid;gap:16px;min-width:0}
.cam-list{position:sticky;top:12px;padding:14px}
.cam-reg{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin:14px 4px 6px}
.cam-reg:first-of-type{margin-top:0}
.cam-t{display:block;width:100%;text-align:left;padding:10px 12px;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--text);cursor:pointer;font-weight:600;font-size:14px}
.cam-t small{display:block;color:var(--mut);font-weight:400;font-size:11px;margin-top:2px}
.cam-t:hover{background:var(--panel2)}.cam-t.on{background:var(--panel2);border-color:#fff}
.cam-side small{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-bottom:6px}
.cam-info{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:16px;font-size:14px;line-height:1.5}
.cam-info small{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-bottom:4px}
.cam-info p,.cam-info ul{margin:0;color:#cfd4de}.cam-info ul{padding-left:18px}
.cam-stage{position:relative;background:#050608;aspect-ratio:4/3;max-height:72vh;margin:0 auto;overflow:hidden;background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);background-size:40px 40px}
.cam-stage video,.cam-stage canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.cam-stage.mirror video,.cam-stage.mirror canvas{transform:scaleX(-1)}
.cam-hud{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);padding:10px 18px;border-radius:999px;background:#000b;backdrop-filter:blur(6px);font-weight:700;font-size:15px;white-space:nowrap;max-width:92%;overflow:hidden;text-overflow:ellipsis;border:1px solid var(--line2)}
.cam-hud:empty{display:none}.cam-hud.wait{color:#f5b73b;border-color:#f5b73b66}.cam-hud.good{color:#37d67a;border-color:#37d67a66}
.cam-rep{position:absolute;top:14px;right:14px;text-align:center;background:#000b;border:1px solid var(--line2);border-radius:14px;padding:8px 16px}
.cam-rep b{display:block;font:700 40px/1 'Barlow Condensed',sans-serif}.cam-rep span{font-size:11px;color:var(--mut)}
.cam-live{position:absolute;top:14px;left:14px;display:grid;gap:8px}
.cam-live div{background:#000b;border:1px solid var(--line2);border-radius:12px;padding:6px 12px}
.cam-live small{display:block;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.cam-live b{font:700 26px/1.1 'Barlow Condensed',sans-serif}.cam-live i{font-size:13px;font-style:normal;color:var(--mut);margin-left:3px}
.cam-idle{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:24px;color:var(--mut)}
.cam-idle b{font:700 28px 'Barlow Condensed',sans-serif;color:#fff;letter-spacing:.04em;text-transform:uppercase}
.cam-bar{display:flex;gap:12px;align-items:center;padding:14px;flex-wrap:wrap;border-top:1px solid var(--line)}
.cam-bar select{width:auto;min-width:200px}
.cam-chk{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--mut);cursor:pointer}
.cam-reps{font-size:11px}
@media(max-width:900px){.cam-wrap{grid-template-columns:1fr}.cam-list{position:static}.cam-info{grid-template-columns:1fr}}

/* Atlas anatómico */
.atlas-load{position:absolute;inset:0;display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;color:var(--mut);font-size:13px;letter-spacing:.08em;text-transform:uppercase;z-index:2;pointer-events:none}
.atlas-load i{display:block;width:180px;height:3px;background:var(--line2);border-radius:3px;overflow:hidden}
.atlas-load b{display:block;height:100%;width:0;background:#fff;transition:width .3s}
.atlas-credit{position:absolute;right:14px;bottom:30px;z-index:3;font-size:10.5px;color:var(--dim);text-align:right}
.atlas-credit a{color:inherit}
.atlas-layers{position:absolute;right:12px;top:12px;z-index:3;display:flex;gap:12px;align-items:center;font-size:12px;color:var(--mut);background:#0b0c0fcc;padding:7px 11px;border-radius:10px;border:1px solid var(--line);flex-wrap:wrap}
.atlas-layers[hidden]{display:none}
.atlas-layers label{display:flex;gap:6px;align-items:center;cursor:pointer}
.atlas-layers input[type=range]{width:70px;padding:0;accent-color:#fff}
.atlas-layers input[type=checkbox]{width:15px;height:15px}

/* Modelo 3D articulado */
.pose-wrap{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}
.pose-view{height:660px}
.pose-side{display:grid;gap:16px}
.pose-list{display:grid;gap:4px}
.pose-list button{text-align:left;padding:9px 12px;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--text);cursor:pointer;font-weight:600}
.pose-list button small{display:block;color:var(--mut);font-weight:400;font-size:11px;margin-top:1px}
.pose-list button:hover{background:var(--panel2)}.pose-list button.on{background:var(--panel2);border-color:#fff}
@media(max-width:1000px){.pose-wrap{grid-template-columns:1fr}.pose-view{height:480px}}
