/* Global Method — una columna limpia, botones «de juego» con relieve, imágenes grandes y premios visibles. */
:root{ color-scheme:light;
  --bg:#f3f6fb; --card:#ffffff; --ink:#18213d; --muted:#5c6684; --line:#e2e7f1; --soft:#eef2f9;
  --brand:#ffb020; --brand-ink:#3b2500; --brand-edge:#d98c00;
  --ok:#1fae6f; --ok-soft:#e1f6ec; --ok-edge:#158a56;
  --bad:#ec5245; --bad-soft:#fde7e4; --bad-edge:#c23a2f;
  --xp:#7a5cff; --xp-soft:#efebff; --flame:#ff7a1a; --flame-soft:#fff0e3; --sky:#3f8cff;
  --display:"Bricolage Grotesque", "Avenir Next", "Segoe UI", system-ui, sans-serif;
  --body:"Atkinson Hyperlegible", "Segoe UI", system-ui, sans-serif;
  --radius:18px;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ color-scheme:dark;
  --bg:#0f1426; --card:#182038; --ink:#eef1fb; --muted:#a6aecb; --line:#2a3354; --soft:#1e2742;
  --brand:#ffbe3d; --brand-ink:#2b1a00; --brand-edge:#c98500;
  --ok:#38c98a; --ok-soft:#173a2c; --ok-edge:#21915f; --bad:#ff6b5e; --bad-soft:#40211d; --bad-edge:#c0453a;
  --xp:#9c86ff; --xp-soft:#2a2550; --flame:#ff9440; --flame-soft:#3a2617; --sky:#6aa6ff } }
:root[data-theme="dark"]{ color-scheme:dark;
  --bg:#0f1426; --card:#182038; --ink:#eef1fb; --muted:#a6aecb; --line:#2a3354; --soft:#1e2742;
  --brand:#ffbe3d; --brand-ink:#2b1a00; --brand-edge:#c98500;
  --ok:#38c98a; --ok-soft:#173a2c; --ok-edge:#21915f; --bad:#ff6b5e; --bad-soft:#40211d; --bad-edge:#c0453a;
  --xp:#9c86ff; --xp-soft:#2a2550; --flame:#ff9440; --flame-soft:#3a2617; --sky:#6aa6ff }

*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:17px;line-height:1.5;
  padding-left:max(16px, env(safe-area-inset-left, 0px));padding-right:max(16px, env(safe-area-inset-right, 0px));padding-block:0 40px}
h1,h2,h3{font-family:var(--display);text-wrap:balance;margin:0;line-height:1.08;letter-spacing:-.01em}
p{margin:0;max-width:62ch}
a{color:inherit}
button{font:inherit;cursor:pointer;color:inherit}
button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid var(--sky);outline-offset:2px}
.wrap{max-width:680px;margin:0 auto}
.wrap.wide{max-width:1040px}
.stack{display:flex;flex-direction:column;gap:18px}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.muted{color:var(--muted)}
.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);font-weight:700}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- Barra superior ---------- */
.top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-block:16px;position:relative}
.brand{display:flex;align-items:center;gap:8px;background:none;border:0;padding:0;text-decoration:none}
.brand .logo{width:34px;height:34px;border-radius:10px;background:var(--brand);color:var(--brand-ink);display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:15px;box-shadow:0 3px 0 var(--brand-edge)}
.brand b{font-family:var(--display);font-weight:800;font-size:19px}
.chips{display:flex;gap:6px;align-items:center}
.chip{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:6px 11px;font-weight:700;font-size:15px;background:var(--card);border:1.5px solid var(--line);font-variant-numeric:tabular-nums;white-space:nowrap}
.chip.flame{background:var(--flame-soft);border-color:transparent;color:var(--flame)}
.chip.xp{background:var(--xp-soft);border-color:transparent;color:var(--xp)}
.chip.course{cursor:pointer}
.iconbtn{width:40px;height:40px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);display:grid;place-items:center;font-size:18px}
.menu{position:absolute;right:0;top:64px;z-index:20;background:var(--card);border:1.5px solid var(--line);border-radius:16px;box-shadow:0 14px 40px rgb(0 0 0 / .14);padding:8px;min-width:220px;display:flex;flex-direction:column}
.menu button{background:none;border:0;text-align:left;padding:10px 12px;border-radius:10px;font-weight:700}
.menu button:hover{background:var(--soft)}
.menu label{padding:10px 12px;font-weight:700;display:flex;justify-content:space-between;align-items:center;gap:10px}
select{font:inherit;font-size:15px;font-weight:700;color:var(--ink);background:var(--card);border:1.5px solid var(--line);border-radius:999px;padding:6px 10px}

