@font-face{font-family:"Source Sans 3";src:url("/fonts/source-sans-3.woff2") format("woff2");font-weight:200 900;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url("/fonts/source-serif-4.woff2") format("woff2");font-weight:200 900;font-style:normal;font-display:swap}
@font-face{font-family:"Source Serif 4";src:url("/fonts/source-serif-4-italic.woff2") format("woff2");font-weight:200 900;font-style:italic;font-display:swap}

/*
 * Mismo sistema visual que la consulta a expertos.
 *   paper  #f5f6fa  fondo general
 *   navy   #013674  texto de marca, acciones principales
 *   azure  #2f80ca  estados completos, enlaces
 *   sky    #83bbf2  realces suaves, foco
 *   amber  #e3a442  lo pendiente, el tema resaltado
 *   wine   #7a032c  eliminar, errores
 * Las variantes oscura y de alto contraste las activan las «Opciones de lectura».
 */
:root{
  --serif:"Source Serif 4",ui-serif,Georgia,serif;
  --sans:"Source Sans 3",ui-sans-serif,system-ui,sans-serif;

  --paper:#f5f6fa;--surface:#f5f6fa;--surface-2:rgb(131 187 242 / .1);--surface-3:rgb(131 187 242 / .18);
  --navy:#013674;--navy-deep:#013674;--azure:#2f80ca;--sky:#83bbf2;--sky-soft:rgb(131 187 242 / .22);
  --amber:#e3a442;--amber-soft:rgb(227 164 66 / .16);--amber-ink:#013674;
  --wine:#7a032c;--wine-soft:rgb(122 3 44 / .08);
  --ink:#013674;--muted:rgb(1 54 116 / .76);--line:rgb(131 187 242 / .6);--line-soft:rgb(131 187 242 / .32);--line-hover:#83bbf2;--neutral-soft:rgb(131 187 242 / .16);
  --placeholder:rgb(1 54 116 / .5);
  --bar-bg:rgb(245 246 250 / .88);--bar-ink:#013674;--bar-muted:rgb(1 54 116 / .76);--bar-line:rgb(131 187 242 / .5);--bar-hover:rgb(131 187 242 / .16);--bar-active:rgb(131 187 242 / .26);
  --btn-top:#013674;--btn-bottom:#013674;--btn-hover-top:#2f80ca;--btn-hover-bottom:#2f80ca;--on-btn:#f5f6fa;
  --glass:rgb(245 246 250 / .8);--glass-line:rgb(131 187 242 / .5);--card:rgb(245 246 250 / .94);
  --shadow-card:0 1px 2px rgb(1 54 116 / .06),0 12px 32px -20px rgb(1 54 116 / .3);
  --shadow-lift:0 2px 4px rgb(1 54 116 / .07),0 18px 40px -22px rgb(1 54 116 / .38);
  --blank:rgb(227 164 66 / .38);
  --bg-image:
    radial-gradient(60rem 40rem at -5% -10%,rgb(131 187 242 / .42),transparent 62%),
    radial-gradient(52rem 36rem at 105% 5%,rgb(47 128 202 / .16),transparent 60%),
    radial-gradient(44rem 30rem at 90% 105%,rgb(227 164 66 / .16),transparent 62%),
    radial-gradient(40rem 30rem at 10% 100%,rgb(131 187 242 / .24),transparent 60%);
  --topbar-h:4rem;
  --measure:44rem;
  color-scheme:light;
}
:root[data-theme="dark"]{
  --paper:#0a1424;--surface:#101d33;--surface-2:#13223b;--surface-3:#172942;
  --navy:#b3d3f6;--navy-deep:#d7e8fb;--azure:#86bdf0;--sky:#5d9edb;--sky-soft:#16304f;
  --amber:#e3a442;--amber-soft:#35270f;--amber-ink:#f3c979;
  --wine:#f08ba7;--wine-soft:#3b1423;
  --ink:#e6edf7;--muted:#a6b4c8;--line:#2b3c59;--line-soft:#1f2f49;--line-hover:#43577a;--neutral-soft:#1a2a43;
  --placeholder:#7788a0;
  --bar-bg:#06203f;--bar-ink:#ffffff;--bar-muted:#a9c4e4;--bar-line:rgb(131 187 242 / .18);--bar-hover:rgb(255 255 255 / .08);--bar-active:rgb(131 187 242 / .16);
  --btn-top:#3a8ad6;--btn-bottom:#2469b0;--btn-hover-top:#4b98e0;--btn-hover-bottom:#2d76c0;--on-btn:#ffffff;
  --glass:rgb(12 24 44 / .8);--glass-line:rgb(60 82 116 / .55);--card:rgb(16 29 51 / .94);
  --shadow-card:0 1px 2px rgb(0 0 0 / .3),0 12px 32px -20px rgb(0 0 0 / .7);
  --shadow-lift:0 2px 4px rgb(0 0 0 / .3),0 18px 40px -22px rgb(0 0 0 / .8);
  --blank:rgb(227 164 66 / .3);
  --bg-image:
    radial-gradient(60rem 40rem at -5% -10%,rgb(47 128 202 / .22),transparent 62%),
    radial-gradient(52rem 36rem at 105% 5%,rgb(1 54 116 / .35),transparent 60%),
    radial-gradient(44rem 30rem at 90% 105%,rgb(227 164 66 / .08),transparent 62%);
  color-scheme:dark;
}
/* Alto contraste: sin transparencias ni sombras, bordes firmes. */
:root[data-contrast]{
  --paper:#ffffff;--surface:#ffffff;--surface-2:#ffffff;--surface-3:#ffffff;
  --navy:#001a40;--navy-deep:#000000;--azure:#0036a8;--sky:#0036a8;--sky-soft:#ffffff;
  --amber:#8a5a00;--amber-soft:#ffffff;--amber-ink:#000000;
  --wine:#8a0000;--wine-soft:#ffffff;
  --ink:#000000;--muted:#000000;--line:#000000;--line-soft:#000000;--line-hover:#000000;--neutral-soft:#ffffff;
  --btn-top:#001a40;--btn-bottom:#001a40;--btn-hover-top:#000000;--btn-hover-bottom:#000000;--on-btn:#ffffff;
  --glass:#ffffff;--glass-line:#000000;--card:#ffffff;--shadow-card:none;--shadow-lift:none;
  --blank:#ffe600;--bg-image:none;
  --bar-bg:#ffffff;--bar-ink:#000000;--bar-muted:#000000;--bar-line:#000000;--bar-hover:#ffffff;--bar-active:#ffffff;
}
:root[data-contrast][data-theme="dark"]{
  --paper:#000000;--surface:#000000;--surface-2:#000000;--surface-3:#000000;
  --navy:#ffffff;--navy-deep:#ffffff;--azure:#fff04d;--sky:#fff04d;--sky-soft:#000000;
  --amber:#fff04d;--amber-soft:#000000;--amber-ink:#fff04d;
  --wine:#ff8a80;--wine-soft:#000000;
  --ink:#ffffff;--muted:#ffffff;--line:#ffffff;--line-soft:#ffffff;--line-hover:#ffffff;--neutral-soft:#000000;
  --btn-top:#fff04d;--btn-bottom:#fff04d;--btn-hover-top:#ffffff;--btn-hover-bottom:#ffffff;--on-btn:#000000;
  --glass:#000000;--glass-line:#ffffff;--card:#000000;
  --blank:#fff04d;
  --bar-bg:#000000;--bar-ink:#ffffff;--bar-muted:#ffffff;--bar-line:#ffffff;--bar-hover:#000000;--bar-active:#000000;
}

