:root {
  --bg:#f2f8f7; --surface:#ffffff; --text:#11302f; --muted:#52706e; --line:#d2e4e2;
  --accent:#0b7a76; --accent-soft:#d9f0ed; --on-accent:#ffffff;
  --sec:#1e5a7a; --sec-soft:#e0edf4; --sand:#f3e9d8;
  --bad:#b8492f; --bad-soft:#fbe6df; --on-bad:#ffffff;
  --warn:#9a6a12; --warn-soft:#fbf0d6;
  --sans:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --serif:'Source Serif 4',Georgia,'Times New Roman',serif;
  --mono:ui-monospace,Menlo,Consolas,monospace;
  --radius:10px;
  --touch:44px;
  --read:760px;
  --shadow-dialog:0 8px 30px rgba(17,48,47,.08);
  --toast-ok:#4fd1c5; --toast-bad:#f29a83; --toast-info:#7cb8dc;
  color-scheme:light;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg:#0a191b; --surface:#0f2427; --text:#dbeeed; --muted:#8db0ad; --line:#1d3a3d;
    --accent:#4fd1c5; --accent-soft:#113a3a; --on-accent:#0a191b;
    --sec:#7cb8dc; --sec-soft:#132f40; --sand:#3a3122;
    --bad:#f29a83; --bad-soft:#3a221c; --on-bad:#0a191b;
    --warn:#e6b65a; --warn-soft:#3a2d14;
    --shadow-dialog:0 8px 30px rgba(0,0,0,.4);
  --toast-ok:#0b7a76; --toast-bad:#b8492f; --toast-info:#1e5a7a;
    color-scheme:dark;
  }
}

:root[data-theme="dark"] {
  --bg:#0a191b; --surface:#0f2427; --text:#dbeeed; --muted:#8db0ad; --line:#1d3a3d;
  --accent:#4fd1c5; --accent-soft:#113a3a; --on-accent:#0a191b;
  --sec:#7cb8dc; --sec-soft:#132f40; --sand:#3a3122;
  --bad:#f29a83; --bad-soft:#3a221c; --on-bad:#0a191b;
  --warn:#e6b65a; --warn-soft:#3a2d14;
  --shadow-dialog:0 8px 30px rgba(0,0,0,.4);
  --toast-ok:#0b7a76; --toast-bad:#b8492f; --toast-info:#1e5a7a;
  color-scheme:dark;
}

*, *::before, *::after { box-sizing:border-box; }

body {
  margin:0;
  font-family:var(--sans);
  font-size:15px;
  line-height:1.5;
  background:var(--bg);
  color:var(--text);
  -webkit-text-size-adjust:100%;
}

:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
a { color:var(--accent); }
a:hover { color:var(--sec); }
img, svg { max-width:100%; }

@keyframes op-spin { to { transform:rotate(360deg); } }
@keyframes op-shimmer { 0% { opacity:.5; } 50% { opacity:1; } 100% { opacity:.5; } }
@keyframes op-toast-in { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:none; } }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration:.01ms !important; transition-duration:.01ms !important; }
}

.page { max-width:var(--read); margin:0 auto; padding:28px 16px 48px; }
.page--wide { max-width:1200px; }
.stack { display:flex; flex-direction:column; gap:14px; }
.stack--sm { gap:8px; }
.stack--lg { gap:24px; }
.stack--xl { gap:40px; }
.stack--center { align-items:center; }
.row { display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.row--sm { gap:8px; }
.row--between { justify-content:space-between; }
.row--end { justify-content:flex-end; }
.row--nowrap { flex-wrap:nowrap; }
.row--bottom { align-items:flex-end; }
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)); gap:18px; }
.grid--sm { grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr)); gap:18px 28px; align-items:start; }
.grid--fill { grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr)); gap:14px; }
.span-all { grid-column:1 / -1; }

.h1 { font-family:var(--serif); font-weight:700; font-size:28px; line-height:1.2; margin:0; text-wrap:pretty; }
.h2 { font-family:var(--serif); font-weight:600; font-size:22px; line-height:1.3; margin:0; }
.h3 { font-family:var(--serif); font-weight:600; font-size:20px; line-height:1.3; margin:0 0 14px; }
.serif { font-family:var(--serif); }
.lead { margin:0; color:var(--muted); text-wrap:pretty; }
.muted { color:var(--muted); }
.small { font-size:13px; }
.xsmall { font-size:12px; }
.strong { font-weight:600; }
.num { font-variant-numeric:tabular-nums; }
.score { font-size:32px; font-weight:600; font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
.mono { font-family:var(--mono); }
.m0 { margin:0; }
.ok { color:var(--accent); }
.ko { color:var(--bad); }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

.btn {
  font:500 15px var(--sans);
  min-height:var(--touch);
  padding:0 18px;
  border-radius:var(--radius);
  border:1px solid var(--line);
  background:var(--surface);
  color:var(--text);
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  text-decoration:none;
  white-space:nowrap;
}
.btn:hover { color:var(--text); border-color:var(--muted); }
.btn--primary { border-color:var(--accent); background:var(--accent); color:var(--on-accent); }
.btn--primary:hover { color:var(--on-accent); border-color:var(--accent); filter:brightness(1.06); }
.btn--danger { border-color:var(--bad); background:var(--bad); color:var(--on-bad); }
.btn--danger:hover { color:var(--on-bad); border-color:var(--bad); filter:brightness(1.06); }
.btn--ghost { padding:0 14px; border-color:transparent; background:transparent; color:var(--accent); }
.btn--ghost:hover { border-color:transparent; color:var(--sec); }
.btn--outline-bad { border-color:var(--bad); color:var(--bad); }
.btn--outline-bad:hover { border-color:var(--bad); color:var(--bad); background:var(--bad-soft); }
.btn--outline-accent { border-color:var(--accent); color:var(--accent); }
.btn--outline-accent:hover { border-color:var(--accent); color:var(--accent); background:var(--accent-soft); }
.btn--pill { border-radius:999px; }
.btn--on { border-color:var(--accent); background:var(--accent-soft); color:var(--accent); }
.btn--on:hover { border-color:var(--accent); color:var(--accent); }
.btn--icon { width:var(--touch); height:var(--touch); padding:0; font-size:18px; }
.btn--icon.btn--pill { font-size:15px; }
.btn--repaso { padding:0 16px; white-space:nowrap; }
.btn--sm { font-size:14px; padding:0 14px; }
.btn--sm.btn--ghost { padding:0 12px; }
.btn--block { width:100%; }
.btn--big { font:600 17px var(--sans); min-height:52px; border-radius:12px; }
.btn--plain { border:0; background:transparent; }
.btn:disabled, .btn[aria-disabled="true"] {
  border-color:var(--line); background:var(--surface); color:var(--muted);
  opacity:.6; cursor:not-allowed; filter:none;
}
.btn.is-loading { cursor:progress; }
.btn.is-loading:disabled { border-color:var(--accent); background:var(--accent); color:var(--on-accent); opacity:1; }

.spinner {
  width:16px; height:16px; flex:none;
  border-radius:50%;
  border:2px solid currentColor;
  border-right-color:transparent;
  display:inline-block;
  animation:op-spin .9s linear infinite;
}
.spinner--sm { width:10px; height:10px; }

.pdf-link {
  font:500 15px var(--sans);
  min-height:var(--touch);
  display:inline-flex; align-items:center; gap:6px;
  padding:0 14px;
  border-radius:999px;
  border:1px solid var(--line);
  background:var(--sec-soft);
  color:var(--sec);
  text-decoration:none;
}
.pdf-link:hover { color:var(--sec); border-color:var(--sec); }
.pdf-ref { color:var(--sec); text-decoration:none; font-weight:500; }
.pdf-ref:hover { color:var(--accent); text-decoration:underline; }
.link { color:var(--accent); font-weight:500; text-decoration:none; min-height:var(--touch); display:inline-flex; align-items:center; }
.link:hover { color:var(--sec); }
.link--sec { color:var(--sec); }
.link--inline { display:inline; min-height:0; }
.saved { font-size:13px; color:var(--muted); display:inline-flex; align-items:center; gap:6px; }
.saved::before { content:"✓"; color:var(--accent); }

.chip {
  font:500 12.5px var(--sans);
  padding:4px 10px;
  border-radius:999px;
  border:1px solid transparent;
  background:var(--surface);
  color:var(--text);
  display:inline-flex; align-items:center; gap:6px;
  width:max-content;
  max-width:100%;
}
.chip--sand { background:var(--sand); color:var(--text); }
.chip--sec { background:var(--sec-soft); color:var(--sec); }
.chip--accent { background:var(--accent-soft); color:var(--accent); }
.chip--warn { background:var(--warn-soft); color:var(--warn); }
.chip--bad { background:var(--bad-soft); color:var(--bad); }
.chip--outline { border-color:var(--line); background:transparent; color:var(--muted); }
.chip--surface { border-color:var(--line); background:var(--surface); color:var(--text); }
.chip--tag { border-radius:6px; border-color:var(--line); background:var(--bg); color:var(--muted); }
.chip--slim { padding:2px 10px; }
.chip--sec .spinner { border-color:var(--sec); border-right-color:transparent; }

.badge {
  font:600 12px var(--sans);
  min-width:20px; height:20px;
  padding:0 6px;
  border-radius:999px;
  background:var(--accent);
  color:var(--on-accent);
  display:inline-flex; align-items:center; justify-content:center;
  font-variant-numeric:tabular-nums;
}
.badge--bad { background:var(--bad); color:var(--on-bad); }

.choice {
  font:500 14px var(--sans);
  min-height:40px;
  padding:0 12px;
  border-radius:999px;
  border:1px solid var(--line);
  background:var(--surface);
  color:var(--text);
  cursor:pointer;
}
.choice[aria-pressed="true"], .choice.is-on { border-color:var(--accent); background:var(--accent-soft); color:var(--accent); }

.toggle { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:var(--touch); cursor:pointer; position:relative; }
.toggle__input { position:absolute; opacity:0; width:1px; height:1px; margin:0; }
.toggle__track { width:44px; height:26px; border-radius:999px; background:var(--line); position:relative; flex:none; transition:background .15s; }
.toggle__track::after { content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:var(--surface); transition:left .15s; }
.toggle__input:checked + .toggle__track { background:var(--accent); }
.toggle__input:checked + .toggle__track::after { left:21px; background:var(--on-accent); }
.toggle__input:focus-visible + .toggle__track { outline:2px solid var(--accent); outline-offset:2px; }
.toggle__input:disabled + .toggle__track { opacity:.5; }

.check { display:flex; align-items:center; gap:12px; min-height:var(--touch); cursor:pointer; position:relative; }
.check__input { position:absolute; opacity:0; width:1px; height:1px; margin:0; }
.check__box {
  width:22px; height:22px; flex:none;
  border-radius:6px;
  border:1.5px solid var(--line);
  background:var(--surface);
  color:var(--on-accent);
  display:inline-flex; align-items:center; justify-content:center;
  font-size:14px; font-weight:600;
}
.check__input:checked + .check__box { background:var(--accent); border-color:var(--accent); }
.check__input:checked + .check__box::after { content:"✓"; }
.check__input:focus-visible + .check__box { outline:2px solid var(--accent); outline-offset:2px; }

.field { display:flex; flex-direction:column; gap:6px; }
.field__label { font-size:13px; color:var(--muted); }
.input, .textarea, .select {
  font:15px var(--sans);
  min-height:var(--touch);
  width:100%;
  padding:0 14px;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:var(--surface);
  color:var(--text);
}
.textarea { min-height:64px; padding:10px 14px; font-size:14px; resize:vertical; }
.input::placeholder, .textarea::placeholder { color:var(--muted); }
.search { display:flex; align-items:center; gap:8px; min-height:var(--touch); padding:0 14px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--muted); }
.search:focus-within { outline:2px solid var(--accent); outline-offset:2px; }
.search__input { flex:1; min-width:0; border:0; background:transparent; font:15px var(--sans); color:var(--text); min-height:42px; outline:none; }
.search__input::placeholder { color:var(--muted); }