/* ---------- Botones con relieve ---------- */
.btn{border:0;border-radius:16px;padding:14px 26px;font-weight:800;font-size:18px;font-family:var(--display);letter-spacing:.01em;
  background:var(--brand);color:var(--brand-ink);box-shadow:0 5px 0 var(--brand-edge);transition:transform .08s, box-shadow .08s}
.btn:active:not([disabled]){transform:translateY(4px);box-shadow:0 1px 0 var(--brand-edge)}
.btn.block{width:100%}
.btn.big{font-size:21px;padding:17px 32px}
.btn.ok{background:var(--ok);color:#fff;box-shadow:0 5px 0 var(--ok-edge)}
.btn.bad{background:var(--bad);color:#fff;box-shadow:0 5px 0 var(--bad-edge)}
.btn.ghost{background:var(--card);color:var(--ink);box-shadow:0 4px 0 var(--line);border:1.5px solid var(--line)}
.btn.small{padding:9px 16px;font-size:15px;border-radius:12px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.link{background:none;border:0;padding:0;color:var(--muted);text-decoration:underline;font-size:15px}

.card{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);padding:22px}

/* ---------- Portada ---------- */
.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;min-height:min(78vh,640px);padding-block:20px}
.hero h1{font-size:clamp(40px,7vw,72px);font-weight:800}
.hero h1 em{font-style:normal;color:var(--brand-edge)}
.hero .sub{font-size:20px;color:var(--muted);max-width:30ch}
.hero .meta{font-size:14px;color:var(--muted);font-weight:700}
.wordcloud{position:relative;height:460px}
.wcard{position:absolute;background:var(--card);border:1.5px solid var(--line);border-radius:20px;padding:14px 18px;display:flex;align-items:center;gap:12px;
  box-shadow:0 10px 30px rgb(24 33 61 / .10);font-family:var(--display);font-weight:700;font-size:20px;white-space:nowrap;animation:bob 5s ease-in-out infinite}
.wcard .e{font-size:40px;line-height:1}
.wcard small{display:block;font-family:var(--body);font-weight:400;font-size:12px;color:var(--muted)}
@keyframes bob{0%,100%{transform:translateY(0) rotate(var(--r,0deg))}50%{transform:translateY(-10px) rotate(var(--r,0deg))}}

/* Alta paso a paso */
.steps{display:flex;gap:6px}
.steps i{flex:1;height:8px;border-radius:99px;background:var(--line)}
.steps i.on{background:var(--brand)}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.tile{position:relative;background:var(--card);border:2px solid var(--line);border-radius:18px;padding:16px 14px;text-align:left;box-shadow:0 4px 0 var(--line);
  display:flex;flex-direction:column;gap:2px;min-width:0;transition:transform .08s}
.tile:active{transform:translateY(3px);box-shadow:0 1px 0 var(--line)}
.tile b{font-family:var(--display);font-size:22px;line-height:1.1}
.tile span{color:var(--muted);font-size:14px}
.tile[aria-pressed="true"]{border-color:var(--sky);box-shadow:0 4px 0 var(--sky);background:color-mix(in srgb, var(--sky) 8%, var(--card))}
.tile[disabled]{opacity:.45;cursor:not-allowed}
.tiles.levels .tile b{font-size:28px}

label{font-weight:700;font-size:15px;display:block;margin-bottom:6px}
input[type=text],input[type=email],input[type=password],input[type=date]{width:100%;padding:13px 15px;border-radius:14px;border:2px solid var(--line);background:var(--card);color:var(--ink);font:inherit}
input:focus{border-color:var(--sky)}
.field{min-width:0}
.row > .field{flex:1 1 220px}
.checks{display:flex;flex-direction:column;gap:10px}
.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:15px;margin:0}
.check input{width:20px;height:20px;margin-top:2px;flex:none;accent-color:var(--sky)}
.error{color:var(--bad);font-weight:700}
.error:empty,.ok-msg:empty{display:none}
.ok-msg{color:var(--ok);font-weight:700}
.notice{font-size:14px;color:var(--muted)}

