html{-webkit-text-size-adjust:100%}
body{margin:0}
[hidden]{display:none!important}
img{max-width:100%}
:root{padding-top:env(safe-area-inset-top,0px)}

:root{
  --bg:#F3F5F8; --surface:#FFFFFF; --surface-2:#E9EDF2; --ink:#111418; --ink-2:#4E5763; --ink-3:#77818D;
  --line:#D8DDE3; --brand:#0091FE; --brand-ink:#0069BD; --on-brand:#FFFFFF;
  --orange:#FF7A00; --orange-ink:#B04F00; --padel:#4CC31E; --padel-ink:#2B7209; --ok:#2FA84F;
  --good:#2B7209; --warn:#A86F00; --bad:#C4321F; --good-bg:#E3F5D6; --warn-bg:#FBEFD2; --bad-bg:#F8E0DB;
  --rail:#0B0D10; --rail-ink:#C8CED6; --rail-hover:#1A1E24;
  --shadow:0 1px 2px rgba(10,20,10,.06),0 8px 24px rgba(10,20,10,.06);
  --display:"Montserrat",system-ui,"Segoe UI",sans-serif;
  --body:"Barlow",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  color-scheme:dark;
  --bg:#0B0E12; --surface:#13171D; --surface-2:#1B2129; --ink:#E7ECF2; --ink-2:#A2ACB8; --ink-3:#7B8591;
  --line:#27303A; --brand-ink:#5CB8FF; --orange-ink:#FF9B45; --padel-ink:#7BE84A;
  --good:#7BE84A; --warn:#E8B23C; --bad:#FF7B68; --good-bg:#1D3314; --warn-bg:#3A2E10; --bad-bg:#3D1C17;
  --rail:#06080A; --rail-hover:#151A20; --shadow:0 1px 2px rgba(0,0,0,.4);
}}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0B0E12; --surface:#13171D; --surface-2:#1B2129; --ink:#E7ECF2; --ink-2:#A2ACB8; --ink-3:#7B8591;
  --line:#27303A; --brand-ink:#5CB8FF; --orange-ink:#FF9B45; --padel-ink:#7BE84A;
  --good:#7BE84A; --warn:#E8B23C; --bad:#FF7B68; --good-bg:#1D3314; --warn-bg:#3A2E10; --bad-bg:#3D1C17;
  --rail:#06080A; --rail-hover:#151A20; --shadow:0 1px 2px rgba(0,0,0,.4);
}
*{box-sizing:border-box}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font:15px/1.45 var(--body);}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3{font-family:var(--display);letter-spacing:.01em;text-wrap:balance;margin:0}
h1{font-size:27px;font-weight:800;line-height:1.1;text-transform:none;letter-spacing:-.005em}
h2{font-size:17px;font-weight:800;text-transform:none}
h3{font-size:15px;font-weight:700}
.num,.tab{font-variant-numeric:tabular-nums}
.mono{font-family:var(--mono);font-size:.92em}
.shell{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100%}
.rail{background:var(--rail);color:var(--rail-ink);padding:18px 12px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:18px}
.brand{display:flex;align-items:center;gap:10px;padding:0 8px}
.brand{text-decoration:none}
.logo-tile{background:#fff;border-radius:10px;width:44px;height:40px;display:grid;place-items:center;flex:none;overflow:hidden}
.logo-tile img{max-width:40px;max-height:34px;object-fit:contain}
.brand b{font-family:var(--display);font-size:19px;font-weight:800;color:#fff;letter-spacing:.04em;line-height:1}
.brand small{display:block;font-size:11px;letter-spacing:.14em;text-transform:none;color:#8F9C8C}
.nav{display:flex;flex-direction:column;gap:2px}
.nav button{all:unset;cursor:pointer;display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;font-weight:600;font-size:14.5px}
.nav button:hover{background:var(--rail-hover);color:#fff}
.nav button[aria-current="page"]{background:var(--brand);color:var(--on-brand)}
.nav button:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.nav svg{width:18px;height:18px;flex:none}
.rail .foot{margin-top:auto;font-size:12px;color:#7F8994;padding:0 8px}
.rail .foot a{color:#AEB7C2}
.main{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 28px;border-bottom:1px solid var(--line);background:var(--surface);position:sticky;top:env(safe-area-inset-top,0px);z-index:20}
.gsearch{position:relative;flex:1 1 280px;max-width:460px}
.gsearch input[type=search]{width:100%;padding:9px 12px 9px 36px;border-radius:10px;border:1px solid var(--line);background:var(--surface-2)}
.gsearch svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--ink-3)}
.gres{position:absolute;left:0;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);max-height:380px;overflow:auto;padding:6px;z-index:40}
.gres button{all:unset;display:flex;justify-content:space-between;gap:10px;width:100%;box-sizing:border-box;padding:8px 10px;border-radius:8px;cursor:pointer}
.gres button:hover,.gres button:focus-visible{background:var(--surface-2)}
.gres .k{font-size:11px;text-transform:none;letter-spacing:.1em;color:var(--ink-3);padding:6px 10px 2px}
.role{display:flex;align-items:center;gap:8px;margin-left:auto;flex-wrap:wrap}
.role label{font-size:12px;text-transform:none;letter-spacing:.1em;color:var(--ink-3)}
.seg{display:inline-flex;background:var(--surface-2);border-radius:10px;padding:3px;gap:2px;flex-wrap:wrap}
.seg button{all:unset;cursor:pointer;padding:6px 11px;border-radius:8px;font-weight:600;font-size:13.5px;color:var(--ink-2)}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.seg button:focus-visible{outline:2px solid var(--brand)}
select,input:not([type]),input[type=month],input[type=text],input[type=search],input[type=date],input[type=number],input[type=email],input[type=tel],textarea{border:1px solid var(--line);background:var(--surface);border-radius:9px;padding:8px 10px;min-width:0}
textarea{width:100%;resize:vertical;min-height:70px}
select:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--brand);outline-offset:0;border-color:transparent}
.content{padding:24px 28px 60px;display:flex;flex-direction:column;gap:22px;max-width:1280px;width:100%}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap}
.head p{margin:4px 0 0;color:var(--ink-2)}
.eyebrow{font-size:12px;letter-spacing:.14em;text-transform:none;color:var(--ink-3);font-weight:600}
.btn{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:9px;font-weight:600;font-size:14px;border:1px solid var(--line);background:var(--surface);white-space:nowrap}
.btn:hover{border-color:var(--ink-3)}
.btn:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}
.btn.primary:hover{filter:brightness(.95)}
.btn.ghost{border-color:transparent;background:transparent}
.btn.danger{color:var(--bad)}
.btn.sm{padding:5px 10px;font-size:13px}
.btn[disabled]{opacity:.5;pointer-events:none}
.btn svg{width:16px;height:16px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.kpi .v{font-family:var(--display);font-size:30px;font-weight:800;line-height:1;margin-top:6px}
.kpi .s{font-size:13px;color:var(--ink-2);margin-top:4px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px}
.panel > h2,.panel > .ph{margin-bottom:12px}
.ph{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
table{border-collapse:collapse;width:100%;font-size:14px}
th{text-align:left;font-size:12px;text-transform:none;letter-spacing:.08em;color:var(--ink-3);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface)}
th button{all:unset;cursor:pointer}
th button:focus-visible{outline:2px solid var(--brand)}
td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:0}
tbody tr.click{cursor:pointer}
tbody tr.click:hover{background:var(--surface-2)}
.panel .tbl-wrap{border:0;border-radius:0;margin:0 -18px;background:transparent}
.panel .tbl-wrap:last-child{margin-bottom:-18px}
.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:600;white-space:nowrap;background:var(--surface-2);color:var(--ink-2)}
.pill.good{background:var(--good-bg);color:var(--good)}
.pill.warn{background:var(--warn-bg);color:var(--warn)}
.pill.bad{background:var(--bad-bg);color:var(--bad)}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:none}
.sport-patinaje{--sp:var(--orange);--sp-ink:var(--orange-ink)}
.sport-padel{--sp:var(--padel);--sp-ink:var(--padel-ink)}
.sp{display:inline-flex;align-items:center;gap:6px;font-weight:600;color:var(--sp-ink);font-size:13px}
.sp::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--sp);transform:rotate(45deg)}
.bar{height:6px;background:var(--surface-2);border-radius:9px;overflow:hidden;min-width:70px}
.bar i{display:block;height:100%;background:var(--brand)}
.bar i.warn{background:var(--warn)}
.bar i.bad{background:var(--bad)}
.muted{color:var(--ink-2)}
.small{font-size:13px}
.empty{padding:26px;text-align:center;color:var(--ink-2)}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{all:unset;cursor:pointer;padding:5px 11px;border-radius:99px;border:1px solid var(--line);font-size:13px;font-weight:600;background:var(--surface);display:inline-flex;gap:6px;align-items:center}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.chip:focus-visible{outline:2px solid var(--brand)}
.chip .x{opacity:.6}
.chip.confirm{background:var(--bad);color:#fff;border-color:var(--bad)}
.filters{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.filters label,.field label{display:block;font-size:12px;font-weight:600;color:var(--ink-3);text-transform:none;letter-spacing:.08em;margin-bottom:4px}
.filters select,.filters input,.field select,.field input,.field textarea{width:100%}
.bigsearch{position:relative}
.bigsearch input[type=search]{width:100%;font-size:18px;padding:13px 14px 13px 44px;border-radius:12px;border:1.5px solid var(--line);background:var(--surface)}
.bigsearch svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:var(--ink-3)}
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.count{font-family:var(--display);font-size:20px;font-weight:700}
.colmenu{position:relative}
.colmenu .menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:8px;z-index:30;display:grid;gap:2px;min-width:200px}
.colmenu .menu label{display:flex;gap:8px;align-items:center;padding:5px 8px;border-radius:6px;cursor:pointer;font-size:14px}
.colmenu .menu label:hover{background:var(--surface-2)}
/* week grid */
.week{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr));gap:10px;min-width:920px}
.day h3{font-size:15px;text-transform:none;letter-spacing:.06em;color:var(--ink-2);padding:0 2px 6px;border-bottom:2px solid var(--line);margin-bottom:8px}
.blk{all:unset;box-sizing:border-box;display:block;width:100%;cursor:pointer;background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--sp);border-radius:8px;padding:8px 10px;margin-bottom:8px}
.blk:hover{border-color:var(--ink-3);border-left-color:var(--sp)}
.blk:focus-visible{outline:2px solid var(--brand)}
.blk .t{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
.blk b{display:block;font-size:14px;line-height:1.25;margin:2px 0}
.blk .m{font-size:12px;color:var(--ink-2)}
/* attendance */
.roster{display:flex;flex-direction:column}
.rrow{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
.rrow:last-child{border-bottom:0}
.rrow .who{flex:1;min-width:0}
.rrow .who b{display:block}
.tri{display:inline-flex;gap:4px}
.tri button{all:unset;cursor:pointer;width:42px;height:38px;border-radius:9px;display:grid;place-items:center;font-weight:700;border:1.5px solid var(--line);background:var(--surface);font-size:14px}
.tri button:focus-visible{outline:2px solid var(--brand)}
.tri button[data-v="p"][aria-pressed="true"]{background:var(--ok);border-color:var(--ok);color:#fff}
.tri button[data-v="r"][aria-pressed="true"]{background:var(--warn);border-color:var(--warn);color:#fff}
.tri button[data-v="a"][aria-pressed="true"]{background:var(--bad);border-color:var(--bad);color:#fff}
.sess{all:unset;box-sizing:border-box;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--line);border-left:4px solid var(--sp);border-radius:10px;background:var(--surface)}
.sess[aria-pressed="true"]{outline:2px solid var(--brand)}
.sess:focus-visible{outline:2px solid var(--brand)}
.manual{background:var(--rail);color:#DDE6DA;border-radius:12px;padding:14px 16px;display:flex;gap:14px;align-items:center}
.manual .wk{font-family:var(--display);font-size:34px;font-weight:800;color:var(--brand);line-height:.9;text-align:center}
.manual .wk small{display:block;font-size:11px;letter-spacing:.14em;color:#8F9C8C;font-family:var(--body);font-weight:600}
.dots{display:flex;gap:3px;flex-wrap:wrap}
.dots i{width:10px;height:10px;border-radius:3px;background:var(--surface-2)}
.dots i.p{background:var(--ok)} .dots i.r{background:var(--warn)} .dots i.a{background:var(--bad)}
/* cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.card{all:unset;box-sizing:border-box;display:flex;flex-direction:column;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;cursor:pointer}
.card:hover{border-color:var(--ink-3)}
.card:focus-visible{outline:2px solid var(--brand)}
.card.static{cursor:default}
.card.static:hover{border-color:var(--line)}
.card h3{font-size:16px;line-height:1.25}
.meta{display:flex;justify-content:space-between;gap:8px;font-size:13px;color:var(--ink-2);flex-wrap:wrap}
/* bracket */
.bracket{display:flex;gap:28px;overflow-x:auto;padding-bottom:6px}
.round{display:flex;flex-direction:column;justify-content:space-around;gap:14px;min-width:220px}
.round > h3{font-size:13px;text-transform:none;letter-spacing:.1em;color:var(--ink-3)}
.match{all:unset;box-sizing:border-box;cursor:pointer;display:block;border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden}
.match:hover{border-color:var(--ink-3)}
.match:focus-visible{outline:2px solid var(--brand)}
.match[aria-pressed="true"]{outline:2px solid var(--brand)}
.match .side{display:flex;justify-content:space-between;gap:8px;padding:7px 10px;font-size:13.5px}
.match .side + .side{border-top:1px solid var(--line)}
.match .side.win{font-weight:700;background:var(--good-bg)}
.match .side.tbd{color:var(--ink-3);font-style:italic}
.match .res{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
.champ{border:2px solid var(--brand);border-radius:12px;padding:14px;text-align:center;align-self:center;min-width:200px}
.champ b{display:block;font-family:var(--display);font-size:17px;text-transform:none}
/* tabs */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto}
.tabs button{all:unset;cursor:pointer;padding:10px 14px;font-weight:700;font-family:var(--display);font-size:14px;text-transform:none;letter-spacing:.03em;color:var(--ink-3);border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap}
.tabs button[aria-selected="true"]{color:var(--ink);border-color:var(--brand)}
.tabs button:focus-visible{outline:2px solid var(--brand)}
.obs{border-left:3px solid var(--orange);padding:6px 0 6px 12px}
.obs + .obs{margin-top:8px}
.pb{font-family:var(--mono);font-size:20px;font-weight:500}
.chart svg{width:100%;height:auto;display:block}
.chart text{fill:var(--ink-3);font-size:11px;font-family:var(--body)}
/* drawer */
.scrim{position:fixed;inset:0;background:rgba(5,10,5,.45);z-index:60;display:flex;justify-content:flex-end}
.drawer{background:var(--bg);width:min(560px,100%);height:100%;overflow:auto;display:flex;flex-direction:column;box-shadow:-10px 0 40px rgba(0,0,0,.2)}
.drawer .dh{position:sticky;top:0;background:var(--surface);border-bottom:1px solid var(--line);padding:16px 20px;display:flex;justify-content:space-between;align-items:center;gap:10px;z-index:2}
.drawer .db{padding:18px 20px 30px;display:flex;flex-direction:column;gap:14px}
.drawer .df{position:sticky;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:12px 20px calc(12px + env(safe-area-inset-bottom,0px));display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}
.fg{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.fg .full{grid-column:1/-1}
.check{display:flex;gap:8px;align-items:center;cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--brand-ink)}
.toast{position:fixed;bottom:calc(18px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:10px 16px;border-radius:10px;font-weight:600;z-index:90;box-shadow:var(--shadow);max-width:calc(100% - 32px)}
.note{background:var(--surface-2);border-radius:10px;padding:10px 12px;font-size:13.5px;color:var(--ink-2)}
.avatar{width:54px;height:54px;border-radius:14px;background:var(--rail);color:var(--brand);display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:20px;flex:none}
.hero{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:14px}
.kv dt{color:var(--ink-3)} .kv dd{margin:0;font-weight:600}
.checklist{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.checklist li{display:flex;gap:10px;align-items:center}
.tick{width:20px;height:20px;border-radius:6px;border:1.5px solid var(--line);display:grid;place-items:center;flex:none}
.tick.on{background:var(--ok);border-color:var(--ok);color:#fff}
.tick svg{width:13px;height:13px}
.offline{padding:40px 28px}
@media (max-width:1100px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:860px){
  .shell{grid-template-columns:1fr}
  .rail{position:sticky;top:0;height:auto;flex-direction:row;align-items:center;padding:10px 16px;gap:12px;z-index:30;overflow-x:auto}
  .rail .foot,.brand small{display:none}
  .nav{flex-direction:row;gap:4px}
  .nav button{padding:8px 10px;white-space:nowrap}
  .nav button span{display:none}
  .nav button[aria-current="page"] span{display:inline}
  .top{position:static;padding:12px 16px}
  .content{padding:18px 16px 60px}
  .g2,.g3{grid-template-columns:1fr}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fg{grid-template-columns:1fr}
  h1{font-size:26px}
  #listaGrid{grid-template-columns:1fr!important}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (prefers-reduced-motion:no-preference){.drawer{animation:slide .18s ease-out}@keyframes slide{from{transform:translateX(30px);opacity:.6}}}

/* usuario, vista previa, permisos */
.userbox{display:flex;align-items:center;gap:10px;font-size:13px}
.userbox .who{text-align:right;line-height:1.2}
.userbox .who b{display:block;font-size:14px}
.userbox a{color:var(--ink-2);font-weight:600}
.preview{background:#FFF4D6;color:#5A4300;padding:8px 28px;font-size:13.5px;font-weight:600;display:flex;gap:10px;align-items:center;flex-wrap:wrap;border-bottom:1px solid #EBD9A5}
.preview button{all:unset;cursor:pointer;text-decoration:underline}
.perm td,.perm th{text-align:center}
.perm td:first-child,.perm th:first-child{text-align:left;min-width:220px}
.perm select{padding:5px 6px;font-size:13px}
.perm select.lv-editar{background:var(--good-bg);color:var(--good);font-weight:600}
.perm select.lv-ver{background:color-mix(in srgb,var(--brand) 14%,var(--surface));color:var(--brand-ink);font-weight:600}
.perm th .rn{display:block;font-size:13px;color:var(--ink);text-transform:none;letter-spacing:0;font-weight:700}
.picklist{max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:6px 10px;background:var(--surface)}
.picklist label{padding:4px 0}
/* pantalla de acceso */
.login-body{min-height:100%;display:grid;place-items:center;background:linear-gradient(160deg,color-mix(in srgb,var(--brand) 12%,#fff) 0%,#F3F5F8 55%);padding:24px 16px}
.login-card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:32px 28px;width:min(420px,100%);display:flex;flex-direction:column;gap:10px;color:#111418}
.login-card h1{font-size:24px}
.login-card p{margin:0}
.login-logo{display:block;margin-bottom:8px}
.login-logo img{max-height:64px;width:auto}
.login-logo b{font-family:var(--display);font-size:22px;color:#111}
.login-err{background:var(--bad-bg);color:var(--bad);border-radius:10px;padding:10px 12px;font-weight:600}
#loginform{display:flex;flex-direction:column;gap:12px;margin-top:6px}
#loginform p{margin:0}
#loginform label{display:block;font-size:13px;font-weight:600;margin-bottom:4px;color:#4E5763}
#loginform input[type=text],#loginform input[type=password]{width:100%;padding:12px;border:1.5px solid var(--line);border-radius:10px;font-size:16px;background:#fff;color:#111}
#loginform .login-remember label{display:flex;gap:8px;align-items:center;font-weight:500}
#loginform input[type=submit],#regform input[type=submit]{width:100%;background:var(--brand);color:#fff;border:0;border-radius:10px;padding:13px;font-weight:700;font-size:16px;cursor:pointer;font-family:var(--display)}
#loginform input[type=submit]:hover,#regform input[type=submit]:hover{filter:brightness(.92)}
.login-card a{color:var(--brand-ink);font-weight:600}
@media (max-width:860px){.userbox .who{display:none}.preview{padding:8px 16px}}
.privacy-text{white-space:normal;max-height:260px;overflow:auto;margin-top:8px;padding:10px 12px;background:#F3F5F8;border-radius:10px;color:#4E5763;line-height:1.5}
details summary{cursor:pointer;font-weight:600;color:var(--brand-ink)}
.modal{position:fixed;inset:0;background:rgba(5,8,12,.6);z-index:80;display:grid;place-items:center;padding:16px}
.modal .box{background:var(--surface);border-radius:16px;max-width:620px;width:100%;max-height:calc(100% - 32px);overflow:auto;padding:24px;display:flex;flex-direction:column;gap:12px;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modal .legal{white-space:pre-wrap;background:var(--surface-2);border-radius:10px;padding:12px 14px;font-size:13.5px;max-height:320px;overflow:auto;color:var(--ink-2)}
.selbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--surface-2);border-radius:10px;padding:10px 12px}
.list-edit{display:flex;flex-direction:column;gap:8px}
.list-edit .li{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.list-edit .li input[type=text]{flex:1;min-width:160px}
.inscrito{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.inscrito:last-child{border-bottom:0}
.avatar-img{object-fit:cover;background:var(--surface-2);display:block}
.namecell{display:inline-flex;align-items:center;gap:8px}
.rrow .avatar{flex:none}

#regform{display:flex;flex-direction:column;gap:12px;margin-top:6px}
#regform p{margin:0}
#regform label{display:block;font-size:13px;font-weight:600;margin-bottom:4px;color:#4E5763}
#regform input[type=text],#regform input[type=email],#regform input[type=tel],#regform input[type=password]{width:100%;padding:12px;border:1.5px solid var(--line);border-radius:10px;font-size:16px;background:#fff;color:#111}
#regform .login-remember label{display:flex;gap:8px;align-items:flex-start;font-weight:500}
#regform input[type=submit][disabled]{opacity:.6}
.hp{position:absolute!important;left:-9999px!important;height:0;overflow:hidden}
.login-tabs{display:flex;background:#EEF1F5;border-radius:12px;padding:4px;gap:4px}
.login-tabs a{flex:1;text-align:center;padding:9px 10px;border-radius:9px;text-decoration:none;color:#4E5763!important;font-weight:700;font-size:14px}
.login-tabs a[aria-selected="true"]{background:#fff;color:#111418!important;box-shadow:0 1px 3px rgba(0,0,0,.1)}
.logo-prev{width:150px;height:110px;border-radius:14px;display:grid;place-items:center;padding:14px;flex:none}
.logo-prev img{max-width:100%;max-height:100%;object-fit:contain;background:#fff;border-radius:10px;padding:6px}
.logo-prev span{color:#fff;opacity:.7;font-size:13px}
.chip.palette i{width:14px;height:14px;border-radius:4px;display:inline-block}
input[type=color]{width:44px;height:36px;padding:2px;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:pointer}
.nbadge{font-style:normal;background:var(--bad);color:#fff;border-radius:99px;font-size:11px;font-weight:800;min-width:18px;height:18px;display:inline-grid;place-items:center;padding:0 5px;margin-left:auto}
.nav button .nbadge{margin-left:auto}
.bell{position:relative}
.bell>.btn{position:relative;padding:6px 8px}
.bell>.btn svg{width:20px;height:20px}
.temabtn{padding:6px 8px;min-width:36px;min-height:36px;font-size:20px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.bell>.btn .nbadge{position:absolute;top:-4px;right:-4px}
.bell-menu{position:absolute;right:0;top:calc(100% + 6px);transform:none!important;width:min(380px,90vw);max-height:70vh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);z-index:50}
.bell-item{all:unset;box-sizing:border-box;display:flex;gap:10px;width:100%;padding:10px 12px;border-top:1px solid var(--line);cursor:pointer;font-size:13.5px}
.bell-item:hover{background:var(--surface-2)}
.bell-item.new{background:color-mix(in srgb,var(--brand) 8%,var(--surface))}
/* ===== Área del cliente (móvil primero) ===== */
body.cli{background:var(--bg)}
body.cli .shell{grid-template-columns:1fr}
body.cli .rail{display:none}
body.cli .top{position:sticky;top:env(safe-area-inset-top,0px);padding:10px 16px;border-bottom:0;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
body.cli .top .gsearch{display:none}
.clibrand{display:flex;align-items:center;margin-right:auto;text-decoration:none;color:var(--ink)}.clibrand img{height:36px;width:auto;max-width:150px;object-fit:contain}.clibrand b{font-family:var(--display);font-size:17px}
body.cli .content{max-width:620px;margin:0 auto;padding:6px 16px calc(96px + env(safe-area-inset-bottom,0px))}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;justify-content:space-around;gap:2px;background:var(--surface);border-top:1px solid var(--line);padding:6px 6px calc(6px + env(safe-area-inset-bottom,0px));box-shadow:0 -6px 20px rgba(0,0,0,.06)}
.tabbar button{all:unset;cursor:pointer;flex:1;max-width:120px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;border-radius:12px;font-size:11.5px;font-weight:700;color:var(--ink-3);position:relative}
.tabbar button svg{width:24px;height:24px}
.tabbar button[aria-current="page"]{color:var(--brand-ink);background:color-mix(in srgb,var(--brand) 12%,transparent)}
.tabbar .nbadge{position:absolute;top:2px;right:calc(50% - 22px);margin:0}
.cwrap{display:flex;flex-direction:column;gap:14px}
.chello{display:flex;justify-content:space-between;align-items:flex-end;padding:10px 2px 0}
.chello h1{font-size:28px;text-transform:none;letter-spacing:-.01em}
.ccard{background:var(--surface);border-radius:20px;padding:18px;box-shadow:0 1px 2px rgba(10,20,30,.05),0 6px 20px rgba(10,20,30,.05);border:1px solid color-mix(in srgb,var(--line) 60%,transparent)}
button.ccard{all:unset;box-sizing:border-box;cursor:pointer;background:var(--surface);border-radius:20px;padding:18px;box-shadow:0 1px 2px rgba(10,20,30,.05),0 6px 20px rgba(10,20,30,.05);border:1px solid color-mix(in srgb,var(--line) 60%,transparent)}
.ccard h3{font-size:16px;text-transform:none}
.chero{display:flex;gap:14px;align-items:center;background:linear-gradient(135deg,color-mix(in srgb,var(--sp,var(--brand)) 16%,var(--surface)),var(--surface) 70%)}
.chero h2{text-transform:none;font-size:20px}
.cnext{background:var(--rail);color:#fff}
.cnext .eyebrow{color:color-mix(in srgb,#fff 65%,transparent)}
.cbig{font-family:var(--display);font-size:28px;font-weight:800;margin:4px 0 8px;text-transform:capitalize}
.cmeta{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:14px;opacity:.92}
.cnext .muted{color:color-mix(in srgb,#fff 65%,transparent)!important}
.cgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cgrid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.cgrid3 input,.cgrid3 select{width:100%}
.cmini{display:flex;align-items:center;gap:12px;padding:14px!important}
.ring{--p:0;width:52px;height:52px;border-radius:50%;background:conic-gradient(var(--ok) calc(var(--p)*1%),var(--surface-2) 0);display:grid;place-items:center;flex:none}
.ring span{width:40px;height:40px;border-radius:50%;background:var(--surface);display:grid;place-items:center;font-weight:800;font-size:12px}
.cicon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-weight:800;font-size:20px;flex:none}
.cicon.good{background:var(--good-bg);color:var(--good)}.cicon.warn{background:var(--warn-bg);color:var(--warn)}
.clink{display:flex!important;align-items:center;gap:14px}
.clink>span:first-child{font-size:26px}.clink>span:last-child{margin-left:auto;font-size:22px;color:var(--ink-3)}
.cavi{padding:10px 0;border-bottom:1px solid var(--line)}.cavi:last-child{border-bottom:0}
.mchips{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 4px;scrollbar-width:none}
.mchip{all:unset;cursor:pointer;display:flex;align-items:center;gap:8px;padding:5px 14px 5px 5px;border-radius:99px;background:var(--surface);border:1.5px solid var(--line);font-weight:700;white-space:nowrap}
.mchip[aria-selected="true"]{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 10%,var(--surface))}
.csec{font-size:14px;text-transform:none;letter-spacing:.08em;color:var(--ink-3);margin:8px 2px 0}
.crec-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.cimp{font-family:var(--display);font-size:22px;font-weight:800;white-space:nowrap}
.crec.pagado{opacity:.8}
.crec .row .btn{flex:1;justify-content:center}
.cstate{margin-top:10px;padding:10px 12px;border-radius:12px;font-weight:600;font-size:13.5px}
.cstate.warn{background:var(--warn-bg);color:var(--warn)}.cstate.bad{background:var(--bad-bg);color:var(--bad)}
.cok{display:flex;gap:14px;align-items:center}.cok>span{width:48px;height:48px;border-radius:50%;background:var(--good-bg);color:var(--good);display:grid;place-items:center;font-size:22px;font-weight:800}
.avatar-xl{margin:0 auto;border-radius:28px!important;font-size:38px}
body.cli .btn{padding:10px 16px;border-radius:12px}
body.cli .panel{border-radius:20px}
@media (max-width:420px){.cgrid3{grid-template-columns:1fr 1fr}.chello h1{font-size:24px}}
.cgame{display:flex;gap:14px;align-items:center}
.lvl{width:62px;height:62px;border-radius:18px;background:linear-gradient(135deg,var(--brand),color-mix(in srgb,var(--brand) 50%,#000));color:#fff;display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:16px;flex:none;box-shadow:0 6px 16px color-mix(in srgb,var(--brand) 35%,transparent)}
.xpbar{height:10px;border-radius:99px;background:var(--surface-2);overflow:hidden;margin:8px 0 4px}
.xpbar i{display:block;height:100%;background:linear-gradient(90deg,#FFC83D,#FF7A00);border-radius:99px}
.streak{display:flex;flex-direction:column;align-items:center;font-size:22px;line-height:1}.streak b{font-size:15px}
.btn.big{width:100%;justify-content:center;padding:15px!important;font-size:16px;margin-top:12px}
.ejrow{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.ejrow:last-of-type{border-bottom:0}
.lmap{display:flex;flex-direction:column;gap:10px}
.lrow{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:var(--surface-2)}
.lrow.done{background:var(--good-bg)}.lrow.cur{outline:2px solid var(--brand);background:var(--surface)}
.lname{font-weight:700;font-size:14px}
.ldots{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.ldots i{width:12px;height:12px;border-radius:50%;background:var(--line)}
.ldots i.on{background:var(--ok)}.ldots i.next{background:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 30%,transparent)}
.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px}
.bdg{text-align:center;padding:10px 6px;border-radius:14px;background:var(--surface-2);filter:grayscale(1);opacity:.45}
.bdg.on{filter:none;opacity:1;background:color-mix(in srgb,#FFC83D 18%,var(--surface))}
.bdg span{font-size:28px;display:block}.bdg small{font-size:11px;font-weight:700;display:block;margin-top:4px}
.celebra{position:fixed;inset:0;z-index:95;background:rgba(5,8,12,.55);display:grid;place-items:center;padding:16px}
.celebra>div{background:var(--surface);border-radius:22px;padding:28px;text-align:center;max-width:340px;position:relative;z-index:2;display:flex;flex-direction:column;gap:12px;align-items:center}
.celebra h2{text-transform:none}
.confeti{position:fixed;inset:0;pointer-events:none;z-index:1}
.plv .ph input{font-size:15px}
.pday{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin-bottom:8px}
.pday summary{font-weight:700;color:var(--ink)}
.panel.alarm{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 5%,var(--surface))}
.chart text{font-size:13px}
/* acceso directo en el móvil */
.pwa-btn{margin-top:6px;width:100%;background:#fff;border:1.5px dashed var(--brand);color:var(--brand-ink);border-radius:12px;padding:12px;font-weight:700;font-size:15px;cursor:pointer;font-family:inherit}
.pwa-help{background:#F3F5F8;border-radius:12px;padding:12px 14px;font-size:14px;line-height:1.5;color:#27303A}
.pwa-help ol{margin:6px 0 8px;padding-left:20px}.pwa-help p{margin:0}
/* ===== 2.1 ===== */
/* recibos */
.rbox{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:var(--surface-2)}
.rbox-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;margin-bottom:8px}.rbox-h b{font-size:20px}
.rbox .kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0}
.hist{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13.5px}
details.panel>summary{font-weight:700}
tr.anulado td{opacity:.55}tr.anulado td .namecell b{text-decoration:line-through}
tr.sel td{background:color-mix(in srgb,var(--brand) 8%,transparent)}
.cobrobox{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--surface-2)}.cobrobox h3{margin:0 0 10px}
#a_proxInfo{background:var(--surface);border-radius:10px;padding:10px 12px;border:1px dashed var(--line)}
select.est-alta{background:var(--good-bg);color:var(--good);font-weight:700}select.est-baja{background:var(--bad-bg);color:var(--bad);font-weight:700}
/* contacto rápido */
.contact{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.contact .btn{border-radius:999px}
.btn.call{background:var(--good);border-color:var(--good);color:#fff}
.btn.wa{background:#25D366;border-color:#25D366;color:#fff}
.btn.call:hover,.btn.wa:hover{filter:brightness(.93)}
/* mensajes */
.cmsg.nuevo{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 25%,transparent)}
.avpick{flex-basis:100%;display:flex;flex-direction:column;gap:8px}
.avpick .picklist label{display:flex;gap:8px;align-items:center}
/* menú "Más" */
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.tile{all:unset;cursor:pointer;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:14px 6px;border-radius:14px;background:var(--surface-2);border:1px solid var(--line);font-size:12.5px;font-weight:700;color:var(--ink);min-height:74px}
.tile svg{width:24px;height:24px;color:var(--brand-ink)}
.tile[aria-current="page"]{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 10%,var(--surface))}
.tile .nbadge{position:absolute;top:6px;right:8px;margin:0}
.printbtn svg{width:16px;height:16px}
.tabbar.staff{display:none}
/* móvil: menú abajo y tablas como tarjetas (sin scroll lateral) */
@media (max-width:860px){
  body:not(.cli) .rail{display:none}
  body:not(.cli) .tabbar.staff{display:flex}
  body:not(.cli) .content{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
  .top{gap:8px 10px}
  .top .gsearch{order:5;flex:1 1 100%;max-width:none}
  .top .role{order:6;flex:1 1 100%;display:flex;gap:6px;align-items:center}
  .top .role select{flex:1;min-width:0}
  body:not(.cli) .userbox .btn[data-act="pwd"],body:not(.cli) .userbox>a{display:none}
  .printbtn span{display:none}
  .head{flex-direction:column;align-items:stretch}
  .head .row{flex-wrap:wrap}
  .drawer{width:100%!important;max-width:100%!important}
  .selbar{position:sticky;top:0;z-index:15;box-shadow:0 6px 16px rgba(0,0,0,.08)}
  .toolbar{flex-direction:column;align-items:flex-start;gap:8px}
}
@media (min-width:861px){body:not(.cli) .clibrand{display:none}}
@media (max-width:700px){
  .tbl-wrap{overflow:visible;border:0;background:transparent}
  .panel .tbl-wrap{margin:0}
  .tbl-wrap table:not(.perm):not(.nocard){display:block}
  .tbl-wrap table:not(.perm):not(.nocard) thead{display:none}
  .tbl-wrap table:not(.perm):not(.nocard) tbody{display:flex;flex-direction:column;gap:10px}
  .tbl-wrap table:not(.perm):not(.nocard) tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px 14px;position:relative;box-shadow:0 1px 2px rgba(0,0,0,.04)}
  .tbl-wrap table:not(.perm):not(.nocard) td{display:block;border:0;padding:0;min-width:0;overflow-wrap:anywhere}
  .tbl-wrap table:not(.perm):not(.nocard) td::before{content:attr(data-label);display:block;font-size:10.5px;text-transform:none;letter-spacing:.06em;color:var(--ink-3);font-weight:700;margin-bottom:2px}
  .tbl-wrap table:not(.perm):not(.nocard) td[data-label=""]::before,.tbl-wrap td.tc-title::before,.tbl-wrap td.tc-check::before{display:none}
  .tbl-wrap td.tc-title{grid-column:1/-1;font-size:16px;padding-right:34px}
  .tbl-wrap td.tc-check{position:absolute;top:10px;right:10px}
  .tbl-wrap td.tc-check input{width:22px;height:22px}
  .tbl-wrap table:not(.perm):not(.nocard) td.empty,.tbl-wrap td[colspan]{grid-column:1/-1}
  .tbl-wrap td:empty{display:none}
  .perm{display:block;overflow-x:auto}
  .kpis{grid-template-columns:1fr 1fr!important}
  .tiles{grid-template-columns:repeat(3,minmax(0,1fr))}
}
/* imprimir listados */
@media print{
  @page{margin:12mm}
  .rail,.top,#tabbar,#previewBar,#drawerRoot,#toastRoot,.filters,.chips,.selbar,.bigsearch,.head>.row,.toolbar .row,.btn,.colmenu,.gres,.bell,.pwa-btn,.pwa-help{display:none!important}
  html,body,.main,.content,.panel,.kpi{background:#fff!important;color:#000!important}
  .shell{display:block}.content{padding:0!important;max-width:none!important}
  .tbl-wrap{overflow:visible!important;border:0!important}
  .tbl-wrap table{display:table!important}.tbl-wrap thead{display:table-header-group!important}.tbl-wrap tbody{display:table-row-group!important}
  .tbl-wrap tr{display:table-row!important;border:0!important;box-shadow:none!important;padding:0!important}
  .tbl-wrap td{display:table-cell!important;padding:4px 6px!important;border-bottom:1px solid #ccc!important}
  .tbl-wrap td::before{display:none!important}
  table{font-size:10.5px}tr{break-inside:avoid}th{color:#000!important}
  .panel,.kpi{box-shadow:none!important;border:1px solid #bbb!important;break-inside:avoid}
  td input[type=checkbox],th input[type=checkbox]{display:none}
  .avatar,.avatar-img{display:none!important}
  a{color:#000;text-decoration:none}
}
/* 2.2: tutores, contactos por tutor e histórico */
.tutorbox{border:1px solid var(--line,#e3e7ec);border-radius:12px;padding:10px 12px}
.tutorbox h3{font-size:14px;margin:0 0 6px}
.contacts{display:flex;flex-direction:column;gap:8px}
.contact .cname{min-width:100%;font-weight:600}
.histlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.histlist li{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}
.histdet{margin-top:12px}
.histdet summary{cursor:pointer;font-weight:700;padding:6px 0}
/* 2.3: bloqueo, preinscripciones, formulario online, autorizados, QR, plantillas */
.ccard.cblock{text-align:center;border:2px solid var(--bad);background:color-mix(in srgb,var(--bad) 6%,var(--surface))}
.ccard.cblock .big{font-size:44px;line-height:1}.ccard.cblock h1{font-size:24px;margin:8px 0}
.precard .contacts{margin-top:8px}
.precard summary{cursor:pointer;color:var(--ink-3);margin-top:8px}
.insc-body{align-items:flex-start;padding-top:24px}
.login-card.insc-card{width:min(640px,100%)}
.insc-h{font-size:16px;margin:14px 0 4px;text-transform:none;letter-spacing:0}
.insc-filtros{display:flex;gap:8px;flex-wrap:wrap}.insc-filtros select{flex:1;min-width:150px}
.insc-opts{display:flex;flex-direction:column;gap:8px;max-height:420px;overflow:auto;padding:2px}
.insc-opt{display:flex;gap:10px;align-items:flex-start;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;cursor:pointer;position:relative}
.insc-opt.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 7%,#fff)}
.insc-opt input{margin-top:3px}.insc-opt span{display:flex;flex-direction:column;gap:2px}.insc-opt small{color:#4E5763;font-size:12.5px}
.insc-opt .lleno{font-style:normal;font-size:12px;font-weight:700;color:#8a5a00;background:#FFF4D6;border-radius:999px;padding:2px 8px;margin-left:auto;white-space:nowrap}
.insc-fs{border:1px solid var(--line);border-radius:12px;padding:8px 12px 12px;margin:8px 0;display:flex;flex-direction:column;gap:8px}
.insc-fs legend{font-weight:700;font-size:14px;padding:0 4px}
.insc-ok{text-align:center;padding:18px 6px}.insc-ok .big{font-size:48px}.insc-ok p{font-size:16px;margin:10px 0}
.insc-ok.espera .big{filter:saturate(.8)}
.login-ok{background:var(--good-bg,#E3F5E1);color:var(--good,#1E7B34);border-radius:10px;padding:10px 12px;font-weight:600}
.btn-lnk{display:inline-block;background:var(--brand);color:#fff!important;border-radius:10px;padding:10px 16px;text-decoration:none;font-weight:700}
.pre-link{display:inline-block;margin-top:4px}
.qrbox{width:220px;max-width:100%;background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px;display:grid;place-items:center;min-height:120px}
.qrbox svg{width:100%;height:auto;display:block}
.fich{text-align:center;padding:10px 0}.fich .big{font-size:52px;line-height:1}.fich h2{margin:10px 0 4px}.fich .cbig{font-size:44px;font-weight:800;font-family:var(--mono,monospace)}
.autlist{display:flex;flex-direction:column;gap:10px;margin:12px 0}
.autrow{display:flex;gap:12px;align-items:center;flex-wrap:wrap;border:1px solid var(--line);border-radius:12px;padding:10px}
.autrow .who{flex:1;min-width:160px;display:flex;flex-direction:column;gap:2px}
.autimg{width:92px;height:62px;border-radius:8px;overflow:hidden;background:var(--surface-2);display:grid;place-items:center;flex:none}
.autimg img{width:100%;height:100%;object-fit:cover}.autimg.none{font-size:11px;color:var(--ink-3);text-align:center;padding:4px}
details.tpl{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px}
details.tpl summary{cursor:pointer}
@media (max-width:600px){.autrow .row{width:100%}.qrbox{width:100%}}
.login-card form{display:flex;flex-direction:column;gap:12px;margin-top:6px}
.login-card form label{display:block;font-size:13px;font-weight:600;margin-bottom:4px;color:#4E5763}
.login-card form .login-remember label{display:flex;gap:8px;align-items:center;font-weight:500}
.login-card form input[type=text],.login-card form input[type=password],.login-card form input[type=email],.login-card form input[type=tel],.login-card form input[type=date],.login-card form select,.login-card form textarea{width:100%;padding:12px;border:1.5px solid var(--line);border-radius:10px;font-size:16px;background:#fff;color:#111;font-family:inherit;box-sizing:border-box}
.login-card form input[type=submit]{width:100%;background:var(--brand);color:#fff;border:0;border-radius:10px;padding:13px;font-weight:700;font-size:16px;cursor:pointer}
.login-card form input[type=submit]:disabled{opacity:.6}
.login-card code{font-size:12px;word-break:break-all}
.inscrito .row{flex-wrap:wrap;min-width:0}.inscrito .pill{white-space:normal;text-align:left}
body.cli .cwrap{max-width:100%;overflow-x:clip}
.login-card form label.insc-opt{display:flex;font-size:14px;font-weight:500;color:#111418;margin:0}
.login-card form .insc-opt b{font-weight:700}
/* 2.4: calendarios */
.calgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.calh{text-align:center;font-weight:700;font-size:12px;color:var(--ink-3);padding:4px 0}
.calc{min-height:92px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:5px;display:flex;flex-direction:column;gap:3px;overflow:hidden;cursor:default}
.calc[data-act]{cursor:pointer}.calc[data-act]:hover{border-color:var(--brand)}
.calc.empty{background:transparent;border:0}
.calc.hoy{border:2px solid var(--brand)}.calc.hoy .caln{background:var(--brand);color:#fff;border-radius:999px;padding:0 6px}
.calc.nolect{background:repeating-linear-gradient(135deg,var(--surface),var(--surface) 6px,var(--surface-2) 6px,var(--surface-2) 12px)}
.caln{font-weight:700;font-size:13px;align-self:flex-start}
.calev{all:unset;box-sizing:border-box;cursor:pointer;font-size:11.5px;line-height:1.25;padding:3px 5px;border-radius:6px;background:color-mix(in srgb,var(--ev) 16%,var(--surface));border-left:3px solid var(--ev);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.evlist{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.evrow{all:unset;box-sizing:border-box;cursor:pointer;display:flex;gap:12px;align-items:center;padding:10px 12px;border-radius:12px;border:1px solid var(--line);border-left:5px solid var(--ev);background:var(--surface);width:100%}
.evrow:hover{background:color-mix(in srgb,var(--ev) 6%,var(--surface))}
.evdate{display:flex;flex-direction:column;align-items:center;min-width:42px;line-height:1}.evdate b{font-size:22px}.evdate small{font-size:11px;text-transform:none;color:var(--ink-3);margin-top:2px}
.evtxt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.evtxt b{overflow:hidden;text-overflow:ellipsis}.evtxt small{color:var(--ink-3);font-size:12.5px}
.evwhen{font-size:12px;font-weight:700;color:var(--ev);white-space:nowrap}
.evaud{margin:-4px 0 4px 14px}
.evleyenda{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px;font-size:12px;color:var(--ink-3)}.evleyenda i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.evhead{border-left:5px solid var(--ev);padding:4px 0 4px 12px}
@media (max-width:700px){.calc{min-height:54px;padding:3px}.calev{font-size:0;padding:0;height:6px;border-left:0;background:var(--ev)}.calh{font-size:11px}}
.picklist .check,.field .chips label.chip{text-transform:none;letter-spacing:0;font-size:14px;font-weight:500;color:var(--ink)}
.field .chips label.chip{display:inline-flex;gap:6px;align-items:center;cursor:pointer}
.accmon .check{text-transform:none;letter-spacing:0;font-size:14px;font-weight:500;color:var(--ink)}

/* 2.5: mayúsculas reales, formularios, avisos por email del calendario */
h1{letter-spacing:-.01em}
.eyebrow,.brand small,.gres .k,.role label,th,.csec,.round > h3,.evdate small{letter-spacing:.02em}
.field label,label.lbl{letter-spacing:0;font-size:13px}
#nav button.navsub{padding-left:34px;font-size:13.5px;opacity:.92}
#nav button.navsub svg{width:15px;height:15px}
.evmail{display:flex;flex-direction:column;gap:4px;background:var(--bg-2,#F4F6F8);border-radius:10px;padding:10px 12px}
.ffwrap{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:18px;align-items:start}
.ffprev{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto}
.ffc{border:1px solid var(--line,#E3E7EC);border-radius:12px;padding:12px;margin:0 0 12px;background:#fff}
.ffc.sec{background:var(--bg-2,#F4F6F8)}
.ffc-h{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.ffc-h select{flex:1;min-width:160px}
.ffc-ico{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--brand-soft,#E5F3FF);font-weight:700;font-size:13px}
.ffc-acts{display:flex;gap:2px}
.ffadd{display:flex;flex-wrap:wrap;gap:6px}
.ffadd-h{font-size:14px;margin:16px 0 8px}
.ffp p{margin:0 0 12px}.ffp label{display:block;font-weight:600;font-size:14px;margin-bottom:4px}.ffp label.check{font-weight:400}
.ffp small{display:block;color:var(--ink-3);margin:-2px 0 4px}
.ffp input:not([type=checkbox]):not([type=radio]),.ffp textarea,.ffp select{width:100%}
.ffp .req{color:var(--bad,#C62828)}
.ffp-sec{font-size:15px;margin:18px 0 6px;padding-top:10px;border-top:1px solid var(--line,#E3E7EC)}
.ffp-fijo{border:1px dashed var(--line,#CBD2DA);border-radius:10px;padding:8px 10px;margin:10px 0}
.ffresp{margin:8px 0 0;font-size:14px}
@media (max-width:860px){.ffwrap{grid-template-columns:1fr}.ffprev{position:static;max-height:none}}
.insc-fijo{background:var(--brand-soft,#E5F3FF);border-radius:12px;padding:12px 14px;margin:0 0 14px}
.insc-fijo b{display:block}.insc-fijo small{display:block;color:#5B6570}
.login-card form .insc-q{margin:0 0 14px}
.login-card form .insc-q small{display:block;color:#5B6570;margin:-2px 0 6px}
.login-card form label.insc-chk{display:flex;gap:8px;align-items:flex-start;font-weight:400}
.login-card form label.insc-chk input{width:auto;margin-top:3px}
.login-card form .insc-sec{font-size:16px;margin:18px 0 4px}
@media (max-width:860px){#nav button.navsub{padding-left:10px;font-size:14px}}
.firmaprev{background:var(--bg-2,#F4F6F8);border-radius:10px;padding:10px 12px;margin:10px 0 0;font:inherit;font-size:14px;white-space:pre-line}
label.check.pruebas{background:#FFF7E6;border-radius:10px;padding:10px 12px;margin-bottom:10px;align-items:flex-start}
.pfrow{display:flex;gap:12px;justify-content:space-between;align-items:center;padding:10px 0;border-top:1px solid var(--line,#E3E7EC);flex-wrap:wrap}
.pfrow:first-of-type{border-top:0}.pfrow.off{opacity:.7}.pfrow.gen{background:transparent}
.pfmain{min-width:0;flex:1 1 320px}.pfmain code{word-break:break-all}
.slugrow{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.slugrow input{flex:1;min-width:160px}
.userchips{margin:0 0 10px}
input.ro{background:var(--bg-2,#F4F6F8);color:var(--ink-2)}
td.num{white-space:nowrap}
details.cfgsec{padding:0}
details.cfgsec>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 20px}
details.cfgsec>summary::-webkit-details-marker{display:none}
details.cfgsec>summary h2{margin:0}
details.cfgsec>summary .chev{font-size:22px;line-height:1;color:var(--ink-3);transition:transform .15s}
details.cfgsec[open]>summary .chev{transform:rotate(90deg)}
details.cfgsec>summary:hover{background:var(--bg-2,#F4F6F8);border-radius:inherit}
details.cfgsec>.cfgbody{padding:0 20px 18px}
.cfgall{margin:0 0 10px;justify-content:flex-end}
table.recdep td,table.recdep th{padding:6px 5px;text-align:center}table.recdep td:first-child,table.recdep th:first-child{text-align:left;white-space:nowrap}
table.recdep tr.off td{opacity:.55}table.recdep input[type=checkbox]{width:18px;height:18px}
.depdot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}
.ffc{display:flex;flex-direction:column;gap:10px}
.ffc-sum{display:flex;gap:10px;align-items:center;cursor:pointer}
.ffc .ffc-acts{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.ffc.edit{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 18%,transparent)}
.ffaddbox{border:2px dashed var(--line,#CBD2DA);border-radius:12px;padding:12px 14px;margin-top:8px}
.ffaddbox .ffadd-h:first-child{margin-top:0}
table.ctres th,table.ctres td{white-space:nowrap}table.ctres tbody tr:last-child{border-top:2px solid var(--line,#CBD2DA)}
.pctbox{display:inline-block;min-width:74px;text-align:right;padding:3px 8px;border-radius:6px;font-weight:700}.pctbox.good{background:var(--good-bg,#E3F5E1);color:var(--good,#1E7B34)}.pctbox.bad{background:var(--bad-bg,#FDE7E7);color:var(--bad,#C62828)}
table.ctmov tr.int td{background:#FFFBEF}
.ctimp{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;align-items:end;background:var(--bg-2,#F4F6F8);border-radius:12px;padding:12px}
.cttot{font-size:22px;font-weight:800;padding:6px 0}
.ctfile{justify-content:space-between;margin-bottom:6px}
p.big{font-size:28px;font-weight:800;margin:8px 0}
#view .toolbar select{max-width:320px}
.chip .x{all:unset;cursor:pointer;margin-left:6px;font-weight:800;color:var(--bad,#C62828)}
.saludico{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#FDE7E7;color:#C62828;font-size:12px;margin-left:6px;cursor:help}
.galum{margin-bottom:14px}.galum .ph{gap:8px;flex-wrap:wrap}.rrow.debe{background:#FFF4F4;border-radius:10px}
.blk{position:relative}.blkpend{position:absolute;top:6px;right:6px;background:#C62828;color:#fff;font-style:normal;font-size:11px;font-weight:800;border-radius:999px;padding:1px 7px}
.actabs{margin:-4px 0 14px}.accartel{display:flex;gap:12px;align-items:center;margin-bottom:8px}.accartel img{width:110px;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.acdoc{margin-bottom:6px}.acdoc input{flex:1;min-width:140px}
.insc-cartel img{width:100%;max-width:360px;border-radius:10px;margin:10px 0 6px;display:block}.insc-dc{margin:6px 0;font-size:14px}.insc-dl{font-size:14px;margin:6px 0}.insc-dl summary{cursor:pointer;font-weight:700}
.insc-docs{display:flex;flex-direction:column;gap:4px;margin-top:6px;font-size:14px}.insc-thumb{width:54px;height:72px;object-fit:cover;border-radius:6px;margin-left:auto}
.qrbig{max-width:320px;margin:0 auto}.qrbig svg{width:100%;height:auto;display:block}
.celprecio{background:var(--bg-2,#F4F6F8);border-radius:12px;padding:12px 14px}.celprecio h3{margin:0 0 8px;font-size:15px}
.celmons{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px}.celmon{display:flex;gap:6px;align-items:center;flex-wrap:wrap;border:1px solid var(--line,#E3E7EC);border-radius:10px;padding:6px 8px}.celmon.on{border-color:var(--brand);background:#F2FAF3}.celmon select{flex:1;min-width:120px}.celmon input[type=number]{width:80px}
/* 2.9 archivo */
.arbulk{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px;position:sticky;top:0;z-index:3}
.artbl td{vertical-align:top}.artbl td a{font-weight:600;word-break:break-word}
.arcand{display:flex;flex-direction:column;gap:6px;max-height:320px;overflow:auto;margin-bottom:8px}.arcand .check{align-items:flex-start}
.arplan{width:100%;margin-top:6px}.arplan td{padding:3px 6px}.arplan td.num{text-align:right;white-space:nowrap}
#ar_prog .bar{height:8px;border-radius:6px;background:var(--line,#e5e7eb);overflow:hidden;margin-top:8px}#ar_prog .bar i{display:block;height:100%;background:var(--brand,#2563eb);transition:width .3s}
.nowrap{white-space:nowrap}
/* 2.10 ordenar tablas */
table.sortable thead th{cursor:pointer;user-select:none}table.sortable thead th::after{content:" ↕";opacity:.35;font-size:.85em}
table.sortable thead th[aria-sort=ascending]::after{content:" ▲";opacity:.8}table.sortable thead th[aria-sort=descending]::after{content:" ▼";opacity:.8}
.thbtn{all:unset;cursor:pointer;font:inherit;color:inherit;display:inline-flex;gap:4px;align-items:center}.thbtn:focus-visible{outline:2px solid var(--brand,#2563eb);outline-offset:2px}.sarr{opacity:.45;font-size:.85em}th[aria-sort=ascending] .sarr,th[aria-sort=descending] .sarr{opacity:.9}
#nav button.navgrp{font-weight:700}#nav .navcaret{margin-left:auto;font-style:normal;opacity:.7}
.tilesh{margin:14px 0 8px;font-size:14px;opacity:.8}
/* 2.10 gestión documental y buscador */
.doccarps{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;margin:12px 0}
.doccarp{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--line,#e5e7eb);border-radius:12px;background:var(--card,#fff);cursor:pointer;text-align:left;font:inherit;color:inherit}
.doccarp[aria-pressed=true]{border-color:var(--brand,#2563eb);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand,#2563eb) 25%,transparent)}
.doccarp .dci{font-size:20px}.doccarp em{margin-left:auto;font-style:normal;font-size:12px;opacity:.7}
.docgrp h3{margin:0 0 6px;font-size:15px}.docalert{border-left:4px solid var(--warn,#d97706)}.docalert ul{margin:6px 0 0;padding-left:18px}
.dplist{display:flex;flex-direction:column;gap:6px;max-height:360px;overflow:auto;margin-top:8px}
.arfrag{margin-top:4px;color:var(--ink2,#475569)}.arfrag mark{background:#fde68a;color:inherit;padding:0 1px;border-radius:2px}
.arixp{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px}
.arIdxBox{position:fixed;left:16px;bottom:16px;z-index:60;background:var(--card,#fff);border:1px solid var(--line,#e5e7eb);border-radius:12px;padding:10px 12px;box-shadow:0 6px 24px rgba(0,0,0,.15);width:280px;font-size:13px}
.arIdxBox .bar{height:6px;border-radius:6px;background:var(--line,#e5e7eb);overflow:hidden;margin:6px 0}.arIdxBox .bar i{display:block;height:100%;background:var(--brand,#2563eb)}
@media (max-width:860px){.arIdxBox{left:8px;right:8px;width:auto;bottom:76px}}
table.sortable thead th:has(input)::after,table.sortable thead th:empty::after{content:none}table.sortable thead th:has(input),table.sortable thead th:empty{cursor:default}
/* 2.11 RR.HH. */
.monfoto{border-radius:50%;object-fit:cover;flex:none;display:inline-block;background:var(--surface-2,#eef2f7)}
.monfoto.ini{display:inline-flex;align-items:center;justify-content:center;font-weight:700;color:var(--muted,#64748b)}
.monfotobox{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.linkbtn{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left}
.seg{display:inline-flex;gap:4px}
.faltalist{max-height:52vh;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:4px 10px}
.faltaRow{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--line)}.faltaRow:last-child{border:0}
.faltaRow.on{background:var(--surface-2,#f8fafc)}.faltaRow select{max-width:260px}
.hcal-nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0 10px}
.hcal{display:grid;grid-template-columns:44px repeat(var(--cols),minmax(90px,1fr));overflow-x:auto;border:1px solid var(--line);border-radius:10px}
.hcal-h{font-size:12px;font-weight:700;text-align:center;padding:6px 2px;border-bottom:1px solid var(--line);background:var(--surface-2,#f8fafc)}.hcal-h.hoy{color:var(--brand,#16a34a)}
.hcal-t{position:relative;font-size:10px;color:var(--muted)}.hcal-t span{position:absolute;right:4px;transform:translateY(-50%)}
.hcal-d{position:relative;border-left:1px solid var(--line)}.hcal-d i{position:absolute;left:0;right:0;border-top:1px dashed var(--line)}
.hev{position:absolute;left:3px;right:3px;border-radius:6px;padding:2px 5px;font-size:11px;line-height:1.25;overflow:hidden;background:#dbeafe;border-left:3px solid #2563eb;color:#0f172a}
.hev small{display:block;color:#475569}.hev.sust{background:#dcfce7;border-color:#16a34a}.hev.falta{background:#f1f5f9;border-color:#94a3b8;text-decoration:line-through;opacity:.8}.hev.cel{background:#fce7f3;border-color:#ec4899}.hev.act{background:#fef3c7;border-color:#d97706}
.hcal-ley{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}.hcal-ley .hev{position:static;display:inline-block;padding:1px 8px}
@media (max-width:640px){.hcal{grid-template-columns:36px repeat(var(--cols),minmax(72px,1fr))}}
/* 2.11 tarifas */
.tarfs{border:1px solid var(--line);border-radius:10px;padding:6px 12px 10px;margin:6px 0;display:flex;flex-direction:column;gap:6px}.tarfs legend{font-weight:700;font-size:13px;padding:0 4px}
.tartot,.insc-imp{margin:6px 0 0;font-size:15px}
.tared{display:flex;flex-direction:column;gap:10px}.tarrow{display:grid;grid-template-columns:1fr 140px;gap:8px 12px;border:1px solid var(--line);border-radius:10px;padding:10px 12px}
.tarrow .full,.tarrow .check,.tarrow .tarbtn{grid-column:1/-1}.tarbtn{justify-content:flex-end}
@media (max-width:560px){.tarrow{grid-template-columns:1fr}}
.invfp input[type=search]{margin-top:6px;width:100%}.invfr{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-top:4px}
.monsel{display:flex;flex-direction:column;gap:6px}.monsel .msch{gap:6px;flex-wrap:wrap}.monsel .msch:empty{display:none}.monsel select{max-width:340px}.monsel .chip small{margin-left:4px}
.insc-vista{background:#FFF7E0;border:1px solid #F0C36D;border-radius:10px;padding:10px 12px;font-size:14px;margin:0 0 12px}
.actdif-g{display:grid;grid-template-columns:auto 1.3fr 1fr;gap:18px;align-items:start}
.actdif-cartel{display:block;width:150px;border-radius:10px;overflow:hidden;border:1px solid var(--line,#e5e7eb);background:var(--surface-2,#f3f4f6)}.actdif-cartel img{display:block;width:100%;height:auto}
.actdif-cartel.vacio{height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:28px;cursor:pointer;color:var(--muted,#6b7280)}
.actdif-tar{margin:4px 0 10px;padding-left:18px}.actdif-tar li{margin:2px 0}
@media(max-width:860px){.actdif-g{grid-template-columns:1fr}.actdif-cartel{width:min(220px,100%)}}
/* grupos completos */
.blk.lleno{outline:2px solid #DC2626;outline-offset:-2px;background-image:repeating-linear-gradient(135deg,rgba(220,38,38,.07) 0 8px,transparent 8px 16px)}
.blk.casi{outline:2px dashed #D97706;outline-offset:-2px}
.blkest{display:table;font-style:normal;font-size:11px;font-weight:700;color:#fff;background:#DC2626;border-radius:6px;padding:1px 6px;margin-bottom:3px}
.blk.casi .blkest,.blkest.casi{background:#D97706}
.grfil{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.grley{margin:-4px 0 8px}
.insc-ya{background:#F1F7FF;border:1px solid #CFE0F7;border-radius:12px;padding:10px 14px;margin:6px 0 12px}.insc-ya summary{cursor:pointer}
.insc-row{display:flex;gap:8px;flex-wrap:wrap}.insc-row input{flex:1;min-width:160px}.insc-row button{white-space:nowrap}
.insc-ok-mini{margin:0;font-size:14px}
.insc-row button,.insc-ya button.btn-lnk{background:var(--brand,#1f7a3a);color:#fff;border:0;border-radius:10px;padding:10px 14px;font-weight:700;cursor:pointer;font:inherit}
.precoin{background:var(--surface-2,#f5f7fa)}.pvcam td{padding:2px 8px 2px 0}
.arprop tr.difiere td{background:#FFF8E6}.arprop td{vertical-align:top}
.fspadw{position:relative;border:2px dashed var(--line,#cbd5e1);border-radius:12px;background:#fff;touch-action:none}.fspadw canvas{display:block;width:100%;height:auto;touch-action:none;cursor:crosshair}.fspadw .btn{position:absolute;top:6px;right:6px}
.note.warn{border-color:#F0C36D;background:#FFF7E0}
a.pill{text-decoration:none}
.rttab td,.rttab th{white-space:nowrap}.rttab td:first-child{white-space:normal;min-width:200px}.rttab .bad{color:var(--bad,#b91c1c)}.rttab .good{color:var(--good,#15803d)}.rttot td{border-top:2px solid var(--line,#e5e7eb)}
.insfil{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-bottom:10px}
/* 2.17 filtros personalizados */
.fp{margin:6px 0 10px}.fpbar{gap:6px;flex-wrap:wrap;align-items:center}.fpbox{margin-top:8px;padding:12px}
.fprow{display:flex;gap:6px;align-items:flex-start;flex-wrap:wrap;margin-bottom:6px}.fprow>select{min-width:170px}.fpval{display:flex;gap:6px;align-items:center;flex:1;min-width:180px}.fpval input{flex:1;min-width:120px}.fpmulti{min-width:200px;flex:1}
/* 2.18 cabecera de impresión */
#printCab{display:none}
@media print{#printCab{display:block!important;margin-bottom:10px}}
.prtcab{display:flex;align-items:center;gap:14px;border-bottom:2px solid #000;padding-bottom:8px}.prtcab img{height:56px;width:auto}.prtclub{font-size:16px}.prttit{margin-left:auto;text-align:right}.prttit b{font-size:15px}
.pdfbtn{font-weight:700}

/* 2.18 campos personalizados */
.fcchip{display:inline-flex;align-items:center;gap:2px;padding-left:4px}.fcchip .btn{padding:2px 6px;min-height:0}.thsort{all:unset;cursor:pointer;font:inherit;font-weight:700}.thsort:hover{text-decoration:underline}.fpcustom{margin-top:8px}

/* 2.18 desplegables con buscador */
.cbpop{position:fixed;z-index:10000;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(0,0,0,.18);display:flex;flex-direction:column;overflow:hidden}
.cbpop .cbq{margin:8px;width:auto;flex:none}
.cbpop .cbl{overflow:auto;flex:1;min-height:0;padding:0 4px 6px}
.cbpop .cbo{padding:8px 10px;border-radius:8px;cursor:pointer;line-height:1.25}
.cbpop .cbo.on{background:var(--surface-2)}
.cbpop .cbo.sel{font-weight:700}
.cbpop .cbn:not(:empty){padding:4px 10px 8px}

/* 2.18 fechas del buscador de documentos: una debajo de otra */
.ardates{display:grid;grid-template-columns:auto minmax(150px,1fr);gap:4px 8px;align-items:center}
.ardates label{font-size:13px;color:var(--ink-2);font-weight:600;margin:0}
.ardates input{min-height:34px;padding:4px 8px}

.tplist{display:grid;gap:2px}.tprow{display:flex;align-items:center;gap:6px;padding:6px 8px;border-bottom:1px solid var(--line);flex-wrap:wrap}.tprow:last-child{border-bottom:0}

.drawer.sinanim{animation:none!important}

/* 2.18 semáforo de plazas: verde libre, amarillo casi lleno, rojo completo */
.blkest{color:#fff;background:#DC2626}
.blkest.libre{background:#16A34A;color:#fff}
.blkest.casi,.blk.casi .blkest{background:#FACC15;color:#1F1A00}
.blkest.lleno{background:#DC2626;color:#fff}
.blk.libre{background-color:#ECFDF3;outline:2px solid #16A34A;outline-offset:-2px}
.blk.casi{background-color:#FEF9C3;outline:2px solid #EAB308;outline-offset:-2px}
.blk.lleno{background-color:#FEE2E2;outline:2px solid #DC2626;outline-offset:-2px}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .blk.libre{background-color:rgba(22,163,74,.16)}:root:not([data-theme=light]) .blk.casi{background-color:rgba(250,204,21,.16)}:root:not([data-theme=light]) .blk.lleno{background-color:rgba(220,38,38,.18)}}
:root[data-theme=dark] .blk.libre{background-color:rgba(22,163,74,.16)}:root[data-theme=dark] .blk.casi{background-color:rgba(250,204,21,.16)}:root[data-theme=dark] .blk.lleno{background-color:rgba(220,38,38,.18)}
.grley .blkest{display:inline-block;margin:0 2px 0 0;vertical-align:middle}.grley{line-height:1.9}

/* 2.18 plegables */
.fold.cerrado{display:none}
.foldbar{margin:6px 0 10px;gap:8px;align-items:center}
.foldbar .foldq{flex:1 1 260px;min-width:200px;max-width:520px}.foldbar .foldq input,.foldbar input.foldq{width:100%}
.foldbtn.on{background:var(--surface-2)}.foldbtn.activo{border-color:var(--brand)}
.foldn{display:inline-block;min-width:18px;padding:0 5px;border-radius:999px;background:var(--brand);color:#fff;font-size:11px;line-height:18px;text-align:center}
.accmenu{position:relative;display:inline-block}.accmenu>summary{list-style:none;cursor:pointer}.accmenu>summary::-webkit-details-marker{display:none}
.accmenu .accitems{position:absolute;z-index:50;top:calc(100% + 4px);right:0;min-width:230px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 28px rgba(0,0,0,.16);padding:6px;display:flex;flex-direction:column;gap:2px}
.accmenu .accitems .btn{justify-content:flex-start;text-align:left;border:0;background:transparent;width:100%}.accmenu .accitems .btn:hover{background:var(--surface-2)}
@media (max-width:640px){.accmenu .accitems{right:auto;left:0}}

/* 2.18 pasar lista: los botones de sesión no se salen de su columna */
#listaGrid>*{min-width:0}
.sess{width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere}.sess>span{min-width:0}
@media (max-width:860px){#listaGrid{grid-template-columns:minmax(0,1fr)!important}#listaDet{scroll-margin-top:12px}}
/* 2.18 cuadros con fondo claro: letra oscura siempre (también con el móvil en modo oscuro) */
.doccarp{background:#fff;color:#111418}.doccarp em{opacity:.75}
.arIdxBox,.ffc,.note.warn,.insc-vista,label.check.pruebas,.rrow.debe,table.ctmov tr.int td,.arprop tr.difiere td,.preview,.insc-opt .lleno{color:#111418}
.arIdxBox{background:#fff}
.note.warn a,.insc-vista a{color:#0B4A8F}
#listaGrid>.grid{grid-template-columns:minmax(0,1fr)}#listaGrid>.grid>.btn{white-space:normal;text-align:left;height:auto;min-width:0;flex-wrap:wrap}
@media (max-width:640px){.rrow{flex-wrap:wrap;gap:8px 10px;padding:10px 8px}.rrow .who{flex:1 1 calc(100% - 60px)}.rrow .tri{margin-left:auto}.rrow .tri button{width:48px;height:42px}}

/* 2.20 cronómetro de fichaje */
.crono{position:fixed;right:16px;bottom:16px;z-index:70;border:0;border-radius:999px;background:#15803D;color:#fff;padding:8px 14px;font:inherit;font-size:14px;box-shadow:0 8px 24px rgba(0,0,0,.25);cursor:pointer;display:flex;gap:8px;align-items:center;max-width:calc(100vw - 32px)}
.crono b{font-variant-numeric:tabular-nums;font-size:16px}.crono span{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;opacity:.9}
@media (max-width:860px){.crono{bottom:84px;right:12px}}

/* 2.20 voluntariado */
.reto{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.reto.hecho{border-color:#16A34A;background:color-mix(in srgb,#16A34A 8%,var(--surface))}
.rck{flex:none;width:26px;height:26px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;font-weight:800;color:#fff}.reto.hecho .rck{background:#16A34A;border-color:#16A34A}
.acuerdo{white-space:pre-wrap;font-size:13.5px;line-height:1.5;max-height:45vh;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--surface)}
.volchecks{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:4px 12px;max-height:220px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:8px}
.volcard .bar i.good{background:#16A34A}

/* 2.20 exámenes */
.exitem{cursor:pointer;align-items:center}.exitem input{width:22px;height:22px;flex:none}
.exfam{border-top:1px solid var(--line);padding:8px 0}.exfam summary{cursor:pointer}

/* 2.21 premios de exámenes: el premio sale de un huevo */
.premiopv{width:84px;height:84px;border:1px dashed var(--line);border-radius:12px;display:grid;place-items:center;overflow:hidden;background:repeating-conic-gradient(#eee 0 25%,#fff 0 50%) 50%/16px 16px}.premiopv img{max-width:100%;max-height:100%}
.premio-ov{position:fixed;inset:0;z-index:20000;background:radial-gradient(circle at 50% 40%,rgba(30,41,59,.82),rgba(2,6,23,.94));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;overflow:hidden;animation:pOvIn .3s ease-out}
.premio-stage{position:relative;width:min(70vw,300px);height:min(84vw,360px)}
.env{position:absolute;left:12%;width:76%;bottom:0;filter:drop-shadow(0 10px 18px rgba(0,0,0,.35))}.env>svg{width:100%;height:100%;display:block}
.env-top{clip-path:polygon(0 0,100% 0,100% 55%,88% 49%,76% 57%,64% 48%,52% 58%,40% 48%,28% 57%,16% 49%,0 55%);transform-origin:50% 80%;animation:pTiembla .9s ease-in-out 0s 1,pTiembla .9s ease-in-out .95s 1,pTapa 1s cubic-bezier(.3,.7,.4,1) 1.9s forwards}
.env-bot{clip-path:polygon(0 55%,16% 49%,28% 57%,40% 48%,52% 58%,64% 48%,76% 57%,88% 49%,100% 55%,100% 100%,0 100%);transform-origin:50% 90%;animation:pTiembla .9s ease-in-out 0s 1,pTiembla .9s ease-in-out .95s 1,pBase .8s ease-in 3.4s forwards}
.premio-img{position:absolute;left:50%;bottom:18%;width:70%;height:auto;max-height:78%;object-fit:contain;transform:translate(-50%,40%) scale(.3);opacity:0;animation:pSale 1.1s cubic-bezier(.2,1.6,.4,1) 2.05s forwards,pFlota 2.6s ease-in-out 3.3s infinite}
.premio-glow{position:absolute;left:50%;top:45%;width:120%;aspect-ratio:1;transform:translate(-50%,-50%) scale(0);background:radial-gradient(circle,rgba(250,204,21,.55),rgba(250,204,21,0) 65%);border-radius:50%;animation:pGlow 1s ease-out 2s forwards}
.premio-txt{display:flex;flex-direction:column;align-items:center;gap:6px;color:#fff;text-align:center;opacity:0;animation:pTxt .6s ease-out 2.8s forwards;padding:0 16px}.premio-txt b{font-size:26px}.premio-txt span{font-size:17px;opacity:.9}.premio-txt .btn{margin-top:8px}
.premio-conf i{position:absolute;top:-20px;width:9px;height:14px;border-radius:2px;opacity:0;animation-name:pConf;animation-timing-function:linear;animation-fill-mode:forwards}
@keyframes pOvIn{from{opacity:0}}
@keyframes pTiembla{0%,100%{transform:rotate(0)}15%{transform:rotate(-7deg)}30%{transform:rotate(6deg)}45%{transform:rotate(-5deg)}60%{transform:rotate(4deg)}75%{transform:rotate(-2deg)}}
@keyframes pTapa{0%{transform:translate(0,0) rotate(0)}100%{transform:translate(-55%,-120%) rotate(-55deg);opacity:0}}
@keyframes pBase{to{transform:translateY(40%);opacity:0}}
@keyframes pSale{0%{transform:translate(-50%,40%) scale(.3);opacity:0}40%{opacity:1}100%{transform:translate(-50%,-6%) scale(1);opacity:1}}
@keyframes pFlota{0%,100%{transform:translate(-50%,-6%) scale(1)}50%{transform:translate(-50%,-11%) scale(1.03)}}
@keyframes pGlow{to{transform:translate(-50%,-50%) scale(1)}}
@keyframes pTxt{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes pConf{0%{opacity:1;transform:translateY(0) rotate(0)}100%{opacity:1;transform:translateY(110vh) rotate(720deg)}}
@media (prefers-reduced-motion:reduce){.env{display:none}.premio-img{animation:none;opacity:1;transform:translate(-50%,-6%)}.premio-txt{animation:none;opacity:1}.premio-conf{display:none}}
.premios .premiosfila{display:flex;gap:10px;overflow-x:auto;padding:6px 2px}
.premio{all:unset;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px;width:78px;flex:none;text-align:center;font-size:11px;line-height:1.2}
.premio img{width:64px;height:64px;object-fit:contain;border-radius:14px;background:var(--surface-2);padding:4px}.premio.actual img{outline:3px solid #FACC15}
.premiomini{all:unset;cursor:pointer;margin-left:auto;flex:none}.premiomini img{width:56px;height:56px;object-fit:contain;animation:pFlotaMini 2.6s ease-in-out infinite}
@keyframes pFlotaMini{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.premio-stage.solo .premio-img{animation:pSale 1.1s cubic-bezier(.2,1.6,.4,1) .2s forwards,pFlota 2.6s ease-in-out 1.4s infinite}.premio-stage.solo .premio-glow{animation-delay:.15s}
.premio-stage .env-top{z-index:3}.premio-stage .env-bot{z-index:2}.premio-stage .premio-img{z-index:1}
.premio-stage.solo+.premio-txt{animation-delay:1s}

/* 2.22 vistas de la documentación */
.docvistas{margin:8px 0}
.docmiga{gap:4px;margin-bottom:10px;flex-wrap:wrap}
.dtiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:10px}
.dtile{all:unset;box-sizing:border-box;position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;padding:10px 8px;border:1px solid transparent;border-radius:12px;cursor:pointer}
.dtile:hover,.dtile:focus-within{background:var(--surface-2);border-color:var(--line)}
.dtimg{width:96px;height:80px;display:grid;place-items:center;border-radius:10px;overflow:hidden;text-decoration:none;position:relative}
.dtimg img{width:100%;height:100%;object-fit:cover}.dtimg span{font-size:52px;line-height:1}.dfolder .dtimg span{font-size:64px}
.dtimg em{position:absolute;bottom:4px;right:6px;font-style:normal;font-size:10px;font-weight:800;color:var(--ink-2)}
.dtname{font-size:13px;font-weight:600;line-height:1.25;margin-top:6px;word-break:break-word;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.dtmeta{font-size:11px;color:var(--ink-3);margin-top:2px}
.dtinfo{all:unset;position:absolute;top:4px;right:6px;cursor:pointer;opacity:.55;font-size:15px}.dtinfo:hover{opacity:1}
@media (max-width:640px){.dtiles{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.dtimg{width:76px;height:64px}.dtimg span{font-size:42px}}
/* 2.23: menú lateral con scroll en pantallas bajas */
@media (min-width:861px){.rail{overflow:hidden}.rail .nav{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent;margin-right:-6px;padding-right:6px}.rail .nav::-webkit-scrollbar{width:6px}.rail .nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25);border-radius:3px}.rail .brand,.rail .foot{flex:none}}
/* 2.23.2: periodos con fechas (lista y calendario) */
.pered table{width:100%}.pered td{padding:3px 4px;vertical-align:middle}.pered input[type=date]{min-width:130px}
.perlist{display:grid;gap:6px}.perop{align-items:flex-start;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card,#fff)}
.perop span{display:flex;flex-direction:column}.perop small{color:var(--ink-3);font-weight:500}.perop .perwarn{color:var(--bad,#DC2626);font-weight:700}
.perop.lleno,.perop.pasado{opacity:.55}.perop:has(input:checked){border-color:var(--pc);box-shadow:0 0 0 2px color-mix(in srgb,var(--pc) 30%,transparent)}
.perdot{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--pc);flex:none;margin-top:5px}
.percal{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.pcm b{display:block;margin-bottom:6px}.pcg{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;text-align:center}
.pcg i{font-style:normal;font-size:11px;color:var(--ink-3);font-weight:700}.pcg span,.pcd{font-size:12.5px;padding:5px 0;border-radius:6px;color:var(--ink-3)}
.pcd.per{all:unset;cursor:pointer;font-size:12.5px;padding:5px 0;border-radius:6px;text-align:center;background:color-mix(in srgb,var(--pc) 16%,transparent);color:var(--ink);font-weight:600}
.pcd.per.on{background:var(--pc);color:#fff}.pcd.per.sin{background-image:repeating-linear-gradient(45deg,transparent 0 4px,rgba(0,0,0,.18) 4px 5px);opacity:.7}
.pcd.per:disabled{cursor:not-allowed;opacity:.35}.pcd.per:focus-visible{outline:2px solid var(--pc)}
.perley{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.perley .chip{display:inline-flex;align-items:center;gap:6px}.perley .chip[aria-pressed=true]{background:var(--pc);color:#fff;border-color:var(--pc)}.perley .chip[aria-pressed=true] .perdot{background:#fff}
.peredw{overflow-x:auto;max-width:100%}.pered input{padding:6px 8px;font-size:13px}.pered input[type=date]{min-width:0;width:132px}
label.perop,.filters label.perop{display:flex!important;flex-direction:row;align-items:flex-start;gap:8px;text-transform:none;letter-spacing:0;font-size:14px;color:var(--ink);font-weight:500}
.perop b{font-size:14px;color:var(--ink)}.perop small{font-size:12.5px}.perop input{margin-top:3px}
/* 2.23.3: ningún botón queda como texto suelto; los secundarios llevan su recuadro redondeado */
.btn.ghost{border-color:var(--line);background:var(--surface)}
.btn.ghost:hover{border-color:var(--ink-3);background:var(--surface-2)}
.btn.ghost.danger,.btn.danger{border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}
.btn.ghost.danger:hover,.btn.danger:hover{border-color:var(--bad);background:color-mix(in srgb,var(--bad) 8%,var(--surface))}
.accmenu .accitems .btn,.accmenu .accitems .btn:hover{border:0}
/* 2.24: panel personalizable */
.pgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.pgrid>*{margin:0!important;min-width:0}.pgrid>.pfull{grid-column:1/-1}
@media (max-width:860px){.pgrid{grid-template-columns:minmax(0,1fr)}}
/* 2.25: diplomas */
.dipwrap{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,1fr);gap:16px;align-items:start}
@media (max-width:1100px){.dipwrap{grid-template-columns:minmax(0,1fr)}}
.dipprev{position:relative;overflow:hidden;border-radius:6px;box-shadow:0 2px 12px rgba(0,0,0,.15);background:#fff;touch-action:none}
#dipPrev .dipel{cursor:move;outline:1px dashed transparent}#dipPrev .dipel:hover{outline-color:rgba(0,145,254,.5)}#dipPrev .dipel.sel{outline:2px dashed #0091FE}
.dipprops .chips .chip{font-size:12px;padding:3px 8px}
/* 2.25.1: apariencia */
.temaop{all:unset;box-sizing:border-box;cursor:pointer;display:flex;gap:12px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.temaop.on{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 30%,transparent)}.temaop span:last-child{display:flex;flex-direction:column}.temaop small{color:var(--ink-3)}
.temaprev{position:relative;flex:none;width:86px;height:56px;border-radius:8px;border:1px solid var(--line);overflow:hidden}.temaprev i{position:absolute;left:0;top:0;bottom:0;width:20px}
.temaprev b{position:absolute;left:28px;top:8px;width:30px;height:8px;border-radius:3px}.temaprev em{position:absolute;left:28px;height:6px;border-radius:3px;width:48px}.temaprev em:nth-of-type(1){top:24px}.temaprev em:nth-of-type(2){top:36px}
/* 2.25.1: Configuración en fichas */
.cfgcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:12px 0}
.cfgcard{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow)}
.cfgcard:hover{border-color:var(--brand)}.cfgcard b{font-size:16px}.cfgcard small{color:var(--ink-3);line-height:1.35}.cfgcard .cfgico{font-size:26px}
.cfgsec .cfgico{margin-right:8px}.cfgsec summary .cfgdesc{flex-basis:100%;margin:2px 0 0;font-weight:400}.cfgsec summary{flex-wrap:wrap}
.cfgall{align-items:center}
/* 2.26: sesiones */
.seswrap{display:grid;grid-template-columns:240px minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:860px){.seswrap{grid-template-columns:minmax(0,1fr)}.sesnav{display:flex;overflow-x:auto;gap:6px}.sesnav .sestree{white-space:nowrap;padding-left:10px!important}}
.sesnav{padding:8px;margin:0}.sestree{all:unset;box-sizing:border-box;cursor:pointer;display:flex;gap:6px;align-items:center;width:100%;padding:8px 10px;border-radius:8px;font-weight:600;font-size:14px}
.sestree em{margin-left:auto;font-style:normal;font-size:12px;color:var(--ink-3)}.sestree:hover{background:var(--surface-2)}.sestree.on{background:var(--brand);color:var(--on-brand)}.sestree.on em{color:inherit}
.sescards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.sescard{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:var(--shadow)}
.sescard:hover{border-color:var(--brand)}.sescard b{font-size:15px}.sescard small{font-size:12.5px;color:var(--ink-2,var(--ink))}.sesico{font-size:24px}
.sesview{position:fixed;inset:0;z-index:300;background:var(--bg,#f4f6f8);display:flex;flex-direction:column;-webkit-user-select:none;user-select:none}
.sesbar{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--surface)}
.sesbody{flex:1;overflow:auto;padding:16px;position:relative}.sesbody::after{content:"";position:fixed;inset:60px 0 0 0;background-image:var(--marca);pointer-events:none;z-index:2}
.sesdesc{max-width:1100px;margin:0 auto 14px;white-space:normal}.sespage{max-width:1100px;margin:0 auto 14px;text-align:center}.sescanvas{background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.15)}
.sesvid{display:block;max-width:100%;max-height:78vh;margin:0 auto;background:#000}
body.sesabierta{overflow:hidden}@media print{.sesview,body.sesabierta #app{display:none!important}}
/* 2.26.1: redes sociales */
.redes{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.redbtn{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.08);color:#DDE3EA!important;border:1px solid rgba(255,255,255,.14);text-decoration:none;transition:background .15s,color .15s}
.redbtn:hover{background:var(--brand);color:var(--on-brand)!important;border-color:var(--brand)}
.redes-cli .redbtn{width:42px;height:42px;background:var(--surface-2);color:var(--ink)!important;border-color:var(--line)}
.redes-cli .redbtn svg{width:22px;height:22px}
/* 2.26.2 */
.dtile .dtdet{margin-top:6px;align-self:center}
.kpiclic{cursor:pointer;transition:border-color .15s,transform .15s}.kpiclic:hover{border-color:var(--brand);transform:translateY(-1px)}
.bell>.btn,.temabtn{min-width:38px;min-height:38px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center}
@media(max-width:860px){.temabtn{font-size:22px}.bell>.btn svg{width:22px;height:22px}}
.pushbanner{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(76px + env(safe-area-inset-bottom,0px));z-index:80;width:min(520px,calc(100% - 24px));background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:12px 14px;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
@media(min-width:861px){.pushbanner{bottom:20px}}
#userBox .bell>.btn,#userBox .temabtn{width:40px;height:38px;min-width:40px;padding:0;font-size:19px}
@media(max-width:860px){#userBox .temabtn{font-size:21px}}
[data-drag]{cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.ddghost{position:fixed;z-index:400;pointer-events:none;background:var(--brand,#2563eb);color:#fff;padding:6px 10px;border-radius:10px;font-weight:700;font-size:13px;box-shadow:var(--shadow);max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.docdrag,body.docdrag *{cursor:grabbing!important}
[data-drag].dragging{opacity:.45}
body.docdrag [data-dropcat]{outline:2px dashed color-mix(in srgb,var(--brand,#2563eb) 35%,transparent);outline-offset:2px}
[data-dropcat].dropok{outline:2px solid var(--brand,#2563eb)!important;background:color-mix(in srgb,var(--brand,#2563eb) 10%,var(--surface,#fff))!important}
.g2row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:6px 0;border-bottom:1px dashed var(--line)}
.g2row input[type=date]{width:auto}
.pvcard{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:8px 0}

/* 2.28: modo oscuro (textos y fondos que estaban fijos en claro) */
:root[data-theme=dark] .rrow.debe{background:color-mix(in srgb,var(--bad) 16%,var(--surface))!important;color:var(--ink)!important}
:root[data-theme=dark] .note.warn,:root[data-theme=dark] .insc-vista,:root[data-theme=dark] label.check.pruebas{background:var(--warn-bg)!important;border-color:#6B5418!important;color:var(--ink)!important}
:root[data-theme=dark] .note.warn a,:root[data-theme=dark] .insc-vista a{color:var(--brand-ink)!important}
:root[data-theme=dark] .doccarp{background:var(--surface)!important;color:var(--ink)!important}
:root[data-theme=dark] input.ro{background:var(--surface-2)!important;color:var(--ink-2)!important}
:root[data-theme=dark] .arIdxBox,:root[data-theme=dark] .ffc{background:var(--surface)!important;color:var(--ink)!important}
:root[data-theme=dark] table.ctmov tr.int td,:root[data-theme=dark] .arprop tr.difiere td{background:color-mix(in srgb,var(--warn) 12%,var(--surface))!important;color:var(--ink)!important}
:root[data-theme=dark] .preview{background:var(--warn-bg)!important;color:#F3D58A!important;border-color:#6B5418!important}
:root[data-theme=dark] .insc-opt .lleno{color:var(--ink)!important}
:root[data-theme=dark] .btn.call{background:#2B7209!important;border-color:#2B7209!important;color:#fff!important}
:root[data-theme=dark] .main img:not(.nobg),:root[data-theme=dark] .drawer img:not(.nobg){background-color:#fff}
:root[data-theme=dark] .av img,:root[data-theme=dark] .avatar img,:root[data-theme=dark] .foto img,:root[data-theme=dark] img.foto,:root[data-theme=dark] .dtimg img{background-color:transparent}
@media (prefers-color-scheme:dark){
:root:not([data-theme=light]) .rrow.debe{background:color-mix(in srgb,var(--bad) 16%,var(--surface))!important;color:var(--ink)!important}
:root:not([data-theme=light]) .note.warn,:root:not([data-theme=light]) .insc-vista,:root:not([data-theme=light]) label.check.pruebas{background:var(--warn-bg)!important;border-color:#6B5418!important;color:var(--ink)!important}
:root:not([data-theme=light]) .note.warn a,:root:not([data-theme=light]) .insc-vista a{color:var(--brand-ink)!important}
:root:not([data-theme=light]) .doccarp{background:var(--surface)!important;color:var(--ink)!important}
:root:not([data-theme=light]) input.ro{background:var(--surface-2)!important;color:var(--ink-2)!important}
:root:not([data-theme=light]) .arIdxBox,:root:not([data-theme=light]) .ffc{background:var(--surface)!important;color:var(--ink)!important}
:root:not([data-theme=light]) table.ctmov tr.int td,:root:not([data-theme=light]) .arprop tr.difiere td{background:color-mix(in srgb,var(--warn) 12%,var(--surface))!important;color:var(--ink)!important}
:root:not([data-theme=light]) .preview{background:var(--warn-bg)!important;color:#F3D58A!important;border-color:#6B5418!important}
:root:not([data-theme=light]) .insc-opt .lleno{color:var(--ink)!important}
:root:not([data-theme=light]) .btn.call{background:#2B7209!important;border-color:#2B7209!important;color:#fff!important}
:root:not([data-theme=light]) .main img:not(.nobg),:root:not([data-theme=light]) .drawer img:not(.nobg){background-color:#fff}
:root:not([data-theme=light]) .av img,:root:not([data-theme=light]) .avatar img,:root:not([data-theme=light]) .foto img,:root:not([data-theme=light]) img.foto,:root:not([data-theme=light]) .dtimg img{background-color:transparent}
}
/* 2.28: facturas */
.facl{display:grid;grid-template-columns:minmax(0,1fr) 70px 90px 72px 92px 34px;gap:6px;align-items:start;margin:4px 0}
.facl textarea{min-height:38px;resize:vertical}.facl b{padding-top:9px;text-align:right}
.facl-h{margin-top:0}.facl-h span:nth-child(n+2){text-align:right}
@media(max-width:640px){.facl{grid-template-columns:1fr 1fr 1fr 34px}.facl textarea{grid-column:1/-1}.facl b{grid-column:1/3;text-align:left;padding-top:0}.facl-h{display:none}}
.factot{margin:12px 0 0 auto;max-width:320px;border-top:1px solid var(--line);padding-top:8px}.factot div{display:flex;justify-content:space-between;gap:12px;padding:2px 0}.factot .big{font-size:18px;font-weight:800;border-top:2px solid var(--ink);margin-top:4px;padding-top:6px}
.facprevw{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}
.facmodal{position:fixed;inset:0;z-index:300;background:rgba(10,14,20,.6);display:flex;align-items:flex-start;justify-content:center;padding:24px 12px;overflow:auto}
.facmodal-in{background:var(--surface);border-radius:14px;padding:12px;width:min(820px,100%)}
.facpage{width:794px;min-height:1123px;box-sizing:border-box;padding:56px 60px 90px;background:#fff;color:#1d2430;font:13.5px/1.5 Barlow,system-ui,sans-serif;position:relative;overflow:hidden}
.facpage .fachead{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}
.facpage .faclogo img{max-height:92px;max-width:240px;object-fit:contain;background:transparent!important}.facpage .faclogo b{font:800 24px Montserrat,sans-serif;color:var(--fc)}
.facpage .factit{text-align:right}.facpage .facword{font:800 34px/1 Montserrat,sans-serif;letter-spacing:.14em;color:var(--fc)}
.facpage .facnum{margin-top:8px;font-size:15px}.facpage .facnum b{font:700 18px Montserrat,sans-serif}.facpage .facfecha{color:#5b6573}
.facpage .facband{height:6px;border-radius:6px;margin:22px 0 26px;background:linear-gradient(90deg,var(--fc),var(--fc2))}
.facpage .facparts{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:28px}
.facpage .facparts>div{background:#f5f7fa;border-radius:12px;padding:14px 16px}.facpage .facparts b{font-size:15px}
.facpage .faclab{font:700 10.5px Montserrat,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--fc);margin-bottom:4px}
.facpage .factab{width:100%;border-collapse:collapse}
.facpage .factab th{background:var(--fc);color:#fff;font:700 11px Montserrat,sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:10px 12px;text-align:left}
.facpage .factab th:first-child{border-radius:8px 0 0 8px}.facpage .factab th:last-child{border-radius:0 8px 8px 0}
.facpage .factab td{padding:11px 12px;border-bottom:1px solid #e7ebf0;vertical-align:top}.facpage .factab tr:nth-child(even) td{background:#fafbfd}
.facpage .r{text-align:right;white-space:nowrap}
.facpage .facfoot{display:grid;grid-template-columns:1fr 290px;gap:28px;margin-top:24px;align-items:start}
.facpage .factots>div{display:flex;justify-content:space-between;padding:6px 4px;border-bottom:1px solid #e7ebf0}
.facpage .factots .factotal{border:0;margin-top:8px;background:var(--fc);color:#fff;border-radius:10px;padding:12px 14px;font:800 18px Montserrat,sans-serif}
.facpage .faciban{font:600 14px "IBM Plex Mono",monospace;letter-spacing:.03em}
.facpage .facley{margin-top:26px;font-size:12px;color:#5b6573;font-style:italic}
.facpage .facpie{position:absolute;left:60px;right:60px;bottom:34px;border-top:1px solid #e7ebf0;padding-top:10px;font-size:11px;color:#7a8492;text-align:center}
.facpage .facanul{position:absolute;top:42%;left:-10%;right:-10%;text-align:center;transform:rotate(-24deg);font:900 130px Montserrat,sans-serif;color:rgba(198,40,40,.14);pointer-events:none}
.facpage .factab th.r{text-align:right}
.invfoto{display:flex;align-items:center;gap:12px;margin:0 0 12px}.invfoto img{width:96px;height:96px;object-fit:cover;border-radius:12px;border:1px solid var(--line)}.invfoto-vacia{width:96px;height:96px;border-radius:12px;border:1px dashed var(--line);display:grid;place-items:center;font-size:30px;opacity:.6}
.prel{display:grid;grid-template-columns:28px repeat(4,minmax(0,1fr)) 34px;gap:6px 8px;align-items:end;padding:10px 0;border-bottom:1px dashed var(--line)}
.prel-t{font-size:18px;grid-row:1;align-self:center}.prel-m{grid-column:2/7;grid-row:1;display:flex;gap:6px;flex-wrap:wrap}.prel-m select{flex:0 1 220px}.prel-m input{flex:1 1 200px}.prel>label:first-of-type{grid-column:2}.prel>button{grid-column:6}.prel label{display:flex;flex-direction:column;gap:2px}.prel input.manual{border-color:var(--warn);background:var(--warn-bg);color:var(--ink)}
@media(max-width:560px){.prel{grid-template-columns:28px 1fr 1fr 34px}.prel-m{grid-column:2/5}.prel>label:first-of-type{grid-column:2}.prel>button{grid-column:4}.prel>span:empty{display:none}}
.actquick{gap:8px;flex-wrap:wrap;margin:0 0 12px}
.ilrow{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:10px;width:100%;padding:9px 6px;border-bottom:1px solid var(--line);cursor:pointer;border-radius:8px}
.ilrow:hover{background:var(--surface-2)}.ilrow[disabled]{opacity:.55;cursor:default}
.ilav{width:36px;height:36px;border-radius:10px;background:var(--surface-2);display:grid;place-items:center;font-weight:800;font-size:13px;flex:none}
.ilmain{flex:1;min-width:0;display:flex;flex-direction:column}.ilmain b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 2.31: vista previa de la pantalla de carga */
@keyframes vsmoneda{to{transform:rotateY(360deg)}}@keyframes vsrueda{to{transform:rotate(360deg)}}@keyframes vslatido{0%,100%{transform:scale(1)}50%{transform:scale(1.09)}}@keyframes vsrebote{0%,100%{transform:translateY(0)}50%{transform:translateY(-18px)}}@keyframes vsaparece{0%,100%{opacity:.25;transform:scale(.96)}50%{opacity:1;transform:scale(1)}}
@keyframes vspprog{0%{width:8%}90%,100%{width:92%}}
:root{--vsbg:#fff}:root[data-theme=dark]{--vsbg:#0B0E12}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--vsbg:#0B0E12}}
.vsprev{width:190px;height:240px;border-radius:18px;border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;perspective:600px;overflow:hidden}
.vsprev b{font:800 18px Montserrat,sans-serif}.vsptxt{font:600 11px system-ui;color:#8a94a3;margin-top:-6px;text-align:center;padding:0 8px}
.vspbar{width:70%;height:4px;border-radius:9px;background:rgba(127,127,127,.18);overflow:hidden}.vspbar i{display:block;height:100%;border-radius:9px;animation:vspprog 2.4s ease-out infinite}
.vsprev.full{position:fixed;inset:0;width:auto;height:auto;border:0;border-radius:0;gap:28px;z-index:9998}.vsprev.full b{font-size:28px}.vsprev.full .vsptxt{font-size:14px}.vsprev.full .vspbar{width:min(60vw,260px);height:6px}
.vsfull{position:fixed;inset:0;z-index:9998}
/* 2.32.3: sin el mini scroll vertical en las pestañas */
.tabs{overflow-y:hidden;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.sesnav,.premios .premiosfila{overflow-y:hidden}
.instov{position:fixed;inset:0;z-index:250;background:rgba(10,14,20,.55);display:flex;align-items:flex-end;justify-content:center;padding:16px}
.instcard{background:var(--surface);color:var(--ink);border-radius:20px;padding:22px 20px 18px;width:min(440px,100%);text-align:center;box-shadow:var(--shadow);margin-bottom:env(safe-area-inset-bottom,0px)}
.instcard img{width:72px;height:72px;object-fit:contain;border-radius:16px;background:#fff;padding:6px;margin:0 auto 8px;display:block}
.instcard h2{margin:0 0 6px;font-size:20px}.instcard p{margin:0 0 14px;color:var(--ink-2)}
.insthelp{text-align:left;background:var(--surface-2);border-radius:12px;padding:10px 14px;margin:0 0 14px;font-size:14px}.insthelp ol{margin:6px 0;padding-left:20px}
/* torneos 2.33 */
.tmatches{display:grid;gap:6px;margin-bottom:6px}
.tmatch{all:unset;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:74px 1fr auto 1fr;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:13.5px}
.tmatch:hover{border-color:var(--ink-3)}.tmatch:focus-visible{outline:2px solid var(--brand)}
.tmatch .tmh{font-family:var(--mono);font-size:12.5px;line-height:1.2}.tmatch .tmh small{display:block;color:var(--ink-3);font-family:inherit}
.tmatch .tmb{text-align:right}.tmatch .win{font-weight:700}
.tmatch .tmr{font-family:var(--mono);font-size:12px;color:var(--ink-2);text-align:center;min-width:28px}
.tjh{margin:12px 0 6px;font-size:14px}
.ttab tr.pasa td{background:var(--good-bg)}
.match .mh{font-size:11.5px;color:var(--ink-3);padding:4px 10px 0;font-family:var(--mono)}
.note.warn{background:var(--warn-bg,#fff4e0);border-color:var(--warn,#e0a030)}
@media (max-width:560px){.tmatch{grid-template-columns:1fr auto 1fr;}.tmatch .tmh{grid-column:1/-1;display:flex;gap:8px}.tmatch .tmh small{display:inline}}
.ttab{font-size:13.5px}.ttab th,.ttab td{padding:6px 8px}
@media (max-width:560px){.ttab th,.ttab td{padding:5px 4px;font-size:12.5px}}
.doctabla tr.sel td{background:var(--brand-bg,rgba(40,120,255,.08))}.doctabla tr[data-drag]{cursor:grab}
.toast .btn{background:#fff;color:#111;border-color:#fff}
/* 2.33.5: en el móvil el desplegable de la campana se salía por la izquierda; se recoloca al abrir (bellAjustar) */
@media (max-width:760px){.bell-menu .ph{flex-wrap:wrap;gap:6px}.bell-menu .ph .btn{white-space:nowrap;width:auto!important;height:auto!important;min-width:0!important;padding:5px 10px!important;font-size:13px!important;line-height:1.2}}
/* 2.33.8 jornada por monitor */
.jored{display:grid;gap:8px}
.jorrow{display:grid;grid-template-columns:minmax(120px,1fr) auto;gap:6px 12px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.jorrow .jordias{display:flex;gap:4px;flex-wrap:wrap}.jorrow .jordias .chip{min-width:30px;justify-content:center;cursor:pointer;padding:3px 7px}
.jorrow .jorh{grid-column:1/-1;display:flex;gap:10px;flex-wrap:wrap}.jorrow .jorh label{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--ink-2)}
.jorrow .jorh input{width:auto;min-width:0;max-width:120px}.jorrow .jorh input[type=number]{max-width:80px}
@media (max-width:560px){.jorrow{grid-template-columns:1fr}}
.jorrow .jordias .chip{background:var(--surface);color:var(--ink-3);border:1px solid var(--line)}
.jorrow .jordias .chip.on{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:700}
/* 2.33.10 buscador de configuración */
.cfgall .cfgq{flex:1 1 280px;min-width:200px;max-width:520px}
.cfgsnip{display:block;margin-top:6px;color:var(--ink-2)!important;line-height:1.35}
.cfgflash{animation:cfgFlash 2s ease-out}
@keyframes cfgFlash{0%,40%{background:color-mix(in srgb,var(--brand) 22%,transparent);box-shadow:0 0 0 4px color-mix(in srgb,var(--brand) 22%,transparent);border-radius:6px}100%{background:transparent;box-shadow:none}}
.jorwarn ul{max-height:150px;overflow:auto}
/* 2.33.14 factura original importada */
.facorig iframe{width:100%;height:min(72vh,900px);border:1px solid var(--line);border-radius:10px;background:#fff}
.linkbtn{color:var(--brand);text-decoration:underline;cursor:pointer}
/* 2.34.2 adjuntar del gestor */
.adjbtn{margin-left:6px}
.adjcard{max-width:640px;width:calc(100vw - 32px);max-height:86vh;display:flex;flex-direction:column}
.adjlist{overflow:auto;max-height:52vh;border:1px solid var(--line);border-radius:10px}
.adjit{display:flex;gap:10px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--line);cursor:pointer}
.adjit:hover{background:var(--surface-2)}.adjit .adjico{font-size:20px}.adjit .adjtx{display:flex;flex-direction:column;min-width:0}.adjit .adjtx b{overflow-wrap:anywhere}
.adjov{z-index:1200}
.adjov{align-items:center}
.adjcard{text-align:left}.adjcard .adjtx{align-items:flex-start;text-align:left}
/* 2.34.5: al pulsar fuera, la ventana lateral no se cierra: hace un pequeño gesto para indicar que hay que usar Guardar o ✕ */
.drawer.avisar{animation:drAvisar .35s ease}
@keyframes drAvisar{0%,100%{transform:translateX(0)}30%{transform:translateX(-8px)}60%{transform:translateX(5px)}}
/* 2.34.6: la ventana lateral ocupa toda la pantalla (en ordenador, tableta y móvil); el contenido se centra y aprovecha el ancho */
.scrim{justify-content:stretch}
.drawer{width:100%!important;max-width:100%!important;height:100%;box-shadow:none}
.drawer .dh{padding:calc(14px + env(safe-area-inset-top,0px)) max(20px,calc((100% - 1240px)/2)) 14px}
.drawer .db{width:100%;max-width:1240px;margin:0 auto;box-sizing:border-box;padding:20px 20px 40px;flex:1 0 auto}
.drawer .df{padding-left:max(20px,calc((100% - 1240px)/2));padding-right:max(20px,calc((100% - 1240px)/2))}
@media (min-width:900px){.drawer .fg{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}}
@media (prefers-reduced-motion:no-preference){.drawer{animation:drFull .16s ease-out}@keyframes drFull{from{opacity:.4;transform:translateY(12px)}}}
/* 2.34.6: nombres de archivo largos no ensanchan la pantalla en el móvil */
li,.inscrito,.docalert{overflow-wrap:anywhere}
.tabbar button{min-width:0}
html,body{overflow-x:clip}
@media (min-width:600px) and (max-width:899px){.drawer .fg{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* 2.34.7 cabecera de la ventana a pantalla completa */
.drawer .dh{justify-content:flex-start;gap:14px}
.drawer .dhbrand{display:flex;align-items:center;gap:8px;flex:0 0 auto;padding-right:14px;border-right:1px solid var(--line)}
.drawer .dhbrand img{width:34px;height:34px;object-fit:contain;border-radius:8px}
.drawer .dhbrand .dhnom{font-weight:800;font-size:14px;white-space:nowrap}.drawer .dhtile{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;background:#fff;border:1px solid var(--line)}.drawer .dhtile svg{width:24px;height:20px}
.drawer .dhtit{flex:1;min-width:0}
.drawer .dhmiga{font-size:12px;color:var(--ink-3);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drawer .dhtit h2{margin:0;overflow:hidden;text-overflow:ellipsis}
.drawer .dh>[data-act=close]{margin-left:auto}
@media (max-width:600px){.drawer .dhbrand .dhnom{display:none}.drawer .dhbrand{padding-right:10px}.drawer .dhbrand img{width:28px;height:28px}}
/* 2.34.9 firmas en su sitio */
.fsgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:16px;align-items:start}
@media (max-width:900px){.fsgrid{grid-template-columns:1fr}}
.fspads .fspadw{margin-bottom:10px}
.fsprevw{min-width:0}#fsPrev{max-width:100%;max-height:72vh;overflow:auto}
.fsstage{position:relative;max-width:100%;box-shadow:0 1px 6px rgba(0,0,0,.15);background:#fff}.fsstage canvas{display:block;width:100%;height:100%}
.fsbox{position:absolute;border:2px dashed #2563eb;background:rgba(37,99,235,.12);color:#1e3a8a;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;text-align:center;border-radius:4px;cursor:move;touch-action:none;user-select:none}
/* 2.34.10: cabecera de avisos y documento señalado al venir de un aviso */
.bell-menu .ph{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.bell-menu .ph .btn{font-size:12.5px;padding:4px 8px;min-height:0;width:auto;height:auto;white-space:normal;text-align:right}
.bell-item .ir{margin-left:auto;align-self:center;color:var(--muted,#64748b);font-size:16px}
.inscrito.flash{animation:fsflash 2.4s ease 2;border-radius:10px}
@keyframes fsflash{0%,100%{background:transparent}30%{background:color-mix(in srgb,var(--brand,#0091FE) 22%,transparent)}}
.fsbox.fsmar{border-style:dotted;background:rgba(37,99,235,.08);font-size:10px;cursor:default}

/* 2.34.14 editor de fotos y DNI */
.imged{margin-top:8px}.iestage{position:relative;margin:0 auto;max-width:100%;touch-action:none;background:#111;border-radius:8px;overflow:hidden}
.iestage canvas{position:absolute;left:0;top:0;display:block;max-width:100%}.ieover{touch-action:none;cursor:crosshair}
.ietools{margin-top:8px;gap:6px;flex-wrap:wrap}.ietools input[type=range]{width:120px;vertical-align:middle}
.dnicara{margin:10px 0}.vertaviso{display:none;background:#fff7e6;border:1px solid #f5c26b;color:#7a4b00;border-radius:10px;padding:8px 10px;margin:0 0 10px}
@media (orientation:landscape) and (max-height:520px){.vertaviso{display:block}}
/* 2.34.14: fichas laterales bien encuadradas en el móvil */
.drawer .db .btn{white-space:normal;max-width:100%;height:auto;text-align:center}
.drawer .db{min-width:0}.drawer .db>*{max-width:100%}
.drawer .db img,.drawer .db video{max-width:100%;height:auto}
@media (max-width:640px){
 .hcal{grid-template-columns:30px repeat(var(--cols),minmax(0,1fr));overflow-x:hidden}
 .hcal-h{font-size:10px;padding:5px 0;white-space:nowrap;overflow:hidden;text-overflow:clip}
 .hcal .hev{font-size:9px;line-height:1.15;padding:1px 2px;overflow:hidden;word-break:break-word}
 .hcal-t{font-size:9px}.hcal-t span{right:2px}
}
@media (max-width:640px){.hcal .hev{left:1px;right:1px}}
/* 2.34.15: con un panel lateral abierto no se mueve la pantalla de detrás (sin doble barra de scroll) */
html:has(#drawerRoot .scrim),html:has(#drawerRoot .scrim) body{overflow:hidden!important;overscroll-behavior:none}
#drawerRoot .drawer{overscroll-behavior:contain}
.docareas{margin:0 0 10px;gap:8px;flex-wrap:wrap}.docareas .chip em{font-style:normal;margin-left:4px}
.icopick{display:flex;flex-wrap:wrap;gap:4px;padding:8px;margin:4px 0 8px;border:1px dashed var(--line);border-radius:10px}.icopick .btn{font-size:18px;padding:2px 6px;min-width:0}
.tpico{font-size:18px;min-width:36px}
/* 2.34.15 ejercicios: miniaturas y visor */
.ejthumbs{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0;align-items:center}
.ejth{all:unset;cursor:pointer;width:52px;height:52px;border-radius:8px;overflow:hidden;background:var(--surface-2,#f1f5f9);display:flex;align-items:center;justify-content:center;font-size:22px;border:1px solid var(--line)}
.ejth img{width:100%;height:100%;object-fit:cover}.ejth:focus-visible{outline:2px solid var(--brand)}
.ejhero{all:unset;cursor:zoom-in;display:block}.ejhero img{border-radius:8px;max-height:160px;width:100%;object-fit:cover}
.card{position:relative}.ejchk{position:absolute;top:10px;right:10px}.ejarow{margin-bottom:6px;gap:8px;align-items:center}
.visor{position:fixed;inset:0;z-index:2000;background:rgba(0,0,0,.92);display:flex;flex-direction:column}
.visor .vbar{display:flex;align-items:center;gap:8px;padding:10px 12px;color:#fff;font-size:14px}
.visor .vmed{flex:1;display:flex;align-items:center;justify-content:center;position:relative;min-height:0;padding:0 8px 12px}
.visor .vmed img,.visor .vmed video{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px}
.visor .vnav{position:absolute;top:50%;transform:translateY(-50%);left:6px;width:44px;height:64px;border:0;border-radius:10px;background:rgba(255,255,255,.15);color:#fff;font-size:34px;cursor:pointer}.visor .vnav.r{left:auto;right:6px}
html:has(.visor){overflow:hidden}
/* 2.34.15 sesiones creadas en la app y juegos */
.jgsvg{display:block;width:100%;height:auto;border-radius:10px;touch-action:none;user-select:none}
.jgsvg.mini{width:120px;flex:none;border-radius:6px}
.jgstage{max-width:760px;margin:6px auto 0}.jgstage.dib svg{cursor:crosshair}
.jgstage [data-i]{cursor:grab}.jgsel>*{filter:drop-shadow(0 0 2px #fff) drop-shadow(0 0 3px #0091FE)}
.jgtools{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.jgtools .chip{font-size:13px}.jgtools2{gap:6px;flex-wrap:wrap}
.jglib{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.jgcard{all:unset;cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.jgcard .jgsvg.mini{width:100%}.jgcard:hover{border-color:var(--brand)}
.separte{margin-top:10px}.separte textarea{width:100%;margin-top:6px}.separte .ph{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.sejuegos{display:flex;flex-direction:column;gap:6px;margin-top:8px}.sejg{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border:1px solid var(--line);border-radius:10px;padding:6px}.sejg>span{flex:1;min-width:120px}
.sejgver{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:12px;align-items:start;margin:10px 0;padding-top:10px;border-top:1px dashed var(--line)}
@media (max-width:700px){.sejgver{grid-template-columns:1fr}}
.sedatos{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin-bottom:8px}.sedatos>div{display:flex;flex-direction:column;background:var(--surface-2,#f8fafc);border-radius:8px;padding:6px 8px}
.sesrev{margin-bottom:12px;border-left:4px solid var(--warn,#f59e0b)}.sesrev .inscrito{margin-top:6px}
.jgstage{width:100%}
.drawer .db .jgstage{max-width:min(760px,calc((100vh - 240px)*1.9))}
.arsres{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;max-height:160px;overflow:auto}.arsres .chip.on{background:var(--brand);color:#fff}
.visor .vbar .btn{background:rgba(255,255,255,.16);color:#fff;border-color:rgba(255,255,255,.35)}.visor .vbar .btn:hover{background:rgba(255,255,255,.28)}
.turnorow{padding:8px 0;border-top:1px solid var(--line)}.turnorow b{display:block;margin-bottom:4px}
.jgcardw{position:relative}.jgchk{position:absolute;top:8px;right:8px;z-index:1;background:var(--surface);border-radius:6px;padding:2px}
.sejg small{line-height:1.35}
.insc-hint{padding:12px;border:1.5px dashed #c9d3df;border-radius:12px;color:#556;background:#f7f9fc;margin:8px 0}
/* 2.34.19 eventos a medida */
.evops{display:flex;flex-direction:column;gap:8px}.evop{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap;border:1.5px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--surface)}.evop.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 6%,var(--surface))}
.evq{display:flex;align-items:center;gap:6px}.evq input[type=number]{width:64px;text-align:center}
.evtot{position:sticky;bottom:0;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-top:12px;display:grid;gap:4px;box-shadow:0 -4px 14px rgba(0,0,0,.06)}.evtot>div{display:flex;justify-content:space-between}.evtot .t{font-size:18px;border-top:1px solid var(--line);padding-top:4px}
.evopc{border-top:1px solid var(--line);padding:10px 0}
.jgbtn{flex-direction:column;line-height:1.15;padding-top:4px;padding-bottom:4px}.jgbtn small{font-size:12px;font-weight:600}.ejth,.ejhero,.ejcards img{-webkit-touch-callout:none;user-select:none}

/* 2.34.28: selector múltiple con buscador */
.mqsel{border:1px solid var(--line);border-radius:10px;padding:6px;background:var(--surface)}
.mqsel.dis{background:transparent}
.mqchips{display:flex;flex-wrap:wrap;gap:6px;padding:2px}
.mqchip{display:inline-flex;align-items:center;gap:4px;background:color-mix(in srgb,var(--brand) 12%,transparent);color:var(--ink);border:1px solid color-mix(in srgb,var(--brand) 35%,transparent);border-radius:999px;padding:3px 4px 3px 10px;font-size:13px;line-height:1.3;max-width:100%}
.mqsel.dis .mqchip{padding-right:10px}
.mqx{border:0;background:transparent;color:inherit;font-size:16px;line-height:1;width:22px;height:22px;border-radius:50%;cursor:pointer;flex:none}
.mqx:hover{background:color-mix(in srgb,var(--brand) 25%,transparent)}
.mqbox{position:relative;margin-top:6px}
.mqq{width:100%;box-sizing:border-box}
.mqdd{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;max-height:260px;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.14);padding:4px}
.mqop{display:block;width:100%;text-align:left;border:0;background:transparent;color:var(--ink);padding:8px 10px;border-radius:8px;font:inherit;font-size:14px;cursor:pointer}
.mqop:hover,.mqop.on{background:color-mix(in srgb,var(--brand) 12%,transparent)}
.mqmas{padding:8px 10px}
/* 2.34.29: gestión */
.gestr{border:1px solid var(--line);border-radius:10px;padding:8px;margin:6px 0;display:grid;gap:8px}
.gestr .chip{cursor:pointer}.gestr .chip input,label.chip input[type=radio]{margin:0 4px 0 0}
.gsmodo .chip,.gestr .chip{white-space:nowrap;flex:none}
/* 2.34.31: problemas al instalar */
.pwaprob{margin-top:10px;border-top:1px solid rgba(0,0,0,.08);padding-top:8px}.pwaprob summary{cursor:pointer;font-weight:700}.pwaprob p{margin:6px 0!important}.pwaprob ol{margin:6px 0;padding-left:20px}

/* 2.34.33: rol del monitor en «Próxima clase» */
.cmeta .cmon{display:flex;flex-direction:column;gap:2px;flex-basis:100%}.cmeta .cmon small{font-size:12px;opacity:.7;text-transform:uppercase;letter-spacing:.04em;font-weight:700}
.nprrow{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}.nprrow:first-of-type{border-top:0}.nprtx{flex:1;min-width:0}
.nprc{display:flex;align-items:center;gap:6px;white-space:nowrap;font-size:14px;cursor:pointer;padding:6px 8px;border:1px solid var(--line);border-radius:10px}.nprc input{width:20px;height:20px;margin:0}
@media (max-width:520px){.nprrow{flex-wrap:wrap}.nprtx{flex-basis:100%}}

/* 2.34.38: foto ampliada */
.hero img.avatar-img,img.avatar-xl,.monfotobox img.monfoto{cursor:zoom-in}
.fzoom{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.85);display:grid;place-items:center;padding:16px;cursor:zoom-out;animation:fzin .15s ease-out}
.fzoom img{max-width:min(92vw,720px);max-height:86vh;width:auto;height:auto;border-radius:18px;box-shadow:0 10px 40px rgba(0,0,0,.5);background:#fff}
.fzx{position:absolute;top:14px;right:14px;width:44px;height:44px;border-radius:50%;border:0;background:rgba(255,255,255,.9);font-size:20px;cursor:pointer}
@keyframes fzin{from{opacity:0}to{opacity:1}}
.fzoom:focus{outline:none}

/* 2.34.39: festivo local en el calendario */
.calc.nolectl{background:repeating-linear-gradient(135deg,transparent 0 8px,color-mix(in srgb,var(--muted,#77818D) 10%,transparent) 8px 16px)}
/* 2.34.40: inscripción de hermanos y autorizados */
.insc-hno{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 4%,transparent)}
.insc-mas{font-weight:700}
.insc-aut{display:grid;grid-template-columns:2fr 1fr 1.2fr 1fr auto;gap:6px;align-items:center}
@media (max-width:620px){.insc-aut{grid-template-columns:1fr 1fr;padding-bottom:8px;border-bottom:1px dashed var(--line)}.insc-aut [data-af=nombre]{grid-column:1/-1}}
.insc-hno [data-hdel],.insc-aut [data-adel]{background:none!important;color:#c0392b!important;border:0!important;box-shadow:none!important;width:auto!important;padding:4px 8px!important;font-weight:700}

/* 2.34.43: calendario visual de horas del empleado */
.hcgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin-top:10px}
.hcw{font-size:11px;font-weight:700;color:var(--muted);text-align:center}
.hcd{position:relative;min-height:62px;border:1px solid var(--line);border-radius:10px;padding:4px 5px 8px;background:color-mix(in srgb,var(--brand) calc(var(--k,0)*100%),var(--surface));color:var(--ink);text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:2px;font:inherit;overflow:hidden}
.hcd.vac{background:var(--surface)}.hcd.solo{background:var(--surface-2)}.hcd.hoy{outline:2px solid var(--brand);outline-offset:-2px}.hcd.sel{box-shadow:0 0 0 2px var(--ink) inset}
.hcn{font-size:11px;color:var(--muted);font-weight:700}.hch{font-size:16px;line-height:1.1}.hch small{font-size:10px;font-weight:600;margin-left:1px}
.hcev{display:flex;flex-wrap:wrap;gap:1px;font-size:12px;line-height:1}.hce{font-style:normal}.hce-aus{color:#DC2626;font-weight:800}.hce-ext{color:#16A34A;font-weight:800}.hce-men{color:#DC2626;font-weight:800}.hce-sus{color:#8B5CF6;font-weight:800}
.hcbar{position:absolute;left:5px;right:5px;bottom:4px;height:4px;border-radius:2px;display:flex;overflow:hidden;background:var(--line)}.hcbar i{display:block;height:100%}
.hcleg{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:12px;color:var(--muted)}.hcleg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}
.hcdet{margin-top:10px;padding-top:8px;border-top:1px solid var(--line)}.hcdot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}
@media (max-width:520px){.hcd{min-height:52px;padding:3px 3px 7px}.hch{font-size:13px}.hcev{font-size:10px}}

/* 2.34.45: fusionar usuarios */
.pillbtn{border:0;cursor:pointer;font:inherit}
.ufus th{text-align:left;vertical-align:top;font-size:13px}.ufus td{vertical-align:top}
.warnbtn{border-color:var(--warn,#EAB308)!important}
.usdup{align-items:center}

/* 2.34.47: lista de espera agrupada */
.esperabox{border-left:4px solid var(--line)}.esperabox.conplaza{border-left-color:#EAB308}.esperabox .precard{margin:10px 0 0;box-shadow:none}
/* 2.34.51: los botones de la barra superior (Contraseña, Fichar…) con la misma altura que los de ayuda y apariencia */
#userBox>.btn{height:38px;min-height:38px;box-sizing:border-box;padding-top:0;padding-bottom:0;display:inline-flex;align-items:center;justify-content:center;line-height:1}
/* 2.34.52: campus por modalidades y grupos */
.cpmod{border-left:4px solid var(--cp,#64748b);padding:2px 0 2px 12px;margin:14px 0}
.cpmod>h3{margin:0 0 8px;font-size:16px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.cpg{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:0 0 10px;background:var(--card,transparent)}
.cpg.cpwarn{border-color:color-mix(in srgb,var(--warn,#b45309) 55%,transparent);background:color-mix(in srgb,var(--warn,#b45309) 6%,transparent)}
.cpgh{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.cpgh .row{gap:6px;align-items:center}
.cpgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.cpgrid .cpg{margin:0}
.cpkids{display:flex;flex-wrap:wrap;gap:5px}
.cpkid{all:unset;font-size:12.5px;padding:3px 9px;border-radius:999px;background:color-mix(in srgb,var(--cp,#0091FE) 12%,transparent);color:var(--ink);line-height:1.4}
button.cpkid{cursor:pointer}button.cpkid:hover{background:color-mix(in srgb,var(--cp,#0091FE) 24%,transparent)}button.cpkid:focus-visible{outline:2px solid var(--cp,#0091FE)}
.cpnota{width:100%;margin-top:8px;box-sizing:border-box}
.cpav{width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--line);font-weight:700;color:var(--ink-2);flex:0 0 36px}
.cpfase{border:1px dashed var(--line);border-radius:10px;padding:8px 10px;margin:6px 0}
.cpfh{gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:6px}
.cpmodcfg{border-left:4px solid var(--cp);padding-left:10px;margin:10px 0 14px}.cpmodcfg h4{margin:0 0 4px}
.cptab td{vertical-align:middle}
.cpmdrow{gap:6px;flex-wrap:wrap}
.pcd.sin{background-image:repeating-linear-gradient(45deg,transparent 0 4px,rgba(0,0,0,.18) 4px 5px);text-align:center}
.pcd.per.cpman{box-shadow:inset 0 -3px 0 0 var(--ink)}
.pcd.per.cphoy{outline:2px solid var(--ink);outline-offset:-2px}
@media (max-width:700px){.cplista .rrow{flex-wrap:wrap}.cpgrid{grid-template-columns:1fr}}
/* 2.34.54: pedir un evento sin ser cliente */
.evp-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:0 12px}
.evp-op{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line,#e5e7eb)}
.evp-op:last-child{border-bottom:0}.evp-op>div:first-child{min-width:0}.evp-op small{display:block;color:#667;margin-top:2px}
.evp-op.on b:first-child{color:var(--brand,#16a34a)}
.evp-q{display:flex;align-items:center;gap:4px;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end}
.evp-q input[type=number]{width:62px;text-align:center;margin:0}
.evp-q button[data-mas]{width:36px;height:36px;border-radius:8px;border:1px solid var(--line,#d1d5db);background:#fff;font-size:18px;cursor:pointer;color:inherit}
.evp-tot{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:12px 14px;border-radius:12px;background:color-mix(in srgb,var(--brand,#16a34a) 8%,transparent);margin:12px 0 4px}
.evp-tot .t{font-size:18px;font-weight:800}
@media (max-width:520px){.evp-op{flex-direction:column;align-items:stretch}.evp-q{justify-content:flex-start}}
.login-card form input[type=time],.login-card form .evp-row input[type=number]{width:100%;padding:12px;border:1.5px solid var(--line);border-radius:10px;font-size:16px;background:#fff;color:#111;font-family:inherit;box-sizing:border-box}
.evmonrow{gap:6px;flex-wrap:wrap;align-items:center;margin:4px 0}.evmonrow select{min-width:180px}
/* 2.34.57: guía detallada y ayuda interactiva */
.guiares{font-size:15.5px;font-weight:600;line-height:1.45;margin:4px 0 10px}
.guial{margin:4px 0 10px;padding-left:22px}.guial li{margin:4px 0;line-height:1.45}
.guiachip{display:inline-flex;align-items:center;gap:4px;text-align:left}
details.guiaarea{border-bottom:1px solid var(--line);padding:6px 0}details.guiaarea summary{cursor:pointer}
.gtip{position:relative;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.gtip::after{content:"";position:absolute;top:3px;right:3px;width:7px;height:7px;border-radius:50%;background:var(--brand,#16a34a);box-shadow:0 0 0 2px var(--card,#fff);pointer-events:none}
#gPop{position:fixed;z-index:10000;background:var(--card,#fff);color:var(--ink,#111);border:1px solid var(--line,#e5e7eb);border-radius:14px;box-shadow:0 12px 32px rgba(0,0,0,.18);padding:12px 14px;animation:gpin .15s ease-out}
#gPop .gph{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}#gPop p{margin:6px 0 10px;font-size:14px;line-height:1.45}
#gPop .gpx{all:unset;cursor:pointer;font-size:14px;padding:2px 6px;border-radius:6px;color:var(--ink-3,#667)}#gPop .gpx:hover{background:var(--line)}
@keyframes gpin{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
#gRing{position:fixed;z-index:10001;width:56px;height:56px;pointer-events:none}
#gRing svg{width:56px;height:56px;transform:rotate(-90deg)}
#gRing circle{fill:rgba(255,255,255,.55);stroke:var(--brand,#16a34a);stroke-width:4;stroke-linecap:round;stroke-dasharray:113.1;stroke-dashoffset:113.1;animation:gring .8s linear forwards}
@keyframes gring{to{stroke-dashoffset:0}}
/* 2.34.58: interruptor de la ayuda interactiva en la Ayuda */
.iabox{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--brand,#16a34a) 6%,transparent);margin:0 0 12px;cursor:pointer}
.iabox input{position:absolute;opacity:0;width:1px;height:1px}
.iabox small{display:block;color:var(--ink-3,#667);font-size:12.5px;margin-top:2px;line-height:1.4}
.iasw{flex:0 0 44px;width:44px;height:26px;border-radius:999px;background:#cbd5e1;position:relative;transition:background .15s;margin-top:2px}
.iasw::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
.iabox input:checked+.iasw{background:var(--brand,#16a34a)}.iabox input:checked+.iasw::after{transform:translateX(18px)}
.iabox input:focus-visible+.iasw{outline:2px solid var(--brand,#16a34a);outline-offset:2px}
/* 2.34.63: pedir acceso sin «Crear cuenta» */
.login-acc{margin:12px 0;border:1px solid var(--line,#E2E5EA);border-radius:12px;padding:10px 12px;background:var(--surface,#fff)}
.login-acc summary{cursor:pointer;font-weight:600;font-size:.92rem}
.login-acc[open] summary{margin-bottom:6px}
/* 2.34.64: desplegable de sugerencias propio (más alto que el del navegador) */
.dlpop{position:fixed;z-index:9999;overflow-y:auto;background:var(--surface,#fff);color:var(--ink,#111);border:1px solid var(--line,#D5DAE1);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.18);padding:4px;overscroll-behavior:contain}
.dlpop-o{padding:6px 10px;border-radius:7px;cursor:pointer;font-size:.92rem;line-height:1.3}
.dlpop-o:hover,.dlpop-o.on{background:var(--brand-soft,rgba(0,145,254,.12))}
.tsedes td.num,.tsedes th.num{text-align:right}
/* 2.34.67: exámenes por puntos y animales */
.expts-hero{display:flex;gap:14px;align-items:center}
.exani{width:84px;height:84px;flex:none;object-fit:contain;display:grid;place-items:center}
.exani.emo{font-size:64px;line-height:1}
.expts-n{font-size:1.3rem;font-weight:800}
.expt{align-items:center;flex-wrap:wrap}
.expn{display:inline-flex;gap:4px;flex-wrap:nowrap}
.expn button{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:var(--surface);font:inherit;font-weight:700;cursor:pointer;color:var(--ink)}
.expn button.on{background:var(--brand);border-color:var(--brand);color:#fff}
.expn.uno button{width:auto;padding:0 12px;white-space:nowrap}
.exstars{color:#F59E0B;letter-spacing:1px;white-space:nowrap}.exstars i{color:var(--line);font-style:normal}
.exnivs{display:grid;gap:6px}
.exniv{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:6px;border:1px solid var(--line);border-radius:10px}
.exniv-pv{width:40px;height:40px;display:grid;place-items:center;font-size:28px;flex:none}.exniv-pv img{max-width:40px;max-height:40px}
.premio-emo{width:64px;height:64px;display:grid;place-items:center;font-size:44px;line-height:1;border-radius:14px;background:var(--surface-2);outline:3px solid #FACC15}
/* 2.34.69: exámenes por bloques */
.exblqs{display:grid;gap:10px}.exblq{border:1px solid var(--line);border-radius:12px;padding:10px;background:var(--surface)}
.exobjs{display:grid;gap:6px;margin-top:8px}
.exobj-ed{display:flex;gap:8px;align-items:flex-start}.exobj-ed textarea{flex:1;min-height:0}
.exobj-n{flex:none;width:38px;height:38px;border-radius:10px;display:grid;place-items:center;font-weight:800;background:var(--surface-2);line-height:1;text-align:center}.exobj-n small{display:block;font-size:9px;font-weight:600;opacity:.75}
.exobj{all:unset;box-sizing:border-box;display:flex;gap:10px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:10px;cursor:pointer;background:var(--surface)}
.exobj:hover{border-color:var(--brand)}.exobj:focus-visible{outline:2px solid var(--brand)}
.exobj>span:nth-child(2){flex:1}
.exobj.on{border-color:#16A34A;background:color-mix(in srgb,#16A34A 12%,var(--surface))}.exobj.on .exobj-n{background:#16A34A;color:#fff}
.exobj.sup{opacity:.6}.exobj-ok{color:#16A34A;font-weight:800;font-size:1.2rem}
.exobjlist{margin:6px 0 0;padding-left:20px;display:grid;gap:3px;font-size:.92rem}.exobjlist li.on{font-weight:700;color:#16A34A}.exobjlist li.sup{opacity:.6}
.exobj-ed textarea{font-weight:400}
/* 2.34.75: equipaciones */
.eqcat{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.eqcard{all:unset;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.eqcard.click{cursor:pointer}.eqcard.click:hover{border-color:var(--brand)}
.eqimg{width:120px;height:120px;display:grid;place-items:center;font-size:56px;border-radius:12px;background:var(--surface-2);overflow:hidden}.eqimg img{width:100%;height:100%;object-fit:contain}
.eqimg.sm{width:64px;height:64px;font-size:32px}
.eqtallas{display:flex;flex-wrap:wrap;gap:8px}
.eqtalla{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:64px;padding:8px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.eqtalla b{font-size:1.2rem}.eqtalla.bajo{border-color:var(--warn)}.eqtalla.neg{border-color:var(--bad)}.eqtalla.neg b{color:var(--bad)}
.eqlin{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:6px}.eqlin select{flex:1;min-width:140px}
.eqimg.multi{position:relative;cursor:pointer}.eqdots{position:absolute;bottom:6px;left:0;right:0;display:flex;gap:5px;justify-content:center;font-style:normal}.eqdots i{width:7px;height:7px;border-radius:50%;background:rgba(0,0,0,.25)}.eqdots i.on{background:var(--brand)}
.fpeek{position:fixed;z-index:9998;border-radius:18px;overflow:hidden;box-shadow:0 12px 40px rgba(0,0,0,.35);background:#fff;pointer-events:none;animation:fzin .15s ease-out}.fpeek img{width:100%;height:100%;object-fit:cover;display:block}
img.avatar-img,img.monfoto{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.lnkficha{cursor:pointer;text-decoration:underline;text-decoration-color:rgba(0,0,0,.25);text-underline-offset:3px}.lnkficha:hover{color:var(--brand,#0091FE)}
.evfichas{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}.evficha{display:flex;flex-direction:column;gap:4px;text-align:left;background:var(--card,#fff);border:1px solid var(--line);border-radius:14px;padding:12px;cursor:pointer;font:inherit;color:inherit}.evficha:hover{border-color:var(--brand,#0091FE)}.evficha h3{margin:4px 0 2px;font-size:16px}
.ecoalerta{width:100%;background:none;border:0;font:inherit;color:inherit;text-align:left;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.ecoalerta:hover{background:var(--bad-bg,#fdecec)}
.segr{display:inline-flex;background:var(--surface-2);border-radius:10px;padding:3px;gap:2px}.segr label{display:inline-flex;align-items:center;padding:6px 16px;border-radius:8px;font-weight:600;font-size:14px;color:var(--ink-2);cursor:pointer;line-height:1.2;margin:0}.segr input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.segr label:has(input:checked){background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.12)}.segr label:has(input:focus-visible){outline:2px solid var(--brand)}.segr label:has(input:disabled){cursor:default}
.ctimp .ctiva{grid-column:span 2}@media(max-width:600px){.ctimp .ctiva{grid-column:1/-1}}
.mantov{position:fixed;inset:0;z-index:100000;background:var(--bg,#f4f6f8);display:grid;place-items:center;padding:16px}.mantcard{max-width:440px;text-align:center;background:var(--surface,#fff);border-radius:20px;padding:28px 22px;box-shadow:0 10px 40px rgba(0,0,0,.12)}.mantcard h1{font-size:22px;margin:10px 0 8px}

.bell>.btn.vtap,.bell>.btn:active{transform:none;filter:brightness(.88)}
/* 2.36.5: en ordenador la cabecera va siempre en una sola línea: el buscador se estrecha y la campana no salta a la izquierda */
@media (min-width:861px){.top{flex-wrap:nowrap}.top .gsearch{flex:1 1 160px;min-width:140px}.role{flex-wrap:nowrap;flex-shrink:0}.role select{max-width:220px}.userbox{flex-wrap:nowrap;flex-shrink:0;margin-left:auto}.role:not(:empty)+.userbox{margin-left:0}.userbox .who{max-width:190px}.userbox .who b,.userbox .who .muted{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}}
@media (min-width:861px) and (max-width:1250px){.userbox .who{display:none}.role>span,.role>label{display:none}.role select{max-width:170px}}