/* ======================================================================== base */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--topbar-h) + 1rem)}
body{
  margin:0;min-height:100dvh;display:flex;flex-direction:column;
  color:var(--ink);background-color:var(--paper);background-image:var(--bg-image);background-attachment:fixed;
  font-family:var(--sans);font-size:1.0625rem;line-height:1.55;font-feature-settings:"kern","liga";
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
[hidden]{display:none!important}
button,input,textarea,select{font:inherit;color:inherit}
a{color:var(--azure);text-underline-offset:3px}
a:hover{color:var(--navy)}
p{margin:0 0 1em}
strong{font-weight:650}
ul,ol{margin:0}
h1,h2,h3{margin:0;line-height:1.2;color:var(--navy)}
h1{font-family:var(--serif);font-weight:600;font-size:clamp(1.9rem,3vw,2.6rem);line-height:1.1;letter-spacing:-.01em}
h2{font-family:var(--serif);font-weight:600;font-size:1.4rem;line-height:1.25}
h3{font-size:1.05rem;font-weight:700;color:var(--ink)}
h1:focus,h2:focus{outline:none}
h1:focus-visible,h2:focus-visible{outline:3px solid var(--azure);outline-offset:4px;border-radius:4px}
/* Los títulos reciben el foco por programa al cambiar de pantalla: no llevan contorno, como en la consulta. */
h1[tabindex="-1"]:focus-visible,h2[tabindex="-1"]:focus-visible{outline:none}
:focus-visible{outline:3px solid var(--azure);outline-offset:2px;border-radius:4px}
::selection{background:var(--sky);color:var(--navy-deep)}
.sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:1rem;top:-4rem;z-index:100;background:var(--btn-bottom);color:var(--on-btn);padding:.6rem 1rem;border-radius:8px;font-weight:650}
.skip:focus{top:.75rem;color:var(--on-btn)}
:root[data-contrast] :focus-visible{outline-width:4px;box-shadow:0 0 0 7px var(--blank)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* ======================================================================== barra superior */

.topbar{
  position:sticky;top:0;z-index:40;height:var(--topbar-h);
  display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:1.5rem;
  padding:0 clamp(1rem,2.5vw,2rem);
  background:var(--bar-bg);color:var(--bar-ink);backdrop-filter:saturate(1.4) blur(16px);-webkit-backdrop-filter:saturate(1.4) blur(16px);
  border-bottom:1px solid var(--bar-line);box-shadow:inset 0 -2px 0 var(--amber);
}
.topbar__brand{grid-column:1;display:flex;align-items:center;gap:.75rem;min-width:0}
.brand{display:flex;align-items:center;gap:.75rem;text-decoration:none;color:inherit;min-width:0}
.brand:hover{color:inherit}
.brand__mark{
  flex:none;display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:9px;
  background:#013674;color:#f5f6fa;font-family:var(--serif);font-weight:600;font-size:1rem;letter-spacing:.02em;
  box-shadow:inset 0 -3px 0 #e3a442;
}
.brand__text{display:flex;flex-direction:column;min-width:0;line-height:1.2}
.brand__title{font-weight:700;color:var(--bar-ink);font-size:1rem}
.brand__subtitle{color:var(--bar-muted);font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (width < 40rem){.brand__subtitle{display:none}}

.topbar__progress{grid-column:2;display:flex;align-items:center;gap:.9rem;justify-self:center;width:min(28rem,36vw)}
.meter{flex:1;height:6px;border-radius:99px;background:var(--line-soft);overflow:hidden}
.meter__fill{width:0;height:100%;background:var(--navy);border-radius:inherit;transition:width .4s ease}
.topbar__count{font-size:.9rem;color:var(--bar-muted);white-space:nowrap}
.topbar__count strong{color:var(--bar-ink);font-weight:700}
.topbar__status{grid-column:3;display:flex;align-items:center;gap:.75rem;justify-self:end;min-width:0}
@media (width < 48rem){
  .topbar{grid-template-columns:minmax(0,1fr) auto}
  .topbar__status{grid-column:2}
  .topbar__progress{position:absolute;grid-column:auto;left:0;right:0;bottom:-1px;width:auto;justify-self:stretch}
  .topbar__progress .meter{height:3px;border-radius:0;background:transparent}
  .topbar__count{display:none}
}

/* Panel: navegación en el centro, sesión y opciones de lectura a la derecha. */
.adm-topbar{grid-template-columns:auto minmax(0,1fr) auto}
.staff-nav{grid-column:2;display:flex;gap:.25rem;justify-self:center;overflow-x:auto;scrollbar-width:none;min-width:0}
.staff-nav a{
  white-space:nowrap;padding:.45rem .8rem;border-radius:9px;text-decoration:none;font-weight:600;font-size:.95rem;color:var(--bar-muted);
  display:inline-flex;align-items:center;min-height:2.5rem;
}
.staff-nav a:hover{color:var(--bar-ink);background:var(--bar-hover)}
.staff-nav a[aria-current="page"]{color:var(--bar-ink);background:var(--bar-active);box-shadow:inset 0 -3px 0 var(--amber)}
.staff-user{display:flex;align-items:center;gap:.75rem}
.who{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2;font-size:.85rem;color:var(--bar-muted)}
.who__name{font-weight:650;color:var(--bar-ink);max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (width < 64rem){
  .adm-topbar{grid-template-columns:minmax(0,1fr) auto;height:auto;row-gap:.25rem;padding-block:.5rem}
  .adm-topbar .topbar__status{grid-column:2;grid-row:1}
  .staff-nav{grid-column:1 / -1;grid-row:2;justify-self:stretch}
  .who{display:none}
}

/* Botones sobre la barra azul: translúcidos, con texto claro. */
.topbar .reading-toggle,.topbar .btn{background:var(--bar-hover);border-color:var(--bar-line);color:var(--bar-ink)}
.topbar .reading-toggle:hover,.topbar .btn:hover,.topbar .reading-toggle[aria-expanded="true"]{background:var(--bar-active);border-color:var(--azure);color:var(--bar-ink)}
.topbar :focus-visible{outline-color:var(--amber)}
.topbar .meter{background:var(--bar-line)}
.topbar .meter__fill{background:var(--azure)}
:root[data-contrast] .topbar{box-shadow:none}
:root[data-contrast] .topbar .meter__fill{background:var(--bar-ink)}
/* Portada: la barra se funde con el fondo. */
.is-welcome .topbar{box-shadow:none}

/* Opciones de lectura */
.reading-host{position:static}
.reading-toggle{
  display:inline-flex;align-items:center;gap:.45rem;min-height:2.5rem;padding:.4rem .9rem;border-radius:10px;cursor:pointer;
  border:1px solid var(--line);background:var(--surface);color:var(--navy);font-weight:650;font-size:.95rem;
  transition:border-color .15s,background-color .15s;
}
.reading-toggle::before{
  content:"Aa" / "";font-family:var(--serif);font-weight:600;font-size:.95rem;line-height:1;
}
.reading-toggle:hover{border-color:var(--navy)}
.reading-toggle[aria-expanded="true"]{background:var(--sky-soft);border-color:var(--navy)}
.reading-panel{
  position:absolute;right:clamp(1rem,2.5vw,2rem);top:calc(100% + .5rem);z-index:60;width:min(22rem,calc(100vw - 2rem));
  display:grid;gap:1rem;padding:1.1rem 1.2rem;border-radius:16px;color:var(--ink);
  background:var(--card);border:1px solid var(--glass-line);box-shadow:var(--shadow-lift),0 30px 80px -30px rgb(1 54 116 / .3);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  animation:pop-in .16s ease-out;
}
@keyframes pop-in{from{opacity:0;transform:translateY(-4px)}}
.reading-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;border:0;margin:0;padding:0}
.reading-row legend{font-weight:700;color:var(--navy);margin-bottom:.4rem;padding:0;width:100%;font-size:.95rem}
.reading-row label{display:inline-flex;align-items:center;gap:.4rem;min-height:2.75rem;margin-right:.4rem;cursor:pointer}
.reading-panel>label.reading-row{min-height:2.75rem;cursor:pointer;font-weight:600}
.reading-row button{
  min-width:2.75rem;min-height:2.75rem;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--navy);
  font-family:var(--serif);font-weight:700;cursor:pointer;
}
.reading-row button:hover:not(:disabled){border-color:var(--navy);background:var(--sky-soft)}
.reading-row button:disabled{opacity:.45;cursor:not-allowed}
#reading-size-label{flex:1;min-width:8rem;text-align:center;font-weight:600;font-size:.95rem}
input[type=radio],input[type=checkbox]{width:1.2rem;height:1.2rem;accent-color:var(--btn-bottom);flex:none;margin:0;cursor:pointer}

/* ======================================================================== estructura */

main{flex:1;width:100%;min-width:0}
main:focus{outline:none}
.page{padding:clamp(1.25rem,3vw,2.5rem) clamp(1rem,3vw,2.5rem) 4rem;display:flex;flex-direction:column}
.page>*{min-width:0;max-width:100%}
.loading{padding:3rem clamp(1rem,3vw,2.5rem);color:var(--muted)}
.column{max-width:var(--measure)}
.footer{border-top:2px solid var(--amber);background:var(--bar-bg);color:var(--bar-muted);font-size:.88rem}
.footer p{margin:0;padding:1rem clamp(1rem,3vw,2.5rem)}
.sheet{
  background:var(--card);border:1px solid var(--glass-line);border-radius:18px;box-shadow:var(--shadow-card),inset 0 4px 0 var(--azure);
  padding:clamp(1.1rem,2.2vw,1.6rem);min-width:0;
}
.sheet>h2:first-child{margin-bottom:.1rem}
.stack>*+*{margin-top:1.25rem}
.lead,.page-lead{font-size:1.12rem;color:var(--ink);max-width:var(--measure);text-wrap:pretty}
.muted{color:var(--muted)}
.small{font-size:.9rem}
.kicker,.progress-text{color:var(--azure);font-weight:650;font-size:.95rem;margin:0 0 .6rem}
.page-title{font-family:var(--serif);font-weight:600;color:var(--navy);font-size:clamp(2rem,3.2vw,2.9rem);line-height:1.1;letter-spacing:-.01em}

.page-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem 2rem;margin-bottom:1.75rem}
.page-head>div:first-child{flex:1;min-width:min(100%,22rem)}
.page-head p{margin:.5rem 0 0;font-size:1.05rem}
.page-head h1::after{content:"";display:block;width:3.5rem;height:4px;margin-top:.6rem;border-radius:99px;background:linear-gradient(90deg,var(--amber) 0 55%,var(--azure) 55%)}
.section{margin-top:2.5rem}
.section>h2{margin-bottom:.75rem}
.section>h2+p{margin-top:-.25rem}