/* ---------- Inicio ---------- */
.today{display:grid;grid-template-columns:auto 1fr;gap:24px;align-items:center}
.ring{width:132px;height:132px;position:relative;flex:none}
.ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:12}
.ring .track{stroke:var(--soft)}
.ring .bar{stroke:var(--ok);stroke-linecap:round;transition:stroke-dashoffset .8s ease}
.ring .label{position:absolute;inset:0;display:grid;place-items:center;text-align:center;line-height:1.1}
.ring .label b{font-family:var(--display);font-size:30px}
.ring .label small{font-size:12px;color:var(--muted);font-weight:700}
.today h1{font-size:30px}
.motiv{color:var(--muted);font-style:italic}

.path{display:flex;align-items:center;justify-content:space-between;position:relative;padding:6px 4px}
.path::before{content:"";position:absolute;left:24px;right:24px;top:50%;height:6px;border-radius:9px;background:var(--line);transform:translateY(-50%)}
.node{position:relative;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:16px;background:var(--card);border:3px solid var(--line);color:var(--muted)}
.node.done{background:var(--ok);border-color:var(--ok);color:#fff}
.node.now{background:var(--brand);border-color:var(--brand-edge);color:var(--brand-ink);transform:scale(1.15);box-shadow:0 0 0 6px color-mix(in srgb, var(--brand) 25%, transparent)}

.badges{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.badge{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;font-size:12px;font-weight:700;color:var(--muted)}
.badge i{font-style:normal;width:54px;height:54px;border-radius:50%;display:grid;place-items:center;font-size:28px;background:var(--xp-soft);border:2px solid color-mix(in srgb, var(--xp) 40%, transparent)}
.badge.locked i{filter:grayscale(1);opacity:.35;background:var(--soft);border-color:var(--line)}
.badge.locked{opacity:.7}

/* ---------- Hoja: tarjetas y ejercicios ---------- */
.quizbar{display:flex;align-items:center;gap:12px;padding-block:14px}
.quizbar .x{background:none;border:0;font-size:24px;color:var(--muted);width:40px;height:40px;border-radius:10px}
.progress{flex:1;height:16px;border-radius:99px;background:var(--line);overflow:hidden}
.progress i{display:block;height:100%;background:var(--ok);border-radius:99px;transition:width .35s ease;box-shadow:inset 0 -4px 0 rgb(0 0 0 / .12)}
.combo{font-family:var(--display);font-weight:800;color:var(--flame);white-space:nowrap;animation:pop .35s}
.prompt{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:10px;min-height:190px;text-align:center}
.prompt .pic{font-size:120px;line-height:1}
.prompt .def{font-family:var(--display);font-size:26px;font-weight:600;line-height:1.3;max-width:28ch}
.prompt .word{font-family:var(--display);font-size:44px;font-weight:800}
.gap{display:inline-block;min-width:4em;border-bottom:4px solid var(--brand);margin:0 .15em}
.ask{font-size:18px;font-weight:700;color:var(--muted);text-align:center}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.opts.long{grid-template-columns:1fr}
.opt{display:flex;align-items:center;gap:12px;text-align:left;background:var(--card);border:2px solid var(--line);border-radius:16px;padding:16px 16px;font-size:19px;font-weight:700;box-shadow:0 4px 0 var(--line);min-width:0;transition:transform .08s}
.opts.long .opt{font-weight:400;font-size:17px}
.opt kbd{flex:none;width:26px;height:26px;border-radius:8px;border:1.5px solid var(--line);display:grid;place-items:center;font:700 13px var(--body);color:var(--muted)}
.opt:hover:not([disabled]){border-color:var(--sky)}
.opt:active:not([disabled]){transform:translateY(3px);box-shadow:0 1px 0 var(--line)}
.opt.ok{background:var(--ok-soft);border-color:var(--ok);box-shadow:0 4px 0 var(--ok);animation:pop .3s}
.opt.bad{background:var(--bad-soft);border-color:var(--bad);box-shadow:0 4px 0 var(--bad);animation:shake .35s}
.opt[disabled]{cursor:default}
@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.06)}100%{transform:scale(1)}}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}