.stepper { display:inline-flex; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; width:max-content; }
.stepper__btn { font:500 18px var(--sans); width:var(--touch); height:var(--touch); border:0; background:transparent; color:var(--text); cursor:pointer; }
.stepper__btn:disabled { color:var(--muted); opacity:.5; cursor:not-allowed; }
.stepper__val {
  width:48px; border:0; border-left:1px solid var(--line); border-right:1px solid var(--line);
  display:inline-flex; align-items:center; justify-content:center; text-align:center;
  font:500 15px var(--sans); font-variant-numeric:tabular-nums;
  background:transparent; color:var(--text);
  -moz-appearance:textfield;
}
.stepper__val::-webkit-outer-spin-button, .stepper__val::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }

.segmented { align-self:flex-start; display:inline-flex; flex-wrap:wrap; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); overflow:hidden; max-width:100%; }
.segmented__item { position:relative; display:inline-flex; }
.segmented__input { position:absolute; opacity:0; width:1px; height:1px; margin:0; }
.segmented__label { min-height:var(--touch); padding:0 16px; display:inline-flex; align-items:center; font-weight:500; color:var(--muted); cursor:pointer; }
.segmented__item + .segmented__item .segmented__label { border-left:1px solid var(--line); }
.segmented__input:checked + .segmented__label { background:var(--accent-soft); color:var(--accent); }
.segmented__input:focus-visible + .segmented__label { outline:2px solid var(--accent); outline-offset:-2px; }

.progress { display:flex; flex-direction:column; gap:6px; }
.progress__head { display:flex; justify-content:space-between; gap:8px; font-size:13px; }
.progress__label { color:var(--muted); }
.progress__value { color:var(--accent); font-weight:500; }
.progress__bar { height:6px; border-radius:999px; background:var(--line); overflow:hidden; }
.progress__fill { width:0; height:100%; background:var(--accent); transition:width .3s; }
.progress--warn .progress__value { color:var(--warn); }
.progress--warn .progress__fill { background:var(--warn); }
.progress--bad .progress__value { color:var(--bad); }
.progress--bad .progress__fill { background:var(--bad); }

.summary {
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
  padding:10px 14px;
  border:1px solid var(--line); border-radius:var(--radius);
  background:var(--surface);
  font-variant-numeric:tabular-nums;
}

.card { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:22px 24px; }
.card--flush { padding:0; overflow:hidden; }
.card--note { padding:14px 16px; font-size:13.5px; }

.q-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:22px 24px; display:flex; flex-direction:column; gap:16px; }
.q-card__meta { display:flex; justify-content:space-between; align-items:center; gap:12px; font-size:13px; color:var(--muted); }
.q-card__verdict { font-weight:500; }
.q-card__verdict--ok { color:var(--accent); }
.q-card__verdict--ko { color:var(--bad); }
.q-card__stem { margin:0; font-family:var(--serif); font-weight:600; font-size:19px; line-height:1.4; text-wrap:pretty; }
.q-card__opts { display:flex; flex-direction:column; gap:8px; margin:0; padding:0; list-style:none; }
.q-card__why { margin:0; }
.q-card__why-label { color:var(--muted); }
.q-card__source { font-size:13px; color:var(--muted); }
.q-card__foot { display:flex; flex-wrap:wrap; gap:8px; align-items:center; justify-content:space-between; }
.q-card__actions { display:flex; gap:8px; flex-wrap:wrap; }
.q-card__note { margin:0; font-size:13px; color:var(--muted); }

.q-opt {
  font:15px var(--sans);
  text-align:left;
  width:100%;
  display:flex; gap:12px; align-items:flex-start;
  padding:12px 14px;
  min-height:var(--touch);
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--surface);
  color:var(--text);
}
button.q-opt { cursor:pointer; }
button.q-opt:hover { border-color:var(--muted); }
.q-opt__key { font-weight:600; color:var(--muted); width:18px; flex:none; }
.q-opt__note { color:var(--muted); font-size:13px; }
.q-opt--selected { border-color:var(--sec); background:var(--sec-soft); }
.q-opt--selected .q-opt__key { color:var(--sec); }
.q-opt--dim { color:var(--muted); background:transparent; }
.q-opt--correct { border-color:var(--accent); background:var(--accent-soft); color:var(--text); }
.q-opt--correct .q-opt__key { color:var(--accent); }
.q-opt--correct .q-opt__text { font-weight:500; }
.q-opt--wrong { border-color:var(--bad); background:var(--bad-soft); color:var(--text); }
.q-opt--wrong .q-opt__key { color:var(--bad); }
.q-opt--dashed { border-style:dashed; color:var(--muted); background:transparent; }

.q-card--banded { padding:0; gap:0; overflow:hidden; }
.q-card__band { padding:12px 24px; background:var(--bg); border-bottom:1px solid var(--line); font-size:14px; color:var(--muted); }
.q-card__band--warn { padding:14px 24px; background:var(--warn-soft); color:var(--text); font-size:15px; display:flex; flex-direction:column; gap:10px; }
.q-card__band-title { margin:0; color:var(--warn); font-weight:500; }
.q-card__body { padding:22px 24px; display:flex; flex-direction:column; gap:16px; }
.q-card--descartada { opacity:.9; }
.q-card--descartada .q-card__stem { color:var(--muted); }
.q-card--frozen { gap:10px; }
.q-card--frozen .q-card__stem, .q-card--compact .q-card__stem { font-size:17px; }
.q-card--gone { background:var(--bg); border-style:dashed; gap:6px; color:var(--muted); }
.q-card__gone-title { margin:0; font-weight:500; color:var(--text); }
.q-card--repaso { padding:0; gap:0; overflow:hidden; max-width:390px; }
.q-card--repaso .q-card__body { padding:18px 20px; gap:14px; }
.q-card--repaso .q-card__stem { font-size:18px; }
.q-card--repaso .q-card__meta { font-size:12.5px; }
.q-card__next { padding:12px 20px 16px; border-top:1px solid var(--line); background:var(--bg); display:flex; flex-direction:column; gap:6px; align-items:center; }
.q-card__feedback { margin:0; font-size:14.5px; }

.checks { margin:0; padding:0; list-style:none; display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)); gap:4px 16px; font-size:13.5px; color:var(--text); }
.checks__item::before { margin-right:6px; }
.checks__item--ok::before { content:"✓"; color:var(--accent); }
.checks__item--ko::before { content:"✗"; color:var(--bad); }

.band { padding:12px 16px; border-radius:var(--radius); display:flex; gap:10px; align-items:center; justify-content:space-between; flex-wrap:wrap; color:var(--text); }
.band--warn { background:var(--warn-soft); justify-content:flex-start; }
.band--warn .band__title { color:var(--warn); font-weight:500; }
.band--info { background:var(--sec-soft); }
.band--info .link { color:var(--sec); min-height:auto; }
.band--sand { background:var(--sand); }
.band--bad { background:var(--bad-soft); color:var(--bad); font-weight:500; }
.band--action { background:var(--surface); border:1px solid var(--line); gap:12px; }
.band--sticky { position:sticky; bottom:16px; z-index:10; }
.band__actions { display:flex; gap:4px; }
.band__close { font:16px var(--sans); width:var(--touch); height:var(--touch); border:0; background:transparent; color:var(--muted); cursor:pointer; border-radius:var(--radius); }

.toast-stack {
  position:fixed; left:50%; bottom:24px; transform:translateX(-50%);
  width:min(420px, calc(100% - 32px));
  display:flex; flex-direction:column; gap:10px;
  z-index:1000;
  pointer-events:none;
}
.has-tabbar .toast-stack { bottom:96px; }
.toast {
  padding:12px 16px; border-radius:var(--radius);
  background:var(--text); color:var(--bg);
  display:flex; gap:12px; align-items:center; justify-content:space-between;
  pointer-events:auto;
  animation:op-toast-in .2s ease-out;
}
.toast--static { animation:none; }
.toast__msg { display:flex; gap:12px; align-items:center; flex:1; min-width:0; }
.toast__icon { flex:none; }
.toast__icon--ok { color:var(--toast-ok); }
.toast__icon--bad { color:var(--toast-bad); }
.toast__icon--info { color:var(--toast-info); }
.toast__action { font:500 14px var(--sans); min-height:var(--touch); padding:0 10px; border:0; background:transparent; color:var(--toast-ok); cursor:pointer; flex:none; border-radius:8px; }
.dialog {
  background:var(--surface); color:var(--text);
  border:1px solid var(--line); border-radius:14px;
  padding:22px 24px;
  display:flex; flex-direction:column; gap:12px;
  box-shadow:var(--shadow-dialog);
  max-width:min(440px, calc(100% - 32px));
  width:100%;
}
dialog.dialog { margin:auto; }
dialog.dialog:not([open]) { display:none; }
dialog.dialog::backdrop { background:rgba(10,25,27,.45); }
.dialog--inline { max-width:none; align-self:start; }
.dialog__title { margin:0; font-family:var(--serif); font-weight:600; font-size:19px; }
.dialog__text { margin:0; color:var(--muted); }
.dialog__text--sm { font-size:14px; }
.dialog__actions { display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; }
.dialog__actions .btn { padding:0 16px; }

.empty { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:28px 24px; display:flex; flex-direction:column; align-items:center; text-align:center; gap:14px; }
.empty--bare { background:transparent; border:0; }
.empty__img { width:120px; height:120px; display:block; }
.empty__title { margin:0; font-weight:500; }
.empty__title--big { font-family:var(--serif); font-weight:600; font-size:22px; }
.empty__text { margin:0; color:var(--muted); font-size:14px; }
.empty__school { display:flex; align-items:flex-end; }
.empty__school img { display:block; }
.empty__school img:nth-child(1) { width:64px; height:64px; }
.empty__school img:nth-child(2) { width:88px; height:88px; }
.empty__school img:nth-child(3) { width:56px; height:56px; }

.skeleton { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:22px 24px; display:flex; flex-direction:column; gap:12px; }
.sk { height:14px; border-radius:6px; background:var(--line); animation:op-shimmer 1.4s ease-in-out infinite; }
.sk--meta { width:40%; }
.sk--stem { height:20px; width:90%; }
.sk--opt { height:44px; border-radius:8px; }
.sk--text { width:70%; }

.illus { display:flex; flex-direction:column; gap:8px; }
.illus__img { width:96px; height:96px; display:block; margin:0 auto; }
.illus__caption { font-size:13px; }

.app-icon { border-radius:12px; background:var(--accent); display:flex; align-items:center; justify-content:center; width:48px; height:48px; flex:none; }
.app-icon img { width:83%; height:83%; display:block; }
.app-icon--96 { width:96px; height:96px; border-radius:24px; }
.app-icon--192 { width:192px; height:192px; border-radius:50%; }
.app-icon--192 img { width:78%; height:78%; }
.app-icon--splash { width:72px; height:72px; border-radius:18px; }
.splash { width:180px; height:360px; border-radius:24px; background:var(--bg); border:1px solid var(--line); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; }
.splash__name { font-family:var(--serif); font-weight:700; font-size:20px; }

.brand { display:inline-flex; align-items:center; gap:8px; font-family:var(--serif); font-weight:700; font-size:19px; color:var(--text); text-decoration:none; }
.brand:hover { color:var(--text); }
.brand__mark { width:24px; height:24px; border-radius:7px; background:var(--accent); display:inline-flex; align-items:center; justify-content:center; flex:none; }
.brand__mark img { width:20px; height:20px; display:block; }
.brand--lg { font-size:28px; gap:10px; }
.brand--lg .brand__mark { width:34px; height:34px; border-radius:9px; }
.brand--lg .brand__mark img { width:28px; height:28px; }

.topnav { display:flex; align-items:center; gap:20px; min-height:56px; padding:0 28px; background:var(--surface); border-bottom:1px solid var(--line); font-family:var(--sans); }
.topnav--boxed { border:1px solid var(--line); border-radius:var(--radius); padding:0 20px; }
.topnav__links { display:flex; gap:4px; margin-left:auto; min-width:0; overflow-x:auto; }
.topnav .brand { flex:none; }
.topnav__link { white-space:nowrap; font:500 15px var(--sans); min-height:var(--touch); display:inline-flex; align-items:center; gap:6px; padding:0 12px; border-radius:8px; color:var(--muted); text-decoration:none; }
.topnav__link:hover { color:var(--text); }
.topnav__link.is-active { color:var(--text); box-shadow:inset 0 -2px 0 var(--accent); }
.topnav__link--icono { padding:0; width:var(--touch); justify-content:center; }
.topnav__link--icono svg { width:22px; height:22px; }

