/* HISPEEDSIM · Área de Socios
   Paleta y tipografías según el Manual de Marca:
   Rojo #D60003 · Naranja #F68F1C · Neutro #EBEBEB · Blanco #FFFFFF · Oscuro #272727
   Títulos: Racing Sans One · Subtítulos: Montserrat Bold · Párrafos: Montserrat */
:root{
  --red:#D60003; --orange:#F68F1C; --neutral:#EBEBEB; --white:#FFFFFF; --dark:#272727;
  --grad:linear-gradient(180deg,var(--red) 0%,var(--orange) 100%);
  --grad-h:linear-gradient(90deg,var(--red) 0%,var(--orange) 100%);
  --bg:#141414; --surface:#1d1d1d; --surface-2:#272727; --surface-3:#313131;
  --line:#353535; --line-soft:#262626;
  --text:#FFFFFF; --text-2:#EBEBEB; --muted:#9b9b9b;
  --ok:#3fb96b; --ok-bg:rgba(63,185,107,.12);
  --warn:var(--orange); --warn-bg:rgba(246,143,28,.12);
  --bad:#ff3b3e; --bad-bg:rgba(214,0,3,.16);
  --bronze:#d39a62; --silver:#cfd4da; --gold:#f2c14e;
  --radius:14px; --radius-sm:9px;
  --f-title:'Racing Sans One',Impact,sans-serif;
  --f-body:'Montserrat',system-ui,-apple-system,'Segoe UI',sans-serif;
  color-scheme:dark;
}
*{box-sizing:border-box;margin:0;padding:0}
/* Móvil: sin zoom y sin desplazamiento lateral (petición de HISPEEDSIM). Doble toque sin zoom (manipulation);
   el pellizco lo bloquean el viewport (Android) y app.js (iPhone). overflow-x en html = la ventana (no rompe la barra fija). */
html{-webkit-text-size-adjust:100%;overflow-x:hidden;overscroll-behavior-x:none;touch-action:manipulation}
@supports (overflow:clip){body{overflow-x:clip}}
body{background:var(--bg);color:var(--text);font-family:var(--f-body);font-size:14px;line-height:1.5;min-height:100vh;
  padding-bottom:env(safe-area-inset-bottom,0)}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--orange)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
:focus-visible{outline:2px solid var(--orange);outline-offset:2px}