.flash{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding-block:10px}
.flash .pic{font-size:110px;line-height:1}
.flash h2{font-size:42px}
.flash .def{font-size:20px;max-width:34ch}
.flash .ex{font-style:italic;color:var(--muted);max-width:40ch}
.pill{display:inline-block;font-size:12px;font-weight:700;padding:3px 10px;border-radius:99px;white-space:nowrap;background:var(--soft);color:var(--muted)}
.pill.ok{background:var(--ok-soft);color:var(--ok)}
.pill.bad{background:var(--bad-soft);color:var(--bad)}
.speak{background:var(--soft);border:0;border-radius:99px;padding:6px 14px;font-size:14px;font-weight:700}

/* Panel de respuesta que sube desde abajo */
.sheet-bottom{position:fixed;left:0;right:0;bottom:0;z-index:30;padding:18px max(16px, env(safe-area-inset-right, 0px)) calc(18px + env(safe-area-inset-bottom, 0px)) max(16px, env(safe-area-inset-left, 0px));animation:up .25s ease-out}
.sheet-bottom.ok{background:var(--ok-soft)}
.sheet-bottom.bad{background:var(--bad-soft)}
.sheet-bottom .inner{max-width:680px;margin:0 auto;display:flex;flex-direction:column;gap:8px}
.sheet-bottom h3{font-size:24px}
.sheet-bottom.ok h3{color:var(--ok)}
.sheet-bottom.bad h3{color:var(--bad)}
.spacer{height:230px}
@keyframes up{from{transform:translateY(100%)}to{transform:translateY(0)}}

/* Resultado */
.result{display:flex;flex-direction:column;align-items:center;text-align:center;gap:16px;padding-block:20px}
.result .score{font-family:var(--display);font-size:72px;font-weight:800;line-height:1}
.rewards{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.reward{border-radius:18px;padding:12px 18px;font-family:var(--display);font-weight:800;font-size:20px}
.reward.xp{background:var(--xp-soft);color:var(--xp)}
.reward.flame{background:var(--flame-soft);color:var(--flame)}
.newbadge{display:flex;align-items:center;gap:12px;background:var(--card);border:2px solid var(--xp);border-radius:18px;padding:12px 18px;animation:pop .5s}
.newbadge i{font-style:normal;font-size:36px}

/* Confeti */
.confetti{position:fixed;inset:0;pointer-events:none;z-index:50;overflow:hidden}
.confetti i{position:absolute;top:-20px;width:10px;height:14px;border-radius:3px;animation:fall linear forwards}
@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}