/* ======================================================================== botones */

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  min-height:2.75rem;padding:.55rem 1.2rem;border-radius:10px;
  font:inherit;font-weight:650;font-size:1rem;line-height:1.2;text-decoration:none;text-align:center;
  border:1px solid var(--line);background:var(--surface);color:var(--navy);cursor:pointer;
  transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s;
}
.btn:hover{border-color:var(--navy);color:var(--navy)}
.btn.primary{
  border-color:transparent;color:var(--on-btn);
  background:linear-gradient(180deg,var(--btn-top) 0%,var(--btn-bottom) 100%);
  box-shadow:0 8px 18px -10px rgb(1 54 116 / .7);
}
.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,var(--btn-hover-top) 0%,var(--btn-hover-bottom) 100%);color:var(--on-btn)}
.btn.quiet{border-color:transparent;background:transparent;color:var(--azure);padding-inline:.75rem}
.btn.quiet:hover{color:var(--navy);background:var(--sky-soft)}
.btn.danger{border-color:transparent;background:var(--wine-soft);color:var(--wine)}
.btn.danger:hover:not(:disabled){background:var(--wine);color:#f5f6fa}
.btn.small{min-height:2.25rem;padding:.35rem .85rem;font-size:.9rem}
.btn--lg{min-height:3.25rem;padding:.75rem 1.6rem;font-size:1.05rem}
.btn--block{width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn[aria-pressed="true"]{background:var(--btn-bottom);border-color:var(--btn-bottom);color:var(--on-btn)}
:root[data-contrast] .btn{border-width:2px;border-color:var(--ink)}
.link-button{
  border:0;background:none;padding:.4rem 0;min-height:2.75rem;font:inherit;font-size:.92rem;font-weight:600;
  color:var(--muted);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line);cursor:pointer;justify-self:start;text-align:left;
}
.link-button:hover{color:var(--wine);text-decoration-color:currentColor}
.notice .link-button{color:var(--azure);padding:0;min-height:0}
.actions{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center;margin-top:1.75rem}
.actions.split{justify-content:space-between;padding-top:1.5rem;border-top:1px solid var(--line-soft)}
.cell-actions{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}

/* ======================================================================== campos */

.field{display:flex;flex-direction:column;gap:.35rem;min-width:0}
.field>label,.label{font-weight:650;color:var(--ink);font-size:.98rem}
.hint{color:var(--muted);font-size:.9rem;margin:0}
input[type=text],input[type=email],input[type=password],input[type=datetime-local],input[type=search],select,textarea{
  width:100%;min-height:2.9rem;padding:.65rem .85rem;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);
  transition:border-color .15s,box-shadow .15s;
}
textarea{resize:vertical;line-height:1.5;min-height:5.5rem}
input:hover,select:hover,textarea:hover{border-color:var(--line-hover)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--azure);box-shadow:0 0 0 3px rgb(131 187 242 / .45)}
::placeholder{color:var(--placeholder)}
select{
  appearance:none;padding-right:2.5rem;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 6l4 4 4-4' fill='none' stroke='%232f80ca' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .8rem center;background-size:1rem;
}
input[readonly]{background:var(--surface-2)}
:root[data-contrast] input[type=text],:root[data-contrast] input[type=email],:root[data-contrast] input[type=password],:root[data-contrast] input[type=datetime-local],
:root[data-contrast] select,:root[data-contrast] textarea{border-width:2px;border-color:var(--ink)}
[aria-invalid="true"]{border-color:var(--wine)!important;box-shadow:inset 3px 0 0 var(--wine)}
.field-error{color:var(--wine);font-size:.92rem;font-weight:650;margin:0}
.field-error::before{content:"⚠ ";content:"⚠ " / ""}
fieldset{border:0;margin:0;padding:0;min-width:0}
legend{font-weight:650;color:var(--ink);padding:0;margin-bottom:.5rem}
.choices{display:grid;gap:.5rem}
.choices.inline{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}
.choice{
  display:flex;align-items:center;gap:.7rem;min-height:2.9rem;padding:.55rem .9rem;border-radius:10px;cursor:pointer;
  border:1px solid var(--line);background:var(--surface);transition:border-color .15s,background-color .15s,box-shadow .15s;
}
.choice:hover{border-color:var(--line-hover);background:var(--surface-2)}
.choice:has(input:checked){border-color:var(--navy);background:var(--sky-soft);color:var(--navy);box-shadow:inset 3px 0 0 var(--navy);font-weight:600}
:root[data-contrast] .choice{border-width:2px;border-color:var(--ink)}
:root[data-contrast] .choice:has(input:checked){outline:3px solid var(--ink);outline-offset:-5px}
.form-grid{display:grid;gap:1.25rem 1.5rem}
.form-grid.two{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));align-items:start}