/* ---------- Tipografía ---------- */
.t-title{font-family:var(--f-title);font-weight:400;letter-spacing:.01em;line-height:1.05}
h1.t-title{font-size:clamp(30px,5vw,46px)}
h2.t-title{font-size:26px}
h3{font-weight:700;font-size:15px}
.eyebrow{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.muted{color:var(--muted)} .small{font-size:12px} .tiny{font-size:11px}
.grad-text{background:var(--grad-h);-webkit-background-clip:text;background-clip:text;color:transparent}
.num{font-variant-numeric:tabular-nums}

/* ---------- Barra superior ---------- */
.topbar{position:sticky;top:0;z-index:30;background:rgba(20,20,20,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line-soft)}
.topbar-in{max-width:1240px;margin:0 auto;display:flex;align-items:center;gap:14px;padding:10px 20px;min-height:62px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;flex:none;background:none;border:0}
.brand img.shield{height:38px;width:auto}
.brand img.word{height:20px;width:auto}
.brand-tag{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border-left:1px solid var(--line);padding-left:12px}
.top-actions{margin-left:auto;display:flex;align-items:center;gap:10px}
.who{font-size:12px;color:var(--muted);text-align:right;line-height:1.3}
.who b{color:var(--text);font-weight:600;display:block}
.tabs{max-width:1240px;margin:0 auto;display:flex;gap:4px;padding:0 20px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{flex:none;background:none;border:0;border-bottom:3px solid transparent;padding:11px 14px 10px;font-weight:600;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:7px}
.tab:hover{color:var(--text)}
.tab.on{color:var(--text);border-image:var(--grad-h) 1}
.tab .count{background:var(--red);color:#fff;border-radius:10px;font-size:10.5px;padding:1px 6px;font-weight:700}

main{max-width:1240px;margin:0 auto;padding:24px 20px 60px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.page-head p{color:var(--muted);margin-top:4px}

/* ---------- Superficies ---------- */
.card{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);padding:18px}
.card + .card{margin-top:16px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.card-head h3{display:flex;align-items:center;gap:8px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.split{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:16px;align-items:start}
.stack>*+*{margin-top:16px}
@media (max-width:980px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.split{grid-template-columns:1fr}.g3{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.g2,.g3,.g4{grid-template-columns:1fr}}

.kpi{position:relative;overflow:hidden}
.kpi .v{font-family:var(--f-title);font-size:36px;line-height:1;margin-top:10px}
.kpi .s{font-size:12px;color:var(--muted);margin-top:6px}
.kpi::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--grad)}

/* ---------- Botones e inputs ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:0;border-radius:var(--radius-sm);padding:10px 16px;font-weight:700;font-size:13px;
  background:var(--grad-h);color:#fff;white-space:nowrap;transition:filter .15s,transform .05s}
.btn:hover{filter:brightness(1.08)} .btn:active{transform:translateY(1px)}
.btn[disabled]{opacity:.45;cursor:not-allowed;filter:none}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--text)}
.btn.ghost:hover{background:var(--surface-2)}
.btn.dark{background:var(--surface-2);color:var(--text)}
.btn.danger{background:transparent;border:1px solid rgba(214,0,3,.5);color:#ff6b6d}
.btn.danger:hover{background:var(--bad-bg)}
.btn.sm{padding:6px 11px;font-size:12px;border-radius:8px}
.btn.lg{padding:14px 22px;font-size:15px;border-radius:12px}
.btn.block{width:100%}
.icon-btn{background:none;border:1px solid transparent;border-radius:8px;width:32px;height:32px;display:inline-grid;place-items:center;color:var(--muted)}
.icon-btn:hover{border-color:var(--line);color:var(--text)}
.field{display:block}
.field + .field,.row2 + .field,.field + .row2,.row2 + .row2{margin-top:12px}
.field > span{display:block;font-size:11.5px;font-weight:600;color:var(--muted);margin-bottom:5px}
.input,select.input,textarea.input{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;font-size:14px;color:var(--text)}
.input:focus{border-color:var(--orange);outline:none}
textarea.input{resize:vertical;min-height:80px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:520px){.row2{grid-template-columns:1fr}}
.check{display:flex;align-items:center;gap:9px;font-size:13px;margin-top:12px}
.check input{accent-color:var(--red);width:16px;height:16px}
.search{position:relative;flex:1;min-width:200px;max-width:360px}
.search .input{padding-left:36px}
.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--muted)}
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{border:1px solid var(--line);background:transparent;border-radius:20px;padding:6px 12px;font-size:12px;font-weight:600;color:var(--text-2)}
.chip.on{background:var(--text);color:#111;border-color:var(--text)}
.spacer{flex:1}

/* ---------- Badges ---------- */
.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:700;letter-spacing:.02em;white-space:nowrap}
.badge.bronze{background:rgba(211,154,98,.14);color:var(--bronze)}
.badge.silver{background:rgba(207,212,218,.12);color:var(--silver)}
.badge.gold{background:rgba(242,193,78,.14);color:var(--gold)}
.badge.tarifa{background:var(--surface-3);color:var(--muted)}
.badge.ok{background:var(--ok-bg);color:var(--ok)}
.badge.warn{background:var(--warn-bg);color:var(--orange)}
.badge.bad{background:var(--bad-bg);color:#ff6b6d}
.badge.neutral{background:var(--surface-3);color:var(--text-2)}
.dot{width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block}
.dot.live{animation:pulse 1.4s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}

/* ---------- Tabla de socios ---------- */
.table{width:100%;border-collapse:collapse;font-size:13px}
.table th{text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
.table td{padding:12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.table tr:hover td{background:rgba(255,255,255,.02)}
.table .name b{font-weight:600;display:block}
.table .name small{color:var(--muted);font-size:11.5px}
.table .actions{display:flex;gap:6px;justify-content:flex-end}
tr.over td{background:rgba(214,0,3,.10)!important}
tr.over td:first-child{box-shadow:inset 3px 0 0 var(--red)}
.th-sort{background:none;border:0;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;display:inline-flex;gap:4px;align-items:center}
.hours-cell{min-width:150px}
.bar{height:6px;background:var(--surface-3);border-radius:4px;overflow:hidden;margin-top:6px}
.bar i{display:block;height:100%;background:var(--grad-h);border-radius:4px}
.bar.full i{background:var(--red)}
@media (max-width:820px){
  .table thead{display:none}
  .table,.table tbody,.table tr,.table td{display:block;width:100%}
  .table tr{border:1px solid var(--line-soft);border-radius:12px;margin-bottom:10px;padding:6px 4px;background:var(--surface)}
  .table td{border:0;padding:6px 12px;display:flex;justify-content:space-between;gap:12px;align-items:center}
  .table td[data-l]::before{content:attr(data-l);font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
  .table td.name{display:block}
  .hours-cell{min-width:0}
  .table .actions{justify-content:stretch}.table .actions .btn{flex:1}
}

/* ---------- Listas ---------- */
.list-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line-soft)}
.list-row:last-child{border-bottom:0}
.list-row .grow{flex:1;min-width:0}
.list-row .grow b{font-weight:600}
.empty{text-align:center;color:var(--muted);padding:28px 10px;font-size:13px}
.empty .t-title{font-size:22px;color:var(--text-2);display:block;margin-bottom:6px}

/* ---------- Leaderboard ---------- */
.lb{counter-reset:pos}
.lb-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto 48px;align-items:center;gap:8px;padding:9px 6px;border-bottom:1px solid var(--line-soft);font-size:13.5px}
.lb-row:last-child{border-bottom:0}
.lb-pos{font-family:var(--f-title);font-size:20px;text-align:center;color:var(--muted)}
.lb-row.p1 .lb-pos{color:var(--gold)} .lb-row.p2 .lb-pos{color:var(--silver)} .lb-row.p3 .lb-pos{color:var(--bronze)}
.lb-name{overflow-wrap:anywhere;font-weight:500;line-height:1.3}
.lb-score{font-variant-numeric:tabular-nums;color:var(--text-2);font-size:13px}
.lb-pts{text-align:right;font-weight:700}
.lb-row.me{background:linear-gradient(90deg,rgba(214,0,3,.18),transparent);border-radius:8px}
.lb-row .cut{font-size:10px;color:var(--orange);font-weight:700;margin-left:6px}
.lb-edit{display:grid;grid-template-columns:minmax(0,1fr) 120px 32px;gap:8px;align-items:center;padding:6px 0}
.lb-edit .input{padding:7px 10px;font-size:13px}

.mode-card{position:relative;overflow:hidden}
.mode-card .mode{font-family:var(--f-title);font-size:28px;line-height:1}
.mode-card .meta{font-size:12.5px;color:var(--muted);margin-top:6px}
.mode-card .meta b{color:var(--text)}
.cutoff{display:inline-flex;gap:6px;align-items:center;margin-top:10px;font-size:12px;background:var(--surface-2);border-radius:8px;padding:6px 10px}
.cutoff b{font-variant-numeric:tabular-nums}

/* ---------- Tarjeta de membresía (socio) ---------- */
.member-hero{position:relative;overflow:hidden;border-radius:20px;padding:26px;background:
  radial-gradient(120% 140% at 100% 0%,rgba(214,0,3,.55) 0%,rgba(214,0,3,0) 55%),
  radial-gradient(90% 120% at 100% 100%,rgba(246,143,28,.35) 0%,rgba(246,143,28,0) 60%),
  var(--surface-2);border:1px solid var(--line)}
.member-hero .wm{position:absolute;right:-30px;bottom:-40px;height:230px;opacity:.10;pointer-events:none}
.member-hero .hello{font-size:13px;color:var(--text-2)}
.member-hero h1{margin-top:4px}
.member-hero .tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.hero-grid{display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:center;margin-top:22px}
@media (max-width:620px){.hero-grid{grid-template-columns:1fr;justify-items:center;text-align:center}.member-hero .tags{justify-content:center}}
.ring{position:relative;width:170px;height:170px}
.ring svg{transform:rotate(-90deg)}
.ring .center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.ring .big{font-family:var(--f-title);font-size:40px;line-height:1}
.ring .lbl{font-size:11px;color:var(--text-2);margin-top:4px;letter-spacing:.06em;text-transform:uppercase;font-weight:600}
.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.fact .k{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.fact .v{font-weight:700;font-size:16px;margin-top:2px}
.live-banner{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:12px;background:var(--bad-bg);border:1px solid rgba(214,0,3,.4);margin-top:18px;font-weight:600}
.live-banner .timer{margin-left:auto;font-variant-numeric:tabular-nums;font-size:20px;font-weight:800}
.benefit{display:flex;gap:10px;align-items:flex-start;padding:8px 0;font-size:13.5px}
.benefit svg{flex:none;color:var(--orange);margin-top:2px}
.benefit.off{color:var(--muted)} .benefit.off svg{color:var(--line)}

/* ---------- Campeonatos y novedades ---------- */
.champ{display:flex;flex-direction:column;gap:10px}
.champ .top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.champ h3{font-family:var(--f-title);font-weight:400;font-size:24px;line-height:1.05}
.champ .info{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;color:var(--muted)}
.champ .info b{color:var(--text-2);font-weight:600}
.champ .desc{font-size:13.5px;color:var(--text-2);white-space:pre-line}
.champ .foot{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:auto;padding-top:6px}
.slots{font-size:12px;color:var(--muted)}
.news-item{padding:16px 0;border-bottom:1px solid var(--line-soft)}
.news-item:last-child{border-bottom:0}
.news-item .d{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.06em;text-transform:uppercase}
.news-item h4{font-size:16px;font-weight:700;margin:3px 0 6px}
.news-item p{white-space:pre-line;color:var(--text-2);font-size:13.5px}
.pin{color:var(--orange)}

/* ---------- Login / portada ---------- */
.login-wrap{min-height:calc(100vh - 62px);display:grid;grid-template-columns:1.1fr 1fr}
.login-art{position:relative;overflow:hidden;background:var(--red);display:flex;flex-direction:column;justify-content:flex-end;padding:48px}
.login-art::before{content:"";position:absolute;inset:0;background:
  radial-gradient(80% 70% at 85% 110%,var(--orange) 0%,rgba(246,143,28,0) 70%),
  linear-gradient(160deg,rgba(0,0,0,0) 40%,rgba(0,0,0,.35) 100%)}
.login-art .checker{position:absolute;top:44px;left:48px;display:grid;grid-template-columns:repeat(4,16px);gap:0}
.login-art .checker i{width:16px;height:16px;background:transparent}
.login-art .checker i:nth-child(1),.login-art .checker i:nth-child(3),.login-art .checker i:nth-child(6),.login-art .checker i:nth-child(8),
.login-art .checker i:nth-child(9),.login-art .checker i:nth-child(11){background:#111}
.login-art .bigshield{position:absolute;right:-60px;top:50%;transform:translateY(-50%);height:118%;opacity:.16;filter:grayscale(1) brightness(0)}
.login-art h1{position:relative;font-size:clamp(40px,6vw,76px);color:#fff;line-height:.95}
.login-art p{position:relative;color:#fff;max-width:420px;margin-top:14px;font-size:15px;font-weight:500}
.login-panel{display:flex;align-items:center;justify-content:center;padding:40px 24px}
.login-box{width:100%;max-width:380px}
.login-box .t-title{font-size:30px}
.login-box p.lead{color:var(--muted);margin:6px 0 22px}
.divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:11px;margin:22px 0;text-transform:uppercase;letter-spacing:.12em}
.divider::before,.divider::after{content:"";flex:1;height:1px;background:var(--line)}
.linklike{background:none;border:0;color:var(--muted);font-size:12.5px;text-decoration:underline;text-underline-offset:3px}
.linklike:hover{color:var(--text)}
.notice{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-size:12.5px;color:var(--text-2)}
.notice.warn{background:var(--warn-bg);border-color:rgba(246,143,28,.35)}
.notice.err{background:var(--bad-bg);border-color:rgba(214,0,3,.45)}
.notice b{color:var(--text)}
@media (max-width:860px){.login-wrap{grid-template-columns:1fr}.login-art{min-height:260px;padding:32px 24px}.login-art .checker{top:24px;left:24px}}

/* ---------- Modales ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:50;display:flex;align-items:center;justify-content:center;padding:16px;animation:fade .15s}
.modal{background:var(--surface);border:1px solid var(--line);border-radius:18px;width:100%;max-width:460px;max-height:calc(100vh - 32px);overflow:auto;padding:22px;animation:pop .18s}
.modal.wide{max-width:760px}
.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}
.modal-head .t-title{font-size:26px}
.modal-foot{display:flex;gap:8px;justify-content:flex-end;margin-top:20px;flex-wrap:wrap}
@keyframes fade{from{opacity:0}} @keyframes pop{from{transform:translateY(8px);opacity:0}}
.timer-big{font-size:56px;font-weight:800;text-align:center;font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1;margin:18px 0 6px}
.timer-big.prep{color:var(--orange)} .timer-big.run{color:var(--text)} .timer-big.over{color:#ff4b4e}
.timer-sub{text-align:center;color:var(--muted);font-size:13px}
.adjust{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin-top:16px}
.panel{background:var(--bg);border:1px solid var(--line-soft);border-radius:12px;padding:14px;margin-top:16px}
.seg{display:flex;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:3px;gap:3px}
.seg button{flex:1;border:0;background:none;border-radius:7px;padding:7px 10px;font-weight:600;font-size:12.5px;color:var(--muted)}
.seg button.on{background:var(--surface-3);color:var(--text)}
.mov{display:grid;grid-template-columns:70px minmax(0,1fr) auto 32px;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line-soft);font-size:13px}
.mov:last-child{border-bottom:0}
.mov .m{font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.mov .m.plus{color:var(--ok)}

/* ---------- Toast ---------- */
.toasts{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:var(--text);color:#111;font-weight:600;font-size:13px;padding:10px 16px;border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.4);animation:pop .2s}
.toast.err{background:var(--red);color:#fff}

.demo-ribbon{background:var(--grad-h);color:#fff;text-align:center;font-size:12px;font-weight:600;padding:6px 12px}
.demo-ribbon button{display:inline-block;white-space:nowrap;max-width:100%;background:rgba(0,0,0,.25);border:0;color:#fff;border-radius:6px;padding:2px 8px;margin-left:8px;font-size:11.5px;font-weight:700}
.loader{display:grid;place-items:center;min-height:60vh}
.loader img{height:64px;animation:pulse 1.2s infinite}
footer.site{border-top:1px solid var(--line-soft);color:var(--muted);font-size:11.5px;text-align:center;padding:18px}

/* ---------- Móvil ---------- */
@media (max-width:620px){
  .topbar-in{padding:8px 14px;gap:10px;min-height:56px}
  .brand-tag,.who{display:none}
  .brand img.shield{height:32px} .brand img.word{height:15px}
  .tabs{padding:0 8px}
  main{padding:18px 14px 48px}
  .member-hero{padding:20px}
  .promo{flex-direction:column;align-items:stretch!important;text-align:center}
  .promo .badge{align-self:center}
}

/* ---------- Evolución de membresía y baja ---------- */
.upgrade{position:relative;border-radius:18px;padding:2px;background:var(--grad-h)}
.upgrade-in{border-radius:16px;background:
  radial-gradient(70% 140% at 0% 0%,rgba(246,143,28,.16) 0%,rgba(246,143,28,0) 60%),var(--surface);
  padding:24px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto;gap:24px;align-items:center}
.upgrade h2{font-size:32px;margin-top:2px}
.up-price{font-family:var(--f-title);font-size:28px;margin-top:8px}
.up-price span{font-size:16px;color:var(--muted)}
.up-price small{display:block;font-family:var(--f-body);font-size:12px;color:var(--muted);margin-top:2px}
.up-gains{list-style:none;display:grid;gap:8px;font-size:13.5px}
.up-gains li{display:flex;gap:9px;align-items:flex-start}
.up-gains svg{flex:none;color:var(--orange);margin-top:2px}
.up-cta{text-align:center}
@media (max-width:900px){.upgrade-in{grid-template-columns:1fr;text-align:left}.up-cta{text-align:left}}
.cancel-zone{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:28px;padding-top:18px;border-top:1px solid var(--line-soft)}
.cancel-zone .btn.ghost{color:var(--muted);border-color:var(--line-soft);font-weight:600}
.cancel-zone .btn.ghost:not([disabled]):hover{color:#ff6b6d;border-color:rgba(214,0,3,.5);background:var(--bad-bg)}
@media (max-width:620px){
  .grid.g4{grid-template-columns:1fr 1fr;gap:10px}
  .kpi{padding:14px} .kpi .v{font-size:28px}
}

/* ---------- Modo invitado y premios ---------- */
.guest-btn{width:100%;display:flex;align-items:center;gap:14px;text-align:left;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:14px 16px;color:var(--text);transition:border-color .15s,background .15s}
.guest-btn:hover{border-color:var(--orange);background:var(--surface-3)}
.guest-btn b{display:block;font-size:14px}
.guest-btn small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.guest-btn .arrow{margin-left:auto;font-size:20px;color:var(--orange)}
.prizes{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:12px}
.prize{background:var(--surface-2);border-radius:10px;padding:8px 6px;text-align:center;font-size:11.5px;font-weight:600;line-height:1.25;color:var(--text-2)}
.prize .t-title{display:block;font-size:22px;line-height:1;margin-bottom:3px}
.prize.p1 .t-title{color:var(--gold)} .prize.p2 .t-title{color:var(--silver)} .prize.p3 .t-title{color:var(--bronze)}
.prize.p1{box-shadow:inset 0 0 0 1px rgba(242,193,78,.35)}

/* ---------- Tiempos de campeonato ---------- */
.ct-wrap{overflow-x:auto}
.ct-row{display:grid;gap:8px;align-items:center;padding:7px 4px;border-bottom:1px solid var(--line-soft);font-size:13.5px;min-width:560px}
.ct-row .input{padding:6px 9px;font-size:13px}
.ct-head{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700;border-bottom:1px solid var(--line)}
.ct-row.p1 .lb-pos{color:var(--gold)} .ct-row.p2 .lb-pos{color:var(--silver)} .ct-row.p3 .lb-pos{color:var(--bronze)}
.ct-row.ref{opacity:.6}
.ct-extra{display:flex;gap:14px;align-items:center;justify-content:flex-end;padding:2px 4px 8px;border-bottom:1px solid var(--line-soft);font-size:12px;min-width:560px}
.ct-extra .check{font-size:12px}
.ct-add{display:grid;grid-template-columns:1.6fr 1fr auto 1fr auto;gap:8px;align-items:center}
.ct-add .input{padding:8px 10px;font-size:13px}
@media (max-width:640px){.ct-add{grid-template-columns:1fr 1fr}.ct-add .btn{grid-column:1/-1}}

/* ---------- Tutorial guiado ---------- */
.tour-block{position:fixed;inset:0;z-index:89}
.tour-shade{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:90;pointer-events:none}
.tour-spot{position:fixed;z-index:90;border-radius:12px;pointer-events:none;box-shadow:0 0 0 9999px rgba(0,0,0,.72),0 0 0 2px var(--orange),0 0 24px rgba(246,143,28,.45);transition:all .25s ease}
.tour-card{position:fixed;z-index:91;width:min(360px,calc(100vw - 24px));background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px 18px 14px;box-shadow:0 24px 60px rgba(0,0,0,.55);animation:pop .2s}
.tour-card p{color:var(--text-2);font-size:13.5px;line-height:1.55}
.tour-step{font-size:11px;font-weight:700;letter-spacing:.12em;color:var(--orange)}
.tour-dots{display:flex;gap:5px;margin:14px 0 12px;flex-wrap:wrap}
.tour-dots i{width:6px;height:6px;border-radius:50%;background:var(--line)}
.tour-dots i.on{background:var(--grad-h);width:18px;border-radius:4px}
.tour-foot{display:flex;align-items:center;gap:8px}
@media (max-width:620px){.tour-card{width:auto}}

/* ---------- SimCenter · simuladores ---------- */
.head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.kpi-of{font-size:20px;color:var(--muted);margin-left:2px}
.sim-legends{display:flex;gap:8px 16px;flex-wrap:wrap;margin-bottom:14px;font-size:12px;color:var(--text-2)}
.sim-legend{display:inline-flex;align-items:center;gap:6px}
.sim-legend i{width:10px;height:10px;border-radius:3px;background:var(--line)}
.sim-legend b{color:var(--text)}
.sim-legend.st-free i{background:var(--ok)} .sim-legend.st-run i{background:var(--red)} .sim-legend.st-paused i{background:var(--orange)}
.sim-legend.st-done i{background:#ff3b3e;box-shadow:0 0 0 2px rgba(255,59,62,.35)} .sim-legend.st-oos i{background:var(--surface-3)}
.sim-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.sim-card{position:relative;display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--radius);
  padding:14px 14px 12px;cursor:pointer;transition:border-color .15s,transform .05s;overflow:hidden;min-height:196px}
.sim-card:hover{border-color:var(--line)}
.sim-card::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:var(--line)}
.sim-card.st-free::before{background:var(--ok)}
.sim-card.st-run::before,.sim-card.st-prep::before{background:var(--grad-h)}
.sim-card.st-warn::before,.sim-card.st-paused::before{background:var(--orange)}
.sim-card.st-done::before{background:#ff3b3e}
.sim-card.st-run,.sim-card.st-prep{background:linear-gradient(180deg,rgba(214,0,3,.10),rgba(214,0,3,0) 60%),var(--surface)}
.sim-card.st-warn{border-color:rgba(246,143,28,.55);background:linear-gradient(180deg,rgba(246,143,28,.14),rgba(246,143,28,0) 70%),var(--surface)}
.sim-card.st-paused{border-style:dashed;border-color:rgba(246,143,28,.5)}
.sim-card.st-done{border-color:#ff3b3e;background:linear-gradient(180deg,rgba(214,0,3,.26),rgba(214,0,3,.06)),var(--surface);animation:simAlarm 1.2s ease-in-out infinite}
@keyframes simAlarm{0%,100%{box-shadow:0 0 0 0 rgba(255,59,62,0)}50%{box-shadow:0 0 0 4px rgba(255,59,62,.35)}}
.sim-card.st-oos{opacity:.62;background:repeating-linear-gradient(135deg,var(--surface),var(--surface) 10px,#1a1a1a 10px,#1a1a1a 20px)}
.sim-card.motion{grid-column:span 2}
@media (max-width:520px){.sim-card.motion{grid-column:auto}}
.sim-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.sim-name{font-size:26px}
.sim-model{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:right}
.sim-card.motion .sim-model{color:var(--orange)}
.sim-badge{align-self:flex-start}
.sim-who{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px;margin-top:2px}
.sim-who b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.sim-timer{font-size:38px;font-weight:800;letter-spacing:-.02em;line-height:1;margin-top:4px}
.sim-card.st-warn .sim-timer{color:var(--orange)} .sim-card.st-done .sim-timer{color:#ff4b4e}
.sim-card.st-paused .sim-timer,.sim-card.st-prep .sim-timer{color:var(--orange)}
.sim-cap{font-size:11.5px;color:var(--muted)}
.sim-card .bar{margin-top:2px}
.sim-card.st-warn .bar i{background:var(--orange)} .sim-card.st-done .bar i{background:#ff3b3e}
.sim-meta{font-size:11.5px;color:var(--muted)}
.sim-free{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center}
.sim-free .t-title{font-size:30px;color:var(--ok)}
.sim-actions{display:flex;gap:6px;margin-top:auto;padding-top:6px}
.sim-actions .btn{flex:1}
.sim-mini{font-size:20px;font-weight:800}
.sim-mini.ph-warn,.sim-mini.ph-paused,.sim-mini.ph-prep{color:var(--orange)} .sim-mini.ph-done{color:#ff4b4e}
.timer-big.ph-prep,.timer-big.ph-paused,.timer-big.ph-warn{color:var(--orange)} .timer-big.ph-done{color:#ff4b4e}
.sim-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:16px}
.sim-facts div{background:var(--bg);border:1px solid var(--line-soft);border-radius:10px;padding:8px 10px}
.sim-facts span{display:block;font-size:10.5px;color:var(--muted);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.sim-facts b{font-variant-numeric:tabular-nums;font-size:15px}
@media (max-width:520px){.sim-facts{grid-template-columns:1fr 1fr}}
.ctl-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:6px 0}
.ctl-row + .ctl-row{border-top:1px solid var(--line-soft)}
.ctl-row > span{font-size:12px;font-weight:600;color:var(--text-2)}
.sim-use{padding:7px 0}
.sim-use .bar{margin-top:4px}
.toolbar .field > span{margin-bottom:3px}
.toolbar .field .input{padding:8px 10px;font-size:13px}

/* Formulario «Iniciar sesión»: opciones como fichas seleccionables */
.rchips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.rchip{position:relative;display:inline-flex}
.rchip input{position:absolute;opacity:0;pointer-events:none}
.rchip span{display:inline-flex;flex-direction:column;align-items:center;border:1px solid var(--line);border-radius:10px;padding:7px 12px;font-size:12.5px;font-weight:600;
  color:var(--text-2);cursor:pointer;line-height:1.2;transition:background .12s,border-color .12s}
.rchip span small{font-size:9.5px;font-weight:600;color:var(--muted);letter-spacing:.04em;margin-top:2px}
.rchip span:hover{border-color:var(--muted)}
.rchip input:checked + span{background:var(--text);color:#111;border-color:var(--text)}
.rchip input:checked + span small{color:#555}
.rchip input:focus-visible + span{outline:2px solid var(--orange);outline-offset:2px}
.rchip.off span{opacity:.35;cursor:not-allowed;text-decoration:line-through}
.rchip.sim span{min-width:74px}
.simstart .k-socio,.simstart .k-cliente,.simstart .k-invitado,.simstart .dur-custom{display:none}
.simstart:has(input[name=kind][value=socio]:checked) .k-socio,
.simstart:has(input[name=kind][value=cliente]:checked) .k-cliente,
.simstart:has(input[name=kind][value=invitado]:checked) .k-invitado{display:block;margin-top:12px}
.simstart:has(input[name=dur][value=custom]:checked) .dur-custom{display:block;width:110px}
.mlist{max-height:240px;overflow:auto;margin-top:8px;border:1px solid var(--line-soft);border-radius:10px}
.mrow{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line-soft);cursor:pointer}
.mrow:last-child{border-bottom:0}
.mrow:hover{background:var(--surface-2)}
.mrow input{accent-color:var(--red);width:16px;height:16px;flex:none}
.mrow .grow{flex:1;min-width:0}
.mrow b{font-weight:600;display:block}
.mrow small{color:var(--muted);font-size:11.5px}
.mrow:has(input:checked){background:rgba(214,0,3,.14)}
.mrow.off{opacity:.45;cursor:not-allowed}
.mrow[hidden]{display:none}
/* Móvil: dos simuladores por fila para ver el estado de todos de un vistazo */
@media (max-width:520px){
  .sim-grid{grid-template-columns:1fr 1fr;gap:8px}
  .sim-card{padding:11px 10px 10px;min-height:0;gap:4px}
  .sim-card.motion{grid-column:span 2}
  .sim-name{font-size:21px}
  .sim-model{font-size:9px}
  .sim-timer{font-size:27px}
  .sim-free .t-title{font-size:22px}
  .sim-who{font-size:12px} .sim-who .badge{display:none}
  .sim-cap,.sim-meta{font-size:10.5px}
  .sim-actions{flex-wrap:wrap}
  .sim-actions .btn{padding:6px 8px;font-size:11.5px}
}

/* ---------- Sala en 3D ---------- */
.room3d{position:relative;isolation:isolate;height:clamp(380px,58vw,700px);border-radius:var(--radius);overflow:hidden;border:1px solid var(--line-soft);margin-bottom:16px;
  background:radial-gradient(120% 95% at 50% 30%,#2b2b2f 0%,#18181a 55%,#0d0d0e 100%);touch-action:none;user-select:none;-webkit-user-select:none}
.room3d canvas{display:block;cursor:grab}
.room3d canvas:active{cursor:grabbing}
.room3d-msg{display:grid;place-items:center;color:var(--muted);font-size:13px;text-align:center;padding:20px}
.room3d-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.r3-label{position:absolute;left:0;top:0;margin-top:-9px;pointer-events:auto;display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 8px;border-radius:20px;
  background:rgba(10,10,12,.88);border:1px solid rgba(255,255,255,.16);color:#fff;font:600 12px var(--f-body);white-space:nowrap;cursor:pointer;
  box-shadow:0 6px 16px rgba(0,0,0,.55);transition:border-color .15s}
.r3-label:hover{border-color:var(--orange)}
.r3-label::after{content:"";position:absolute;left:50%;bottom:-5px;width:8px;height:8px;background:rgba(10,10,12,.88);border-right:1px solid rgba(255,255,255,.16);
  border-bottom:1px solid rgba(255,255,255,.16);transform:translateX(-50%) rotate(45deg)}
.r3-label b{font-weight:800;letter-spacing:.02em}
.r3-label svg{color:var(--orange)}
.r3-time{font-weight:700;color:var(--text-2)}
.r3-dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none;background:#2fd36b;box-shadow:0 0 0 2px rgba(47,211,107,.22),0 0 10px rgba(47,211,107,.8)}
.r3-dot.busy,.r3-label:not(.st-free):not(.st-oos) .r3-dot{background:#ff2a2a;box-shadow:0 0 0 2px rgba(255,42,42,.25),0 0 10px rgba(255,42,42,.9)}
.r3-label.st-oos{opacity:.75} .r3-label.st-oos .r3-dot{background:#6d6d72;box-shadow:none}
.r3-label.st-oos .r3-time{font-weight:600;color:var(--muted);font-size:10.5px}
.r3-label.st-warn .r3-time{color:var(--orange)}
.r3-label.st-done{border-color:#ff3b3e;animation:simAlarm 1.2s ease-in-out infinite}
.r3-label.st-done .r3-time{color:#ff6b6d}
.room3d.compact .r3-pre{display:none}
.room3d.compact .r3-label{font-size:10.5px;padding:3px 7px 3px 6px;gap:4px}
.room3d.compact .r3-dot{width:7px;height:7px}
.room3d-tools{position:absolute;right:10px;top:10px;display:flex;gap:8px;align-items:center;z-index:2000}
.room3d-hint{font-size:11px;color:var(--muted)}
.room3d-reset{background:rgba(10,10,12,.8);border:1px solid var(--line);color:var(--text-2);border-radius:8px;padding:5px 10px;font-size:11.5px;font-weight:600}
.room3d-reset:hover{color:var(--text);border-color:var(--muted)}
.room3d-key{position:absolute;left:12px;bottom:10px;display:flex;gap:14px;font-size:11.5px;color:var(--text-2);z-index:2000;pointer-events:none}
.room3d-key span{display:inline-flex;align-items:center;gap:6px}
@media (max-width:620px){.room3d-hint{display:none}.room3d{height:360px}}
.news-item.reto h4{color:var(--text)}
.news-item.reto{border-left:3px solid var(--orange);padding-left:14px;margin-left:-4px}
.r3-label.hover{border-color:var(--orange);box-shadow:0 0 0 2px rgba(246,143,28,.35),0 6px 16px rgba(0,0,0,.55);z-index:3000!important}

/* ---------- Simuladores en una sola pantalla: sala 3D + lista compacta ---------- */
.sim-head{margin-bottom:12px;align-items:center}
.sim-head h1.t-title{font-size:30px}
.sim-head p{margin-top:0}
.simdesk{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,410px);gap:14px;height:620px;min-height:440px}
.simdesk-room{min-height:0;display:flex}
.simdesk-room .room3d-slot,.simdesk-room > .room3d{flex:1;height:100%!important;margin:0}
.simdesk-list{display:flex;flex-direction:column;min-height:0;padding:10px 10px 8px}
.card + .card.simdesk-list{margin-top:0}
.sl-legend{display:flex;gap:4px 12px;flex-wrap:wrap;font-size:11.5px;color:var(--text-2);padding:0 4px 8px;border-bottom:1px solid var(--line-soft)}
.sl-rows{flex:1;min-height:0;display:flex;flex-direction:column;gap:4px;padding-top:6px;overflow:auto}
.sl-row{position:relative;display:grid;grid-template-columns:10px 70px minmax(0,1fr) auto auto;align-items:center;gap:8px;flex:1 1 0;min-height:36px;max-height:62px;
  padding:0 6px 0 10px;border-radius:9px;background:var(--surface-2);border:1px solid transparent;cursor:pointer;transition:border-color .12s,background .12s}
.sl-row:hover,.sl-row.hover{border-color:var(--orange)}
.sl-row .r3-dot{width:9px;height:9px}
.sl-row:not(.st-free):not(.st-oos) .r3-dot{background:#ff2a2a;box-shadow:0 0 0 2px rgba(255,42,42,.25),0 0 10px rgba(255,42,42,.9)}
.sl-row.st-oos{opacity:.55} .sl-row.st-oos .r3-dot{background:#6d6d72;box-shadow:none}
.sl-row.st-warn{background:linear-gradient(90deg,rgba(246,143,28,.16),var(--surface-2) 70%)}
.sl-row.st-paused{background:linear-gradient(90deg,rgba(246,143,28,.10),var(--surface-2) 70%)}
.sl-row.st-done{background:linear-gradient(90deg,rgba(214,0,3,.30),rgba(214,0,3,.08));border-color:rgba(255,59,62,.6);animation:simAlarm 1.2s ease-in-out infinite}
.sl-row.st-run,.sl-row.st-prep{background:linear-gradient(90deg,rgba(214,0,3,.12),var(--surface-2) 70%)}
.sl-name{display:flex;flex-direction:column;line-height:1.1}
.sl-name b{font-family:var(--f-title);font-weight:400;font-size:19px}
.sl-name small{font-size:9px;font-weight:700;letter-spacing:.08em;color:var(--orange)}
.sl-who{min-width:0;display:flex;flex-direction:column;line-height:1.2;font-size:12.5px}
.sl-who b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sl-who small{font-size:10.5px;color:var(--muted)}
.sl-grp{align-self:flex-start;display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;color:var(--orange);background:var(--warn-bg);border-radius:10px;padding:0 6px;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.sl-time{font-size:19px;font-weight:800;letter-spacing:-.01em}
.sl-row.st-warn .sl-time,.sl-row.st-paused .sl-time,.sl-row.st-prep .sl-time{color:var(--orange)} .sl-row.st-done .sl-time{color:#ff6b6d}
.sl-acts{display:flex;gap:2px;justify-content:flex-end}
.sl-acts .icon-btn{width:28px;height:28px}
.sl-acts .btn.sm{padding:5px 9px;font-size:11.5px}
.sl-bar{position:absolute;left:10px;right:10px;bottom:3px;height:2px;border-radius:2px;background:rgba(255,255,255,.07);overflow:hidden}
.sl-bar i{display:block;height:100%;background:var(--grad-h)}
.sl-row.st-warn .sl-bar i{background:var(--orange)} .sl-row.st-done .sl-bar i{background:#ff3b3e}
.sl-foot{padding:8px 4px 0}
.grp-panel{border-color:rgba(246,143,28,.35)}
@media (max-width:900px){
  .simdesk{grid-template-columns:1fr;height:auto!important}
  .simdesk-room .room3d-slot,.simdesk-room > .room3d{height:340px!important}
  .sl-row{flex:none;min-height:46px}
}

main.tight{padding-top:12px;padding-bottom:16px}
.sim-head{margin-bottom:10px}
.sim-counts{display:flex;gap:4px 14px;flex-wrap:wrap;font-size:12.5px;color:var(--text-2);margin-top:2px}
.sim-counts span{display:inline-flex;align-items:center;gap:6px}
.sim-counts i{width:9px;height:9px;border-radius:50%;background:var(--line)}
.sim-counts .st-free i{background:#2fd36b} .sim-counts .st-run i{background:#ff2a2a} .sim-counts .st-done i{background:#ff3b3e;box-shadow:0 0 0 2px rgba(255,59,62,.35)} .sim-counts .st-oos i{background:#6d6d72}
.simdesk-list{padding:8px}
.sl-rows{padding-top:0;gap:4px}
.sl-row{min-height:30px}
@media (max-height:760px){ .sl-name b,.sl-time{font-size:16.5px} .sl-who{font-size:12px} .sim-head h1.t-title{font-size:26px} }
.gp-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px 10px}
.gp-row{display:grid;grid-template-columns:62px 1fr;align-items:center;gap:8px}
.gp-row[hidden],.gp-empty[hidden]{display:none}
.gp-row b{font-family:var(--f-title);font-weight:400;font-size:17px}
.gp-row .input{padding:8px 10px;font-size:13px}

/* ---------- Simuladores en el móvil ---------- */
.room3d canvas{width:100%!important;height:100%!important}
.room3d{min-width:0}
.simdesk,.simdesk-room,.simdesk-list{min-width:0}
@media (max-width:620px){
  .sim-head{gap:10px}
  .sim-head .head-actions{width:100%;display:grid;grid-template-columns:auto auto 1fr 1fr;gap:8px}
  .sim-head .head-actions .btn{padding:10px 8px;font-size:12.5px}
  .sim-head h1.t-title{font-size:26px}
  .sim-counts{font-size:11.5px;gap:2px 10px}
  .simdesk-room .room3d-slot,.simdesk-room > .room3d{height:300px!important}
  .room3d-key{font-size:10.5px;gap:10px;left:8px;bottom:6px}
  .room3d-tools{top:6px;right:6px}
  .simdesk-list{padding:6px}
  .sl-row{grid-template-columns:9px 50px minmax(0,1fr) auto auto;gap:6px;padding:0 4px 0 8px;min-height:48px}
  .sl-name b{font-size:16px}
  .sl-who{font-size:12px}
  .sl-time{font-size:16px}
  .sl-acts .icon-btn{width:30px;height:30px}
  .sl-acts .btn.sm{padding:6px 8px}
  /* formularios de sesión: más cómodos con el dedo */
  .modal{padding:16px;border-radius:14px}
  .rchip span{padding:9px 11px}
  .rchip.sim span{min-width:62px}
  .gp-list{grid-template-columns:1fr}
  .simstart .modal-foot .btn{flex:1}
  .sim-facts{grid-template-columns:1fr 1fr}
  .timer-big{font-size:46px}
}
@media (max-width:380px){
  .sim-head .head-actions{grid-template-columns:auto auto 1fr}
  .sim-head .head-actions [data-act=simStart]{grid-column:1/-1}
  .sl-who small,.sl-grp{display:none}
}
/* Resumen: la misma sala 3D, más pequeña */
.dash-room{padding-bottom:12px}
.dash-room-box .room3d-slot,.dash-room-box > .room3d{height:340px;margin:0}
@media (max-width:620px){.dash-room-box .room3d-slot,.dash-room-box > .room3d{height:260px}}

/* =====================================================================
   Portal de gestión: selector de sección (SimCenter · Taller · …)
   ===================================================================== */
.modules{display:flex;gap:4px;background:var(--bg);border:1px solid var(--line);border-radius:11px;padding:3px}
.module{border:0;background:none;border-radius:8px;padding:7px 14px;font-weight:700;font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:6px;white-space:nowrap}
.module:hover{color:var(--text)}
.module.on{background:var(--grad-h);color:#fff}
.module .count{background:var(--red);color:#fff;border-radius:10px;font-size:10px;padding:1px 6px}
.module.on .count{background:rgba(0,0,0,.35)}
.module.soon{opacity:.45;cursor:default}
.module.soon:hover{color:var(--muted)}
.module.soon small{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--line);border-radius:6px;padding:0 4px}
@media (max-width:1180px){
  .module.soon{display:none}
  .module{padding:7px 10px}
  .brand-tag{display:none}
}
@media (max-width:760px){
  .topbar-in{flex-wrap:wrap;row-gap:8px}
  .modules{order:3;width:100%}
  .module{flex:1;justify-content:center}
  .module{padding:7px 8px}
  .module.soon small{display:none}
  .brand-tag{display:none}
}

/* =====================================================================
   Taller
   ===================================================================== */
.row3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.row2 + .row3,.row3 + .row2,.row3 + .row3,.field + .row3,.row3 + .field{margin-top:12px}
.kpi-bad .v{color:var(--bad)}
.kpi-bad::after{background:var(--red)}
.wk-thumb{display:block;border-radius:8px;object-fit:cover;background:#fff;flex:none}
.wk-thumb.ph{display:grid;place-items:center;background:var(--surface-2);color:var(--muted)}
.wk-table tbody tr{cursor:pointer}
.wk-td-img{width:56px}
.wk-stock{font-weight:700}
.wk-stock.low{color:var(--bad)}
.wk-stock.out{color:var(--muted)}
.wk-row-low td{background:rgba(214,0,3,.08)}
.wk-row-low td:first-child{box-shadow:inset 3px 0 0 var(--red)}
.wk-qty{font-weight:700;white-space:nowrap}
.wk-qty.in{color:var(--ok)}
.wk-qty.outq{color:var(--orange)}
.wk-sel{width:auto;max-width:240px;padding:8px 10px}
.wk-seg button{flex:none}
.wk-date{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.wk-date .input{width:auto;padding:7px 9px}
.wk-low-row{cursor:pointer}
.wk-low-row .grow b{color:var(--text)}
.list-row[data-act]{cursor:pointer}
.list-row[data-act]:hover{background:rgba(255,255,255,.02)}
.wk-ficha{display:grid;grid-template-columns:200px minmax(0,1fr);gap:18px;align-items:start}
.wk-ficha-img img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px;background:#fff;display:block}
.wk-noimg{aspect-ratio:1;border:1px dashed var(--line);border-radius:12px;display:grid;place-content:center;justify-items:center;gap:6px;color:var(--muted);font-size:12px}
.wk-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;font-size:13px}
.wk-facts span{display:block;font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.wk-facts b{font-weight:600;word-break:break-word}
.wk-desc{margin-top:14px;color:var(--text-2);font-size:13px;white-space:pre-line}
.wk-pre{white-space:pre-line;font-size:13px;color:var(--text-2);background:var(--bg);border:1px solid var(--line-soft);border-radius:var(--radius-sm);padding:10px 12px}
.wk-vtable td,.wk-vtable th{padding:9px 10px}
.wk-hist{max-height:300px;overflow:auto;padding-right:4px}
.wk-foot{align-items:center}
.wk-imgrow{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;align-items:end;margin-top:12px}
.wk-imgprev{width:64px;height:64px;border-radius:10px;border:1px dashed var(--line);display:grid;place-items:center;color:var(--muted);overflow:hidden;background:var(--bg)}
.wk-imgprev img{width:100%;height:100%;object-fit:cover;background:#fff}
.wk-vars-field{margin-top:14px}
.wk-vars{display:flex;flex-direction:column;gap:6px}
.wk-var{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) 84px 84px 96px 34px;gap:6px;align-items:center}
.wk-var .input{padding:8px 9px;font-size:13px}
.wk-var-st{text-align:center}
.wk-move .rchips{flex-wrap:wrap}
.wk-kind-help{margin:6px 0 2px}
.wk-calc{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;font-size:14px;min-height:42px}
.wk-neg{margin-top:12px}
.wk-import-cats{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.wk-import-cats .chip b{margin-left:4px}
.wk-progress{height:8px;background:var(--surface-3);border-radius:6px;overflow:hidden;margin-top:14px}
.wk-progress i{display:block;height:100%;background:var(--grad-h);transition:width .2s}
@media (max-width:760px){
  .wk-ficha{grid-template-columns:1fr}
  .wk-ficha-img{max-width:220px}
  .row3{grid-template-columns:1fr}
  .wk-var{grid-template-columns:1fr 1fr;padding:8px;border:1px solid var(--line-soft);border-radius:10px}
  .wk-var .icon-btn{justify-self:end}
  .wk-sel{max-width:none;flex:1}
  .wk-seg{width:100%!important;overflow-x:auto}
}
/* Móvil: cada artículo es una tarjeta con su foto pequeña a la izquierda del nombre */
@media (max-width:820px){
  .wk-table tbody tr{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center}
  .wk-table td.wk-td-img{display:block;width:auto;padding:8px 0 4px 12px}
  .wk-table td.name{grid-column:2;min-width:0;padding-left:10px}
  .wk-table tbody td:not(.wk-td-img):not(.name){grid-column:1 / -1}
}

/* Menú de tutoriales (botón «?» del portal de gestión) */
.tour-menu{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.tour-opt{display:flex;align-items:center;gap:14px;text-align:left;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:14px 16px;color:var(--text)}
.tour-opt:hover{border-color:var(--orange)}
.tour-opt b{display:block;font-size:15px}
.tour-opt small{display:block;color:var(--muted);font-size:12.5px;margin-top:2px}
.tour-opt > span:nth-child(2){flex:1;min-width:0}
.tour-opt-ic{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;background:var(--grad);color:#fff;flex:none}
.tour-opt-n{font-size:12px;color:var(--muted);white-space:nowrap}
@media (max-width:420px){.tour-opt-n{display:none}}

/* =====================================================================
   Taller · fabricación (disponible para vender, composición y pedidos)
   ===================================================================== */
.wk-chips{display:flex;flex-wrap:wrap;gap:6px}
.wk-cap{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:20px;padding:3px 10px;font-size:12px;color:var(--muted)}
.wk-cap b{color:var(--text-2);font-weight:700}
.wk-cap.ok{border-color:rgba(63,185,107,.45);background:var(--ok-bg);color:var(--text-2)}
.wk-cap.ok b{color:var(--ok)}
.wk-cap.dim{opacity:.5}
.wk-sell-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line-soft)}
.wk-sell-row:last-child{border-bottom:0}
.wk-sell-row .grow{flex:1;min-width:0}
.wk-sell-row .grow > b{display:inline-block;margin-bottom:6px;cursor:pointer}
.wk-sell-tot{text-align:center;min-width:64px}
.wk-sell-tot .num{display:block;font-family:var(--f-title);font-size:28px;line-height:1}
.wk-sell-tot small{font-size:11px;color:var(--muted)}
.wk-capn{font-size:16px;color:var(--muted)}
.wk-capn.ok{color:var(--ok)}
.wk-dim td{opacity:.55}
.wk-stepper{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:12px}
.wk-stepper span{height:6px;border-radius:4px;background:var(--surface-3)}
.wk-stepper span.done{background:var(--ok)}
.wk-stepper span.on{background:var(--grad-h)}
.wk-stepper span.opt:not(.done):not(.on){opacity:.4}
.wk-stepper.off span{background:var(--surface-3)!important;opacity:.5}
.wk-orders{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
.wk-order{padding:16px}
.wk-order.st-cancelado{opacity:.6}
.wk-order-top{display:flex;gap:12px;align-items:flex-start;cursor:pointer}
.wk-order-top .grow{flex:1;min-width:0}
.wk-order-code{font-size:12px;font-weight:700;color:var(--muted);letter-spacing:.06em;display:flex;align-items:center;gap:8px;margin-bottom:3px}
.wk-late{color:var(--bad)}
.wk-miss{margin-top:10px;font-size:12px;color:var(--bad);background:var(--bad-bg);border-radius:8px;padding:7px 10px;display:flex;gap:6px;align-items:flex-start}
.wk-order-acts{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.wk-steps{display:flex;flex-wrap:wrap;gap:6px}
.wk-stepnav{display:flex;justify-content:space-between;gap:8px;margin:2px 0 10px;flex-wrap:wrap}
.wk-step{border:1px solid var(--line);background:var(--bg);border-radius:20px;padding:7px 12px;font-size:12.5px;font-weight:600;color:var(--text-2);display:inline-flex;align-items:center;gap:5px}
.wk-step:hover:not(:disabled){border-color:var(--orange);color:var(--text)}
.wk-step.done{color:var(--ok);border-color:rgba(63,185,107,.4)}
.wk-step.on{background:var(--grad-h);color:#fff;border-color:transparent;opacity:1}
.wk-step:disabled:not(.on){opacity:.45;cursor:not-allowed}
.wk-ofacts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:14px;font-size:13px}
.wk-ofacts span{display:block;font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.wk-ofacts b{font-weight:600;display:block}
.wk-ofacts small{display:block;color:var(--muted);font-size:11.5px;word-break:break-all}
.wk-det summary{cursor:pointer;font-weight:600;font-size:13px;color:var(--text-2)}
.wk-timeline{display:flex;flex-direction:column;gap:10px;max-height:260px;overflow:auto}
.wk-ev{display:flex;gap:10px;align-items:flex-start;font-size:13px}
.wk-ev i{width:10px;height:10px;border-radius:50%;margin-top:5px;flex:none;background:var(--muted)}
.wk-ev i.ok{background:var(--ok)} .wk-ev i.warn{background:var(--orange)} .wk-ev i.bad{background:var(--bad)}
.wk-copy{display:flex;gap:8px;align-items:center;margin:4px 0 12px}
.wk-copy .wk-sel{flex:1;max-width:none}
.wk-bom-head,.wk-bom-row{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1.2fr) 90px 34px;gap:6px;align-items:center}
.wk-bom-head{font-size:11px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
.wk-bom-rows{display:flex;flex-direction:column;gap:6px}
.wk-bom-row .input{padding:8px 9px;font-size:13px}
@media (max-width:760px){
  .wk-orders{grid-template-columns:1fr}
  .wk-ofacts{grid-template-columns:1fr 1fr}
  .wk-bom-head{display:none}
  .wk-bom-row{grid-template-columns:1fr 1fr;padding:8px;border:1px solid var(--line-soft);border-radius:10px}
  .wk-bom-row select[name=b_comp]{grid-column:1 / -1}
  .wk-sell-row{flex-wrap:wrap}
  .wk-sell-row .grow{flex-basis:calc(100% - 60px)}
}
.toolbar .seg button{white-space:nowrap}
.wk-man{margin-top:12px}
/* Partes del montaje en los pedidos */
.wk-parts{display:flex;flex-wrap:wrap;gap:6px}
.wk-part{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:var(--bg);border-radius:20px;padding:7px 12px;font-size:12.5px;font-weight:600;color:var(--text-2)}
.wk-part i{width:13px;height:13px;border:1.5px solid var(--muted);border-radius:4px;display:inline-block}
.wk-part:hover:not(:disabled){border-color:var(--orange)}
.wk-part.done{background:var(--ok-bg);border-color:rgba(63,185,107,.5);color:var(--ok)}
.wk-part:disabled{cursor:default;opacity:.8}
.wk-partbar{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:12px;color:var(--muted)}
.wk-partbar b{color:var(--text-2)}
.wk-partbar i{flex:1;height:6px;border-radius:4px;background:var(--surface-3);overflow:hidden;display:block}
.wk-partbar i b{display:block;height:100%;background:var(--ok)}
/* Paso «Materiales»: lista de piezas para marcar */
.wk-mat{display:flex;flex-direction:column;gap:4px;max-height:340px;overflow:auto;padding-right:2px}
.wk-matrow{display:flex;align-items:center;gap:9px;width:100%;text-align:left;border:1px solid var(--line);background:var(--bg);border-radius:10px;padding:8px 10px;font-size:12.5px;color:var(--text-2)}
.wk-matrow i{flex:none;width:14px;height:14px;border:1.5px solid var(--muted);border-radius:4px;display:inline-block}
.wk-matrow svg{flex:none}
.wk-matrow .grow{flex:1;min-width:0}
.wk-matrow .num{min-width:52px;text-align:right}
.wk-matrow .num{font-weight:700;color:var(--text);white-space:nowrap}
.wk-matrow small{width:74px;text-align:right;white-space:nowrap}
.wk-matrow:hover:not(:disabled){border-color:var(--orange)}
.wk-matrow.done{background:var(--ok-bg);border-color:rgba(63,185,107,.45);color:var(--ok)}
.wk-matrow:disabled{cursor:default;opacity:.85}
.wk-mat-acts{display:flex;gap:8px;justify-content:flex-end;align-items:center;margin-top:8px;flex-wrap:wrap}
.wk-ordtools{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
@media (max-width:520px){.wk-matrow small{width:auto}}

/* Chasis en 3D del pedido */
.wk3d-slot{margin-top:14px}
.wk3d{position:relative;height:340px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line-soft);margin-top:14px;
  background:radial-gradient(ellipse at 50% 35%,#2a2a2e 0%,#151517 65%,#0e0e10 100%)}
.wk3d canvas{display:block;width:100%!important;height:100%!important;cursor:grab;touch-action:none}
.wk3d canvas:active{cursor:grabbing}
.wk3d-msg{display:grid;place-items:center;color:var(--muted);font-size:13px;text-align:center;padding:20px}
.wk3d-labels{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.wk3d-label{position:absolute;left:0;top:0;pointer-events:auto;border:1px solid var(--line);background:rgba(16,16,18,.88);color:var(--text-2);
  font-size:11.5px;font-weight:700;border-radius:20px;padding:4px 10px;white-space:nowrap;cursor:default}
.wk3d-label.click{cursor:pointer}
.wk3d-label.done{border-color:rgba(63,185,107,.6);background:rgba(20,60,36,.92);color:#8ef0b0}
.wk3d-label.next{border-color:var(--orange);color:#fff;box-shadow:0 0 0 2px rgba(246,143,28,.25)}
.wk3d-tools{position:absolute;right:10px;top:10px;display:flex;gap:8px;align-items:center;z-index:2000}
.wk3d-hint{font-size:11px;color:var(--muted)}
.wk3d-reset{background:rgba(10,10,12,.8);border:1px solid var(--line);color:var(--text-2);border-radius:8px;padding:4px 9px;font-size:13px}
.wk3d-key{position:absolute;left:12px;bottom:10px;display:flex;gap:12px;font-size:11px;color:var(--text-2);z-index:2000;pointer-events:none}
.wk3d-key span{display:inline-flex;align-items:center;gap:5px}
.wk3d-key i{width:10px;height:10px;border-radius:3px;border:1.5px solid #9aa0aa;display:inline-block}
.wk3d-key i.ok{background:var(--ok);border-color:var(--ok)}
.wk3d-key i.next{border-color:var(--orange)}
.wk3d.view-only .wk3d-key{display:none}
.wk3d-note{position:absolute;left:12px;top:12px;font-size:10.5px;color:var(--muted);z-index:2000;pointer-events:none}
@media (max-width:620px){.wk3d{height:280px}.wk3d-hint,.wk3d-note{display:none}}

/* Fotos de montaje y embalaje (Google Drive) */
.wk-photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px}
.wk-photo{border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:4px;font-size:12px;min-width:0}
.wk-photo.ok{border-color:rgba(63,185,107,.45)}
.wk-photo.skip{border-style:dashed;opacity:.85}
.wk-photo-img{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;border-radius:8px;background:var(--surface-2) center/cover no-repeat;color:var(--muted);font-size:11px}
.wk-photo b{font-size:12px;line-height:1.25}
.wk-photo small{color:var(--muted);font-size:10.5px;line-height:1.3;overflow:hidden;text-overflow:ellipsis}
.wk-photo-acts{display:flex;align-items:center;gap:8px;margin-top:auto;flex-wrap:wrap}

/* Equipo: campana, avisos y mejoras (portal) */
.icon-btn.bell{position:relative}
.icon-btn.bell.on{color:var(--orange)}
.bell-n{position:absolute;top:-3px;right:-4px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--red);color:#fff;font-size:10px;font-weight:800;line-height:17px;text-align:center}
.team-msg{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:var(--bg);border-radius:12px;padding:10px 12px;margin-bottom:6px}
.team-msg.urgent{border-color:rgba(214,0,3,.55)}
.team-acts{display:flex;gap:6px;flex-wrap:wrap}
.ok-t{color:var(--ok)}
.team-feed{display:flex;gap:10px;padding:7px 4px;border-bottom:1px solid var(--line-soft);font-size:13px}
.team-feed i{flex:none;width:8px;height:8px;border-radius:50%;margin-top:6px;background:var(--line)}
.team-feed.new i{background:var(--orange)}
.team-feed.new{background:rgba(246,143,28,.06)}
.team-idea{margin-bottom:10px}
.team-idea-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.team-idea.st-en_curso{border-color:rgba(246,143,28,.45)}
@media (max-width:520px){.team-msg{flex-direction:column;align-items:stretch}.module.soon{display:none}}

/* Calendario (portal): Google Calendar + entregas y campeonatos */
.cal-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted);margin:-4px 0 10px}
.cal-legend span{display:inline-flex;align-items:center;gap:6px}
.cal-legend span::before{content:'';width:10px;height:10px;border-radius:3px;background:var(--c)}
.cal-legend .k-g{--c:#4a7bd8}.cal-legend .k-order{--c:var(--orange)}.cal-legend .k-champ{--c:#a35bd6}
.cal-wrap{padding:10px}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal-wd{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:2px 6px}
.cal-cell{min-height:104px;border:1px solid var(--line-soft);border-radius:10px;padding:4px;display:flex;flex-direction:column;gap:3px;cursor:pointer;background:var(--bg);min-width:0}
.cal-cell:hover{border-color:var(--line)}
.cal-cell.out{opacity:.45}
.cal-cell.today{border-color:var(--orange);box-shadow:inset 0 0 0 1px var(--orange)}
.cal-n{font-size:12px;font-weight:700;color:var(--text-2);padding:0 3px}
.cal-cell.today .cal-n{color:var(--orange)}
.cal-it{display:block;width:100%;text-align:left;border:0;border-left:3px solid var(--c,#4a7bd8);background:color-mix(in srgb,var(--c,#4a7bd8) 18%,transparent);color:var(--text);border-radius:5px;padding:2px 5px;font-size:11px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-it b{font-weight:700}
.cal-it.k-g{--c:#4a7bd8}.cal-it.a-taller{--c:var(--orange)}.cal-it.a-simcenter{--c:#e0353b}.cal-it.a-general{--c:#8a8f99}
.cal-it.k-order{--c:var(--orange)}.cal-it.k-order.late{--c:#e0353b;font-weight:700}
.cal-it.k-champ{--c:#a35bd6}
.cal-more{font-size:11px;color:var(--muted);padding:0 4px}
.cal-dots{display:none}
.cal-agenda{padding:6px 14px}
.cal-ag-day{display:grid;grid-template-columns:200px 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-soft)}
.cal-ag-day.today .cal-ag-date{color:var(--orange)}
.cal-ag-date{font-weight:700;font-size:13px}
.cal-ag-date::first-letter{text-transform:uppercase}
.cal-ag-its{display:flex;flex-direction:column;gap:5px;min-width:0}
.cal-ag-its .cal-it{font-size:13px;padding:6px 9px;white-space:normal}
@media (max-width:620px){
  .cal-wrap{padding:6px}
  .cal-grid{gap:2px}
  .cal-wd{font-size:10px;padding:2px;text-align:center}
  .cal-cell{min-height:52px;padding:3px;align-items:center}
  .cal-cell .cal-it,.cal-cell .cal-more{display:none}
  .cal-dots{display:flex;gap:2px;flex-wrap:wrap;justify-content:center}
  .cal-dots b{width:6px;height:6px;border-radius:50%;background:#4a7bd8}
  .cal-dots b.k-order{background:var(--orange)}.cal-dots b.k-order.late{background:#e0353b}.cal-dots b.k-champ{background:#a35bd6}
  .cal-ag-day{grid-template-columns:1fr;gap:6px}
}
.cap1::first-letter{text-transform:uppercase}

/* ---------- Biblioteca (Google Drive dentro del portal, 16/10/2026) ---------- */
.lib-ic{display:inline-grid;place-items:center;flex:none;color:var(--muted);position:relative}
.k-folder{--k:#c9c9c9}.k-image{--k:var(--orange)}.k-video,.k-pdf{--k:#ff4d50}.k-audio{--k:#c27cf0}
.k-gdoc,.k-doc,.k-text{--k:#5b8def}.k-gsheet,.k-sheet{--k:#3fb96b}.k-gslides,.k-slides{--k:#f2c14e}.k-zip,.k-file,.k-gother{--k:#9b9b9b}
.lib-ic[class*="k-"]{color:var(--k)}
.lib-head{margin-bottom:14px}
.lib-crumbs{display:flex;align-items:center;flex-wrap:wrap;gap:2px;margin:6px 0 4px;color:var(--muted);font-size:13px}
.lib-crumbs button{background:none;border:0;color:var(--muted);padding:3px 6px;border-radius:6px;font-weight:600}
.lib-crumbs button:hover{background:var(--surface-2);color:var(--text)}
.lib-crumbs b{color:var(--text-2);padding:3px 6px;font-weight:600}
.lib-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.lib-search{flex:1 1 280px;position:relative;display:flex;align-items:center}
.lib-search > svg{position:absolute;left:12px;color:var(--muted);pointer-events:none}
.lib-search .input{padding-left:38px;padding-right:38px;border-radius:999px;background:var(--surface);height:40px}
.lib-search .icon-btn{position:absolute;right:5px}
.lib-tools select.lib-sort{width:auto;height:40px;padding:8px 12px;background:var(--surface)}
.lib-viewsw{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.lib-viewsw button{background:var(--surface);border:0;color:var(--muted);width:40px;height:38px;display:grid;place-items:center}
.lib-viewsw button.on{background:var(--surface-3);color:var(--text)}
.lib-quota{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11.5px;margin-left:auto;min-width:150px}
.lib-quota div{display:flex;flex-direction:column;gap:4px;flex:1}
.lib-quota i{display:block;height:4px;border-radius:4px;background:var(--surface-3);position:relative;overflow:hidden}
.lib-quota i::after{content:'';position:absolute;inset:0 auto 0 0;width:var(--p);background:var(--grad-h);border-radius:4px}
.lib-selbar{position:sticky;top:112px;z-index:5;display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:8px 12px;margin-bottom:14px;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.lib-selacts{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
.lib-sec{font-size:12px;font-weight:700;color:var(--muted);margin:4px 0 10px;letter-spacing:.02em}
.lib-folders{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-bottom:22px}
.lib-fo{position:relative;display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line-soft);border-radius:12px;padding:0 6px 0 14px;height:52px;cursor:pointer;min-width:0;transition:border-color .15s,background .15s}
.lib-fo b{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600;font-size:13.5px}
.lib-fo:hover,.lib-it:hover,.lib-row:hover{border-color:var(--line);background:var(--surface-2)}
.lib-fo.on,.lib-it.on,.lib-row.on{border-color:var(--orange);background:rgba(246,143,28,.08)}
.lib-fo.lib-drop-on{border-color:var(--orange);box-shadow:0 0 0 2px var(--orange) inset}
.lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.lib-it{position:relative;background:var(--surface);border:1px solid var(--line-soft);border-radius:14px;overflow:hidden;cursor:pointer;min-width:0;transition:border-color .15s,background .15s,transform .15s}
.lib-it:hover{transform:translateY(-1px)}
.lib-th{position:relative;aspect-ratio:16/11;background:radial-gradient(120% 90% at 30% 20%,#262626,#151515);display:grid;place-items:center;color:var(--k,var(--muted));overflow:hidden}
.lib-th img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lib-th.k-image img,.lib-th.k-video img{background:#111}
.lib-th img.fit{object-fit:contain;padding:10px;background:radial-gradient(120% 90% at 30% 20%,#262626,#151515)}
.lib-play{position:absolute;width:42px;height:42px;border-radius:50%;background:rgba(0,0,0,.6);border:1.5px solid rgba(255,255,255,.8);display:grid;place-items:center;color:#fff;padding-left:3px;backdrop-filter:blur(4px)}
.lib-dur{position:absolute;right:8px;bottom:8px;background:rgba(0,0,0,.72);color:#fff;font-size:11px;font-weight:700;padding:2px 6px;border-radius:5px}
.lib-nm{display:flex;align-items:center;gap:7px;padding:10px 40px 2px 12px;min-width:0}
.lib-nm b{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;font-weight:600}
.lib-meta{padding:0 12px 11px;font-size:11.5px;color:var(--muted);display:flex;align-items:center;gap:4px}
.lib-star{color:var(--orange);display:inline-grid}.lib-star svg{fill:currentColor}
.lib-shared{color:var(--muted);display:inline-grid}
.lib-ck{position:absolute;top:8px;left:8px;width:24px;height:24px;border-radius:7px;border:1.5px solid rgba(255,255,255,.7);background:rgba(0,0,0,.45);color:transparent;display:grid;place-items:center;opacity:0;transition:opacity .15s;z-index:2}
.lib-it:hover .lib-ck,.lib-fo:hover .lib-ck,.lib-row:hover .lib-ck,.lib-ck[aria-pressed="true"]{opacity:1}
.lib-ck[aria-pressed="true"]{background:var(--orange);border-color:var(--orange);color:#111}
.lib-fo .lib-ck{position:static;flex:none;margin-left:-6px;width:20px;height:20px;display:none}
.lib-fo:hover .lib-ck,.lib-fo .lib-ck[aria-pressed="true"]{display:grid}
.lib-fo:hover .k-folder,.lib-fo.on .k-folder{display:none}
.lib-mn{position:absolute;right:6px;bottom:6px;width:32px;height:32px;border-radius:8px;border:0;background:none;color:var(--muted);display:grid;place-items:center}
.lib-mn:hover{background:var(--surface-3);color:var(--text)}
.lib-fo .lib-mn,.lib-row .lib-mn{position:static;flex:none}
.lib-it.skel{pointer-events:none}.lib-it.skel .lib-th,.lib-it.skel .lib-nm b{background:linear-gradient(90deg,#1c1c1c,#262626,#1c1c1c);background-size:200% 100%;animation:libsk 1.2s infinite linear;border-radius:6px}
.lib-it.skel .lib-nm{padding-bottom:12px}
@keyframes libsk{to{background-position:-200% 0}}
.lib-body.busy{opacity:.6;transition:opacity .2s}
.lib-empty{text-align:center;padding:42px 18px}
.lib-empty .t-title{display:block;font-size:24px;margin:10px 0 6px}
.lib-empty-ic{width:76px;height:76px;margin:0 auto;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;color:var(--muted)}
/* Lista */
.lib-table{padding:6px}
.lib-row{display:grid;grid-template-columns:28px minmax(0,1fr) 140px 110px 90px 36px;align-items:center;gap:10px;padding:6px 8px;border:1px solid transparent;border-radius:10px;cursor:pointer;min-height:48px}
.lib-row.head{cursor:default;min-height:34px;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line-soft);border-radius:0;background:none!important}
.lib-row .lib-ck{position:static;width:20px;height:20px}
.lib-rn{display:flex;align-items:center;gap:10px;min-width:0}
.lib-rn b{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.lib-rn .lib-ic{width:34px;height:34px;border-radius:8px;background:var(--surface-2);overflow:hidden}
.lib-rn .lib-ic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lib-rc{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Menú contextual y «Nuevo» */
.lib-menu{position:fixed;z-index:80;min-width:230px;background:#202020;border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:0 18px 48px rgba(0,0,0,.6);animation:pop .12s}
.lib-menu hr{border:0;border-top:1px solid var(--line-soft);margin:5px 4px}
.lib-mi{display:flex;align-items:center;gap:11px;width:100%;background:none;border:0;border-radius:8px;padding:9px 10px;font-size:13px;font-weight:500;text-align:left;color:var(--text-2)}
.lib-mi svg{color:var(--muted);flex:none}
.lib-mi:hover{background:var(--surface-3);color:var(--text)}.lib-mi:hover svg{color:var(--orange)}
.lib-mi.bad,.lib-mi.bad svg{color:#ff6b6d}
/* Arrastrar para subir */
body.lib-drag .lib-body{outline:2px dashed var(--orange);outline-offset:6px;border-radius:14px}
body.lib-drag .lib-body::after{content:'Suelta aquí para subir a Google Drive';position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--grad-h);color:#fff;font-weight:700;padding:12px 20px;border-radius:999px;box-shadow:0 10px 30px rgba(0,0,0,.5);z-index:60;pointer-events:none}
/* Panel de subidas */
.lib-up{position:fixed;right:18px;bottom:18px;z-index:70;width:340px;max-width:calc(100vw - 24px);background:#1b1b1b;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 48px rgba(0,0,0,.6);overflow:hidden;animation:pop .18s}
.lib-up-h{display:flex;align-items:center;gap:4px;padding:10px 8px 10px 14px;background:var(--surface-2)}
.lib-up-h b{flex:1;font-size:13px}
.lib-up-list{max-height:260px;overflow:auto;padding:4px 0}
.lib-up.min .lib-up-list{display:none}
.lib-up-it{display:flex;align-items:center;gap:10px;padding:7px 14px}
.lib-up-it > div{flex:1;min-width:0}
.lib-up-it b{display:block;font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-up-it small{display:block;color:#ff6b6d;font-size:11px}
.lib-up-it i{display:block;height:3px;border-radius:3px;background:var(--surface-3);margin-top:5px;overflow:hidden}
.lib-up-it u{display:block;height:100%;background:var(--grad-h);transition:width .2s}
.lib-up-it.ok u{background:var(--ok)}
.lib-up-st{font-size:11px;color:var(--muted);min-width:42px;text-align:right}
.lib-up-it.ok .lib-up-st{color:var(--ok)}
/* Visor a pantalla completa */
.modal-bg.lib-viewer-bg{padding:0;background:rgba(8,8,8,.97);backdrop-filter:blur(6px)}
.modal.lib-viewer{max-width:none;width:100%;height:100%;max-height:none;border:0;border-radius:0;padding:0;background:transparent;display:flex;flex-direction:column;overflow:hidden;animation:fade .15s}
.lv-top{display:flex;align-items:center;gap:10px;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));color:#fff;flex:none}
.lv-top .icon-btn{color:#ddd}.lv-top .icon-btn:hover{color:#fff;border-color:rgba(255,255,255,.25)}
.lv-name{flex:1;min-width:0;display:flex;flex-direction:column}
.lv-name b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:15px}
.lv-name small{color:#aaa;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lv-acts{display:flex;gap:4px;flex:none}
.lv-stage{flex:1;min-height:0;position:relative;display:flex;align-items:center;justify-content:center;padding:0 64px 24px}
.lv-img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.lv-video{max-width:100%;max-height:100%;width:100%;background:#000;border-radius:8px;outline:none}
.lv-doc{width:100%;max-width:1000px;height:100%;border:0;border-radius:8px;background:#fff}
.lv-text{width:100%;max-width:900px;height:100%;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:18px;font:13px/1.55 ui-monospace,Consolas,monospace;color:var(--text-2);white-space:pre-wrap;word-break:break-word}
.lv-none{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;max-width:420px;color:#ccc}
.lv-none .lib-ic{width:110px;height:110px;border-radius:28px;background:var(--surface-2)}
.lv-none b{font-size:16px;color:#fff;word-break:break-word}
.lv-none p{font-size:13px;color:#aaa}
.lv-audio{width:min(420px,90vw);margin-top:8px}
.lv-btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin-top:6px}
.lv-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;border:0;background:rgba(255,255,255,.08);color:#fff;display:grid;place-items:center;z-index:2}
.lv-nav:hover{background:rgba(255,255,255,.18)}
.lv-nav.prev{left:10px}.lv-nav.next{right:10px}
/* Mover, compartir y detalles */
.lib-mv-crumbs{display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:13px;margin-bottom:10px;color:var(--muted)}
.lib-mv-list{border:1px solid var(--line-soft);border-radius:12px;max-height:300px;overflow:auto;padding:4px;background:var(--bg)}
.lib-mv-it{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;border-radius:8px;padding:9px 10px;text-align:left;font-size:13.5px}
.lib-mv-it span:nth-child(2){flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-mv-it > svg{color:var(--muted)}
.lib-mv-it:hover{background:var(--surface-2)}.lib-mv-it[disabled]{opacity:.4;cursor:not-allowed}
.input.sm{width:auto;padding:6px 8px;font-size:12.5px}
.lib-sh-add{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center}
.lib-sh-add .check{margin-top:0;grid-column:1/-1}
.lib-sh-add .lib-sh-msg{grid-column:1/-1}
.lib-sh-list{display:flex;flex-direction:column;gap:2px;margin-top:8px}
.lib-sh-p{display:flex;align-items:center;gap:10px;padding:7px 4px}
.lib-sh-who{flex:1;min-width:0}
.lib-sh-who b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-sh-who small{display:block;color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lib-av{width:34px;height:34px;border-radius:50%;background:var(--surface-3);display:grid;place-items:center;font-weight:700;flex:none;color:var(--text-2)}
.lib-av.on{background:rgba(63,185,107,.18);color:var(--ok)}
.lib-sh-gen{margin-top:6px;background:var(--bg);border:1px solid var(--line-soft);border-radius:12px;padding:10px}
.lib-info-th{position:relative;height:170px;border-radius:12px;background:var(--surface-2);display:grid;place-items:center;overflow:hidden;margin-bottom:12px;color:var(--k,var(--muted))}
.lib-info-th img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#111}
.lib-inf{display:flex;justify-content:space-between;gap:14px;padding:8px 0;border-bottom:1px solid var(--line-soft);font-size:13px}
.lib-inf span{color:var(--muted);flex:none}.lib-inf b{font-weight:600;text-align:right;word-break:break-word}
@media (hover:none){.lib-ck{opacity:.85}.lib-fo .lib-ck{display:none}}
@media (max-width:820px){
  .lib-row{grid-template-columns:24px minmax(0,1fr) 70px 32px}
  .lib-row > .lib-rc:nth-of-type(1),.lib-row > .lib-rc:nth-of-type(3),.lib-row.head > span:nth-child(3),.lib-row.head > span:nth-child(5){display:none}
  .lib-quota{flex-basis:100%;margin-left:0}
  .lib-selbar{top:104px}
}
@media (max-width:620px){
  .lib-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .lib-folders{grid-template-columns:1fr 1fr;gap:8px}
  .lib-fo{height:48px;padding-left:10px}
  .lib-nm{padding:8px 34px 2px 10px}.lib-meta{padding:0 10px 9px}
  .lib-mn{right:2px;bottom:2px}
  .lib-search{flex-basis:100%}
  .lv-stage{padding:0 0 12px}
  .lv-nav{width:40px;height:40px;background:rgba(0,0,0,.5)}
  .lib-sh-add{grid-template-columns:1fr auto}.lib-sh-add > input[type=email]{grid-column:1/-1}
  .lib-up{right:12px;left:12px;bottom:12px;width:auto}
}

/* ---------- Chat del equipo (botón abajo a la derecha, 16/10/2026) ---------- */
#chat-root{position:fixed;right:20px;bottom:20px;z-index:65;font-family:var(--f-body)}
.chat-fab{position:relative;width:60px;height:60px;border-radius:50%;border:0;background:var(--grad);color:#fff;display:grid;place-items:center;
  box-shadow:0 10px 28px rgba(214,0,3,.45),0 2px 6px rgba(0,0,0,.4);transition:transform .25s cubic-bezier(.3,1.5,.5,1),box-shadow .2s;margin-left:auto}
.chat-fab:hover{transform:scale(1.07)} .chat-fab:active{transform:scale(.95)}
.chat-fab > span{position:absolute;inset:0;display:grid;place-items:center;transition:transform .35s cubic-bezier(.3,1.4,.5,1),opacity .2s}
.chat-fab-x{opacity:0;transform:rotate(-90deg) scale(.5)}
#chat-root.open .chat-fab-ic{opacity:0;transform:rotate(90deg) scale(.5)}
#chat-root.open .chat-fab-x{opacity:1;transform:none}
.chat-fab-n{position:absolute;top:-4px;right:-4px;min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:#fff;color:var(--red);font-size:11.5px;font-weight:800;display:grid;place-items:center;box-shadow:0 2px 8px rgba(0,0,0,.4);animation:chatBadge .4s cubic-bezier(.3,1.6,.5,1)}
.chat-fab.has::before{content:'';position:absolute;inset:-6px;border-radius:50%;border:2px solid var(--orange);opacity:0;animation:chatPulse 2.4s ease-out infinite}
.chat-fab.ring{animation:chatRing .7s ease}
@keyframes chatBadge{from{transform:scale(0)}}
@keyframes chatPulse{0%{transform:scale(.85);opacity:.8}100%{transform:scale(1.35);opacity:0}}
@keyframes chatRing{0%,100%{transform:rotate(0)}20%{transform:rotate(-14deg)}40%{transform:rotate(12deg)}60%{transform:rotate(-8deg)}80%{transform:rotate(4deg)}}
/* Panel: sale del botón (escala desde la esquina) */
.chat-panel{position:absolute;right:0;bottom:76px;width:380px;height:min(620px,calc(100vh - 120px));border-radius:22px;overflow:hidden;
  background:#121212;border:1px solid var(--line);box-shadow:0 24px 70px rgba(0,0,0,.65);transform-origin:calc(100% - 30px) calc(100% + 46px);
  transform:scale(.15) translateY(30px);opacity:0;pointer-events:none;visibility:hidden;
  transition:transform .42s cubic-bezier(.2,1.25,.35,1),opacity .22s ease,visibility 0s linear .42s,border-radius .42s}
#chat-root.open .chat-panel{transform:none;opacity:1;pointer-events:auto;visibility:visible;transition:transform .42s cubic-bezier(.2,1.25,.35,1),opacity .2s ease,visibility 0s}
.chat-view{position:absolute;inset:0;display:flex;flex-direction:column;transition:transform .34s cubic-bezier(.25,.9,.3,1),opacity .25s}
.chat-room{transform:translateX(100%);opacity:.6}
#chat-root.in-room .chat-room{transform:none;opacity:1}
#chat-root.in-room .chat-home{transform:translateX(-30%);opacity:0;pointer-events:none}
.chat-head{display:flex;align-items:center;gap:10px;padding:14px 12px 12px 14px;background:linear-gradient(135deg,#2a0606,#1a1a1a 70%);border-bottom:1px solid var(--line-soft);flex:none}
.chat-head .icon-btn{color:#ddd}
.chat-logo{width:36px;height:36px;border-radius:12px;background:var(--grad);display:grid;place-items:center;color:#fff;flex:none}
.chat-hd{flex:1;min-width:0;display:flex;flex-direction:column}
.chat-hd b{font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-hd small{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-perm{display:flex;align-items:center;gap:10px;margin:10px 10px 0;padding:10px 12px;border-radius:12px;background:var(--warn-bg);border:1px solid rgba(246,143,28,.35);font-size:12px;color:var(--text-2)}
.chat-perm[hidden]{display:none}
.chat-perm svg{color:var(--orange);flex:none}
.chat-list{flex:1;overflow:auto;padding:6px}
.chat-row{display:flex;align-items:center;gap:12px;width:100%;background:none;border:0;border-radius:14px;padding:10px;text-align:left;transition:background .15s}
.chat-row:hover{background:var(--surface-2)}
.chat-row-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.chat-row-mid b{font-size:14px;font-weight:700}
.chat-row-mid small{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-row.unread .chat-row-mid small{color:var(--text-2);font-weight:600}
.chat-row-end{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex:none}
.chat-row-end small{font-size:11px;color:var(--muted)}
.chat-row.unread .chat-row-end small{color:var(--orange);font-weight:700}
.chat-row-end i{font-style:normal;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--grad-h);color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center}
.chat-av{width:var(--s);height:var(--s);border-radius:50%;flex:none;display:grid;place-items:center;font-weight:800;font-size:calc(var(--s) * .42);color:#141414;
  background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.35),transparent 55%),var(--c)}
.chat-av.grp{background:var(--grad);color:#fff}
.chat-room-av{display:flex}
/* Conversación */
.chat-msgs{flex:1;overflow:auto;padding:12px 12px 6px;display:flex;flex-direction:column;gap:3px;overscroll-behavior:contain;
  background:radial-gradient(circle at 1px 1px,rgba(255,255,255,.035) 1px,transparent 0) 0 0/18px 18px,#0e0e0e}
.chat-day{text-align:center;margin:10px 0 6px}
.chat-day span{display:inline-block;font-size:11px;font-weight:700;color:var(--text-2);background:#232323;padding:4px 10px;border-radius:8px;text-transform:capitalize}
.chat-newline{text-align:center;margin:8px 0}
.chat-newline span{font-size:11px;font-weight:700;color:var(--orange);background:rgba(246,143,28,.12);padding:4px 12px;border-radius:8px}
.chat-b{position:relative;max-width:82%;padding:7px 10px 6px;border-radius:14px;font-size:13.5px;line-height:1.4;word-wrap:break-word;overflow-wrap:anywhere;margin-top:6px}
.chat-b.cont{margin-top:0}
.chat-b.them{align-self:flex-start;background:#252525;color:var(--text);border-top-left-radius:4px}
.chat-b.me{align-self:flex-end;background:linear-gradient(135deg,#c50003,#9e0002);color:#fff;border-top-right-radius:4px}
.chat-b.cont.them{border-top-left-radius:14px}.chat-b.cont.me{border-top-right-radius:14px}
.chat-b.pop{animation:chatPop .32s cubic-bezier(.2,1.4,.4,1)}
.chat-b.me.pop{transform-origin:100% 100%}.chat-b.them.pop{transform-origin:0 100%}
@keyframes chatPop{from{transform:scale(.6);opacity:0}}
.chat-from{display:block;font-size:12px;font-weight:700;margin-bottom:1px}
.chat-t a{color:inherit;text-decoration:underline}
.chat-meta{float:right;display:inline-flex;align-items:center;gap:3px;margin:6px 0 -3px 10px;font-size:10.5px;color:rgba(255,255,255,.6)}
.chat-tick{display:inline-flex;color:rgba(255,255,255,.65)}
.chat-tick.seen{color:#ffd28a}
.chat-empty{margin:auto;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--muted);padding:20px}
.chat-empty b{color:var(--text);font-size:15px}
.chat-empty p{font-size:12.5px}
.chat-compose{display:flex;align-items:flex-end;gap:8px;padding:10px;border-top:1px solid var(--line-soft);background:#151515;flex:none}
.chat-compose textarea{flex:1;resize:none;background:#222;border:1px solid var(--line);border-radius:20px;padding:10px 14px;font-size:14px;line-height:1.35;max-height:120px;color:var(--text)}
.chat-compose textarea:focus{outline:none;border-color:var(--orange)}
.chat-send{width:42px;height:42px;border-radius:50%;border:0;background:var(--grad);color:#fff;display:grid;place-items:center;flex:none;transition:transform .15s}
.chat-send:hover{transform:scale(1.06)} .chat-send:active{transform:scale(.92)}
.chat-send svg{margin-left:-2px}
/* Avisos junto al botón */
.chat-toasts{position:absolute;right:0;bottom:76px;display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:none}
#chat-root.open .chat-toasts{display:none}
.chat-toast{pointer-events:auto;display:flex;align-items:center;gap:10px;width:300px;max-width:calc(100vw - 40px);text-align:left;background:#1d1d1d;border:1px solid var(--line);border-left:3px solid var(--orange);
  border-radius:14px;padding:10px 12px;box-shadow:0 14px 36px rgba(0,0,0,.55);animation:chatIn .45s cubic-bezier(.2,1.3,.4,1);transition:transform .3s,opacity .3s}
.chat-toast > span:last-child{flex:1;min-width:0;display:flex;flex-direction:column}
.chat-toast b{font-size:13px}.chat-toast b small{font-weight:500;color:var(--muted)}
.chat-toast > span:last-child > small{font-size:12.5px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat-toast.out{transform:translateX(30px);opacity:0}
@keyframes chatIn{from{transform:translateY(16px) scale(.9);opacity:0}}
/* La lista de subidas de la Biblioteca, a la izquierda del botón */
.lib-up{right:94px}
@media (max-width:620px){
  #chat-root{right:14px;bottom:14px}
  .chat-fab{width:56px;height:56px}
  .chat-panel{position:fixed;inset:0;width:auto;height:auto;border-radius:0;border:0;transform-origin:calc(100% - 42px) calc(100% - 42px)}
  #chat-root.open .chat-fab{opacity:0;pointer-events:none;transform:scale(.4)}
  .chat-head{padding-top:max(14px,env(safe-area-inset-top))}
  .chat-compose{padding-bottom:max(10px,env(safe-area-inset-bottom))}
  .chat-toasts{bottom:70px}
  .lib-up{right:12px;bottom:80px}
}
/* Con el chat abierto, los avisos de otras conversaciones salen arriba del panel */
#chat-root.open .chat-toasts{display:flex;bottom:calc(76px + min(620px,100vh - 120px) - 74px);right:12px;z-index:3}
#chat-root.open .chat-toast{width:330px}
.chat-back{position:relative;width:auto;padding:0 4px;gap:2px;display:inline-flex}
.chat-back b{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--grad-h);color:#fff;font-size:10.5px;font-weight:800;display:grid;place-items:center}
.chat-back b[hidden]{display:none}
@media (max-width:620px){#chat-root.open .chat-toasts{position:fixed;top:calc(env(safe-area-inset-top) + 70px);bottom:auto;left:12px;right:12px;align-items:stretch}#chat-root.open .chat-toast{width:auto}}

/* ---------- Taller · Eventos (alquiler de simuladores, 16/10/2026) ---------- */
.cal-legend .k-ev{--c:#38c5c5}.cal-it.k-ev{--c:#38c5c5}.cal-dots b.k-ev{background:#38c5c5}
.ev-views{margin:-6px 0 16px}
.badge.live{background:var(--bad-bg);color:#ff6b6d}
.ev-check{margin-bottom:16px}
.ev-check-f{display:grid;grid-template-columns:1fr 1fr 120px;gap:10px}
.ev-ans{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;padding:12px 14px;border-radius:12px;border:1px solid;animation:pop .2s}
.ev-ans > div{flex:1;min-width:200px;display:flex;flex-direction:column;gap:3px}
.ev-ans b{font-size:14px}.ev-ans small{color:var(--text-2);font-size:12px}
.ev-ans.yes{background:var(--ok-bg);border-color:rgba(63,185,107,.4)}.ev-ans.yes .ev-ans-ic{background:var(--ok)}
.ev-ans.no{background:var(--bad-bg);border-color:rgba(214,0,3,.45)}.ev-ans.no .ev-ans-ic{background:#e0353b}
.ev-ans-ic{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:#fff;flex:none}
.ev-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.card.ev-card{display:flex;flex-direction:column;gap:8px;text-align:left;cursor:pointer;color:var(--text);position:relative;overflow:hidden;transition:border-color .15s,transform .15s}
.card.ev-card + .card.ev-card{margin-top:0}
.ev-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--ev)}
.ev-card:hover{border-color:var(--line);transform:translateY(-1px)}
.ev-card.cancelado{opacity:.6}
.ev-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.ev-card-t{font-size:16px;font-weight:700}
.ev-card-s{font-size:12.5px;color:var(--muted)}
.ev-dates{display:grid;grid-template-columns:1fr 1.4fr 1fr;gap:6px;background:var(--bg);border:1px solid var(--line-soft);border-radius:10px;padding:8px 10px}
.ev-dates span{display:flex;flex-direction:column;font-size:12.5px;font-weight:600}
.ev-dates small{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.ev-dates .ev-main{color:var(--ev,var(--orange))}
.ev-dates.big{max-width:520px}
.ev-card-f{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ev-simchips{display:flex;flex-wrap:wrap;gap:4px}
.ev-simchips i{font-style:normal;font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;background:var(--surface-3);color:var(--text-2)}
.ev-simchips em{font-style:normal;font-size:12px;color:#ff6b6d}
.ev-prog{display:flex;align-items:center;gap:6px;flex:none}
.ev-prog i{display:block;width:70px;height:6px;border-radius:4px;background:var(--surface-3);position:relative;overflow:hidden}
.ev-prog i::after{content:'';position:absolute;inset:0 auto 0 0;width:var(--p);background:var(--grad-h)}
.ev-prog small{font-size:11px;color:var(--muted);font-weight:700}
/* Disponibilidad */
.ev-tl-card{padding:14px}
.ev-tl-wrap{overflow-x:auto;margin:0 -4px;padding:0 4px 6px}
.ev-tl{display:grid;gap:2px;min-width:860px}
.ev-tl-n{position:sticky;left:0;z-index:2;background:var(--surface);font-size:12.5px;font-weight:700;padding:6px 8px 6px 0;display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev-tl-n.head{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.ev-tl-n.reparacion{color:var(--orange)}
.ev-tl-d{text-align:center;font-size:12px;font-weight:700;color:var(--text-2);padding:2px 0;border-radius:6px;display:flex;flex-direction:column;line-height:1.1}
.ev-tl-d small{font-size:9.5px;color:var(--muted);font-weight:600}
.ev-tl-d.we{color:var(--muted)}
.ev-tl-d.today{background:var(--orange);color:#111}.ev-tl-d.today small{color:#111}
.ev-tl-c{height:30px;border-radius:5px;background:var(--bg);border:0;position:relative;padding:0;min-width:0}
.ev-tl-c.today{box-shadow:inset 0 0 0 1px var(--orange)}
.ev-tl-c.busy{cursor:pointer;background:var(--ev);overflow:visible}
.ev-tl-c.busy.tr{background:repeating-linear-gradient(135deg,var(--ev) 0 5px,color-mix(in srgb,var(--ev) 45%,transparent) 5px 10px);opacity:.85}
.ev-tl-c.busy.consulta{opacity:.6}
.ev-tl-c.busy span{position:absolute;left:5px;top:50%;transform:translateY(-50%);font-size:11px;font-weight:700;color:#111;white-space:nowrap;pointer-events:none;z-index:1;text-shadow:0 0 2px rgba(255,255,255,.4)}
.ev-tl-c.busy:hover{filter:brightness(1.15)}
.ev-legend{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:10px;font-size:12px;color:var(--muted)}
.ev-legend span{display:inline-flex;align-items:center;gap:6px}
.ev-legend .on::before,.ev-legend .tr::before,.ev-legend .free::before{content:'';width:16px;height:10px;border-radius:3px}
.ev-legend .on::before{background:var(--orange)}
.ev-legend .tr::before{background:repeating-linear-gradient(135deg,var(--orange) 0 3px,rgba(246,143,28,.4) 3px 6px)}
.ev-legend .free::before{background:var(--bg);border:1px solid var(--line)}
/* Flota y plantilla */
.ev-add{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.ev-add .input{flex:1 1 180px}
.ev-fleet,.ev-tpl{display:flex;flex-direction:column;gap:6px}
.ev-fleet-r,.ev-tpl-r{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;background:var(--bg);border:1px solid var(--line-soft)}
.ev-fleet-r.baja{opacity:.5}
.ev-sim-ic{width:32px;height:32px;border-radius:9px;background:var(--surface-3);display:grid;place-items:center;color:var(--orange);flex:none}
.ev-fleet-r.reparacion .ev-sim-ic{color:#ff6b6d}
.ev-fleet-n{flex:1;min-width:0;display:flex;flex-direction:column}
.ev-fleet-n small{color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev-tpl-n{width:24px;height:24px;border-radius:50%;background:var(--surface-3);display:grid;place-items:center;font-size:11px;font-weight:700;color:var(--muted);flex:none}
.ev-tpl-r b{flex:1;font-weight:600;font-size:13.5px}
.ev-tpl-a{display:flex;gap:2px}
/* Ventana del evento */
.ev-m-top{border-left:4px solid var(--ev);padding:2px 0 2px 14px;margin-bottom:16px;display:flex;flex-direction:column;gap:10px}
.ev-st{width:auto;align-self:flex-start;font-weight:700}
.ev-st.confirmado,.ev-st.preparado{color:var(--ok)}.ev-st.consulta{color:var(--orange)}.ev-st.en_curso,.ev-st.cancelado{color:#ff6b6d}
.ev-m-info{display:flex;flex-wrap:wrap;gap:12px;align-items:center;font-size:12.5px;color:var(--text-2)}
.ev-m-info span{display:inline-flex;align-items:center;gap:5px}
.ev-notes{font-size:12.5px;color:var(--text-2);background:var(--bg);border-radius:8px;padding:8px 10px;white-space:pre-wrap}
.ev-m-sec{border-top:1px solid var(--line-soft);padding-top:14px;margin-top:14px}
.ev-m-sec h3{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.ev-m-sims,.ev-m-pick{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.ev-m-pick{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-soft)}
.ev-m-pick > small{width:100%}
.ev-sim{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border-radius:9px;border:1px solid var(--line);background:var(--bg);font-size:12.5px;font-weight:700;color:var(--text)}
.ev-sim em{font-style:normal;font-weight:500;font-size:11px;color:var(--muted)}
.ev-sim.on{background:color-mix(in srgb,var(--ok) 16%,transparent);border-color:rgba(63,185,107,.5)}
.ev-sim.on button{background:none;border:0;color:var(--muted);display:grid;place-items:center;padding:0 0 0 2px}
.ev-sim.on button:hover{color:#ff6b6d}
button.ev-sim:not([disabled]):hover{border-color:var(--ok);color:var(--ok)}
.ev-sim.busy{opacity:.55}
.ev-sim[disabled]{cursor:not-allowed}
.ev-bar{height:6px;border-radius:4px;background:var(--surface-3);overflow:hidden;margin-bottom:10px}
.ev-bar i{display:block;height:100%;width:var(--p);background:var(--grad-h);transition:width .3s}
.ev-grp{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:10px 0 4px}
.ev-task{display:flex;align-items:center;gap:10px;padding:6px 4px;border-radius:8px}
.ev-task:hover{background:var(--surface-2)}
.ev-task > span{flex:1;display:flex;flex-direction:column;font-size:13.5px}
.ev-task > span small{font-size:11px;color:var(--muted)}
.ev-task.done > span{color:var(--muted);text-decoration:line-through;text-decoration-color:rgba(255,255,255,.3)}
.ev-task.done > span small{text-decoration:none}
.ev-ck{width:24px;height:24px;border-radius:7px;border:1.5px solid var(--line);background:none;color:transparent;display:grid;place-items:center;flex:none;transition:all .15s}
.ev-ck:hover{border-color:var(--ok)}
.ev-ck[aria-pressed="true"]{background:var(--ok);border-color:var(--ok);color:#111;animation:chatBadge .25s}
.ev-task .icon-btn{opacity:0}.ev-task:hover .icon-btn{opacity:1}
.ev-m-sec .ev-add{margin:10px 0 0}
.ev-datesf{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
@media (hover:none){.ev-task .icon-btn{opacity:1}}
@media (max-width:620px){
  .ev-check-f{grid-template-columns:1fr 1fr}.ev-check-f label:last-child{grid-column:1/-1}
  .ev-grid{grid-template-columns:1fr}
  .ev-datesf{grid-template-columns:1fr 1fr}
  .ev-tpl-r{flex-wrap:wrap}
}
.ev-check-f .field,.ev-datesf .field{margin-top:0}
.chat-fab-n[hidden]{display:none}
body:has(#chat-root) main{padding-bottom:96px}
.ev-tl-c.busy:has(span){z-index:2}
.ev-tl-c.busy span{z-index:3;max-width:none}
.ev-tl-c.busy span{width:calc(var(--w) * 100% + (var(--w) - 1) * 2px - 10px);overflow:hidden;text-overflow:ellipsis}
/* Con una ventana abierta, el chat queda debajo (no tapa sus botones) */
#chat-root{z-index:45}
body:has(#modal-root .modal-bg) #chat-root:not(.open){opacity:0;pointer-events:none}

/* ---------- Menú de secciones: en el móvil se desliza de lado (son 7) ---------- */
@media (max-width:760px){.modules{overflow-x:auto;scrollbar-width:none}.modules::-webkit-scrollbar{display:none}.module{flex:1 0 auto}}
@media (max-width:1180px) and (min-width:761px){.module{padding:7px 9px;font-size:12px}}
.bad-t{color:#ff6b6d}.warn-t{color:var(--orange)}
/* ---------- Facturación ---------- */
.fact-tb{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.fact-tb .input{flex:1 1 220px;max-width:360px}
.fact-list{display:flex;flex-direction:column;gap:4px}
.fact-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--bg);border:1px solid var(--line-soft);border-radius:11px;padding:10px 12px;color:var(--text);transition:border-color .15s}
.fact-row:hover{border-color:var(--line)}.fact-row.sm{padding:7px 10px;margin-top:4px}
.fact-code{font-family:ui-monospace,Consolas,monospace;font-size:11.5px;font-weight:700;color:var(--orange);flex:none}
.fact-main{flex:1;min-width:0;display:flex;flex-direction:column}.fact-main b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fact-main small{color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fact-total{font-variant-numeric:tabular-nums;white-space:nowrap}
.ev-tpl-r.off{opacity:.5}
.q-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.q-st{width:auto;font-weight:700}.q-st.aceptado{color:var(--ok)}.q-st.enviado{color:var(--orange)}.q-st.rechazado{color:#ff6b6d}
.q-dates{display:grid;grid-template-columns:1fr 1fr 110px 90px;gap:8px;margin-top:12px}.q-dates .field{margin-top:0}
.q-lines{margin-top:14px;border:1px solid var(--line-soft);border-radius:12px;padding:6px;background:var(--bg)}
.q-line{display:grid;grid-template-columns:minmax(0,1fr) 80px 80px 96px 96px 30px;gap:6px;align-items:center;padding:3px 0}
.q-line.head{font-size:10.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding:2px 4px 6px}
.q-line .input{padding:7px 8px;font-size:13px}
.q-amt{text-align:right;font-variant-numeric:tabular-nums;font-size:13px}
.q-add{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.q-add select{flex:1 1 220px;width:auto}
.q-totals{margin:14px 0 0 auto;max-width:320px;display:flex;flex-direction:column;gap:2px}
.q-totals div{display:flex;justify-content:space-between;padding:4px 8px;font-size:13px}.q-totals b{font-variant-numeric:tabular-nums}
.q-totals .q-grand{background:var(--grad-h);border-radius:10px;padding:8px 12px;font-size:16px;margin-top:4px}.q-totals .q-grand b{font-size:17px}
.q-steps{padding-left:18px;display:flex;flex-direction:column;gap:12px;font-size:13.5px}
.q-send{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.q-txt{margin-top:14px;background:var(--bg);border:1px solid var(--line-soft);border-radius:10px;padding:12px;font:12.5px/1.5 var(--f-body);white-space:pre-wrap;color:var(--text-2)}
/* ---------- Equipo: fichaje, turnos, vacaciones ---------- */
.eq-top{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);margin-bottom:16px}
.card.clock{display:flex;flex-direction:column;gap:12px;position:relative;overflow:hidden}
.card.clock.on{border-color:rgba(63,185,107,.45);background:linear-gradient(135deg,rgba(63,185,107,.10),var(--surface) 60%)}
.clock-st{display:flex;align-items:center;gap:12px}.clock-st b{font-size:17px;display:block}.clock-st small{color:var(--muted)}
.clock-dot{width:14px;height:14px;border-radius:50%;background:var(--surface-3);flex:none;box-shadow:0 0 0 4px rgba(255,255,255,.04)}
.clock.on .clock-dot{background:var(--ok);box-shadow:0 0 0 5px rgba(63,185,107,.2);animation:pulse 1.6s infinite}
.clock-btn{align-self:flex-start}.clock.big .clock-btn{min-width:220px}
.clock-today{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px}.clock-today span{background:var(--bg);border:1px solid var(--line-soft);border-radius:7px;padding:3px 8px;font-variant-numeric:tabular-nums}.clock-today b{margin-left:auto}
.eq-now{display:flex;align-items:center;gap:10px;padding:6px 0}
.eq-total{font-size:13px;color:var(--text-2);margin-bottom:10px}
.eq-days{display:flex;flex-direction:column;gap:4px}
.eq-day{display:grid;grid-template-columns:170px minmax(0,1fr) 60px;gap:10px;align-items:center;padding:7px 10px;background:var(--bg);border-radius:9px;font-size:13px}
.eq-day > b:first-child{font-weight:600}.eq-dt{text-align:right;font-variant-numeric:tabular-nums}
.eq-segs{display:flex;flex-wrap:wrap;gap:5px}
.eq-seg{display:inline-flex;align-items:center;gap:4px;background:var(--surface-3);border-radius:6px;padding:2px 7px;font-size:12px;font-variant-numeric:tabular-nums}
.eq-seg.ed{background:var(--warn-bg);color:var(--orange)}.eq-seg.open{background:var(--ok-bg);color:var(--ok)}
.eq-seg button{background:none;border:0;color:var(--muted);display:grid;place-items:center;padding:0}.eq-seg button:hover{color:var(--text)}
.eq-edits{margin-top:10px;font-size:12px;color:var(--muted)}.eq-edits summary{cursor:pointer}.eq-edits div{padding:3px 0}
.sh-wrap{overflow-x:auto;padding:10px}
.sh-grid{display:grid;gap:4px;min-width:800px}
.sh-h{text-align:center;font-weight:700;font-size:13px;padding:4px;border-radius:8px;display:flex;flex-direction:column;line-height:1.1}.sh-h small{font-size:10px;color:var(--muted);text-transform:uppercase}
.sh-h.today{background:var(--orange);color:#111}.sh-h.today small{color:#111}
.sh-n{display:flex;align-items:center;gap:7px;font-weight:700;font-size:13px;position:sticky;left:0;background:var(--surface);z-index:1}
.sh-c{min-height:58px;background:var(--bg);border:1px solid var(--line-soft);border-radius:9px;padding:4px;display:flex;flex-direction:column;gap:3px}
.sh-c.today{border-color:var(--orange)}.sh-c.edit{cursor:pointer}.sh-c.edit:hover{border-color:var(--line)}
.sh-it{display:flex;flex-direction:column;align-items:flex-start;text-align:left;border:0;border-radius:7px;padding:4px 6px;background:var(--pc);color:#111;font-size:11.5px;line-height:1.2}
.sh-it small{font-size:10px;opacity:.75}.sh-it[disabled]{cursor:default;opacity:1}
.p-simcenter{--pc:#ff8a8c}.p-taller{--pc:var(--orange)}.p-eventos{--pc:#38c5c5}.p-oficina{--pc:#5b8def}.p-otro{--pc:#c9c9c9}
.sh-leave{font-size:11px;font-weight:700;color:#3fb96b;background:var(--ok-bg);border-radius:6px;padding:2px 6px}
.sh-lg::before{content:'';width:12px;height:12px;border-radius:3px;background:var(--pc)}
.lv-f{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.lv-f .field{margin-top:0}
.lv-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line-soft)}.lv-row:last-child{border-bottom:0}
.lv-main{flex:1;min-width:0;display:flex;flex-direction:column}.lv-main small{color:var(--muted);font-size:11.5px}
/* ---------- Mantenimiento ---------- */
.mt-top{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:16px}
.mt-row{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px solid var(--line-soft)}.mt-row:last-child{border-bottom:0}
.mt-ic{width:30px;height:30px;border-radius:9px;background:var(--surface-3);display:grid;place-items:center;color:var(--muted);flex:none}
.mt-ic.averia.abierta,.mt-ic.averia:not(.resuelta):not(.info){background:var(--bad-bg);color:#ff6b6d}.mt-ic.late{background:var(--warn-bg);color:var(--orange)}.mt-ic.resuelta{color:var(--ok)}.mt-ic.pieza{color:var(--orange)}
.mt-main{flex:1;min-width:0;display:flex;flex-direction:column;text-align:left;background:none;border:0;color:var(--text);padding:0}
.mt-main b{font-size:13.5px}.mt-main small{color:var(--muted);font-size:11.5px}.mt-main p{font-size:12.5px;color:var(--text-2);margin-top:3px;white-space:pre-wrap}
.mt-parts{display:flex;align-items:center;gap:5px;color:var(--orange)!important}
.mt-sims{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.mt-sim{display:flex;flex-direction:column;align-items:flex-start;gap:2px;background:var(--bg);border:1px solid var(--line-soft);border-radius:10px;padding:10px;color:var(--text);text-align:left}
.mt-sim small{font-size:11px;color:var(--ok)}.mt-sim.bad{border-color:rgba(214,0,3,.45)}.mt-sim.bad small{color:#ff6b6d}.mt-sim:hover{border-color:var(--line)}
/* ---------- Inicio: Mi día ---------- */
.home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;align-items:start}
.home-grid > .card + .card{margin-top:0}
.home-li{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;border-radius:9px;padding:8px 6px;text-align:left;color:var(--text)}
button.home-li:hover{background:var(--surface-2)}
.home-li-m{flex:1;min-width:0;display:flex;flex-direction:column}.home-li-m b{font-size:13.5px}.home-li-m small{color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-mini{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px;color:var(--text-2);margin-top:4px}.home-mini b{font-size:15px;color:var(--text)}
.home-mini .bad-t b{color:#ff6b6d}.home-mini .warn-t b{color:var(--orange)}
/* ---------- Cifras ---------- */
.cif-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.bc{position:relative}
.bc-svg{width:100%;height:150px;display:block;overflow:visible}
.bc-grid{stroke:var(--line-soft);stroke-width:.3;vector-effect:non-scaling-stroke}
.bc-bar{fill:var(--orange)}.bc-hit{fill:transparent}.bc-hit:hover + .bc-bar,.bc-bar:hover{fill:#ffb15a}
.bc-x{display:flex;font-size:10px;color:var(--muted);margin-top:-14px}.bc-x span{text-align:center;overflow:hidden;white-space:nowrap}
.bc-max{position:absolute;top:-4px;left:0;font-size:10px;color:var(--muted)}
.hm{display:grid;gap:2px}
.hm-h{font-size:9.5px;color:var(--muted);text-align:center}.hm-d{font-size:10.5px;color:var(--muted);align-self:center}
.hm-c{height:18px;border-radius:3px;background:rgba(246,143,28,var(--a));box-shadow:inset 0 0 0 1px var(--line-soft)}
.hm-lg{display:flex;align-items:center;gap:6px;font-size:10.5px;color:var(--muted);margin-top:8px;justify-content:flex-end}.hm-lg i{width:80px;height:8px;border-radius:4px;background:linear-gradient(90deg,rgba(246,143,28,.15),var(--orange))}
/* ---------- Calendario: vacaciones y turnos ---------- */
.cal-legend .k-leave{--c:#3fb96b}.cal-it.k-leave{--c:#3fb96b}.cal-dots b.k-leave{background:#3fb96b}
.cal-legend .k-shift{--c:#9b9b9b;background:none;border:0;color:var(--muted);display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:0;cursor:pointer}
.cal-legend .k-shift::before{content:'';width:10px;height:10px;border-radius:3px;background:var(--c)}.cal-legend .k-shift.off{opacity:.5}
.cal-it.k-shift{--c:#7a7a7a;opacity:.85}.cal-dots b.k-shift{background:#7a7a7a}
@media (max-width:900px){.eq-top,.mt-top,.cif-grid{grid-template-columns:1fr}}
@media (max-width:620px){
  .q-dates{grid-template-columns:1fr 1fr}
  .q-line{grid-template-columns:1fr 64px 76px 28px;grid-template-areas:"c c c x" "q u p a"}
  .q-line > :nth-child(1){grid-column:1/4}.q-line > :nth-child(6){grid-column:4;grid-row:1}
  .q-line > :nth-child(5){grid-column:1/-1;text-align:right}
  .q-line.head{display:none}
  .eq-day{grid-template-columns:1fr auto}.eq-segs{grid-column:1/-1;grid-row:2}
  .home-grid{grid-template-columns:1fr}
  .fact-row{flex-wrap:wrap}.fact-row .fact-main{flex-basis:60%}
}
@media (max-width:1180px){.top-actions .who{display:none}}
/* Documento para imprimir dentro de la app (si el navegador bloquea las ventanas nuevas) */
.print-ov{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.85);display:flex;flex-direction:column;padding:12px;gap:10px}
.print-bar{display:flex;align-items:center;gap:8px;color:#fff;max-width:900px;width:100%;margin:0 auto}
.print-ov iframe{flex:1;border:0;border-radius:8px;background:#fff;width:100%;max-width:900px;margin:0 auto}
/* Horario habitual (Equipo → Turnos) */
.pt-person{padding:10px 0;border-bottom:1px solid var(--line-soft)}.pt-person:last-of-type{border-bottom:0}
.pt-name{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.pt-row{display:grid;grid-template-columns:100px 110px 90px 1fr 32px;gap:8px;align-items:center;padding:4px 0 4px 34px;font-size:13px}
.pt-add{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-top:14px;padding-top:12px;border-top:1px dashed var(--line-soft);align-items:end}
.pt-add .pt-ref{grid-column:1/5;margin-top:0}.pt-add .btn{grid-column:5/7}
@media (max-width:620px){.pt-row{grid-template-columns:1fr 1fr 32px;padding-left:0}.pt-row > :nth-child(3),.pt-row > :nth-child(4){grid-column:1/3}.pt-add{grid-template-columns:1fr 1fr}.pt-add .pt-ref,.pt-add .btn{grid-column:1/-1}}

/* ---------- Agente «Ordenar» (Inicio) ---------- */
/* Botón flotante encima del del chat, con el mismo estilo */
.ag-fab{position:fixed;right:20px;bottom:94px;z-index:64;width:60px;height:60px;border-radius:50%;border:0;background:var(--grad);color:#fff;display:grid;place-items:center;
  box-shadow:0 10px 28px rgba(214,0,3,.45),0 2px 6px rgba(0,0,0,.4);transition:transform .25s cubic-bezier(.3,1.5,.5,1),box-shadow .2s,opacity .2s}
.ag-fab:hover{transform:scale(1.07)} .ag-fab:active{transform:scale(.95)}
.ag-fab::after{content:'';position:absolute;inset:-2px;border-radius:50%;border:2px solid rgba(246,143,28,.7);animation:agPing 2.6s ease-out infinite;pointer-events:none}
body:has(#chat-root.open) .ag-fab,#agent-root.reviewing .ag-fab{opacity:0;pointer-events:none;transform:scale(.4)}
@keyframes agPing{0%{transform:scale(.92);opacity:.9}70%,100%{transform:scale(1.4);opacity:0}}
@keyframes agSpin{to{transform:rotate(360deg)}}
.ag-ov{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.78);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:16px;animation:fade .15s}
.ag-panel{width:min(620px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:18px 22px 14px;box-shadow:0 30px 80px rgba(0,0,0,.5);animation:pop .2s}
.ag-top{display:flex;justify-content:space-between;align-items:flex-start}
.ag-top .t-title{font-size:30px}
.ag-stage{display:flex;flex-direction:column;align-items:center;gap:8px;padding:6px 0 14px}
.ag-orb{--lvl:0;position:relative;width:132px;height:132px;border-radius:50%;border:0;background:none;display:grid;place-items:center;color:#fff;padding:0}
.ag-orb-in{position:relative;z-index:2;width:92px;height:92px;border-radius:50%;background:var(--surface-3);display:grid;place-items:center;transition:background .25s,transform .08s linear;transform:scale(calc(1 + var(--lvl) * .14));box-shadow:0 0 0 1px var(--line)}
.ag-orb.on .ag-orb-in{background:var(--grad);box-shadow:0 10px 30px rgba(214,0,3,.45)}
.ag-ring{position:absolute;inset:20px;border-radius:50%;background:var(--grad);opacity:0;transition:transform .09s linear,opacity .2s;pointer-events:none}
.ag-orb.on .r1{opacity:calc(.16 + var(--lvl) * .4);transform:scale(calc(1.06 + var(--lvl) * .4))}
.ag-orb.on .r2{opacity:calc(.08 + var(--lvl) * .3);transform:scale(calc(1.12 + var(--lvl) * .75))}
.ag-orb.on .r3{opacity:calc(.03 + var(--lvl) * .2);transform:scale(calc(1.18 + var(--lvl) * 1.1))}
.ag-orb.on:not(.loud) .r1{animation:agBreath 2.2s ease-in-out infinite}
@keyframes agBreath{50%{transform:scale(1.2);opacity:.22}}
.ag-orb:not(.on):not(.busy):hover .ag-orb-in{background:var(--surface-2);box-shadow:0 0 0 2px var(--orange)}
.ag-orb.busy .ag-orb-in{background:var(--surface-2)}
.ag-spin{width:38px;height:38px;border-radius:50%;border:3px solid rgba(255,255,255,.14);border-top-color:var(--orange);animation:agSpin .8s linear infinite}
.ag-panel.working .ag-wave{opacity:.35}
.ag-wave{width:min(100%,420px);height:48px}
.ag-status{font-size:13px;font-weight:600;color:var(--text-2);min-height:20px;text-align:center}
.ag-input{display:flex;gap:10px;align-items:stretch}
.ag-input textarea{flex:1;min-width:0;resize:none;background:var(--bg);border:1px solid var(--line);border-radius:14px;padding:12px 14px;font-size:15px;line-height:1.45;min-height:80px}
.ag-input textarea:focus{border-color:var(--orange);outline:none}
.ag-send{flex:none;width:60px;border:0;border-radius:14px;background:var(--grad);color:#fff;display:grid;place-items:center;transition:transform .12s}
.ag-send:not(:disabled):hover{transform:scale(1.04)}
.ag-send:disabled,.ag-orb:disabled{opacity:.55;cursor:default}
.ag-note{margin-top:10px;padding:9px 12px;border-radius:10px;background:var(--warn-bg);color:var(--text-2);font-size:12.5px}
.ag-res{margin-top:12px;padding:12px 14px;border-radius:12px;background:var(--bad-bg);border:1px solid rgba(214,0,3,.35);font-size:13px}
.ag-res-h{display:flex;align-items:center;gap:7px;font-weight:700;margin-bottom:6px}
.ag-res p{margin:4px 0}
.ag-res-b{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 6px}
.ag-ex{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:12px}
.ag-chip{background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:5px 11px;font-size:12px;color:var(--text-2);text-align:left}
.ag-chip:hover{border-color:var(--orange);color:var(--text)}
.ag-hist{margin-top:14px;border-top:1px solid var(--line-soft);padding-top:10px;display:flex;flex-direction:column;gap:2px}
.ag-hist .eyebrow{margin-bottom:4px}
.ag-hist-i{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1px 10px;align-items:center;background:none;border:0;border-radius:9px;padding:6px 8px;text-align:left}
.ag-hist-i:hover{background:var(--surface-2)}
.ag-hist-t{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ag-hist-m{grid-column:1;font-size:11px;color:var(--muted)}
.ag-hist-i .badge{grid-column:2;grid-row:1/3}
.ag-foot{margin-top:12px;text-align:center}
.ag-bar{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:45;width:min(620px,calc(100vw - 32px));background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:13px 14px 12px;box-shadow:0 18px 50px rgba(0,0,0,.6);animation:agUp .35s cubic-bezier(.2,1.2,.35,1);overflow:hidden}
.ag-bar::before{content:'';position:absolute;left:0;right:0;top:0;height:3px;background:var(--grad-h)}
@keyframes agUp{from{transform:translate(-50%,30px);opacity:0}}
.ag-bar-top{display:flex;align-items:center;gap:8px;font-size:13px;min-width:0}
.ag-bar-dot{width:20px;height:20px;border-radius:50%;background:var(--ok);color:#fff;display:grid;place-items:center;flex:none}
.ag-bar-txt{flex:1;min-width:0;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.ag-bar-it{margin:8px 0 8px;font-size:13.5px;font-weight:600;line-height:1.45}
.ag-bar-it.undone{opacity:.6}
.ag-bar-err{font-size:12px;color:var(--orange);display:flex;gap:6px;align-items:flex-start;margin-bottom:6px}
.ag-bar-err svg{flex:none;margin-top:2px}
.ag-bar-q{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line-soft);padding-top:10px}
.ag-bar-q>span{font-weight:700}
.ag-bar-b{display:flex;gap:8px;flex-wrap:wrap}
.ag-flash{animation:agFlash 2.6s ease-out}
@keyframes agFlash{0%,35%{box-shadow:0 0 0 3px var(--orange),0 0 26px rgba(246,143,28,.55)}100%{box-shadow:0 0 0 0 transparent}}
@media (max-width:980px){.ag-bar{left:16px;right:96px;width:auto;transform:none}@keyframes agUp{from{transform:translateY(30px);opacity:0}}}
@media (max-width:640px){
  .ag-ov{padding:0;align-items:stretch}
  .ag-panel{max-height:none;height:100%;border-radius:0;border:0;padding:14px 16px}
  .ag-orb{width:120px;height:120px}.ag-orb-in{width:84px;height:84px}
  .ag-fab{right:14px;bottom:82px;width:56px;height:56px}
  .ag-bar{left:12px;right:12px;bottom:84px;padding:12px}
  .ag-bar-b{width:100%}.ag-bar-b .btn{flex:1}
}
@media (prefers-reduced-motion:reduce){.ag-fab::after,.ag-orb.on .r1,.ag-flash{animation:none}}
/* Mientras se comprueba una orden del agente, la barra «¿Está bien?» queda por encima de las ventanas
   (que dejan hueco abajo para ella), así siempre se puede pulsar OK / Ajustar / Deshacer */
body.ag-reviewing .ag-bar{z-index:56}
body.ag-reviewing .modal-bg:not(.lib-viewer-bg){padding-bottom:176px;align-items:flex-start;padding-top:24px}
body.ag-reviewing .modal-bg:not(.lib-viewer-bg) .modal{max-height:calc(100vh - 210px)}
@media (max-width:640px){body.ag-reviewing .modal-bg:not(.lib-viewer-bg){padding-bottom:236px;padding-top:12px}body.ag-reviewing .modal-bg:not(.lib-viewer-bg) .modal{max-height:calc(100vh - 252px)}}

/* ---------- Juego: control remoto con el panel de Simcenter (SimCenter) ---------- */
.gm-btn{gap:8px}
.gm-dot{width:9px;height:9px;border-radius:50%;background:var(--muted);display:inline-block;flex:none}
.gm-dot.gm-ok{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}
.gm-dot.gm-off{background:var(--bad);box-shadow:0 0 0 3px var(--bad-bg)}
.gm-st{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;letter-spacing:.02em;color:var(--muted);white-space:nowrap}
.gm-st::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
.gm-st.gm-run{color:var(--ok)} .gm-st.gm-idle{color:var(--text-2)} .gm-st.gm-off{color:var(--muted)} .gm-st.gm-upd{color:var(--orange)} .gm-st.gm-none{color:var(--muted)}
.sl-name .gm-st{display:flex;margin-top:2px}
.gm-box{margin-top:14px;border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface-2);display:flex;flex-direction:column;gap:10px}
.gm-box.gm-offline{flex-direction:row;align-items:center;gap:10px;font-size:12.5px;color:var(--text-2)}
.gm-box.gm-offline > span{flex:1}
.gm-box.gm-on{border-color:rgba(246,143,28,.45);background:linear-gradient(180deg,rgba(214,0,3,.08),rgba(246,143,28,.04))}
.gm-launch{display:flex;align-items:center;gap:10px;font-size:13.5px;cursor:pointer}
.gm-launch input{width:18px;height:18px;accent-color:var(--orange)}
.gm-launch span{display:inline-flex;align-items:center;gap:6px}
.gm-body{display:flex;flex-direction:column;gap:10px}
.gm-body .field{margin:0}
.simstart:has(input[name=gm_go]:not(:checked)) .gm-body{display:none}
.gm-sp{display:none}
.simstart:has(input[name=gm_mode][value=sp]:checked) .gm-sp{display:flex;flex-direction:column;gap:10px}
.simstart:has(input[name=gm_mode][value=sp]:checked) .gm-srv{display:none}
.gm-sp:has(select[name=gm_preset] option:checked:not([value=""])) .gm-custom{display:none}
.gm-assists summary{cursor:pointer;font-size:13px;font-weight:600;padding:2px 0}
.gm-assists[open] summary{margin-bottom:10px}
.gm-assists .row2{margin-bottom:8px}
.gm-checks{display:flex;flex-wrap:wrap;gap:8px 18px}
.gp-list:has(select){grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}
.gp-row:has(select){grid-template-columns:52px minmax(0,1fr) minmax(0,1.1fr)}
.gp-row select{padding:8px 10px;font-size:12.5px}
.gm-panel .gm-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
@media (max-width:620px){.gp-list:has(select){grid-template-columns:1fr}.gp-row:has(select){grid-template-columns:52px 1fr}.gp-row:has(select) select{grid-column:1/-1}.gm-box.gm-offline{flex-wrap:wrap}}
.gm-srvtime{display:flex;gap:8px;align-items:flex-start;color:var(--text-2);line-height:1.45}
.gm-srvtime:empty{display:none}
.gm-srvtime svg{flex:none;margin-top:2px;color:var(--orange)}
.simstart.gm-hasrules:has(input[name=gm_go]:checked):not(:has(input[name=gm_mode][value=sp]:checked)) .f-dur{display:none}
/* Botón esperando el segundo clic («¿Seguro?») */
.armed{animation:armPulse 1s ease-in-out infinite}
.chip.armed{background:var(--bad-bg);border-color:var(--bad);color:#ff6b6d}
.sl-acts .btn.armed{padding:5px 10px;font-size:11.5px;white-space:nowrap}
@keyframes armPulse{50%{box-shadow:0 0 0 4px rgba(214,0,3,.25)}}
@media (prefers-reduced-motion:reduce){.armed{animation:none}}