/* Listas, idiomas, cuenta */
table{border-collapse:collapse;width:100%;font-size:15px}
.tablebox{overflow-x:auto;border:1.5px solid var(--line);border-radius:16px;background:var(--card)}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
td.w{font-weight:700;white-space:nowrap}
.course-list{display:flex;flex-direction:column;gap:10px}
.course-row{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--card);border:2px solid var(--line);border-radius:18px;padding:14px 16px}
.course-row.current{border-color:var(--brand)}
.course-row b{font-family:var(--display);font-size:20px}
.course-row .hello{font-size:13px;color:var(--muted)}
.rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px}
.rules div{background:var(--card);border:1.5px solid var(--line);border-radius:16px;padding:16px}
.rules b{font-family:var(--display);font-size:18px;display:block;margin-bottom:4px}
.confirm{background:var(--bad-soft);border-radius:14px;padding:12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.demo{font-size:13px;color:var(--muted);border:1.5px dashed var(--line);border-radius:14px;padding:10px 12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
footer{margin-top:40px;font-size:13px;color:var(--muted)}

/* Objetivos de la portada */
.goals{display:flex;gap:12px;flex-wrap:wrap;margin-top:-10px}
.goal{display:flex;align-items:center;gap:10px;font-size:14px;background:var(--card);border:1.5px solid var(--line);border-radius:99px;padding:8px 14px}
.dots{display:flex;gap:5px}
.dots i{width:12px;height:12px;border-radius:50%;background:var(--line)}
.dots i.on{background:var(--ok)}
.extra{font-weight:700}
.extra.bonus{color:var(--xp);animation:pop .5s}
button.chip{cursor:pointer}

/* Mi progreso */
.rank{display:flex;gap:18px;align-items:center}
.rank-icon{font-size:48px;width:72px;height:72px;border-radius:50%;display:grid;place-items:center;background:var(--xp-soft);flex:none}
.rank-name{font-family:var(--display);font-size:24px}
.rank .progress i{background:var(--xp)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.stat{background:var(--card);border:1.5px solid var(--line);border-radius:var(--radius);padding:14px;display:flex;flex-direction:column;gap:2px}
.stat b{font-family:var(--display);font-size:26px;font-variant-numeric:tabular-nums}
.stat span{font-size:13px;color:var(--muted);font-weight:700}
.cal{display:grid;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;max-width:340px}
.cal i,.legend i{display:block;aspect-ratio:1;border-radius:4px;background:var(--soft)}
.cal i.on,.legend i.on{background:var(--ok)}
.cal i.saved,.legend i.saved{background:var(--sky)}
.cal i.future{background:transparent}
.cal i.today{outline:2px solid var(--brand);outline-offset:1px}
.legend{display:flex;gap:16px;font-size:13px}
.legend span{display:flex;align-items:center;gap:6px}
.legend i{width:12px}
.pct-chart{width:100%;max-width:460px;height:auto}
.pct-chart path{fill:none;stroke-width:3;stroke-linecap:round}
.pct-chart path.better{stroke:var(--ok)}
.pct-chart path.worse{stroke:var(--bad)}
.pct-chart .axis{stroke:var(--line);stroke-width:1.5}
.pct-chart text{font-size:13px;font-weight:700;font-family:var(--body)}
.pct-chart text.small{font-size:11px}
.pct-chart text.better{fill:var(--ok)}
.pct-chart text.worse{fill:var(--bad)}
.pct-chart .you{fill:var(--brand);stroke:var(--card);stroke-width:2}
.pct-chart .you-label{fill:var(--ink);font-size:12px}
.levelbars{display:flex;flex-direction:column;gap:8px}
.lb{display:grid;grid-template-columns:36px 1fr 92px;gap:10px;align-items:center;font-size:14px}
.lb .progress{height:12px}
.lb span{text-align:right;font-variant-numeric:tabular-nums}
.lb.now b{color:var(--brand-edge)}
.hard{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.hard li{display:flex;align-items:center;gap:12px;background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:10px 14px}
.hard .e{font-size:28px;width:36px;text-align:center;flex:none}
.hard li div{display:flex;flex-direction:column;flex:1;min-width:0}
.hard li div span{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Páginas públicas de vocabulario (scripts/build-seo.mjs) y enlaces del pie */
a.btn,a.tile{text-decoration:none}
a.btn{display:inline-block}
.seo main h2{font-size:24px}
.seo-links{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.langnav{display:flex;flex-wrap:wrap;gap:6px 14px;margin-bottom:10px}
.langnav a{text-decoration:none;font-weight:700}
.langnav a:hover{text-decoration:underline}
.crumbs{font-size:14px;color:var(--muted)}
.levelnav{display:flex;gap:8px;flex-wrap:wrap}
.levelnav a{text-decoration:none;font-weight:800;padding:6px 14px;border-radius:99px;background:var(--card);border:1.5px solid var(--line)}
.levelnav a[aria-current]{background:var(--brand);border-color:var(--brand-edge);color:var(--brand-ink)}
.samples{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.sample{background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:2px}
.sample span{font-size:32px}
.sample small{color:var(--muted);font-size:13px}
.viqui{display:flex;gap:14px;align-items:flex-start;background:linear-gradient(135deg,#fff3dc,#ffe1e1);color:#3b1d14;border-radius:var(--radius);padding:16px 18px;border:1.5px solid #f5c7a0}
.viqui .viqui-icon{font-size:34px;line-height:1}
.viqui b{font-family:var(--display);font-size:18px}
.viqui p{font-size:15px;margin-top:4px}
.viqui a{font-weight:700;color:#a3221a}
.viqui-links{display:flex;flex-wrap:wrap;gap:4px 10px}

/* Subida de nivel */
.levelup{gap:18px}
.medal{position:relative;width:170px;height:170px;border-radius:50%;display:grid;place-items:center;
  background:radial-gradient(circle at 35% 30%,#fff6d8,#ffcc4d 45%,#e8a20c 100%);box-shadow:0 10px 0 var(--brand-edge),0 0 0 10px color-mix(in srgb,var(--brand) 25%,transparent);
  animation:medal 1.1s cubic-bezier(.2,1.6,.4,1) both, glow 2.4s ease-in-out 1.1s infinite}
.medal span{font-size:64px;line-height:1;margin-top:-18px}
.medal b{position:absolute;bottom:26px;font-family:var(--display);font-weight:800;font-size:30px;color:#3b2500}
@keyframes medal{0%{transform:scale(0) rotate(-30deg)}100%{transform:scale(1) rotate(0)}}
@keyframes glow{0%,100%{box-shadow:0 10px 0 var(--brand-edge),0 0 0 10px color-mix(in srgb,var(--brand) 25%,transparent)}
  50%{box-shadow:0 10px 0 var(--brand-edge),0 0 0 22px color-mix(in srgb,var(--brand) 12%,transparent)}}
.lede{font-size:19px;max-width:56ch}

/* Campo trampa para bots: fuera de la pantalla, no se ve ni se puede tabular */
.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}

/* Viquiràdio */
.viqui-line a{font-weight:700;color:var(--ink)}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .viqui{background:linear-gradient(135deg,#3a2a14,#3a1d1d);color:#ffe9d6;border-color:#5a3a24}
  :root:not([data-theme="light"]) .viqui a{color:#ffb3a8} }

/* Contraseña con botón para verla */
.pw{position:relative;display:flex}
.pw input{flex:1;padding-right:52px}
.pw-eye{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:44px;height:40px;border:0;border-radius:10px;background:transparent;font-size:20px;line-height:1}
.pw-eye:hover{background:var(--soft)}
.caps{font-size:13px;font-weight:700;color:var(--flame);margin-top:6px}

/* Bienvenida, consejos y ayuda */
.tour{position:fixed;inset:0;z-index:50;background:rgb(15 20 38 / .55);display:grid;place-items:end center;padding:16px;animation:fade .25s}
.tour-card{background:var(--card);border-radius:24px;padding:26px 22px 20px;width:100%;max-width:440px;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;box-shadow:0 20px 60px rgb(0 0 0 / .3);animation:rise .3s ease}
.tour-icon{font-size:56px;line-height:1}
.tour-card h2{font-size:26px}
.tour-card p{color:var(--muted)}
@media (min-width:600px){ .tour{place-items:center} }
@keyframes fade{from{opacity:0}}
@keyframes rise{from{transform:translateY(24px);opacity:0}}
.tip{display:flex;gap:10px;align-items:center;justify-content:space-between;background:var(--xp-soft);color:var(--ink);border-radius:14px;padding:10px 14px;font-size:15px;margin-bottom:14px}
.tip .link{white-space:nowrap;font-weight:700}
.hint{font-size:15px;background:var(--soft);border-radius:12px;padding:10px 14px}
.faq{display:flex;flex-direction:column;gap:8px}
.faq details{background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:4px 16px}
.faq summary{cursor:pointer;font-weight:700;padding:10px 0;list-style:none;display:flex;justify-content:space-between;gap:10px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-size:22px;line-height:1;color:var(--muted)}
.faq details[open] summary::after{content:"−"}
.faq details p{padding:0 0 14px;color:var(--muted)}
footer.wrap{margin-top:48px}
body.inapp .langnav{display:none}

.suggest{border-color:var(--xp);background:var(--xp-soft)}
.knew[aria-pressed="true"]{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}
.legal h2{margin-top:10px}
.legal ul{margin:0;padding-left:20px}
.notrans{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 8%,var(--card))}
.notrans ul{margin:0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:6px}
.video{display:flex;gap:14px;align-items:flex-start}
.video-icon{font-size:32px;line-height:1}
.video p{margin-top:4px}
.video a{font-weight:700}
/* Estadísticas del equipo */
.admin .stat small{font-size:12px}
.hbars{display:flex;flex-direction:column;gap:8px}
.hbar{display:grid;grid-template-columns:140px 1fr 60px;gap:10px;align-items:center;font-size:14px}
.hbar b{text-align:right;font-variant-numeric:tabular-nums}
.admin-tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:2px solid var(--line);padding-bottom:10px}
.admin-tabs button{border:0;background:transparent;font-weight:700;padding:8px 12px;border-radius:10px;color:var(--muted)}
.admin-tabs button:hover{background:var(--soft)}
.admin-tabs button[aria-current="page"]{background:var(--brand);color:var(--brand-ink)}
.link-tile{text-align:left;font:inherit;cursor:pointer;transition:transform .15s,border-color .15s}
.link-tile:hover{transform:translateY(-2px);border-color:var(--brand)}
.link-tile .go{color:var(--brand-edge);font-weight:700;margin-top:4px}
.admin-lang .btn{padding:6px 12px}
.hardgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.hardgrid ol{margin:8px 0 0;padding-left:20px;font-size:15px}
.vbars{display:flex;align-items:flex-end;gap:3px;height:140px;background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:12px}
.vbars i{flex:1;background:var(--ok);border-radius:3px 3px 0 0;min-height:2px}
/* Certificado de nivel (certificate.html): una hoja A4 apaisada que se imprime o se guarda en PDF */
.cert-page main > .certificate{max-width:960px}
.cert-ok{text-align:center;font-weight:800;color:var(--ok);margin-bottom:12px}
.certificate{max-width:960px;margin:0 auto;aspect-ratio:297/210;background:#fffaf0;color:#1b2440;border:14px solid #e8a20c;outline:2px solid #1b2440;outline-offset:-30px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;padding:40px 60px;box-shadow:0 20px 60px rgb(0 0 0 / .15)}
.certificate p{max-width:none;margin:0}
.cert-logo{width:58px;height:58px;border-radius:14px;background:#ffb020;color:#3b2500;display:grid;place-items:center;font-family:var(--display);font-weight:800;font-size:24px}
.cert-brand{font-family:var(--display);font-weight:800;font-size:20px}
.certificate h1{font-size:44px;text-transform:uppercase;letter-spacing:.08em;margin-top:6px}
.cert-small{color:#5c6684;font-size:17px}
.cert-name{font-family:var(--display);font-weight:800;font-size:48px;line-height:1.1;margin:6px 0}
.cert-level{font-family:var(--display);font-weight:800;font-size:96px;color:#e8a20c;line-height:1}
.cert-meta{font-weight:700;font-size:16px}
.cert-foot{color:#5c6684;font-size:12px;margin-top:10px!important}
@media (max-width:700px){ .certificate{aspect-ratio:auto;padding:28px 20px;border-width:8px;outline-offset:-18px} .cert-name{font-size:32px} .cert-level{font-size:64px} .certificate h1{font-size:28px} }
@media print{
  @page{size:A4 landscape;margin:0}
  body.cert-page{padding:0;background:#fff}
  .no-print,footer{display:none!important}
  .cert-page .certificate{max-width:none;width:297mm;height:210mm;box-shadow:none;margin:0}
}
/* El gran momento: subida de nivel */
.levelup.show{position:relative;overflow:hidden}
.burst{position:absolute;left:50%;top:150px;width:900px;height:900px;margin:-450px 0 0 -450px;z-index:-1;opacity:.55;
  background:repeating-conic-gradient(from 0deg,color-mix(in srgb,var(--brand) 35%,transparent) 0 8deg,transparent 8deg 20deg);
  border-radius:50%;mask:radial-gradient(circle,#000 20%,transparent 65%);animation:spin 24s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.medal-stage{perspective:900px;margin:10px 0}
.medal-flip{position:relative;width:170px;height:170px;transform-style:preserve-3d;animation:medal 1.1s cubic-bezier(.2,1.6,.4,1) both, flip 1s ease-in-out 2.2s forwards}
.medal-flip.fin{animation:medal 1.1s cubic-bezier(.2,1.6,.4,1) both}
.medal-flip .face{position:absolute;inset:0;backface-visibility:hidden;animation:glow 2.4s ease-in-out 1.1s infinite}
.medal-flip .back{transform:rotateY(180deg);background:radial-gradient(circle at 35% 30%,#e3f9ee,#5fd39a 45%,#1fae6f 100%);box-shadow:0 10px 0 var(--ok-edge)}
@keyframes flip{to{transform:rotateY(180deg)}}
.show-stats{width:100%;max-width:520px;grid-template-columns:repeat(3,1fr)!important}
.show-stats .stat{align-items:center;text-align:center}
.cert-cta{width:100%;max-width:520px;text-align:left;border:2px solid var(--brand);background:color-mix(in srgb,var(--brand) 8%,var(--card))}
.certs{display:flex;flex-direction:column;gap:10px}
.cert-row{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:14px 16px}
@media (prefers-reduced-motion: reduce){ .burst,.medal-flip{animation:none} }
@media (max-width:760px){
  .hero{grid-template-columns:1fr;min-height:0;gap:10px}
  .wordcloud{height:auto;order:-1;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;padding-block:8px 4px}
  .wcard{position:static;font-size:15px;padding:8px 12px;gap:8px;border-radius:16px}
  .wcard .e{font-size:26px}
  .wcard:nth-child(n+7){display:none}
}
@media (max-width:520px){
  .stats{grid-template-columns:repeat(2,1fr)}
  .rank-icon{width:56px;height:56px;font-size:36px}
  .tiles{grid-template-columns:repeat(2,1fr)}
  .tiles.levels{grid-template-columns:repeat(3,1fr)}
  .opts{grid-template-columns:1fr}
  .today{grid-template-columns:1fr;justify-items:center;text-align:center}
  .badges{grid-template-columns:repeat(5,1fr);gap:6px}
  .badge i{width:44px;height:44px;font-size:22px}
  .badge span{display:none}
  .node{width:40px;height:40px;font-size:13px}
  .chip{padding:5px 9px;font-size:14px}
  .brand b{display:none}
  .prompt .pic{font-size:96px}
  .card{padding:18px}
}
@media (prefers-reduced-motion: reduce){
  .medal{animation:none}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .confetti{display:none}
}
main > :not(.hero){max-width:680px;margin-inline:auto}