.error-summary{
  padding:1rem 1.25rem;margin-bottom:1.5rem;border-radius:12px;
  background:var(--wine-soft);color:var(--wine);box-shadow:inset 4px 0 0 var(--wine);
}
:root[data-contrast] .error-summary{border:3px solid var(--wine)}
.error-summary h2{font-family:var(--sans);font-size:1.05rem;font-weight:700;margin-bottom:.4rem;color:var(--wine)}
.error-summary ul{padding-left:1.2rem}
.error-summary a{color:var(--wine);font-weight:650}
.notice{
  padding:.9rem 1.15rem;border-radius:12px;background:var(--sky-soft);color:var(--ink);box-shadow:inset 3px 0 0 var(--azure);margin-bottom:1.5rem;
}
.notice.ok{background:var(--sky-soft);box-shadow:inset 3px 0 0 var(--navy)}
.notice.warn{background:var(--amber-soft);color:var(--amber-ink);box-shadow:inset 3px 0 0 var(--amber)}
.notice.err{background:var(--wine-soft);color:var(--wine);box-shadow:inset 3px 0 0 var(--wine)}
:root[data-contrast] .notice{border:2px solid var(--ink)}
.notice p:last-child{margin:0}
.solo-card .notice{margin-bottom:0}
.status{min-height:1.55em;margin:0;font-weight:650;font-size:.95rem;color:var(--muted)}
.status.err{color:var(--wine)}
.status.ok{color:var(--azure)}
.status:empty{min-height:0}