.tabbar {
  display:grid; grid-auto-flow:column; grid-auto-columns:1fr; align-items:end;
  padding:8px 6px calc(14px + env(safe-area-inset-bottom, 0px));
  background:var(--surface); border-top:1px solid var(--line);
  font-family:var(--sans);
}
.tabbar--boxed { border:1px solid var(--line); border-radius:var(--radius); width:390px; max-width:100%; padding-bottom:14px; }
.tabbar__item { display:flex; flex-direction:column; align-items:center; gap:4px; min-height:48px; justify-content:center; font:500 11.5px var(--sans); color:var(--muted); text-decoration:none; position:relative; }
.tabbar__item:hover { color:var(--text); }
.tabbar__item.is-active { color:var(--accent); font-weight:600; }
.tabbar__icon { width:24px; height:24px; display:inline-flex; align-items:center; justify-content:center; }
.tabbar__icon svg { width:22px; height:22px; display:block; }
.tabbar__icon--repaso { width:28px; height:28px; border-radius:50%; background:var(--accent); color:var(--on-accent); font-size:13px; }
.tabbar__icon--repaso svg { width:14px; height:14px; }
.tabbar__badge { position:absolute; top:-4px; right:calc(50% - 34px); font:600 11px var(--sans); min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:var(--bad); color:var(--on-bad); display:inline-flex; align-items:center; justify-content:center; font-variant-numeric:tabular-nums; }

.opos-nav .tabbar { position:fixed; left:0; right:0; bottom:0; z-index:900; display:none; }
@media (max-width: 720px) {
  .opos-nav .topnav { display:none; }
  .opos-nav .tabbar { display:grid; }
  .has-tabbar { padding-bottom:88px; }
  .opos-nav-brand { display:flex; align-items:center; min-height:56px; padding:0 16px; background:var(--surface); border-bottom:1px solid var(--line); }
}
@media (min-width: 721px) {
  .opos-nav-brand { display:none; }
}

.swatch { display:flex; flex-direction:column; gap:6px; font:11.5px var(--mono); color:var(--muted); min-width:0; }
.swatch__chip { height:56px; border-radius:8px; border:1px solid var(--line); }
.swatches { display:grid; grid-template-columns:repeat(auto-fill,minmax(84px,1fr)); gap:10px; }

.code { margin:0; background:#11302f; color:#dbeeed; border-radius:12px; padding:18px 20px; font:12.5px/1.6 var(--mono); overflow:auto; max-width:100%; }

.attribution { font-size:12px; color:var(--muted); }
.attribution a { color:var(--muted); }

.admin-layout { display:flex; flex:1; align-items:stretch; min-height:calc(100vh - 57px); }
.admin-nav { flex:0 0 220px; padding:24px 12px; border-right:1px solid var(--line); display:flex; flex-direction:column; gap:2px; }
.admin-nav__link { font:500 14.5px var(--sans); min-height:40px; display:flex; align-items:center; padding:0 12px; border-radius:8px; text-decoration:none; color:var(--text); white-space:nowrap; }
.admin-nav__link:hover { color:var(--accent); }
.admin-nav__link.is-active { color:var(--accent); background:var(--accent-soft); font-weight:600; }
.admin-nav__link--old { color:var(--muted); margin-top:14px; }
.admin-main { flex:1 1 400px; min-width:0; max-width:900px; padding:28px 24px 32px; display:flex; flex-direction:column; gap:18px; }
.admin-main > section, .admin-stack { display:flex; flex-direction:column; gap:18px; }
[x-cloak] { display:none !important; }
.admin-title { margin:0; font-family:var(--serif); font-weight:600; font-size:26px; line-height:1.2; }
.admin-title--old { color:var(--muted); }

.stat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr)); gap:12px; }
.stat-card { text-decoration:none; color:inherit; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:18px 20px; display:flex; flex-direction:column; gap:4px; min-width:0; }
.stat-card:hover { color:inherit; border-color:var(--muted); }
.stat-card__label { font-size:13px; color:var(--muted); }
.stat-card__value { font-size:30px; font-weight:600; font-variant-numeric:tabular-nums; line-height:1.1; }
.stat-card__value--warn { color:var(--warn); }
.stat-card__hint { font-size:13px; color:var(--muted); overflow-wrap:anywhere; }

.task-line { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:14px 18px; display:flex; gap:12px; align-items:center; justify-content:space-between; flex-wrap:wrap; }
.task-line__text { display:flex; gap:10px; align-items:center; min-width:0; }
.task-line .spinner { color:var(--accent); width:14px; height:14px; }

.tasks { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.tasks__item { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:14px 18px; display:flex; flex-direction:column; gap:8px; --tarea:var(--accent); }
.tasks__item--sec { --tarea:var(--sec); }
.tasks__head { display:flex; justify-content:space-between; gap:6px 10px; flex-wrap:wrap; }
.tasks__label { display:flex; gap:10px; align-items:flex-start; font-weight:500; min-width:0; overflow-wrap:anywhere; }
.tasks__label .spinner { width:14px; height:14px; margin-top:4px; color:var(--tarea); }
.tasks__meta { font-size:13px; color:var(--muted); font-variant-numeric:tabular-nums; }
.tasks__bar { height:4px; border-radius:999px; background:var(--line); overflow:hidden; }
.tasks__fill { height:100%; background:var(--tarea); transition:width .3s; }
.tasks__subtitle { margin:8px 0 0; font-family:var(--serif); font-weight:600; font-size:18px; }
.task-error { padding:14px 18px; border-radius:var(--radius); background:var(--bad-soft); display:flex; flex-direction:column; gap:6px; }
.task-error__row { display:flex; gap:12px; align-items:center; justify-content:space-between; flex-wrap:wrap; }
.task-error__text { flex:1 1 260px; min-width:0; overflow-wrap:anywhere; }
.task-error__title { color:var(--bad); font-weight:500; }
.task-error__context { color:var(--text); }
.task-error__retry { border-color:var(--bad); background:var(--surface); color:var(--bad); }
.task-error__detail { font-size:13px; color:var(--muted); }
.task-error__detail summary { cursor:pointer; min-height:32px; display:inline-flex; align-items:center; }
.task-error__detail code { display:block; margin-top:4px; white-space:pre-wrap; overflow-wrap:anywhere; font-size:12.5px; }
.done-list { list-style:none; margin:0; padding:0; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); display:flex; flex-direction:column; font-size:14.5px; }
.done-list__item { display:flex; justify-content:space-between; gap:4px 12px; padding:12px 18px; flex-wrap:wrap; }
.done-list__item + .done-list__item { border-top:1px solid var(--line); }
.done-list__text { min-width:0; overflow-wrap:anywhere; }
.done-list__ok { color:var(--accent); margin-right:4px; }
.done-list__link { color:inherit; text-decoration:none; }
.done-list__link:hover { color:var(--accent); text-decoration:underline; }
.done-list__when { color:var(--muted); font-size:13px; font-variant-numeric:tabular-nums; }

.settings { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); display:flex; flex-direction:column; max-width:560px; }
.settings__row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 20px; flex-wrap:wrap; }
.settings__row + .settings__row { border-top:1px solid var(--line); }
.settings__row--col { flex-direction:column; align-items:stretch; gap:6px; }
.settings__text { display:flex; flex-direction:column; flex:1 1 220px; min-width:0; }
.settings__hint { font-size:13px; color:var(--muted); }
.settings__row--col .settings__text { flex:none; }
.settings__frase { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.settings__par { display:inline-flex; align-items:center; gap:8px; }
.input--num { width:76px; padding:0 8px; text-align:center; font-variant-numeric:tabular-nums; }
.settings--ancho { max-width:none; }
.settings__titulo { padding:10px 20px 0; font-size:13px; color:var(--muted); }
.settings__titulo--acciones { display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.settings__titulo + .settings__row { border-top:0; }
.settings__row--toggle { cursor:pointer; position:relative; }
.settings__nombre { font-weight:500; overflow-wrap:anywhere; }
.settings__controles { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.settings__mini { display:inline-flex; align-items:center; gap:2px; }
.settings__mini-btn { font:inherit; font-size:13px; color:var(--muted); background:transparent; border:0; padding:4px 6px; min-height:32px; cursor:pointer; border-radius:6px; }
.settings__mini-btn:hover:not(:disabled) { color:var(--accent); }
.settings__mini-btn:disabled { opacity:.45; cursor:default; }
.repaso-ley { padding-top:12px; padding-bottom:12px; }
.psico-bloque { display:flex; flex-direction:column; }
.psico-bloque + .psico-bloque { border-top:1px solid var(--line); margin-top:4px; }
.psico-bloque > .settings__titulo { font-weight:600; color:var(--text); padding-top:12px; }
.repaso-ley--off { color:var(--muted); }
.repaso-ley__cuenta { font-size:13px; color:var(--muted); font-variant-numeric:tabular-nums; }
.repaso-ley__revisar { color:var(--accent); text-decoration:none; }
.repaso-ley__revisar:hover { text-decoration:underline; }
.repaso-ley__switch { display:inline-flex; align-items:center; gap:10px; font-size:13px; color:var(--muted); cursor:pointer; position:relative; min-height:var(--touch); }

.fold { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); }
.fold__summary { padding:14px 20px; cursor:pointer; font-weight:500; min-height:var(--touch); display:flex; align-items:center; justify-content:space-between; gap:10px; list-style:none; }
.fold__summary::-webkit-details-marker { display:none; }
.fold__toggle { color:var(--muted); font-size:13px; font-weight:400; }
.fold__toggle::before { content:"mostrar"; }
.fold[open] .fold__toggle::before { content:"ocultar"; }
.fold__body { padding:0 20px 18px; display:flex; flex-direction:column; gap:12px; border-top:1px solid var(--line); }
.fold__text { margin:0; font-size:14px; color:var(--muted); text-wrap:pretty; }
.fold__body > .fold__text:first-child { margin-top:14px; }
.fold__row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 0; flex-wrap:wrap; }
.fold__row + .fold__row { border-top:1px solid var(--line); }
.fold__row > span { min-width:0; overflow-wrap:anywhere; }

.select--sm { min-height:40px; width:auto; max-width:100%; padding:0 10px; font-size:14px; }
.link--back { font-size:13.5px; color:var(--muted); min-height:40px; align-self:flex-start; }

.subtabs { display:flex; gap:4px; border-bottom:1px solid var(--line); overflow-x:auto; scrollbar-width:none; }
.subtabs::-webkit-scrollbar { display:none; }
.subtabs__tab { font:500 15px var(--sans); min-height:var(--touch); display:inline-flex; align-items:center; padding:0 12px; border:0; background:transparent; color:var(--muted); cursor:pointer; white-space:nowrap; flex:none; }
.subtabs__tab:hover { color:var(--text); }
.subtabs__tab.is-active { color:var(--text); box-shadow:inset 0 -2px 0 var(--accent); }
.subtabs__tab--minor { font-size:13.5px; font-weight:400; margin-left:auto; }

.modelos { display:flex; flex-direction:column; gap:12px; }
.modelos__title { font-size:15px; }
.modelos__fila { display:flex; flex-wrap:wrap; gap:10px 18px; align-items:flex-end; }
.modelos__modelo { flex:1 1 260px; min-width:0; }
.modelos__modelo .select--sm { width:100%; }
.instr { display:flex; gap:18px; flex-wrap:wrap; align-items:flex-start; }
.editor { flex:1 1 380px; min-width:0; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); display:flex; flex-direction:column; }
.editor__head { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:12px 18px; border-bottom:1px solid var(--line); flex-wrap:wrap; min-height:49px; }
.editor__text { display:block; width:100%; min-height:380px; border:0; resize:vertical; padding:18px 20px; background:transparent; color:var(--text); font:15px/1.7 var(--sans); }
.editor__text:focus-visible { outline:2px solid var(--accent); outline-offset:-2px; }
.editor__status { display:inline-flex; align-items:center; gap:12px; }
.editor__error { margin:0 18px 12px; padding:10px 12px; border-radius:8px; background:var(--bad-soft); color:var(--bad); font-size:14px; }
.editor__foot { display:flex; gap:8px; padding:12px 18px; border-top:1px solid var(--line); flex-wrap:wrap; align-items:center; }
.editor__probar { margin-left:auto; padding:0 6px; }
.editor__note { margin:0; padding:0 18px 12px; font-size:13px; color:var(--muted); }