/* El tema insertado en las preguntas, resaltado en ámbar. */
.blank{
  font-weight:650;color:inherit;padding:0 .1em;
  background:linear-gradient(transparent 60%,var(--blank) 60%,var(--blank) 94%,transparent 94%);
  box-decoration-break:clone;-webkit-box-decoration-break:clone;
}
.blank.empty{display:inline-block;min-width:7em;border-bottom:2px dashed var(--amber);background:none;color:transparent}
:root[data-contrast] .blank{background:var(--blank);color:#000000;outline:2px solid var(--ink)}

/* ======================================================================== cuestionario: portada */

.hero{
  position:relative;isolation:isolate;overflow:hidden;color:#013674;
  min-height:calc(100svh - var(--topbar-h));
  display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:center;gap:2rem clamp(2rem,5vw,5rem);
  padding:clamp(2rem,6vw,5rem) clamp(1.25rem,5vw,5rem);
  background:
    radial-gradient(70rem 45rem at 80% 20%,rgb(131 187 242 / .45) 0%,transparent 60%),
    radial-gradient(40rem 30rem at 0% 100%,rgb(227 164 66 / .18),transparent 65%),
    #f5f6fa;
}
.hero::before{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:linear-gradient(rgb(131 187 242 / .22) 1px,transparent 1px),linear-gradient(90deg,rgb(131 187 242 / .22) 1px,transparent 1px);
  background-size:32px 32px;
  mask-image:radial-gradient(90% 80% at 70% 45%,#000 30%,transparent 85%);
  -webkit-mask-image:radial-gradient(90% 80% at 70% 45%,#000 30%,transparent 85%);
}
.hero__copy{display:flex;flex-direction:column;align-items:flex-start;gap:1.25rem}
.hero__kicker{margin:0;color:#2f80ca;font-weight:650;animation:hero-in .9s .1s both cubic-bezier(.2,.8,.2,1)}
.hero__title{
  font-family:var(--serif);font-weight:600;color:#013674;
  font-size:clamp(2.5rem,5vw,4.8rem);line-height:1.04;letter-spacing:-.02em;text-wrap:balance;
  animation:hero-in 1s .2s both cubic-bezier(.2,.8,.2,1);
}
.hero__title:focus-visible{outline-color:#2f80ca}
.hero .blank{color:#2f80ca;font-weight:inherit;padding:0 .05em}
.hero__lead{
  margin:0;max-width:36rem;font-family:var(--serif);font-size:clamp(1.1rem,1.45vw,1.3rem);line-height:1.6;color:#013674;text-wrap:pretty;
  animation:hero-in 1s .35s both cubic-bezier(.2,.8,.2,1);
}
.hero__lead strong{color:#013674}
.hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;animation:hero-in 1s .45s both cubic-bezier(.2,.8,.2,1)}
.hero .btn.primary.hero__go{
  background:#013674;color:#f5f6fa;border-color:transparent;box-shadow:0 10px 26px -10px rgb(1 54 116 / .7),inset 0 -3px 0 #e3a442;
}
.hero .btn.primary.hero__go:hover{background:#2f80ca;color:#f5f6fa}
.hero .hero__reset{color:#2f80ca;text-decoration:underline;text-underline-offset:3px}
.hero .hero__reset:hover{color:#013674;background:rgb(131 187 242 / .2)}
.hero__meta{margin:0;font-size:.95rem;color:rgb(1 54 116 / .76)}
.hero__meta:empty{display:none}
.hero__more{color:#2f80ca;font-weight:600;text-underline-offset:4px;animation:hero-in 1s .55s both cubic-bezier(.2,.8,.2,1)}
.hero__more:hover{color:#013674}
.hero :focus-visible{outline-color:#2f80ca}
@keyframes hero-in{from{opacity:0;transform:translateY(18px)}}

/* Cuatro preguntas como fichas de vidrio (decorativo). */
.hero__art{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;max-width:34rem;justify-self:center;width:100%}
.hero__tile{
  display:flex;flex-direction:column;justify-content:space-between;gap:1.5rem;min-height:10rem;padding:1.25rem 1.3rem;border-radius:18px;
  background:rgb(245 246 250 / .75);border:1px solid rgb(131 187 242 / .6);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  box-shadow:0 20px 50px -30px rgb(1 54 116 / .45);
  animation:tile-in 1s both cubic-bezier(.2,.8,.2,1);
}
.hero__tile:nth-child(1){animation-delay:.3s}
.hero__tile:nth-child(2){animation-delay:.42s;transform:translateY(1.5rem)}
.hero__tile:nth-child(3){animation-delay:.54s}
.hero__tile:nth-child(4){animation-delay:.66s;transform:translateY(1.5rem)}
.hero__num{
  font-family:var(--serif);font-weight:300;font-size:3.6rem;line-height:.85;color:#013674;align-self:flex-start;
  padding-bottom:.35rem;border-bottom:3px solid #e3a442;
}
.hero__tile-text{font-size:.95rem;font-weight:600;color:rgb(1 54 116 / .76);line-height:1.35}
@keyframes tile-in{from{opacity:0;translate:0 24px}}

/* Página principal: ingreso con código */
.code-card{
  display:flex;flex-direction:column;align-items:stretch;gap:1rem;width:100%;max-width:28rem;justify-self:center;
  padding:clamp(1.25rem,3vw,2rem);border-radius:18px;
  background:rgb(245 246 250 / .8);border:1px solid rgb(131 187 242 / .6);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  box-shadow:0 20px 50px -30px rgb(1 54 116 / .45);
  animation:tile-in 1s .3s both cubic-bezier(.2,.8,.2,1);
}
.code-card .hero__go{align-self:flex-start}
.code-card .field>label{color:#013674}
.code-card .hint{color:rgb(1 54 116 / .76)}
.code-input[type=text]{
  font-family:var(--serif);font-size:clamp(1.6rem,4vw,2.2rem);font-weight:600;text-align:center;text-transform:uppercase;
  letter-spacing:.3em;padding-left:1em;min-height:3.6rem;
}
.footer a{color:inherit}

/* Cómo funciona */
.howto{
  display:grid;gap:2rem clamp(2rem,5vw,5rem);padding:clamp(2.5rem,6vw,5rem) clamp(1.25rem,5vw,5rem);
  scroll-margin-top:var(--topbar-h);
}
.howto__intro{display:flex;flex-direction:column;gap:1rem}
.howto__title{font-family:var(--serif);font-size:clamp(1.9rem,3vw,2.6rem);font-weight:600;color:var(--navy);line-height:1.1}
.howto__note{margin:0;color:var(--muted);padding-left:1rem;border-left:3px solid var(--sky);max-width:34rem}
.howto-steps{list-style:none;padding:0;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(min(14rem,100%),1fr))}
.howto-steps li{
  display:flex;gap:.8rem;align-items:flex-start;padding:1.1rem 1.2rem;border-radius:16px;
  background:var(--card);border:1px solid var(--glass-line);box-shadow:var(--shadow-card);
}
.howto-steps p{margin:0}
.howto-steps__n{
  flex:none;display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;
  border:1.5px solid var(--navy);color:var(--navy);font-family:var(--serif);font-weight:600;
}
.howto-steps__title{font-weight:700;color:var(--navy)}
.howto-steps__text{color:var(--muted);font-size:.95rem;line-height:1.45}
.howto__aside{margin:0;color:var(--muted);max-width:48rem}
@media (min-width:64rem){
  .howto{grid-template-columns:minmax(0,1fr) minmax(0,2.2fr)}
  .howto__aside{grid-column:2}
}
@media (width < 64rem){
  .hero{grid-template-columns:minmax(0,1fr);min-height:auto}
  .hero__art{order:-1;max-width:28rem;justify-self:start}
  .hero__tile{min-height:7rem;gap:.75rem}
  .hero__num{font-size:2.6rem}
}
@media (width < 30rem){
  .hero__art{gap:.6rem}
  .hero__tile{padding:.9rem;min-height:6rem}
  .hero__tile:nth-child(2n){transform:translateY(.75rem)}
  .hero__tile-text{font-size:.85rem}
}

/* ======================================================================== cuestionario: consentimiento y datos */

.profile{
  display:grid;gap:clamp(1.5rem,4vw,4rem);align-items:start;
  padding:clamp(1.5rem,4vw,4rem) clamp(1rem,5vw,5rem);
}
@media (min-width:64rem){
  .profile{grid-template-columns:minmax(0,1fr) minmax(0,1.7fr)}
  .profile__intro{position:sticky;top:calc(var(--topbar-h) + 2rem)}
}
.profile__intro{display:flex;flex-direction:column;gap:1rem}
.profile__intro .kicker{margin:0}
.profile__intro .page-lead{margin:0}
.profile__form{
  background:var(--card);border:1px solid var(--glass-line);border-radius:16px;box-shadow:var(--shadow-card);
  padding:clamp(1.25rem,3vw,2.25rem);display:flex;flex-direction:column;gap:1.25rem;min-width:0;
}
.profile__form .form-grid{gap:1.5rem}
.profile__form .actions{margin-top:.5rem}

.stepper{list-style:none;padding:0;margin-top:.5rem;display:grid;gap:.1rem;counter-reset:paso}
.stepper li{
  counter-increment:paso;display:flex;align-items:center;gap:.75rem;padding:.55rem 0;color:var(--muted);font-weight:600;
}
.stepper li::before{
  content:counter(paso);flex:none;display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:50%;
  border:1.5px solid var(--line);background:var(--surface);color:var(--muted);font-family:var(--serif);font-weight:600;font-size:.95rem;
}
.stepper li.is-current{color:var(--navy)}
.stepper li.is-current::before{border-color:var(--amber);background:var(--amber-soft);color:var(--amber-ink)}
.stepper li.is-done::before{content:"✓";border-color:var(--azure);background:var(--azure);color:#f5f6fa;font-family:var(--sans)}

.consent-text{
  padding:1.25rem 1.4rem;border-radius:14px;background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface-3) 100%);
  border:1px solid var(--line-soft);
}
.consent-text p{font-family:var(--serif);font-size:1.07rem;line-height:1.7;max-width:var(--measure);text-wrap:pretty}
.consent-text p:last-child{margin-bottom:0}
.consent{
  display:flex;gap:.8rem;align-items:flex-start;padding:1rem 1.1rem;border-radius:12px;cursor:pointer;font-weight:600;
  background:var(--sky-soft);border:1px solid var(--line);
}
.consent:has(input:checked){border-color:var(--navy);box-shadow:inset 3px 0 0 var(--navy)}
.consent__box{margin-top:.15rem}

/* ======================================================================== cuestionario: pregunta */

.item{min-height:calc(100dvh - var(--topbar-h))}
.item__form{display:flex;flex-direction:column;min-height:calc(100dvh - var(--topbar-h))}
.doc-pane{
  background:
    radial-gradient(30rem 18rem at 4% 0%,rgb(227 164 66 / .12),transparent 70%),
    linear-gradient(115deg,var(--glass) 0%,var(--glass) 55%,rgb(131 187 242 / .12) 100%);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--glass-line);
  padding:clamp(1.5rem,3.5vw,3rem) clamp(1rem,5vw,5rem);
}
.doc-head--numbered{display:flex;align-items:flex-start;gap:clamp(1rem,2.5vw,2.25rem)}
.doc-numeral{
  flex:none;font-family:var(--serif);font-weight:300;font-size:clamp(3.8rem,7vw,6.5rem);line-height:.85;
  color:var(--navy);font-variant-numeric:lining-nums;letter-spacing:-.03em;padding-bottom:.45rem;border-bottom:4px solid var(--amber);
}
.doc-main{display:flex;flex-direction:column;gap:.9rem;min-width:0;flex:1}
.doc-kicker{margin:0;color:var(--azure);font-weight:650;font-size:.95rem}
.doc-title,.question-title{
  font-family:var(--serif);font-weight:600;color:var(--navy);
  font-size:clamp(1.55rem,2.6vw,2.35rem);line-height:1.22;letter-spacing:-.01em;max-width:42ch;text-wrap:pretty;
}
h2.question-title{font-size:clamp(1.3rem,2vw,1.7rem);margin-bottom:.5rem}
.qsteps{list-style:none;padding:0;display:flex;gap:6px;max-width:16rem}
.qsteps li{flex:1;height:5px;border-radius:5px;background:var(--line-soft)}
.qsteps li.done{background:var(--azure)}
.qsteps li.current{background:var(--amber)}
:root[data-contrast] .qsteps li{border:1px solid var(--ink)}
.voice-tools{display:flex;gap:.5rem;flex-wrap:wrap;margin:0}
.voice-tools .btn{background:var(--card)}
.eval-pane{
  flex:1;display:flex;flex-direction:column;gap:1rem;
  padding:clamp(1.25rem,3vw,2.5rem) clamp(1rem,5vw,5rem) 2.5rem;
}
.answer-box{
  background:var(--card);border:1px solid var(--glass-line);border-radius:18px;box-shadow:var(--shadow-card);
  padding:clamp(1rem,2.2vw,1.5rem);gap:.6rem;max-width:62rem;transition:border-color .2s,box-shadow .2s;
}
.answer-box:focus-within{border-color:var(--sky);box-shadow:var(--shadow-lift)}
.answer-box>label{font-size:.9rem;font-weight:700;color:var(--navy)}
.answer-box textarea{min-height:16rem;font-size:1.12rem;line-height:1.65;padding:.9rem 1rem;background:var(--surface)}
.answer-meta{display:flex;justify-content:space-between;gap:.5rem 1rem;flex-wrap:wrap;color:var(--muted);font-size:.9rem}
#char-count{font-variant-numeric:tabular-nums}
.dictation-status{
  margin:0;max-width:62rem;padding:.7rem 1rem;border-radius:12px;font-weight:600;font-size:.95rem;
  background:var(--sky-soft);color:var(--navy);box-shadow:inset 3px 0 0 var(--azure);
}
.dictation-status.listening::before{
  content:"";display:inline-block;width:.6rem;height:.6rem;margin-right:.6rem;border-radius:50%;background:var(--wine);vertical-align:.05em;
  animation:pulse 1.2s ease-in-out infinite;
}
@keyframes pulse{50%{opacity:.35}}
#dictation-note{max-width:62rem}
.item-nav{
  position:sticky;bottom:0;z-index:20;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1rem;
  padding:.75rem clamp(1rem,5vw,5rem);min-height:4.75rem;
  background:var(--glass);backdrop-filter:saturate(1.6) blur(22px);-webkit-backdrop-filter:saturate(1.6) blur(22px);
  border-top:1px solid var(--glass-line);box-shadow:0 -10px 30px -24px rgb(1 54 116 / .3);
}

/* ======================================================================== cuestionario: revisión y envío */

.summary{padding:clamp(1.5rem,4vw,3.5rem) clamp(1rem,5vw,5rem);display:flex;flex-direction:column;gap:2rem}
.summary__head{display:flex;flex-direction:column;gap:.4rem}
.summary__head .kicker{margin:0}
.summary__head .page-lead{margin:.4rem 0 0}
.summary__grid{display:grid;gap:2rem;align-items:start}
@media (min-width:72rem){
  .summary__grid{grid-template-columns:minmax(0,1.8fr) minmax(18rem,1fr)}
  .summary__side{position:sticky;top:calc(var(--topbar-h) + 1.5rem)}
}
.summary__list{display:flex;flex-direction:column;gap:2rem;min-width:0}
.summary-section__title{font-family:var(--serif);font-size:1.3rem;font-weight:600;color:var(--navy);margin-bottom:.75rem}
.send-card{
  background:var(--card);border:1px solid var(--glass-line);border-radius:16px;box-shadow:var(--shadow-card);
  padding:clamp(1.25rem,2.5vw,1.75rem);display:flex;flex-direction:column;gap:1rem;
}
.send-card__title{font-size:1.35rem}
.send-card__why{margin:0;font-size:.95rem;color:var(--muted)}
.send-card__secondary{display:flex;justify-content:center;padding-top:.9rem;border-top:1px solid var(--line-soft)}

.review-list{list-style:none;padding:0;display:grid;gap:1rem}
.review-item{
  background:var(--card);border:1px solid var(--glass-line);border-radius:16px;box-shadow:var(--shadow-card);
  padding:1.2rem 1.35rem;min-width:0;
}
.review-item h3{font-family:var(--serif);font-size:1.15rem;font-weight:600;color:var(--navy);margin-bottom:.35rem}
.review-item>p{white-space:pre-wrap;margin-bottom:.75rem}
.review-item>p.muted{white-space:normal;font-size:.95rem}
.review-item>p:not(.muted){font-family:var(--serif);font-size:1.07rem;line-height:1.65;padding:.1rem 0 .1rem 1rem;border-left:3px solid var(--sky)}
.data-list{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:0 1.5rem;margin:0}
.data-list dt,.data-list dd{padding:.55rem 0;border-bottom:1px dashed var(--line)}
.data-list dt{color:var(--muted)}
.data-list dd{margin:0;font-weight:650;color:var(--ink);overflow-wrap:anywhere}
.data-list dt:last-of-type,.data-list dd:last-of-type{border-bottom:0}
.sheet .data-list+.actions{margin-top:1rem}

/* ======================================================================== cuestionario: enviado y no disponible */

.done{
  display:grid;align-content:center;min-height:calc(100dvh - var(--topbar-h));
  padding:clamp(2rem,6vw,5.5rem) clamp(1.25rem,5vw,5rem);
}
.done__main{display:flex;flex-direction:column;gap:1.25rem;max-width:46rem}
.done__main p{margin:0}
.done__seal{width:4.5rem;height:4.5rem;fill:none;stroke-linecap:round;stroke-linejoin:round}
.done__seal circle{stroke:var(--sky);stroke-width:2.5}
.done__seal path{stroke:var(--navy);stroke-width:4;stroke-dasharray:48;stroke-dashoffset:48;animation:draw .6s .15s ease-out forwards}
.done__seal--off circle{stroke:var(--wine-soft)}
.done__seal--off path{stroke:var(--wine);stroke-dasharray:none;stroke-dashoffset:0;animation:none}
@keyframes draw{to{stroke-dashoffset:0}}
.done__title{font-family:var(--serif);font-weight:600;color:var(--navy);font-size:clamp(2.3rem,4.4vw,4rem);line-height:1.05;letter-spacing:-.015em}
.done__lead{font-family:var(--serif);font-size:clamp(1.15rem,1.5vw,1.3rem);line-height:1.6}
.done__lead:empty{display:none}

/* ======================================================================== panel: ingreso */

.adm-login{
  display:grid;align-items:center;gap:2rem 4rem;min-height:calc(100dvh - var(--topbar-h) - 8rem);
  padding:clamp(0rem,3vw,3rem) clamp(0rem,3vw,3rem);
}
@media (min-width:64rem){.adm-login{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}}
.adm-login__intro{
  position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;gap:1rem;
  padding:clamp(1.75rem,4vw,3.5rem);border-radius:24px;color:#013674;
  border:1px solid rgb(131 187 242 / .5);box-shadow:var(--shadow-card),inset 4px 0 0 #2f80ca;
  background:
    radial-gradient(40rem 26rem at 95% 0%,rgb(131 187 242 / .45) 0%,transparent 60%),
    radial-gradient(26rem 20rem at 0% 100%,rgb(227 164 66 / .18),transparent 65%),
    #f5f6fa;
}
.adm-login__intro::before{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background-image:linear-gradient(rgb(131 187 242 / .22) 1px,transparent 1px),linear-gradient(90deg,rgb(131 187 242 / .22) 1px,transparent 1px);
  background-size:28px 28px;
  mask-image:radial-gradient(90% 90% at 80% 20%,#000 20%,transparent 80%);-webkit-mask-image:radial-gradient(90% 90% at 80% 20%,#000 20%,transparent 80%);
}
.adm-login__mark{width:3.2rem;height:3.2rem;font-size:1.3rem;border-radius:12px}
.adm-login__title{font-family:var(--serif);font-size:clamp(2.2rem,4.5vw,3.8rem);font-weight:600;color:var(--navy);line-height:1.05;letter-spacing:-.015em}
.adm-login__lead{font-family:var(--serif);font-size:1.2rem;line-height:1.6;color:var(--ink);margin:0;max-width:34rem}
.adm-login__card{
  display:flex;flex-direction:column;gap:1.1rem;padding:clamp(1.5rem,3vw,2.25rem);border-radius:20px;
  background:var(--card);border:1px solid var(--glass-line);box-shadow:var(--shadow-lift),inset 0 4px 0 var(--amber);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
}
:root[data-contrast] .adm-login__intro{background:var(--surface);color:var(--ink);border:2px solid var(--ink);box-shadow:none}
:root[data-contrast] .adm-login__intro::before{display:none}
:root[data-contrast] .adm-login__title,:root[data-contrast] .adm-login__lead{color:var(--ink)}
.adm-login__card .error-summary{margin-bottom:0}
.adm-login__card .actions{margin-top:.25rem}
.adm-login__card .actions .btn.primary{width:100%;min-height:3.25rem;font-size:1.05rem}

/* ======================================================================== panel: tablas, estados y cifras */

.table-wrap{
  position:relative;
  overflow-x:auto;border-radius:14px;border:1px solid var(--glass-line);background:var(--surface);box-shadow:var(--shadow-card);
}
table{border-collapse:separate;border-spacing:0;width:100%;font-size:.95rem}
table.wide{min-width:34rem}
caption{text-align:left;padding:.9rem 1rem .5rem;font-family:var(--serif);font-weight:600;font-size:1.1rem;color:var(--navy)}
th,td{text-align:left;padding:.7rem 1rem;border-bottom:1px solid var(--line-soft);vertical-align:middle}
thead th{background:var(--sky-soft);font-size:.8rem;font-weight:700;color:var(--navy);white-space:nowrap;letter-spacing:.01em}
tbody th{font-weight:650;color:var(--ink)}
tbody tr:last-child>*{border-bottom:0}
tbody tr:nth-child(even)>*{background:var(--surface-2)}
tbody tr:hover>*{background:var(--sky-soft)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tbody th a{white-space:nowrap;font-weight:650}
:root[data-contrast] .table-wrap{border:2px solid var(--ink)}
:root[data-contrast] thead th{border-bottom:2px solid var(--ink)}

.badge{
  display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .7rem;border-radius:99px;white-space:nowrap;
  font-size:.82rem;font-weight:700;background:var(--neutral-soft);color:var(--muted);
}
.badge::before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:currentColor;opacity:.8}
.badge.borrador{background:var(--amber-soft);color:var(--amber-ink)}
.badge.publicada{background:var(--sky-soft);color:var(--navy)}
.badge.desactivada{background:var(--wine-soft);color:var(--wine)}
:root[data-contrast] .badge{border:2px solid currentColor}

.meter{display:grid;grid-template-columns:minmax(4rem,1fr) 3.2rem;gap:.75rem;align-items:center;min-width:9rem;height:auto;background:none;border-radius:0;overflow:visible}
.meter-bar{height:.7rem;border-radius:99px;overflow:hidden;background:var(--line-soft)}
.meter-bar span{display:block;height:100%;background:var(--azure);border-radius:0 4px 4px 0}
.meter>span{text-align:right;font-weight:700;color:var(--navy);font-variant-numeric:tabular-nums}
.topbar__progress .meter{display:block;height:6px;min-width:0;background:var(--bar-line);border-radius:99px;overflow:hidden}
:root[data-contrast] .meter-bar{border:1px solid var(--ink)}

.stat-row{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(min(13rem,100%),1fr));margin:0}
.stat-row.sheet{background:none;border:0;box-shadow:none;padding:0;border-radius:0}
.stat-row>div{
  --tone:var(--navy);
  display:flex;flex-direction:column;gap:.2rem;padding:1.1rem 1.25rem;border-radius:16px;
  background:var(--card);border:1px solid var(--glass-line);box-shadow:var(--shadow-card),inset 0 3px 0 var(--tone);
}
.stat-row>div:nth-child(2){--tone:var(--azure)}
.stat-row>div:nth-child(3){--tone:var(--amber)}
.stat-row dt{font-size:.9rem;font-weight:650;color:var(--muted)}
.stat-row dd{margin:0;font-family:var(--serif);font-size:2.3rem;font-weight:600;color:var(--navy);line-height:1.1;font-variant-numeric:lining-nums tabular-nums}

.link-box{display:flex;gap:.5rem;align-items:stretch;flex-wrap:wrap}
.link-box input{flex:1 1 16rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92rem}
.link-box input.access-code{flex:0 1 12rem;font-family:var(--serif);font-size:1.5rem;font-weight:600;letter-spacing:.25em;text-align:center}
.empty-state{
  padding:clamp(1.5rem,3vw,2.25rem);border-radius:18px;border:1px solid var(--sky);
  background:linear-gradient(135deg,var(--sky-soft) 0%,var(--card) 70%);box-shadow:inset 4px 0 0 var(--amber);display:flex;flex-direction:column;align-items:flex-start;gap:.75rem;
}
.empty-state h2{font-size:1.35rem}
.empty-state p{margin:0;color:var(--muted);max-width:var(--measure)}
.empty-state .field{width:100%;max-width:40rem}
p.empty-state{color:var(--muted)}
.temp-password{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.05rem;font-weight:700;
  background:var(--amber-soft);color:var(--amber-ink);padding:.1rem .45rem;border-radius:6px;border:1px solid var(--amber);
}

/* ======================================================================== panel: editor de encuestas */

.sheet.form-grid>h2,.sheet.form-grid>h2+p{margin:0}
.sheet h3{margin-bottom:.6rem;font-size:.95rem;color:var(--muted)}
.preview{list-style:none;counter-reset:q;padding:0;display:grid;gap:.6rem}
.preview li{
  counter-increment:q;display:grid;grid-template-columns:2.1rem minmax(0,1fr);gap:.85rem;align-items:start;
  padding:.8rem 1rem;border-radius:14px;background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface-3) 100%);border:1px solid var(--line-soft);
  font-family:var(--serif);font-size:1.05rem;line-height:1.5;
}
.preview li::before{
  content:counter(q);display:grid;place-items:center;width:2.1rem;height:2.1rem;border-radius:50%;
  border:1.5px solid var(--line);background:var(--surface);color:var(--navy);font-weight:600;font-size:1rem;
}
.category-list{display:grid;gap:1rem}
.category-card{
  border-radius:14px;padding:1.1rem 1.2rem;display:grid;gap:1rem;
  background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface-3) 100%);border:1px solid var(--line-soft);
}
.category-card legend{
  float:left;width:100%;margin-bottom:.1rem;font-family:var(--serif);font-weight:600;font-size:1.1rem;color:var(--navy);
}
.category-card legend+*{clear:both}
.expected-pair{display:grid;gap:.35rem}
.expected-pair>label{font-weight:650}
.expected-pair .question-ref{margin:0;color:var(--muted);font-family:var(--serif);font-size:1rem;line-height:1.5}
.question-nav{
  grid-column:auto;justify-self:start;margin:0 0 .5rem;padding:.3rem;border-radius:12px;flex-wrap:wrap;
  background:var(--glass);border:1px solid var(--glass-line);box-shadow:var(--shadow-card);
}

/* ======================================================================== panel: respuestas */

.response-item{
  background:var(--card);border:1px solid var(--glass-line);border-radius:16px;box-shadow:var(--shadow-card);
  transition:box-shadow .2s,border-color .2s;
}
.response-item+.response-item{margin-top:.75rem}
.response-item:hover{box-shadow:var(--shadow-lift)}
.response-item[open]{border-color:var(--sky)}
.response-item>summary{
  list-style:none;cursor:pointer;padding:1rem 1.25rem;display:flex;justify-content:space-between;gap:.75rem 1rem;flex-wrap:wrap;align-items:center;min-height:3rem;border-radius:16px;
}
.response-item>summary::-webkit-details-marker{display:none}
.response-item>summary::before{
  content:"+";flex:none;display:grid;place-items:center;width:1.6rem;height:1.6rem;border-radius:50%;
  border:1.5px solid var(--azure);color:var(--azure);font-weight:700;font-size:1rem;line-height:1;
}
.response-item[open]>summary::before{content:"−";background:var(--azure);color:#f5f6fa}
.response-item>summary:hover{background:var(--surface-2)}
.response-item>summary .who-line{flex:1;min-width:12rem;line-height:1.35}
.response-item>summary strong{color:var(--navy)}
.response-body{padding:0 1.25rem 1.25rem;border-top:1px solid var(--line-soft)}
.response-body>.data-list{max-width:40rem}
.answer-pair{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1rem;margin-top:1.5rem}
.answer-pair h3{grid-column:1/-1;margin:0;font-family:var(--serif);font-size:1.08rem;font-weight:600;color:var(--navy);line-height:1.4}
.answer-pair .given,.answer-pair .expected{padding:.9rem 1.05rem;border-radius:14px;white-space:pre-wrap;font-family:var(--serif);line-height:1.6}
.answer-pair .given{background:var(--surface);border:1px solid var(--line)}
.answer-pair .expected{background:linear-gradient(180deg,var(--surface-2) 0%,var(--surface-3) 100%);border:1px dashed var(--line-hover)}
.answer-pair .tag{
  display:block;margin-bottom:.35rem;white-space:normal;font-family:var(--sans);
  font-size:.8rem;font-weight:700;color:var(--navy);letter-spacing:.01em;
}
.answer-pair .expected .tag{color:var(--muted)}
.concept-list{display:flex;gap:.4rem;flex-wrap:wrap;list-style:none;padding:0;margin:.5rem 0 0}
.concept-list li{padding:.2rem .7rem;border-radius:99px;font-size:.85rem;font-weight:650;background:var(--neutral-soft);color:var(--muted)}
.concept-list li.presente{background:var(--sky-soft);color:var(--navy)}
.concept-list li.parcial{background:var(--amber-soft);color:var(--amber-ink)}
:root[data-contrast] .concept-list li{border:2px solid currentColor}
:root[data-contrast] .concept-list li.parcial{border-style:dashed}
.review-box{margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid var(--line);display:grid;gap:1rem}
.check-grid{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}
.check-grid .choice{align-items:flex-start}
.check-grid .choice input{margin-top:.2rem}
.evidence{display:block;color:var(--muted);font-size:.88rem;font-weight:400;margin-top:.15rem}

/* ======================================================================== panel: clasificación SOLO */

.solo-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(16rem,24rem);gap:1.5rem;align-items:start}
.solo-rubric{position:sticky;top:calc(var(--topbar-h) + 1rem);max-height:calc(100dvh - var(--topbar-h) - 2rem);overflow-y:auto;overscroll-behavior:contain}
.solo-rubric h2{font-size:1.2rem;margin-bottom:.5rem}
.rubric-list{margin:0;display:grid}
.rubric-list dt{font-weight:700;color:var(--navy);padding-top:.7rem}
.rubric-list dd{margin:.15rem 0 0;padding-bottom:.7rem;border-bottom:1px solid var(--line-soft);font-size:.95rem;color:var(--muted)}
.rubric-list dd:last-of-type{border-bottom:0}
.rubric-example{
  display:block;margin-top:.45rem;padding:.35rem 0 .35rem .75rem;border-left:3px solid var(--amber);
  font-family:var(--serif);font-style:italic;color:var(--ink);
}
.solo-rubric>.hint{margin-top:.75rem}
.solo-list{display:grid;gap:1.1rem}
.solo-card{display:grid;gap:1rem;transition:box-shadow .2s,border-color .2s}
.solo-card:hover{box-shadow:var(--shadow-lift)}
.solo-card:focus-within{border-color:var(--sky)}
.solo-card h3{font-family:var(--serif);font-size:1.15rem;font-weight:600;color:var(--navy)}
.solo-card[data-coded="si"]{border-color:var(--sky);box-shadow:var(--shadow-card),inset 4px 0 0 var(--azure)}
.solo-answer{
  margin:0;padding:.25rem 0 .25rem 1.25rem;border-left:3px solid var(--sky);white-space:pre-wrap;
  font-family:var(--serif);font-size:1.12rem;line-height:1.65;color:var(--ink);
}
.solo-choices{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}
.solo-line{grid-column:1/-1;margin:0;font-weight:650;font-size:.92rem;color:var(--azure)}
@media (width < 60rem){
  .solo-layout{grid-template-columns:1fr}
  .solo-rubric{position:static;max-height:none;order:-1}
}

/* ======================================================================== panel: filtros, resumen y administración */

.block{display:block;margin-top:.25rem}
.filters{display:flex;flex-wrap:wrap;gap:.75rem 1rem;align-items:flex-end;margin-bottom:1rem}
.filters .field{flex:0 1 14rem}
.filters .field:first-child{flex:1 1 16rem}
.filters__count{margin:0 0 .6rem;flex-basis:100%}
.stat-row>div:nth-child(4){--tone:var(--sky)}
.stat-row>div>p{margin:.15rem 0 0}

.chart-wrap{position:relative}
.week-chart{display:block;overflow:visible}
.week-chart .chart-bar{fill:var(--azure)}
.week-chart .chart-zero{fill:var(--line)}
.week-chart .chart-hit{fill:transparent}
.week-chart .chart-mark{outline:none;cursor:default}
.week-chart .chart-mark:hover .chart-bar,.week-chart .chart-mark:focus .chart-bar{fill:var(--navy)}
.week-chart .chart-mark:focus-visible .chart-hit{stroke:var(--amber);stroke-width:2}
.week-chart .chart-baseline{stroke:var(--line);stroke-width:1}
.week-chart .chart-axis{fill:var(--muted);font-size:12px;font-family:var(--sans)}
.week-chart .chart-value{fill:var(--ink);font-size:12px;font-weight:700;font-family:var(--sans)}
.chart-tip{
  position:absolute;top:0;transform:translate(-50%,-100%);pointer-events:none;white-space:nowrap;
  padding:.35rem .6rem;border-radius:8px;background:var(--card);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow-card);font-size:.85rem;font-weight:650;
}
.chart-table{margin-top:.75rem}
.chart-table>summary{cursor:pointer;color:var(--azure);font-weight:650;font-size:.92rem}
.chart-table .table-wrap{margin-top:.75rem}
:root[data-contrast] .week-chart .chart-bar{fill:var(--ink)}

.danger-zone{box-shadow:var(--shadow-card),inset 3px 0 0 var(--wine)}
.danger-zone p{margin:0}
.exclude-box{margin-top:1rem}
tr.row-warn>*{background:var(--wine-soft)}

/* ======================================================================== pantallas pequeñas, animación e impresión */

@media (width < 48rem){
  .topbar__progress .meter{height:3px;border-radius:0;background:transparent}
}
@media (width < 45rem){
  .answer-pair{grid-template-columns:1fr}
  .actions .btn{flex:1 1 auto}
  .actions.split{flex-direction:column-reverse;align-items:stretch}
  .item-nav .btn{flex:1 1 auto}
  .data-list{grid-template-columns:1fr}
  .data-list dt{padding-bottom:0;border-bottom:0}
  .reading-panel{left:1rem;right:1rem;width:auto}
  .reading-toggle{font-size:0;gap:0;padding-inline:.7rem}
  .reading-toggle::before{font-size:1rem}
  .doc-head--numbered{flex-direction:column;gap:.75rem}
  .doc-numeral{font-size:3.2rem}
}
@media (prefers-reduced-motion:no-preference){
  .view.entering{animation:enter .22s ease-out}
  @keyframes enter{from{opacity:0;transform:translateY(6px)}}
}
@media print{
  body{background:#ffffff;color:#000000}
  .topbar,.footer,.no-print,.actions,.item-nav,.reading-panel{display:none!important}
  .sheet,.table-wrap,.response-item,.review-item{box-shadow:none;border-color:#999999}
}
td>.btn,.cell-actions>.btn{white-space:nowrap}
.stat-row+.data-list{margin-top:1.75rem}
.link-box input[type=datetime-local]{flex:0 1 16rem}