.versions { flex:0 1 260px; min-width:220px; display:flex; flex-direction:column; gap:4px; }
.versions__label { font-size:13px; color:var(--muted); padding:0 4px 6px; }
.versions__item { display:flex; gap:12px; padding:10px 12px; border-radius:8px; }
.versions__item--draft { background:var(--surface); border:1px solid var(--line); }
.versions__item--active { background:var(--accent-soft); }
.versions__dot { width:10px; height:10px; border-radius:50%; border:2px solid var(--line); margin-top:6px; flex:none; }
.versions__dot--draft { border-color:var(--muted); }
.versions__dot--active { border-color:var(--accent); background:var(--accent); }
.versions__body { display:flex; flex-direction:column; min-width:0; }
.versions__on { color:var(--accent); }
.versions__meta { font-size:13px; color:var(--muted); }
.versions__actions { display:flex; gap:14px; flex-wrap:wrap; }
.versions__link { font:500 13.5px var(--sans); color:var(--accent); min-height:40px; padding:0; cursor:pointer; }
.versions__link:hover { color:var(--sec); }
.versions__link--muted { color:var(--muted); font-weight:400; }

.diff { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; scroll-margin-top:16px; }
.diff__head { padding:10px 18px; border-bottom:1px solid var(--line); display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.diff__pick { display:inline-flex; min-width:0; }
.diff__close { margin-left:auto; }
.diff__same { margin:0; padding:16px 18px; color:var(--muted); font-size:14px; }
.diff__cols { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)); font-size:14px; line-height:1.6; }
.diff__col { padding:16px 18px; display:flex; flex-direction:column; gap:8px; min-width:0; }
.diff__col + .diff__col { border-left:1px solid var(--line); }
.diff__label { font-size:12.5px; color:var(--muted); }
.diff__line { margin:0; overflow-wrap:anywhere; white-space:pre-wrap; }
.diff__line--quitada { padding:2px 6px; margin-left:-6px; border-radius:4px; background:var(--bad-soft); text-decoration:line-through; text-decoration-color:var(--bad); }
.diff__line--nueva { padding:2px 6px; margin-left:-6px; border-radius:4px; background:var(--accent-soft); }
.diff__line--hueco { color:var(--muted); font-size:12.5px; font-style:italic; }
.diff__mark { padding:0 2px; border-radius:4px; }
.diff__mark--del { background:var(--bad-soft); text-decoration:line-through; text-decoration-color:var(--bad); }
.diff__mark--add { background:var(--accent-soft); }

.probar { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:18px 20px; display:flex; flex-wrap:wrap; gap:14px 18px; align-items:flex-end; }
.probar__tema { flex:1 1 220px; min-width:0; }
.probar__progreso { display:block; }
.probar__aviso { color:var(--sec); font-weight:500; }
.probar__fill { background:var(--sec); }
.probar__progreso .progress__bar { background:var(--surface); height:4px; }
.probar__cols { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr)); gap:18px; }
.probar__col { display:flex; flex-direction:column; gap:10px; min-width:0; }
.probar__col-head { display:flex; justify-content:space-between; align-items:baseline; gap:8px; flex-wrap:wrap; }
.probar__col-title { margin:0; font-family:var(--serif); font-weight:600; font-size:18px; }

.mini-q { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; display:flex; flex-direction:column; gap:10px; min-width:0; }
.mini-q__stem { margin:0; font-family:var(--serif); font-weight:600; font-size:16.5px; line-height:1.4; overflow-wrap:anywhere; }
.mini-q__opts { margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:5px; font-size:14px; color:var(--muted); }
.mini-q__opts li { display:flex; gap:6px; overflow-wrap:anywhere; }
.mini-q__key { flex:none; min-width:1.2em; }
.mini-q__key::after { content:" ·"; }
.mini-q__opt--ok { color:var(--text); }
.mini-q__opt--ok .mini-q__key { color:var(--accent); }
.mini-q__opt--ok .mini-q__key::after { content:""; }
.mini-q__checks { margin:0; padding:10px 12px; list-style:none; display:flex; flex-direction:column; gap:2px; font-size:13px; background:var(--bg); border-radius:8px; }
.mini-q__checks li::before { margin-right:6px; }
.mini-q__check--ok::before { content:"✓"; color:var(--accent); }
.mini-q__check--ko::before { content:"✗"; color:var(--bad); }
.mini-q__check--warn::before { content:"?"; color:var(--warn); font-weight:600; }
.mini-q__src { font-size:12.5px; color:var(--muted); }

.rules { list-style:none; margin:0; padding:0; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); display:flex; flex-direction:column; }
.rules > li + li { border-top:1px solid var(--line); }
.rules__row { display:flex; align-items:center; gap:14px; padding:12px 18px; min-height:56px; cursor:pointer; position:relative; }
.rules__row--off { color:var(--muted); }
.rules__text { flex:1; min-width:0; }
.rules__count { font-size:13px; color:var(--muted); font-variant-numeric:tabular-nums; flex:none; }
.rules__row .toggle__input:focus-visible + .toggle__track { outline:2px solid var(--accent); outline-offset:2px; }

.menu { position:relative; display:inline-flex; }
.menu__list { position:absolute; top:calc(100% + 6px); left:0; z-index:20; min-width:200px; margin:0; padding:6px; list-style:none; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-dialog); display:flex; flex-direction:column; }
.menu__item { width:100%; text-align:left; font:14px var(--sans); min-height:40px; padding:0 12px; border:0; border-radius:8px; background:transparent; color:var(--text); cursor:pointer; }
.menu__item:hover { background:var(--bg); }
.menu__item.is-active { color:var(--accent); font-weight:500; }
.dialog--wide { max-width:min(560px, calc(100% - 32px)); max-height:calc(100dvh - 32px); overflow:auto; }

.estilo-filtros { display:flex; flex-direction:column; gap:10px; }
.estilo-filtros__fila { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.estilo-filtros__fila .btn--pill { min-height:40px; }
.estilo-filtros__nuevo { margin-left:auto; }
.estilo-filtros__tema { max-width:260px; }
.estilo-filtros__buscar { flex:1 1 200px; min-height:40px; }
.estilo-filtros__buscar .search__input { min-height:38px; font-size:14px; }
.estilo-filtros__limpiar { min-height:32px; padding:0 4px; }
.estilo-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr)); gap:12px; align-items:start; }
.estilo-card { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; display:flex; flex-direction:column; gap:10px; min-width:0; }
.estilo-card--off { opacity:.75; }
.estilo-card__head { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.estilo-card__tipo { font-weight:600; }
.estilo-card__tipo--si { color:var(--accent); }
.estilo-card__tipo--no { color:var(--bad); }
.estilo-card__origen { color:var(--text); }
.estilo-card__switch { margin-left:auto; display:inline-flex; align-items:center; min-height:var(--touch); cursor:pointer; position:relative; }
.estilo-card__switch .toggle__input:focus-visible + .toggle__track { outline:2px solid var(--accent); outline-offset:2px; }
.estilo-card__stem { margin:0; font-family:var(--serif); font-weight:600; font-size:16px; line-height:1.4; overflow-wrap:anywhere; }
.estilo-card__cuerpo { display:flex; flex-direction:column; gap:10px; min-width:0; }
.estilo-card__ver { align-self:flex-start; font:500 13.5px var(--sans); padding:0; min-height:28px; border:0; background:transparent; color:var(--sec); cursor:pointer; }
.estilo-card__ver:hover { color:var(--accent); }
.estilo-card__nota { margin:0; font-size:13.5px; color:var(--muted); overflow-wrap:anywhere; }
.estilo-card__porque { color:var(--bad); font-weight:500; }
.estilo-card__pie { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.estilo-card__tema { font-size:12.5px; color:var(--muted); }
.estilo-card__acciones { margin-left:auto; display:inline-flex; gap:2px; }
.estilo-card__acciones .btn { min-height:36px; padding:0 8px; font-size:13.5px; }
.estilo-card__borrar { color:var(--bad); }
.estilo-card__borrar:hover { color:var(--bad); }
.estilo-card__edit { display:flex; flex-direction:column; gap:10px; }
.estilo-card__edit .segmented__label { min-height:38px; padding:0 12px; font-size:14px; }
.estilo-error { margin:0; padding:8px 12px; border-radius:8px; background:var(--bad-soft); color:var(--bad); font-size:14px; }
.estilo-prev { display:flex; flex-direction:column; gap:12px; padding:18px 20px; }
.estilo-prev__title { margin:0; font-family:var(--serif); font-weight:600; font-size:18px; }
.estilo-prev__pick { display:flex; flex-wrap:wrap; gap:12px; }
.estilo-prev__ley { flex:1 1 260px; min-width:0; }
.estilo-prev__q { flex:1 1 220px; min-width:0; }
.estilo-prev__lista { display:flex; flex-direction:column; gap:6px; max-height:360px; overflow:auto; }
.estilo-prev__pasaje { text-align:left; display:flex; flex-direction:column; gap:2px; padding:10px 12px; border:1px solid var(--line); border-radius:8px; background:var(--bg); color:var(--text); cursor:pointer; font:14px/1.45 var(--sans); }
.estilo-prev__pasaje:hover { border-color:var(--accent); }
.estilo-prev__art { font-weight:500; font-size:13px; color:var(--sec); }
.estilo-prev__snip { color:var(--muted); overflow-wrap:anywhere; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.estilo-prev__res { gap:12px; }
.estilo-prev__texto { padding:12px 14px; border:1px solid var(--line); border-radius:var(--radius); font:14px/1.6 Georgia,serif; color:var(--text); min-height:64px; max-height:220px; overflow:auto; white-space:pre-wrap; overflow-wrap:anywhere; }
.estilo-prev__grupos { display:flex; flex-direction:column; gap:12px; }
.estilo-prev__grupo { display:flex; flex-direction:column; gap:6px; font-size:14px; }
.estilo-prev__linea { margin:0; }
.estilo-prev__linea .estilo-card__tipo { font-weight:500; }
.estilo-prev__item { display:flex; flex-direction:column; gap:6px; }
.estilo-prev__toggle { align-self:flex-start; text-align:left; font:14px var(--sans); min-height:32px; padding:0; border:0; background:transparent; color:var(--text); cursor:pointer; overflow-wrap:anywhere; }
.estilo-prev__toggle:hover { color:var(--accent); }
.estilo-nuevo { display:flex; flex-direction:column; gap:12px; }
.estilo-nuevo__opciones { margin:0; padding:0; border:0; display:flex; flex-direction:column; gap:8px; min-width:0; }
.estilo-nuevo__opciones legend { padding:0; margin-bottom:6px; }
.estilo-nuevo__opcion { display:flex; align-items:center; gap:8px; }
.estilo-nuevo__radio { width:20px; height:20px; accent-color:var(--accent); flex:none; margin:0; cursor:pointer; }
.estilo-nuevo__letra { font-weight:500; color:var(--muted); width:1.2em; flex:none; }
.estilo-nuevo__opcion .input { flex:1; min-width:0; }

.metricas-cabecera { display:flex; flex-wrap:wrap; gap:12px 18px; align-items:center; justify-content:space-between; }
.metricas-cabecera .lead { flex:1 1 260px; }
.segmented--sm .segmented__label { min-height:38px; padding:0 12px; font-size:14px; }
.metricas-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr)); gap:14px; align-items:start; }
.metrica { position:relative; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:18px 20px; display:flex; flex-direction:column; gap:12px; min-width:0; }
.metrica__head { display:flex; flex-direction:column; gap:2px; }
.metrica__titulo { margin:0; font-size:15px; font-weight:600; }
.metrica__frase { margin:0; font-size:13.5px; color:var(--muted); text-wrap:pretty; }
.metrica__lienzo { position:relative; height:180px; min-width:0; }
.metrica__nota { margin:0; font-size:13px; color:var(--muted); }
.metrica__vacio { min-height:120px; display:flex; align-items:center; justify-content:center; text-align:center; padding:16px; border:1px dashed var(--line); border-radius:8px; font-size:13.5px; color:var(--muted); text-wrap:pretty; }
.metrica__datos { overflow-x:auto; }
.metrica__tabla { width:100%; border-collapse:collapse; font-size:13px; font-variant-numeric:tabular-nums; }
.metrica__tabla th, .metrica__tabla td { text-align:left; padding:4px 8px 4px 0; border-bottom:1px solid var(--line); }
.metrica__tabla thead th { color:var(--muted); font-weight:500; }
.metrica__tabla tbody th { font-weight:400; }
.metricas-bloque { display:flex; flex-direction:column; gap:2px; margin-top:6px; }
.metricas-bloque__titulo { margin:0; font-family:var(--serif); font-weight:600; font-size:19px; line-height:1.3; }
.metricas-bloque__frase { margin:0; font-size:13.5px; color:var(--muted); text-wrap:pretty; }
.dificiles { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; counter-reset:dificil; }
.dificiles__item { counter-increment:dificil; border-bottom:1px solid var(--line); }
.dificiles__item:last-child { border-bottom:0; }
.dificiles__enlace { display:grid; grid-template-columns:22px 1fr; column-gap:6px; padding:8px 0; color:var(--text); text-decoration:none; min-height:var(--touch); }
.dificiles__enlace::before { content:counter(dificil); grid-row:span 2; color:var(--muted); font-size:13px; font-variant-numeric:tabular-nums; padding-top:1px; }
.dificiles__enlace:hover .dificiles__texto { color:var(--accent); text-decoration:underline; }
.dificiles__texto { font-size:14px; line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; overflow-wrap:anywhere; }
.dificiles__meta { font-size:12.5px; color:var(--muted); font-variant-numeric:tabular-nums; }
.dificiles__pct--dificil { color:var(--bad); font-weight:500; }
.cobertura { display:flex; flex-direction:column; gap:14px; }
.cobertura__temas { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.cobertura__tema { display:grid; grid-template-columns:64px 1fr auto; align-items:center; gap:10px; font-size:13px; }
.cobertura__nombre { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cobertura__barra { display:block; }
.cobertura__barra .progress__fill { display:block; }
.cobertura__cifra { color:var(--muted); font-variant-numeric:tabular-nums; min-width:52px; text-align:right; }

.rev-filtros { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.rev-filtros__lista { max-height:min(360px, 60vh); overflow-y:auto; min-width:240px; }
.rev-filtros__vacio { color:var(--muted); cursor:default; display:flex; align-items:center; }
.rev-filtros__buscar { flex:1 1 200px; min-height:40px; }
.rev-filtros--avanzados { margin-top:-8px; padding:10px; border:1px dashed var(--line); border-radius:var(--radius); }
.rev-temas { width:min(320px, calc(100vw - 32px)); gap:6px; }
.rev-temas__rejilla { display:grid; grid-template-columns:repeat(6, 1fr); gap:4px; }
.rev-temas__num { width:auto; text-align:center; padding:0; min-height:40px; }
.rev-temas__num--largo { grid-column:1 / -1; text-align:left; padding:0 12px; }
.rev-progreso { display:flex; align-items:center; gap:12px 16px; padding:10px 14px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); flex-wrap:wrap; }
.rev-progreso__texto { font-variant-numeric:tabular-nums; }
.rev-progreso__texto strong { font-weight:600; }
.rev-progreso__barra { flex:1 1 120px; max-width:220px; }
.rev-progreso__acciones { display:flex; gap:4px; margin-left:auto; }
.rev-progreso__repaso { flex-basis:100%; display:flex; align-items:center; justify-content:space-between; gap:4px 12px; flex-wrap:wrap; padding-top:8px; border-top:1px solid var(--line); }
.rev-progreso__marcar { display:flex; gap:4px; flex-wrap:wrap; }
.rev-progreso__en-repaso { color:var(--accent); }
.rev-progreso__no { color:var(--muted); }
.rev-seleccion { position:sticky; top:8px; z-index:15; display:flex; align-items:center; gap:8px; padding:8px 8px 8px 16px; border-radius:var(--radius); background:var(--text); color:var(--bg); flex-wrap:wrap; }
.rev-seleccion__n { font-weight:500; flex:1 1 auto; }
.rev-seleccion__btn { background:transparent; color:var(--bg); border-color:var(--muted); }
.rev-seleccion__btn:hover { background:transparent; color:var(--bg); border-color:var(--bg); }
.rev-seleccion__btn--accent, .rev-seleccion__btn--accent:hover { color:var(--accent-soft); border-color:var(--accent); }
.rev-seleccion__btn--bad, .rev-seleccion__btn--bad:hover { color:var(--bad-soft); border-color:var(--bad); }
.rev-seleccion__cerrar { width:40px; height:40px; font-size:15px; border-color:transparent; }
.rev-lista { display:flex; flex-direction:column; gap:14px; }
.rev-card { gap:14px; padding:20px 22px; }
.rev-card--sel { border-color:var(--accent); }
.rev-card__meta { display:flex; align-items:center; gap:8px 12px; font-size:13px; color:var(--muted); flex-wrap:wrap; }
.rev-card__check { min-height:auto; }
.rev-card__uso { font-variant-numeric:tabular-nums; }
.rev-card__pct--dificil { color:var(--bad); font-weight:500; }
.rev-card__detalle { min-height:auto; padding:0; border:0; background:none; font:inherit; font-weight:500; cursor:pointer; text-align:left; }
.rev-card__stem { font-size:18px; }
.rev-card__aviso { margin:0; padding:10px 14px; border-radius:8px; background:var(--warn-soft); font-size:14px; display:flex; flex-direction:column; gap:4px; }
.rev-card__aviso-titulo { color:var(--warn); font-weight:500; }
.rev-card__aviso--bad { display:block; background:var(--bad-soft); }
.rev-card__aviso--bad .rev-card__aviso-titulo { color:var(--bad); }
.rev-card__fallos { margin:0; padding-left:18px; font-size:13.5px; }
.rev-card__acciones { display:flex; flex-wrap:wrap; gap:8px; padding-top:12px; border-top:1px solid var(--line); }
.rev-card__repaso { display:flex; gap:8px; }
.rev-card__no { color:var(--muted); }
.rev-card__no--on, .rev-card__no--on:hover { border-color:var(--muted); background:var(--bg); color:var(--text); }
.rev-card__descartar { color:var(--bad); }
.rev-card__mantener { color:var(--accent); }
.rev-card__ejemplo { margin-left:auto; }
.rev-card__acciones .rev-card__ayuda { align-self:center; min-height:var(--touch); }
.rev-paginas { display:flex; align-items:center; justify-content:center; gap:8px; flex-wrap:wrap; font-size:13.5px; }
.rev-paginas__flecha { font-size:20px; }
.rev-paginas__numeros { display:flex; align-items:center; gap:4px; }
.rev-paginas__hueco { display:contents; }
.rev-paginas__num { min-width:var(--touch); height:var(--touch); padding:0 8px; justify-content:center; }
.rev-paginas__elipsis { min-width:24px; text-align:center; }
.rev-paginas__movil { display:none; align-items:center; gap:8px; }
.rev-paginas__select { height:var(--touch); }
@media (max-width: 720px) {
  .rev-paginas__numeros { display:none; }
  .rev-paginas__movil { display:flex; }
}
.rev-descarte { display:flex; flex-direction:column; gap:12px; }
.rev-descarte__chips { display:flex; flex-wrap:wrap; gap:8px; }
.rev-descarte__texto { width:100%; }
.pdf-dialog { max-width:min(960px, calc(100% - 32px)); height:min(900px, calc(100vh - 32px)); padding:0; gap:0; overflow:hidden; }
dialog.pdf-dialog[open] { display:flex; }
.pdf-dialog__head { display:flex; align-items:center; gap:8px; padding:8px 8px 8px 20px; border-bottom:1px solid var(--line); flex-wrap:wrap; }
.pdf-dialog__titulo { flex:1 1 200px; min-width:0; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pdf-dialog__nueva { font-size:14px; }
.pdf-dialog__marco { flex:1; width:100%; border:0; background:var(--bg); }

@media (max-width: 720px) {
  .admin-layout { flex-direction:column; min-height:0; }
  .admin-nav { flex:none; flex-direction:row; gap:4px; padding:12px 16px 0; overflow-x:auto; border-right:0; border-bottom:1px solid var(--line); background:var(--bg); scrollbar-width:none; }
  .admin-nav::-webkit-scrollbar { display:none; }
  .admin-nav__link { font-size:14px; min-height:var(--touch); display:inline-flex; flex:none; border-radius:0; }
  .admin-nav__link.is-active { background:transparent; box-shadow:inset 0 -2px 0 var(--accent); }
  .admin-nav__link--old { margin-top:0; }
  .admin-main { flex:none; padding:20px 16px 28px; }
  .diff__col + .diff__col { border-left:0; border-top:1px solid var(--line); }
  .subtabs__tab--minor { margin-left:0; }
  .editor__text { min-height:300px; }
  .versions { flex:1 1 100%; }
  .diff__pick { flex:1 1 140px; }
  .diff__pick .select--sm { width:100%; }
  .editor__probar { margin-left:0; }
  .estilo-filtros__nuevo { margin-left:0; }
  .estilo-filtros__tema { max-width:100%; flex:1 1 160px; }
  .metrica { padding:16px; }
  .rev-card__ejemplo { margin-left:0; }
  .rev-progreso__barra { max-width:none; flex-basis:100%; }
  .rev-progreso__acciones { margin-left:0; order:3; }
  .rev-progreso__repaso { order:4; }
  .rev-seleccion { padding:6px 6px 8px 14px; gap:6px; }
  .rev-seleccion__cerrar { order:1; }
  .rev-seleccion__btn:not(.rev-seleccion__cerrar) { order:2; flex:1 1 auto; padding:0 8px; font-size:13.5px; }
  .pdf-dialog { max-width:100%; width:100%; height:100%; max-height:100%; border-radius:0; }
}

@media (max-width: 480px) {
  .card, .q-card, .skeleton, .dialog { padding:18px 16px; }
  .pdf-dialog { padding:0; }
  .q-card--banded, .q-card--repaso, .card--flush { padding:0; }
  .q-card__band, .q-card__band--warn, .q-card__body { padding-left:16px; padding-right:16px; }
  .topnav { padding:0 16px; }
}

.page-title { margin:0; font-family:var(--serif); font-weight:600; font-size:26px; line-height:1.2; text-wrap:pretty; overflow-wrap:anywhere; }
.page-lead { margin:0; color:var(--muted); text-wrap:pretty; }
.page-lead strong { color:var(--text); font-weight:600; font-variant-numeric:tabular-nums; }
.page-main { max-width:var(--read); width:100%; margin:0 auto; padding:28px 16px 32px; display:flex; flex-direction:column; gap:18px; }
.page-main--wide { max-width:1200px; }
.page-main--revision { max-width:960px; }
.menu__list--right { left:auto; right:0; min-width:260px; }
.menu__item--link { display:flex; align-items:center; text-decoration:none; min-height:var(--touch); font-size:15px; white-space:nowrap; }
.menu__item--link:hover { color:var(--text); }

.temas-tools { display:flex; flex-wrap:wrap; gap:10px 14px; align-items:flex-end; }
.temas-tools__buscar { flex:1 1 220px; min-width:0; }
.temas-tools__buscar .search__input { min-width:0; }
.temas-sel { display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap; font-size:13.5px; color:var(--muted); }
.temas-sel .btn { min-height:36px; }
.temas { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.tema { position:relative; display:flex; flex-wrap:wrap; align-items:center; gap:10px 14px; padding:14px 16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); }
.tema.is-selected { border-color:var(--accent); }
.tema__check { min-height:var(--touch); gap:0; flex:none; }
.tema__name { flex:1 1 200px; min-width:0; display:flex; flex-direction:column; }
.tema__title { font-weight:500; overflow-wrap:anywhere; }
.tema__count { font-size:13px; color:var(--muted); }
.tema__count strong { font-weight:600; color:var(--text); font-variant-numeric:tabular-nums; }
.tema__cov { flex:1 1 110px; min-width:0; display:flex; flex-direction:column; gap:5px; }
.tema__cov-label { font-size:12.5px; font-weight:500; color:var(--accent); }
.tema__bar { height:6px; border-radius:999px; background:var(--line); overflow:hidden; display:block; }
.tema__fill { display:block; height:100%; background:var(--accent); }
.tema--warn .tema__cov-label { color:var(--warn); }
.tema--warn .tema__fill { background:var(--warn); }
.tema--none .tema__cov-label { color:var(--muted); }
.tema__actions { display:flex; gap:8px; align-items:center; margin-left:auto; }
.tema__actions .btn { font-size:14px; padding:0 14px; }
.tema__actions .btn--icon { padding:0; font-size:18px; }
.tema__repaso { justify-content:flex-start; gap:8px; font-size:13.5px; color:var(--muted); white-space:nowrap; }
.tema__repaso .toggle__track { width:36px; height:22px; }
.tema__repaso .toggle__track::after { width:16px; height:16px; }
.tema__repaso .toggle__input:checked + .toggle__track::after { left:17px; }
.tema__elegir { color:var(--accent); }
.tema__more[aria-expanded="true"] { border-color:var(--accent); background:var(--accent-soft); }
.selbar { position:sticky; bottom:12px; z-index:10; margin-top:8px; padding:10px 10px 10px 16px; border-radius:12px; background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow-dialog); display:flex; gap:8px 12px; align-items:center; justify-content:space-between; flex-wrap:wrap; }
.selbar__text { font-weight:500; }
.selbar__actions { display:flex; gap:6px; flex-wrap:wrap; margin-left:auto; }

.quiz-progress { position:sticky; top:0; z-index:30; background:var(--bg); border-bottom:1px solid var(--line); }
.quiz-progress__in { max-width:var(--read); margin:0 auto; padding:10px 16px; display:flex; flex-direction:column; gap:6px; }
.quiz-progress__text { display:flex; justify-content:space-between; gap:12px; font-size:13px; color:var(--muted); font-variant-numeric:tabular-nums; }
.quiz-progress__text strong { color:var(--text); font-weight:600; }
.quiz-progress__titulo { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.quiz-progress .progress__bar { height:4px; }
.quiz-head { display:flex; flex-direction:column; gap:6px; }
.quiz-head__meta { font-size:13px; color:var(--muted); overflow-wrap:anywhere; }
.quiz-head__chips { display:flex; flex-wrap:wrap; gap:6px; }
.q-card { scroll-margin-top:72px; }
.q-card__meta-right { display:inline-flex; gap:6px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
.q-card__meta > span:first-child { min-width:0; overflow-wrap:anywhere; }
.q-card__left { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.q-opt { overflow-wrap:anywhere; }
button.q-opt:disabled { cursor:default; }
button.q-opt:disabled:hover { border-color:var(--line); }
button.q-opt--selected:disabled:hover { border-color:var(--sec); }
button.q-opt--correct:disabled:hover { border-color:var(--accent); }
button.q-opt--wrong:disabled:hover { border-color:var(--bad); }
.q-opt--dashed.q-opt--selected { border-color:var(--sec); color:var(--text); }
.q-card__note--bad { color:var(--bad); }
.checks__item--na::before { content:"?"; color:var(--muted); margin-right:6px; }
.checks--boxed { padding:12px 14px; background:var(--bg); border-radius:8px; }
.btn.is-on { border-color:var(--accent); background:var(--accent-soft); }
.result { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:24px; display:flex; flex-direction:column; gap:18px; scroll-margin-top:72px; }
.result__repetir { align-self:flex-start; }
.result__head { display:flex; flex-wrap:wrap; gap:16px 28px; align-items:center; }
.result__score { font-size:44px; font-weight:600; font-variant-numeric:tabular-nums; letter-spacing:-.02em; line-height:1; }
.result__of { color:var(--muted); font-weight:400; }
.result__when { display:flex; flex-direction:column; gap:4px; }
.result__list { margin:0; padding:0; list-style:none; display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:6px 14px; font-size:14px; font-variant-numeric:tabular-nums; }
.result__item { display:flex; gap:8px; min-height:32px; align-items:center; color:var(--text); text-decoration:none; min-width:0; }
.result__item:hover { color:var(--accent); }
.result__item span:last-child { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.result__item--muted { color:var(--muted); }
.result__mark--ok { color:var(--accent); }
.result__mark--ko { color:var(--bad); }
.attempts { display:flex; flex-direction:column; }
.attempts__label { font-size:13px; color:var(--muted); padding-bottom:8px; }
.attempts__row { display:flex; justify-content:space-between; gap:12px; padding:10px 0; border-top:1px solid var(--line); font-variant-numeric:tabular-nums; }
.attempts__row--old { color:var(--muted); }
.attempts__note { font-size:12.5px; }
dialog.pdf-dialog--bare { border:0; }

.filters { display:flex; flex-wrap:wrap; gap:8px; }
.filters .btn { min-height:40px; font-size:14px; padding:0 14px; }
.lib { display:flex; gap:24px; align-items:flex-start; flex-wrap:wrap; }
.lib__list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; flex:1 1 340px; min-width:0; }
.lib-item { width:100%; text-align:left; font:inherit; color:inherit; padding:14px 16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); display:flex; flex-direction:column; gap:8px; cursor:pointer; }
.lib-item:hover { border-color:var(--muted); }
.lib-item.is-active { border-color:var(--accent); }
.lib-item__head { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; }
.lib-item__title { font-weight:600; font-size:16px; overflow-wrap:anywhere; min-width:0; }
.lib-item__pin { color:var(--accent); flex:none; }
.lib-item__meta { font-size:13px; color:var(--muted); font-variant-numeric:tabular-nums; }
.lib-item__meta strong { color:var(--text); font-weight:600; }
.lib-item__chips { display:flex; flex-wrap:wrap; gap:6px; }
.lib-detail { flex:1 1 480px; min-width:0; position:sticky; top:16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:24px; display:flex; flex-direction:column; gap:16px; }
.lib-detail__head { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; flex-wrap:wrap; }
.lib-detail__title { margin:0; font-family:var(--serif); font-weight:600; font-size:22px; line-height:1.2; overflow-wrap:anywhere; }
.lib-detail__icons { display:flex; gap:6px; }
.lib-detail__del { color:var(--bad); }
.lib-detail__del:hover { color:var(--bad); }
.lib-detail__actions { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.lib-detail__hint { font-size:13px; color:var(--muted); margin-left:auto; }
.lib-detail__back { display:none; }
.lib-review { display:flex; flex-direction:column; gap:6px; padding:12px 14px; border-radius:var(--radius); background:var(--sec-soft); }
.lib-review__head { display:flex; justify-content:space-between; gap:8px; font-size:13.5px; }
.lib-review__title { color:var(--sec); font-weight:500; display:inline-flex; gap:8px; align-items:center; }
.lib-review__title .spinner { width:12px; height:12px; }
.lib-review .progress__bar { height:4px; background:var(--surface); }
.lib-review .progress__fill { background:var(--sec); }
.mini-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:10px; }
.mini-stat { padding:12px 14px; border:1px solid var(--line); border-radius:var(--radius); display:flex; flex-direction:column; min-width:0; }
.mini-stat__label { font-size:12.5px; color:var(--muted); }
.mini-stat__value { font-size:22px; font-weight:600; font-variant-numeric:tabular-nums; }
.mini-stat__value--bad { color:var(--bad); }
.mini-stat__value--warn { color:var(--warn); }
.lib-qs { display:flex; flex-direction:column; gap:10px; }
.lib-q { padding:14px 16px; border:1px solid var(--line); border-radius:var(--radius); display:flex; flex-direction:column; gap:6px; min-width:0; }
.lib-q__meta { font-size:12.5px; color:var(--muted); }
.lib-q__stem { font-family:var(--serif); font-weight:600; font-size:16px; line-height:1.4; overflow-wrap:anywhere; }
.lib-q__ans { font-size:13px; color:var(--muted); overflow-wrap:anywhere; }
.lib-q--gone .lib-q__stem { color:var(--muted); font-family:var(--sans); font-weight:500; font-size:15px; }

.informe-sum { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:22px 24px; display:flex; flex-wrap:wrap; gap:16px 28px; align-items:center; }
.informe-sum__text { flex:1 1 260px; display:flex; flex-direction:column; gap:6px; }
.informe-q { gap:14px; }
.informe-q .q-card__meta { flex-wrap:wrap; }
.informe-q .q-opt { padding:10px 14px; font-size:14.5px; }
.informe-obs { margin:0; padding:10px 14px; border-radius:8px; background:var(--warn-soft); font-size:14px; overflow-wrap:anywhere; }
.informe-obs__label { color:var(--warn); font-weight:500; }
.informe-obs--bad { background:var(--bad-soft); }
.informe-obs--bad .informe-obs__label { color:var(--bad); }
.informe-frag { font-size:13px; color:var(--muted); }
.informe-frag summary { cursor:pointer; min-height:32px; display:inline-flex; align-items:center; }
.informe-frag blockquote { margin:6px 0 0; padding:8px 12px; border-left:3px solid var(--line); overflow-wrap:anywhere; }

.visor { margin:0; height:100vh; height:100dvh; display:flex; flex-direction:column; background:var(--surface); overflow:hidden; }
.visor__head { display:flex; align-items:center; gap:8px; padding:10px 10px 10px 20px; border-bottom:1px solid var(--line); flex-wrap:wrap; background:var(--surface); }
.visor__info { flex:1 1 220px; display:flex; flex-direction:column; min-width:0; }
.visor__titulo { font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.visor__sub { font-size:12.5px; color:var(--muted); }
.visor__controls { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.visor__btn { font:16px var(--sans); width:var(--touch); height:var(--touch); padding:0; }
.visor__val { min-width:64px; text-align:center; font-size:14px; font-variant-numeric:tabular-nums; }
.visor__val--zoom { min-width:48px; }
.visor__sep { width:1px; height:28px; background:var(--line); margin:0 4px; }
.visor__nueva { font-size:14px; padding:0 12px; color:var(--sec); }
.visor__nueva:hover { color:var(--accent); }
.visor__corta { display:none; }
.visor__cerrar { font-size:18px; border:0; background:transparent; color:var(--muted); }
.visor__body { position:relative; flex:1; min-height:0; background:var(--bg); }
.visor__container { position:absolute; inset:0; overflow:auto; }
.visor__estado { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; padding:20px; text-align:center; color:var(--muted); }
.visor__error { width:min(100%,640px); padding:12px 16px; border-radius:var(--radius); background:var(--surface); border:1px solid var(--line); font-size:13.5px; color:var(--muted); display:flex; gap:10px; align-items:center; justify-content:space-between; flex-wrap:wrap; text-align:left; }

@media (max-width: 720px) {
  .has-tabbar .selbar { bottom:100px; }
  .has-tabbar.has-selbar .toast-stack { bottom:184px; }
  .lib-detail { display:none; position:static; padding:18px 16px; }
  .lib--detalle .lib-detail { display:flex; }
  .lib--detalle .lib__list { display:none; }
  .lib-detail__back { display:inline-flex; }
  .lib-detail__hint { margin-left:0; flex-basis:100%; }
  .page-main { padding:20px 16px 28px; }
  .visor__head { padding:8px 8px 8px 16px; }
  .visor__controls { order:3; flex-basis:100%; justify-content:space-between; gap:4px; }
  .visor__sep { display:none; }
  .visor__nueva { padding:0 6px; }
  .visor__val { min-width:52px; }
  .visor__val--zoom { display:none; }
  .visor__larga { display:none; }
  .visor__corta { display:inline; }
}

@media (max-width: 480px) {
  .result, .lib-detail, .informe-sum { padding:18px 16px; }
  .result__score { font-size:38px; }
  .tema { padding:12px 14px; }
}
.q-card__band--warn .btn { background:var(--surface); }

.rep { max-width:480px; margin:0 auto; min-height:100vh; min-height:100dvh; display:flex; flex-direction:column; }
.rep__head { position:sticky; top:0; z-index:5; background:var(--bg); padding:calc(8px + env(safe-area-inset-top)) 12px 8px; display:flex; align-items:center; gap:4px; }
.rep__exit { width:var(--touch); height:var(--touch); flex:none; display:inline-flex; align-items:center; justify-content:center; border-radius:var(--radius); color:var(--muted); text-decoration:none; font-size:18px; }
.rep__exit:hover { color:var(--text); }
.rep__counts { flex:1; min-width:0; text-align:center; font-size:13.5px; color:var(--muted); font-variant-numeric:tabular-nums; }
.rep__counts strong { color:var(--text); font-weight:600; }
.rep__spacer { width:var(--touch); flex:none; }
.rep__rehacer { flex:none; min-width:var(--touch); min-height:var(--touch); padding:0 10px; border:0; border-radius:var(--radius); background:transparent; color:var(--accent); font:500 13.5px var(--sans); cursor:pointer; }
.rep__rehacer:hover { background:var(--accent-soft); }
.rep__rehacer:disabled { color:var(--muted); cursor:default; background:transparent; }
.rep__bar { margin:0 16px; height:3px; border-radius:999px; background:var(--line); overflow:hidden; }
.rep__bar-fill { height:100%; background:var(--accent); transition:width .3s ease-out; }
.rep__band { margin:12px 16px 0; padding:10px 14px; font-size:14px; }
.rep__band--install { padding:6px 6px 6px 14px; flex-wrap:nowrap; gap:6px; }
.rep__band-btn { font:500 14px var(--sans); min-height:var(--touch); padding:0 10px; border:0; background:transparent; color:var(--accent); cursor:pointer; border-radius:var(--radius); }
.rep__main { flex:1; padding:14px 16px 16px; display:flex; flex-direction:column; gap:14px; }
.rep-card { background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:18px 18px 16px; display:flex; flex-direction:column; gap:14px; }
.rep-card__tema { font-size:12.5px; color:var(--muted); overflow-wrap:anywhere; }
.rep-card__stem { margin:0; font-family:var(--serif); font-weight:600; font-size:18.5px; line-height:1.4; text-wrap:pretty; overflow-wrap:anywhere; }
.rep-card__ver { align-self:flex-start; }
.rep-card__result { margin:0; font-size:14.5px; }
.rep-card__label { font-weight:500; color:var(--accent); }
.rep-card__label--bad { color:var(--bad); }
.rep-card__foot { display:flex; justify-content:space-between; align-items:center; gap:8px; flex-wrap:wrap; }
.rep-card__src { font-size:13px; color:var(--muted); min-width:0; overflow-wrap:anywhere; }
.rep-card__pdf { font:500 13px var(--sans); min-height:var(--touch); padding:0 6px; border:0; background:transparent; color:var(--sec); cursor:pointer; white-space:nowrap; }
.rep-card__pdf:hover { text-decoration:underline; }
.rep-card__actions { display:flex; gap:8px; }
.rep__foot { position:sticky; bottom:0; z-index:5; padding:12px 16px calc(16px + env(safe-area-inset-bottom)); background:var(--bg); border-top:1px solid var(--line); display:flex; flex-direction:column; align-items:center; gap:6px; }
.rep__foot-hint { font-size:12.5px; color:var(--muted); min-height:1.5em; }
.rep-end { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; gap:16px; padding:24px 28px 60px; }
.rep-end__img { width:160px; height:160px; display:block; }
.rep-end__title { margin:0; font-family:var(--serif); font-weight:600; font-size:28px; line-height:1.2; }
.rep-end__lead { margin:0; font-weight:500; font-size:17px; }
.rep-end__text { margin:0; color:var(--muted); text-wrap:pretty; }
.rep-end__stats { list-style:none; margin:0; padding:14px 18px; display:flex; flex-direction:column; gap:8px; width:100%; max-width:360px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); }
.rep-end__stat { margin:0; color:var(--muted); font-variant-numeric:tabular-nums; text-wrap:pretty; overflow-wrap:anywhere; }
.rep-end__stat--hoy { color:var(--text); font-weight:600; font-size:17px; }
.rep-end__stat--racha { color:var(--text); font-weight:500; }
.rep-end__acciones { display:flex; flex-direction:column; align-items:center; gap:4px; width:100%; max-width:360px; }
.rep-end .empty__school img:nth-child(1) { width:72px; height:72px; }
.rep-end .empty__school img:nth-child(2) { width:104px; height:104px; }
.rep-end .empty__school img:nth-child(3) { width:64px; height:64px; }

@media (max-width: 720px) {
  dialog.dialog--sheet { margin:auto 0 0; max-width:100%; width:100%; border-radius:18px 18px 0 0; border-width:1px 0 0; padding:20px 20px calc(24px + env(safe-area-inset-bottom)); }
}
body.rep-pie .toast-stack { bottom:132px; }
.rev-card__ver { display:flex; align-items:center; gap:8px; min-height:44px; }
.rev-card__res { font-weight:500; color:var(--accent); }
.rev-card__res--ok { color:var(--accent); }
.rev-card__res--ko { color:var(--bad); }
.rev-card__ver .link { border:0; background:none; padding:0 4px; font:inherit; cursor:pointer; min-height:auto; }
.tema__title--link { color:var(--text); text-decoration:none; }
.tema__title--link:hover, .tema__title--link:focus-visible { color:var(--accent); text-decoration:underline; text-underline-offset:3px; }
.rev-card__ayuda { border:0; background:none; padding:0 4px; min-height:32px; font:500 13px var(--sans); color:var(--sec); cursor:pointer; }
.rev-card__ayuda:hover { color:var(--accent); text-decoration:underline; text-underline-offset:3px; }
.rev-ayuda { display:grid; grid-template-columns:max-content 1fr; gap:8px 14px; margin:4px 0 0; font-size:14.5px; }
.rev-ayuda dt { font-weight:600; }
.rev-ayuda dd { margin:0; color:var(--muted); }
@media (max-width:480px) { .rev-ayuda { grid-template-columns:1fr; gap:2px; } .rev-ayuda dd { margin-bottom:8px; } }
.tabbar__label { max-width:100%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media (max-width: 420px) {
  .tabbar { padding-left:2px; padding-right:2px; }
  .tabbar__item { font-size:11px; }
}
.psico-repasar { align-self:flex-start; gap:6px; }
.psico-repasar__n { font-variant-numeric:tabular-nums; }
.psico-seccion { display:flex; flex-direction:column; gap:10px; }
.psico-seccion .h3 { margin:0; }
.q-card__frase { margin:0; padding:10px 14px; border-left:3px solid var(--sec); border-radius:0 var(--radius) var(--radius) 0; background:var(--sec-soft); font-size:16px; line-height:1.5; overflow-wrap:anywhere; }
.rep__timer { min-width:var(--touch); flex:none; text-align:right; padding-right:4px; font-size:13.5px; color:var(--muted); font-variant-numeric:tabular-nums; }
.psico-fin { flex:1; padding:24px 16px 32px; display:flex; flex-direction:column; gap:18px; }
.psico-fin__head { display:flex; flex-direction:column; align-items:center; text-align:center; gap:8px; }
.psico-fin__img { width:96px; height:96px; display:block; }
.psico-fin__nota { margin:0; font-family:var(--serif); font-weight:600; font-size:30px; line-height:1.2; font-variant-numeric:tabular-nums; }
.psico-fin__tiempo { margin:0; color:var(--muted); font-variant-numeric:tabular-nums; }
.psico-fin__titulo { margin:0; font-size:13.5px; color:var(--muted); overflow-wrap:anywhere; }
.psico-fin__seccion { display:flex; flex-direction:column; gap:12px; }
.psico-fin__h { margin:0; font-size:16px; font-weight:600; }
.psico-fin__lista { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:12px; }
.psico-fin__item { gap:10px; }
.psico-fin__tu { margin:0; font-size:14.5px; color:var(--bad); overflow-wrap:anywhere; }
.psico-fin__correcta { margin:0; font-size:14.5px; overflow-wrap:anywhere; }
.psico-fin__correcta strong { color:var(--accent); font-weight:600; }
.psico-fin__volver { align-self:center; }
.palabra-rae { color:inherit; cursor:pointer; text-decoration-line:underline; text-decoration-style:dotted; text-decoration-thickness:1.5px; text-decoration-color:var(--muted); text-underline-offset:3px; border-radius:3px; -webkit-tap-highlight-color:transparent; }
.palabra-rae:hover { text-decoration-color:currentColor; }
.palabra-rae:focus-visible { outline:2px solid var(--accent); outline-offset:1px; }
.q-opt--correct .palabra-rae:focus-visible { outline-color:var(--sec); }
.q-opt--wrong .palabra-rae { text-decoration-color:var(--bad); }
dialog.rae { max-height:min(85dvh, 640px); overflow-y:auto; overscroll-behavior:contain; }
.rae__palabra { font-size:28px; line-height:1.2; overflow-wrap:anywhere; }
.rae__lista { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.rae__acepcion { display:flex; gap:8px; font-size:15px; line-height:1.45; overflow-wrap:anywhere; }
.rae__acepcion[hidden] { display:none; }
.rae__num { flex:none; min-width:22px; color:var(--muted); font-variant-numeric:tabular-nums; }
.rae__texto { min-width:0; }
.rae__cat { font-style:italic; color:var(--muted); }
.rae__todas { align-self:flex-start; }
.rae__acciones { justify-content:space-between; align-items:center; }

.opos-hitos { display:flex; flex-direction:column; gap:8px; width:100%; }
.opos-hitos:empty { display:none; }
.band--hito { background:var(--sand); color:var(--text); font-weight:600; font-size:16px; justify-content:center; text-align:center; }
.rep-end .opos-hitos { max-width:360px; }

a.subtabs__tab { text-decoration:none; }
.progreso-fuego { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:22px 24px; display:flex; flex-direction:column; gap:10px; align-items:flex-start; }
.progreso-fuego__cabeza { display:flex; align-items:center; gap:12px; }
.progreso-fuego__icono { font-size:44px; line-height:1; }
.progreso-fuego__cifra { margin:0; font-family:var(--serif); font-weight:600; font-size:22px; line-height:1.2; }
.progreso-fuego__numero { font-size:46px; font-variant-numeric:tabular-nums; color:var(--accent); }
.progreso-fuego__aviso { margin:0; }
.progreso-fuego__frase { margin:0; color:var(--muted); text-wrap:pretty; }
.progreso-fuego__datos { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; width:100%; }
.progreso-fuego__dato { display:grid; grid-template-columns:24px 1fr; gap:6px; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
.progreso-fuego__nota { display:block; font-size:13px; color:var(--muted); }
.progreso-rachas { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr)); gap:12px; }
.progreso-racha { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px; display:flex; flex-direction:column; gap:4px; min-width:0; }
.progreso-racha__titulo { margin:0; font-size:13px; font-weight:500; color:var(--muted); }
.progreso-racha__cifra { margin:0; font-size:15px; }
.progreso-racha__numero { font-size:30px; font-weight:600; line-height:1.1; font-variant-numeric:tabular-nums; }
.progreso-racha__frase { margin:0; font-size:13.5px; color:var(--text); text-wrap:pretty; }
.progreso-racha__record { margin:0; font-size:13px; color:var(--muted); font-variant-numeric:tabular-nums; }
.progreso-racha__tabla { margin:4px 0 0; display:grid; grid-template-columns:auto 1fr; gap:2px 10px; font-size:13px; font-variant-numeric:tabular-nums; }
.progreso-racha__tabla dt { color:var(--muted); }
.progreso-racha__tabla dd { margin:0; text-align:right; }
.progreso-hitos { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:8px; }
.progreso-hitos__item { display:flex; flex-direction:column; gap:2px; padding:8px 12px; border-radius:var(--radius); border:1px solid var(--line); min-width:96px; }
.progreso-hitos__item--hecho { background:var(--accent-soft); border-color:transparent; }
.progreso-hitos__item--pendiente { color:var(--muted); background:var(--bg); }
.progreso-hitos__dias { font-weight:600; font-variant-numeric:tabular-nums; }
.progreso-hitos__cuando { font-size:12.5px; color:var(--muted); }
.progreso-ajustes__grupo { margin:0; padding:0; border:0; min-width:0; }
.progreso-ajustes__titulo { padding:0; font-size:13px; color:var(--muted); margin-bottom:4px; }
.progreso-ajustes__checks { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr)); gap:0 16px; }
.progreso-ajustes__fila--off { opacity:.55; }
.progreso-ajustes__hitos { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:6px; }
.progreso-ajustes__hito { gap:2px; padding-right:2px; font-variant-numeric:tabular-nums; }
.progreso-ajustes__quitar { font:inherit; font-size:12px; border:0; background:transparent; color:var(--muted); cursor:pointer; min-width:32px; min-height:32px; border-radius:999px; }
.progreso-ajustes__quitar:hover { color:var(--bad); background:var(--bad-soft); }
.progreso-ajustes__nuevo { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.progreso-ajustes__nuevo .input { height:40px; }

.calendario, .calendario__leyenda { --cal-celda:12px; --cal-hueco:3px; --cal-mes:16px; }
.calendario { display:flex; gap:6px; min-width:0; }
.calendario__semana { flex:none; display:grid; grid-template-rows:var(--cal-mes) repeat(7,var(--cal-celda)); row-gap:var(--cal-hueco); font-size:10.5px; line-height:var(--cal-celda); color:var(--muted); }
.calendario__semana span:first-child { line-height:var(--cal-mes); }
.calendario__scroll { flex:1 1 auto; min-width:0; overflow-x:auto; padding-bottom:4px; display:flex; flex-direction:column; gap:var(--cal-hueco); }
.calendario__scroll:focus-visible { outline-offset:4px; }
.calendario__meses { display:grid; grid-auto-flow:column; grid-auto-columns:var(--cal-celda); column-gap:var(--cal-hueco); height:var(--cal-mes); width:max-content; }
.calendario__mes { font-size:10.5px; line-height:var(--cal-mes); color:var(--muted); white-space:nowrap; overflow:visible; }
.calendario__dias { display:grid; grid-template-rows:repeat(7,var(--cal-celda)); grid-auto-flow:column; grid-auto-columns:var(--cal-celda); gap:var(--cal-hueco); width:max-content; }
.calendario__dia { display:inline-block; width:var(--cal-celda); height:var(--cal-celda); border-radius:3px; background:var(--bg); box-shadow:inset 0 0 0 1px var(--line); }
.calendario__dia--vacio { background:transparent; box-shadow:none; }
.calendario__dia--n1 { background:var(--accent-soft); box-shadow:none; }
.calendario__dia--n2 { background:color-mix(in srgb, var(--accent) 40%, var(--accent-soft)); box-shadow:none; }
.calendario__dia--n3 { background:color-mix(in srgb, var(--accent) 70%, var(--accent-soft)); box-shadow:none; }
.calendario__dia--n4 { background:var(--accent); box-shadow:none; }
.calendario__dia--comodin { box-shadow:inset 0 0 0 2px var(--warn); }
.calendario__leyenda { display:flex; flex-wrap:wrap; align-items:center; gap:4px 6px; font-size:12px; color:var(--muted); }
.calendario__leyenda-comodin { display:inline-flex; align-items:center; gap:6px; margin-left:10px; }
@media (max-width: 720px) {
  .calendario, .calendario__leyenda { --cal-celda:11px; --cal-hueco:2px; }
}

.progreso-semana__tabla { width:100%; border-collapse:collapse; font-size:14px; font-variant-numeric:tabular-nums; }
.progreso-semana__tabla th, .progreso-semana__tabla td { text-align:right; padding:6px 0 6px 10px; border-bottom:1px solid var(--line); }
.progreso-semana__tabla th:first-child { text-align:left; padding-left:0; font-weight:400; }
.progreso-semana__tabla thead th { color:var(--muted); font-weight:500; font-size:12.5px; }
.progreso-semana__tabla tbody tr:last-child th, .progreso-semana__tabla tbody tr:last-child td { border-bottom:0; }
.progreso-semana__actual { font-weight:600; }
.progreso-semana__dif { white-space:nowrap; }
.progreso-semana__dif--sube { color:var(--accent); }
.progreso-semana__dif--baja { color:var(--bad); }
.progreso-semana__dif--igual { color:var(--muted); }
@media (max-width: 420px) {
  .progreso-semana__tabla { font-size:13px; }
  .progreso-semana__tabla th, .progreso-semana__tabla td { padding-left:6px; }
}

.progreso-leyenda { margin:0; display:flex; align-items:center; flex-wrap:wrap; gap:6px; font-size:12px; color:var(--muted); }
.progreso-leyenda__barra { width:12px; height:12px; border-radius:2px; background:var(--accent-soft); box-shadow:inset 0 0 0 1px var(--accent); }
.progreso-leyenda__linea { width:16px; height:2px; background:var(--sec); margin-left:8px; }
.progreso-evolucion__banco { max-width:280px; }
.progreso-evolucion__graficas { display:flex; flex-direction:column; gap:6px; }
.progreso-evolucion__sub { margin:0; font-size:12.5px; color:var(--muted); }
.progreso-evolucion__lienzo { height:140px; }
.progreso-fallada { display:grid; grid-template-columns:22px 1fr; column-gap:6px; padding:8px 0; }
.progreso-fallada::before { content:counter(dificil); grid-row:span 2; color:var(--muted); font-size:13px; font-variant-numeric:tabular-nums; padding-top:1px; }
.progreso-repaso { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.progreso-repaso__dato { display:flex; flex-direction:column; align-items:flex-start; padding:10px 12px; border-radius:8px; background:var(--bg); border:1px solid var(--line); min-width:0; }
.progreso-repaso__dato--mucho { background:var(--accent-soft); border-color:transparent; }
.progreso-repaso__n { font-size:22px; font-weight:600; font-variant-numeric:tabular-nums; line-height:1.2; }
.progreso-repaso__label { font-size:12.5px; color:var(--muted); }
.progreso-cobertura { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.progreso-cobertura__banco { display:grid; grid-template-columns:minmax(0,10em) 1fr auto; align-items:center; gap:10px; font-size:13px; }
.progreso-cobertura__nombre { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.progreso-cobertura__barra { display:block; }
.progreso-cobertura__barra .progress__fill { display:block; }
.progreso-cobertura__cifra { color:var(--muted); font-variant-numeric:tabular-nums; min-width:52px; text-align:right; }
.band--regalo { background:var(--accent-soft); color:var(--text); font-weight:600; font-size:16px; justify-content:center; text-align:center; }
.band--regalo .btn { flex:none; }
.band--regalo-hecho { font-weight:500; }
.band__texto { min-width:0; overflow-wrap:anywhere; }
dialog.regalo { max-height:min(85dvh, 640px); overflow-y:auto; overscroll-behavior:contain; }
.regalo__opciones { display:flex; flex-direction:column; gap:10px; }
.regalo__opcion { display:flex; align-items:center; gap:14px; width:100%; min-height:64px; padding:12px 14px; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--text); font:inherit; text-align:left; cursor:pointer; -webkit-tap-highlight-color:transparent; }
.regalo__opcion:hover { border-color:var(--accent); background:var(--accent-soft); }
.regalo__opcion:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.regalo__emoji { flex:none; font-size:34px; line-height:1; display:inline-flex; }
.regalo__cuerpo { display:flex; flex-direction:column; gap:2px; min-width:0; }
.regalo__nombre { font-weight:600; font-size:16px; overflow-wrap:anywhere; }
.regalo__desc { color:var(--muted); font-size:14px; overflow-wrap:anywhere; }
.regalos-pin { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:28px 24px; display:flex; flex-direction:column; align-items:center; text-align:center; gap:12px; max-width:420px; width:100%; margin:0 auto; }
.regalos-pin__icono { margin:0; font-size:44px; line-height:1; }
.regalos-pin__titulo { margin:0; font-family:var(--serif); font-weight:600; font-size:19px; text-wrap:pretty; }
.regalos-pin__fila { display:flex; gap:8px; flex-wrap:wrap; justify-content:center; width:100%; }
.regalos-pin__campo { flex:1 1 140px; max-width:200px; text-align:center; letter-spacing:.2em; font-variant-numeric:tabular-nums; }
.regalos-error { margin:0; padding:8px 12px; border-radius:8px; background:var(--bad-soft); color:var(--bad); font-size:14px; }
.regalos-bloque { background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); padding:18px 20px; display:flex; flex-direction:column; gap:12px; min-width:0; }
.regalos-bloque__head { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.regalos-bloque__titulo { margin:0; font-size:15px; font-weight:600; }
.regalos-bloque__vacio { margin:0; padding:14px 16px; border:1px dashed var(--line); border-radius:8px; font-size:14px; color:var(--muted); text-wrap:pretty; }
.regalos-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr)); gap:10px; align-items:start; }
.regalo-card { border:1px solid var(--line); border-radius:var(--radius); padding:12px 14px; background:var(--bg); min-width:0; }
.regalo-card__vista { display:grid; grid-template-columns:auto 1fr; gap:4px 12px; align-items:center; }
.regalo-card__emoji { font-size:34px; line-height:1; grid-row:span 2; display:inline-flex; flex-wrap:wrap; max-width:120px; }
.regalo-card__cuerpo { min-width:0; display:flex; flex-direction:column; gap:2px; }
.regalo-card__nombre { margin:0; font-weight:600; overflow-wrap:anywhere; }
.regalo-card__desc { margin:0; color:var(--muted); font-size:14px; overflow-wrap:anywhere; }
.regalo-card__acciones { display:flex; gap:2px; flex-wrap:wrap; }
.regalo-card__acciones .btn { min-height:36px; padding:0 8px; font-size:13.5px; }
.regalo-card__edit, .regalo-nuevo { display:flex; flex-direction:column; gap:10px; }
.regalo-card__campo-nombre { min-width:0; }
.regalos-archivados__lista { list-style:none; margin:14px 0 0; padding:0; display:flex; flex-direction:column; }
.regalos-archivados__item { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:6px 0; color:var(--muted); }
.regalos-archivados__item + .regalos-archivados__item { border-top:1px solid var(--line); }
.regalos-archivados__texto { min-width:0; overflow-wrap:anywhere; }
.regalos-hitos { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.regalos-hito { display:flex; align-items:center; gap:8px 12px; flex-wrap:wrap; padding:10px 0; }
.regalos-hito + .regalos-hito { border-top:1px solid var(--line); }
.regalos-hito__dias { flex:0 0 72px; font-weight:600; font-variant-numeric:tabular-nums; }
.regalos-hito__chips { list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:6px; min-width:0; }
.regalos-hito__chip { gap:2px; padding-right:2px; max-width:100%; overflow-wrap:anywhere; }
.regalos-hito__select { min-width:0; }
.regalos-hitos__nuevo { display:flex; gap:8px; align-items:center; flex-wrap:wrap; padding-top:10px; border-top:1px solid var(--line); }
.regalos-hitos__nuevo .input { height:40px; }
.regalos-hitos__etiqueta { font-weight:600; }
.regalos-ganados { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; }
.regalos-ganados > li + li { border-top:1px solid var(--line); }
.regalos-ganado { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 0; cursor:pointer; position:relative; flex-wrap:wrap; }
.regalos-ganado--sin .regalos-ganado__texto { color:var(--muted); }
.regalos-ganado__texto { min-width:0; overflow-wrap:anywhere; font-variant-numeric:tabular-nums; }
.regalos-ganado__switch { display:inline-flex; align-items:center; gap:8px; min-height:var(--touch); margin-left:auto; }
.progreso-regalos { width:100%; display:flex; flex-direction:column; gap:10px; padding-top:10px; border-top:1px solid var(--line); }
.progreso-regalos__siguiente { margin:0; font-variant-numeric:tabular-nums; }
.progreso-regalos__pendiente { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; padding:10px 14px; border-radius:var(--radius); background:var(--accent-soft); }
.progreso-regalos__aviso { font-weight:600; min-width:0; overflow-wrap:anywhere; }
.progreso-regalos__titulo { margin:0 0 4px; font-size:13px; font-weight:500; color:var(--muted); }
.progreso-regalos__lista { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px; }
.progreso-regalos__item { overflow-wrap:anywhere; font-variant-numeric:tabular-nums; }
.openmoji { display:inline-block; width:1.2em; height:1.2em; vertical-align:-.25em; margin:0 .05em; object-fit:contain; }
.regalo__emoji .openmoji, .regalo-card__emoji .openmoji { width:1.3em; height:1.3em; vertical-align:middle; margin:0; }
.emoji-picker { display:flex; flex-direction:column; gap:8px; min-width:0; }
.emoji-picker__elegido { display:flex; align-items:center; gap:8px; min-height:var(--touch); padding:4px 4px 4px 12px; border:1px solid var(--line); border-radius:8px; background:var(--surface); }
.emoji-picker__vista { flex:1 1 auto; min-width:0; font-size:26px; line-height:1; overflow-wrap:anywhere; }
.emoji-picker__vacio { flex:1 1 auto; color:var(--muted); font-size:14px; }
.emoji-picker__borrar { flex:none; }
.emoji-picker__rejilla { display:grid; grid-template-columns:repeat(auto-fill,minmax(44px,1fr)); gap:6px; }
.emoji-picker__opcion { display:flex; align-items:center; justify-content:center; min-height:var(--touch); padding:4px; border:1px solid var(--line); border-radius:8px; background:var(--bg); color:var(--text); font-size:24px; line-height:1; cursor:pointer; -webkit-tap-highlight-color:transparent; }
.emoji-picker__opcion:hover { border-color:var(--accent); }
.emoji-picker__opcion:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.emoji-picker__opcion[aria-pressed="true"] { border-color:var(--accent); background:var(--accent-soft); box-shadow:inset 0 0 0 1px var(--accent); }
.emoji-picker__opcion:disabled { opacity:.4; cursor:not-allowed; }
.emoji-picker__opcion .openmoji { margin:0; vertical-align:middle; }
