/* Klee One (Fontworks, SIL OFL 1.1 · fonts/OFL-KleeOne.txt): solo los kana, para dibujar los trazos con letra de cuaderno escolar */
@font-face{font-family:'Klee One Kana';src:url('../fonts/klee-one-kana.woff2') format('woff2');font-weight:400;font-display:swap;unicode-range:U+3041-30FF;}
  :root{
    --letra-mano:'Klee One Kana','Zen Maru Gothic',sans-serif;   /* los kana mientras se aprenden: letra de cuaderno (ver «Kana de 5 en 5») */
    --washi:#f2ecdc; --washi-deep:#e9e0c9;
    --sumi:#2b2a28; --ai:#28415c; --ai-deep:#1b2c40;
    --shu:#bd4932; --shu-deep:#963824; --kincha:#b8912f;
    --bosque:#16211a; --hoja-bosque:#2a3a28; --luz-sol:#ffe7a8;   /* bienvenida «komorebi» (js/motor/escenas.js) */
    --matcha:#5c7a52; --line:#c9bd9c;
    --obi-amarillo:#d3ac45; --obi-amarillo-n:#a8862c; --obi-naranja:#c8743a; --obi-naranja-n:#9c5626; --obi-verde:#5c7a52; --obi-verde-n:#435a3b;
    --obi-azul:#2f4d6e; --obi-azul-n:#213650; --obi-marron:#7a5230; --obi-marron-n:#5e3f24; --obi-negro:#2b2a28; --obi-negro-n:#151412;   /* cinturones del dōjō (js/motor/dojo.js) */
    --obi-tinta:var(--sumi); --fusuma-papel:#f6efdf; --fusuma-marco:#6e4c27; --obi-sombra:rgba(40,24,8,.22); --obi-brillo:rgba(255,255,255,.5);   /* cinturones con volumen (23/10): contorno de tinta, lado en sombra, brillo y costuras */
    /* Colores derivados (antes estaban fijos en cada regla): los temas oscuros los redefinen */
    --papel:#fffdf6; --gris:#8a8371; --gris-osc:#6d6656; --gris-cl:#a49a80;
    --gris-cl-2:#b5ab90; --gris-osc-2:#5e5848; --line-cl:#d9cdb0; --tinte-shu:#fff3e4;
    --tinte-shu-2:#fff8ee; --tinte-shu-3:#fff8ec; --tinte-shu-4:#fff6ea; --tinte-papel:#fbf6ea;
    --tinte-matcha:#f4f7ef; --tinte-kincha:#e9d9a6; --tinte-kincha-2:#f2d9a0; --tinte-murasaki:#e9d3f0;
    --matcha-osc:#3d5535; --matcha-osc-2:#34482e; --matcha-osc-3:#4f6a46; --kincha-osc:#8a6a22;
    --kincha-osc-2:#7d6220; --kincha-osc-3:#6b531a; --kincha-osc-4:#64491a; --shu-osc:#a8402b;
    --shu-osc-2:#7e2e1d; --murasaki:#6a4c7d; --murasaki-osc:#4a3459;
    /* Fichas de las frases (js/motor/frases.js), como las del mahjong: cara de hueso, lomo verde, tinta según el tipo */
    --ficha-cara:#fbf8ef; --ficha-cara-2:#efe9da; --ficha-luz:#fffdf8; --ficha-canto:#d9d0bb; --ficha-marco:rgba(43,42,40,.10);
    --ficha-lomo:#6f8a7a; --ficha-lomo-2:#566e60; --ficha-sombra:rgba(43,42,40,.14);
    --ficha-tinta:#2b2a28; --ficha-tinta-p:#9a3f2c; --ficha-tinta-v:#3c5a47;
    --atril:#ebe1c9; --atril-2:#e0d4b8; --atril-raya:#c7b994; --atril-sombra:rgba(90,70,40,.18);
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{
    background:
      radial-gradient(ellipse at 15% 10%, color-mix(in srgb, var(--kincha) 7%, transparent), transparent 40%),
      radial-gradient(ellipse at 85% 90%, color-mix(in srgb, var(--ai) 7%, transparent), transparent 45%),
      var(--washi);
    background-attachment:fixed;
    font-family:'Noto Serif', serif; color:var(--sumi);
    min-height:100vh; padding:28px max(16px, env(safe-area-inset-right)) 60px max(16px, env(safe-area-inset-left));
  }
  .wrap{max-width:660px;margin:0 auto;}
  .hdr{position:relative;text-align:center;margin-bottom:22px;}
  /* Tu hanko, arriba a la derecha: abre «Tú» (cuenta y configuración). Con cuenta, un puntito verde (en la nube). */
  .hdr .acct{position:absolute;top:0;right:0;margin:0;}
  /* Un poco más grande y con relieve: un disco de papel grueso, con luz arriba y sombra abajo; al pulsarlo se hunde. */
  .tu-btn{position:relative;display:block;padding:4px;border:0;border-radius:50%;cursor:pointer;line-height:0;transform:rotate(-4deg);
    background:radial-gradient(circle at 35% 28%, var(--papel), color-mix(in srgb, var(--papel) 88%, var(--sumi)) 100%);
    box-shadow:inset 0 1.5px 0 color-mix(in srgb, var(--papel) 70%, white), inset 0 -2px 3px color-mix(in srgb, var(--sumi) 10%, transparent),
      0 1px 1px color-mix(in srgb, var(--sumi) 14%, transparent), 0 4px 10px -2px color-mix(in srgb, var(--sumi) 20%, transparent);
    transition:box-shadow var(--dur-rapida, .16s) var(--curva-suave, ease), transform var(--dur-rapida, .16s) var(--curva-suave, ease);}
  .tu-btn .hanko{display:block;width:48px;height:48px;}
  .tu-btn:active{transform:rotate(-4deg) translateY(1px);box-shadow:inset 0 2px 4px color-mix(in srgb, var(--sumi) 16%, transparent), 0 1px 2px color-mix(in srgb, var(--sumi) 12%, transparent);}
  .tu-btn:focus-visible{outline:2px solid var(--shu);outline-offset:2px;}
  @media (hover:hover){ .tu-btn:hover{box-shadow:inset 0 1.5px 0 color-mix(in srgb, var(--papel) 70%, white), inset 0 -2px 3px color-mix(in srgb, var(--sumi) 10%, transparent),
      0 2px 2px color-mix(in srgb, var(--sumi) 14%, transparent), 0 8px 16px -4px color-mix(in srgb, var(--sumi) 24%, transparent);} }
  @media (max-width:420px){ .tu-btn .hanko{width:44px;height:44px;} }
  .tu-nube{position:absolute;right:3px;bottom:3px;width:12px;height:12px;border-radius:50%;background:var(--matcha);box-shadow:0 0 0 2px var(--washi);}
  /* La carta junto al hanko (29/10, js/motor/carta.js): sin cuenta, un sobre con lacre asoma por detrás del sello.
     El hanko no cambia. La zona que se toca es más grande que el sobre (::before). Al llegar, asoma una vez. */
  .tu-carta{position:absolute;right:-7px;bottom:-3px;width:30px;height:22px;padding:0;border:0;background:none;cursor:pointer;
    transform:rotate(12deg);filter:drop-shadow(0 1px 1.5px color-mix(in srgb, var(--sumi) 22%, transparent));line-height:0;}
  .tu-carta::before{content:"";position:absolute;inset:-9px -7px -7px -9px;}
  .tu-carta:focus-visible{outline:2px solid var(--shu);outline-offset:3px;border-radius:4px;}
  .cc-sobre{display:block;width:100%;height:100%;}
  .cc-papel{fill:var(--papel);stroke:color-mix(in srgb, var(--sumi) 42%, transparent);stroke-width:1.1;}
  .cc-solapa, .cc-pliegue{stroke:color-mix(in srgb, var(--sumi) 38%, transparent);stroke-width:1;stroke-linejoin:round;}
  .cc-lacre{fill:var(--shu);}
  .cc-lacre-luz{fill:color-mix(in srgb, var(--papel) 60%, transparent);}
  @media (prefers-reduced-motion:no-preference){ .tu-carta{animation:cc-asoma .7s .4s var(--curva-suave, ease-out) backwards;} }
  @keyframes cc-asoma{from{opacity:0;transform:translate(-8px,-6px) rotate(0deg);}to{opacity:1;transform:rotate(12deg);}}
  @media (hover:hover){ .tu-carta:hover{transform:rotate(6deg) translateY(-1px);} }
  /* «Tu hanko aún no tiene tinta», en «Tú» */
  .cc-tu{background:var(--papel);border:1px solid var(--line);border-radius:14px;padding:16px 18px 10px;margin:0 0 14px;display:flex;flex-direction:column;gap:8px;}
  .cc-tu-t{font-family:'Shippori Mincho',serif;font-size:1.2rem;color:var(--ai-deep);}
  .cc-tu p{margin:0;font-family:'Zen Maru Gothic',sans-serif;font-size:.88rem;line-height:1.55;color:var(--gris-osc);}
  .cc-tu .btn{width:100%;margin:6px 0 0;}
  .cc-tu .cc-tu-entrar{align-self:center;padding:8px;font-family:'Shippori Mincho',serif;font-size:1rem;color:var(--shu);}
  /* La cabecera es el mismo logo que cierra la bienvenida (.bv-marca): Komorebi · 木漏れ日 · Japonés paso a paso */
  .hdr .kanji{font-family:'Shippori Mincho', serif;font-weight:700;font-size:2.3rem;color:var(--sumi);letter-spacing:.04em;line-height:1;margin:0;}
  /* El título lleva al Camino (js/motor/camino.js): un botón que se ve igual que el título, en todos los temas */
  .hdr .hdr-ir{font:inherit;color:inherit;letter-spacing:inherit;line-height:inherit;text-shadow:inherit;background:none;border:0;margin:0;padding:0;border-radius:4px;cursor:pointer;-webkit-tap-highlight-color:transparent;}
  .hdr .hdr-ir:focus-visible{outline:2px solid var(--shu);outline-offset:3px;}
  .hdr .marca-kj{font-family:'Shippori Mincho', serif;font-size:.9rem;letter-spacing:.5em;padding-left:.5em;color:var(--shu);margin:8px 0 0;line-height:1.2;}
  .hdr .sub{font-family:'Zen Maru Gothic', sans-serif;font-size:.88rem;color:var(--gris);letter-spacing:.02em;margin-top:5px;}
  .lang-btn{margin-top:8px;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;background:none;border:1px solid var(--line);border-radius:14px;padding:4px 12px;color:var(--gris);cursor:pointer;}@media (hover:hover){
  .lang-btn:hover{border-color:var(--ai);color:var(--ai-deep);}}
  .hdr .rule{width:120px;height:3px;margin:14px auto 0;background:linear-gradient(90deg, transparent, var(--kincha), transparent);}

  .menu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;}
  .cat-card{
    background:var(--papel);border:1px solid var(--line);border-radius:8px;
    padding:20px 18px;cursor:pointer;text-align:left;font-family:'Zen Maru Gothic',sans-serif;
    box-shadow:0 2px 0 var(--line);transition:transform .12s ease;
  }@media (hover:hover){
  .cat-card:hover{transform:translateY(-2px);border-color:var(--ai);}}
  .cat-card .n{font-family:'Shippori Mincho',serif;font-size:1.7rem;color:var(--ai-deep);display:block;margin-bottom:6px;}
  .cat-card .t{font-weight:500;font-size:1.05rem;display:block;margin-bottom:4px;}
  .cat-card .c{font-size:.78rem;color:var(--gris);}
  .cat-card .prog{margin-top:10px;height:5px;border-radius:4px;background:var(--washi-deep);overflow:hidden;}
  .cat-card .prog span{display:block;height:100%;background:var(--matcha);width:0%;}

  .progress-row{display:flex;align-items:center;gap:12px;margin-bottom:22px;}
  .back-btn{
    font-family:'Zen Maru Gothic',sans-serif;border:1.5px solid var(--line);background:var(--washi);
    border-radius:6px;padding:8px 10px;cursor:pointer;color:var(--sumi);flex-shrink:0;
  }@media (hover:hover){
  .back-btn:hover{border-color:var(--ai);}}
  .progress-track{flex:1;height:8px;border-radius:6px;background:var(--washi-deep);border:1px solid var(--line);overflow:hidden;}
  .progress-fill{height:100%;background:linear-gradient(90deg, var(--ai), var(--ai-deep));width:0%;transition:width .3s ease;}
  /* «Una vuelta más» (PR-13): las falladas, al final, con su propia barra en verde matcha (app.js, tramoLeccion) */
  .progress-vuelta{border-color:var(--matcha);} .progress-vuelta .progress-fill{background:var(--matcha);}
  .progress-label{font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--sumi);white-space:nowrap;}
  .score-badge{
    display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;
    border:2px solid var(--shu);color:var(--shu-deep);font-family:'Shippori Mincho',serif;font-weight:700;
    font-size:1rem;background:var(--washi);flex-shrink:0;
  }

  .card{background:var(--papel);border:1px solid var(--line);border-radius:4px;padding:26px 24px 24px;box-shadow:0 2px 0 var(--line), 0 10px 24px rgba(43,42,40,0.08);position:relative;min-height:300px;display:flex;flex-direction:column;}
  .card::before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:repeating-linear-gradient(90deg, var(--ai) 0 18px, transparent 18px 26px);opacity:.55;}
  .cat-tag{display:inline-block;font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ai-deep);background:color-mix(in srgb, var(--ai) 8%, transparent);border:1px solid color-mix(in srgb, var(--ai) 25%, transparent);padding:3px 10px;border-radius:20px;margin-bottom:14px;align-self:flex-start;}
  .question{font-family:'Zen Maru Gothic',sans-serif;font-size:1.12rem;line-height:1.55;color:var(--sumi);margin-bottom:18px;overflow-wrap:break-word;word-break:break-word;}
  /* REV-U12-02: el hueco, siempre del mismo ancho (conHuecos, core.js). Un solo ＿ estirado a 3 letras; el margen le guarda su sitio */
  .q-hueco{display:inline-block;transform:scaleX(3);margin:0 1em;}
  /* Pista de la escalera: la regla delante de la pregunta, como una nota al margen */
  .q-pista{display:flex;flex-direction:column;gap:2px;margin:0 0 14px;padding:9px 13px;border-left:3px solid var(--kincha);background:color-mix(in srgb, var(--kincha) 9%, var(--papel));border-radius:4px 10px 10px 4px;color:var(--sumi);font-size:.98rem;line-height:1.5;}
  .q-pista[hidden]{display:none;}   /* guardada tras «Pista» (la regla se va retirando) */
  .q-pista-t{font-family:'Zen Maru Gothic',sans-serif;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gris-osc);}
  /* Palabra que aún no ha salido en el camino, con su significado (frases, 31/10): una nota discreta bajo la pregunta */
  .q-nuevas{font-family:'Zen Maru Gothic',sans-serif;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin:-8px 0 16px;padding:6px 12px;border-radius:10px;border:1px dashed color-mix(in srgb, var(--kincha) 45%, transparent);background:color-mix(in srgb, var(--kincha) 6%, var(--papel));color:var(--sumi);font-size:.95rem;line-height:1.45;}
  .q-nuevas .q-pista-t{flex-basis:100%;}
  .q-nueva [lang="ja"]{font-size:1.05rem;}
  /* Botón «Pista» (farolillo): abre la explicación animada entera */
  .q-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
  .q-luz{display:inline-flex;align-items:center;gap:5px;margin-top:-2px;padding:4px 11px 4px 8px;border-radius:20px;border:1.5px solid color-mix(in srgb, var(--kincha) 55%, transparent);background:color-mix(in srgb, var(--kincha) 10%, var(--papel));color:var(--sumi);font-family:'Zen Maru Gothic',sans-serif;font-size:.82rem;cursor:pointer;flex-shrink:0;}
  .q-luz .ic-luz{width:20px;height:20px;}
  .ic-luz .ic-t{fill:none;stroke:var(--kincha);stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round;} .ic-luz .ic-fino{stroke-width:2;opacity:.7;}

  /* ---- Explicación animada: una diapositiva que se construye paso a paso ---- */
  .tut-puntos{flex:1;display:flex;justify-content:center;gap:8px;}
  .tut-puntos span{width:8px;height:8px;border-radius:50%;background:var(--line);}
  .tut-puntos span.on{background:var(--ai);transform:scale(1.25);} .tut-puntos span.hecho{background:color-mix(in srgb, var(--ai) 45%, var(--line));}
  .tut-saltar{color:var(--gris-osc);font-size:.88rem;text-decoration:underline;text-underline-offset:3px;padding:6px 4px;}
  .tut-card{cursor:pointer;padding-bottom:18px;}
  .tut-diapo{display:flex;flex-direction:column;align-items:center;text-align:center;}
  .tut-titulo{font-family:'Shippori Mincho',serif;font-size:1.25rem;color:var(--ai-deep);margin:2px 0 14px;}
  .tut-paso{position:relative;width:100%;opacity:0;padding-top:26px;}
  .tut-paso:first-of-type,.tut-titulo + .tut-paso{padding-top:0;}
  /* el hilo entre paso y paso: una flecha fina que baja */
  .tut-paso:not(:first-of-type):not(.tut-titulo + .tut-paso)::before{content:'';position:absolute;top:4px;left:50%;width:1.5px;height:15px;background:color-mix(in srgb, var(--gris) 55%, transparent);}
  .tut-paso:not(:first-of-type):not(.tut-titulo + .tut-paso)::after{content:'';position:absolute;top:13px;left:calc(50% - 4px);width:7px;height:7px;border-right:1.5px solid color-mix(in srgb, var(--gris) 55%, transparent);border-bottom:1.5px solid color-mix(in srgb, var(--gris) 55%, transparent);transform:rotate(45deg);}
  .tut-paso.ver{opacity:1;}
  .tut-trozo{white-space:nowrap;}
  .tut-ja{font-family:'Zen Maru Gothic','Noto Serif JP',sans-serif;font-size:clamp(1.25rem, 6.2vw, 1.65rem);font-weight:500;color:var(--sumi);letter-spacing:.04em;line-height:1.35;}
  .tut-es{margin-top:4px;color:var(--gris-osc);font-size:.98rem;}
  .tut-pregunta{font-family:'Zen Maru Gothic',sans-serif;font-size:1.02rem;color:var(--ai-deep);}
  .tut-nota{font-size:.9rem;color:var(--gris-osc);}
  .tut-pieza{display:flex;flex-direction:column;align-items:center;gap:6px;}
  .tut-pieza-ja{display:inline-block;padding:8px 18px;border-radius:14px;background:var(--shu);color:var(--washi);font-family:'Zen Maru Gothic',sans-serif;font-size:1.7rem;font-weight:700;letter-spacing:.04em;box-shadow:0 3px 0 var(--shu-deep);}
  .tut-pieza-txt{font-size:.92rem;color:var(--gris-osc);}
  /* comparar: filas enfrentadas, cada una con su dibujo y su etiqueta; lo que cambia, en bermellón */
  .tut-paso.tut-lado-sigue{padding-top:0;}
  .tut-paso.tut-lado-sigue:not(:first-of-type):not(.tut-titulo + .tut-paso)::before,.tut-paso.tut-lado-sigue:not(:first-of-type):not(.tut-titulo + .tut-paso)::after{content:none;}
  .tut-lado-caja{display:grid;grid-template-columns:44px minmax(0,1fr);gap:10px;align-items:center;text-align:left;padding:10px 12px;background:var(--tinte-papel);border:1px solid var(--line);border-radius:12px 12px 0 0;}
  .tut-lado-sigue .tut-lado-caja{border-top:1px dashed var(--line);margin-top:-1px;border-radius:0;}
  .tut-lado-caja.tut-lado-fin{border-bottom-left-radius:12px;border-bottom-right-radius:12px;}
  .tut-dib .ilus{width:42px;height:42px;}
  .tut-etq{display:block;font-family:'Zen Maru Gothic',sans-serif;font-size:.76rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ai);}
  .tut-lado .tut-ja{font-size:clamp(1.05rem, 5vw, 1.3rem);}
  .tut-lado .tut-es{font-size:.86rem;margin-top:2px;}
  .tut-nuevo{color:var(--shu);font-weight:700;display:inline-block;}
  .tut-quita{display:inline-block;color:var(--gris);text-decoration-line:line-through;text-decoration-color:var(--shu);text-decoration-thickness:2px;overflow:hidden;vertical-align:bottom;white-space:nowrap;}
  /* fila de la tabla de kana con la última letra del verbo moviéndose dentro (paso «fila» de la explicación animada) */
  .tut-kfila{--casilla:44px;position:relative;display:inline-grid;grid-template-columns:repeat(5,var(--casilla));border:1px solid var(--line);border-radius:12px;background:var(--papel);overflow:hidden;}
  .tut-kfila span{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;height:56px;border-right:1px solid var(--line);}
  .tut-kfila span:nth-child(5){border-right:0;}
  .tut-kfila b{font-family:var(--letra-mano);font-size:1.45rem;font-weight:400;color:var(--sumi);line-height:1.1;}
  .tut-kfila i{font-style:normal;font-size:.72rem;color:var(--gris-osc);}
  .tut-kfila .tut-fila-de b{color:var(--gris);}
  .tut-kfila .tut-fila-a b{color:var(--shu);font-weight:600;}
  .tut-fila-marca{position:absolute;top:0;bottom:0;width:var(--casilla);left:calc(var(--a) * var(--casilla));border:2.5px solid var(--shu);border-radius:11px;background:color-mix(in srgb, var(--shu) 10%, transparent);pointer-events:none;}
  .tut-kfila + .tut-es{margin-top:8px;}
  /* la misma fila, en pequeño, en la respuesta al fallar del taller (la letra que has puesto, tachada) */
  .tfb-mini{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:10px 0 2px;}
  .tut-fila-mini{--casilla:34px;}
  .tut-fila-mini span{height:42px;}
  .tut-fila-mini b{font-size:1.1rem;}
  .tut-kfila .tut-fila-tuya b{color:var(--gris);text-decoration:line-through;text-decoration-color:var(--shu);text-decoration-thickness:2px;}
  .tfb-formas{margin-top:8px;}
  .tfb-formas summary{cursor:pointer;font-weight:600;color:var(--shu-deep);}
  .tfb-regla{margin:0 0 10px;}
  /* junta (paso de la explicación animada): dos piezas que se pegan en una sílaba o en un número */
  .tut-junta{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;}
  .tut-junta-p{font-family:var(--letra-mano);font-size:1.4rem;color:var(--sumi);padding:2px 12px;border:1px solid var(--line);border-radius:10px;background:var(--papel);}
  .tut-junta-peq{font-size:1rem;align-self:flex-end;margin-bottom:3px;}
  .tut-junta-mas,.tut-junta-flecha{color:var(--gris-osc);}
  .tut-junta-res{display:flex;flex-direction:column;align-items:center;}
  .tut-junta-rom{font-size:.85rem;color:var(--gris-osc);}
  /* grupo (paso de la explicación animada): las letras que se transforman igual → la terminación, como una pieza */
  .tut-grupo{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:10px;}
  .tut-grupo-letras{display:flex;gap:5px;}
  .tut-grupo-letras b{font-family:var(--letra-mano);font-size:1.35rem;font-weight:400;color:var(--sumi);padding:2px 11px;border:1px solid var(--line);border-radius:10px;background:var(--papel);}
  .tut-grupo-flecha{color:var(--gris-osc);}
  .tut-grupo-fin{display:inline-block;padding:5px 15px;border-radius:14px;background:var(--shu);color:var(--washi);font-family:'Zen Maru Gothic',sans-serif;font-size:1.45rem;font-weight:700;box-shadow:0 3px 0 var(--shu-deep);}
  /* serie (paso de la explicación animada): palabras que se aprenden juntas, cada una en su casilla */
  .tut-rejilla{display:grid;grid-template-columns:repeat(var(--cols, 5),minmax(0,1fr));gap:6px;width:100%;}
  .tut-serie-c{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;padding:8px 2px;border:1px solid var(--line);border-radius:10px;background:var(--papel);}
  .tut-serie-c .tut-ja{font-size:clamp(.82rem, 3.6vw, 1.1rem);font-weight:600;letter-spacing:0;overflow-wrap:anywhere;}
  .tut-rejilla-larga .tut-serie-c .tut-ja{font-size:clamp(.78rem, 3.3vw, 1rem);}
  .tut-serie-c i{font-style:normal;font-size:.74rem;line-height:1.25;color:var(--gris-osc);}
  .tut-serie-marca{background:var(--shu);border-color:var(--shu);}
  .tut-serie-marca .tut-ja,.tut-serie-marca i,.tut-serie-marca .tut-nuevo{color:var(--washi);}
  .tut-rejilla + .tut-es{margin-top:8px;}
  .tut-nav{display:flex;justify-content:center;margin-top:22px;}
  .tut-nav .btn{min-width:60%;padding:13px;font-size:1rem;}
  .tut-aviso{margin:4px 0 10px;}
  /* hoja de pista: todo visible, sin animación */
  .tut-velo{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:color-mix(in srgb, var(--sumi) 35%, transparent);padding:16px;}
  .tut-hoja{width:100%;max-width:520px;max-height:85vh;overflow:auto;cursor:default;}
  .tut-todo .tut-paso{opacity:1;}
  .tut-todo + .tut-todo{margin-top:22px;padding-top:18px;border-top:1px dashed var(--line);}
  @media (prefers-reduced-motion:no-preference){
    /* de borroso a nítido, subiendo un poco */
    .tut-diapo:not(.tut-todo) .tut-paso{filter:blur(7px);transform:translateY(12px);transition:opacity .75s ease, filter .75s ease, transform .75s cubic-bezier(.2,.8,.2,1);}
    .tut-diapo:not(.tut-todo) .tut-paso.ver{filter:none;transform:none;}
    /* la pieza llega con un pequeño golpe de sello */
    .tut-diapo:not(.tut-todo) .tut-pieza.ver .tut-pieza-ja{animation:tut-sello .55s .25s cubic-bezier(.3,1.6,.5,1) both;}
    /* en la frase final: lo que se va se tacha y se encoge; lo nuevo entra después, grande, y se asienta */
    .tut-diapo:not(.tut-todo) .tut-paso.ver .tut-quita{animation:tut-sale 1.1s .5s ease both;}
    .tut-diapo:not(.tut-todo) .tut-paso.ver .tut-nuevo{animation:tut-entra .7s 1.2s cubic-bezier(.3,1.5,.5,1) both;}
    /* la marca empieza en la letra del diccionario y se mueve a la nueva cuando el paso ya se ve */
    .tut-diapo:not(.tut-todo) .tut-fila-marca{left:calc(var(--de) * var(--casilla));transition:left .9s 1s cubic-bezier(.5,0,.2,1);}
    .tut-diapo:not(.tut-todo) .tut-paso.ver .tut-fila-marca{left:calc(var(--a) * var(--casilla));}
    /* junta: las dos piezas se acercan y el + se apaga, como si se pegaran */
    .tut-diapo:not(.tut-todo) .tut-junta-p{transition:transform .7s 1s cubic-bezier(.5,0,.2,1);}
    .tut-diapo:not(.tut-todo) .tut-junta-mas{transition:opacity .4s .9s;}
    .tut-diapo:not(.tut-todo) .tut-paso.ver .tut-junta-izq{transform:translateX(8px);}
    .tut-diapo:not(.tut-todo) .tut-paso.ver .tut-junta-der{transform:translateX(-8px);}
    .tut-diapo:not(.tut-todo) .tut-paso.ver .tut-junta-mas{opacity:0;}
    /* serie: las casillas entran una a una, en su orden (--k) */
    .tut-diapo:not(.tut-todo) .tut-serie-c{opacity:0;transform:scale(.9);transition:opacity .4s ease, transform .4s cubic-bezier(.3,1.4,.5,1);transition-delay:calc(.3s + var(--k, 0) * .38s);}
    .tut-diapo:not(.tut-todo) .tut-paso.ver .tut-serie-c{opacity:1;transform:none;}
    .tut-diapo:not(.tut-todo) .tut-frase:first-of-type .tut-nuevo,.tut-diapo:not(.tut-todo) .tut-titulo + .tut-frase .tut-nuevo,.tut-diapo:not(.tut-todo) .tut-lado .tut-nuevo{animation-delay:.3s;}
  }
  .tut-todo .tut-quita{display:none;}
  @keyframes tut-sello{from{transform:scale(1.8) rotate(-6deg);opacity:0;} to{transform:none;opacity:1;}}
  @keyframes tut-sale{0%{text-decoration-line:none;max-width:4em;opacity:1;} 35%{text-decoration-line:line-through;max-width:4em;opacity:1;} 100%{text-decoration-line:line-through;max-width:0;opacity:0;}}
  @keyframes tut-entra{from{transform:scale(1.7) translateY(-6px);opacity:0;} to{transform:none;opacity:1;}}
  .options{display:flex;flex-direction:column;gap:10px;margin-top:auto;}
  .opt-btn{font-family:'Zen Maru Gothic',sans-serif;font-size:1rem;text-align:left;padding:12px 16px;border-radius:6px;border:1.5px solid var(--line);background:var(--washi);cursor:pointer;transition:all .15s ease;color:var(--sumi);overflow-wrap:break-word;word-break:break-word;}@media (hover:hover){
  .opt-btn:hover:not(:disabled){border-color:var(--ai);background:var(--papel);}}
  .opt-btn:disabled{cursor:default;}
  .opt-btn.correct{background:color-mix(in srgb, var(--matcha) 18%, transparent);border-color:var(--matcha);color:var(--matcha-osc);font-weight:600;}
  .opt-btn.wrong{background:color-mix(in srgb, var(--shu) 14%, transparent);border-color:var(--shu);color:var(--shu-deep);}
  .opt-btn.focused{border-color:var(--ai);box-shadow:0 0 0 2px color-mix(in srgb, var(--ai) 25%, transparent);background:var(--papel);}
  .fill-row{display:flex;gap:10px;margin-top:auto;}
  .fill-row input, .fill-row textarea{flex:1;resize:none;overflow:hidden;height:auto;line-height:1.4;white-space:nowrap;font-family:'Zen Maru Gothic',sans-serif;font-size:1.1rem;padding:12px 14px;border-radius:6px;border:1.5px solid var(--line);background:var(--washi);color:var(--sumi);}
  .fill-row input:focus, .fill-row textarea:focus{outline:none;border-color:var(--ai);}
  .fill-row button{font-family:'Zen Maru Gothic',sans-serif;font-weight:500;padding:12px 18px;border-radius:6px;border:none;background:var(--ai);color:var(--washi);cursor:pointer;}@media (hover:hover){
  .fill-row button:hover{background:var(--ai-deep);}}
  .fill-row button:disabled{opacity:.5;cursor:default;}
  .feedback{margin-top:14px;padding:12px 14px;border-radius:6px;font-family:'Zen Maru Gothic',sans-serif;font-size:.92rem;line-height:1.5;display:none;}
  .feedback.show{display:block;}
  .feedback.ok{background:color-mix(in srgb, var(--matcha) 14%, transparent);color:var(--matcha-osc);border:1px solid color-mix(in srgb, var(--matcha) 40%, transparent);}
  .feedback.practica{background:color-mix(in srgb, var(--sumi) 6%, transparent);color:var(--sumi);border:1px solid var(--line);}
  .feedback.ko{background:color-mix(in srgb, var(--shu) 10%, transparent);color:var(--shu-deep);border:1px solid color-mix(in srgb, var(--shu) 35%, transparent);}
  .next-row{display:flex;justify-content:flex-end;}   /* fija abajo: «La barra de abajo de las lecciones», más abajo */
  .next-btn{font-family:'Zen Maru Gothic',sans-serif;font-weight:500;font-size:.95rem;background:var(--shu);color:var(--tinte-shu-2);border:none;border-radius:6px;padding:10px 22px;cursor:pointer;opacity:0;pointer-events:none;transition:opacity .2s;}
  /* Historias: «Continuar» apagado hasta contestar la pregunta (js/motor/historia.js) */
  .st-next-row{flex-direction:column;align-items:flex-end;gap:6px;}
  .st-nota{margin:0;font-size:.85rem;text-align:right;}
  .next-row .next-btn[aria-disabled="true"],.next-row .next-btn[aria-disabled="true"]:hover{background:var(--line);color:var(--gris-osc);cursor:default;}
  .next-btn.show{opacity:1;pointer-events:auto;}@media (hover:hover){
  .next-btn:hover{background:var(--shu-deep);}}

  .results{text-align:center;padding:20px 6px;}
  .results .stamp{width:92px;height:92px;border:3px solid var(--sumi);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-family:'Shippori Mincho',serif;color:var(--sumi);font-size:1.6rem;font-weight:700;transform:rotate(-6deg);}
  .results h2{font-family:'Shippori Mincho',serif;color:var(--ai-deep);margin:0 0 6px;}
  .results p{font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);margin:0 0 18px;}
  .results-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;}
  /* ===== Recompensas: racha 連, revancha, último tramo y sello final (js/motor/recompensas.js) ===== */
  /* El oro y la plata son de cada tema, pero siempre se leen como metal: nunca el color de acento del tema
     (en Sakura el kincha es rosa) ni el de una línea del camino (en Matsuri y Tokio de noche hay líneas amarillas).
     --rc-oro-filo: el canto del metal, un filo fino alrededor del anillo que lo separa de cualquier línea.
     --rc-oro-tinta: el oro cuando es texto (100 %, 金…), con contraste para leerse sobre el papel. */
  :root{--obi-blanco:#f4efe3;--rc-1:var(--sumi);--rc-2:var(--shu);--rc-3:var(--kincha);--rc-oro:var(--kincha);--rc-plata:#8d969e;--rc-bronce:#9a5a32;--rc-kj:var(--ai-deep);--rc-neon:var(--shu);
    --rc-oro-filo:color-mix(in srgb, var(--rc-oro) 55%, var(--sumi));--rc-oro-tinta:color-mix(in srgb, var(--rc-oro) 62%, var(--sumi));
    --rc-plata-filo:color-mix(in srgb, var(--rc-plata) 55%, var(--sumi));}
  :root[data-tema="sakura"]{--rc-1:#f2b7c6;--rc-2:#e892aa;--rc-3:#f7d6de;--rc-kj:var(--shu-deep);--rc-oro:#b8862a;}   /* oro miel: se ve oro entre los rosas */
  :root[data-tema="matsuri"]{--rc-1:#e0a020;--rc-2:#d23a24;--rc-3:#1f3a6e;--rc-kj:var(--shu-deep);--rc-oro:#a97c14;}   /* oro viejo: más hondo que el amarillo de los farolillos */
  :root[data-tema="samurai"]{--rc-1:#c9a24a;--rc-2:#e8dcc4;--rc-3:#c9a24a;--rc-kj:var(--sumi);--rc-oro:#ecd085;--rc-plata:#c3cad0;}   /* oro claro: brilla sobre el ocre y el bronce del tema */
  :root[data-tema="noche"]{--rc-1:var(--neon-rosa);--rc-2:var(--neon-cian);--rc-3:var(--neon-ambar);--rc-kj:var(--texto);--rc-neon:var(--neon-rosa);--rc-oro:#ffe2a0;--rc-plata:#c9c6e0;}   /* champán: más luz que el ámbar de las líneas */
  :root[data-tema="samurai"], :root[data-tema="noche"]{--rc-oro-filo:color-mix(in srgb, var(--rc-oro) 45%, var(--washi));--rc-oro-tinta:var(--rc-oro);--rc-plata-filo:color-mix(in srgb, var(--rc-plata) 45%, var(--washi));--rc-bronce:#c98a5c;}
  :root:is([data-tema="samurai"],[data-tema="noche"]){--fusuma-papel:#d9cfb8;--fusuma-marco:#7d5c34;--obi-tinta:color-mix(in oklab, var(--washi) 60%, #000);--obi-sombra:rgba(0,0,0,.45);}   /* cinturones: contorno y sombra en los temas oscuros */
  :root[data-tema="manga"]{--rc-1:var(--sumi);--rc-2:var(--sumi);--rc-3:var(--gris);--rc-kj:var(--sumi);}

  /* La racha: un sello 連 con los aciertos seguidos, en la esquina de la tarjeta */
  .rc-racha{position:absolute;top:-16px;right:14px;z-index:3;width:52px;height:52px;border:2.5px solid var(--shu);border-radius:10px;background:var(--papel);color:var(--shu-deep);
    display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;line-height:1;transform:rotate(-5deg);pointer-events:none;}
  .rc-racha small{font-size:.72rem;font-weight:700;} .rc-racha b{font-size:1.25rem;font-weight:700;margin-top:2px;}
  .rc-racha.oro{border-color:var(--rc-oro);color:var(--rc-oro);box-shadow:0 0 0 3px color-mix(in srgb, var(--rc-oro) 22%, transparent);}
  .rc-seguidas{position:absolute;top:44px;right:8px;z-index:3;font-family:'Shippori Mincho',serif;font-weight:700;font-size:1rem;color:var(--rc-oro);background:var(--papel);
    border:1px solid var(--rc-oro);border-radius:14px;padding:3px 10px;pointer-events:none;}
  .rc-check{position:absolute;right:16px;top:58px;width:64px;height:64px;z-index:2;pointer-events:none;}
  .rc-check path{fill:none;stroke:var(--matcha);stroke-width:12;stroke-linecap:round;stroke-linejoin:round;}
  .rc-racha.rota{display:none;}

  /* Último tramo: la barra se vuelve dorada y late */
  .progress-row.rc-tramo .progress-fill{background:linear-gradient(90deg, color-mix(in srgb, var(--rc-oro) 60%, var(--papel)), var(--rc-oro));}
  .progress-row.rc-tramo .progress-track{border-color:var(--rc-oro);}

  /* La revancha: el kanji del tema, a lo grande, sobre la tarjeta */
  .rc-revancha{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;overflow:hidden;pointer-events:none;border-radius:inherit;}
  .rc-velo{position:absolute;inset:0;background:color-mix(in srgb, var(--papel) 92%, transparent);}
  .rc-rv-txt{position:relative;text-align:center;padding:0 12px;}
  .rc-rv-kj{font-family:'Shippori Mincho',serif;font-weight:700;font-size:clamp(4rem, 22vw, 7.5rem);line-height:1;color:var(--rc-kj);}
  .rc-rv-kj.largo{font-size:clamp(2.6rem, 13vw, 4.6rem);}
  .rc-rv-sub{font-family:'Zen Maru Gothic',sans-serif;font-weight:700;color:var(--sumi);margin:12px 0 0;font-size:1rem;}
  .rc-rv-sub small{display:block;font-weight:400;color:var(--gris-osc);margin-top:3px;font-size:.85rem;}
  .rc-chispa{position:absolute;left:50%;top:45%;border-radius:50%;background:var(--rc-1);opacity:0;}
  .rc-chispa.c1{background:var(--rc-2);} .rc-chispa.c2{background:var(--rc-3);}
  .rc-chispa.petalo{border-radius:70% 10% 70% 10%;} .rc-chispa.raya{border-radius:2px;}
  .rc-tajo{position:absolute;left:-10%;width:120%;top:50%;height:4px;background:linear-gradient(90deg, transparent, var(--rc-1), var(--rc-2), transparent);transform:rotate(-18deg);transform-origin:left center;}
  .rc-ef-neon .rc-rv-kj{text-shadow:0 0 8px var(--rc-neon), 0 0 22px var(--rc-neon), 0 0 42px var(--rc-2);}
  .rc-rayos{position:absolute;left:50%;top:50%;width:max(170%, 560px);transform:translate(-50%,-50%);}
  .rc-rayos path{fill:var(--sumi);}
  .rc-ef-rayos .rc-rv-kj{font-family:'Dela Gothic One',sans-serif;color:var(--papel);-webkit-text-stroke:2px var(--sumi);text-shadow:4px 4px 0 var(--sumi);}
  .rc-ef-rayos .rc-rv-sub{background:var(--papel);display:inline-block;padding:4px 10px;border:2px solid var(--sumi);}
  .rc-revancha.fuera{opacity:0;transition:opacity .35s ease;}

  /* El final: la nota sube y cae el sello 良 / 優 / 秀 / 満点 */
  .rc-final{position:relative;height:0;}
  .rc-sello{position:absolute;left:calc(50% + 28px);top:-86px;width:58px;height:58px;border-radius:8px;background:var(--papel);color:var(--sumi);display:flex;align-items:center;justify-content:center;
    font-family:'Shippori Mincho',serif;font-weight:700;font-size:1.8rem;transform:rotate(8deg);border:2.5px solid var(--sumi);}
  .rc-sello.largo{font-size:1.15rem;letter-spacing:-.02em;}
  .rc-sello.oro{background:var(--papel);}   /* 04/11, Alex: la nota y su sello, siempre en tinta; el único metal es la medalla */
  .results .stamp.rc-oro{border-color:var(--sumi);color:var(--sumi);}

  @media (prefers-reduced-motion:no-preference){
    .rc-racha.pop{animation:rc-pop .35s ease-out;}
    .rc-racha.rota{display:flex;animation:rc-cae .85s ease-in forwards;}
    .rc-seguidas{animation:rc-sube 1.6s ease-out forwards;}
    .rc-check path{stroke-dasharray:120;stroke-dashoffset:120;animation:rc-trazo .4s ease-out forwards, rc-fuera .3s .75s ease forwards;}
    .card.rc-tiembla{animation:rc-tiembla .32s ease-in-out;}
    .progress-row.rc-tramo .progress-track{animation:rc-late 1.4s ease-in-out infinite;}
    .rc-revancha{opacity:0;transition:opacity .18s ease;} .rc-revancha.ve{opacity:1;} .rc-revancha.fuera{opacity:0;}
    .rc-revancha .rc-rv-kj{opacity:0;transform:scale(.4);} .rc-revancha.ve .rc-rv-kj{animation:rc-kj .6s cubic-bezier(.2,1.6,.4,1) forwards;}
    .rc-revancha.ve .rc-chispa{animation:rc-chispa 1.1s ease-out forwards;}
    .rc-tajo{transform:rotate(-18deg) scaleX(0);} .rc-revancha.ve .rc-tajo{animation:rc-tajo .35s ease-out forwards;}
    .rc-rayos{opacity:0;} .rc-revancha.ve .rc-rayos{animation:rc-rayos .4s ease-out forwards;}
    .rc-sello{opacity:0;} .rc-sello.ve{animation:rc-estampa .4s cubic-bezier(.3,1.4,.5,1) forwards;}
  }
  @keyframes rc-pop{0%{transform:rotate(-5deg) scale(.6)}60%{transform:rotate(-5deg) scale(1.18)}100%{transform:rotate(-5deg) scale(1)}}
  @keyframes rc-cae{0%{transform:rotate(-5deg)}25%{transform:rotate(14deg)}100%{transform:rotate(38deg) translateY(70px);opacity:0}}
  @keyframes rc-sube{0%{opacity:0;transform:translateY(8px)}15%{opacity:1;transform:none}80%{opacity:1}100%{opacity:0;transform:translateY(-8px)}}
  @keyframes rc-trazo{to{stroke-dashoffset:0}}
  @keyframes rc-fuera{to{opacity:0}}
  @keyframes rc-tiembla{0%,100%{transform:none}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
  @keyframes rc-late{0%,100%{box-shadow:0 0 0 0 color-mix(in srgb, var(--rc-oro) 0%, transparent)}50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--rc-oro) 28%, transparent)}}
  @keyframes rc-kj{to{opacity:1;transform:scale(1)}}
  @keyframes rc-chispa{0%{opacity:1;transform:translate(-50%,-50%) scale(.3)}100%{opacity:0;transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) rotate(var(--r)) scale(1)}}
  @keyframes rc-tajo{to{transform:rotate(-18deg) scaleX(1)}}
  @keyframes rc-rayos{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}100%{opacity:.92;transform:translate(-50%,-50%) scale(1)}}
  @keyframes rc-estampa{0%{opacity:0;transform:rotate(8deg) scale(2.2)}100%{opacity:1;transform:rotate(8deg) scale(1)}}
  .rc-cuenta{position:absolute;left:50%;top:-108px;width:92px;height:92px;margin-left:-46px;display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;color:var(--shu);font-size:1.6rem;font-weight:700;transform:rotate(-6deg);pointer-events:none;}
  .results .stamp.rc-contando{color:transparent;}
  .results .stamp.rc-oro + .rc-final .rc-cuenta{color:var(--sumi);}

  /* El tren avanza: en el camino, al volver de una lección (js/motor/recompensas.js) */
  .rc-tren{position:absolute;left:0;top:0;z-index:4;width:38px;height:24px;pointer-events:none;opacity:0;transition:opacity .25s ease;}
  .rc-tren.ve{opacity:1;} .rc-tren.fuera{opacity:0;transition:opacity .45s ease;}
  .rc-tren-c{fill:var(--papel);stroke:var(--sumi);stroke-width:1.6;} .rc-tren-v{fill:var(--ai);} .rc-tren-l{fill:var(--lc, var(--shu));} .rc-tren-r{fill:var(--sumi);}
  .rc-medida{fill:none;stroke:none;}
  .rc-cartel{position:fixed;left:50%;bottom:calc(var(--alto-tabbar, 0px) + 16px);z-index:60;display:flex;align-items:center;gap:10px;max-width:calc(100% - 32px);
    padding:8px 14px 8px 8px;border-radius:10px;background:var(--sumi);color:var(--papel);font-family:'Zen Maru Gothic',sans-serif;font-size:.9rem;line-height:1.3;
    box-shadow:0 6px 18px color-mix(in srgb, var(--sumi) 30%, transparent);transform:translate(-50%, 0);opacity:0;transition:opacity .3s ease, transform .3s ease;pointer-events:none;}
  .rc-cartel.ve{opacity:1;}
  .rc-cartel b{flex:0 0 auto;font-family:'Shippori Mincho',serif;font-size:1rem;background:var(--rc-oro);color:var(--sumi);border-radius:6px;padding:4px 8px;}
  .rc-cartel strong{font-weight:700;}
  .rc-ekisello{position:absolute;z-index:5;width:76px;height:76px;margin:-96px 0 0 -38px;border:3px solid var(--shu);border-radius:14px;outline:1.2px solid var(--shu);outline-offset:-8px;
    background:color-mix(in srgb, var(--papel) 88%, transparent);color:var(--shu);display:flex;flex-direction:column;align-items:center;justify-content:center;
    font-family:'Shippori Mincho',serif;line-height:1.1;transform:rotate(-8deg);pointer-events:none;}
  .rc-ekisello b{font-size:1.2rem;} .rc-ekisello span{font-size:.75rem;margin-top:3px;}
  .rc-ekisello.fuera{opacity:0;transition:opacity .45s ease;}
  .pl-tren .pl-tren-c{fill:var(--papel);stroke:var(--sumi);stroke-width:1.2;} .pl-tren .pl-tren-v{fill:var(--ai);} .pl-tren .pl-tren-l{fill:var(--shu);}
  @media (prefers-reduced-motion:no-preference){
    .rc-cartel{transform:translate(-50%, 14px);} .rc-cartel.ve{transform:translate(-50%, 0);}
    .st.rc-ola .st-dot{animation:rc-ola 1.2s ease-out;} .st.rc-llega .st-dot{animation:rc-ola 1s ease-out 2;}
    .rc-ekisello{opacity:0;} .rc-ekisello.ve{animation:rc-estampa-eki .4s cubic-bezier(.3,1.4,.5,1) forwards;} .rc-ekisello.ve.fuera{animation:rc-fuera .45s ease forwards;}
  }
  @keyframes rc-ola{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--lc) 70%, transparent)}100%{box-shadow:0 0 0 22px color-mix(in srgb, var(--lc) 0%, transparent)}}
  @keyframes rc-estampa-eki{0%{opacity:0;transform:rotate(-8deg) scale(2)}100%{opacity:1;transform:rotate(-8deg) scale(1)}}

  .btn{font-family:'Zen Maru Gothic',sans-serif;font-weight:500;border:none;border-radius:6px;padding:12px 20px;cursor:pointer;font-size:.92rem;}
  .btn.primary{background:var(--ai);color:var(--washi);}@media (hover:hover){
  .btn.primary:hover{background:var(--ai-deep);}}
  .btn.ghost{background:var(--washi);border:1.5px solid var(--line);color:var(--sumi);}@media (hover:hover){
  .btn.ghost:hover{border-color:var(--ai);}}
  .copy-box{
    text-align:left;background:var(--washi);border:1px solid var(--line);border-radius:6px;padding:12px 14px;
    margin-top:16px;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;line-height:1.5;color:var(--sumi);
    max-height:160px;overflow-y:auto;white-space:pre-wrap;display:none;
  }
  .copy-box.show{display:block;}
  .hint-note{font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris-osc);margin-top:10px;}   /* --gris-osc: contraste AA en los 6 temas */
  /* AUT-16: el título que recibe el foco al cambiar de pantalla (Foco, core.js). Sin marco con el dedo o el ratón; con teclado, sí */
  .foco-titulo:focus{outline:none;}
  .foco-titulo:focus-visible{outline:2px solid var(--ai);outline-offset:4px;border-radius:4px;}
  /* Solo para lectores de pantalla: no se ve ni ocupa sitio (js/motor/app.js: Voz) */
  .solo-lector{position:absolute !important;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;}
  /* Utilidades u-… (AUT-CS-02): lo que antes era una nota style="…" escrita en el HTML. Llevan !important para ganar
     igual que ganaba la nota a mano (docs/propuesta-csp-estilos.md, 8.1). Solo para lo que el código no vuelve a tocar. */
  .u-mb6{margin-bottom:6px !important;}
  .u-mb10{margin-bottom:10px !important;}
  /* El <svg> de las definiciones del fondo (js/motor/fondo.js): está, pero no ocupa sitio */
  .svg-defs{position:absolute !important;width:0 !important;height:0 !important;}

  .dash-strip{display:flex;gap:12px;margin-bottom:26px;flex-wrap:wrap;}
  .dash-stat{flex:1;min-width:110px;background:var(--papel);border:1px solid var(--line);border-radius:8px;padding:14px 12px;text-align:center;box-shadow:0 2px 0 var(--line);}
  .dash-stat .v{display:block;font-family:'Shippori Mincho',serif;font-size:1.6rem;color:var(--ai-deep);font-weight:700;}
  .dash-stat .l{display:block;font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;color:var(--gris);margin-top:2px;}

  .tema-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px;}
  .tema-card{
    background:var(--papel);border:1px solid var(--line);border-radius:10px;padding:24px 22px;cursor:pointer;
    box-shadow:0 2px 0 var(--line), 0 10px 24px rgba(43,42,40,0.06);transition:transform .12s ease;position:relative;overflow:hidden;
  }@media (hover:hover){
  .tema-card:hover{transform:translateY(-3px);border-color:var(--ai);}}
  .tema-card::before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:repeating-linear-gradient(90deg, var(--ai) 0 18px, transparent 18px 26px);opacity:.5;}
  .tema-card .tema-kanji{font-family:'Shippori Mincho',serif;font-size:2.2rem;color:var(--ai-deep);display:block;margin-bottom:4px;}
  .tema-card h2{font-family:'Shippori Mincho',serif;font-size:1.3rem;color:var(--ai-deep);margin:0 0 2px;}
  .tema-card .tema-sub{font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--shu-deep);margin:0 0 10px;}
  .tema-card .tema-desc{font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;color:var(--sumi);line-height:1.5;margin:0 0 16px;}
  .tema-progbar{height:7px;border-radius:5px;background:var(--washi-deep);border:1px solid var(--line);overflow:hidden;margin-bottom:10px;}
  .tema-progbar div{height:100%;background:linear-gradient(90deg, var(--ai), var(--ai-deep));}
  .tema-foot{display:flex;justify-content:space-between;align-items:center;font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--gris);}
  .tema-foot .tema-cta{color:var(--shu-deep);font-weight:600;}
  .tab-row{display:flex;gap:8px;margin-bottom:18px;}
  .tab-btn{font-family:'Zen Maru Gothic',sans-serif;font-weight:500;padding:8px 18px;border-radius:20px;border:1.5px solid var(--line);background:var(--washi);cursor:pointer;color:var(--sumi);font-size:.88rem;}
  .tab-btn.active{background:var(--ai);color:var(--washi);border-color:var(--ai);}
  .ref-section{background:var(--papel);border:1px solid var(--line);border-radius:8px;padding:16px 18px;margin-bottom:16px;}
  .ref-section h4{font-family:'Shippori Mincho',serif;color:var(--ai-deep);font-size:1.05rem;margin:0 0 12px;}
  .ref-table{width:100%;border-collapse:collapse;font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;}
  .ref-table th{text-align:left;color:var(--ai-deep);border-bottom:2px solid var(--line);padding:6px 8px;font-weight:600;}
  .ref-table td{padding:6px 8px;border-bottom:1px solid var(--washi-deep);color:var(--sumi);}
  .ref-html{font-family:'Zen Maru Gothic',sans-serif;font-size:.88rem;line-height:1.65;color:var(--sumi);}
  .ref-html strong{color:var(--ai-deep);}
  .ref-html .ex{color:var(--gris);font-style:italic;}
  .chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;}
  .chip{font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;color:var(--ai-deep);background:color-mix(in srgb, var(--ai) 8%, transparent);border:1px solid color-mix(in srgb, var(--ai) 20%, transparent);padding:3px 10px;border-radius:20px;}

  @media (max-width:420px){ .hdr .kanji{font-size:1.9rem;} .card{padding:20px 16px;} }
  /* ---- Taller de verbos ---- */
  .taller-card{background:var(--ai-deep);color:var(--washi);border-radius:10px;padding:20px 22px;margin-bottom:22px;cursor:pointer;display:flex;align-items:center;gap:18px;box-shadow:0 2px 0 var(--sumi),0 10px 24px color-mix(in srgb, var(--ai-deep) 18%, transparent);transition:transform .12s ease;}@media (hover:hover){
  .taller-card:hover{transform:translateY(-2px);}}
  .taller-card .tk{font-family:'Shippori Mincho',serif;font-size:2.2rem;color:var(--kincha);line-height:1;}
  .taller-card h2{font-family:'Shippori Mincho',serif;font-size:1.25rem;margin:0 0 4px;}
  .taller-card p{font-family:'Zen Maru Gothic',sans-serif;font-size:.82rem;margin:0;opacity:.85;line-height:1.45;}
  .taller-card .tcta{margin-left:auto;font-family:'Zen Maru Gothic',sans-serif;font-weight:600;color:var(--kincha);white-space:nowrap;}
  .t-h3{font-family:'Zen Maru Gothic',sans-serif;color:var(--ai-deep);font-size:1rem;margin:22px 0 6px;}
  .pool-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;}
  .pool-card{background:var(--papel);border:1.5px solid var(--line);border-radius:8px;padding:12px;cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;display:flex;flex-direction:column;gap:3px;}@media (hover:hover){
  .pool-card:hover{border-color:var(--ai);}}
  .pool-card.sel{border-color:var(--ai);box-shadow:0 0 0 2px color-mix(in srgb, var(--ai) 25%, transparent);background:var(--papel);}
  .pool-card .pn{font-family:'Shippori Mincho',serif;font-size:1.2rem;color:var(--shu-deep);}
  .pool-card .pt{font-weight:600;font-size:.92rem;}
  .pool-card .pd{font-size:.72rem;color:var(--gris);line-height:1.35;}
  .pbar{display:flex;height:5px;border-radius:4px;background:var(--washi-deep);overflow:hidden;margin:6px 0 2px;}
  .pbar .ok{background:var(--matcha);} .pbar .mid{background:var(--kincha);} .pbar .ko{background:var(--shu);}
  .vk{font-family:'Shippori Mincho',serif;color:var(--gris);font-size:.9em;}
  .vm{font-size:.85rem;color:var(--gris);}
  .vq{font-size:.95rem;color:var(--ai-deep);}
  .vbig{font-size:1.6rem;font-weight:700;color:var(--ai-deep);}
  .vgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .vcell{display:flex;flex-direction:column;gap:4px;font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--ai-deep);font-weight:500;}
  .vcell small{color:var(--gris);font-weight:400;}
  .vcell input{font-family:'Zen Maru Gothic',sans-serif;font-size:1.05rem;padding:10px 12px;border-radius:6px;border:1.5px solid var(--line);background:var(--washi);color:var(--sumi);width:100%;}
  .vcell input:focus{outline:none;border-color:var(--ai);}
  .vcell input.good{border-color:var(--matcha);background:color-mix(in srgb, var(--matcha) 14%, transparent);}
  .vcell input.bad{border-color:var(--shu);background:color-mix(in srgb, var(--shu) 10%, transparent);text-decoration:line-through;}
  .vcell .vfix{font-style:normal;color:var(--matcha);font-weight:700;min-height:1em;}
  .vdiag{margin:6px 0 4px;padding-left:18px;} .vdiag li{margin-bottom:4px;}
  .vsteps{margin-top:10px;padding-top:10px;border-top:1px dashed color-mix(in srgb, var(--shu) 35%, transparent);color:var(--sumi);}
  .feedback.ok .vsteps{border-top-color:color-mix(in srgb, var(--matcha) 40%, transparent);}
  .vsteps>div{margin-bottom:5px;}
  .vstep{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--ai);color:var(--washi);font-size:.7rem;margin-right:6px;}
  .vtable{border-collapse:collapse;font-size:.85rem;margin-left:24px;}
  .vtable td{padding:2px 10px 2px 0;white-space:nowrap;} .vtable tr.hl td{color:var(--shu-deep);font-weight:600;}
  .vchips{display:flex;flex-wrap:wrap;gap:6px;}
  .vchip{font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;padding:4px 10px;border-radius:16px;border:1.5px solid var(--line);background:var(--papel);cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;line-height:1.2;}
  .vchip small{font-size:.62rem;color:var(--gris);}
  .vchip.st-ko{border-color:var(--shu);background:color-mix(in srgb, var(--shu) 10%, transparent);}
  .vchip.st-mid{border-color:var(--kincha);background:color-mix(in srgb, var(--kincha) 12%, transparent);}
  .vchip.st-ok{border-color:var(--matcha);background:color-mix(in srgb, var(--matcha) 16%, transparent);}
  .legend{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;} .legend .vchip{cursor:default;font-size:.72rem;}
  @media (max-width:420px){ .vgrid{grid-template-columns:1fr;} .vtable{margin-left:0;font-size:.8rem;} .vtable td:nth-child(2){display:none;} .taller-card{flex-wrap:wrap;} .taller-card .tcta{margin-left:0;} }
  .vsearch{width:100%;font-family:'Zen Maru Gothic',sans-serif;font-size:1rem;padding:11px 14px;border-radius:8px;border:1.5px solid var(--line);background:var(--papel);color:var(--sumi);margin-bottom:10px;}
  .vsearch:focus{outline:none;border-color:var(--ai);}
  .vselect{font-family:'Zen Maru Gothic',sans-serif;font-size:.88rem;padding:10px;border-radius:6px;border:1.5px solid var(--line);background:var(--washi);color:var(--sumi);max-width:100%;}
  .vrow{background:var(--papel);border:1px solid var(--line);border-radius:6px;margin-bottom:6px;}
  .vrow-h{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;}
  .vrow-jp{font-weight:600;min-width:120px;}
  .vrow-es{color:var(--gris-osc-2);font-size:.88rem;flex:1;}
  .vrow-d{display:none;padding:0 12px 10px;font-family:'Zen Maru Gothic',sans-serif;font-size:.88rem;}
  .vrow.open .vrow-d{display:block;} .vrow.open{border-color:var(--ai);}
  .vrow-d .vsteps{margin-top:0;border-top-color:var(--line);}
  .vdot{width:10px;height:10px;border-radius:50%;flex-shrink:0;border:1.5px solid var(--line);background:var(--papel);}
  .vdot.st-ko{background:var(--shu);border-color:var(--shu);} .vdot.st-mid{background:var(--kincha);border-color:var(--kincha);} .vdot.st-ok{background:var(--matcha);border-color:var(--matcha);}
  @media (max-width:420px){ .vrow-h{flex-wrap:wrap;gap:4px 10px;} .vrow-jp{min-width:0;} .vrow-es{flex-basis:100%;order:3;} }
  .vbadge{display:inline-flex;align-items:center;gap:3px;font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;padding:2px 7px;border-radius:12px;border:1.5px solid var(--line);background:var(--papel);color:var(--gris);white-space:nowrap;}
  .vbadge i{font-style:normal;letter-spacing:1px;}
  .vbadge.st-ko{border-color:var(--shu);background:color-mix(in srgb, var(--shu) 12%, transparent);color:var(--shu-deep);}
  .vbadge.st-mid{border-color:var(--kincha);background:color-mix(in srgb, var(--kincha) 14%, transparent);color:var(--kincha-osc-2);}
  .vbadge.st-ok{border-color:var(--matcha);background:color-mix(in srgb, var(--matcha) 18%, transparent);color:var(--matcha-osc);}
  .vbadges{display:flex;gap:4px;margin-left:auto;}
  .vfilters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;}
  .vfilter{font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;padding:6px 11px;border-radius:16px;border:1.5px solid var(--line);background:var(--papel);cursor:pointer;color:var(--sumi);}
  .vfilter.on{border-color:var(--ai);background:var(--ai);color:var(--washi);}
  
  .review-banner{font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;background:color-mix(in srgb, var(--kincha) 14%, transparent);border:1.5px dashed var(--kincha);color:var(--kincha-osc-3);border-radius:6px;padding:9px 12px;margin-bottom:12px;line-height:1.5;}
  .review-banner span{font-size:.76rem;opacity:.85;}
  .nav-hint{text-align:center;margin-top:14px;}
  /* La barra de abajo de las lecciones (PR-18, hallazgos P2-13 y P3-04 del 05/11): «Siguiente» de las preguntas y
     «Anterior / Siguiente» de las fichas (kana, kanji, palabras, Dōjō) van SIEMPRE fijos abajo, en cualquier pantalla y en
     todas las lecciones por igual. Si no, el botón bajaba o subía según lo larga que fuera la explicación y, en kanji, se
     quedaba dentro de la página mientras en kana iba fijo. fixed y no sticky: html y body llevan overflow-x:hidden y con eso
     sticky no se pega a la ventana. La fila de «Siguiente» ya está en su sitio antes de contestar (sin fondo y sin recoger
     toques), para que al aparecer el botón no se mueva nada. El body deja sitio abajo para que no tape lo último. */
  .next-row, .conoce-nav{position:fixed;left:0;right:0;bottom:0;z-index:6;margin:0;
    padding:14px max(16px, env(safe-area-inset-right), calc((100vw - 660px)/2)) calc(10px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left), calc((100vw - 660px)/2));
    background:linear-gradient(to bottom, transparent, var(--washi) 14px);}
  .next-row:not(:has(> .next-btn.show)){background:none;pointer-events:none;}
  body:has(#app .next-row), body:has(#app .conoce-nav){padding-bottom:84px;}
  /* El aviso del trazo siempre con sitio para dos líneas: que no empuje lo de abajo al cambiar */
  .kana-card .trazo-fb{min-height:2.9em;}
  @media (hover:none){ .nav-hint{display:none;} }
  .seg{display:flex;gap:8px;margin:4px 0 6px;}
  .seg-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-family:'Zen Maru Gothic',sans-serif;padding:10px 8px;border-radius:8px;border:1.5px solid var(--line);background:var(--papel);color:var(--sumi);cursor:pointer;}
  .seg-btn b{font-size:1.05rem;} .seg-btn small{font-size:.72rem;color:var(--gris);}
  .seg-btn.on{background:var(--ai);border-color:var(--ai);color:var(--washi);} .seg-btn.on small{color:color-mix(in srgb, var(--washi) 80%, transparent);}
  .subgroup{border-left:3px solid var(--line);padding-left:12px;margin:12px 0 16px;}
  .sg-h{font-family:'Zen Maru Gothic',sans-serif;margin-bottom:8px;display:flex;flex-direction:column;gap:2px;}
  .sg-h b{color:var(--ai-deep);font-size:.95rem;} .sg-h span{font-size:.75rem;color:var(--gris);}
  .ta-table td,.ta-table th{text-align:center;white-space:nowrap;} .ta-table td:last-child{text-align:left;}
  .base-table td,.base-table th{white-space:nowrap;} .base-table td:nth-child(2){white-space:normal;min-width:110px;}
  /* ---- Portada por secciones ---- */
  .sec-list{display:flex;flex-direction:column;gap:16px;}
  .sec-card{position:relative;align-items:center;overflow:hidden;border-radius:12px;padding:22px 22px 20px;cursor:pointer;display:flex;gap:18px;align-items:flex-start;color:var(--washi);transition:transform .12s ease;box-shadow:0 2px 0 rgba(0,0,0,.25),0 12px 26px rgba(43,42,40,.16);}@media (hover:hover){
  .sec-card:hover{transform:translateY(-3px);}}
  .sec-card::after{content:"";position:absolute;right:-30px;bottom:-40px;width:160px;height:160px;border-radius:50%;border:18px solid rgba(255,255,255,.06);}
  .sec-shu{background:linear-gradient(135deg,var(--shu-osc),var(--shu-osc-2));} .sec-mura{background:linear-gradient(135deg,var(--murasaki),var(--murasaki-osc));} .sec-mura .sec-kj{color:var(--tinte-murasaki);} .sec-ai{background:linear-gradient(135deg,var(--ai),var(--ai-deep));} .sec-kin{background:linear-gradient(135deg,var(--matcha-osc-3),var(--matcha-osc-2));}
  .sec-kj{font-family:'Shippori Mincho',serif;font-size:2.3rem;line-height:1;color:var(--kincha);writing-mode:vertical-rl;text-orientation:upright;letter-spacing:.1em;flex-shrink:0;}
  .sec-shu .sec-kj{color:var(--tinte-kincha-2);} .sec-kin .sec-kj{color:var(--tinte-kincha);}
  .sec-body{flex:1;min-width:0;}
  .sec-eyebrow{display:block;font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;opacity:.8;margin-bottom:2px;}
  .sec-card h2,.sec-head h2{font-family:'Shippori Mincho',serif;font-size:1.45rem;margin:0 0 6px;}
  .sec-card h2 small{font-size:.8rem;opacity:.7;font-family:'Zen Maru Gothic',sans-serif;}
  .sec-card p{font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;line-height:1.45;margin:0 0 10px;opacity:.9;}
  .sec-card .sec-meta{font-size:.76rem;margin:6px 0 0;opacity:.85;}
  .sec-bar{margin-top:8px;height:6px;border-radius:4px;background:rgba(255,255,255,.18);overflow:hidden;}
  .sec-bar div{height:100%;background:var(--kincha);}
  .sec-cta{font-family:'Zen Maru Gothic',sans-serif;font-size:1.4rem;color:var(--kincha);align-self:center;}
  .sec-head{display:flex;align-items:center;gap:14px;border-radius:12px;padding:14px 16px;color:var(--washi);margin-bottom:18px;}
  .sec-head .sec-kj{writing-mode:horizontal-tb;font-size:1.9rem;}
  .sec-head h2{margin:0;font-size:1.25rem;}
  .sec-head .back-btn{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.3);color:var(--washi);}
  .tema-card.locked{opacity:.55;cursor:default;border-style:dashed;}@media (hover:hover){ .tema-card.locked:hover{transform:none;border-color:var(--line);}}
  @media (max-width:420px){ .sec-card{padding:18px 16px;gap:12px;} .sec-kj{font-size:1.9rem;} .sec-cta{display:none;} }

  /* ---- Cuenta ---- */
  .acct{margin-top:6px;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris);}
  .acct-ok{color:var(--matcha);}
  .acct-cta{border-color:var(--kincha);color:var(--kincha-osc-2);}
  .auth-form{display:flex;flex-direction:column;gap:12px;}
  .auth-form label{display:flex;flex-direction:column;gap:4px;font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;color:var(--ai-deep);}
  .auth-form input{font-family:'Zen Maru Gothic',sans-serif;font-size:1rem;padding:11px 12px;border-radius:6px;border:1.5px solid var(--line);background:var(--washi);color:var(--sumi);}
  .auth-form input:focus{outline:none;border-color:var(--ai);}
  /* Campo trampa del alta (AUT-12): fuera de la vista, sin display:none (algunos programas se saltan los campos ocultos). */
  .auth-form .auth-trampa{position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;}
  .auth-actions{display:flex;gap:10px;flex-wrap:wrap;}
  .btn:disabled{opacity:.5;cursor:default;}
  .auth-link{color:var(--shu-deep);font-weight:600;}
  .danger-zone{border-color:color-mix(in srgb, var(--shu) 45%, transparent);}
  /* Pantalla Tú (perfil, Configuración y cuenta), AUT-CS-02 T8: lo que antes era una nota style="…" en el HTML.
     Con !important, como las u- de arriba (punto 8.1 de docs/propuesta-csp-estilos.md). */
  .u-mb4{margin-bottom:4px !important;} .u-mb8{margin-bottom:8px !important;} .u-mb18{margin-bottom:18px !important;}
  .u-mt0{margin-top:0 !important;} .u-mt6{margin-top:6px !important;} .u-mt8{margin-top:8px !important;}
  .u-mt14{margin-top:14px !important;} .u-mt16{margin-top:16px !important;} .u-mt18{margin-top:18px !important;}
  .u-m0{margin:0 !important;} .u-m-0-0-12{margin:0 0 12px !important;} .u-m-0-0-16{margin:0 0 16px !important;}
  .u-m-8-0-0{margin:8px 0 0 !important;} .u-m-10-0-0{margin:10px 0 0 !important;}
  .u-minh0{min-height:0 !important;}
  /* Utilidades preparadas para las tandas que faltan de AUT-CS-02 (T2–T12): todos los márgenes sueltos que quedan en
     notas style="…". Úsalas tal cual; si te falta una, créala en el apartado de tu tanda (al final de este archivo). */
  .u-mb12{margin-bottom:12px !important;} .u-mb16{margin-bottom:16px !important;} .u-mb22{margin-bottom:22px !important;}
  .u-mt12{margin-top:12px !important;} .u-mt-n8{margin-top:-8px !important;}
  .u-m-8-0{margin:8px 0 !important;} .u-m-10-0{margin:10px 0 !important;} .u-m-0-0-10{margin:0 0 10px !important;}
  .u-m-4-0-10{margin:4px 0 10px !important;} .u-m-4-0-4{margin:4px 0 4px !important;} .u-m-6-0-0-0{margin:6px 0 0 0 !important;}
  .cuenta-titulo{font-size:1rem !important;font-weight:500 !important;}        /* «Mi cuenta» */
  .cuenta-tarjeta{min-height:0 !important;margin-bottom:16px !important;}      /* la tarjeta con tu email */
  .cuenta-pie{text-align:center !important;margin-top:18px !important;}        /* «Privacidad y legal», al pie */
  .btn-danger{font-family:'Zen Maru Gothic',sans-serif;font-weight:500;padding:12px 16px;border-radius:6px;border:none;background:var(--shu);color:var(--tinte-shu-2);cursor:pointer;white-space:nowrap;}
  .btn-danger:disabled{opacity:.4;cursor:default;}

  /* ---- Móvil: ejercicios compactos para que la pregunta no se esconda tras el teclado ---- */
  @media (max-width:600px), (max-height:500px){
    body.focus-mode{padding-top:10px;}
    body.focus-mode .hdr{display:none;}
    body.focus-mode .progress-row{margin-bottom:12px;}
    body.focus-mode .card{min-height:0;padding:16px 14px;}
    body.focus-mode .question{margin-bottom:12px;}
    body.focus-mode .fill-row, body.focus-mode .options{margin-top:4px;}
    body.focus-mode .nav-hint{display:none;}
  }

  /* ---- Nada puede ser más ancho que la pantalla (el botón "Comprobar" se salía en móvil) ---- */
  html, body{overflow-x:hidden;max-width:100%;}
  .fill-row input, .fill-row textarea, .vcell input, .vsearch, .vselect{min-width:0;}
  .fill-row button, .fill-row .btn-danger{flex-shrink:0;}
  @media (max-width:420px){ .fill-row button{padding:12px 14px;} }

  /* ---- "Comprobar" debajo de la casilla, a todo el ancho ---- */
  .fill-row{flex-direction:column;align-items:stretch;}
  .fill-row button{width:100%;}
  .fill-row > span:empty{display:none;}
  .feedback.hint{background:color-mix(in srgb, var(--kincha) 14%, transparent);color:var(--kincha-osc-3);border:1px dashed var(--kincha);}
  /* «Vale, pero aquí buscamos…»: correcta, pero no la forma que se pide. Ámbar, no rojo: no es un fallo */
  .feedback.casi{background:color-mix(in srgb, var(--kincha) 16%, transparent);color:var(--kincha-osc-3);border:1px solid var(--kincha);}
  /* «Otra forma de decirlo» (ALT-1): debajo del ¡Correcto!, en la tinta del acierto y sin caja propia */
  .feedback .otra-forma{margin-top:6px;}
  .feedback .otra-forma p{margin:4px 0 0;}

  /* ---- Teclado en pantalla ---- */
  .kb{display:flex;flex-wrap:wrap;gap:5px;margin-top:10px;justify-content:center;}
  .kb-key{font-family:'Noto Serif',serif;font-size:1.05rem;min-width:34px;height:38px;padding:0 6px;border-radius:6px;border:1.5px solid var(--line);background:var(--papel);color:var(--sumi);cursor:pointer;touch-action:manipulation;}
  .kb-key:active{background:var(--washi-deep);}
  .kb-wide{font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;min-width:72px;}
  @media (max-width:420px){ .kb{gap:4px;} .kb-key{min-width:28px;height:36px;font-size:.95rem;padding:0 4px;} }

  /* =====================================================================
     CAMINO · portada Hoy
     ===================================================================== */
  .today{margin-bottom:22px;}
  .today-next{width:100%;display:flex;align-items:center;gap:16px;text-align:left;border:none;cursor:pointer;
    background:var(--ai-deep);color:var(--washi);border-radius:14px;padding:18px 20px;box-shadow:0 3px 0 var(--sumi),0 14px 30px color-mix(in srgb, var(--ai-deep) 22%, transparent);}@media (hover:hover){
  .today-next:hover{transform:translateY(-1px);}}
  .today-next:focus-visible, .node:focus-visible, .tl-item button:focus-visible{outline:3px solid var(--kincha);outline-offset:3px;}
  .today-next.done{background:var(--matcha);box-shadow:0 3px 0 var(--matcha-osc);cursor:default;}
  .tn-seal{flex-shrink:0;width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;
    font-family:'Shippori Mincho',serif;font-size:1.7rem;font-weight:700;background:var(--shu);color:var(--tinte-shu-4);transform:rotate(-6deg);
    box-shadow:inset 0 0 0 3px rgba(255,246,234,.35);}
  .tn-body{display:flex;flex-direction:column;gap:2px;min-width:0;font-family:'Zen Maru Gothic',sans-serif;}
  .tn-k{font-size:.78rem;opacity:.75;}
  .tn-t{font-family:'Shippori Mincho',serif;font-size:1.35rem;font-weight:700;line-height:1.2;}
  .tn-s{font-size:.84rem;color:var(--kincha);}
  .today-row{display:flex;gap:10px;margin-top:12px;}
  .today-chip{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 8px;border-radius:10px;
    background:var(--papel);border:1px solid var(--line);font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);}
  .today-chip b{font-family:'Shippori Mincho',serif;font-size:1.5rem;color:var(--ai-deep);line-height:1.1;}
  .today-chip b small{font-size:.9rem;color:var(--gris);font-weight:400;}
  .today-chip span{font-size:.72rem;color:var(--gris);text-align:center;}
  button.today-chip{cursor:pointer;}
  button.today-chip:disabled{cursor:default;}
  button.today-chip.has{background:var(--matcha);border-color:var(--matcha);}
  button.today-chip.has b, button.today-chip.has span{color:var(--tinte-matcha);}
  .today-foot{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:28px;}

  /* ---- Cabecera de unidad ---- */
  .unit{margin-top:26px;}
  .unit-head{display:flex;gap:14px;align-items:flex-start;padding:16px 16px 14px;border-radius:12px;color:var(--washi);position:relative;}
  .unit-head.u0{background:linear-gradient(135deg,var(--murasaki),var(--murasaki-osc));} .unit-head.u1{background:linear-gradient(135deg,var(--shu-osc),var(--shu-osc-2));}
  .unit-head.u2{background:linear-gradient(135deg,var(--ai),var(--ai-deep));} .unit-head.u3{background:linear-gradient(135deg,var(--matcha-osc-3),var(--matcha-osc-2));}
  .unit-head.u4{background:linear-gradient(135deg,var(--kincha-osc),var(--kincha-osc-4));}
  .unit-kj{font-family:'Shippori Mincho',serif;font-size:2.4rem;line-height:1;color:var(--tinte-kincha-2);flex-shrink:0;width:44px;text-align:center;}
  .unit-txt{flex:1;min-width:0;font-family:'Zen Maru Gothic',sans-serif;}
  .unit-n{font-size:.74rem;opacity:.75;}
  .unit-txt :is(h2,h3){font-family:'Shippori Mincho',serif;font-size:1.3rem;margin:1px 0 3px;}
  .unit-txt p{font-size:.82rem;line-height:1.45;margin:0 0 9px;opacity:.9;}
  .unit-prog{height:5px;border-radius:4px;background:rgba(255,255,255,.2);overflow:hidden;}
  .unit-prog div{height:100%;background:var(--kincha);}
  .unit-count{font-size:.72rem;opacity:.8;display:block;margin-top:4px;}
  .unit-start{position:absolute;top:12px;right:12px;font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;padding:4px 10px;border-radius:14px;
    border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.1);color:var(--sobre-linea);cursor:pointer;}@media (hover:hover){
  .unit-start:hover{background:rgba(255,255,255,.22);}}
  .unit-head:has(.unit-start) .unit-txt{padding-right:84px;}

  /* ---- Estilo «Camino»: sellos unidos por un trazo de tinta ---- */
  .trail{position:relative;padding:18px 0 4px;}
  .trail-svg{position:absolute;inset:0;pointer-events:none;overflow:visible;}
  .node-row{position:relative;display:flex;flex-direction:column;align-items:center;margin-bottom:20px;transform:translateX(var(--off));}
  .node{position:relative;width:66px;height:66px;border-radius:50%;border:2.5px solid var(--line);background:var(--washi);cursor:pointer;
    display:flex;align-items:center;justify-content:center;box-shadow:0 4px 0 var(--line);transition:transform .12s ease;}@media (hover:hover){
  .node:hover{transform:translateY(-2px);}}
  .node-seal{font-family:'Shippori Mincho',serif;font-size:1.6rem;font-weight:700;color:var(--gris-cl);}
  .node.is-done{background:var(--shu);border-color:var(--shu-deep);box-shadow:0 4px 0 var(--shu-deep);transform:rotate(-5deg);}
  .node.is-done .node-seal{color:var(--tinte-shu);}
  .node.is-done.t-review{background:var(--kincha);border-color:var(--kincha-osc);box-shadow:0 4px 0 var(--kincha-osc);}
  .node.is-current{background:var(--papel);border-color:var(--ai);border-width:3px;box-shadow:0 4px 0 var(--ai-deep),0 0 0 7px color-mix(in srgb, var(--ai) 12%, transparent);}
  .node.is-current .node-seal{color:var(--ai-deep);}
  .node.t-review:not(.is-done){border-style:double;border-width:5px;}
  .node-flag{position:absolute;top:-30px;left:50%;transform:translateX(-50%);white-space:nowrap;font-family:'Zen Maru Gothic',sans-serif;
    font-size:.72rem;font-weight:700;background:var(--ai);color:var(--washi);padding:3px 10px;border-radius:12px;}
  .node-flag::after{content:"";position:absolute;bottom:-5px;left:50%;margin-left:-5px;border:5px solid transparent;border-bottom:0;border-top-color:var(--ai);}
  .node-label{margin-top:8px;text-align:center;font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;font-weight:500;color:var(--sumi);max-width:160px;line-height:1.3;}
  .node-label small{display:block;font-size:.7rem;font-weight:400;color:var(--gris);}
  @media (prefers-reduced-motion:no-preference){ .node.is-current{animation:node-in .6s ease-out 1;} }
  @keyframes node-in{from{box-shadow:0 4px 0 var(--ai-deep),0 0 0 0 color-mix(in srgb, var(--ai) 35%, transparent);} to{box-shadow:0 4px 0 var(--ai-deep),0 0 0 7px color-mix(in srgb, var(--ai) 12%, transparent);}}

  /* ---- Estilo «Lista»: línea de tiempo compacta ---- */
  .tl{list-style:none;margin:10px 0 0;padding:0 0 0 22px;position:relative;}
  .tl::before{content:"";position:absolute;left:21px;top:8px;bottom:8px;width:2px;background:var(--line);}
  .tl-item button{width:100%;display:flex;align-items:center;gap:12px;background:none;border:none;padding:7px 4px;cursor:pointer;text-align:left;border-radius:8px;font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);}@media (hover:hover){
  .tl-item button:hover{background:rgba(201,189,156,.25);}}
  .tl-dot{position:relative;z-index:1;flex-shrink:0;width:30px;height:30px;margin-left:-15px;border-radius:50%;display:flex;align-items:center;justify-content:center;
    font-family:'Shippori Mincho',serif;font-size:.95rem;background:var(--washi);border:2px solid var(--line);color:var(--gris-cl);}
  .tl-item.is-done .tl-dot{background:var(--shu);border-color:var(--shu-deep);color:var(--tinte-shu);}
  .tl-item.is-current .tl-dot{border-color:var(--ai);color:var(--ai-deep);box-shadow:0 0 0 4px color-mix(in srgb, var(--ai) 15%, transparent);}
  .tl-txt{display:flex;flex-direction:column;min-width:0;flex:1;}
  .tl-txt b{font-weight:500;font-size:.92rem;}
  .tl-txt small{font-size:.74rem;color:var(--gris);}
  .tl-now{font-size:.72rem;font-weight:700;background:var(--ai);color:var(--washi);padding:3px 9px;border-radius:12px;}

  /* ---- Ficha de lección ---- */
  .step-card{min-height:0;}
  .step-top{display:flex;gap:16px;align-items:flex-start;margin-bottom:16px;}
  .step-seal{flex-shrink:0;width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;
    font-size:1.6rem;font-weight:700;background:var(--shu);color:var(--tinte-shu);transform:rotate(-6deg);}
  .step-seal.t-review{background:var(--kincha);} .step-seal.t-verb{background:var(--ai);} .step-seal.t-kanji{background:var(--matcha);}
  .step-title{font-family:'Shippori Mincho',serif;color:var(--ai-deep);font-size:1.4rem;margin:0 0 4px;}
  .step-ref{border-top:1px dashed var(--line);padding-top:10px;margin-bottom:16px;}
  @media (prefers-reduced-motion:reduce){ .kp-chev::after, .cfg-voz .cfg-flecha, details > summary::before{transition:none;} }
  .step-ref > summary, .place-more > summary, .obra-calc > summary, .dic-todas > summary{list-style:none;}
  .step-ref > summary::-webkit-details-marker, .place-more > summary::-webkit-details-marker, .obra-calc > summary::-webkit-details-marker, .dic-todas > summary::-webkit-details-marker{display:none;}
  .step-ref > summary::before, .place-more > summary::before, .obra-calc > summary::before, .dic-todas > summary::before{content:"▾";display:inline-block;margin-right:7px;font-size:.8em;
    rotate:-90deg;transition:rotate var(--dur-media, .26s) var(--curva-suave, ease);}
  .step-ref[open]:not(.plegando) > summary::before, .place-more[open]:not(.plegando) > summary::before, .obra-calc[open]:not(.plegando) > summary::before, .dic-todas[open]:not(.plegando) > summary::before{rotate:0deg;}
  .step-ref summary{cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;font-weight:500;color:var(--shu-deep);margin-bottom:10px;}
  .step-ref .ref-section{box-shadow:none;}
  .step-ref .ref-table{display:block;overflow-x:auto;}
  .step-go{width:100%;padding:14px;font-size:1rem;}
  .step-go + .step-go{margin-top:10px;}

  /* ---- ¿Desde dónde empiezas? ---- */
  .place{max-width:520px;margin:0 auto;}
  .place-h{font-family:'Shippori Mincho',serif;color:var(--ai-deep);font-size:1.6rem;margin:4px 0 6px;}
  .place-opt{width:100%;display:flex;flex-direction:column;gap:3px;text-align:left;margin-bottom:10px;padding:16px 18px;border-radius:12px;cursor:pointer;
    background:var(--papel);border:1.5px solid var(--line);font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);box-shadow:0 2px 0 var(--line);}@media (hover:hover){
  .place-opt:hover{border-color:var(--ai);}}
  .place-opt b{font-size:1.02rem;color:var(--ai-deep);}
  .place-opt span{font-size:.84rem;color:var(--gris);}
  .place-opt.small{padding:11px 14px;}
  .place-more summary{cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;color:var(--shu-deep);font-weight:500;margin:6px 0 12px;}
  @media (max-width:420px){ .today-next{padding:14px 14px;gap:12px;} .tn-seal{width:50px;height:50px;font-size:1.45rem;} .tn-t{font-size:1.15rem;} .node-row{--scale:.8;} }

  /* ---- Bienvenida (primera vez) ---- */
  .welcome{max-width:460px;margin:8px auto 0;text-align:center;}
  .welcome-h{font-family:'Shippori Mincho',serif;color:var(--ai-deep);font-size:1.75rem;line-height:1.25;margin:0 0 10px;}
  .welcome-p{font-family:'Zen Maru Gothic',sans-serif;font-size:.98rem;line-height:1.6;color:var(--sumi);margin:0 auto 22px;max-width:36ch;}
  .welcome-trail{display:flex;align-items:center;justify-content:center;gap:0;margin:0 0 24px;}
  .w-seal{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-size:1.4rem;font-weight:700;
    background:var(--washi);border:2.5px solid var(--line);color:var(--gris-cl);}
  .w-seal.on{background:var(--shu);border-color:var(--shu-deep);color:var(--tinte-shu);transform:rotate(-6deg);}
  .w-dash{width:26px;border-top:3px dotted var(--line);}
  .w-more{font-family:'Shippori Mincho',serif;color:var(--gris-cl);font-size:1.3rem;margin-left:4px;}
  .welcome-list{list-style:none;padding:0;margin:0 auto 26px;max-width:340px;text-align:left;font-family:'Zen Maru Gothic',sans-serif;font-size:.9rem;color:var(--sumi);}
  .welcome-list li{padding:8px 0 8px 26px;border-bottom:1px dashed var(--line);position:relative;}
  .welcome-list li::before{content:"";position:absolute;left:4px;top:14px;width:10px;height:10px;border-radius:50%;background:var(--shu);}
  .welcome-go{width:100%;max-width:340px;padding:14px;font-size:1.05rem;}
  .welcome-acc{width:100%;max-width:340px;margin-top:10px;}
  .invite{margin:18px auto 0;max-width:420px;text-align:left;background:var(--papel);border:1.5px solid var(--kincha);border-radius:10px;padding:14px 16px;font-family:'Zen Maru Gothic',sans-serif;}
  .invite b{display:block;color:var(--ai-deep);font-size:1rem;margin-bottom:3px;}
  .invite span{display:block;font-size:.85rem;color:var(--sumi);line-height:1.5;margin-bottom:10px;}
  .invite-acts{display:flex;gap:8px;flex-wrap:wrap;}

  /* ---- Fondo del camino: patrón de tinta suave (img/patron.svg) ---- */
  /* (los dibujos los coloca js/motor/fondo.js solo en los huecos: nunca debajo de un texto o un sello) */
  .bg-line{fill:none;stroke:var(--sumi);stroke-opacity:.14;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
  .bg-sakura{fill:none;stroke:var(--shu);stroke-opacity:.2;stroke-width:1.6;}
  .bg-word{fill:var(--sumi);fill-opacity:.13;stroke:none;}
  .tl-wrap{position:relative;}
  .tl-wrap .tl{position:relative;z-index:1;}

  /* La lección actual deja sitio arriba para su cartel «Siguiente» (así no tapa el porcentaje de la anterior) */
  .node-row.has-flag{margin-top:34px;}

  /* ---- Fondo de dibujos dentro de las lecciones (js/motor/fondo-pagina.js) ---- */
  .page-bg{position:absolute;top:0;left:0;width:100%;pointer-events:none;z-index:0;overflow:visible;}
  .wrap{position:relative;z-index:1;}

  /* ---- Dibujos de palabras (js/idiomas/japones-dibujos.js): tinta, un solo detalle de color ---- */
  .ilus{fill:none;stroke:var(--sumi);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;display:block;}
  .ilus .a{stroke:var(--shu);} .ilus .b{stroke:var(--ai);} .ilus .c{stroke:var(--matcha);} .ilus .k{stroke:var(--kincha);} .ilus .fc{fill:var(--matcha);stroke:none;}
  .ilus .fa{fill:var(--shu);stroke:none;} .ilus .fb{fill:var(--ai);stroke:none;} .ilus .fs{fill:var(--sumi);stroke:none;}
  /* Dibujos nuevos (contorno ya trazado, se rellena): .v línea, .va/.vb/.vc acento cálido / agua / planta, .vp pelo y rellenos grandes */
  .ilus :is(.v,.va,.vb,.vc,.vk,.vp){stroke:none;fill-rule:evenodd;}
  .ilus .vk{fill:var(--kincha);}                                                /* dorado: amarillos y marrones (pan, cerveza, madera) */
  :root[data-tema="sakura"] .ilus .vk{fill:var(--tp-4);}                       /* en Sakura el kincha es rosa: melocotón */
  .ilus .v, .ilus .vp{fill:var(--sumi);} .ilus .va{fill:var(--shu);} .ilus .vb{fill:var(--ai);} .ilus .vc{fill:var(--matcha);}
  :root[data-tema="sakura"] .ilus .vb{fill:var(--tp-5);}                       /* agua verde azulada, no ciruela */
  :root[data-tema="samurai"] .ilus .vb{fill:var(--tp-3);}                      /* agua gris azulada, no oro */
  :root[data-tema="noche"] .ilus .va{fill:var(--ai);} :root[data-tema="noche"] .ilus .vb{fill:var(--shu);}   /* cálido rosa neón, agua cian */
  :root:is([data-tema="samurai"],[data-tema="noche"]) .ilus .vp{fill:color-mix(in srgb, var(--sumi) 55%, var(--washi));}   /* pelo apagado: las caras no salen en negativo */
  /* Dibujos con trazo y relleno (27/10, verbos del día): f-… relleno, s-… trazo; mismos colores que .v/.va/.vb/.vc/.vk */
  .ilus .f-t{fill:var(--sumi);} .ilus .f-p{fill:var(--papel);} .ilus .f-a{fill:var(--shu);} .ilus .f-b{fill:var(--ai);} .ilus .f-c{fill:var(--matcha);} .ilus .f-k{fill:var(--kincha);}
  .ilus .s-t{stroke:var(--sumi);} .ilus .s-p{stroke:var(--papel);} .ilus .s-a{stroke:var(--shu);} .ilus .s-b{stroke:var(--ai);} .ilus .s-c{stroke:var(--matcha);} .ilus .s-k{stroke:var(--kincha);}
  :root[data-tema="sakura"] .ilus .f-b{fill:var(--tp-5);} :root[data-tema="sakura"] .ilus .s-b{stroke:var(--tp-5);}
  :root[data-tema="sakura"] .ilus .f-k{fill:var(--tp-4);} :root[data-tema="sakura"] .ilus .s-k{stroke:var(--tp-4);}
  :root[data-tema="samurai"] .ilus .f-b{fill:var(--tp-3);} :root[data-tema="samurai"] .ilus .s-b{stroke:var(--tp-3);}
  :root[data-tema="noche"] .ilus .f-a{fill:var(--ai);} :root[data-tema="noche"] .ilus .f-b{fill:var(--shu);}
  :root:is([data-tema="samurai"],[data-tema="noche"]) .ilus .f-t{fill:color-mix(in srgb, var(--sumi) 55%, var(--washi));}

  /* ---- Lección de palabras · Conoce ---- */
  .conoce-dots{flex:1;display:flex;gap:6px;align-items:center;}
  .conoce-dots span{flex:1;height:6px;border-radius:3px;background:var(--line);opacity:.55;}
  .conoce-dots span.seen{background:var(--shu);opacity:.75;}
  .conoce-dots span.now{background:var(--shu);opacity:1;}
  .conoce-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding-top:18px;padding-bottom:26px;}
  .conoce-card .cat-tag{align-self:center;}
  .conoce-pic{margin:6px 0 14px;padding:14px;border-radius:50%;background:radial-gradient(circle, var(--papel) 62%, color-mix(in srgb, var(--papel) 0%, transparent) 72%);}
  .conoce-w{font-family:'Zen Maru Gothic','Noto Serif JP',sans-serif;font-size:2.5rem;font-weight:500;color:var(--sumi);letter-spacing:.06em;line-height:1.2;}
  .conoce-m{font-family:'Shippori Mincho',serif;font-size:1.25rem;color:var(--ai-deep);margin:6px 0 16px;}
  /* Ficha sin dibujo (27/10): la palabra con una frase, un diálogo o su sitio en el tiempo (palabras.js, fichaHTML) */
  .conoce-w-sola{margin-top:22px;}
  .conoce-ficha{align-self:stretch;margin-top:20px;padding:16px 14px 14px;border-radius:12px;background:var(--washi);border:1px solid var(--line);text-align:left;display:flex;flex-direction:column;gap:6px;}
  .cf-tit{margin:0;font-family:'Zen Maru Gothic',sans-serif;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--gris-osc);}
  .cf-cab{display:flex;align-items:center;justify-content:space-between;gap:10px;}
  .cf-fila{display:flex;align-items:center;justify-content:space-between;gap:10px;}
  .cf-ja{margin:0;font-family:var(--letra-mano,'Zen Maru Gothic'),'Zen Maru Gothic',sans-serif;font-size:1.35rem;line-height:1.45;color:var(--sumi);}
  .cf-es{margin:0;font-family:'Shippori Mincho',serif;font-size:.98rem;color:var(--ai-deep);}
  .cf-w{color:var(--shu-deep);border-bottom:2px solid var(--shu);padding:0 1px;}
  .cf-sep{height:1px;background:var(--line);margin:8px 0;}
  .cf-bur{max-width:86%;padding:9px 13px;border-radius:16px;background:var(--papel);border:1px solid var(--line);}
  .cf-bur-a{align-self:flex-start;border-bottom-left-radius:4px;}
  .cf-bur-b{align-self:flex-end;border-bottom-right-radius:4px;background:color-mix(in srgb, var(--shu) 10%, var(--papel));}
  .cf-bur .cf-ja{font-size:1.2rem;}
  .cf-tiempo{position:relative;display:flex;gap:2px;margin:6px 0 2px;}
  .cf-tiempo::before{content:'';position:absolute;left:10%;right:10%;top:7px;height:2px;background:var(--line);}
  .cf-t{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;}
  .cf-t-punto{position:relative;width:14px;height:14px;border-radius:50%;background:var(--papel);border:2px solid var(--sumi);}
  .cf-t-hoy .cf-t-punto{background:var(--sumi);}
  .cf-t-nueva .cf-t-punto{background:var(--shu);border-color:var(--shu-deep);}
  .cf-t-ja{font-family:var(--letra-mano,'Zen Maru Gothic'),'Zen Maru Gothic',sans-serif;font-size:.8rem;letter-spacing:0;line-height:1.2;color:var(--sumi);overflow-wrap:anywhere;}
  .cf-t-nueva .cf-t-ja{font-size:.92rem;color:var(--shu-deep);font-weight:600;}
  .cf-t-es{font-size:.68rem;line-height:1.25;color:var(--gris-osc);}
  .cf-preg{margin:12px 0 2px;padding:14px;border-radius:12px;background:var(--washi);font-family:var(--letra-mano,'Zen Maru Gothic'),'Zen Maru Gothic',sans-serif;font-size:1.45rem;line-height:1.45;}
  /* REV-GEN-01: en «¿Qué quiere decir aquí?» la palabra que se pregunta va en negrita y subrayada, no solo de color
     (así se ve también sin distinguir colores). */
  .cf-preg .cf-w{font-weight:700;border-bottom:0;text-decoration:underline;text-decoration-color:var(--shu);text-decoration-thickness:3px;text-underline-offset:5px;}
  .results-words span.sin-dib{justify-content:center;min-height:64px;}
  .conoce-nav{display:flex;gap:10px;justify-content:space-between;}   /* fija abajo: «La barra de abajo de las lecciones» */
  .conoce-nav .btn{flex:1;padding:13px;font-size:1rem;}
  .conoce-nav .btn:disabled{opacity:.4;cursor:default;}
  .linkish{background:none;border:none;padding:0;cursor:pointer;font:inherit;}
  .say{background:var(--papel);border:1.5px solid var(--line);border-radius:18px;padding:3px 9px;cursor:pointer;font-size:.9rem;line-height:1.2;vertical-align:middle;color:var(--sumi);}@media (hover:hover){
  .say:hover{border-color:var(--ai);}}
  .fb-say{margin-top:10px;}
  .fb-say .say{font-size:1rem;padding:5px 12px;} .fb-say .say span{margin-left:4px;}
  .say-big{padding:8px 16px;font-family:'Zen Maru Gothic',sans-serif;font-size:.95rem;}

  /* ---- Lección de palabras · Practica ---- */
  .q-pic{display:flex;justify-content:center;margin:2px 0 12px;}
  .q-big{font-size:1.5em;font-weight:500;letter-spacing:.04em;}
  .fb-word{display:flex;align-items:center;gap:12px;margin-top:10px;padding-top:10px;border-top:1px dashed currentColor;border-top-color:rgba(43,42,40,.18);color:var(--sumi);}
  .fb-pic{flex-shrink:0;background:var(--papel);border-radius:10px;padding:4px;}
  .fb-txt{flex:1;font-size:.95rem;} .fb-txt b{font-size:1.25rem;font-weight:500;margin-right:6px;}
  @media (prefers-reduced-motion:no-preference){ .feedback.ok .fb-pic{animation:fb-pop .35s ease-out 1;} }
  @keyframes fb-pop{from{transform:scale(.6) rotate(-8deg);opacity:0;} to{transform:none;opacity:1;}}
  .results-words{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:6px auto 18px;max-width:520px;}
  .results-words span{display:flex;flex-direction:column;align-items:center;width:84px;padding:8px 4px;background:var(--papel);border:1px solid var(--line);border-radius:10px;font-family:'Zen Maru Gothic',sans-serif;}
  .results-words b{font-weight:500;font-size:.95rem;margin-top:2px;} .results-words small{font-size:.72rem;color:var(--gris);}
  .step-seal.t-words{background:var(--shu);}

  /* ---- Escuchar ---- */
  .listen-row{display:flex;align-items:center;justify-content:center;gap:12px;margin:4px 0 16px;}
  .listen-big{width:84px;height:84px;border-radius:50%;border:2.5px solid var(--ai);background:var(--papel);font-size:2.1rem;cursor:pointer;box-shadow:0 4px 0 var(--ai-deep);}
  .listen-big:active{transform:translateY(2px);box-shadow:0 2px 0 var(--ai-deep);}
  .listen-slow{border:1.5px solid var(--line);background:var(--papel);border-radius:18px;padding:6px 12px;font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;color:var(--sumi);cursor:pointer;}
  .listen-text{font-size:1.8rem;letter-spacing:.05em;}
  /* «No puedo escuchar ahora»: discreto, debajo del audio; y el aviso mientras dura */
  .sa-fila{font-family:'Zen Maru Gothic',sans-serif;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin:-6px 0 14px;font-size:.82rem;color:var(--gris);}
  .sa-btn{border:none;background:none;padding:4px 6px;font:inherit;font-family:'Zen Maru Gothic',sans-serif;color:var(--gris);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
  .sa-on{margin:0 0 12px;}
  .sa-on span{border:1px solid var(--line);border-radius:12px;padding:3px 10px;background:var(--papel);}
  .sa-jp{display:block;margin-top:8px;}
  .sa-texto{margin:10px auto 0;font-size:1.15rem;line-height:1.8;text-align:left;max-width:30em;}
  .options.opt-pics{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .options.opt-pics .opt-btn{display:flex;justify-content:center;align-items:center;padding:10px;margin:0;min-height:92px;}
  .step-seal.t-listen{background:var(--ai);}
  .node.is-done.t-listen{background:var(--ai);border-color:var(--ai-deep);box-shadow:0 4px 0 var(--ai-deep);}
  .options.opt-big .opt-btn{font-size:1.6rem;text-align:center;padding:8px;}

  /* ---- Frases con bloques ---- */
  /* La respuesta se monta en un atril: cada fila de fichas descansa sobre su listón */
  .build-ans{min-height:72px;display:flex;flex-wrap:wrap;row-gap:16px;column-gap:0;align-content:flex-start;align-items:flex-start;padding:8px 10px 14px;margin-bottom:14px;
    border-radius:10px;border:1.5px solid transparent;transition:border-color .3s ease;
    box-shadow:inset 0 2px 5px var(--atril-sombra);
    background:repeating-linear-gradient(transparent 0 62px, var(--atril-raya) 62px 65px, transparent 65px 70px) 0 3px / 100% 70px, linear-gradient(var(--atril), var(--atril-2));}
  .build-ans.is-ok{border-color:var(--matcha);} .build-ans.is-ko{border-color:var(--shu);}
  .build-bank{display:flex;flex-wrap:wrap;gap:18px 10px;justify-content:center;margin-bottom:18px;padding-top:2px;}
  /* Ficha: cara de hueso con un marco fino; el lomo verde es una sombra (no ocupa sitio: por eso el margen de abajo) */
  .tile.pz{position:relative;height:46px;min-width:46px;padding:0 13px;margin-bottom:8px;border:0;border-radius:7px;color:var(--ficha-tinta);
    background:linear-gradient(var(--ficha-cara), var(--ficha-cara-2));
    box-shadow:inset 0 1px 0 var(--ficha-luz), 0 1px 0 var(--ficha-canto), 0 7px 0 var(--ficha-lomo), 0 8px 0 var(--ficha-lomo-2), 0 9px 6px var(--ficha-sombra);
    -webkit-tap-highlight-color:transparent;}
  .tile.pz.on{box-shadow:inset 0 1px 0 var(--ficha-luz), 0 1px 0 var(--ficha-canto), 0 7px 0 var(--ficha-lomo), 0 8px 0 var(--ficha-lomo-2), 0 9px 6px var(--ficha-sombra);}   /* gana a .tile.on */
  .tile.pz::before{content:'';position:absolute;inset:4px;border:1px solid var(--ficha-marco);border-radius:4px;pointer-events:none;}
  .tile.pz.pz-p,.tile.pz.pz-k{color:var(--ficha-tinta-p);} .tile.pz.pz-v{color:var(--ficha-tinta-v);}
  .pz-txt{position:relative;display:flex;align-items:center;justify-content:center;height:100%;font-family:'Zen Maru Gothic',sans-serif;font-size:1.05rem;line-height:1;white-space:nowrap;}
  /* Fichas en japonés (30/10, Alex): los kana con la letra de cuaderno (Klee One), como en las lecciones de kana; la
     mincho en negrita hacía que き, さ o り no se parecieran a como se escriben. Los kanji, en Zen Maru Gothic. */
  .tile.pz[lang="ja"] .pz-txt{font-family:var(--letra-mano);font-weight:400;font-size:1.3rem;}
  .tile.pz.used{visibility:visible;background:none;box-shadow:none;outline:1.5px dashed var(--line);outline-offset:-1px;}
  .tile.pz.used > *,.tile.pz.used::before{visibility:hidden;}
  .tile.pz:focus-visible{outline:2px solid var(--ai);outline-offset:3px;}
  .tile.pz:disabled{cursor:default;}
  /* En el atril, separadas por una rendija; al acertar se juntan */
  .build-ans .tile.pz{margin-right:3px;transition:margin-right .3s cubic-bezier(.34,1.4,.5,1);}
  .build-ans.is-ok .tile.pz{margin-right:0;animation:pz-cierra .5s cubic-bezier(.3,1.6,.5,1);}
  .build-ans.is-ko .tile.pz.floja{animation:pz-floja .55s ease-in-out;}
  @keyframes pz-cierra{0%{transform:none;}40%{transform:translateY(2px);}100%{transform:none;}}
  @keyframes pz-floja{0%,100%{transform:none;}25%{transform:rotate(-3deg) translateY(-2px);}50%{transform:rotate(2.5deg);}75%{transform:rotate(-1.5deg);}}
  @media (prefers-reduced-motion: reduce){ .build-ans .tile.pz{transition:none;} .build-ans.is-ok .tile.pz,.build-ans.is-ko .tile.pz.floja{animation:none;} }
  .tile{font-family:'Zen Maru Gothic',sans-serif;font-size:1.05rem;padding:8px 13px;border-radius:9px;border:1.5px solid var(--line);background:var(--papel);
    color:var(--sumi);cursor:pointer;box-shadow:0 2px 0 var(--line);line-height:1.3;}
  .tile[lang="ja"]{font-size:1.2rem;}
  .tile.used{visibility:hidden;}
  .tile.on{border-color:var(--ai);box-shadow:0 2px 0 var(--ai);}
  .tile:disabled{cursor:default;}
  .build-go .btn{width:100%;padding:13px;font-size:1rem;}
  .build-go .btn:disabled{opacity:.5;}
  .step-seal.t-build{background:var(--kincha);}
  .build-line{display:flex;align-items:flex-end;gap:6px;margin-bottom:14px;}
  .build-line .build-ans{flex:1;margin-bottom:0;}
  .qmark{font-family:'Zen Maru Gothic',sans-serif;font-size:1.6rem;color:var(--ai-deep);padding-bottom:12px;}

  /* ---- Historias: diálogo tipo chat ---- */
  .st-head{margin:2px 0 14px;}
  .st-head .step-title{margin:6px 0 4px;}
  .st-chat{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;}
  .st-line{display:flex;gap:10px;align-items:flex-start;}
  .st-av{flex-shrink:0;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.05rem;font-weight:700;color:var(--tinte-shu-3);}
  .st-shu .st-av{background:var(--shu);} .st-ai .st-av{background:var(--ai);} .st-matcha .st-av{background:var(--matcha);}
  .st-bub{flex:1;min-width:0;background:var(--papel);border:1.5px solid var(--line);border-radius:4px 14px 14px 14px;padding:9px 12px 8px;display:flex;flex-direction:column;gap:3px;}
  .st-who{font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;color:var(--gris);}
  .st-jp{font-size:1.3rem;line-height:1.5;color:var(--sumi);overflow-wrap:anywhere;}
  .st-es{display:none;font-family:'Zen Maru Gothic',sans-serif;font-size:.9rem;color:var(--ai-deep);border-top:1px dashed var(--line);padding-top:4px;}
  .st-es.on{display:block;}
  .st-tools{display:flex;gap:6px;justify-content:flex-end;}
  .st-tr{font-family:'Zen Maru Gothic',sans-serif;font-size:.75rem;border:1.5px solid var(--line);background:var(--washi);border-radius:14px;padding:3px 10px;cursor:pointer;color:var(--sumi);}
  .st-q{margin:4px 0 0;}
  .st-q .question{margin-bottom:12px;}
  .step-seal.t-story{background:var(--matcha);}
  @media (prefers-reduced-motion:no-preference){ .st-chat > :last-child{animation:st-in .3s ease-out 1;} }
  @keyframes st-in{from{opacity:0;transform:translateY(8px);} to{opacity:1;transform:none;}}

  /* Camino recorrido: en la lista, el tramo entre lecciones hechas también se marca */
  .tl-item{position:relative;}
  .tl-item.is-done:has(+ .tl-item.is-done)::before, .tl-item.is-done:has(+ .tl-item.is-current)::before{content:"";position:absolute;left:-1px;top:50%;height:100%;width:3px;margin-left:-.5px;background:var(--shu);opacity:.75;}

  /* Simulacro: el texto de lectura, como en el examen */
  .exam-text{font-size:1.15rem;line-height:1.9;background:var(--papel);border:1px solid var(--line);border-left:4px solid var(--kincha);border-radius:4px;padding:12px 14px;margin:0 0 14px;color:var(--sumi);}

  /* ---- Kana de 5 en 5: ficha, truco y trazo ---- */
  .step-seal.t-kana{background:var(--shu);} .step-seal.t-kanarep{background:var(--ai);}
  .node.is-done.t-kanarep{background:var(--ai);border-color:var(--ai-deep);box-shadow:0 4px 0 var(--ai-deep);}
  .kana-big{font-family:var(--letra-mano);font-size:6.5rem;line-height:1.05;color:var(--sumi);margin-top:6px;}
  .kana-card .conoce-m{margin-bottom:8px;}
  .kana-truco{max-width:34ch;margin:14px auto 4px;font-size:.98rem;line-height:1.5;color:var(--sumi);}
  .q-kana{display:block;font-family:var(--letra-mano);font-size:3.6rem;line-height:1.15;margin-top:8px;text-align:center;}
  /* Mientras se aprenden, los kana se ven con letra de cuaderno escolar (Klee One), la misma con la que se dibujan:
     así el dibujo que se pide y el que se hace coinciden (き con su hueco). Kanji y rōmaji siguen en Zen Maru Gothic. */
  .options.opt-mano .opt-btn{font-family:var(--letra-mano);}
  .kana-impresa{max-width:34ch;margin:8px auto 2px;font-size:.88rem;line-height:1.6;color:var(--gris-osc);}
  .kana-impresa b{font-weight:400;font-size:1.55em;line-height:1;color:var(--sumi);vertical-align:-.12em;}
  .ki-mano{font-family:var(--letra-mano);}
  .ki-libro{font-family:'Zen Maru Gothic',sans-serif;}
  .kana-trazo{display:flex;justify-content:center;margin:14px 0 6px;}
  .kana-trazo[hidden], .trazo-acts[hidden]{display:none;}
  .trazo-pad{position:relative;width:220px;height:220px;background:var(--papel);border:1.5px solid var(--line);border-radius:14px;touch-action:none;}
  .trazo-pad canvas{position:absolute;inset:0;width:100%;height:100%;border-radius:14px;}
  .trazo-tinta{touch-action:none;cursor:crosshair;}
  .trazo-acts{display:flex;justify-content:center;gap:10px;margin:8px 0 4px;}
  .trazo-fb{min-height:1.4em;margin:6px 0 0;font-size:.92rem;color:var(--gris-osc);}
  .trazo-fb .linkish{display:inline;margin-left:4px;font-size:.92rem;}
  /* Las tres maneras de practicar el trazo (25/10): Con guía · Sobre la letra · De memoria. Como las pestañas de un
     cuaderno: la elegida, en papel y con tinta; las otras, apagadas. */
  .trazo-modos{display:inline-flex;margin:14px auto 0;padding:3px;gap:2px;border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb, var(--sumi) 4%, transparent);}
  .trazo-modos[hidden]{display:none;}
  .tm-b{font:inherit;font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;padding:6px 12px;border:0;border-radius:999px;background:transparent;color:var(--gris-osc);cursor:pointer;touch-action:manipulation;}
  .tm-b[aria-pressed="true"]{background:var(--papel);color:var(--sumi);box-shadow:0 1px 2px color-mix(in srgb, var(--sumi) 18%, transparent);}
  .tm-b:focus-visible{outline:2px solid var(--ai);outline-offset:1px;}
  .trazo-practica{text-align:center;margin:4px 0 0;}
  @media (max-width:360px){ .tm-b{padding:6px 9px;font-size:.8rem;} }
  .results-kana{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:6px auto 18px;font-family:'Zen Maru Gothic',sans-serif;}
  .results-kana span{display:flex;flex-direction:column;align-items:center;width:58px;padding:6px 0;background:var(--papel);border:1px solid var(--line);border-radius:10px;font-size:1.7rem;}
  .results-kana small{font-size:.75rem;color:var(--gris);}
  .trazo-fb.ok{color:var(--matcha);font-size:1rem;} .trazo-fb.ok b{color:var(--matcha);}
  .trazo-fb.ko{color:var(--shu);}
  @media (prefers-reduced-motion:no-preference){ .trazo-fb.ok{animation:fb-pop .3s ease-out 1;} }
  @media (max-width:600px){ .kana-card .kana-big{font-size:5rem;} .kana-card .kana-truco{margin-top:8px;} .kana-card .kana-trazo{margin-top:8px;} }

  /* ---- Portada en pestañas: Camino · Leer · Repasar ---- */
  /* Cinco columnas iguales: 道 Camino en el centro (la tercera) */
  .tabbar{position:fixed;left:50%;bottom:calc(14px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:30;
    display:grid;grid-auto-flow:column;grid-auto-columns:96px;gap:4px;padding:5px;background:color-mix(in srgb, var(--papel) 96%, transparent);border:1px solid var(--line);border-radius:18px;
    box-shadow:0 6px 22px rgba(43,42,40,.14);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}
  .tabbar[hidden]{display:none;}
  .tab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:1px;min-width:0;padding:6px 4px 5px;border:0;border-radius:13px;
    background:transparent;color:var(--gris-osc);font-family:'Zen Maru Gothic',sans-serif;cursor:pointer;}
  .tab-kj{font-family:'Shippori Mincho',serif;font-size:1.35rem;line-height:1.1;}
  .tab-name{font-size:.72rem;line-height:1.15;text-align:center;text-wrap:balance;}
  .tab.on{background:var(--ai);color:var(--washi);}
  .tab.on .tab-kj{color:var(--tinte-kincha-2);}
  @media (hover:hover){ .tab:not(.on):hover{background:color-mix(in srgb, var(--ai) 8%, transparent);} }
  .tab:focus-visible{outline:2px solid var(--shu);outline-offset:2px;}
  /* Aro de 復: hacia el N5 (lo dominado, sobre el N5 entero) */
  .tab-aro{position:absolute;top:3px;left:50%;width:32px;height:32px;margin-left:-16px;border-radius:50%;pointer-events:none;
    background:conic-gradient(var(--matcha) calc(var(--pct)*1%), color-mix(in srgb, var(--line) 75%, transparent) 0);
    -webkit-mask:radial-gradient(farthest-side, transparent calc(100% - 2.5px), #000 calc(100% - 2px));mask:radial-gradient(farthest-side, transparent calc(100% - 2.5px), #000 calc(100% - 2px));}
  .tab.on .tab-aro{background:conic-gradient(var(--tinte-kincha-2) calc(var(--pct)*1%), color-mix(in srgb, var(--washi) 30%, transparent) 0);}
  .tab-badge{position:absolute;top:2px;right:12px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--shu);color:var(--papel);
    font-size:.66rem;line-height:18px;text-align:center;}
  body.con-tabs .wrap{padding-bottom:110px;}
  @media (max-width:600px){
    .tabbar{left:0;right:0;bottom:0;transform:none;border-radius:0;border-width:1px 0 0;padding:4px max(6px, env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) max(6px, env(safe-area-inset-left));grid-auto-columns:1fr;gap:2px;box-shadow:0 -2px 14px rgba(43,42,40,.08);}
    .tab{padding-left:1px;padding-right:1px;}
    .tab-name{font-size:.62rem;letter-spacing:-.01em;}
  }
  @media (max-width:360px){
    .tab-name{font-size:.56rem;}
  }
  .tab-h{font-family:'Shippori Mincho',serif;font-size:1.7rem;color:var(--ai-deep);margin:4px 0 4px;}
  .tab-sub{font-family:'Shippori Mincho',serif;font-size:1.2rem;color:var(--ai-deep);margin:30px 0 4px;}
  .tab-intro{margin:0 0 14px;}
  .tab-foot{text-align:center;margin-top:28px;}

  /* Camino: una línea de estado en vez de tres casillas, y ajustes plegados */
  .today-line{font-family:'Zen Maru Gothic',sans-serif;font-size:.86rem;color:var(--gris-osc);text-align:center;margin:10px 0 0;}
  /* La semana de sellos y tu avance, juntos en una tarjeta tranquila al lado (o debajo) de «Continuar» */
  .today-lado{margin-top:12px;display:flex;flex-direction:column;justify-content:center;gap:10px;padding:12px 16px;
    background:var(--papel);border:1px solid var(--line);border-radius:14px;}
  .today-lado .semana{margin:0;padding:0;border:0;background:transparent;box-shadow:none;cursor:inherit;}
  .sem-est{display:inline-flex;align-items:center;gap:5px;font-size:.82rem;color:var(--shu);font-weight:700;margin-top:2px;}
  .sem-est-ic{width:26px;height:19px;flex-shrink:0;}
  .sem-est-ic .si-a{fill:var(--omk-tela-sellos);} .sem-est-ic .si-b{fill:var(--omk-tela-omikuji);} .sem-est-ic .si-f{fill:var(--shu);}
  .sem-est-ic .si-h{stroke:var(--sumi);stroke-width:1.2;} .sem-est-ic .si-t{stroke:var(--omk-madera-cl);stroke-width:2.4;stroke-linecap:round;}
  .today-lado .semana{min-width:0;}
  .today-lado .sem-txt{min-width:0;}
  @media (max-width:480px){
    .today-lado{padding:12px 12px;}
    .today-lado .sem-dias{gap:3px;}
    .today-lado .sem-d, .today-lado .sem-d svg{width:28px;height:28px;}
    .today-lado .sem-txt{white-space:normal;text-align:right;font-size:.76rem;line-height:1.25;}
  }
  .today-line .linkish{font-size:inherit;color:var(--shu);font-weight:500;}

  /* Unidades plegables: solo la actual abierta */
  .unit-head{cursor:pointer;}
  .unit-head:focus-within:has(.unit-toggle:focus-visible){outline:3px solid var(--kincha);outline-offset:2px;}
  .unit-toggle{all:unset;cursor:pointer;display:inline;font:inherit;color:inherit;}
  .unit-toggle:focus-visible{outline:none;}   /* el contorno lo lleva toda la cabecera */
  .unit-chev{position:absolute;right:14px;bottom:10px;font-size:.8rem;opacity:.8;}
  .unit:not(.is-closed) .unit-chev{rotate:180deg;}
  .unit.is-closed{margin-top:10px;}
  .unit.is-closed .unit-head{padding:12px 16px 12px;align-items:center;}
  .unit.is-closed .unit-txt p{display:none;}
  .unit.is-closed .unit-kj{font-size:1.9rem;}
  .unit.is-closed .unit-txt :is(h2,h3){font-size:1.12rem;}
  .unit.is-complete .unit-head{opacity:.82;}

  /* Leer */
  .read-list{display:flex;flex-direction:column;gap:10px;}
  .read-card{display:flex;gap:14px;align-items:flex-start;text-align:left;padding:14px 16px;background:var(--papel);border:1px solid var(--line);
    border-radius:12px;cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);box-shadow:0 3px 0 var(--washi-deep);}
  @media (hover:hover){ .read-card:hover{border-color:var(--matcha);} }
  .read-kj{flex-shrink:0;width:44px;height:44px;border-radius:50%;background:var(--matcha);color:var(--tinte-matcha);display:flex;align-items:center;justify-content:center;
    font-family:'Shippori Mincho',serif;font-size:1.3rem;}
  .read-card.is-done .read-kj{background:var(--papel);color:var(--matcha);border:2px solid var(--matcha);}
  .read-txt{display:flex;flex-direction:column;gap:3px;min-width:0;}
  .read-txt b{font-family:'Shippori Mincho',serif;font-size:1.1rem;font-weight:700;color:var(--ai-deep);}
  .read-txt span{font-size:.88rem;line-height:1.45;}
  .read-txt small{font-size:.74rem;color:var(--gris);}
  .read-list.later .read-card{opacity:.62;}
  /* 薦 «Fuera del cuaderno»: estantería de 3 en Leer y obra del día en Repasar (js/motor/perfil.js) */
  .fuera-estante{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
  .obra-mini{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0;text-align:left;padding:12px;background:var(--papel);border:1px solid var(--line);
    border-radius:10px;box-shadow:0 2px 0 var(--line);color:var(--sumi);font-family:'Zen Maru Gothic',sans-serif;cursor:pointer;}
  .obra-mini b{font-family:'Shippori Mincho',serif;color:var(--ai-deep);font-size:.95rem;line-height:1.25;overflow-wrap:break-word;}
  .obra-mini small{color:var(--gris);font-size:.74rem;}
  @media (hover:hover){ .obra-mini:hover{border-color:var(--matcha);} }
  .obra-mini:focus-visible, .fuera-mas:focus-visible{outline:2px solid var(--shu);outline-offset:2px;}
  .fuera-mas{display:block;margin:8px 0 0 auto;padding:6px 2px;background:none;border:0;color:var(--ai);font-family:'Zen Maru Gothic',sans-serif;font-size:.86rem;cursor:pointer;}
  .obra-dia{margin:4px 0 14px;padding:10px 12px;border:1px dashed var(--line);border-radius:10px;text-align:left;}
  .obra-dia-k{margin:0 0 8px;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris);}
  .obra-dia .obra-mini{display:grid;grid-template-columns:34px minmax(0,1fr);gap:0 10px;width:100%;box-shadow:none;}
  .obra-dia .obra-mini .ob-sello{grid-row:span 2;}

  /* Repasar */
  .review-card{min-height:0;align-items:center;text-align:center;padding:22px 18px 18px;}
  .rv-big{display:flex;flex-direction:column;align-items:center;margin-bottom:8px;font-family:'Zen Maru Gothic',sans-serif;}
  .rv-big b{font-family:'Shippori Mincho',serif;font-size:3rem;line-height:1;color:var(--matcha);}
  .rv-big span{font-size:.9rem;color:var(--gris-osc);}
  .review-card .btn{min-width:220px;}
  .rv-stats{display:flex;gap:18px;justify-content:center;flex-wrap:wrap;margin-top:16px;font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--gris);}
  .rv-stats b{color:var(--ai-deep);font-size:.95rem;}
  details.cfg-fila.cfg-voz{display:block;} .cfg-voz > summary{display:flex;align-items:center;gap:12px;list-style:none;cursor:pointer;width:100%;} .cfg-voz > summary::-webkit-details-marker{display:none;}
  .cfg-voz .cfg-flecha{display:inline-block;transition:transform var(--dur-media, .26s) var(--curva-suave, ease);} .cfg-voz[open]:not(.plegando) .cfg-flecha{transform:rotate(90deg);} .cfg-voz-txt{font-size:.84rem;line-height:1.45;color:var(--sumi);padding:4px 4px 2px 52px;text-align:left;} .cfg-voz-txt ul{margin:0;padding-left:18px;}
  .voz-help{white-space:normal;width:min(300px,78vw);font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;color:var(--sumi);}
  .voz-help summary{display:block;cursor:pointer;padding:9px 12px;border:1.5px solid var(--line);border-radius:10px;text-align:center;font-size:.92rem;list-style:none;}
  .voz-help summary::-webkit-details-marker{display:none;}
  .voz-help p{margin:10px 2px 6px;line-height:1.45;} .voz-help ul{margin:0;padding-left:18px;line-height:1.45;} .voz-help li{margin-bottom:6px;}
  .listen-slow span{font-weight:500;}
  /* Iconos de audio (palabras.js: ICONO): fūrin para escuchar y caracol 円相 para «Más despacio». Tinta en currentColor, detalle en bermellón */
  .ic-audio{width:1.35em;height:1.35em;vertical-align:-.32em;flex:0 0 auto;overflow:visible;}
  .ic-audio .ic-t{fill:none;stroke:currentColor;stroke-width:3.6;stroke-linecap:round;stroke-linejoin:round;}
  .ic-audio .ic-fino{stroke-width:2.8;} .ic-audio .ic-enso{stroke-width:5.2;}
  .ic-audio .ic-t.ic-d{stroke:var(--shu);} .ic-audio .ic-df{fill:var(--shu);} .ic-audio .ic-f{fill:currentColor;}
  .listen-big{color:var(--ai-deep);display:inline-flex;align-items:center;justify-content:center;}
  .listen-big .ic-audio{width:46px;height:46px;vertical-align:0;}
  .listen-slow, .say{display:inline-flex;align-items:center;gap:5px;}
  .listen-slow .ic-audio{width:1.55em;height:1.55em;}
  .say-slow .ic-audio{width:1.5em;height:1.5em;}

  /* ===== Camino como plano de metro (路線図) ===== */
  /* Cabecera de unidad = cartel de la línea, en su color */
  .unit-head{background:linear-gradient(135deg, rgba(255,255,255,.07), rgba(0,0,0,.14)), var(--lc-f, var(--lc, var(--ai)));}
  .unit-kj{width:48px;height:48px;border-radius:50%;background:var(--papel);color:var(--lc, var(--ai));display:flex;align-items:center;justify-content:center;
    font-size:1.65rem;border:3px solid rgba(255,255,255,.55);box-shadow:inset 0 0 0 2px var(--lc, var(--ai));}
  .unit.is-closed .unit-kj{width:42px;height:42px;font-size:1.45rem;}
  .unit-prog div{background:var(--papel);opacity:.85;}

  /* Plano general: todas las líneas */
  .rosen-wrap{margin:4px -16px 14px;padding:0 16px;}
  .rosen{display:flex;align-items:flex-start;overflow-x:auto;scrollbar-width:none;padding:8px 6px 6px;scroll-snap-type:x proximity;}
  .rosen::-webkit-scrollbar{display:none;}
  .ro{flex:0 0 auto;width:66px;display:flex;flex-direction:column;align-items:center;gap:4px;border:0;background:none;cursor:pointer;padding:0;position:relative;scroll-snap-align:center;font-family:'Zen Maru Gothic',sans-serif;}
  .ro-sym{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-weight:700;font-size:1.15rem;
    background:var(--papel);color:var(--lc);border:3px solid var(--lc);opacity:.55;
    background-image:conic-gradient(color-mix(in srgb, var(--lc) 22%, transparent) calc(var(--pct)*1%), transparent 0);}
  .ro.is-started .ro-sym, .ro.is-current .ro-sym{opacity:1;}
  .ro.is-done .ro-sym{opacity:1;background:var(--lc);color:var(--papel);}
  .ro.is-current .ro-sym{box-shadow:0 0 0 4px var(--papel), 0 0 0 6px var(--shu);}
  .ro-name{font-size:.62rem;line-height:1.2;color:var(--gris-osc);text-align:center;max-width:64px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
  .ro.is-current .ro-name{color:var(--sumi);font-weight:700;}
  .ro-here{position:absolute;top:-6px;right:2px;background:var(--shu);color:var(--papel);font-size:.56rem;padding:1px 4px;border-radius:4px;letter-spacing:.05em;}
  .ro-link{flex:0 0 14px;height:3px;margin-top:27px;background:var(--line);border-radius:2px;}
  /* 終点 N5: la vía termina en el examen. Fija a la derecha (fuera de lo que se desliza); el aro se llena con lo dominado */
  .rosen-wrap{display:flex;align-items:flex-start;}
  .rosen-wrap .rosen{flex:1 1 auto;min-width:0;-webkit-mask-image:linear-gradient(90deg, #000 calc(100% - 22px), transparent);mask-image:linear-gradient(90deg, #000 calc(100% - 22px), transparent);}
  .ro-link-fin{margin-top:35px;background:repeating-linear-gradient(90deg, var(--line) 0 4px, transparent 4px 8px);}
  .ro-fin{width:58px;padding-top:8px;--lc:var(--matcha);}
  .ro-fin .ro-sym{opacity:1;font-size:.82rem;font-weight:500;color:var(--sumi);border:0;
    background:radial-gradient(closest-side, var(--papel) calc(100% - 3.5px), transparent calc(100% - 3px)), conic-gradient(var(--matcha) calc(var(--pct)*1%), var(--line) 0);}
  .ro-fin .ro-name{color:var(--sumi);font-weight:700;font-variant-numeric:tabular-nums;}
  .ro-fin:focus-visible{outline:2px solid var(--shu);outline-offset:2px;border-radius:8px;}
  .ro:focus-visible{outline:2px solid var(--kincha);outline-offset:2px;border-radius:8px;}

  /* Estaciones */
  .metro{list-style:none;margin:6px 0 0;padding:6px 0 2px;}
  .st{position:relative;}
  .st button{position:relative;display:flex;align-items:center;gap:14px;width:100%;min-height:62px;padding:8px 10px 8px 0;border:0;background:none;text-align:left;cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);border-radius:12px;}
  @media (hover:hover){ .st button:hover{background:color-mix(in srgb, var(--papel) 70%, transparent);} }
  .st button:focus-visible{outline:3px solid var(--kincha);outline-offset:2px;}
  /* la vía: mitad de arriba y mitad de abajo de cada estación; recorrida = color pleno */
  .st::before, .st::after{content:"";position:absolute;left:29px;width:8px;background:color-mix(in srgb, var(--lc) 28%, var(--papel));z-index:0;}
  .st::before{top:0;height:50%;} .st::after{top:50%;bottom:0;}
  .st.first::before, .st.last::after{display:none;}
  .st.prev-done::before, .st.is-done::after{background:var(--lc);}
  .st-dot{position:relative;z-index:1;flex:0 0 auto;margin-left:15px;width:36px;height:36px;border-radius:50%;background:var(--papel);border:4px solid var(--lc);
    display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-weight:700;font-size:.95rem;color:color-mix(in srgb, var(--lc) 70%, var(--sumi));}
  .st.t-review .st-dot, .st.t-kanarep .st-dot{border-style:double;border-width:6px;}
  .st.is-done .st-dot{background:var(--lc);color:var(--papel);font-family:'Zen Maru Gothic',sans-serif;}
  .st.is-current .st-dot{width:44px;height:44px;margin-left:11px;font-size:1.1rem;box-shadow:0 0 0 4px var(--papel), 0 0 0 7px var(--shu);}
  @media (prefers-reduced-motion:no-preference){ .st.is-current .st-dot{animation:st-pulse 2.4s ease-in-out infinite;} }
  @keyframes st-pulse{0%,100%{box-shadow:0 0 0 4px var(--papel), 0 0 0 7px var(--shu);} 50%{box-shadow:0 0 0 4px var(--papel), 0 0 0 11px color-mix(in srgb, var(--shu) 25%, transparent);}}
  .st-body{display:flex;flex-direction:column;min-width:0;flex:1;}
  .st-num{align-self:flex-start;font-size:.64rem;font-weight:700;letter-spacing:.04em;color:var(--lc);border:1.5px solid var(--lc);border-radius:5px;padding:0 5px;line-height:1.5;background:var(--papel);margin-bottom:2px;}
  .st-body b{font-weight:500;font-size:.95rem;line-height:1.3;}
  .st-body small{font-size:.72rem;color:var(--gris);}
  .st.is-current .st-body b{font-weight:700;}
  .st-here{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;background:var(--shu);color:var(--papel);border-radius:8px;padding:4px 8px;font-size:.66rem;line-height:1.2;box-shadow:0 2px 0 var(--shu-deep);}
  .st-here b{font-family:'Shippori Mincho',serif;font-size:.9rem;letter-spacing:.08em;}
  .metro-transfer{margin:6px 0 4px 8px;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
  .metro-transfer > span{background:var(--papel);border:1px solid var(--line);border-radius:5px;padding:0 5px;color:var(--sumi);}
  .metro-transfer b{display:inline-flex;align-items:center;gap:5px;color:var(--sumi);font-weight:500;}
  .metro-transfer b i{font-style:normal;width:20px;height:20px;border-radius:50%;border:2.5px solid var(--lc);color:var(--lc);display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;background:var(--papel);}

  /* ===== Libro de sellos (御朱印帳) ===== */
  .semana{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;margin:12px 0 0;padding:8px 12px;background:var(--papel);border:1px solid var(--line);
    border-radius:14px;cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);text-align:left;box-shadow:0 2px 0 var(--washi-deep);}
  @media (hover:hover){ .semana:hover{border-color:var(--shu);} }
  .semana:focus-visible{outline:3px solid var(--kincha);outline-offset:2px;}
  .sem-dias{display:flex;gap:4px;}
  .sem-d{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px dashed var(--line-cl);font-size:.68rem;color:var(--gris-cl);}
  .sem-d i{font-style:normal;}
  .sem-d.si{border:0;}
  .sem-d.hoy:not(.si){border-color:var(--shu);color:var(--shu);border-style:solid;}
  .sem-d.fut{opacity:.5;}
  .sem-txt{display:flex;flex-direction:column;align-items:flex-end;font-size:.8rem;font-weight:500;white-space:nowrap;}
  .sem-txt small{font-size:.7rem;color:var(--shu);font-weight:400;}
  @media (max-width:380px){ .sem-d{width:26px;height:26px;} .sem-d svg{width:26px;height:26px;} }

  .sl-over{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;padding:16px;background:color-mix(in srgb, var(--washi) 88%, transparent);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);}
  .sl-card{width:min(360px,100%);background:var(--papel);border:1px solid var(--line);border-radius:18px;padding:22px 20px 18px;text-align:center;box-shadow:0 18px 50px rgba(43,42,40,.18);font-family:'Zen Maru Gothic',sans-serif;}
  .sl-stamp{display:flex;justify-content:center;margin:4px 0 6px;}
  .sl-k{margin:0;font-family:'Shippori Mincho',serif;color:var(--shu);letter-spacing:.2em;font-size:.95rem;}
  .sl-card h3{font-family:'Shippori Mincho',serif;font-size:1.45rem;margin:2px 0 6px;color:var(--ai-deep);}
  .sl-card p{margin:0 0 14px;font-size:.92rem;line-height:1.5;}
  .sl-acts{display:flex;gap:10px;justify-content:center;}
  @media (prefers-reduced-motion:no-preference){
    .sl-stamp svg:not(.rs-entra){animation:hanko .55s cubic-bezier(.3,1.4,.5,1) .15s both;}
    @keyframes hanko{0%{transform:scale(1.9) rotate(-10deg);opacity:0;} 60%{transform:scale(.94) rotate(2deg);opacity:1;} 78%{transform:scale(1.03);} 100%{transform:none;opacity:1;}}
    .sl-goshuin svg{animation-duration:.7s;}
  }

  .libro{padding-bottom:40px;}
  .lb-k{margin:6px 0 0;font-family:'Shippori Mincho',serif;color:var(--shu);letter-spacing:.25em;}
  .lb-stats{display:flex;gap:16px;flex-wrap:wrap;margin:6px 0 14px;font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;color:var(--gris-osc);}
  .lb-stats b{font-family:'Shippori Mincho',serif;font-size:1.2rem;color:var(--ai-deep);}
  .lb-cal{min-height:0;padding:14px 12px 16px;}
  .lb-mes{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-family:'Shippori Mincho',serif;font-size:1.1rem;text-transform:capitalize;}
  .lb-mes .btn{padding:4px 14px;min-width:0;}
  .lb-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
  .lb-h{text-align:center;font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;color:var(--gris);padding-bottom:2px;}
  .lb-c{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:50%;}
  .lb-c i{font-style:normal;font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--gris-cl-2);}
  .lb-c.hoy{box-shadow:inset 0 0 0 1.5px var(--shu);}
  .lb-c svg{width:100%;height:100%;max-width:52px;max-height:52px;}
  .tab-sub small{font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris);font-weight:400;margin-left:6px;}
  .lb-goshuin{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:14px;margin-top:10px;}
  .lb-goshuin figure{margin:0;text-align:center;}
  .lb-rachas{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:10px;margin:10px 0 18px;}
  .lb-rachas figure{margin:0;text-align:center;}
  .lb-rachas svg{width:100%;max-width:80px;height:auto;}
  .lb-rachas figcaption{font-family:'Zen Maru Gothic',sans-serif;font-size:.7rem;color:var(--gris-osc);line-height:1.3;}
  .lb-rachas figcaption small{display:block;font-size:.64rem;color:var(--gris);}
  .lb-goshuin svg{width:100%;height:auto;filter:drop-shadow(0 2px 0 var(--washi-deep));}
  .lb-goshuin figcaption{font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;color:var(--gris-osc);margin-top:4px;line-height:1.3;}
  .lb-cal{max-width:460px;margin-left:auto;margin-right:auto;}
  /* Tintas de los dibujos de sellos (js/motor/sellos.js: selloDia, selloRacha, goshuin), en el libro, la portada, la
     celebración, el fin de unidad y la estantería. Antes eran notas style="fill:…" dentro del SVG (AUT-CS-02). Siempre
     uno de estos pocos colores: por eso clase y no Estilo.pinta, y el dibujo vale igual en cualquier sitio donde se pinte.
     Con !important, para ganar igual que ganaba la nota a mano (docs/propuesta-csp-estilos.md, 8.1).
     s- = trazo (stroke) · f- = relleno (fill) */
  .sl-s-guia{stroke:var(--sl-guia) !important;} .sl-f-guia-t{fill:var(--sl-guia-t) !important;}
  .sl-s-shu{stroke:var(--sl-shu) !important;} .sl-f-shu{fill:var(--sl-shu) !important;}
  .sl-s-ai{stroke:var(--sl-ai) !important;} .sl-f-ai{fill:var(--sl-ai) !important;}
  .sl-s-oro{stroke:var(--sl-oro) !important;} .sl-f-oro{fill:var(--sl-oro) !important;}
  .sl-s-oro-2{stroke:var(--sl-oro-2) !important;}
  .sl-f-papel{fill:var(--sl-papel) !important;} .sl-f-pincel{fill:var(--sl-pincel) !important;}
  /* El <svg> de los filtros de tinta (#tinta-sello, #tinta-pincel): está, pero no ocupa sitio */
  .sl-defs{position:absolute !important;}

  /* ===== Omikuji (御神籤) y estantería (本棚) · js/motor/omikuji.js ===== */
  :root{--omk-madera:var(--kincha-osc-3);--omk-madera-cl:var(--kincha-osc);--omk-tela-sellos:var(--ai-deep);--omk-tela-omikuji:var(--shu-osc-2);}
  /* Colores de la caja del omikuji: del objeto, fijos en todos los temas (como los premios del fukubiki) */
  :root{--omk-c-tinta:#4a3322;--omk-c-sombra:rgba(74,51,34,.22);--omk-c-papel:#fff8ea;--omk-c-rojo:#c4553d;--omk-c-hueco:#2a1a10;
    --omk-c-top:#f4deb2;--omk-c-izq:#e6c38b;--omk-c-fr:#d3a86b;--omk-c-der:#b3844d;--omk-c-veta:#8a5f33;--omk-c-aro:#c99a4e;
    --omk-c-palo:#f3e2bb;--omk-c-palo-os:#dcc28c;--omk-c-luz:#fff3c2;--omk-c-hoja:#7da45c;--omk-c-hoja-n:#557a3c;}
  :root:is([data-tema="samurai"],[data-tema="noche"]){--omk-c-sombra:rgba(0,0,0,.4);}
  .omk{margin:4px auto 18px;max-width:480px;text-align:left;display:flex;flex-direction:column;gap:12px;}
  .omk-fila{display:flex;align-items:center;gap:18px;background:var(--papel);border:1px solid var(--line);border-radius:14px;padding:48px 16px 14px;}   /* arriba, sitio para el palito (asoma ~43 px sobre la caja) */
  .omk-caja{position:relative;z-index:0;isolation:isolate;flex:0 0 auto;width:96px;height:132px;transform-origin:50% 90%;}   /* la caja manda: más grande que el texto */
  .omk-caja-svg{width:100%;height:100%;display:block;overflow:visible;}
  .omk-caja-svg *{stroke-linejoin:round;stroke-linecap:round;}
  .omk-suelo{fill:var(--omk-c-sombra);}
  .omk-c-top{fill:var(--omk-c-top);} .omk-c-izq{fill:var(--omk-c-izq);} .omk-c-fr{fill:var(--omk-c-fr);} .omk-c-der{fill:var(--omk-c-der);}
  .omk-veta{fill:none;stroke:var(--omk-c-veta);stroke-width:.7;opacity:.3;}
  .omk-arista{fill:none;stroke:var(--omk-c-tinta);stroke-width:.9;opacity:.45;}
  .omk-aro{fill:var(--omk-c-aro);stroke:var(--omk-c-tinta);stroke-width:.7;} .omk-aro-l{fill:none;stroke:rgba(255,255,255,.4);stroke-width:.6;}
  .omk-cartel{fill:var(--omk-c-papel);stroke:var(--omk-c-tinta);stroke-width:.8;}
  .omk-cartel-t{font-family:'Shippori Mincho',serif;font-weight:800;font-size:10.5px;fill:var(--omk-c-tinta);text-anchor:middle;}
  .omk-hanko{fill:var(--omk-c-rojo);}
  .omk-penumbra{fill:var(--omk-c-veta);opacity:.2;}
  .omk-sombra-hoja{fill:var(--omk-c-veta);opacity:.22;}
  .omk-luz{fill:var(--omk-c-luz);opacity:.85;filter:url(#omkLuz);}
  .omk-borde{fill:none;stroke:var(--omk-c-tinta);stroke-width:2;}
  .omk-agujero{fill:var(--omk-c-hueco);stroke:var(--omk-c-tinta);stroke-width:.8;}
  .omk-labio{fill:none;stroke:rgba(255,255,255,.5);stroke-width:.8;}
  .omk-palo{transform:translateY(62px);}
  .omk-caja.sale .omk-palo{transform:none;}
  .omk-palo-cuerpo{fill:var(--omk-c-palo);stroke:var(--omk-c-tinta);stroke-width:1;} .omk-palo-lado{fill:var(--omk-c-palo-os);}
  .omk-palo-num{font-family:'Shippori Mincho',serif;font-weight:800;font-size:8px;fill:var(--omk-c-rojo);text-anchor:middle;}
  .omk-hoja-v{fill:var(--omk-c-hoja);stroke:var(--omk-c-tinta);stroke-width:.8;} .omk-hoja-nervio{fill:none;stroke:var(--omk-c-hoja-n);stroke-width:.7;}
  .omk-hoja-top{transform-box:fill-box;transform-origin:center;}
  .omk-caja.abierta .omk-hoja-top{opacity:0;}
  @media (max-width:480px){   /* móvil: algo menos, para que el texto no quede en una columna estrecha */
    .omk-fila{gap:14px;padding:38px 12px 12px;}
    .omk-caja{width:80px;height:110px;}
  }
  .omk-txt{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px;font-family:'Zen Maru Gothic',sans-serif;}
  .omk-txt b{font-family:'Shippori Mincho',serif;font-size:1rem;color:var(--ai-deep);}
  .omk-txt > span{font-size:.78rem;color:var(--gris-osc);line-height:1.35;}
  .omk-boton{align-self:flex-start;margin-top:6px;padding:8px 14px;font-size:.88rem;}
  .omk-mini{flex:0 0 auto;width:48px;height:64px;border-radius:3px 6px 6px 3px;background:var(--omk-tela-omikuji);position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;
    box-shadow:inset 4px 0 0 color-mix(in srgb, var(--sumi) 25%, transparent);}
  .omk-mini b{display:flex;flex-direction:column;align-items:center;font-family:'Shippori Mincho',serif;font-size:.6rem;line-height:1.05;color:var(--sumi);background:var(--papel);padding:3px 2px;border-radius:1px;}
  .omk-mini b i, .est-titulo i, .est-pagina span i{display:block;font-style:normal;}
  .omk-mini-n{position:absolute;bottom:-18px;left:50%;transform:translateX(-50%);font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;color:var(--gris-osc);white-space:nowrap;}
  .omk-papel{display:flex;justify-content:center;}
  /* Cerrada: solo la caja con su nombre encima, sin tarjeta ni texto (omikuji.js · ofrecer). Al tocarla, se abre. */
  .omk.cerrada .omk-fila{flex-direction:column;gap:10px;background:none;border-color:transparent;padding:6px 16px 12px;cursor:pointer;width:max-content;margin:0 auto;border-radius:14px;}
  .omk.cerrada .omk-mini{display:none;}
  .omk.cerrada .omk-caja{transition:transform var(--dur-corta, .18s) ease;}
  @media (hover:hover){ .omk.cerrada .omk-fila:hover .omk-caja{transform:translateY(-3px) rotate(-2deg);} }
  .omk.cerrada .omk-fila:focus-visible{outline:2px solid var(--ai);outline-offset:3px;}
  .omk .omk-nombre{font-family:'Shippori Mincho',serif;font-size:1.3rem;color:var(--ai-deep);text-align:center;}
  .omk:not(.cerrada) .omk-nombre{text-align:left;font-size:1.15rem;}
  @media (prefers-reduced-motion:no-preference){ .omk.cerrada .omk-caja{animation:omk-llama 2.8s ease-in-out 1.2s infinite;} }
  @keyframes omk-vuela{0%{transform:none;opacity:1}30%{transform:translate(6px,-10px) rotate(40deg);opacity:1}100%{transform:translate(30px,26px) rotate(160deg);opacity:0}}
  @keyframes omk-llama{0%,82%,100%{transform:none;} 86%{transform:rotate(-4deg);} 90%{transform:rotate(4deg);} 94%{transform:rotate(-2deg);}}
  .omk-txt[hidden]{display:none;}
  .omk-txt{overflow:hidden;gap:6px;}
  .omk-txt .omk-regla b{font-family:inherit;font-size:inherit;color:var(--sumi);}
  .omk-regla{border-left:3px solid var(--shu);padding-left:8px;}
  .omk-regla b{color:var(--sumi);}
  /* Progreso de cada proverbio: N/10 con su barrita; completo, con el sello 満 */
  .omk-prog{display:inline-flex;align-items:center;gap:5px;font-family:'Zen Maru Gothic',sans-serif;font-size:.68rem;color:var(--gris-osc);margin-top:4px;}
  .omk-hoja .omk-prog{font-size:.78rem;margin-top:8px;justify-content:center;width:100%;}
  .omk-barra{display:inline-block;width:44px;height:5px;border-radius:3px;background:color-mix(in srgb, var(--line) 70%, transparent);overflow:hidden;}
  .omk-hoja .omk-barra{width:90px;}
  .omk-barra i{display:block;height:100%;background:var(--shu);border-radius:3px;}
  .omk-prog.hecho{color:var(--shu);font-weight:700;}
  .omk-sello{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1.5px solid var(--shu);border-radius:3px;font-family:'Shippori Mincho',serif;font-size:.7rem;line-height:1;transform:rotate(-6deg);}
  .omk-ranura button{position:relative;}
  .omk-r-sello{position:absolute;top:6px;right:5px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:2px solid var(--shu);border-radius:4px;
    color:var(--shu);font-family:'Shippori Mincho',serif;font-weight:700;font-size:.85rem;transform:rotate(-10deg);background:color-mix(in srgb, var(--shu) 8%, transparent);}
  .omk-ranura.hecho button{background:color-mix(in srgb, var(--shu) 6%, var(--papel));}
  /* El especial (13.º): marco dorado y algo de brillo; mientras falta, un hueco dorado con «？» */
  .omk-ranura.esp button{border-top-color:var(--rc-oro, var(--kincha));border-bottom-color:var(--rc-oro, var(--kincha));box-shadow:0 0 0 2px color-mix(in srgb, var(--rc-oro, var(--kincha)) 40%, transparent), 0 0 14px color-mix(in srgb, var(--rc-oro, var(--kincha)) 30%, transparent);}
  .omk-ranura.vacia.esp{border-color:var(--rc-oro, var(--kincha));color:var(--rc-oro, var(--kincha));}
  .omk-ranura.vacia.esp b{color:var(--rc-oro, var(--kincha));}
  .omk-ranura.vacia small{font-size:.62rem;text-align:center;padding:0 4px;}
  .omk-papel.esp .omk-hoja{border-top-color:var(--rc-oro, var(--kincha));border-bottom-color:var(--rc-oro, var(--kincha));box-shadow:0 0 0 3px color-mix(in srgb, var(--rc-oro, var(--kincha)) 35%, transparent), 0 0 30px color-mix(in srgb, var(--rc-oro, var(--kincha)) 35%, transparent);}
  .omk-esp{font-family:'Shippori Mincho',serif;font-weight:700;color:var(--rc-oro, var(--kincha));letter-spacing:.1em;margin:6px 0 0 !important;}
  .omk-hoja{width:min(300px, 100%);background:var(--papel);border:1px solid var(--line);border-top:6px solid var(--shu);border-bottom:6px solid var(--shu);
    padding:12px 16px 14px;text-align:center;font-family:'Zen Maru Gothic',sans-serif;box-shadow:0 8px 24px color-mix(in srgb, var(--sumi) 14%, transparent);}
  .omk-papel.dai .omk-hoja{border-top-color:var(--kincha);border-bottom-color:var(--kincha);box-shadow:0 0 0 3px color-mix(in srgb, var(--kincha) 30%, transparent), 0 8px 24px color-mix(in srgb, var(--sumi) 14%, transparent);}
  .omk-hoja p{margin:0;}
  .omk-num{font-family:'Shippori Mincho',serif;font-size:.8rem;color:var(--gris);letter-spacing:.2em;}
  .omk-suerte{font-family:'Shippori Mincho',serif;font-weight:700;font-size:3rem;line-height:1.1;color:var(--shu);margin-top:2px !important;}
  .omk-papel.dai .omk-suerte{color:var(--kincha-osc);}
  .omk-suerte-es{font-size:.8rem;color:var(--gris-osc);margin-bottom:10px !important;}
  .omk-frase{font-family:'Shippori Mincho',serif;font-weight:700;font-size:1.35rem;color:var(--sumi);border-top:1px dashed var(--line);padding-top:10px;}
  .omk-kana{font-size:.85rem;color:var(--gris-osc);}
  .omk-rom{font-size:.8rem;color:var(--gris);font-style:italic;}
  /* Omikuji: el rōmaji sigue Configuración → Ayudas de lectura; si está apagado, «Ver rōmaji» lo enseña (js/motor/omikuji.js) */
  .omk-ver-rom{display:none;margin:2px auto 6px;font-size:.8rem;color:var(--ai);text-decoration:underline;text-underline-offset:3px;}
  :root:not([data-romaji="si"]) .omk-hoja:not(.rom-ver) .omk-rom, :root:not([data-romaji="si"]) .omk-hoja:not(.rom-ver) .omk-rom-lee{display:none;}
  :root:not([data-romaji="si"]) .omk-hoja:not(.rom-ver) .omk-ver-rom{display:block;}
  .omk-es{font-size:.95rem;color:var(--sumi);margin-top:6px !important;}
  .omk-col{font-size:.8rem;color:var(--gris-osc);margin-top:10px !important;border-top:1px dashed var(--line);padding-top:8px;}
  .omk-col b{color:var(--matcha-osc);}
  .omk-vuela{position:fixed;z-index:65;width:44px;height:58px;display:flex;align-items:center;justify-content:center;background:var(--papel);border:1px solid var(--line);border-top:4px solid var(--shu);
    font-family:'Shippori Mincho',serif;font-weight:700;color:var(--shu);font-size:.9rem;pointer-events:none;transition:transform .7s cubic-bezier(.5,0,.6,1), opacity .7s ease;}
  /* el álbum de la colección */
  .omk-album{list-style:none;margin:12px 0 16px;padding:0;display:grid;grid-template-columns:repeat(auto-fill, minmax(92px, 1fr));gap:10px;}
  .omk-ranura{aspect-ratio:3/4.4;}
  .omk-ranura button{width:100%;height:100%;}
  .omk-ranura button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:var(--papel);border:1px solid var(--line);border-top:4px solid var(--shu);border-bottom:4px solid var(--shu);
    border-radius:2px;cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);padding:6px 4px;box-shadow:0 2px 0 var(--washi-deep);transition:transform .15s ease;}
  .omk-ranura button:focus-visible{outline:2px solid var(--ai);outline-offset:2px;}
  @media (hover:hover){ .omk-ranura button:hover{transform:translateY(-2px) rotate(-1deg);} }
  .omk-ranura b{font-family:'Shippori Mincho',serif;font-size:1.5rem;color:var(--shu);line-height:1.1;}
  .omk-ranura.dai button{border-top-color:var(--kincha);border-bottom-color:var(--kincha);box-shadow:0 0 0 2px color-mix(in srgb, var(--kincha) 30%, transparent);}
  .omk-ranura.dai b{color:var(--kincha-osc);}
  .omk-r-num{font-family:'Shippori Mincho',serif;font-size:.62rem;color:var(--gris);}
  .omk-r-frase{font-family:'Shippori Mincho',serif;font-size:.7rem;line-height:1.25;color:var(--gris-osc);text-align:center;}
  .omk-ranura small{font-size:.65rem;color:var(--gris);}
  .omk-ranura.vacia{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1.5px dashed var(--line);border-radius:4px;color:var(--gris-cl);}
  .omk-ranura.vacia b{font-family:'Shippori Mincho',serif;font-size:1.6rem;color:var(--gris-cl);}
  .omk-detalle{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:16px;}

  /* la estantería (fase 1 de la mejora visual, 19/10/2026): contorno de tinta como el farolillo, telas seigaiha y asanoha
     dibujadas en canvas (js/motor/omikuji.js las deja en --est-seigaiha y --est-asanoha), sombras y rótulos en trozos */
  :root{--est-tinta:var(--sumi);--est-tela-sellos:#1f2a44;--est-tela-omikuji:#9e3a2a;
    --est-seigaiha-trazo:rgba(201,168,105,.42);--est-asanoha-trazo:rgba(240,170,140,.32);
    --est-brillo:linear-gradient(135deg, rgba(255,255,255,.08), transparent 45%);
    --est-etiqueta:#fbf7ee;--est-filete:#b89b60;--est-oro:#c9a869;--est-sep:#a79e8e;
    --est-sombra-libro:0 10px 16px -10px rgba(50,32,14,.55), inset 5px 0 0 rgba(0,0,0,.16);
    --est-sombra-balda:inset 0 2px 0 rgba(255,236,190,.35), 0 16px 20px -12px rgba(60,40,20,.5);
    --est-contacto:rgba(40,24,8,.45);--est-curva:cubic-bezier(.2,.7,.2,1);}
  /* en los demás temas, las telas y la etiqueta siguen el color del tema */
  :root[data-tema]:not([data-tema="washi"]){--est-tela-sellos:var(--omk-tela-sellos);--est-tela-omikuji:var(--omk-tela-omikuji);--est-etiqueta:var(--papel);--est-sep:var(--gris);}
  .est-mueble{margin:18px auto 10px;max-width:420px;}
  .est-balda{position:relative;display:flex;justify-content:center;align-items:flex-end;gap:26px;padding:0 20px;min-height:200px;}
  .est-tabla{position:relative;height:16px;border-radius:6px;border:2px solid var(--est-tinta);overflow:hidden;background:linear-gradient(var(--omk-madera-cl), var(--omk-madera));box-shadow:var(--est-sombra-balda);}
  .est-hueco{position:relative;z-index:1;display:flex;justify-content:center;}
  .est-libro{position:relative;display:block;width:var(--est-libro-w);height:auto;aspect-ratio:131/173;padding:0;border:none;background:none;cursor:pointer;transform-origin:50% 100%;transition:transform .15s var(--est-curva);}
  .est-libro:focus-visible{outline:3px solid var(--est-oro);outline-offset:4px;}
  .est-libro:active{transform:scale(.985);}
  /* sombra de contacto: se queda en la balda; al levantar el libro se aclara y encoge */
  .est-contacto{position:absolute;left:4%;right:4%;bottom:-5px;height:12px;border-radius:50%;pointer-events:none;
    background:radial-gradient(closest-side, var(--est-contacto), transparent);transition:opacity .15s var(--est-curva), transform .15s var(--est-curva);}
  @media (hover:hover){
    .est-hueco:hover .est-libro{transform:translateY(-4px) rotate(-1deg);}
    .est-hueco:hover .est-libro:active{transform:translateY(-4px) rotate(-1deg) scale(.985);}
    .est-hueco:hover .est-contacto{opacity:.55;transform:scaleX(.9);}
  }
  .est-tapa, .est-cara{position:relative;display:flex;justify-content:center;width:100%;height:100%;border-radius:3px 7px 7px 3px;
    border:2px solid var(--est-tinta);box-shadow:var(--est-sombra-libro);}
  .est-sellos .est-tapa, .est-sellos .est-cara{background-color:var(--est-tela-sellos);
    background-image:var(--est-brillo), var(--est-seigaiha, none);background-size:100% 100%, 28px 14px;}
  .est-omikuji .est-tapa, .est-omikuji .est-cara{background-color:var(--est-tela-omikuji);
    background-image:var(--est-brillo), var(--est-asanoha, none);background-size:100% 100%, var(--est-asanoha-tam, 24px 41.57px);}
  .est-titulo{margin-top:14%;align-self:flex-start;display:flex;flex-direction:column;align-items:center;line-height:1.15;background:var(--est-etiqueta);color:var(--sumi);font-family:'Shippori Mincho',serif;font-weight:700;
    font-size:1.05rem;padding:12px 8px;border:1.5px solid var(--est-tinta);border-radius:2px;box-shadow:inset 0 0 0 3px var(--est-etiqueta), inset 0 0 0 4.5px var(--est-filete);}
  .est-pies{display:flex;justify-content:center;gap:26px;margin-top:8px;}
  .est-pies > span{width:var(--est-libro-w);text-align:center;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris-osc);line-height:1.35;display:flex;flex-direction:column;align-items:center;}
  .est-pies b{color:var(--ai-deep);font-size:.85rem;}
  /* una línea de dato: cifras tabulares y ningún trozo partido; en pantallas estrechas, un trozo por línea y sin «·» */
  .est-dato{font-style:normal;font-variant-numeric:tabular-nums;display:flex;justify-content:center;white-space:nowrap;}
  .est-trozo{white-space:nowrap;}
  .est-sep{margin:0 .35em;color:var(--est-sep);}
  @media (max-width:560px){ .est-dato{flex-direction:column;align-items:center;} .est-sep{display:none;} }
  @media (prefers-reduced-motion:reduce){ .est-libro, .est-contacto{transition:none !important;animation:none !important;transform:none !important;} }

  /* Estantería, fase 2 «Objetos» (19/10/2026): los libros como objetos dibujados (js/motor/omikuji.js, Estanteria).
     Cada libro: SVG detrás (canto y cabeza del bloque, en 3/4) · la tapa de tela de la fase 1 · SVG delante (hilo, cintas,
     papelitos). Medidas del dibujo (viewBox 131×173): tapa en x 6–106, y 24–172 (G en omikuji.js). Mismo peso de tinta:
     2 px las siluetas y 1–1.25 px los detalles, sin escalar (vector-effect). Colores, siempre de las variables del tema. */
  :root{--est-libro-w:136px;
    --est-canto-papel:color-mix(in srgb, var(--papel) 55%, var(--washi-deep));--est-cabeza-papel:color-mix(in srgb, var(--papel) 82%, var(--washi));
    --est-hoja:color-mix(in srgb, var(--sumi) 30%, var(--est-canto-papel));--est-hilo:#efe2bf;--est-papelito:var(--papel);
    --est-cinta-0:#c4432d;--est-cinta-1:#b08a3e;--est-cinta-2:#5c7a52;--est-cinta-3:#2c3f6b;--est-cinta-4:#e7a3b1;
    --est-sello:#bd4932;--est-veta:color-mix(in srgb, var(--omk-madera) 75%, #000);
    --est-balda-cara:color-mix(in srgb, var(--omk-madera-cl) 72%, var(--papel));--est-sombra-cara:rgba(0,0,0,.2);}
  :root[data-tema="sakura"]{--est-hilo:#f6e9c9;--est-cinta-0:#c94b4b;--est-cinta-1:#b9944a;--est-cinta-2:#6f8a5e;--est-cinta-3:#45507e;--est-cinta-4:#f0b2c1;}
  :root[data-tema="matsuri"]{--est-hilo:#e3bd62;--est-cinta-0:#d23a24;--est-cinta-1:#c99325;--est-cinta-2:#2f6a4a;--est-cinta-3:#1f3a6e;--est-cinta-4:#ef9fb1;}
  :root[data-tema="manga"]{--est-hilo:#f4f2ec;--est-cinta-0:#c0392b;--est-cinta-1:#a08d62;--est-cinta-2:#5d6b55;--est-cinta-3:#2e3442;--est-cinta-4:#dcb0b6;}
  /* En los temas oscuros, el papel del canto se aclara (que se lea sobre el fondo) y el hilo es dorado */
  :root[data-tema="samurai"]{--est-hilo:#d9b45e;--est-cinta-0:#e05a4c;--est-cinta-1:#d2ad55;--est-cinta-2:#9bb98a;--est-cinta-3:#7d93b8;--est-cinta-4:#e3a3b6;}
  :root[data-tema="noche"]{--est-hilo:#f3cf7a;--est-cinta-0:#ff7a5c;--est-cinta-1:#ffd166;--est-cinta-2:#7ee0a8;--est-cinta-3:#8e9cff;--est-cinta-4:#ff9cc6;}
  :root[data-tema="samurai"], :root[data-tema="noche"]{
    --est-canto-papel:color-mix(in srgb, var(--sumi) 58%, var(--washi));--est-cabeza-papel:color-mix(in srgb, var(--sumi) 76%, var(--washi));
    --est-hoja:color-mix(in srgb, var(--washi) 45%, var(--est-canto-papel));--est-papelito:color-mix(in srgb, var(--sumi) 88%, var(--washi));
    --est-veta:color-mix(in srgb, var(--omk-madera) 60%, #000);--est-balda-cara:color-mix(in srgb, var(--omk-madera-cl) 80%, var(--sumi));--est-sombra-cara:rgba(0,0,0,.32);}
  .est-capa{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;}
  .est-capa *{vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round;}
  .est-libro .est-tapa{position:absolute;left:4.58%;top:13.87%;width:76.34%;height:85.55%;}
  .est-silueta{fill:none;stroke:var(--est-tinta);stroke-width:2;}
  .est-hojas-canto{fill:var(--est-canto-papel);} .est-hojas-cabeza{fill:var(--est-cabeza-papel);}
  .est-hoja{fill:none;stroke:var(--est-hoja);stroke-width:1;} .est-pliegue{stroke:color-mix(in srgb, var(--est-tinta) 55%, var(--est-canto-papel));stroke-width:1.25;}
  .est-carton-sellos{fill:var(--est-tela-sellos);} .est-carton-omikuji{fill:var(--est-tela-omikuji);}
  .est-sombra-canto{fill:var(--est-sombra-cara);} .est-luz{fill:#fff;opacity:.28;}
  .est-crece{transform-box:fill-box;transform-origin:0 0;}
  /* el cosido 四つ目綴じ */
  .est-lomo{fill:rgba(0,0,0,.2);} .est-pliegue-lomo{stroke:var(--est-tinta);stroke-width:1.25;opacity:.75;}
  .est-hilo-borde{fill:none;stroke:var(--est-tinta);stroke-width:3.4;} .est-hilo{fill:none;stroke:var(--est-hilo);stroke-width:1.6;}
  .est-agujero{fill:var(--est-tinta);}
  .est-papel{fill:var(--est-papelito);stroke:var(--est-tinta);stroke-width:1.25;} .est-doblez{stroke:var(--est-tinta);stroke-width:1;opacity:.4;}
  .est-cinta polygon{stroke:var(--est-tinta);stroke-width:1.25;}
  .est-cinta-0{fill:var(--est-cinta-0);} .est-cinta-1{fill:var(--est-cinta-1);} .est-cinta-2{fill:var(--est-cinta-2);} .est-cinta-3{fill:var(--est-cinta-3);} .est-cinta-4{fill:var(--est-cinta-4);}
  .est-ranura{stroke:var(--est-tinta);stroke-width:1.25;}
  /* el sello de hoy, pequeño en la esquina inferior de la etiqueta; la copia borrosa es la tinta que se asienta */
  .est-titulo{position:relative;}
  .est-titulo.con-sello{padding-bottom:26px;}
  .est-sello-hoy{position:absolute;right:3px;bottom:3px;width:22px;height:22px;pointer-events:none;}
  .est-sello-hoy > span{position:absolute;inset:0;transform:rotate(var(--giro, 0deg));}
  .est-sello-hoy svg{display:block;width:100%;height:100%;}
  .est-sello-borroso{opacity:0;filter:blur(1.4px);}
  .est-in-borde{stroke:var(--est-sello);} .est-in{fill:var(--est-sello);}
  /* la balda: cara de arriba (donde se apoya el fondo de los libros), veta y dos soportes */
  .est-balda::before{content:'';position:absolute;left:0;right:0;bottom:-2px;height:14px;z-index:0;border:2px solid var(--est-tinta);border-bottom:none;
    border-radius:8px 8px 0 0;background:linear-gradient(var(--est-balda-cara), color-mix(in srgb, var(--est-balda-cara) 82%, var(--omk-madera)));}
  .est-hueco-farol{align-self:flex-end;}
  .est-veta{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
  .est-veta path{fill:none;stroke:var(--est-veta);stroke-width:1;opacity:.5;vector-effect:non-scaling-stroke;}
  .est-veta path:last-child{fill:color-mix(in srgb, var(--est-veta) 30%, transparent);}
  .est-mueble{position:relative;padding-bottom:24px;}
  .est-soportes{position:absolute;left:14px;right:14px;bottom:0;height:26px;display:flex;justify-content:space-between;pointer-events:none;}
  .est-soporte{width:26px;height:26px;overflow:visible;}
  .est-soportes .est-soporte:last-child{transform:scaleX(-1);}
  .est-soporte *{vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round;}
  .est-soporte-cuerpo{fill:none;stroke:var(--est-tinta);stroke-width:2;}
  .est-soporte-rizo{fill:none;stroke:var(--est-tinta);stroke-width:1.25;} .est-soporte-clavo{fill:var(--est-balda-cara);stroke:var(--est-tinta);stroke-width:1;}
  .est-sello-hoy .hanko circle{stroke-width:9;} .est-sello-hoy .hanko text{stroke:#bd4932;stroke-width:3;}

  /* ---- Portada: «Tu cuaderno» (racha + estantería, un solo botón) y «Tu plano» (la tira de líneas) ---- */
  /* La racha al entrar (js/motor/racha-entrada.js, 02/11): el Camino se difumina, se desenrolla una cinta de washi con los
     sellos de los días, se estampa el de hoy, cae el hanko de la racha y vuela a «Tu racha». Todo con las variables del tema. */
  .rt-velo{position:fixed;inset:0;z-index:899;pointer-events:none;background:color-mix(in srgb, var(--washi) 55%, transparent);
    -webkit-backdrop-filter:blur(7px) saturate(.9);backdrop-filter:blur(7px) saturate(.9);opacity:0;animation:rt-in .35s ease both, rt-out .5s ease 3.05s forwards;}
  .rt-luz{position:fixed;z-index:899;pointer-events:none;left:50%;top:-40vh;width:46vw;height:110vh;margin-left:-8vw;transform:rotate(-16deg);opacity:0;filter:blur(6px);
    background:linear-gradient(180deg, transparent, color-mix(in srgb, var(--luz-sol) 55%, transparent) 55%, transparent);animation:rt-luz 3.3s ease .1s both;}
  .rt-caja{position:fixed;z-index:900;pointer-events:none;left:-6px;right:-6px;top:calc(42% - 105px);height:210px;transform:rotate(-2deg);filter:drop-shadow(0 16px 26px rgba(90,40,50,.22));}
  .rt-tira{position:absolute;inset:0;background-color:color-mix(in srgb, var(--shu) 13%, var(--washi));
    background-image:radial-gradient(color-mix(in srgb, #fff 60%, transparent) 1px, transparent 1.5px), repeating-linear-gradient(90deg, color-mix(in srgb, var(--shu) 8%, transparent) 0 7px, transparent 7px 16px);
    background-size:10px 10px, auto;
    clip-path:polygon(0% 4%,2% 0%,4% 5%,6% 1%,8% 4%,92% 3%,94% 0%,96% 4%,98% 1%,100% 3%,99% 50%,100% 97%,98% 100%,96% 96%,94% 100%,92% 97%,8% 98%,6% 100%,4% 95%,2% 100%,0% 97%,1% 50%);
    display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:0 22px;opacity:0;
    animation:rt-abre .7s cubic-bezier(.5,0,.2,1) .15s both, rt-cierra .5s cubic-bezier(.6,0,.4,1) 3.05s forwards;}
  .rt-borde{position:absolute;left:0;right:0;height:5px;background:color-mix(in srgb, var(--shu) 30%, transparent);opacity:.55;}
  .rt-borde.rt-a{top:10px;} .rt-borde.rt-b{bottom:10px;}
  .rt-rollo{position:absolute;top:-8px;bottom:-8px;left:0;width:20px;margin-left:-10px;border-radius:10px;opacity:0;box-shadow:0 6px 12px rgba(90,40,50,.2);
    background:linear-gradient(90deg, color-mix(in srgb, var(--shu) 30%, var(--washi)), var(--washi) 45%, color-mix(in srgb, var(--shu) 40%, var(--washi)));
    animation:rt-rueda .7s cubic-bezier(.5,0,.2,1) .15s both, rt-apaga .2s ease .85s forwards;}
  .rt-dias{display:flex;gap:6px;align-items:center;justify-content:center;width:100%;}
  .rt-d{opacity:0;animation:rt-mini .3s ease-out .7s both;}
  .rt-d1{animation-delay:.775s;} .rt-d2{animation-delay:.85s;} .rt-d3{animation-delay:.925s;} .rt-d4{animation-delay:1s;} .rt-d5{animation-delay:1.075s;}
  .rt-d svg,.rt-grande svg{display:block;}
  .rt-hoy{position:relative;width:58px;height:58px;flex:none;}
  .rt-hueco{position:absolute;inset:0;border-radius:50%;border:2px dashed color-mix(in srgb, var(--shu) 60%, transparent);}
  .rt-hoy .rt-s{position:absolute;inset:0;opacity:0;animation:rt-estampa .42s cubic-bezier(.2,.8,.3,1) 1.35s both;}
  .rt-mancha{position:absolute;inset:-20px;border-radius:50%;opacity:0;background:radial-gradient(circle, color-mix(in srgb, var(--shu) 38%, transparent), transparent 66%);animation:rt-onda .85s ease-out 1.6s both;}
  .rt-pie{display:flex;align-items:center;gap:14px;}
  .rt-grande{width:66px;height:66px;flex:none;opacity:0;animation:rt-estampa .45s cubic-bezier(.2,.8,.3,1) 1.95s both;}
  .rt-grande.rt-fuera{visibility:hidden;}
  .rt-txt{display:flex;flex-direction:column;line-height:1.15;opacity:0;animation:rt-sube .5s ease-out 2.2s both;}
  .rt-txt b{font-family:'Shippori Mincho',serif;font-size:1.65rem;font-weight:700;color:var(--sumi);}
  .rt-txt span{font-size:.92rem;color:var(--gris);}
  .rt-vuela{position:fixed;z-index:902;pointer-events:none;transform-origin:0 0;}
  .rt-halo{position:fixed;z-index:901;pointer-events:none;border-radius:50%;opacity:0;background:radial-gradient(circle, color-mix(in srgb, var(--luz-sol) 90%, transparent), transparent 68%);animation:rt-halo .9s ease-out both;}
  @keyframes rt-in{to{opacity:1;}} @keyframes rt-out{from{opacity:1;}to{opacity:0;}} @keyframes rt-apaga{to{opacity:0;}}
  @keyframes rt-luz{0%{opacity:0;}30%{opacity:.9;}80%{opacity:.6;}100%{opacity:0;}}
  @keyframes rt-abre{0%{opacity:1;clip-path:inset(0 100% 0 0);}100%{opacity:1;clip-path:inset(0 0 0 0);}}
  @keyframes rt-cierra{0%{opacity:1;clip-path:inset(0 0 0 0);}100%{opacity:.4;clip-path:inset(0 0 0 100%);visibility:hidden;}}
  @keyframes rt-rueda{0%{opacity:1;left:0;}100%{opacity:1;left:100%;}}
  @keyframes rt-mini{0%{opacity:0;transform:scale(.6);}100%{opacity:1;transform:none;}}
  @keyframes rt-estampa{0%{opacity:0;transform:scale(1.9) rotate(-14deg);}60%{opacity:1;transform:scale(.9) rotate(-3deg);}100%{opacity:1;transform:none;}}
  @keyframes rt-onda{0%{opacity:0;transform:scale(.5);}35%{opacity:.85;}100%{opacity:0;transform:scale(1.6);}}
  @keyframes rt-sube{0%{opacity:0;transform:translateY(8px);}100%{opacity:1;transform:none;}}
  @keyframes rt-halo{0%{opacity:0;transform:scale(.5);}30%{opacity:.95;}100%{opacity:0;transform:scale(1.8);}}
  @media (min-width:700px){ .rt-caja{left:calc(50% - 300px);right:calc(50% - 300px);} }
  .cuaderno{width:100%;margin-top:12px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"cab cab" "dias balda" ". ir";gap:8px 12px;align-items:center;
    padding:12px 16px;background:var(--papel);border:1.5px solid var(--line);border-radius:14px;cursor:pointer;font:inherit;font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);text-align:left;
    box-shadow:0 2px 0 var(--washi-deep);transition:border-color .15s ease, transform .12s ease;}
  @media (hover:hover){ .cuaderno:hover{border-color:var(--shu);} .cuaderno:hover .cu-ir{transform:translateX(2px);} }
  .cuaderno:active{transform:translateY(1px);}
  .cuaderno:focus-visible{outline:3px solid var(--kincha);outline-offset:2px;}
  .cu-cab{grid-area:cab;display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:.84rem;color:var(--gris-osc);}
  .cu-cab b{color:var(--sumi);font-size:.92rem;} .cu-hoy{font-size:.8rem;white-space:nowrap;}
  .cuaderno .sem-dias{grid-area:dias;min-width:0;}
  .cuaderno .sem-dias{gap:4px;} .cuaderno .sem-d, .cuaderno .sem-d svg{width:26px;height:26px;}
  .cu-avance{grid-area:avance;display:flex;align-items:center;gap:10px;margin:0;min-width:0;}
  .n5-caja{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
  /* Hacia el N5: el número y el rollo de cuatro tramos (cada tramo, lo que pesa en el examen) */
  .n5-num{display:inline-flex;align-items:baseline;gap:5px;white-space:nowrap;}
  .n5-kj{font-family:'Shippori Mincho',serif;font-size:.8rem;color:var(--ai);}
  .n5-num b{font-family:'Shippori Mincho',serif;font-size:1.45rem;font-weight:500;line-height:1;color:var(--sumi);font-variant-numeric:tabular-nums;}
  .n5-num b small{font-size:.7em;margin-left:1px;}
  .n5-rollo{display:flex;height:10px;border:1px solid var(--line-cl);border-radius:2px;overflow:hidden;background:var(--washi);}
  .n5-tramo{position:relative;flex:var(--peso) 1 0;min-width:0;border-right:1px solid var(--line);}
  .n5-tramo:last-child{border-right:0;}
  .n5-tramo i{position:absolute;top:0;bottom:0;left:0;}
  .n5-f{background:var(--matcha);} .n5-a{background:color-mix(in srgb, var(--matcha) 45%, var(--papel));}
  .n5-ley{display:flex;font-family:'Shippori Mincho',serif;font-size:.62rem;line-height:1.2;color:var(--ai);}
  .n5-ley span{flex:var(--peso) 1 0;min-width:0;overflow:hidden;white-space:nowrap;padding-left:2px;}
  .cu-balda{grid-area:balda;display:flex;flex-direction:column;align-items:center;gap:0;align-self:end;}
  .cu-libros{display:flex;align-items:flex-end;gap:5px;padding:0 6px;}
  .cu-libro{width:20px;height:38px;display:block;} .cu-farol{width:24px;height:48px;display:block;margin-left:4px;overflow:visible;}
  .cu-tela-sellos{fill:var(--omk-tela-sellos);} .cu-tela-omikuji{fill:var(--omk-tela-omikuji);} .cu-titulo{fill:var(--papel);}
  .cu-hilo{stroke:var(--sumi);stroke-width:1.4;fill:none;} .cu-tinta{fill:var(--sumi);}
  .cu-papel-farol{fill:var(--shu);stroke:var(--sumi);stroke-width:1.4;}
  .cu-fuku{font-family:'Shippori Mincho',serif;font-weight:700;font-size:11px;fill:var(--luz-sol);text-anchor:middle;}
  .cu-tabla{display:block;width:100%;min-width:74px;height:6px;border-radius:2px;background:linear-gradient(var(--omk-madera-cl), var(--omk-madera));}
  .cu-ir{grid-area:ir;align-self:center;justify-self:center;font-size:.82rem;font-weight:700;color:var(--shu);white-space:nowrap;transition:transform .15s;}
  .cu-ir-kj, .cu-ir-t{display:none;} .cu-ir-kj{font-family:'Shippori Mincho',serif;}
  .cu-num{grid-area:num;display:none;flex-direction:column;align-items:center;gap:2px;font-family:'Shippori Mincho',serif;font-weight:700;font-size:2.1rem;line-height:1;color:var(--shu);}
  .cu-num small{font-family:'Zen Maru Gothic',sans-serif;font-weight:400;font-size:.74rem;color:var(--gris-osc);margin-top:4px;}
  .cu-sep{grid-area:sep;display:none;align-self:stretch;background:var(--line);width:1px;}
  .cu-cosas{grid-area:cosas;display:none;gap:24px;align-items:center;}
  .cu-cosa{display:flex;align-items:center;gap:9px;}
  .cu-cosa .cu-libro{width:18px;height:34px;} .cu-cosa .cu-farol{width:22px;height:42px;margin:0;}
  .cu-cosa > span{display:flex;flex-direction:column;line-height:1.25;} .cu-cosa b{font-size:.9rem;} .cu-cosa small{font-size:.76rem;color:var(--gris-osc);}
  /* «Tu plano»: la tira de líneas en una tarjeta, con el plano completo en la cabecera */
  .pl-acceso.pl-tarjeta{display:block;background:var(--papel);border:1px solid var(--line);border-radius:14px;padding:10px 16px 4px;margin:14px 0 16px;overflow:hidden;}
  .pl-cab{display:flex;justify-content:space-between;align-items:center;gap:10px;}
  .pl-cab > b{font-family:'Shippori Mincho',serif;font-size:1rem;color:var(--ai-deep);} .pl-cab > b span{color:var(--shu);margin-right:4px;}
  .pl-abrir-link{font-family:'Zen Maru Gothic',sans-serif;font-size:.82rem;font-weight:700;color:var(--ai);background:var(--papel);border:1.5px solid var(--line);border-radius:16px;padding:4px 12px;cursor:pointer;white-space:nowrap;}
  @media (hover:hover){ .pl-abrir-link:hover{border-color:var(--ai);} }
  .pl-abrir-link:focus-visible{outline:3px solid var(--kincha);outline-offset:2px;}
  .pl-l-largo{display:none;} .pl-l-largo span{font-family:'Shippori Mincho',serif;}
  .pl-acceso.pl-tarjeta .rosen-wrap{margin:2px -16px 0;}

  /* ---- Fukubiki (福引き): el puesto de feria de la estantería (js/motor/fukubiki.js) ---- */
  :root{--fk-luz:var(--luz-sol);--fk-madera:var(--omk-madera-cl);}   /* la balda de la colección */
  /* El puesto (25/10/2026) es una ilustración por piezas (img/fukubiki/) con sus colores de objeto, iguales en todos los temas,
     como los premios y el baúl. Del tema son el cielo, la luz de los farolillos y un velo en los temas oscuros. Las tintas de
     los carteles y del kusudama son de objeto (papel y tinta china), fijas. */
  :root{--fk-cielo-1:#142231;--fk-cielo-2:#2a3b48;--fk-halo:var(--fk-luz);--fk-velo:0;--fk-velo-color:#000;
    --fk-cartel-rojo:#b5402c;--fk-cartel-tinta:#2b2a28;--fk-cartel-linea:#d6c7a4;--fk-farol-tinta:#2b1712;--fk-kd-tinta:#2b2a28;--fk-kd-oro:#a97c14;}
  :root[data-tema="sakura"]{--fk-cielo-1:#25131f;--fk-cielo-2:#4a2a3e;--fk-halo:#ffd6e0;}
  :root[data-tema="matsuri"]{--fk-cielo-1:#0c1834;--fk-cielo-2:#1f3a6e;--fk-halo:#ffd27a;}
  :root[data-tema="manga"]{--fk-cielo-1:#0d0d0d;--fk-cielo-2:#2c2c2c;--fk-halo:#fff4d6;}
  :root[data-tema="samurai"]{--fk-cielo-1:#090706;--fk-cielo-2:#251d18;--fk-halo:#f3d9a0;--fk-velo:.16;}
  :root[data-tema="noche"]{--fk-cielo-1:var(--noche-fondo);--fk-cielo-2:var(--noche-superficie-2);--fk-halo:var(--neon-rosa);--fk-velo:.1;}
  /* el farolillo, colgado al lado de los libros */
  .est-balda{gap:14px;}
  .est-pies{gap:14px;}
  .est-farol{align-self:flex-end;width:80px;height:168px;padding:0;border:none;background:none;cursor:pointer;transform-origin:50% 0;animation:fk-mece 3.6s ease-in-out infinite;}
  .est-farol:focus-visible{outline:2px solid var(--ai);outline-offset:4px;}
  @media (hover:hover){ .est-farol:hover{animation-duration:1.2s;} }
  .est-farol-svg{width:100%;height:100%;overflow:visible;}
  .est-pies .est-pie-farol{width:80px;} .est-pie-farol i{font-style:normal;white-space:nowrap;}
  @media (max-width:400px){ .est-balda{gap:10px;padding:0 4px;} .est-pies{gap:10px;} .est-mueble{--est-libro-w:122px;} .est-farol, .est-pies .est-pie-farol{width:72px;} }
  /* con el dato en una sola línea («120 monedas · 200/200»), más aire entre objetos para que los rótulos no se pisen */
  @media (min-width:561px){ .est-balda, .est-pies{gap:28px;} }
  /* el puesto: piezas colocadas sobre un escenario de 1536 × 1024 (fukubiki.js → puesto); el tambor, en un <canvas> */
  .fk-escenario{border-radius:10px;overflow:hidden;border:1px solid var(--line);background:linear-gradient(180deg, var(--fk-cielo-1), var(--fk-cielo-2) 75%);margin:12px 0 14px;}
  .fk-escena{position:relative;display:block;width:100%;aspect-ratio:1536/1024;container-type:inline-size;}
  .fk-escena > *{position:absolute;}
  .fk-escena::after{content:'';position:absolute;inset:0;background:var(--fk-velo-color);opacity:var(--fk-velo);pointer-events:none;z-index:9;}
  .fk-p{display:block;height:auto;max-width:none;}
  .fk-estrella{width:.3%;aspect-ratio:1;border-radius:50%;background:var(--fk-halo);opacity:.65;}
  .fk-resplandor{width:23%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;animation:fk-respira 3.2s ease-in-out infinite;
    background:radial-gradient(circle, color-mix(in srgb, var(--fk-halo) 55%, transparent) 0%, color-mix(in srgb, var(--fk-halo) 18%, transparent) 38%, transparent 68%);}
  .fk-resplandor.b{animation-delay:-1.6s;}
  .fk-cartel{transform:translate(-50%,-50%);writing-mode:vertical-rl;font-family:'Shippori Mincho',serif;font-weight:800;letter-spacing:.12em;line-height:1;color:var(--fk-cartel-rojo);font-size:13px;font-size:3.6cqw;}
  .fk-tablon{display:grid;justify-items:center;align-content:start;gap:.5cqw;font-family:'Shippori Mincho',serif;font-weight:700;color:var(--fk-cartel-tinta);}
  .fk-tablon b{font-size:9px;font-size:2.5cqw;color:var(--fk-cartel-rojo);letter-spacing:.12em;border-bottom:1px solid var(--fk-cartel-linea);padding:0 .8cqw .3cqw;margin-bottom:.3cqw;}
  .fk-tablon span{display:flex;align-items:center;gap:.9cqw;font-size:8px;font-size:2.15cqw;}
  .fk-tablon img{width:2.4cqw;height:auto;}
  .fk-tambor{aspect-ratio:512/424;height:auto;pointer-events:none;}
  .fk-bola{left:0;top:0;aspect-ratio:1;opacity:0;} .fk-bola.ve{opacity:1;}   /* cuadrada: su recorrido va en % de su tamaño */
  .fk-bola img{display:block;width:100%;height:100%;object-fit:contain;} .fk-bola .fk-bola-oro, .fk-bola.oro .fk-bola-ai{display:none;} .fk-bola.oro .fk-bola-oro{display:block;}
  .fk-campana{transform-origin:50% 6%;} .fk-campana.toca{animation:fk-toca .9s ease;}
  .fk-karan{transform:translateX(-50%);font-family:'Shippori Mincho',serif;font-weight:800;font-size:9px;font-size:2.2cqw;color:var(--fk-halo);opacity:0;z-index:8;
    text-shadow:0 0 .6cqw color-mix(in srgb, var(--fk-velo-color) 50%, transparent);}
  .fk-karan.toca{animation:fk-karan 1.2s ease forwards;}
  .fk-farol{transform-origin:50% 2%;animation:fk-mece 3.6s ease-in-out infinite;} .fk-farol.b{animation-delay:-1.8s;}
  .fk-farol img{display:block;width:100%;height:auto;transition:opacity .2s;} .fk-farol .fk-farol-on{position:absolute;left:0;top:0;}
  .fk-farol .fk-farol-off{opacity:0;} .fk-farol.apagado .fk-farol-off{opacity:1;} .fk-farol.apagado .fk-farol-on{opacity:0;}
  .fk-farol i{position:absolute;left:50%;top:51%;transform:translate(-50%,-50%);font-family:'Shippori Mincho',serif;font-weight:800;font-style:normal;line-height:1;font-size:11px;font-size:3.1cqw;color:var(--fk-farol-tinta);opacity:.82;}
  /* del puesto de antes solo queda lo que usa el farolillo de la estantería (fv3, más abajo) */
  .fk-sumi{fill:var(--sumi);} .fk-shu{fill:var(--shu);}
  .fk-borde{stroke:var(--sumi);stroke-width:2;}
  .fk-linea{fill:none;stroke:var(--sumi);stroke-width:1.6;stroke-linecap:round;}
  .fk-costilla{fill:none;stroke:var(--shu-deep);stroke-width:1.2;}
  .fk-halo{animation:fk-halo 2.4s ease-in-out infinite;}
  .est-farol .fk-halo{fill:var(--fk-luz);opacity:.28;}
  .fk-t{font-family:'Shippori Mincho',serif;font-weight:700;font-size:11px;fill:var(--sumi);text-anchor:middle;}
  .fk-t-luz{fill:var(--fk-luz);font-size:15px;}
  @keyframes fk-respira{50%{opacity:.7;transform:translate(-50%,-50%) scale(.94);}}
  @keyframes fk-mece{50%{transform:rotate(4deg);}}
  @keyframes fk-halo{50%{opacity:.25;}}
  /* el farolillo de la estantería (fv3, 20/10/2026): el de antes, más robusto; al tocarlo se enciende por dentro 0,7 s (fukubiki.js → encender) */
  .fv3 *{vector-effect:non-scaling-stroke;stroke-linejoin:round;}
  .fv3-filo{fill:none;stroke:var(--kincha);stroke-width:1.2;opacity:.85;}
  .fv3-sombra{fill:color-mix(in srgb, var(--shu-deep) 70%, transparent);opacity:.55;}
  .fv3-brillo{fill:color-mix(in srgb, var(--fk-luz) 60%, transparent);opacity:.35;}
  .fv3-costilla{stroke-width:1.3;}
  .fv3-kj{font-size:24px;}
  .fv3-contraluz{fill:var(--sumi);opacity:0;}   /* el 福 a contraluz, en tinta oscura, mientras está encendido */
  :root[data-tema="samurai"] .fv3-contraluz{fill:var(--washi);}   /* tema oscuro: la tinta oscura es su papel */
  .fv3-nudo{fill:var(--shu);stroke:var(--sumi);stroke-width:1.5;}
  .fv3-borla{fill:var(--shu);stroke:var(--sumi);stroke-width:1.5;} .fv3-hebra{fill:none;stroke:var(--shu-deep);stroke-width:1.1;}
  .fv3 .fk-halo{transform-box:fill-box;transform-origin:center;}
  .fv3-luz{opacity:0;pointer-events:none;}
  .fv3-l0{stop-color:var(--fk-luz);stop-opacity:1;} .fv3-l1{stop-color:color-mix(in srgb, var(--fk-luz) 70%, var(--shu));stop-opacity:.9;} .fv3-l2{stop-color:var(--shu);stop-opacity:0;}
  @keyframes fk-toca{15%{transform:rotate(-28deg);}35%{transform:rotate(24deg);}55%{transform:rotate(-16deg);}75%{transform:rotate(8deg);}}
  @keyframes fk-karan{20%{opacity:1;transform:translate(-50%,-30%);}80%{opacity:1;}to{opacity:0;transform:translate(-50%,-90%);}}
  /* la leyenda de premios, en castellano */
  .fk-leyenda{display:flex;flex-direction:column;gap:6px;margin:-4px 0 16px;padding:10px 12px;background:var(--papel);border:1px solid var(--line);border-radius:8px;font-family:'Zen Maru Gothic',sans-serif;font-size:.82rem;color:var(--gris-osc);}
  .fk-leyenda > b{font-size:.78rem;color:var(--sumi);letter-spacing:.04em;}
  .fk-leyenda > span{display:flex;align-items:center;gap:8px;}
  .fk-leyenda span b{color:var(--sumi);font-weight:700;margin-right:4px;}
  .fk-leyenda i{font-style:normal;font-family:'Shippori Mincho',serif;font-weight:700;font-size:.72rem;flex-shrink:0;width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid var(--sumi);}
  .fk-leyenda i.oro{background:var(--rc-oro);color:var(--papel);} .fk-leyenda i.ai{background:var(--ai);color:var(--papel);} .fk-leyenda i.copia{background:var(--papel);color:var(--rc-oro-tinta);border-color:var(--rc-oro);}
  /* El final de una lección (04/11, Alex): la medalla de metal y las monedas, en una sola fila bajo lo que has acertado.
     Lo que es cada cosa se explica la primera vez (camino.js medallaNota, fukubiki.js); después, solo el objeto.
     Plata, oro y la moneda son objetos: colores fijos (--met-*, --mon-*), no los del tema (en Sakura el kincha es rosa). */
  :root{--met-p1:#ffffff;--met-p2:#dde1e6;--met-p3:#9ca3ad;--met-p4:#6c737d;--met-p5:#f5f7f9;--met-p6:#5d636c;--met-pk:#505761;
    --met-o1:#fff7d6;--met-o2:#f1d27e;--met-o3:#c99a3b;--met-o4:#86601d;--met-o5:#fff3c4;--met-o6:#7a571a;--met-ok:#6d4d14;--met-destello:rgba(255,226,140,.95);
    --mon-cara:#b8925a;--mon-borde:#7a5a2e;--mon-aro:#8c6a38;--mon-agujero:#fdf6ee;}
  .fin-fila{display:flex;justify-content:center;align-items:center;gap:18px;flex-wrap:wrap;margin:6px auto 14px;}
  .fin-medalla{position:relative;display:block;width:64px;height:64px;border-radius:50%;filter:drop-shadow(0 4px 6px rgba(60,40,30,.28));}
  .fin-medalla svg{display:block;width:64px;height:64px;}
  .fin-medalla.plata .mt-1{stop-color:var(--met-p1);} .fin-medalla.plata .mt-2{stop-color:var(--met-p2);} .fin-medalla.plata .mt-3{stop-color:var(--met-p3);}
  .fin-medalla.plata .mt-4{stop-color:var(--met-p4);} .fin-medalla.plata .mt-5{stop-color:var(--met-p5);} .fin-medalla.plata .mt-6{stop-color:var(--met-p6);}
  .fin-medalla.oro .mt-1{stop-color:var(--met-o1);} .fin-medalla.oro .mt-2{stop-color:var(--met-o2);} .fin-medalla.oro .mt-3{stop-color:var(--met-o3);}
  .fin-medalla.oro .mt-4{stop-color:var(--met-o4);} .fin-medalla.oro .mt-5{stop-color:var(--met-o5);} .fin-medalla.oro .mt-6{stop-color:var(--met-o6);}
  .fin-medalla .mt-aro{fill:none;stroke-width:1;opacity:.55;} .fin-medalla.plata .mt-aro{stroke:var(--met-pk);} .fin-medalla.oro .mt-aro{stroke:var(--met-ok);}
  .fin-medalla text{font-family:'Shippori Mincho',serif;font-size:25px;font-weight:700;}
  .fin-medalla.plata .mt-kj{fill:var(--met-pk);} .fin-medalla.plata .mt-luz{fill:var(--met-p5);opacity:.8;}
  .fin-medalla.oro .mt-kj{fill:var(--met-ok);} .fin-medalla.oro .mt-luz{fill:var(--met-o5);opacity:.8;}
  .fin-brillo{position:absolute;inset:4px;border-radius:50%;overflow:hidden;pointer-events:none;}
  .fin-brillo::after{content:'';position:absolute;top:-20%;bottom:-20%;width:40%;left:-60%;transform:skewX(-20deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.85),transparent);}
  .fin-medalla.oro::before{content:'';position:absolute;inset:-7px;border-radius:50%;opacity:0;pointer-events:none;
    background:conic-gradient(from 0deg,transparent 0 70%,var(--met-destello) 80%,transparent 90%);
    -webkit-mask:radial-gradient(circle,transparent 60%,#000 61%,#000 70%,transparent 71%);mask:radial-gradient(circle,transparent 60%,#000 61%,#000 70%,transparent 71%);}
  .fin-medalla-t{max-width:340px;margin:-4px auto 14px;font-size:.88rem;line-height:1.5;color:var(--gris-osc);}
  .fin-mon{display:flex;align-items:center;gap:4px;font-family:'Zen Maru Gothic',sans-serif;}
  .fin-mon .fk-goen{width:26px;height:26px;}
  .fin-mon b{font-size:1rem;margin-left:4px;color:var(--sumi);} .fin-mon small{font-size:.84rem;color:var(--gris-osc);margin-left:8px;}
  .mon-c{fill:var(--mon-cara);stroke:var(--mon-borde);stroke-width:1.4;} .mon-a{fill:none;stroke:var(--mon-aro);stroke-width:.8;opacity:.7;}
  .mon-h{fill:var(--mon-agujero);stroke:var(--mon-borde);stroke-width:1.2;} .mon-m{fill:none;stroke:var(--mon-borde);stroke-width:1.3;stroke-linecap:round;}
  @media (prefers-reduced-motion:no-preference){
    /* la medalla se estampa como un hanko y la cruza un brillo (.entra la pone camino.js con las celebraciones completas) */
    .fin-medalla.entra{animation:fin-estampa .55s cubic-bezier(.2,.9,.3,1.2) .5s both;}
    .fin-medalla.entra .fin-brillo::after{animation:fin-brilla .9s ease-out 1.05s forwards;}
    .fin-medalla.oro.entra::before{animation:fin-aro 1.1s ease-out 1s forwards;}
    @keyframes fin-estampa{0%{opacity:0;transform:scale(2.3) rotate(-14deg);}55%{opacity:1;transform:scale(.9) rotate(3deg);}78%{transform:scale(1.05) rotate(-1deg);}100%{opacity:1;transform:none;}}
    @keyframes fin-brilla{to{left:130%;}}
    @keyframes fin-aro{0%{opacity:1;transform:rotate(0);}85%{opacity:1;}100%{opacity:0;transform:rotate(360deg);}}
    /* las monedas caen una a una, tras la medalla (o enseguida si no la hay), al ritmo de su tintineo (sonido.js) */
    .fin-mon:not(.quieta) .fk-goen{animation:fin-cae .45s cubic-bezier(.3,1.4,.5,1) both;animation-delay:1.25s;}
    .fin-mon:not(.quieta) .fk-goen:nth-child(2){animation-delay:1.53s;} .fin-mon:not(.quieta) .fk-goen:nth-child(3){animation-delay:1.81s;}
    .fin-mon:not(.quieta) .fk-goen:nth-child(4){animation-delay:2.09s;} .fin-mon:not(.quieta) .fk-goen:nth-child(5){animation-delay:2.37s;}
    .fin-mon.solas:not(.quieta) .fk-goen{animation-delay:.5s;} .fin-mon.solas:not(.quieta) .fk-goen:nth-child(2){animation-delay:.78s;}
    .fin-mon.solas:not(.quieta) .fk-goen:nth-child(3){animation-delay:1.06s;} .fin-mon.solas:not(.quieta) .fk-goen:nth-child(4){animation-delay:1.34s;}
    .fin-mon.solas:not(.quieta) .fk-goen:nth-child(5){animation-delay:1.62s;}
    @keyframes fin-cae{0%{opacity:0;transform:translateY(-46px) rotate(-40deg);}70%{opacity:1;transform:translateY(3px) rotate(10deg);}100%{opacity:1;transform:none;}}
  }
  /* ---- Misiones del día (js/motor/misiones.js): un boleto del fukubiki que se perfora ---- */
  .mi{margin:6px 0 4px;font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);}
  /* El boleto (24/10, Alex eligió la versión «con talón»): un objeto de papel, con sus colores fijos en todos los temas
     (como las fichas del fukubiki). Cuerpo con las tres misiones; talón con su número, un agujero por misión hecha y el
     sello 福. Las muescas de la perforación las recorta una máscara: se ve lo que hay detrás, en cualquier tema. */
  .mi-bol{--bol-papel:#f5edd9;--bol-papel-2:#ece1c6;--bol-tinta:#2b2a28;--bol-gris:#776e5d;--bol-shu:#b83f2a;--bol-filo:#d9caa4;--talon:72px;
    position:relative;display:grid;grid-template-columns:minmax(0,1fr) var(--talon);color:var(--bol-tinta);background:var(--bol-papel);border-radius:10px;
    filter:drop-shadow(0 2px 0 var(--bol-filo)) drop-shadow(0 6px 10px rgba(0,0,0,.16));
    -webkit-mask:radial-gradient(circle 10px at calc(100% - var(--talon)) 0, #0000 98%, #000) top/100% 51% no-repeat,
                 radial-gradient(circle 10px at calc(100% - var(--talon)) 100%, #0000 98%, #000) bottom/100% 51% no-repeat;
            mask:radial-gradient(circle 10px at calc(100% - var(--talon)) 0, #0000 98%, #000) top/100% 51% no-repeat,
                 radial-gradient(circle 10px at calc(100% - var(--talon)) 100%, #0000 98%, #000) bottom/100% 51% no-repeat;}
  .mi-bol::after{content:'';position:absolute;top:14px;bottom:14px;right:calc(var(--talon) - 1px);width:2px;
    background:radial-gradient(circle, var(--bol-filo) 0 1px, transparent 1.5px) 0 0/2px 7px repeat-y;}
  .mi-bol-l{padding:14px 14px 8px 18px;min-width:0;background-image:radial-gradient(rgba(43,42,40,.05) 1px, transparent 1.2px);background-size:5px 5px;}
  .mi-bol-cab{display:flex;justify-content:space-between;align-items:baseline;gap:10px;border-bottom:1.5px solid var(--bol-tinta);padding-bottom:7px;margin-bottom:2px;}
  .mi-bol-t{font-family:'Shippori Mincho',serif;font-weight:800;color:var(--bol-tinta);font-size:1.05rem;letter-spacing:.02em;margin:0;}
  .mi-bol.completo .mi-bol-t{color:var(--bol-shu);}
  .mi-bol-fecha{font-size:.72rem;color:var(--bol-gris);font-variant-numeric:tabular-nums;white-space:nowrap;}
  .mi-bol-r{display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:10px;padding:14px 0;}
  .mi-no{writing-mode:vertical-rl;font-size:.66rem;letter-spacing:.18em;color:var(--bol-gris);font-variant-numeric:tabular-nums;}
  .mi-agujeros{display:flex;flex-direction:column;gap:8px;}
  .mi-fuku{width:34px;height:34px;border-radius:50%;border:2px solid var(--bol-shu);color:var(--bol-shu);display:grid;place-items:center;
    font-family:'Shippori Mincho',serif;font-weight:800;font-size:1.05rem;transform:rotate(8deg);}
  .mi-lista{list-style:none;margin:0;padding:0;}
  .mi-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed var(--bol-filo);}
  .mi-row:last-child{border-bottom:none;}
  .mi-tx{flex:1;min-width:0;font-size:.95rem;line-height:1.35;color:var(--bol-tinta);}
  .mi-tx small{display:block;color:var(--bol-gris);font-size:.8rem;}
  .mi-row.hecha .mi-tx{color:var(--bol-gris);}
  /* Cada misión, su hueco «por estampar»; hecha, el sello 済 */
  .mi-o{flex:none;width:36px;height:36px;border-radius:6px;border:1.5px dashed color-mix(in srgb, var(--bol-shu) 45%, transparent);display:grid;place-items:center;}
  .mi-row.hecha .mi-o{border-color:transparent;}
  .mi-hanko{width:36px;height:36px;border-radius:6px;background:var(--bol-shu);color:var(--bol-papel);display:grid;place-items:center;transform:rotate(-7deg);
    font-family:'Shippori Mincho',serif;font-weight:800;font-size:1.2rem;box-shadow:inset 0 0 0 2.5px var(--bol-shu), inset 0 0 0 3.5px var(--bol-papel);opacity:.93;}
  .mi-ir{flex:none;font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;font-weight:700;color:var(--bol-tinta);border:1.5px solid var(--bol-tinta);
    border-radius:16px;padding:4px 13px;background:none;cursor:pointer;}
  .mi-ir:focus-visible,.mi-puesto:focus-visible{outline:2px solid var(--shu);outline-offset:2px;}
  .mi-agujero{width:15px;height:15px;border-radius:50%;border:1.5px dashed var(--bol-filo);}
  .mi-agujero.on{border:none;background:var(--washi);box-shadow:inset 0 1px 2px rgba(0,0,0,.35), 0 0 0 2px var(--bol-papel-2);}
  /* Los días seguidos: las bolas del bombo, de madera las ganadas y la séptima dorada */
  .mi-dias{display:flex;align-items:center;gap:10px;margin:14px 2px 0;flex-wrap:wrap;}
  .mi-cajas{--madera:#c49a62;--madera-2:#8f6a3c;display:flex;gap:6px;flex:none;}
  .mi-cajas i{width:17px;height:17px;border-radius:50%;background:var(--washi-deep);box-shadow:inset 0 0 0 1.5px var(--line);}
  .mi-cajas i.on{background:radial-gradient(circle at 35% 30%, #f0d9b0 0 18%, var(--madera) 45%, var(--madera-2) 100%);box-shadow:0 1px 2px rgba(0,0,0,.25);}
  .mi-cajas i.hoy{box-shadow:inset 0 0 0 1.5px var(--kincha);}
  .mi-cajas i.oro{box-shadow:inset 0 0 0 1.5px var(--rc-oro);}
  .mi-cajas i.oro.on{background:radial-gradient(circle at 35% 30%, #fff6d6 0 18%, var(--rc-oro) 50%, color-mix(in srgb, var(--rc-oro) 60%, #000) 100%);}
  .mi-dias > span:last-child{font-size:.8rem;color:var(--gris-osc);line-height:1.35;}
  .mi-puesto{display:block;width:100%;margin-top:12px;font-family:'Zen Maru Gothic',sans-serif;font-size:.9rem;text-align:center;cursor:pointer;
    border:1.5px solid var(--kincha);background:color-mix(in srgb, var(--kincha) 12%, var(--papel));color:var(--sumi);border-radius:10px;padding:10px 12px;}
  /* El aviso de una misión cumplida (04/11, Alex): un boleto pequeño que entra arriba, se queda un momento y se va */
  .mi-aviso{position:fixed;left:50%;top:84px;transform:translateX(-50%);z-index:60;display:flex;align-items:center;gap:12px;padding:10px 18px;
    border-radius:999px;background:var(--papel);border:1px solid var(--line);box-shadow:0 8px 24px rgba(60,30,40,.18);font-family:'Zen Maru Gothic',sans-serif;
    font-size:.95rem;color:var(--sumi);white-space:nowrap;pointer-events:none;}
  .mi-aviso b{font-family:'Shippori Mincho',serif;}
  .mi-aviso-bol{display:flex;gap:4px;padding:5px 7px;border:1.5px solid var(--kincha-osc);border-radius:4px;}
  .mi-aviso-bol i{width:7px;height:7px;border-radius:50%;border:1.2px solid var(--kincha-osc);}
  .mi-aviso-bol i.on{background:var(--papel);box-shadow:inset 0 0 0 2px var(--kincha-osc);}
  @media (prefers-reduced-motion:no-preference){
    .mi-aviso:not(.quieta){animation:mi-aviso 3.2s var(--curva-suave) both;}
    @keyframes mi-aviso{0%{opacity:0;transform:translate(-50%,-14px);}10%,82%{opacity:1;transform:translate(-50%,0);}100%{opacity:0;transform:translate(-50%,-8px);}}
  }
  /* En el puesto: las tiradas sin monedas */
  .fk-gratis{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin:0 0 10px;}
  .fk-gratis .fk-tirar{flex:1 1 160px;}
  @keyframes fk-cae{from{transform:translateY(-26px) rotate(-90deg);opacity:0;}}
  /* mandos */
  .fk-mandos{display:flex;flex-direction:column;gap:10px;}
  .fk-saldo{align-self:center;display:flex;align-items:center;gap:8px;background:var(--papel);border:1px solid var(--line);border-radius:22px;padding:5px 16px 5px 6px;font-family:'Zen Maru Gothic',sans-serif;}
  .fk-saldo b{font-family:'Shippori Mincho',serif;font-size:1.35rem;line-height:1;font-variant-numeric:tabular-nums;}
  .fk-saldo span{display:flex;align-items:baseline;gap:6px;} .fk-saldo small{font-size:.75rem;color:var(--gris-osc);}
  .fk-saldo.sube{animation:fk-sube .5s ease;} @keyframes fk-sube{40%{transform:scale(1.1);}}
  .fk-saldo .fk-goen{width:28px;height:28px;}
  .fk-goen{width:15px;height:15px;flex-shrink:0;}   /* la moneda antigua (04/11): sus colores, .mon-… */
  .fk-seguro{display:flex;justify-content:center;align-items:center;gap:10px;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris-osc);}
  .fk-puntos{display:flex;gap:5px;} .fk-puntos i{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--kincha);display:block;} .fk-puntos i.on{background:var(--kincha);}
  .fk-tiradas{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .fk-tirar{font-family:'Zen Maru Gothic',sans-serif;border-radius:10px;border:1.5px solid var(--line);background:var(--papel);color:var(--sumi);padding:10px 8px 9px;cursor:pointer;
    display:flex;flex-direction:column;align-items:center;gap:2px;box-shadow:0 3px 0 var(--line);transition:transform .08s ease, box-shadow .08s ease;}
  .fk-tirar b{font-size:.98rem;} .fk-tirar span{display:flex;align-items:center;gap:4px;font-size:.76rem;color:var(--gris-osc);}
  .fk-tirar:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 var(--line);}
  .fk-tirar:focus-visible{outline:2px solid var(--ai);outline-offset:2px;}
  .fk-tirar:disabled{opacity:.45;cursor:not-allowed;}
  .fk-tirar.esp{border-color:var(--kincha);background:color-mix(in srgb, var(--kincha) 12%, var(--papel));box-shadow:0 3px 0 var(--kincha);}
  .fk-nota{text-align:center;margin:0;}
  .fk-nota:empty{display:none;}
  /* Ayuda al tocar (06/11): el saldo y «objeto nuevo seguro» son botones con su «i»; la primera visita lo cuenta entero */
  button.fk-saldo{font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);cursor:pointer;min-height:44px;padding-right:10px;}
  button.fk-saldo .ayuda-i{margin-left:2px;}
  .fk-seguro.ayuda-btn{align-self:center;padding:0 6px;}
  .fk-primera .fk-leyenda{margin:0;}
  .rc-amu-ayuda{display:flex;}
  .fk-premios{display:flex;margin:2px auto 10px;font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;color:var(--gris-osc);padding:0 6px;}
  .fk-primera{display:flex;flex-direction:column;gap:10px;margin:0 0 16px;}
  .fk-primera p{margin:0;line-height:1.55;color:var(--gris-osc-2);}
  .fk-primera .fk-primera-k{font-family:'Zen Maru Gothic',sans-serif;font-size:.75rem;letter-spacing:.06em;color:var(--shu-deep);}
  .fk-primera-t{margin:0;font-family:'Shippori Mincho',serif;font-size:1.25rem;color:var(--ai-deep);}
  .fk-primera .ayuda-i{vertical-align:-3px;}
  .fk-primera .btn{margin:4px 0 0;}
  /* la ficha que sale */
  .fk-res{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;margin:18px 0 6px;min-height:40px;}
  .fk-tag{display:inline-flex;align-items:center;gap:6px;font-family:'Zen Maru Gothic',sans-serif;font-size:.76rem;padding:3px 11px 3px 4px;border-radius:20px;border:1px solid var(--line);color:var(--gris-osc);}
  .fk-tag i{font-style:normal;font-family:'Shippori Mincho',serif;font-weight:700;width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;border:1.5px solid var(--sumi);background:var(--papel);color:var(--sumi);font-size:.75rem;}
  .fk-tag.nueva{color:var(--shu-deep);border-color:color-mix(in srgb, var(--shu) 45%, transparent);} .fk-tag.nueva i{background:var(--shu);color:var(--papel);}
  .fk-tag.repe i{background:var(--ai);color:var(--papel);}
  .fk-tag.oro{color:var(--rc-oro-tinta);border-color:var(--rc-oro);} .fk-tag.oro i{background:var(--rc-oro);color:var(--papel);}
  .fk-ficha{width:220px;max-width:100%;border:1px solid var(--line);border-radius:8px;background:var(--papel);padding:16px 14px 14px;display:flex;flex-direction:column;align-items:center;
    box-shadow:0 2px 0 var(--line), 0 12px 24px color-mix(in srgb, var(--sumi) 10%, transparent);}
  .fk-ficha.oro{border:2px solid var(--rc-oro);box-shadow:0 0 0 3px color-mix(in srgb, var(--rc-oro) 30%, transparent), 0 0 24px color-mix(in srgb, var(--rc-oro) 35%, transparent);}
  .fk-ficha.entra{animation:fk-entra .6s cubic-bezier(.2,.8,.3,1.25);} @keyframes fk-entra{from{transform:translateY(18px) rotate(-5deg) scale(.88);opacity:0;}}
  .fk-ficha p{margin:0;} .fk-grande{width:132px;height:132px;}
  .fk-kana{font-family:'Shippori Mincho',serif;font-weight:700;font-size:1.8rem;line-height:1.25;}
  .fk-rom{font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--gris-osc);}
  .fk-sig{font-size:.98rem;} .fk-de{font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;color:var(--gris-osc);margin-top:4px !important;}
  .fk-oir{display:inline-flex;align-items:center;gap:6px;font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;border:1.5px solid var(--line);border-radius:18px;background:var(--papel);color:var(--sumi);padding:4px 13px 4px 8px;cursor:pointer;}
  .fk-oir .ic-audio{width:20px;height:20px;}
  /* copias: tres puntitos (con 3, oro) */
  .fk-copias{display:flex;gap:3px;justify-content:center;}
  .fk-copias i{width:6px;height:6px;border-radius:50%;border:1.2px solid var(--kincha);display:block;} .fk-copias i.on{background:var(--kincha);}
  .fk-copias.grande{gap:5px;margin-top:6px;} .fk-copias.grande i{width:10px;height:10px;border-width:1.5px;}
  /* el kusudama (薬玉) que se abre */
  .fk-kd{position:relative;width:150px;}
  .fk-kd.oro{filter:drop-shadow(0 0 10px color-mix(in srgb, var(--rc-oro) 60%, transparent));}
  .fk-kd img{display:block;width:100%;height:auto;}
  .fk-kd-a{position:relative;display:block;z-index:2;transform-origin:1% 97%;}
  .fk-kd-a b{position:absolute;left:48%;top:63%;transform:translate(-50%,-50%);font-family:'Shippori Mincho',serif;font-weight:800;font-size:1.9rem;line-height:1;color:var(--fk-kd-tinta);}
  .fk-kd.oro .fk-kd-a b{color:var(--fk-kd-oro);}
  .fk-kd-b{position:relative;z-index:1;margin-top:-9%;transform-origin:1% 8%;}
  .fk-kd-tiras{position:absolute;left:20%;top:30%;width:60%;aspect-ratio:300/394;z-index:0;pointer-events:none;}
  .fk-kd-tiras img{position:absolute;left:0;top:0;opacity:0;}
  [id="fkTiras"] rect{stroke:var(--sumi);stroke-width:.4;}
  .fk-msg{font-family:'Zen Maru Gothic',sans-serif;font-size:.86rem;color:var(--gris-osc);margin:0;}
  /* tinta de las fichas: lo de .ilus y algunos trazos más */
  /* Premios redibujados (23/10, fukubiki.js → DIB2): el estilo del vocabulario, con volumen, textura y sombra en el suelo.
     La línea es la tinta del tema (--sumi), como en el vocabulario; los colores de la comida, los suyos (--fk-*), iguales en
     todos los temas: un yōkan no puede salir rosa ni un dorayaki verde. */
  :root{--fk-rojo:#c8432f;--fk-rojo-osc:#982e22;--fk-rosa:#f2c6c3;--fk-rosa-osc:#dc9a99;--fk-verde:#93b17d;--fk-verde-osc:#5f8150;
    --fk-vena:#46653c;--fk-masa:#efdcaa;--fk-masa-osc:#dcc083;--fk-tostado:#a9692f;--fk-tostado-osc:#7a4a1e;--fk-anko:#5c2b25;
    --fk-anko-cl:#7b3c31;--fk-anko-osc:#3f1c18;--fk-grano:#94503f;--fk-blanco:#fbf7ee;--fk-blanco-sombra:#e5ded0;--fk-nori:#2b2d27;
    --fk-brillo:#fffaf0;--fk-textura:#5b4630;--fk-kinako:#dcbb72;--fk-cristal:#f1e8d2;--fk-cristal-2:#e3d6b6;--fk-palillo:#d9c08a;
    --fk-sombra:rgba(60,40,20,.12);--fk-nori-brillo:#6b6d66;}
  /* Colores de cada objeto de la tómbola: .c-<nombre> rellena con --fk-<nombre> (con .t, además lleva su contorno) */
  :root{--fk-fuji:#5d7ea6;--fk-fuji-osc:#465f86;--fk-fuji-veta:#3f587d;--fk-fuji-nieve:#fbf7ee;--fk-fuji-nieve-osc:#d5deea;--fk-fuji-sol:#d9533c;--fk-fuji-lago:#a9c6d8;--fk-fuji-reflejo:#8eaec5;--fk-salmon:#f08b5f;--fk-salmon-osc:#cf6a40;--fk-gamba:#f6b59a;--fk-gamba-osc:#e59478;--fk-gamba-raya:#d9533c;--fk-gamba-cola:#d9533c;--fk-huevo:#f3d36a;--fk-huevo-osc:#dcb444;--fk-ikura:#f0622c;--fk-ikura-osc:#c2401a;--fk-brillo:#fffaf0;--fk-pepino:#6f9b4f;--fk-pepino-cl:#cfe0a8;--fk-calamar:#f7f3ea;--fk-calamar-osc:#e2dccd;--fk-uni:#f2b23a;--fk-uni-osc:#d98f1f;--fk-tako:#9e3343;--fk-tako-osc:#6e2030;--fk-tako-ventosa:#e9bfc0;--fk-tako-dentro:#f6efe6;--fk-tako-dentro-osc:#e4d9cb;--fk-inari:#d9a14c;--fk-inari-osc:#b47b2d;--fk-matsuri-rojo:#d9533c;--fk-matsuri-rojo-osc:#ad3a28;--fk-matsuri-kingyo:#ef7d3e;--fk-matsuri-kingyo-osc:#cc5a24;--fk-matsuri-kingyo-cl:#f7b48a;--fk-matsuri-agua:#d6e9ec;--fk-matsuri-agua-osc:#b7d5db;--fk-matsuri-rosa:#f5c3cf;--fk-matsuri-rosa-osc:#e29db0;--fk-matsuri-sirope:#e0545a;--fk-matsuri-sirope-osc:#b93a44;--fk-matsuri-vidrio:#e3f0f1;--fk-matsuri-vidrio-osc:#c3dcdf;--fk-matsuri-tako:#d79a52;--fk-matsuri-tako-osc:#b0763a;--fk-matsuri-salsa:#5b3524;--fk-matsuri-salsa-osc:#3f2418;--fk-matsuri-aonori:#6f9b4f;--fk-matsuri-katsuo:#ecc6a6;--fk-matsuri-noche:#2f3a5c;--fk-matsuri-noche-osc:#232c48;--fk-matsuri-oro:#e2b23e;--fk-matsuri-oro-osc:#b9882a;--fk-matsuri-oro-cl:#f3d47c;--fk-matsuri-verde:#6aa38f;--fk-matsuri-azul:#4f74b3;--fk-matsuri-azul-osc:#3b5a93;--fk-matsuri-asagao:#6a71c2;--fk-matsuri-asagao-osc:#4c529c;--fk-matsuri-tanzaku:#8fb0d4;--fk-matsuri-tanzaku-osc:#6f8fb6;--fk-matsuri-papel:#f4e4b4;--fk-matsuri-papel-osc:#dfc98c;--fk-matsuri-madera:#e7cf9f;--fk-matsuri-madera-osc:#c9a96f;--fk-asobi-rojo:#d24f3a;--fk-asobi-rojo-osc:#a63826;--fk-asobi-oro:#e2b23e;--fk-asobi-oro-osc:#b9882a;--fk-asobi-madera:#e9d2a4;--fk-asobi-madera-osc:#cbab73;--fk-asobi-madera-veta:#b38a52;--fk-asobi-azul:#4f74b3;--fk-asobi-azul-osc:#3b5a93;--fk-asobi-verde:#6f9b4f;--fk-asobi-verde-osc:#557c39;--fk-asobi-papel:#e86f5a;--fk-asobi-papel-osc:#c04f3c;--fk-asobi-rosa:#f2b9c4;--fk-asobi-rosa-osc:#de94a4;--fk-asobi-amarillo:#f1cc5a;--fk-asobi-amarillo-osc:#d4a93a;--fk-asobi-morado:#8d6bb0;--fk-asobi-morado-osc:#6c4f8d;--fk-asobi-bambu:#c9b86b;--fk-asobi-bambu-osc:#a49349;--fk-asobi-blanco:#fbf6ec;--fk-asobi-blanco-osc:#e6dccb;--fk-ie-tatami:#cbbd76;--fk-ie-tatami-osc:#ab9d55;--fk-ie-borde:#3f5a4a;--fk-ie-borde-osc:#2c4236;--fk-ie-madera:#c99a62;--fk-ie-madera-osc:#a3763f;--fk-ie-madera-cl:#e3c08e;--fk-ie-washi:#fbf5e6;--fk-ie-washi-osc:#e9dfc6;--fk-ie-azul:#4f6f9e;--fk-ie-azul-osc:#3b5680;--fk-ie-rojo:#c8513e;--fk-ie-rojo-osc:#9f3b2b;--fk-ie-naranja:#e8a04c;--fk-ie-naranja-osc:#c7802f;--fk-ie-verde:#6f9b4f;--fk-ie-verde-osc:#557c39;--fk-ie-te:#9db86a;--fk-ie-te-osc:#7f9a4c;--fk-ie-ceramica:#7d8f86;--fk-ie-ceramica-osc:#5e7067;--fk-ie-hierro:#4a4c4a;--fk-ie-hierro-osc:#353735;--fk-ie-maceta:#5d6f8f;--fk-ie-maceta-osc:#45556f;--fk-ie-tronco:#8a6a4a;--fk-ie-tronco-osc:#6b4f34;--fk-ie-indigo:#3d4f78;--fk-ie-indigo-osc:#2d3b5c;--fk-ie-futon:#f0e6d2;--fk-ie-futon-osc:#d9cbb0;--fk-ie-tatami-cl:#dcd296;--fk-kimono-ai:#55699a;--fk-kimono-ai-osc:#3e4f78;--fk-kimono-ai-cl:#93a4c8;--fk-kimono-obi:#dcaa4c;--fk-kimono-obi-osc:#b8862d;--fk-kimono-rojo:#c64d40;--fk-kimono-rojo-osc:#98352b;--fk-kimono-madera:#ddb682;--fk-kimono-madera-osc:#bb8e57;--fk-kimono-madera-osc2:#9a6f3e;--fk-kimono-rosa:#eeaab0;--fk-kimono-rosa-osc:#d4808b;--fk-kimono-papel:#f5ead2;--fk-kimono-papel-osc:#e3d3b2;--fk-kimono-oro:#e3b958;--fk-kimono-oro-osc:#c0942f;--fk-kimono-crema:#f6eedf;--fk-kimono-crema-osc:#e2d5bd;--fk-kimono-verde:#7f9d64;--fk-kimono-verde-osc:#5f7c48;--fk-shogatsu-bambu:#8fae6a;--fk-shogatsu-bambu-osc:#6b8b4b;--fk-shogatsu-bambu-cl:#c6d9a4;--fk-shogatsu-pino:#5e7f4a;--fk-shogatsu-pino-osc:#45633a;--fk-shogatsu-paja:#ddc27e;--fk-shogatsu-paja-osc:#b99a52;--fk-shogatsu-rojo:#c84a3c;--fk-shogatsu-rojo-osc:#9a3228;--fk-shogatsu-naranja:#eb9a3a;--fk-shogatsu-naranja-osc:#c7741d;--fk-shogatsu-mochi:#f8f2e6;--fk-shogatsu-mochi-osc:#e6dcc8;--fk-shogatsu-laca:#3a2a26;--fk-shogatsu-laca-osc:#251a17;--fk-shogatsu-oro:#e2b85a;--fk-shogatsu-oro-osc:#bf9233;--fk-shogatsu-papel:#f7efdc;--fk-shogatsu-papel-osc:#e5d8bc;--fk-shogatsu-cielo:#f3cf9a;--fk-shogatsu-cielo-osc:#eab27a;--fk-shogatsu-mar:#7f9cb5;--fk-shogatsu-mar-osc:#5f7d98;--fk-shogatsu-caldo:#f1dfb8;--fk-shogatsu-caldo-osc:#dcc394;--fk-shogatsu-gamba:#e8805c;--fk-shogatsu-rosa:#efb0b2;--fk-shogatsu-negro:#3b3530;--fk-jinja-bermellon:#d1553c;--fk-jinja-bermellon-osc:#a63d29;--fk-jinja-negro:#3a3430;--fk-jinja-piedra:#c9c3b6;--fk-jinja-piedra-osc:#a39c8e;--fk-jinja-piedra-cl:#e2ddd2;--fk-jinja-madera:#dfba85;--fk-jinja-madera-osc:#bf955c;--fk-jinja-paja:#ddc27e;--fk-jinja-paja-osc:#b99a52;--fk-jinja-oro:#e2b85a;--fk-jinja-oro-osc:#bf9233;--fk-jinja-agua:#9cc0cf;--fk-jinja-agua-osc:#77a0b2;--fk-jinja-hoja:#5f8a4c;--fk-jinja-hoja-osc:#46703a;--fk-jinja-seda:#6d7fb0;--fk-jinja-seda-osc:#52638f;--fk-jinja-rosa:#e9a2a6;--fk-jinja-papel:#f8f2e4;--fk-jinja-papel-osc:#e6dcc6;--fk-jinja-bambu:#d9c690;--fk-jinja-bambu-osc:#b8a46a;--fk-otera-teja:#5f666c;--fk-otera-teja-osc:#454b51;--fk-otera-teja-cl:#7d858b;--fk-otera-shu:#c25a3e;--fk-otera-shu-osc:#963f2a;--fk-otera-oro:#d6ac52;--fk-otera-oro-osc:#ad8331;--fk-otera-bronce:#7d8f74;--fk-otera-bronce-osc:#5f705a;--fk-otera-bronce-cl:#a1b096;--fk-otera-madera:#a96f3e;--fk-otera-madera-osc:#81522b;--fk-otera-madera-cl:#c99a63;--fk-otera-laca:#a9462f;--fk-otera-laca-osc:#7c2f20;--fk-otera-cojin:#b54a3a;--fk-otera-cojin-osc:#86342a;--fk-otera-ceniza:#cfcabe;--fk-otera-senko:#6e8c55;--fk-otera-brasa:#e2603a;--fk-otera-cuenta:#8f5a35;--fk-otera-cuenta-osc:#683f22;--fk-otera-borla:#8a68a0;--fk-otera-borla-osc:#664a7b;--fk-otera-piedra:#bab5aa;--fk-otera-piedra-osc:#959084;--fk-otera-piedra-cl:#d3cfc5;--fk-otera-luz:#f5d58a;--fk-otera-musgo:#8aa067;--fk-otera-buda:#8d9a82;--fk-otera-buda-osc:#6e7b65;--fk-otera-buda-cl:#adb9a2;--fk-otera-buda-pelo:#5b6754;--fk-otera-loto:#f3c3c3;--fk-otera-loto-osc:#de949a;--fk-otera-loto-cl:#fbe3e0;--fk-otera-estambre:#efc659;--fk-otera-llama:#f2b544;--fk-otera-llama-cl:#fff1c4;--fk-shodo-bambu:#c9a764;--fk-shodo-bambu-osc:#a1803e;--fk-shodo-bambu-cl:#e2c98f;--fk-shodo-pelo:#3b3530;--fk-shodo-pelo-cl:#ddcfae;--fk-shodo-piedra:#4a4d50;--fk-shodo-piedra-osc:#33363a;--fk-shodo-piedra-cl:#6a6e72;--fk-shodo-tinta:#232427;--fk-shodo-agua:#3f4a55;--fk-shodo-oro:#c9a14a;--fk-shodo-oro-osc:#9e7a2c;--fk-shodo-papel:#fbf6ea;--fk-shodo-papel-osc:#e6dcc7;--fk-shodo-fieltro:#3d4a5c;--fk-shodo-fieltro-osc:#2c3746;--fk-shodo-laton:#b8954a;--fk-shodo-laton-osc:#8f6f2c;--fk-shodo-laton-cl:#d9bc7a;--fk-shodo-madera:#b98552;--fk-shodo-madera-osc:#90623a;--fk-shodo-madera-cl:#d8ab78;--fk-shodo-rojo:#c2443a;--fk-shodo-rojo-osc:#93302a;--fk-shodo-rojo-cl:#d9675a;--fk-shodo-ceramica:#e9e3d4;--fk-shodo-ceramica-osc:#c9c0ac;--fk-shodo-azul:#4f6d8f;--fk-shodo-seda:#6f8a6a;--fk-shodo-seda-osc:#55704f;--fk-shodo-seda-cl:#9db08f;--fk-shodo-cordon:#b5503f;--fk-shodo-tanzaku:#cfe0d3;--fk-shodo-tanzaku-osc:#a9c4b0;--fk-shodo-gris:#a7a49b;--fk-ongaku-madera:#b07a45;--fk-ongaku-madera-osc:#87582d;--fk-ongaku-madera-cl:#d3a46e;--fk-ongaku-cuero:#efe2c4;--fk-ongaku-cuero-osc:#d8c7a0;--fk-ongaku-laca:#2f2a28;--fk-ongaku-laca-cl:#4b4542;--fk-ongaku-rojo:#bf4a37;--fk-ongaku-rojo-osc:#8f3326;--fk-ongaku-oro:#d0a64e;--fk-ongaku-oro-osc:#a57f2f;--fk-ongaku-bambu:#d1b56f;--fk-ongaku-bambu-osc:#a98d48;--fk-ongaku-bambu-cl:#e6d29c;--fk-ongaku-cuerda:#efe6cf;--fk-ongaku-puente:#f4ecd8;--fk-ongaku-kiri:#c79a63;--fk-ongaku-kiri-osc:#9d7242;--fk-ongaku-cordon:#c4593d;--fk-ongaku-cordon-osc:#97402a;--fk-ongaku-azul:#4e6788;--fk-ongaku-plata:#c9c6bd;--fk-ongaku-plata-osc:#9d998e;--fk-dobutsu-tanuki:#a07c56;--fk-dobutsu-tanuki-osc:#7a5b3d;--fk-dobutsu-mascara:#4b3b2e;--fk-dobutsu-mascara-osc:#33281f;--fk-dobutsu-crema:#efe0c2;--fk-dobutsu-crema-osc:#dcc8a2;--fk-dobutsu-zorro:#d98a46;--fk-dobutsu-zorro-osc:#b5652c;--fk-dobutsu-mono:#a99178;--fk-dobutsu-mono-osc:#836d56;--fk-dobutsu-cara:#d97a6a;--fk-dobutsu-cara-osc:#b65a4e;--fk-dobutsu-ciervo:#b37a4b;--fk-dobutsu-ciervo-osc:#8b5833;--fk-dobutsu-asta:#d8c49a;--fk-dobutsu-asta-osc:#b9a172;--fk-dobutsu-pico:#c9bf98;--fk-dobutsu-pico-osc:#a39870;--fk-dobutsu-koi:#e2663c;--fk-dobutsu-koi-osc:#bf4a26;--fk-dobutsu-concha:#a08d4c;--fk-dobutsu-concha-osc:#75662f;--fk-dobutsu-piel:#aeb07c;--fk-dobutsu-piel-osc:#878a58;--fk-dobutsu-peto:#dcc78c;--fk-dobutsu-buho:#a98462;--fk-dobutsu-buho-osc:#7f5f41;--fk-dobutsu-disco:#ead9b6;--fk-dobutsu-disco-osc:#d4be94;--fk-dobutsu-ojo:#e9b84c;--fk-dobutsu-ojo-osc:#c99428;--fk-dobutsu-rana:#86ad4e;--fk-dobutsu-rana-osc:#5f8a35;--fk-dobutsu-vientre:#e4e5b4;--fk-dobutsu-vientre-osc:#cfd096;--fk-hana-sakura:#f6d3d6;--fk-hana-sakura-osc:#e8acb5;--fk-hana-sakura-centro:#d9798b;--fk-hana-ume:#d65f70;--fk-hana-ume-osc:#b24254;--fk-hana-ume-centro:#8f2d3d;--fk-hana-estambre:#e9c25a;--fk-hana-rama:#6e4a32;--fk-hana-rama-osc:#4f3322;--fk-hana-momiji:#cf4b2f;--fk-hana-momiji-osc:#a5351f;--fk-hana-fuji:#a68dcb;--fk-hana-fuji-osc:#7f66a9;--fk-hana-fuji-cl:#d3c6e8;--fk-hana-fuji-boton:#6c5290;--fk-hana-asagao:#5a72c2;--fk-hana-asagao-osc:#3f539c;--fk-hana-asagao-cl:#9aa9de;--fk-hana-kiku:#ebbd4c;--fk-hana-kiku-osc:#c9952a;--fk-hana-kiku-centro:#d48a1f;--fk-hana-take:#86ad5c;--fk-hana-take-osc:#5f8a40;--fk-hana-take-nudo:#c4d79a;--fk-hana-take-hoja:#7ea457;--fk-hana-matsu:#4f7a45;--fk-hana-matsu-osc:#36592f;--fk-hana-tronco:#7a5a3e;--fk-hana-tronco-osc:#56402b;--fk-hana-tsubaki:#c63d3d;--fk-hana-tsubaki-osc:#972b2d;--fk-hana-hoja:#467342;--fk-hana-hoja-osc:#30542d;--fk-hana-ajisai:#86a1d8;--fk-hana-ajisai-cl:#b2c3e9;--fk-hana-ajisai-mor:#9784c4;--fk-hana-ajisai-osc:#5f75b0;--fk-tabemono-cuenco:#b2402f;--fk-tabemono-cuenco-osc:#86291e;--fk-tabemono-cuenco-cl:#d9705c;--fk-tabemono-loza:#e9e2d2;--fk-tabemono-loza-osc:#cfc5b0;--fk-tabemono-azul:#3e5f8a;--fk-tabemono-caldo:#d9a75a;--fk-tabemono-caldo-osc:#bd8a3e;--fk-tabemono-miso:#c49155;--fk-tabemono-miso-osc:#a3733c;--fk-tabemono-fideo:#f4dc94;--fk-tabemono-fideo-osc:#dcbf6a;--fk-tabemono-soba:#9a7d62;--fk-tabemono-soba-osc:#77604a;--fk-tabemono-udon:#f7efdc;--fk-tabemono-udon-osc:#e2d6bb;--fk-tabemono-chashu:#c98a64;--fk-tabemono-chashu-osc:#a26541;--fk-tabemono-yema:#f0a93a;--fk-tabemono-cebolleta:#7fae54;--fk-tabemono-naruto:#e98b98;--fk-tabemono-rebozado:#eccb7c;--fk-tabemono-rebozado-osc:#d3a650;--fk-tabemono-gamba:#e2643f;--fk-tabemono-tofu:#f8f2e2;--fk-tabemono-tofu-osc:#e4dac2;--fk-tabemono-natto:#a8763e;--fk-tabemono-natto-osc:#7f5428;--fk-tabemono-hebra:#f3ead6;--fk-tabemono-daikon:#ecdcb0;--fk-tabemono-daikon-osc:#d3bd84;--fk-tabemono-konnyaku:#7f7468;--fk-tabemono-konnyaku-osc:#5f564c;--fk-tabemono-huevo-oden:#e7c38b;--fk-tabemono-huevo-oden-osc:#c89c5c;--fk-tabemono-pasta:#e8b773;--fk-tabemono-ternera:#b55a52;--fk-tabemono-ternera-osc:#8c3d38;--fk-tabemono-grasa:#f2d8cc;--fk-tabemono-olla:#3d3a36;--fk-tabemono-olla-osc:#2a2825;--fk-tabemono-shiitake:#8b5a36;--fk-tabemono-negi:#eef0d8;--fk-tabemono-wakame:#3f6b3a;--fk-tabemono-mimbre:#c9a46a;--fk-tabemono-caldo-cl:#ecd6a4;--fk-tabemono-caldo-cl-osc:#d8bb7e;--fk-tabemono-soba-cl:#b9a78f;--fk-tabemono-soba-cl-osc:#9a876f;--fk-tabemono-calabaza:#e9a23b;--fk-tabemono-calabaza-piel:#4f6b3a;--fk-ocha-matcha:#86a84a;--fk-ocha-matcha-osc:#5f7f33;--fk-ocha-espuma:#c2d68c;--fk-ocha-bambu:#e4d09a;--fk-ocha-bambu-osc:#c3a76a;--fk-ocha-bambu-cl:#f1e4bd;--fk-ocha-barro:#9c6a45;--fk-ocha-barro-osc:#74482a;--fk-ocha-barro-in:#5a3720;--fk-ocha-vidriado:#e9dfc6;--fk-ocha-vidriado-osc:#cfc2a2;--fk-ocha-hierro:#4d4b45;--fk-ocha-hierro-osc:#34322d;--fk-ocha-hierro-cl:#77746b;--fk-ocha-ai:#3d5a88;--fk-ocha-ai-osc:#2b4268;--fk-ocha-hinoki:#e8cb92;--fk-ocha-hinoki-osc:#c9a466;--fk-ocha-hinoki-cl:#f4e2b8;--fk-ocha-sake:#f3ecd8;--fk-ocha-vidrio:#c4e3df;--fk-ocha-vidrio-osc:#93c6c1;--fk-ocha-vidrio-cl:#e4f3f0;--fk-ocha-tapon:#4d82b3;--fk-ocha-tapon-osc:#36618a;--fk-ocha-umeshu:#e0a94e;--fk-ocha-umeshu-osc:#c18734;--fk-ocha-ume:#b3b54c;--fk-ocha-ume-osc:#86892f;--fk-ocha-oro:#d8b25a;--fk-machi-azul:#2f5d9e;--fk-machi-azul-osc:#22457a;--fk-machi-cristal:#3c4a5a;--fk-machi-cristal-cl:#8fa6b8;--fk-machi-gris:#a7a59c;--fk-machi-gris-osc:#7d7b73;--fk-machi-gris-cl:#cfccc2;--fk-machi-naranja:#e0874a;--fk-machi-naranja-osc:#bd6a31;--fk-machi-verde:#5f8a55;--fk-machi-verde-osc:#466a3e;--fk-machi-laca:#3a2f2b;--fk-machi-rojo:#c8432f;--fk-machi-rojo-osc:#982e22;--fk-machi-madera:#c99b62;--fk-machi-madera-osc:#9f7341;--fk-machi-madera-cl:#e5c48f;--fk-machi-tela:#3f5f8c;--fk-machi-tela-osc:#2d4669;--fk-machi-luz:#f4d27a;--fk-machi-lata-r:#d0533f;--fk-machi-lata-v:#6f9b4f;--fk-machi-lata-n:#e39a3c;--fk-machi-lata-a:#4d82b3;--fk-machi-lata-m:#8a5a3a;--fk-machi-pared:#efe6d2;--fk-machi-pared-osc:#d8ccb2;--fk-machi-teja:#5b6068;--fk-machi-teja-osc:#41454c;--fk-machi-estrella:#e2b84e;--fk-machi-monte:#5f7fa8;--fk-machi-monte-osc:#456289;--fk-machi-nieve:#fbf7ee;--fk-machi-nieve-osc:#d9dfe6;--fk-machi-sol:#d9533c;--fk-machi-agua:#9cc3d4;--fk-machi-agua-osc:#6fa0b6;--fk-machi-shu:#d0553a;--fk-machi-shu-osc:#a43f29;--fk-machi-oro:#d8b25a;--fk-daidokoro-laca:#2f2a28;--fk-daidokoro-laca-cl:#5a504b;--fk-daidokoro-bermellon:#b8412f;--fk-daidokoro-bermellon-osc:#8a2d21;--fk-daidokoro-madera:#d1a56c;--fk-daidokoro-madera-osc:#a87c45;--fk-daidokoro-madera-cl:#ebcd9b;--fk-daidokoro-hinoki:#ecd7ab;--fk-daidokoro-hinoki-osc:#d2b67e;--fk-daidokoro-porcelana:#f5f0e4;--fk-daidokoro-ai:#3d5a88;--fk-daidokoro-ai-osc:#2b4268;--fk-daidokoro-arroz:#fbf7ee;--fk-daidokoro-huevo:#f0c04e;--fk-daidokoro-huevo-osc:#d49e2f;--fk-daidokoro-cerdo:#c98547;--fk-daidokoro-cerdo-osc:#9e6029;--fk-daidokoro-cebolleta:#7aa257;--fk-daidokoro-ume:#c8432f;--fk-daidokoro-salmon:#f08b5f;--fk-daidokoro-brocoli:#6f9b4f;--fk-daidokoro-tamago:#f3d36a;--fk-daidokoro-barro:#b47a52;--fk-daidokoro-barro-osc:#8c5a37;--fk-daidokoro-peine:#7c4f30;--fk-daidokoro-sesamo:#e9dcc0;--fk-daidokoro-acero:#cdd3d6;--fk-daidokoro-acero-osc:#9aa3a8;--fk-daidokoro-acero-cl:#eef1f2;--fk-daidokoro-filo:#f7f9fa;--fk-daidokoro-hierro:#4d4b45;--fk-daidokoro-hierro-osc:#34322d;--fk-daidokoro-cobre:#c77a45;--fk-daidokoro-cobre-osc:#9b5a2c;--fk-daidokoro-tomate:#d4553e;--fk-daidokoro-pepino:#6f9b4f;--fk-daidokoro-pepino-cl:#cfe0a8;--fk-daidokoro-te:#a9b85a;--fk-samurai-oro:#d6ab4a;--fk-samurai-oro-osc:#ad8230;--fk-samurai-hierro:#454c5a;--fk-samurai-hierro-osc:#2f3540;--fk-samurai-ito:#3a4660;--fk-samurai-ito-osc:#283249;--fk-samurai-acero:#c3c9cc;--fk-samurai-acero-osc:#949da2;--fk-samurai-acero-cl:#eef0f0;--fk-samurai-rojo:#b9483b;--fk-samurai-rojo-osc:#8f3329;--fk-samurai-ai:#4a6390;--fk-samurai-ai-osc:#334a72;--fk-samurai-madera:#b58652;--fk-samurai-madera-osc:#8a6036;--fk-samurai-bambu:#d9b86e;--fk-samurai-bambu-osc:#b8934a;--fk-samurai-piedra:#b3afa3;--fk-samurai-piedra-osc:#8f8b80;--fk-samurai-teja:#9ea7b2;--fk-samurai-teja-osc:#77818d;--fk-samurai-concha:#f3e6cc;--fk-samurai-concha-osc:#dcc59e;--fk-samurai-mancha:#b5743d;--fk-samurai-nacar:#eeb39b;--fk-samurai-nacar-osc:#d58f74;--fk-samurai-laca:#a5473a;--fk-samurai-laca-osc:#7e3226;--fk-samurai-cuero:#9a5a3a;--fk-kisetsu-koi-rojo:#d9604a;--fk-kisetsu-koi-rojo-osc:#b04533;--fk-kisetsu-koi-azul:#5a7cb0;--fk-kisetsu-koi-azul-osc:#3f5e8e;--fk-kisetsu-oro:#e0b453;--fk-kisetsu-oro-osc:#bb8e35;--fk-kisetsu-madera:#b58652;--fk-kisetsu-madera-osc:#8a6036;--fk-kisetsu-bambu:#8fae62;--fk-kisetsu-bambu-osc:#6b8c45;--fk-kisetsu-tira-a:#e39a8a;--fk-kisetsu-tira-b:#f0cf6e;--fk-kisetsu-tira-c:#8fb7d6;--fk-kisetsu-tira-d:#b9a3d0;--fk-kisetsu-tira-e:#9cc48a;--fk-kisetsu-luna:#f6e2a0;--fk-kisetsu-luna-osc:#e8c977;--fk-kisetsu-cielo:#3b4a6b;--fk-kisetsu-susuki:#d8c49a;--fk-kisetsu-susuki-osc:#b39d6e;--fk-kisetsu-hina-rojo:#c7473c;--fk-kisetsu-hina-rojo-osc:#9c3329;--fk-kisetsu-hina-mora:#7c5f9a;--fk-kisetsu-hina-mora-osc:#5d4579;--fk-kisetsu-hina-verde:#6f9b6a;--fk-kisetsu-piel:#fbf1e4;--fk-kisetsu-pelo:#2b2d27;--fk-kisetsu-oni:#df7a62;--fk-kisetsu-oni-osc:#bf5c45;--fk-kisetsu-cuerno:#f2e3c2;--fk-kisetsu-cuerno-osc:#d6c093;--fk-kisetsu-mame:#e6c98f;--fk-kisetsu-mame-osc:#c9a564;--fk-kisetsu-luz:#e9ef86;--fk-kisetsu-luz-osc:#c9d35a;--fk-kisetsu-halo:#f3f6c2;--fk-kisetsu-semi:#8a6a45;--fk-kisetsu-semi-osc:#634a2e;--fk-kisetsu-ala:#eef2ec;--fk-kisetsu-ala-osc:#cfd8d0;--fk-kisetsu-vena:#7d8a72;--fk-kisetsu-sandia:#5c8f48;--fk-kisetsu-sandia-osc:#3f6e32;--fk-kisetsu-raya:#2f5a2a;--fk-kisetsu-pulpa:#e85b5b;--fk-kisetsu-pulpa-osc:#c94545;--fk-kisetsu-corteza:#e8efc8;--fk-kisetsu-nieve:#f8fafb;--fk-kisetsu-nieve-osc:#d9e2ea;--fk-kisetsu-cubo:#c95b4a;--fk-kisetsu-cubo-osc:#9e4234;--fk-yado-agua:#9cc8d6;--fk-yado-agua-osc:#6fa7bb;--fk-yado-agua-cl:#d8eef3;--fk-yado-piedra:#a9a59a;--fk-yado-piedra-osc:#858176;--fk-yado-piedra-cl:#c6c2b7;--fk-yado-madera:#c99a63;--fk-yado-madera-osc:#a0723f;--fk-yado-madera-cl:#e3c294;--fk-yado-hinoki:#e6cc9a;--fk-yado-hinoki-osc:#c9a96c;--fk-yado-cobre:#b9733f;--fk-yado-cobre-osc:#8e5228;--fk-yado-ai:#3f5f8f;--fk-yado-ai-osc:#2d4670;--fk-yado-ai-cl:#c9d6e8;--fk-yado-obi:#c9584a;--fk-yado-obi-osc:#a14236;--fk-yado-brasa:#e4683e;--fk-yado-brasa-cl:#f3b04f;--fk-yado-ceniza:#d9d3c7;--fk-yado-ceniza-osc:#bbb3a5;--fk-yado-hierro:#4b4f55;--fk-yado-hierro-osc:#33363b;--fk-yado-ceramica:#5f7f86;--fk-yado-ceramica-osc:#466168;--fk-yado-bambu:#9cb86a;--fk-yado-bambu-osc:#78964a;--fk-yado-bambu-cl:#c7da9a;--fk-yado-paja:#cfb27a;--fk-yado-paja-osc:#a98a52;--fk-yado-musgo:#88a865;--fk-yado-musgo-osc:#6a8a4a;--fk-yado-pino:#5f8a52;--fk-yado-pino-osc:#456e3c;--fk-yado-arce:#d76848;--fk-yado-oro:#ddb65c;--fk-yado-oro-osc:#b8913a;--fk-yado-fusuma:#f2ead8;--fk-yado-fusuma-osc:#ddd2b9;--fk-yado-monte:#8ea6b4;--fk-yado-monte-osc:#6f8b9b;--fk-yado-vapor:#ffffff;}
  /* En los temas oscuros, cada premio conseguido va en su ficha de papel con tinta oscura (Alex, 23/10): el dibujo se ve
     siempre como se diseñó y la tómbola se lee como una colección de cartas. Los que faltan siguen oscuros. */
  :root{--fk-ficha-papel:var(--papel);--fk-ficha-borde:var(--line);}
  :root:is([data-tema="samurai"],[data-tema="noche"]){--fk-ficha-papel:#f6efe0;--fk-ficha-borde:#d8ccb2;--fk-ficha-tinta:#2b2a28;--fk-ficha-gris:#6f6a60;}
  :root:is([data-tema="samurai"],[data-tema="noche"]) :is(.fk-mini:not(.no),.fk-ficha){--sumi:var(--fk-ficha-tinta);--gris-osc:var(--fk-ficha-gris);
    background:var(--fk-ficha-papel);border-color:var(--fk-ficha-borde);color:var(--fk-ficha-tinta);}
  .fk-v2 :is(.xn2f,.xn3,.xj,.xj2,.xkin,.xa,.xa3,.xr,.xr2,.xc,.xc2,.xk,.xk2,.xk3,.xn,.xp,.xg,.xs,.xsh){stroke:none}
  .fk-v2 .t{fill:none;stroke:var(--sumi);stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}
  .fk-v2 .tf{fill:none;stroke:var(--sumi);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .fk-v2 .tt{fill:none;stroke:var(--fk-textura);stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;opacity:.6}
  .fk-v2 .tvena{fill:none;stroke:var(--fk-vena);stroke-width:1.4;stroke-linecap:round}
  .fk-v2 .td{fill:none;stroke:var(--fk-tostado);stroke-width:2.2;stroke-linecap:round}
  .fk-v2 .tdk{fill:none;stroke:var(--fk-tostado);stroke-width:1.5;stroke-linecap:round}
  .fk-v2 .tj{fill:none;stroke:var(--fk-tostado-osc);stroke-width:2;stroke-linejoin:round}
  .fk-v2 .tn{fill:none;stroke:var(--fk-tostado-osc);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
  .fk-v2 .tg{fill:none;stroke:var(--fk-rosa-osc);stroke-width:1.1}
  .fk-v2 .xa{fill:var(--fk-rojo)} .fk-v2 .xa3{fill:var(--fk-rojo-osc)} .fk-v2 .xr{fill:var(--fk-rosa)} .fk-v2 .xr2{fill:var(--fk-rosa-osc)}
  .fk-v2 .xc{fill:var(--fk-verde)} .fk-v2 .xc2{fill:var(--fk-verde-osc)}
  .fk-v2 .xk{fill:var(--fk-masa)} .fk-v2 .xk2{fill:var(--fk-tostado)} .fk-v2 .xk3{fill:var(--fk-masa-osc)}
  .fk-v2 .xn{fill:var(--fk-anko)} .fk-v2 .xn2f{fill:var(--fk-anko-osc)} .fk-v2 .xn3{fill:var(--fk-anko-cl)}
  .fk-v2 .xn2, .fk-v2 .xn4{fill:none;stroke:var(--fk-grano);stroke-width:2.4;stroke-linecap:round}
  .fk-v2 .xp{fill:var(--fk-blanco)} .fk-v2 .xg{fill:var(--fk-blanco-sombra)} .fk-v2 .xs{fill:var(--fk-nori)} .fk-v2 .xsh{fill:var(--fk-sombra)}
  .fk-v2 .xj{fill:var(--fk-cristal);opacity:.9} .fk-v2 .xj2{fill:var(--fk-cristal-2);opacity:.9} .fk-v2 .xkin{fill:var(--fk-kinako)}
  .fk-v2 .xw{fill:none;stroke:var(--fk-brillo);stroke-width:2.2;stroke-linecap:round}
  .fk-v2 .xw2{fill:none;stroke:var(--fk-brillo);stroke-width:1.2;stroke-linecap:round;opacity:.75}
  .fk-v2 .xw0{fill:none;stroke:var(--fk-blanco-sombra);stroke-width:2;stroke-linecap:round}
  .fk-v2 .xk3t{fill:none;stroke:var(--fk-palillo);stroke-width:1}
  .fk-v2 [class^="c-"]:not(.t), .fk-v2 [class*=" c-"]:not(.t){stroke:none}
  .fk-v2 .c-salmon{fill:var(--fk-salmon)} .fk-v2 .c-salmon-osc{fill:var(--fk-salmon-osc)} .fk-v2 .c-gamba{fill:var(--fk-gamba)} .fk-v2 .c-gamba-osc{fill:var(--fk-gamba-osc)} .fk-v2 .c-gamba-raya{fill:var(--fk-gamba-raya)} .fk-v2 .c-gamba-cola{fill:var(--fk-gamba-cola)} .fk-v2 .c-huevo{fill:var(--fk-huevo)} .fk-v2 .c-huevo-osc{fill:var(--fk-huevo-osc)} .fk-v2 .c-ikura{fill:var(--fk-ikura)} .fk-v2 .c-ikura-osc{fill:var(--fk-ikura-osc)} .fk-v2 .c-brillo{fill:var(--fk-brillo)} .fk-v2 .c-pepino{fill:var(--fk-pepino)} .fk-v2 .c-pepino-cl{fill:var(--fk-pepino-cl)} .fk-v2 .c-calamar{fill:var(--fk-calamar)} .fk-v2 .c-calamar-osc{fill:var(--fk-calamar-osc)} .fk-v2 .c-uni{fill:var(--fk-uni)} .fk-v2 .c-uni-osc{fill:var(--fk-uni-osc)} .fk-v2 .c-tako{fill:var(--fk-tako)} .fk-v2 .c-tako-osc{fill:var(--fk-tako-osc)} .fk-v2 .c-tako-ventosa{fill:var(--fk-tako-ventosa)} .fk-v2 .c-tako-dentro{fill:var(--fk-tako-dentro)} .fk-v2 .c-tako-dentro-osc{fill:var(--fk-tako-dentro-osc)} .fk-v2 .c-inari{fill:var(--fk-inari)} .fk-v2 .c-inari-osc{fill:var(--fk-inari-osc)} .fk-v2 .c-matsuri-rojo{fill:var(--fk-matsuri-rojo)} .fk-v2 .c-matsuri-rojo-osc{fill:var(--fk-matsuri-rojo-osc)} .fk-v2 .c-matsuri-kingyo{fill:var(--fk-matsuri-kingyo)} .fk-v2 .c-matsuri-kingyo-osc{fill:var(--fk-matsuri-kingyo-osc)} .fk-v2 .c-matsuri-kingyo-cl{fill:var(--fk-matsuri-kingyo-cl)} .fk-v2 .c-matsuri-agua{fill:var(--fk-matsuri-agua)} .fk-v2 .c-matsuri-agua-osc{fill:var(--fk-matsuri-agua-osc)} .fk-v2 .c-matsuri-rosa{fill:var(--fk-matsuri-rosa)} .fk-v2 .c-matsuri-rosa-osc{fill:var(--fk-matsuri-rosa-osc)} .fk-v2 .c-matsuri-sirope{fill:var(--fk-matsuri-sirope)} .fk-v2 .c-matsuri-sirope-osc{fill:var(--fk-matsuri-sirope-osc)} .fk-v2 .c-matsuri-vidrio{fill:var(--fk-matsuri-vidrio)} .fk-v2 .c-matsuri-vidrio-osc{fill:var(--fk-matsuri-vidrio-osc)} .fk-v2 .c-matsuri-tako{fill:var(--fk-matsuri-tako)} .fk-v2 .c-matsuri-tako-osc{fill:var(--fk-matsuri-tako-osc)} .fk-v2 .c-matsuri-salsa{fill:var(--fk-matsuri-salsa)} .fk-v2 .c-matsuri-salsa-osc{fill:var(--fk-matsuri-salsa-osc)} .fk-v2 .c-matsuri-aonori{fill:var(--fk-matsuri-aonori)} .fk-v2 .c-matsuri-katsuo{fill:var(--fk-matsuri-katsuo)} .fk-v2 .c-matsuri-noche{fill:var(--fk-matsuri-noche)} .fk-v2 .c-matsuri-noche-osc{fill:var(--fk-matsuri-noche-osc)} .fk-v2 .c-matsuri-oro{fill:var(--fk-matsuri-oro)} .fk-v2 .c-matsuri-oro-osc{fill:var(--fk-matsuri-oro-osc)} .fk-v2 .c-matsuri-oro-cl{fill:var(--fk-matsuri-oro-cl)} .fk-v2 .c-matsuri-verde{fill:var(--fk-matsuri-verde)} .fk-v2 .c-matsuri-azul{fill:var(--fk-matsuri-azul)} .fk-v2 .c-matsuri-azul-osc{fill:var(--fk-matsuri-azul-osc)} .fk-v2 .c-matsuri-asagao{fill:var(--fk-matsuri-asagao)} .fk-v2 .c-matsuri-asagao-osc{fill:var(--fk-matsuri-asagao-osc)} .fk-v2 .c-matsuri-tanzaku{fill:var(--fk-matsuri-tanzaku)} .fk-v2 .c-matsuri-tanzaku-osc{fill:var(--fk-matsuri-tanzaku-osc)} .fk-v2 .c-matsuri-papel{fill:var(--fk-matsuri-papel)} .fk-v2 .c-matsuri-papel-osc{fill:var(--fk-matsuri-papel-osc)} .fk-v2 .c-matsuri-madera{fill:var(--fk-matsuri-madera)} .fk-v2 .c-matsuri-madera-osc{fill:var(--fk-matsuri-madera-osc)} .fk-v2 .c-asobi-rojo{fill:var(--fk-asobi-rojo)} .fk-v2 .c-asobi-rojo-osc{fill:var(--fk-asobi-rojo-osc)} .fk-v2 .c-asobi-oro{fill:var(--fk-asobi-oro)} .fk-v2 .c-asobi-oro-osc{fill:var(--fk-asobi-oro-osc)} .fk-v2 .c-asobi-madera{fill:var(--fk-asobi-madera)} .fk-v2 .c-asobi-madera-osc{fill:var(--fk-asobi-madera-osc)} .fk-v2 .c-asobi-madera-veta{fill:var(--fk-asobi-madera-veta)} .fk-v2 .c-asobi-azul{fill:var(--fk-asobi-azul)} .fk-v2 .c-asobi-azul-osc{fill:var(--fk-asobi-azul-osc)} .fk-v2 .c-asobi-verde{fill:var(--fk-asobi-verde)} .fk-v2 .c-asobi-verde-osc{fill:var(--fk-asobi-verde-osc)} .fk-v2 .c-asobi-papel{fill:var(--fk-asobi-papel)} .fk-v2 .c-asobi-papel-osc{fill:var(--fk-asobi-papel-osc)} .fk-v2 .c-asobi-rosa{fill:var(--fk-asobi-rosa)} .fk-v2 .c-asobi-rosa-osc{fill:var(--fk-asobi-rosa-osc)} .fk-v2 .c-asobi-amarillo{fill:var(--fk-asobi-amarillo)} .fk-v2 .c-asobi-amarillo-osc{fill:var(--fk-asobi-amarillo-osc)} .fk-v2 .c-asobi-morado{fill:var(--fk-asobi-morado)} .fk-v2 .c-asobi-morado-osc{fill:var(--fk-asobi-morado-osc)} .fk-v2 .c-asobi-bambu{fill:var(--fk-asobi-bambu)} .fk-v2 .c-asobi-bambu-osc{fill:var(--fk-asobi-bambu-osc)} .fk-v2 .c-asobi-blanco{fill:var(--fk-asobi-blanco)} .fk-v2 .c-asobi-blanco-osc{fill:var(--fk-asobi-blanco-osc)} .fk-v2 .c-ie-tatami{fill:var(--fk-ie-tatami)} .fk-v2 .c-ie-tatami-osc{fill:var(--fk-ie-tatami-osc)} .fk-v2 .c-ie-borde{fill:var(--fk-ie-borde)} .fk-v2 .c-ie-borde-osc{fill:var(--fk-ie-borde-osc)} .fk-v2 .c-ie-madera{fill:var(--fk-ie-madera)} .fk-v2 .c-ie-madera-osc{fill:var(--fk-ie-madera-osc)} .fk-v2 .c-ie-madera-cl{fill:var(--fk-ie-madera-cl)} .fk-v2 .c-ie-washi{fill:var(--fk-ie-washi)} .fk-v2 .c-ie-washi-osc{fill:var(--fk-ie-washi-osc)} .fk-v2 .c-ie-azul{fill:var(--fk-ie-azul)} .fk-v2 .c-ie-azul-osc{fill:var(--fk-ie-azul-osc)} .fk-v2 .c-ie-rojo{fill:var(--fk-ie-rojo)} .fk-v2 .c-ie-rojo-osc{fill:var(--fk-ie-rojo-osc)} .fk-v2 .c-ie-naranja{fill:var(--fk-ie-naranja)} .fk-v2 .c-ie-naranja-osc{fill:var(--fk-ie-naranja-osc)} .fk-v2 .c-ie-verde{fill:var(--fk-ie-verde)} .fk-v2 .c-ie-verde-osc{fill:var(--fk-ie-verde-osc)} .fk-v2 .c-ie-te{fill:var(--fk-ie-te)} .fk-v2 .c-ie-te-osc{fill:var(--fk-ie-te-osc)} .fk-v2 .c-ie-ceramica{fill:var(--fk-ie-ceramica)} .fk-v2 .c-ie-ceramica-osc{fill:var(--fk-ie-ceramica-osc)} .fk-v2 .c-ie-hierro{fill:var(--fk-ie-hierro)} .fk-v2 .c-ie-hierro-osc{fill:var(--fk-ie-hierro-osc)} .fk-v2 .c-ie-maceta{fill:var(--fk-ie-maceta)} .fk-v2 .c-ie-maceta-osc{fill:var(--fk-ie-maceta-osc)} .fk-v2 .c-ie-tronco{fill:var(--fk-ie-tronco)} .fk-v2 .c-ie-tronco-osc{fill:var(--fk-ie-tronco-osc)} .fk-v2 .c-ie-indigo{fill:var(--fk-ie-indigo)} .fk-v2 .c-ie-indigo-osc{fill:var(--fk-ie-indigo-osc)} .fk-v2 .c-ie-futon{fill:var(--fk-ie-futon)} .fk-v2 .c-ie-futon-osc{fill:var(--fk-ie-futon-osc)} .fk-v2 .c-ie-tatami-cl{fill:var(--fk-ie-tatami-cl)} .fk-v2 .c-kimono-ai{fill:var(--fk-kimono-ai)} .fk-v2 .c-kimono-ai-osc{fill:var(--fk-kimono-ai-osc)} .fk-v2 .c-kimono-ai-cl{fill:var(--fk-kimono-ai-cl)} .fk-v2 .c-kimono-obi{fill:var(--fk-kimono-obi)} .fk-v2 .c-kimono-obi-osc{fill:var(--fk-kimono-obi-osc)} .fk-v2 .c-kimono-rojo{fill:var(--fk-kimono-rojo)} .fk-v2 .c-kimono-rojo-osc{fill:var(--fk-kimono-rojo-osc)} .fk-v2 .c-kimono-madera{fill:var(--fk-kimono-madera)} .fk-v2 .c-kimono-madera-osc{fill:var(--fk-kimono-madera-osc)} .fk-v2 .c-kimono-madera-osc2{fill:var(--fk-kimono-madera-osc2)} .fk-v2 .c-kimono-rosa{fill:var(--fk-kimono-rosa)} .fk-v2 .c-kimono-rosa-osc{fill:var(--fk-kimono-rosa-osc)} .fk-v2 .c-kimono-papel{fill:var(--fk-kimono-papel)} .fk-v2 .c-kimono-papel-osc{fill:var(--fk-kimono-papel-osc)} .fk-v2 .c-kimono-oro{fill:var(--fk-kimono-oro)} .fk-v2 .c-kimono-oro-osc{fill:var(--fk-kimono-oro-osc)} .fk-v2 .c-kimono-crema{fill:var(--fk-kimono-crema)} .fk-v2 .c-kimono-crema-osc{fill:var(--fk-kimono-crema-osc)} .fk-v2 .c-kimono-verde{fill:var(--fk-kimono-verde)} .fk-v2 .c-kimono-verde-osc{fill:var(--fk-kimono-verde-osc)} .fk-v2 .c-shogatsu-bambu{fill:var(--fk-shogatsu-bambu)} .fk-v2 .c-shogatsu-bambu-osc{fill:var(--fk-shogatsu-bambu-osc)} .fk-v2 .c-shogatsu-bambu-cl{fill:var(--fk-shogatsu-bambu-cl)} .fk-v2 .c-shogatsu-pino{fill:var(--fk-shogatsu-pino)} .fk-v2 .c-shogatsu-pino-osc{fill:var(--fk-shogatsu-pino-osc)} .fk-v2 .c-shogatsu-paja{fill:var(--fk-shogatsu-paja)} .fk-v2 .c-shogatsu-paja-osc{fill:var(--fk-shogatsu-paja-osc)} .fk-v2 .c-shogatsu-rojo{fill:var(--fk-shogatsu-rojo)} .fk-v2 .c-shogatsu-rojo-osc{fill:var(--fk-shogatsu-rojo-osc)} .fk-v2 .c-shogatsu-naranja{fill:var(--fk-shogatsu-naranja)} .fk-v2 .c-shogatsu-naranja-osc{fill:var(--fk-shogatsu-naranja-osc)} .fk-v2 .c-shogatsu-mochi{fill:var(--fk-shogatsu-mochi)} .fk-v2 .c-shogatsu-mochi-osc{fill:var(--fk-shogatsu-mochi-osc)} .fk-v2 .c-shogatsu-laca{fill:var(--fk-shogatsu-laca)} .fk-v2 .c-shogatsu-laca-osc{fill:var(--fk-shogatsu-laca-osc)} .fk-v2 .c-shogatsu-oro{fill:var(--fk-shogatsu-oro)} .fk-v2 .c-shogatsu-oro-osc{fill:var(--fk-shogatsu-oro-osc)} .fk-v2 .c-shogatsu-papel{fill:var(--fk-shogatsu-papel)} .fk-v2 .c-shogatsu-papel-osc{fill:var(--fk-shogatsu-papel-osc)} .fk-v2 .c-shogatsu-cielo{fill:var(--fk-shogatsu-cielo)} .fk-v2 .c-shogatsu-cielo-osc{fill:var(--fk-shogatsu-cielo-osc)} .fk-v2 .c-shogatsu-mar{fill:var(--fk-shogatsu-mar)} .fk-v2 .c-shogatsu-mar-osc{fill:var(--fk-shogatsu-mar-osc)} .fk-v2 .c-shogatsu-caldo{fill:var(--fk-shogatsu-caldo)} .fk-v2 .c-shogatsu-caldo-osc{fill:var(--fk-shogatsu-caldo-osc)} .fk-v2 .c-shogatsu-gamba{fill:var(--fk-shogatsu-gamba)} .fk-v2 .c-shogatsu-rosa{fill:var(--fk-shogatsu-rosa)} .fk-v2 .c-shogatsu-negro{fill:var(--fk-shogatsu-negro)} .fk-v2 .c-jinja-bermellon{fill:var(--fk-jinja-bermellon)} .fk-v2 .c-jinja-bermellon-osc{fill:var(--fk-jinja-bermellon-osc)} .fk-v2 .c-jinja-negro{fill:var(--fk-jinja-negro)} .fk-v2 .c-jinja-piedra{fill:var(--fk-jinja-piedra)} .fk-v2 .c-jinja-piedra-osc{fill:var(--fk-jinja-piedra-osc)} .fk-v2 .c-jinja-piedra-cl{fill:var(--fk-jinja-piedra-cl)} .fk-v2 .c-jinja-madera{fill:var(--fk-jinja-madera)} .fk-v2 .c-jinja-madera-osc{fill:var(--fk-jinja-madera-osc)} .fk-v2 .c-jinja-paja{fill:var(--fk-jinja-paja)} .fk-v2 .c-jinja-paja-osc{fill:var(--fk-jinja-paja-osc)} .fk-v2 .c-jinja-oro{fill:var(--fk-jinja-oro)} .fk-v2 .c-jinja-oro-osc{fill:var(--fk-jinja-oro-osc)} .fk-v2 .c-jinja-agua{fill:var(--fk-jinja-agua)} .fk-v2 .c-jinja-agua-osc{fill:var(--fk-jinja-agua-osc)} .fk-v2 .c-jinja-hoja{fill:var(--fk-jinja-hoja)} .fk-v2 .c-jinja-hoja-osc{fill:var(--fk-jinja-hoja-osc)} .fk-v2 .c-jinja-seda{fill:var(--fk-jinja-seda)} .fk-v2 .c-jinja-seda-osc{fill:var(--fk-jinja-seda-osc)} .fk-v2 .c-jinja-rosa{fill:var(--fk-jinja-rosa)} .fk-v2 .c-jinja-papel{fill:var(--fk-jinja-papel)} .fk-v2 .c-jinja-papel-osc{fill:var(--fk-jinja-papel-osc)} .fk-v2 .c-jinja-bambu{fill:var(--fk-jinja-bambu)} .fk-v2 .c-jinja-bambu-osc{fill:var(--fk-jinja-bambu-osc)} .fk-v2 .c-otera-teja{fill:var(--fk-otera-teja)} .fk-v2 .c-otera-teja-osc{fill:var(--fk-otera-teja-osc)} .fk-v2 .c-otera-teja-cl{fill:var(--fk-otera-teja-cl)} .fk-v2 .c-otera-shu{fill:var(--fk-otera-shu)} .fk-v2 .c-otera-shu-osc{fill:var(--fk-otera-shu-osc)} .fk-v2 .c-otera-oro{fill:var(--fk-otera-oro)} .fk-v2 .c-otera-oro-osc{fill:var(--fk-otera-oro-osc)} .fk-v2 .c-otera-bronce{fill:var(--fk-otera-bronce)} .fk-v2 .c-otera-bronce-osc{fill:var(--fk-otera-bronce-osc)} .fk-v2 .c-otera-bronce-cl{fill:var(--fk-otera-bronce-cl)} .fk-v2 .c-otera-madera{fill:var(--fk-otera-madera)} .fk-v2 .c-otera-madera-osc{fill:var(--fk-otera-madera-osc)} .fk-v2 .c-otera-madera-cl{fill:var(--fk-otera-madera-cl)} .fk-v2 .c-otera-laca{fill:var(--fk-otera-laca)} .fk-v2 .c-otera-laca-osc{fill:var(--fk-otera-laca-osc)} .fk-v2 .c-otera-cojin{fill:var(--fk-otera-cojin)} .fk-v2 .c-otera-cojin-osc{fill:var(--fk-otera-cojin-osc)} .fk-v2 .c-otera-ceniza{fill:var(--fk-otera-ceniza)} .fk-v2 .c-otera-senko{fill:var(--fk-otera-senko)} .fk-v2 .c-otera-brasa{fill:var(--fk-otera-brasa)} .fk-v2 .c-otera-cuenta{fill:var(--fk-otera-cuenta)} .fk-v2 .c-otera-cuenta-osc{fill:var(--fk-otera-cuenta-osc)} .fk-v2 .c-otera-borla{fill:var(--fk-otera-borla)} .fk-v2 .c-otera-borla-osc{fill:var(--fk-otera-borla-osc)} .fk-v2 .c-otera-piedra{fill:var(--fk-otera-piedra)} .fk-v2 .c-otera-piedra-osc{fill:var(--fk-otera-piedra-osc)} .fk-v2 .c-otera-piedra-cl{fill:var(--fk-otera-piedra-cl)} .fk-v2 .c-otera-luz{fill:var(--fk-otera-luz)} .fk-v2 .c-otera-musgo{fill:var(--fk-otera-musgo)} .fk-v2 .c-otera-buda{fill:var(--fk-otera-buda)} .fk-v2 .c-otera-buda-osc{fill:var(--fk-otera-buda-osc)} .fk-v2 .c-otera-buda-cl{fill:var(--fk-otera-buda-cl)} .fk-v2 .c-otera-buda-pelo{fill:var(--fk-otera-buda-pelo)} .fk-v2 .c-otera-loto{fill:var(--fk-otera-loto)} .fk-v2 .c-otera-loto-osc{fill:var(--fk-otera-loto-osc)} .fk-v2 .c-otera-loto-cl{fill:var(--fk-otera-loto-cl)} .fk-v2 .c-otera-estambre{fill:var(--fk-otera-estambre)} .fk-v2 .c-otera-llama{fill:var(--fk-otera-llama)} .fk-v2 .c-otera-llama-cl{fill:var(--fk-otera-llama-cl)} .fk-v2 .c-shodo-bambu{fill:var(--fk-shodo-bambu)} .fk-v2 .c-shodo-bambu-osc{fill:var(--fk-shodo-bambu-osc)} .fk-v2 .c-shodo-bambu-cl{fill:var(--fk-shodo-bambu-cl)} .fk-v2 .c-shodo-pelo{fill:var(--fk-shodo-pelo)} .fk-v2 .c-shodo-pelo-cl{fill:var(--fk-shodo-pelo-cl)} .fk-v2 .c-shodo-piedra{fill:var(--fk-shodo-piedra)} .fk-v2 .c-shodo-piedra-osc{fill:var(--fk-shodo-piedra-osc)} .fk-v2 .c-shodo-piedra-cl{fill:var(--fk-shodo-piedra-cl)} .fk-v2 .c-shodo-tinta{fill:var(--fk-shodo-tinta)} .fk-v2 .c-shodo-agua{fill:var(--fk-shodo-agua)} .fk-v2 .c-shodo-oro{fill:var(--fk-shodo-oro)} .fk-v2 .c-shodo-oro-osc{fill:var(--fk-shodo-oro-osc)} .fk-v2 .c-shodo-papel{fill:var(--fk-shodo-papel)} .fk-v2 .c-shodo-papel-osc{fill:var(--fk-shodo-papel-osc)} .fk-v2 .c-shodo-fieltro{fill:var(--fk-shodo-fieltro)} .fk-v2 .c-shodo-fieltro-osc{fill:var(--fk-shodo-fieltro-osc)} .fk-v2 .c-shodo-laton{fill:var(--fk-shodo-laton)} .fk-v2 .c-shodo-laton-osc{fill:var(--fk-shodo-laton-osc)} .fk-v2 .c-shodo-laton-cl{fill:var(--fk-shodo-laton-cl)} .fk-v2 .c-shodo-madera{fill:var(--fk-shodo-madera)} .fk-v2 .c-shodo-madera-osc{fill:var(--fk-shodo-madera-osc)} .fk-v2 .c-shodo-madera-cl{fill:var(--fk-shodo-madera-cl)} .fk-v2 .c-shodo-rojo{fill:var(--fk-shodo-rojo)} .fk-v2 .c-shodo-rojo-osc{fill:var(--fk-shodo-rojo-osc)} .fk-v2 .c-shodo-rojo-cl{fill:var(--fk-shodo-rojo-cl)} .fk-v2 .c-shodo-ceramica{fill:var(--fk-shodo-ceramica)} .fk-v2 .c-shodo-ceramica-osc{fill:var(--fk-shodo-ceramica-osc)} .fk-v2 .c-shodo-azul{fill:var(--fk-shodo-azul)} .fk-v2 .c-shodo-seda{fill:var(--fk-shodo-seda)} .fk-v2 .c-shodo-seda-osc{fill:var(--fk-shodo-seda-osc)} .fk-v2 .c-shodo-seda-cl{fill:var(--fk-shodo-seda-cl)} .fk-v2 .c-shodo-cordon{fill:var(--fk-shodo-cordon)} .fk-v2 .c-shodo-tanzaku{fill:var(--fk-shodo-tanzaku)} .fk-v2 .c-shodo-tanzaku-osc{fill:var(--fk-shodo-tanzaku-osc)} .fk-v2 .c-shodo-gris{fill:var(--fk-shodo-gris)} .fk-v2 .c-ongaku-madera{fill:var(--fk-ongaku-madera)} .fk-v2 .c-ongaku-madera-osc{fill:var(--fk-ongaku-madera-osc)} .fk-v2 .c-ongaku-madera-cl{fill:var(--fk-ongaku-madera-cl)} .fk-v2 .c-ongaku-cuero{fill:var(--fk-ongaku-cuero)} .fk-v2 .c-ongaku-cuero-osc{fill:var(--fk-ongaku-cuero-osc)} .fk-v2 .c-ongaku-laca{fill:var(--fk-ongaku-laca)} .fk-v2 .c-ongaku-laca-cl{fill:var(--fk-ongaku-laca-cl)} .fk-v2 .c-ongaku-rojo{fill:var(--fk-ongaku-rojo)} .fk-v2 .c-ongaku-rojo-osc{fill:var(--fk-ongaku-rojo-osc)} .fk-v2 .c-ongaku-oro{fill:var(--fk-ongaku-oro)} .fk-v2 .c-ongaku-oro-osc{fill:var(--fk-ongaku-oro-osc)} .fk-v2 .c-ongaku-bambu{fill:var(--fk-ongaku-bambu)} .fk-v2 .c-ongaku-bambu-osc{fill:var(--fk-ongaku-bambu-osc)} .fk-v2 .c-ongaku-bambu-cl{fill:var(--fk-ongaku-bambu-cl)} .fk-v2 .c-ongaku-cuerda{fill:var(--fk-ongaku-cuerda)} .fk-v2 .c-ongaku-puente{fill:var(--fk-ongaku-puente)} .fk-v2 .c-ongaku-kiri{fill:var(--fk-ongaku-kiri)} .fk-v2 .c-ongaku-kiri-osc{fill:var(--fk-ongaku-kiri-osc)} .fk-v2 .c-ongaku-cordon{fill:var(--fk-ongaku-cordon)} .fk-v2 .c-ongaku-cordon-osc{fill:var(--fk-ongaku-cordon-osc)} .fk-v2 .c-ongaku-azul{fill:var(--fk-ongaku-azul)} .fk-v2 .c-ongaku-plata{fill:var(--fk-ongaku-plata)} .fk-v2 .c-ongaku-plata-osc{fill:var(--fk-ongaku-plata-osc)} .fk-v2 .c-dobutsu-tanuki{fill:var(--fk-dobutsu-tanuki)} .fk-v2 .c-dobutsu-tanuki-osc{fill:var(--fk-dobutsu-tanuki-osc)} .fk-v2 .c-dobutsu-mascara{fill:var(--fk-dobutsu-mascara)} .fk-v2 .c-dobutsu-mascara-osc{fill:var(--fk-dobutsu-mascara-osc)} .fk-v2 .c-dobutsu-crema{fill:var(--fk-dobutsu-crema)} .fk-v2 .c-dobutsu-crema-osc{fill:var(--fk-dobutsu-crema-osc)} .fk-v2 .c-dobutsu-zorro{fill:var(--fk-dobutsu-zorro)} .fk-v2 .c-dobutsu-zorro-osc{fill:var(--fk-dobutsu-zorro-osc)} .fk-v2 .c-dobutsu-mono{fill:var(--fk-dobutsu-mono)} .fk-v2 .c-dobutsu-mono-osc{fill:var(--fk-dobutsu-mono-osc)} .fk-v2 .c-dobutsu-cara{fill:var(--fk-dobutsu-cara)} .fk-v2 .c-dobutsu-cara-osc{fill:var(--fk-dobutsu-cara-osc)} .fk-v2 .c-dobutsu-ciervo{fill:var(--fk-dobutsu-ciervo)} .fk-v2 .c-dobutsu-ciervo-osc{fill:var(--fk-dobutsu-ciervo-osc)} .fk-v2 .c-dobutsu-asta{fill:var(--fk-dobutsu-asta)} .fk-v2 .c-dobutsu-asta-osc{fill:var(--fk-dobutsu-asta-osc)} .fk-v2 .c-dobutsu-pico{fill:var(--fk-dobutsu-pico)} .fk-v2 .c-dobutsu-pico-osc{fill:var(--fk-dobutsu-pico-osc)} .fk-v2 .c-dobutsu-koi{fill:var(--fk-dobutsu-koi)} .fk-v2 .c-dobutsu-koi-osc{fill:var(--fk-dobutsu-koi-osc)} .fk-v2 .c-dobutsu-concha{fill:var(--fk-dobutsu-concha)} .fk-v2 .c-dobutsu-concha-osc{fill:var(--fk-dobutsu-concha-osc)} .fk-v2 .c-dobutsu-piel{fill:var(--fk-dobutsu-piel)} .fk-v2 .c-dobutsu-piel-osc{fill:var(--fk-dobutsu-piel-osc)} .fk-v2 .c-dobutsu-peto{fill:var(--fk-dobutsu-peto)} .fk-v2 .c-dobutsu-buho{fill:var(--fk-dobutsu-buho)} .fk-v2 .c-dobutsu-buho-osc{fill:var(--fk-dobutsu-buho-osc)} .fk-v2 .c-dobutsu-disco{fill:var(--fk-dobutsu-disco)} .fk-v2 .c-dobutsu-disco-osc{fill:var(--fk-dobutsu-disco-osc)} .fk-v2 .c-dobutsu-ojo{fill:var(--fk-dobutsu-ojo)} .fk-v2 .c-dobutsu-ojo-osc{fill:var(--fk-dobutsu-ojo-osc)} .fk-v2 .c-dobutsu-rana{fill:var(--fk-dobutsu-rana)} .fk-v2 .c-dobutsu-rana-osc{fill:var(--fk-dobutsu-rana-osc)} .fk-v2 .c-dobutsu-vientre{fill:var(--fk-dobutsu-vientre)} .fk-v2 .c-dobutsu-vientre-osc{fill:var(--fk-dobutsu-vientre-osc)} .fk-v2 .c-hana-sakura{fill:var(--fk-hana-sakura)} .fk-v2 .c-hana-sakura-osc{fill:var(--fk-hana-sakura-osc)} .fk-v2 .c-hana-sakura-centro{fill:var(--fk-hana-sakura-centro)} .fk-v2 .c-hana-ume{fill:var(--fk-hana-ume)} .fk-v2 .c-hana-ume-osc{fill:var(--fk-hana-ume-osc)} .fk-v2 .c-hana-ume-centro{fill:var(--fk-hana-ume-centro)} .fk-v2 .c-hana-estambre{fill:var(--fk-hana-estambre)} .fk-v2 .c-hana-rama{fill:var(--fk-hana-rama)} .fk-v2 .c-hana-rama-osc{fill:var(--fk-hana-rama-osc)} .fk-v2 .c-hana-momiji{fill:var(--fk-hana-momiji)} .fk-v2 .c-hana-momiji-osc{fill:var(--fk-hana-momiji-osc)} .fk-v2 .c-hana-fuji{fill:var(--fk-hana-fuji)} .fk-v2 .c-hana-fuji-osc{fill:var(--fk-hana-fuji-osc)} .fk-v2 .c-hana-fuji-cl{fill:var(--fk-hana-fuji-cl)} .fk-v2 .c-hana-fuji-boton{fill:var(--fk-hana-fuji-boton)} .fk-v2 .c-hana-asagao{fill:var(--fk-hana-asagao)} .fk-v2 .c-hana-asagao-osc{fill:var(--fk-hana-asagao-osc)} .fk-v2 .c-hana-asagao-cl{fill:var(--fk-hana-asagao-cl)} .fk-v2 .c-hana-kiku{fill:var(--fk-hana-kiku)} .fk-v2 .c-hana-kiku-osc{fill:var(--fk-hana-kiku-osc)} .fk-v2 .c-hana-kiku-centro{fill:var(--fk-hana-kiku-centro)} .fk-v2 .c-hana-take{fill:var(--fk-hana-take)} .fk-v2 .c-hana-take-osc{fill:var(--fk-hana-take-osc)} .fk-v2 .c-hana-take-nudo{fill:var(--fk-hana-take-nudo)} .fk-v2 .c-hana-take-hoja{fill:var(--fk-hana-take-hoja)} .fk-v2 .c-hana-matsu{fill:var(--fk-hana-matsu)} .fk-v2 .c-hana-matsu-osc{fill:var(--fk-hana-matsu-osc)} .fk-v2 .c-hana-tronco{fill:var(--fk-hana-tronco)} .fk-v2 .c-hana-tronco-osc{fill:var(--fk-hana-tronco-osc)} .fk-v2 .c-hana-tsubaki{fill:var(--fk-hana-tsubaki)} .fk-v2 .c-hana-tsubaki-osc{fill:var(--fk-hana-tsubaki-osc)} .fk-v2 .c-hana-hoja{fill:var(--fk-hana-hoja)} .fk-v2 .c-hana-hoja-osc{fill:var(--fk-hana-hoja-osc)} .fk-v2 .c-hana-ajisai{fill:var(--fk-hana-ajisai)} .fk-v2 .c-hana-ajisai-cl{fill:var(--fk-hana-ajisai-cl)} .fk-v2 .c-hana-ajisai-mor{fill:var(--fk-hana-ajisai-mor)} .fk-v2 .c-hana-ajisai-osc{fill:var(--fk-hana-ajisai-osc)} .fk-v2 .c-tabemono-cuenco{fill:var(--fk-tabemono-cuenco)} .fk-v2 .c-tabemono-cuenco-osc{fill:var(--fk-tabemono-cuenco-osc)} .fk-v2 .c-tabemono-cuenco-cl{fill:var(--fk-tabemono-cuenco-cl)} .fk-v2 .c-tabemono-loza{fill:var(--fk-tabemono-loza)} .fk-v2 .c-tabemono-loza-osc{fill:var(--fk-tabemono-loza-osc)} .fk-v2 .c-tabemono-azul{fill:var(--fk-tabemono-azul)} .fk-v2 .c-tabemono-caldo{fill:var(--fk-tabemono-caldo)} .fk-v2 .c-tabemono-caldo-osc{fill:var(--fk-tabemono-caldo-osc)} .fk-v2 .c-tabemono-miso{fill:var(--fk-tabemono-miso)} .fk-v2 .c-tabemono-miso-osc{fill:var(--fk-tabemono-miso-osc)} .fk-v2 .c-tabemono-fideo{fill:var(--fk-tabemono-fideo)} .fk-v2 .c-tabemono-fideo-osc{fill:var(--fk-tabemono-fideo-osc)} .fk-v2 .c-tabemono-soba{fill:var(--fk-tabemono-soba)} .fk-v2 .c-tabemono-soba-osc{fill:var(--fk-tabemono-soba-osc)} .fk-v2 .c-tabemono-udon{fill:var(--fk-tabemono-udon)} .fk-v2 .c-tabemono-udon-osc{fill:var(--fk-tabemono-udon-osc)} .fk-v2 .c-tabemono-chashu{fill:var(--fk-tabemono-chashu)} .fk-v2 .c-tabemono-chashu-osc{fill:var(--fk-tabemono-chashu-osc)} .fk-v2 .c-tabemono-yema{fill:var(--fk-tabemono-yema)} .fk-v2 .c-tabemono-cebolleta{fill:var(--fk-tabemono-cebolleta)} .fk-v2 .c-tabemono-naruto{fill:var(--fk-tabemono-naruto)} .fk-v2 .c-tabemono-rebozado{fill:var(--fk-tabemono-rebozado)} .fk-v2 .c-tabemono-rebozado-osc{fill:var(--fk-tabemono-rebozado-osc)} .fk-v2 .c-tabemono-gamba{fill:var(--fk-tabemono-gamba)} .fk-v2 .c-tabemono-tofu{fill:var(--fk-tabemono-tofu)} .fk-v2 .c-tabemono-tofu-osc{fill:var(--fk-tabemono-tofu-osc)} .fk-v2 .c-tabemono-natto{fill:var(--fk-tabemono-natto)} .fk-v2 .c-tabemono-natto-osc{fill:var(--fk-tabemono-natto-osc)} .fk-v2 .c-tabemono-hebra{fill:var(--fk-tabemono-hebra)} .fk-v2 .c-tabemono-daikon{fill:var(--fk-tabemono-daikon)} .fk-v2 .c-tabemono-daikon-osc{fill:var(--fk-tabemono-daikon-osc)} .fk-v2 .c-tabemono-konnyaku{fill:var(--fk-tabemono-konnyaku)} .fk-v2 .c-tabemono-konnyaku-osc{fill:var(--fk-tabemono-konnyaku-osc)} .fk-v2 .c-tabemono-huevo-oden{fill:var(--fk-tabemono-huevo-oden)} .fk-v2 .c-tabemono-huevo-oden-osc{fill:var(--fk-tabemono-huevo-oden-osc)} .fk-v2 .c-tabemono-pasta{fill:var(--fk-tabemono-pasta)} .fk-v2 .c-tabemono-ternera{fill:var(--fk-tabemono-ternera)} .fk-v2 .c-tabemono-ternera-osc{fill:var(--fk-tabemono-ternera-osc)} .fk-v2 .c-tabemono-grasa{fill:var(--fk-tabemono-grasa)} .fk-v2 .c-tabemono-olla{fill:var(--fk-tabemono-olla)} .fk-v2 .c-tabemono-olla-osc{fill:var(--fk-tabemono-olla-osc)} .fk-v2 .c-tabemono-shiitake{fill:var(--fk-tabemono-shiitake)} .fk-v2 .c-tabemono-negi{fill:var(--fk-tabemono-negi)} .fk-v2 .c-tabemono-wakame{fill:var(--fk-tabemono-wakame)} .fk-v2 .c-tabemono-mimbre{fill:var(--fk-tabemono-mimbre)} .fk-v2 .c-tabemono-caldo-cl{fill:var(--fk-tabemono-caldo-cl)} .fk-v2 .c-tabemono-caldo-cl-osc{fill:var(--fk-tabemono-caldo-cl-osc)} .fk-v2 .c-tabemono-soba-cl{fill:var(--fk-tabemono-soba-cl)} .fk-v2 .c-tabemono-soba-cl-osc{fill:var(--fk-tabemono-soba-cl-osc)} .fk-v2 .c-tabemono-calabaza{fill:var(--fk-tabemono-calabaza)} .fk-v2 .c-tabemono-calabaza-piel{fill:var(--fk-tabemono-calabaza-piel)} .fk-v2 .c-ocha-matcha{fill:var(--fk-ocha-matcha)} .fk-v2 .c-ocha-matcha-osc{fill:var(--fk-ocha-matcha-osc)} .fk-v2 .c-ocha-espuma{fill:var(--fk-ocha-espuma)} .fk-v2 .c-ocha-bambu{fill:var(--fk-ocha-bambu)} .fk-v2 .c-ocha-bambu-osc{fill:var(--fk-ocha-bambu-osc)} .fk-v2 .c-ocha-bambu-cl{fill:var(--fk-ocha-bambu-cl)} .fk-v2 .c-ocha-barro{fill:var(--fk-ocha-barro)} .fk-v2 .c-ocha-barro-osc{fill:var(--fk-ocha-barro-osc)} .fk-v2 .c-ocha-barro-in{fill:var(--fk-ocha-barro-in)} .fk-v2 .c-ocha-vidriado{fill:var(--fk-ocha-vidriado)} .fk-v2 .c-ocha-vidriado-osc{fill:var(--fk-ocha-vidriado-osc)} .fk-v2 .c-ocha-hierro{fill:var(--fk-ocha-hierro)} .fk-v2 .c-ocha-hierro-osc{fill:var(--fk-ocha-hierro-osc)} .fk-v2 .c-ocha-hierro-cl{fill:var(--fk-ocha-hierro-cl)} .fk-v2 .c-ocha-ai{fill:var(--fk-ocha-ai)} .fk-v2 .c-ocha-ai-osc{fill:var(--fk-ocha-ai-osc)} .fk-v2 .c-ocha-hinoki{fill:var(--fk-ocha-hinoki)} .fk-v2 .c-ocha-hinoki-osc{fill:var(--fk-ocha-hinoki-osc)} .fk-v2 .c-ocha-hinoki-cl{fill:var(--fk-ocha-hinoki-cl)} .fk-v2 .c-ocha-sake{fill:var(--fk-ocha-sake)} .fk-v2 .c-ocha-vidrio{fill:var(--fk-ocha-vidrio)} .fk-v2 .c-ocha-vidrio-osc{fill:var(--fk-ocha-vidrio-osc)} .fk-v2 .c-ocha-vidrio-cl{fill:var(--fk-ocha-vidrio-cl)} .fk-v2 .c-ocha-tapon{fill:var(--fk-ocha-tapon)} .fk-v2 .c-ocha-tapon-osc{fill:var(--fk-ocha-tapon-osc)} .fk-v2 .c-ocha-umeshu{fill:var(--fk-ocha-umeshu)} .fk-v2 .c-ocha-umeshu-osc{fill:var(--fk-ocha-umeshu-osc)} .fk-v2 .c-ocha-ume{fill:var(--fk-ocha-ume)} .fk-v2 .c-ocha-ume-osc{fill:var(--fk-ocha-ume-osc)} .fk-v2 .c-ocha-oro{fill:var(--fk-ocha-oro)} .fk-v2 .c-machi-azul{fill:var(--fk-machi-azul)} .fk-v2 .c-machi-azul-osc{fill:var(--fk-machi-azul-osc)} .fk-v2 .c-machi-cristal{fill:var(--fk-machi-cristal)} .fk-v2 .c-machi-cristal-cl{fill:var(--fk-machi-cristal-cl)} .fk-v2 .c-machi-gris{fill:var(--fk-machi-gris)} .fk-v2 .c-machi-gris-osc{fill:var(--fk-machi-gris-osc)} .fk-v2 .c-machi-gris-cl{fill:var(--fk-machi-gris-cl)} .fk-v2 .c-machi-naranja{fill:var(--fk-machi-naranja)} .fk-v2 .c-machi-naranja-osc{fill:var(--fk-machi-naranja-osc)} .fk-v2 .c-machi-verde{fill:var(--fk-machi-verde)} .fk-v2 .c-machi-verde-osc{fill:var(--fk-machi-verde-osc)} .fk-v2 .c-machi-laca{fill:var(--fk-machi-laca)} .fk-v2 .c-machi-rojo{fill:var(--fk-machi-rojo)} .fk-v2 .c-machi-rojo-osc{fill:var(--fk-machi-rojo-osc)} .fk-v2 .c-machi-madera{fill:var(--fk-machi-madera)} .fk-v2 .c-machi-madera-osc{fill:var(--fk-machi-madera-osc)} .fk-v2 .c-machi-madera-cl{fill:var(--fk-machi-madera-cl)} .fk-v2 .c-machi-tela{fill:var(--fk-machi-tela)} .fk-v2 .c-machi-tela-osc{fill:var(--fk-machi-tela-osc)} .fk-v2 .c-machi-luz{fill:var(--fk-machi-luz)} .fk-v2 .c-machi-lata-r{fill:var(--fk-machi-lata-r)} .fk-v2 .c-machi-lata-v{fill:var(--fk-machi-lata-v)} .fk-v2 .c-machi-lata-n{fill:var(--fk-machi-lata-n)} .fk-v2 .c-machi-lata-a{fill:var(--fk-machi-lata-a)} .fk-v2 .c-machi-lata-m{fill:var(--fk-machi-lata-m)} .fk-v2 .c-machi-pared{fill:var(--fk-machi-pared)} .fk-v2 .c-machi-pared-osc{fill:var(--fk-machi-pared-osc)} .fk-v2 .c-machi-teja{fill:var(--fk-machi-teja)} .fk-v2 .c-machi-teja-osc{fill:var(--fk-machi-teja-osc)} .fk-v2 .c-machi-estrella{fill:var(--fk-machi-estrella)} .fk-v2 .c-machi-monte{fill:var(--fk-machi-monte)} .fk-v2 .c-machi-monte-osc{fill:var(--fk-machi-monte-osc)} .fk-v2 .c-machi-nieve{fill:var(--fk-machi-nieve)} .fk-v2 .c-machi-nieve-osc{fill:var(--fk-machi-nieve-osc)} .fk-v2 .c-machi-sol{fill:var(--fk-machi-sol)} .fk-v2 .c-machi-agua{fill:var(--fk-machi-agua)} .fk-v2 .c-machi-agua-osc{fill:var(--fk-machi-agua-osc)} .fk-v2 .c-machi-shu{fill:var(--fk-machi-shu)} .fk-v2 .c-machi-shu-osc{fill:var(--fk-machi-shu-osc)} .fk-v2 .c-machi-oro{fill:var(--fk-machi-oro)} .fk-v2 .c-daidokoro-laca{fill:var(--fk-daidokoro-laca)} .fk-v2 .c-daidokoro-laca-cl{fill:var(--fk-daidokoro-laca-cl)} .fk-v2 .c-daidokoro-bermellon{fill:var(--fk-daidokoro-bermellon)} .fk-v2 .c-daidokoro-bermellon-osc{fill:var(--fk-daidokoro-bermellon-osc)} .fk-v2 .c-daidokoro-madera{fill:var(--fk-daidokoro-madera)} .fk-v2 .c-daidokoro-madera-osc{fill:var(--fk-daidokoro-madera-osc)} .fk-v2 .c-daidokoro-madera-cl{fill:var(--fk-daidokoro-madera-cl)} .fk-v2 .c-daidokoro-hinoki{fill:var(--fk-daidokoro-hinoki)} .fk-v2 .c-daidokoro-hinoki-osc{fill:var(--fk-daidokoro-hinoki-osc)} .fk-v2 .c-daidokoro-porcelana{fill:var(--fk-daidokoro-porcelana)} .fk-v2 .c-daidokoro-ai{fill:var(--fk-daidokoro-ai)} .fk-v2 .c-daidokoro-ai-osc{fill:var(--fk-daidokoro-ai-osc)} .fk-v2 .c-daidokoro-arroz{fill:var(--fk-daidokoro-arroz)} .fk-v2 .c-daidokoro-huevo{fill:var(--fk-daidokoro-huevo)} .fk-v2 .c-daidokoro-huevo-osc{fill:var(--fk-daidokoro-huevo-osc)} .fk-v2 .c-daidokoro-cerdo{fill:var(--fk-daidokoro-cerdo)} .fk-v2 .c-daidokoro-cerdo-osc{fill:var(--fk-daidokoro-cerdo-osc)} .fk-v2 .c-daidokoro-cebolleta{fill:var(--fk-daidokoro-cebolleta)} .fk-v2 .c-daidokoro-ume{fill:var(--fk-daidokoro-ume)} .fk-v2 .c-daidokoro-salmon{fill:var(--fk-daidokoro-salmon)} .fk-v2 .c-daidokoro-brocoli{fill:var(--fk-daidokoro-brocoli)} .fk-v2 .c-daidokoro-tamago{fill:var(--fk-daidokoro-tamago)} .fk-v2 .c-daidokoro-barro{fill:var(--fk-daidokoro-barro)} .fk-v2 .c-daidokoro-barro-osc{fill:var(--fk-daidokoro-barro-osc)} .fk-v2 .c-daidokoro-peine{fill:var(--fk-daidokoro-peine)} .fk-v2 .c-daidokoro-sesamo{fill:var(--fk-daidokoro-sesamo)} .fk-v2 .c-daidokoro-acero{fill:var(--fk-daidokoro-acero)} .fk-v2 .c-daidokoro-acero-osc{fill:var(--fk-daidokoro-acero-osc)} .fk-v2 .c-daidokoro-acero-cl{fill:var(--fk-daidokoro-acero-cl)} .fk-v2 .c-daidokoro-filo{fill:var(--fk-daidokoro-filo)} .fk-v2 .c-daidokoro-hierro{fill:var(--fk-daidokoro-hierro)} .fk-v2 .c-daidokoro-hierro-osc{fill:var(--fk-daidokoro-hierro-osc)} .fk-v2 .c-daidokoro-cobre{fill:var(--fk-daidokoro-cobre)} .fk-v2 .c-daidokoro-cobre-osc{fill:var(--fk-daidokoro-cobre-osc)} .fk-v2 .c-daidokoro-tomate{fill:var(--fk-daidokoro-tomate)} .fk-v2 .c-daidokoro-pepino{fill:var(--fk-daidokoro-pepino)} .fk-v2 .c-daidokoro-pepino-cl{fill:var(--fk-daidokoro-pepino-cl)} .fk-v2 .c-daidokoro-te{fill:var(--fk-daidokoro-te)} .fk-v2 .c-samurai-oro{fill:var(--fk-samurai-oro)} .fk-v2 .c-samurai-oro-osc{fill:var(--fk-samurai-oro-osc)} .fk-v2 .c-samurai-hierro{fill:var(--fk-samurai-hierro)} .fk-v2 .c-samurai-hierro-osc{fill:var(--fk-samurai-hierro-osc)} .fk-v2 .c-samurai-ito{fill:var(--fk-samurai-ito)} .fk-v2 .c-samurai-ito-osc{fill:var(--fk-samurai-ito-osc)} .fk-v2 .c-samurai-acero{fill:var(--fk-samurai-acero)} .fk-v2 .c-samurai-acero-osc{fill:var(--fk-samurai-acero-osc)} .fk-v2 .c-samurai-acero-cl{fill:var(--fk-samurai-acero-cl)} .fk-v2 .c-samurai-rojo{fill:var(--fk-samurai-rojo)} .fk-v2 .c-samurai-rojo-osc{fill:var(--fk-samurai-rojo-osc)} .fk-v2 .c-samurai-ai{fill:var(--fk-samurai-ai)} .fk-v2 .c-samurai-ai-osc{fill:var(--fk-samurai-ai-osc)} .fk-v2 .c-samurai-madera{fill:var(--fk-samurai-madera)} .fk-v2 .c-samurai-madera-osc{fill:var(--fk-samurai-madera-osc)} .fk-v2 .c-samurai-bambu{fill:var(--fk-samurai-bambu)} .fk-v2 .c-samurai-bambu-osc{fill:var(--fk-samurai-bambu-osc)} .fk-v2 .c-samurai-piedra{fill:var(--fk-samurai-piedra)} .fk-v2 .c-samurai-piedra-osc{fill:var(--fk-samurai-piedra-osc)} .fk-v2 .c-samurai-teja{fill:var(--fk-samurai-teja)} .fk-v2 .c-samurai-teja-osc{fill:var(--fk-samurai-teja-osc)} .fk-v2 .c-samurai-concha{fill:var(--fk-samurai-concha)} .fk-v2 .c-samurai-concha-osc{fill:var(--fk-samurai-concha-osc)} .fk-v2 .c-samurai-mancha{fill:var(--fk-samurai-mancha)} .fk-v2 .c-samurai-nacar{fill:var(--fk-samurai-nacar)} .fk-v2 .c-samurai-nacar-osc{fill:var(--fk-samurai-nacar-osc)} .fk-v2 .c-samurai-laca{fill:var(--fk-samurai-laca)} .fk-v2 .c-samurai-laca-osc{fill:var(--fk-samurai-laca-osc)} .fk-v2 .c-samurai-cuero{fill:var(--fk-samurai-cuero)} .fk-v2 .c-kisetsu-koi-rojo{fill:var(--fk-kisetsu-koi-rojo)} .fk-v2 .c-kisetsu-koi-rojo-osc{fill:var(--fk-kisetsu-koi-rojo-osc)} .fk-v2 .c-kisetsu-koi-azul{fill:var(--fk-kisetsu-koi-azul)} .fk-v2 .c-kisetsu-koi-azul-osc{fill:var(--fk-kisetsu-koi-azul-osc)} .fk-v2 .c-kisetsu-oro{fill:var(--fk-kisetsu-oro)} .fk-v2 .c-kisetsu-oro-osc{fill:var(--fk-kisetsu-oro-osc)} .fk-v2 .c-kisetsu-madera{fill:var(--fk-kisetsu-madera)} .fk-v2 .c-kisetsu-madera-osc{fill:var(--fk-kisetsu-madera-osc)} .fk-v2 .c-kisetsu-bambu{fill:var(--fk-kisetsu-bambu)} .fk-v2 .c-kisetsu-bambu-osc{fill:var(--fk-kisetsu-bambu-osc)} .fk-v2 .c-kisetsu-tira-a{fill:var(--fk-kisetsu-tira-a)} .fk-v2 .c-kisetsu-tira-b{fill:var(--fk-kisetsu-tira-b)} .fk-v2 .c-kisetsu-tira-c{fill:var(--fk-kisetsu-tira-c)} .fk-v2 .c-kisetsu-tira-d{fill:var(--fk-kisetsu-tira-d)} .fk-v2 .c-kisetsu-tira-e{fill:var(--fk-kisetsu-tira-e)} .fk-v2 .c-kisetsu-luna{fill:var(--fk-kisetsu-luna)} .fk-v2 .c-kisetsu-luna-osc{fill:var(--fk-kisetsu-luna-osc)} .fk-v2 .c-kisetsu-cielo{fill:var(--fk-kisetsu-cielo)} .fk-v2 .c-kisetsu-susuki{fill:var(--fk-kisetsu-susuki)} .fk-v2 .c-kisetsu-susuki-osc{fill:var(--fk-kisetsu-susuki-osc)} .fk-v2 .c-kisetsu-hina-rojo{fill:var(--fk-kisetsu-hina-rojo)} .fk-v2 .c-kisetsu-hina-rojo-osc{fill:var(--fk-kisetsu-hina-rojo-osc)} .fk-v2 .c-kisetsu-hina-mora{fill:var(--fk-kisetsu-hina-mora)} .fk-v2 .c-kisetsu-hina-mora-osc{fill:var(--fk-kisetsu-hina-mora-osc)} .fk-v2 .c-kisetsu-hina-verde{fill:var(--fk-kisetsu-hina-verde)} .fk-v2 .c-kisetsu-piel{fill:var(--fk-kisetsu-piel)} .fk-v2 .c-kisetsu-pelo{fill:var(--fk-kisetsu-pelo)} .fk-v2 .c-kisetsu-oni{fill:var(--fk-kisetsu-oni)} .fk-v2 .c-kisetsu-oni-osc{fill:var(--fk-kisetsu-oni-osc)} .fk-v2 .c-kisetsu-cuerno{fill:var(--fk-kisetsu-cuerno)} .fk-v2 .c-kisetsu-cuerno-osc{fill:var(--fk-kisetsu-cuerno-osc)} .fk-v2 .c-kisetsu-mame{fill:var(--fk-kisetsu-mame)} .fk-v2 .c-kisetsu-mame-osc{fill:var(--fk-kisetsu-mame-osc)} .fk-v2 .c-kisetsu-luz{fill:var(--fk-kisetsu-luz)} .fk-v2 .c-kisetsu-luz-osc{fill:var(--fk-kisetsu-luz-osc)} .fk-v2 .c-kisetsu-halo{fill:var(--fk-kisetsu-halo)} .fk-v2 .c-kisetsu-semi{fill:var(--fk-kisetsu-semi)} .fk-v2 .c-kisetsu-semi-osc{fill:var(--fk-kisetsu-semi-osc)} .fk-v2 .c-kisetsu-ala{fill:var(--fk-kisetsu-ala)} .fk-v2 .c-kisetsu-ala-osc{fill:var(--fk-kisetsu-ala-osc)} .fk-v2 .c-kisetsu-vena{fill:var(--fk-kisetsu-vena)} .fk-v2 .c-kisetsu-sandia{fill:var(--fk-kisetsu-sandia)} .fk-v2 .c-kisetsu-sandia-osc{fill:var(--fk-kisetsu-sandia-osc)} .fk-v2 .c-kisetsu-raya{fill:var(--fk-kisetsu-raya)} .fk-v2 .c-kisetsu-pulpa{fill:var(--fk-kisetsu-pulpa)} .fk-v2 .c-kisetsu-pulpa-osc{fill:var(--fk-kisetsu-pulpa-osc)} .fk-v2 .c-kisetsu-corteza{fill:var(--fk-kisetsu-corteza)} .fk-v2 .c-kisetsu-nieve{fill:var(--fk-kisetsu-nieve)} .fk-v2 .c-kisetsu-nieve-osc{fill:var(--fk-kisetsu-nieve-osc)} .fk-v2 .c-kisetsu-cubo{fill:var(--fk-kisetsu-cubo)} .fk-v2 .c-kisetsu-cubo-osc{fill:var(--fk-kisetsu-cubo-osc)} .fk-v2 .c-yado-agua{fill:var(--fk-yado-agua)} .fk-v2 .c-yado-agua-osc{fill:var(--fk-yado-agua-osc)} .fk-v2 .c-yado-agua-cl{fill:var(--fk-yado-agua-cl)} .fk-v2 .c-yado-piedra{fill:var(--fk-yado-piedra)} .fk-v2 .c-yado-piedra-osc{fill:var(--fk-yado-piedra-osc)} .fk-v2 .c-yado-piedra-cl{fill:var(--fk-yado-piedra-cl)} .fk-v2 .c-yado-madera{fill:var(--fk-yado-madera)} .fk-v2 .c-yado-madera-osc{fill:var(--fk-yado-madera-osc)} .fk-v2 .c-yado-madera-cl{fill:var(--fk-yado-madera-cl)} .fk-v2 .c-yado-hinoki{fill:var(--fk-yado-hinoki)} .fk-v2 .c-yado-hinoki-osc{fill:var(--fk-yado-hinoki-osc)} .fk-v2 .c-yado-cobre{fill:var(--fk-yado-cobre)} .fk-v2 .c-yado-cobre-osc{fill:var(--fk-yado-cobre-osc)} .fk-v2 .c-yado-ai{fill:var(--fk-yado-ai)} .fk-v2 .c-yado-ai-osc{fill:var(--fk-yado-ai-osc)} .fk-v2 .c-yado-ai-cl{fill:var(--fk-yado-ai-cl)} .fk-v2 .c-yado-obi{fill:var(--fk-yado-obi)} .fk-v2 .c-yado-obi-osc{fill:var(--fk-yado-obi-osc)} .fk-v2 .c-yado-brasa{fill:var(--fk-yado-brasa)} .fk-v2 .c-yado-brasa-cl{fill:var(--fk-yado-brasa-cl)} .fk-v2 .c-yado-ceniza{fill:var(--fk-yado-ceniza)} .fk-v2 .c-yado-ceniza-osc{fill:var(--fk-yado-ceniza-osc)} .fk-v2 .c-yado-hierro{fill:var(--fk-yado-hierro)} .fk-v2 .c-yado-hierro-osc{fill:var(--fk-yado-hierro-osc)} .fk-v2 .c-yado-ceramica{fill:var(--fk-yado-ceramica)} .fk-v2 .c-yado-ceramica-osc{fill:var(--fk-yado-ceramica-osc)} .fk-v2 .c-yado-bambu{fill:var(--fk-yado-bambu)} .fk-v2 .c-yado-bambu-osc{fill:var(--fk-yado-bambu-osc)} .fk-v2 .c-yado-bambu-cl{fill:var(--fk-yado-bambu-cl)} .fk-v2 .c-yado-paja{fill:var(--fk-yado-paja)} .fk-v2 .c-yado-paja-osc{fill:var(--fk-yado-paja-osc)} .fk-v2 .c-yado-musgo{fill:var(--fk-yado-musgo)} .fk-v2 .c-yado-musgo-osc{fill:var(--fk-yado-musgo-osc)} .fk-v2 .c-yado-pino{fill:var(--fk-yado-pino)} .fk-v2 .c-yado-pino-osc{fill:var(--fk-yado-pino-osc)} .fk-v2 .c-yado-arce{fill:var(--fk-yado-arce)} .fk-v2 .c-yado-oro{fill:var(--fk-yado-oro)} .fk-v2 .c-yado-oro-osc{fill:var(--fk-yado-oro-osc)} .fk-v2 .c-yado-fusuma{fill:var(--fk-yado-fusuma)} .fk-v2 .c-yado-fusuma-osc{fill:var(--fk-yado-fusuma-osc)} .fk-v2 .c-yado-monte{fill:var(--fk-yado-monte)} .fk-v2 .c-yado-monte-osc{fill:var(--fk-yado-monte-osc)} .fk-v2 .c-yado-vapor{fill:var(--fk-yado-vapor)}
  .fk-v2 .c-fuji{fill:var(--fk-fuji)} .fk-v2 .c-fuji-osc{fill:var(--fk-fuji-osc)} .fk-v2 .c-fuji-veta{fill:var(--fk-fuji-veta)} .fk-v2 .c-fuji-nieve{fill:var(--fk-fuji-nieve)} .fk-v2 .c-fuji-nieve-osc{fill:var(--fk-fuji-nieve-osc)} .fk-v2 .c-fuji-sol{fill:var(--fk-fuji-sol)} .fk-v2 .c-fuji-lago{fill:var(--fk-fuji-lago)} .fk-v2 .c-fuji-reflejo{fill:var(--fk-fuji-reflejo)}
  .fk-v2 .c-brillo{opacity:.9}
  .fk-v2 .xnori{fill:none;stroke:var(--fk-nori-brillo);stroke-width:1;opacity:.6}
  /* la colección */
  .fk-h{font-family:'Shippori Mincho',serif;font-size:1.15rem;margin:22px 0 0;display:flex;align-items:baseline;gap:8px;}
  .fk-h small{font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--gris-osc);font-weight:400;}
  .fk-serie-t{display:flex;justify-content:space-between;font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--gris-osc);margin:14px 0 6px;}
  .fk-balda{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding-bottom:8px;border-bottom:6px solid var(--fk-madera);position:relative;}
  .fk-mini{aspect-ratio:4/5;max-width:100%;min-width:0;border:1px solid var(--line);border-radius:4px;background:var(--papel);display:flex;flex-direction:column;align-items:center;justify-content:center;
    padding:3px;cursor:pointer;font-family:'Shippori Mincho',serif;font-size:.6rem;color:var(--sumi);gap:1px;position:relative;}
  .fk-mini svg{width:100%;height:auto;max-width:50px;}
  .fk-mini small{font-family:'Zen Maru Gothic',sans-serif;font-size:.6rem;color:var(--kincha-osc);}
  .fk-mini:focus-visible{outline:2px solid var(--ai);outline-offset:2px;}
  .fk-mini.no{background:var(--washi-deep);border-style:dashed;cursor:default;} .fk-mini.no svg{opacity:.14;}
  .fk-mini.no b{position:absolute;top:22%;font-family:'Shippori Mincho',serif;font-size:1rem;color:var(--gris);}
  .fk-mini.oro{border:1.5px solid var(--rc-oro);background:color-mix(in srgb, var(--rc-oro) 12%, var(--papel));}
  .fk-mini.oro::after{content:'金';position:absolute;top:-7px;right:-5px;font-family:'Shippori Mincho',serif;font-weight:700;font-size:.66rem;background:var(--rc-oro);color:var(--papel);border-radius:50%;width:18px;height:18px;display:flex;align-items:center;justify-content:center;}
  @media (prefers-reduced-motion:reduce){ .est-farol, .fk-farol, .fk-halo, .fk-resplandor, .fk-campana.toca, .fk-karan.toca, .fk-ficha.entra, .fk-saldo.sube{animation:none !important;} }
  /* ---- Estantería, fase 3 «Apertura» (js/motor/omikuji.js → Estanteria.abrirLibro/cerrarLibro) ----
     El 御朱印帳 se despliega en acordeón y la おみくじ帳 abre la tapa sobre el lomo cosido. Solo transform y opacity. */
  .f3-abre{position:fixed;inset:0;z-index:70;perspective:1600px;cursor:pointer;-webkit-tap-highlight-color:transparent;}
  .f3-fondo{position:absolute;inset:0;background:var(--washi);opacity:0;}
  .f3-libro{position:absolute;transform-origin:0 0;transform-style:preserve-3d;}
  .f3-hoja{position:absolute;left:0;top:0;width:100%;height:100%;transform-origin:0 50%;transform-style:preserve-3d;}
  .f3-h2, .f3-h3{left:100%;}
  .f3-pag, .f3-pag-dorso{position:absolute;inset:0;background:var(--papel);border:1.5px solid var(--est-tinta);backface-visibility:hidden;-webkit-backface-visibility:hidden;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6%;overflow:hidden;}
  .f3-pag-dorso{transform:rotateY(180deg);}
  /* el pliegue del acordeón: una sombra suave junto a cada doblez */
  .f3-acordeon .f3-pag{background-image:linear-gradient(90deg, rgba(0,0,0,.09), transparent 14%, transparent 88%, rgba(0,0,0,.05));}
  .f3-acordeon .f3-pag-dorso{background-image:linear-gradient(270deg, rgba(0,0,0,.09), transparent 14%);}
  .f3-pag .f3-col{font-family:'Shippori Mincho',serif;font-weight:700;color:var(--sumi);font-size:clamp(.6rem, 2.6vw, .9rem);display:flex;flex-direction:column;align-items:center;line-height:1.15;opacity:.85;}
  .f3-pag .f3-col i{font-style:normal;display:block;}
  .f3-sello{width:58%;aspect-ratio:1;}
  .f3-sello svg{width:100%;height:100%;display:block;}
  .f3-vacia{width:58%;aspect-ratio:1;}
  /* tapa: cara de tela (la misma de la estantería) y, por dentro, el forro de papel con el borde de la tela doblada */
  .f3-tapa{position:absolute;inset:0;transform-origin:0 50%;transform-style:preserve-3d;}
  .f3-tapa .est-cara{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;}
  .f3-tapa .est-titulo{font-size:clamp(.8rem, 3.2vw, 1.05rem);}
  .f3-forro{position:absolute;inset:0;transform:rotateY(180deg);backface-visibility:hidden;-webkit-backface-visibility:hidden;
    background:var(--papel);border:2px solid var(--est-tinta);border-radius:7px 3px 3px 7px;}
  .f3-libro.est-sellos .f3-forro{box-shadow:inset 0 0 0 7px var(--est-tela-sellos), inset 0 0 0 8.5px var(--est-tinta);}
  .f3-libro.est-omikuji .f3-forro{box-shadow:inset 0 0 0 7px var(--est-tela-omikuji), inset 0 0 0 8.5px var(--est-tinta);}
  .f3-cosido{position:absolute;left:0;top:0;height:100%;width:auto;overflow:visible;pointer-events:none;}
  .f3-cosido *{vector-effect:non-scaling-stroke;}
  .f3-lomo{fill:rgba(0,0,0,.18);}
  .f3-hilo-borde{fill:none;stroke:var(--est-tinta);stroke-width:3.4;} .f3-hilo{fill:none;stroke:var(--est-hilo);stroke-width:1.6;}
  /* omikuji: líneas suaves en las hojas y las ranuras de la colección */
  .f3-rayas{background-image:repeating-linear-gradient(transparent 0 15px, color-mix(in srgb, var(--line) 70%, transparent) 15px 16px);}
  .f3-rejilla{display:grid;grid-template-columns:repeat(2, 1fr);gap:6%;width:54%;}
  .f3-ranura{aspect-ratio:.68;border:1.5px dashed var(--line);border-radius:3px;}
  .f3-ranura.llena{border:1.5px solid var(--est-tinta);background:var(--est-papelito);display:flex;align-items:center;justify-content:center;
    font-family:'Shippori Mincho',serif;font-weight:700;color:var(--shu);font-size:clamp(.7rem, 3vw, 1rem);}

  @media (prefers-reduced-motion:no-preference){
    .omk-caja.agita{animation:omk-agita .5s ease-in-out 2;}
    .omk-palo{transition:transform .75s cubic-bezier(.25,1.25,.45,1);}
    .omk-caja.abierta .omk-hoja-top{animation:omk-vuela 1s ease-in forwards;}
    .omk-papel.abre .omk-hoja{animation:omk-desenrolla .65s cubic-bezier(.3,.9,.3,1) both;}
    .omk-papel.abre .omk-hoja > *{animation:omk-tinta .5s ease-out both;}
    .omk-papel.abre .omk-suerte{animation:omk-sello .5s cubic-bezier(.3,1.5,.5,1) .35s both;}
    .omk-papel.abre .omk-frase{animation-delay:.55s;} .omk-papel.abre .omk-kana, .omk-papel.abre .omk-rom{animation-delay:.65s;} .omk-papel.abre .omk-es{animation-delay:.75s;} .omk-papel.abre .omk-col{animation-delay:1.42s;}
    .omk-mini.pop{animation:omk-pop .45s cubic-bezier(.3,1.6,.5,1);}
    .omk-album .omk-ranura{animation:omk-tinta .4s ease-out both;}
  }
  @keyframes omk-agita{0%,100%{transform:rotate(0)}20%{transform:rotate(-12deg) translateY(-2px)}40%{transform:rotate(10deg)}60%{transform:rotate(-8deg) translateY(-1px)}80%{transform:rotate(6deg)}}
  @keyframes omk-desenrolla{0%{transform:scaleY(.04);opacity:.4}60%{opacity:1}100%{transform:scaleY(1)}}
  @keyframes omk-tinta{0%{opacity:0;transform:translateY(4px)}100%{opacity:1;transform:none}}
  @keyframes omk-sello{0%{opacity:0;transform:scale(1.8)}100%{opacity:1;transform:scale(1)}}
  @keyframes omk-pop{0%{transform:scale(1)}40%{transform:scale(1.18) rotate(-4deg)}100%{transform:scale(1)}}
  .kana-intro{text-align:left;align-items:stretch;}
  .kana-intro .kana-big{text-align:center;font-size:4.5rem;}
  .kana-intro-h{font-family:'Shippori Mincho',serif;font-size:1.5rem;color:var(--ai-deep);text-align:center;margin:0 0 10px;}
  .kana-intro p{font-family:'Zen Maru Gothic',sans-serif;font-size:.98rem;line-height:1.6;margin:0 0 10px;max-width:46ch;align-self:center;}
  .kana-comp .comp-row{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:10px 0 4px;}
  .comp-k{display:flex;flex-direction:column;align-items:center;gap:3px;width:118px;padding:10px 6px 12px;border:1px solid var(--line);border-radius:12px;background:var(--papel);font-family:'Zen Maru Gothic',sans-serif;}
  .comp-big{font-family:var(--letra-mano);font-size:3.4rem;line-height:1.1;color:var(--sumi);}
  .comp-k b{font-family:'Shippori Mincho',serif;font-size:1.1rem;color:var(--ai-deep);}
  .comp-k small{font-size:.74rem;line-height:1.35;color:var(--gris-osc);text-align:center;}
  @media (max-width:420px){ .comp-k{width:calc(50% - 8px);} }
  .lb-goshuin figcaption small{display:block;font-size:.66rem;color:var(--gris);margin-top:2px;line-height:1.3;}
  .lb-goshuin svg.niv-3{filter:drop-shadow(0 0 6px color-mix(in srgb, var(--kincha) 45%, transparent)) drop-shadow(0 2px 0 var(--washi-deep));}
  .kana-pista{margin-top:8px;font-size:.88rem;line-height:1.45;color:var(--sumi);}
  .kana-pista span[lang=ja]{font-family:var(--letra-mano);font-size:1.3rem;margin-right:2px;}
  .lb-c.descanso b, .sem-d.descanso b{font-family:'Shippori Mincho',serif;font-weight:700;color:var(--ai);opacity:.55;}
  .lb-c.descanso{flex-direction:column;}
  .lb-c.descanso i{font-size:.6rem;line-height:1;}
  .lb-c.descanso b{font-size:1.05rem;line-height:1;}
  .sem-d.descanso b{font-size:.95rem;}
  /* 御守り: días que salvó un amuleto (守, dorado) */
  .lb-c.amuleto b, .sem-d.amuleto b{font-family:'Shippori Mincho',serif;font-weight:700;color:var(--kincha-osc);}
  .lb-c.amuleto{flex-direction:column;} .lb-c.amuleto i{font-size:.6rem;line-height:1;} .lb-c.amuleto b{font-size:1.05rem;line-height:1;}
  .sem-d.amuleto b{font-size:.95rem;}
  /* La racha como sello (判子), arriba en la estantería y en la tarjeta de la portada (js/motor/sellos.js: rachaSello) */
  .rc-panel{display:flex;flex-direction:column;gap:12px;margin:8px 0 18px;padding:14px;background:var(--papel);border:1px solid var(--line);border-radius:12px;font-family:'Zen Maru Gothic',sans-serif;}
  .rc-cab{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap;}
  .rc-num{display:flex;align-items:baseline;gap:6px;color:var(--shu);}
  .rc-num b{font-family:'Shippori Mincho',serif;font-weight:800;font-size:2.6rem;line-height:.9;font-variant-numeric:tabular-nums;}
  .rc-num small{font-size:.8rem;color:var(--gris-osc);}
  .rc-sig{flex:1;min-width:150px;max-width:230px;display:flex;flex-direction:column;gap:5px;font-size:.78rem;color:var(--gris-osc);}
  .rc-sig b{color:var(--sumi);}
  .rc-barra{height:6px;border-radius:3px;background:var(--washi-deep);overflow:hidden;}
  .rc-barra i{display:block;height:100%;background:var(--shu);border-radius:3px;}
  .rc-hanko{display:flex;align-items:center;gap:16px;}
  .rc-hanko p{margin:0;font-size:.84rem;color:var(--gris-osc);min-width:0;}
  .rc-hanko p b{display:block;font-family:'Shippori Mincho',serif;font-size:1.05rem;color:var(--sumi);margin-bottom:2px;}
  /* Colores del sello: del objeto (tinta, metal, piedra), iguales en todos los temas, como los premios del fukubiki */
  :root{--rs-negra:#2b2a28;--rs-negra-osc:#151413;--rs-negra-ac:#efe6d2;
    --rs-shu:#bd4932;--rs-shu-osc:#8f3322;--rs-shu-ac:#ffe9d8;
    --rs-ai:#2c4a6e;--rs-ai-osc:#1b2c40;--rs-ai-ac:#d7e5f2;
    --rs-jade:#3f7a64;--rs-jade-osc:#27503f;--rs-jade-ac:#e2f2e8;
    --rs-oro-a:#f4d77e;--rs-oro-b:#c9a03a;--rs-oro-c:#e8c766;--rs-oro-d:#8a6a1c;--rs-oro-osc:#7a5c14;--rs-oro-ac:#fff4c7;--rs-oro-texto:#fff8dc;
    --rs-laca:#1d1513;--rs-laca-osc:#0d0908;--rs-laca-oro:#e3b94c;--rs-laca-texto:#e9c46a;
    --rs-nacar-a:#e9c9df;--rs-nacar-b:#a9c2e6;--rs-nacar-c:#9fd3bd;--rs-nacar-d:#b7a9e0;--rs-nacar-osc:#5d6688;--rs-nacar-joya:#cfd8ef;
    --rs-metal:#c9a03a;--rs-metal-luz:#fff6d0;--rs-luz:#f6c35a;--rs-petalo:#f2b6c4;--rs-trazo:#2b2a28;--rs-blanco:#fffdf6;}
  .rs{flex-shrink:0;overflow:visible;display:block;}
  .rs{--rs-c:var(--rs-negra);--rs-osc:var(--rs-negra-osc);--rs-ac:var(--rs-negra-ac);--rs-tx:var(--rs-blanco);}
  .rs-t1{--rs-c:var(--rs-shu);--rs-osc:var(--rs-shu-osc);--rs-ac:var(--rs-shu-ac);}
  .rs-t2{--rs-c:var(--rs-ai);--rs-osc:var(--rs-ai-osc);--rs-ac:var(--rs-ai-ac);}
  .rs-t3{--rs-c:var(--rs-jade);--rs-osc:var(--rs-jade-osc);--rs-ac:var(--rs-jade-ac);}
  .rs-t4{--rs-c:var(--rs-oro-b);--rs-osc:var(--rs-oro-osc);--rs-ac:var(--rs-oro-ac);--rs-tx:var(--rs-oro-texto);}
  .rs-t5, .rs-t7{--rs-c:var(--rs-laca);--rs-osc:var(--rs-laca-osc);--rs-ac:var(--rs-laca-oro);--rs-tx:var(--rs-laca-texto);}
  .rs-t6{--rs-c:var(--rs-nacar-b);--rs-osc:var(--rs-nacar-osc);--rs-ac:var(--rs-blanco);}
  .rs-cuerpo{fill:var(--rs-c);}
  .rs-borde, .rs-borde2{fill:none;stroke:var(--rs-c);stroke-width:2.2;} .rs-borde2{stroke-width:1.3;} .rs-borde2.rs-oro{stroke:var(--rs-metal);}
  .rs-pat{stroke:var(--rs-ac);fill:none;stroke-width:.7;} .rs-pat-flor{fill:var(--rs-ac);stroke:none;}
  .rs-fondo{opacity:.35;} .rs-t7 .rs-fondo{opacity:.55;}
  .rs-luz{fill:var(--rs-blanco);opacity:.18;}
  .rs-marco{fill:none;stroke:var(--rs-ac);stroke-width:1.3;opacity:.9;}
  .rs-esquina{fill:none;stroke:var(--rs-ac);stroke-width:2;stroke-linecap:round;} .rs-esquina-p{fill:var(--rs-ac);}
  .rs-metal{fill:var(--rs-metal);stroke:var(--rs-trazo);stroke-width:.8;} .rs-metal-luz{fill:var(--rs-metal-luz);}
  .rs-placa{fill:var(--rs-osc);opacity:.82;} .rs-t6 .rs-placa{opacity:.55;}
  .rs-num{font-family:'Shippori Mincho',serif;font-weight:800;fill:var(--rs-tx);text-anchor:middle;dominant-baseline:central;font-variant-numeric:tabular-nums;}
  .rs-sub{font-family:'Zen Maru Gothic',sans-serif;font-weight:700;fill:var(--rs-tx);opacity:.9;text-anchor:middle;dominant-baseline:central;}
  .rs-mil{fill:var(--rs-laca-texto);}
  .rs-oro-1{stop-color:var(--rs-oro-a);} .rs-oro-2{stop-color:var(--rs-oro-b);} .rs-oro-3{stop-color:var(--rs-oro-c);} .rs-oro-4{stop-color:var(--rs-oro-d);}
  .rs-nacar-1{stop-color:var(--rs-nacar-a);} .rs-nacar-2{stop-color:var(--rs-nacar-b);} .rs-nacar-3{stop-color:var(--rs-nacar-c);} .rs-nacar-4{stop-color:var(--rs-nacar-d);}
  .rs-halo-1{stop-color:var(--rs-luz);stop-opacity:.6;} .rs-halo-2{stop-color:var(--rs-luz);stop-opacity:0;}
  .rs-rayos path{fill:var(--rs-laca-texto);} .rs-rayos{opacity:.4;transform-origin:80px 78px;} .rs-rayos-mil{opacity:.6;}
  .rs-joya path{stroke:var(--rs-trazo);stroke-width:.9;} .rs-joya circle{fill:var(--rs-oro-a);}
  .rs-j1 path{fill:var(--rs-shu);} .rs-j2 path{fill:var(--rs-ai);} .rs-j3 path{fill:var(--rs-jade);} .rs-j4 path{fill:var(--rs-oro-b);}
  .rs-j5 path{fill:var(--rs-laca);} .rs-j6 path{fill:var(--rs-nacar-joya);} .rs-j7 path{fill:var(--rs-laca-texto);}
  .rs-cuerda{fill:none;stroke:var(--rs-shu);stroke-width:2;} .rs-borla{fill:var(--rs-shu);stroke:var(--rs-trazo);stroke-width:.8;}
  .rs-borla-oro .rs-cuerda{stroke:var(--rs-metal);} .rs-borla-oro .rs-borla{fill:var(--rs-metal);}
  .rs-hilos{stroke:var(--rs-trazo);stroke-width:.4;opacity:.5;fill:none;}
  .rs-destello{fill:var(--rs-blanco);opacity:0;}
  .rs-petalo{fill:var(--rs-petalo);opacity:0;transform-box:fill-box;transform-origin:center;}
  /* El turno de cada pétalo (retrasa su caída): antes era la nota style="--i:…" (AUT-CS-02) */
  .rs-p0{--i:0 !important;} .rs-p1{--i:1 !important;} .rs-p2{--i:2 !important;} .rs-p3{--i:3 !important;}
  .rs-p4{--i:4 !important;} .rs-p5{--i:5 !important;} .rs-p6{--i:6 !important;} .rs-p7{--i:7 !important;}
  .rs-mancha{fill:var(--rs-c);opacity:0;}
  /* Hoy sin estudiar: el sello entero, apagado */
  .rs-hoy{filter:grayscale(1);opacity:.5;}
  .rs-mini .rs-sub{font-size:9px;}
  /* Movimiento: el nácar brilla, los rayos giran y caen pétalos a los mil días; el «Sello de hoy» cae con su tinta */
  @media (prefers-reduced-motion: no-preference){
    .rs-rayos{animation:rs-gira 50s linear infinite;}
    .rs-t7 .rs-destello{animation:rs-destello 3.5s ease-in-out infinite;}
    .rs-petalo{animation:rs-petalo 5s linear infinite;animation-delay:calc(var(--i) * .55s);}
    .rs-entra .rs-golpe{animation:rs-golpe .55s cubic-bezier(.3,1.6,.5,1) .3s both;transform-box:fill-box;transform-origin:center;}
    .rs-entra .rs-mancha{animation:rs-mancha .9s ease-out .55s both;transform-box:fill-box;transform-origin:center;}
  }
  @keyframes rs-gira{to{transform:rotate(360deg);}}
  @keyframes rs-destello{0%{opacity:.25;transform:skewX(-20deg) translateX(-40px);}100%{opacity:.25;transform:skewX(-20deg) translateX(180px);}}
  @keyframes rs-petalo{0%{opacity:0;translate:0 0;rotate:0deg;}10%{opacity:.9;}100%{opacity:0;translate:-6px 170px;rotate:300deg;}}
  @keyframes rs-golpe{0%{transform:scale(1.5) rotate(-6deg);opacity:0;}55%{transform:scale(.94) rotate(1deg);opacity:1;}100%{transform:none;opacity:1;}}
  @keyframes rs-mancha{0%{transform:scale(.7);opacity:.5;}100%{transform:scale(1.35);opacity:0;}}
  .cu-racha{display:inline-flex;align-items:center;gap:8px;min-width:0;}
  .cu-racha .rs{width:30px;height:30px;}
  .cu-mejor{display:block;font-size:.72rem;font-weight:400;color:var(--gris-osc);margin-top:1px;} .cu-mejor.record{color:var(--shu);}
  .cu-num .cu-mejor{margin-top:2px;font-size:.68rem;}
  .rc-hitos{display:flex;gap:6px;overflow-x:auto;padding:4px 2px;}
  .rc-hito{flex-shrink:0;width:46px;height:46px;border-radius:8px;border:1.5px dashed var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1;color:var(--gris);}
  .rc-hito b{font-family:'Shippori Mincho',serif;font-weight:700;font-size:.95rem;} .rc-hito small{font-size:.58rem;}
  .rc-hito.si{border:2px solid var(--ai);color:var(--ai);transform:rotate(-4deg);}
  .rc-hito.sig{border:2px solid var(--shu);color:var(--shu);}
  .rc-omamori{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);padding-top:12px;}
  .rc-omamori p{flex:1;min-width:0;margin:0;font-size:.82rem;color:var(--gris-osc);} .rc-omamori p b{color:var(--sumi);display:block;}
  .omamori-ic{width:34px;height:46px;flex-shrink:0;}
  .om-bolsa{fill:var(--shu);stroke:var(--sumi);stroke-width:1.5;} .om-cinta{stroke:var(--kincha);stroke-width:2;} .om-papel{fill:var(--papel);}
  .om-t{font-family:'Shippori Mincho',serif;font-weight:700;font-size:7px;fill:var(--sumi);text-anchor:middle;} .om-nudo{fill:none;stroke:var(--kincha);stroke-width:1.6;}
  .sl-stamp .omamori-ic{width:110px;height:150px;}
  .rc-comprar{flex-shrink:0;font-family:'Zen Maru Gothic',sans-serif;border-radius:10px;border:1.5px solid var(--kincha);background:color-mix(in srgb, var(--kincha) 12%, var(--papel));color:var(--sumi);
    padding:6px 10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:1px;box-shadow:0 2px 0 var(--kincha);}
  .rc-comprar b{font-family:'Shippori Mincho',serif;font-size:1rem;} .rc-comprar span{display:flex;align-items:center;gap:3px;font-size:.74rem;color:var(--gris-osc);}
  .rc-comprar:active:not(:disabled){transform:translateY(2px);box-shadow:0 0 0 var(--kincha);}
  .rc-comprar:disabled{opacity:.45;cursor:not-allowed;} .rc-comprar:focus-visible{outline:2px solid var(--ai);outline-offset:2px;}
  .rc-nota{margin:-6px 0 0;font-size:.76rem;}
  .conf-card{margin-top:16px;}
  .conf-head{display:flex;gap:12px;align-items:center;}
  .conf-head h3{margin:0;font-family:'Shippori Mincho',serif;}
  .conf-head p{margin:2px 0 0;font-size:.85rem;color:var(--gris-osc);}
  .conf-kj{flex:0 0 auto;width:42px;height:42px;border-radius:50%;background:var(--kincha);color:var(--papel);display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-size:1.3rem;}
  .conf-pares{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0;}
  .conf-par{display:flex;align-items:baseline;gap:4px;border:1.5px solid var(--line-cl);border-radius:10px;padding:4px 10px;background:var(--tinte-papel);}
  .conf-par b{font-size:1.5rem;font-weight:400;}
  .conf-par i{font-style:normal;color:var(--gris-cl);}
  .conf-par small{color:var(--shu);font-weight:700;margin-left:4px;}
  .say.say-slow{margin-left:6px;}

  /* =====================================================================
     PERFIL DEL ALUMNO — onboarding (gustos, objetivo, tiempo, test) y «Fuera del cuaderno» (contenido recomendado, en Leer)
     ===================================================================== */
  .ob{max-width:540px;margin:0 auto;}
  .ob-h{font-family:'Shippori Mincho',serif;color:var(--ai-deep);font-size:1.6rem;line-height:1.25;margin:4px 0 6px;text-wrap:balance;}
  .ob .hint-note{margin:0 0 14px;line-height:1.5;}
  .ob-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:16px;}
  .ob-chip{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;cursor:pointer;background:var(--papel);
    border:1.5px solid var(--line);font-family:'Zen Maru Gothic',sans-serif;font-size:.92rem;color:var(--sumi);text-align:left;}
  .ob-sello{flex-shrink:0;width:34px;height:34px;border-radius:6px;display:grid;place-items:center;font-family:'Shippori Mincho',serif;font-weight:700;
    font-size:1.05rem;color:var(--shu-deep);border:1.5px solid var(--shu);transform:rotate(-3deg);transition:background .15s ease, color .15s ease;}
  .ob-chip[aria-pressed="true"]{border-color:var(--shu);}
  .ob-chip[aria-pressed="true"] .ob-sello{background:var(--shu);color:var(--papel);}
  @media (hover:hover){ .ob-chip:hover{border-color:var(--ai);} }
  .ob-acts{display:flex;flex-direction:column;gap:10px;margin-top:6px;}
  .ob-acts .btn{width:100%;padding:13px;font-size:1rem;}
  .place-opt.on{border-color:var(--ai);box-shadow:inset 0 0 0 1px var(--ai);}
  .ob-test{margin-top:4px;}
  .ob-test-top{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;}
  .ob-test-top small{font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris);font-variant-numeric:tabular-nums;}
  .ob-jp{font-family:'Shippori Mincho',serif;font-size:1.9rem;color:var(--sumi);text-align:center;margin:18px 0 22px;line-height:1.5;overflow-wrap:anywhere;}
  .ob-jp.larga{font-size:1.3rem;text-align:left;}
  .ob-ops{display:flex;flex-direction:column;gap:8px;}
  .ob-op{padding:13px 16px;border-radius:8px;border:1.5px solid var(--line);background:var(--washi);font-family:'Zen Maru Gothic',sans-serif;font-size:1rem;color:var(--sumi);text-align:left;cursor:pointer;}
  .ob-op.no{background:transparent;border-style:dashed;color:var(--gris);font-size:.9rem;}
  @media (hover:hover){ .ob-op:hover{border-color:var(--ai);} }
  .ob-resumen{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 18px;}
  .ob-dato{background:var(--papel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;font-family:'Zen Maru Gothic',sans-serif;min-width:0;}
  .ob-dato small{display:block;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gris);margin-bottom:4px;}
  .ob-dato b{font-weight:500;color:var(--ai-deep);font-size:.98rem;}
  .ob-sub{font-family:'Shippori Mincho',serif;color:var(--ai-deep);font-size:1.15rem;margin:18px 0 8px;}
  .ob-temas{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:6px;}
  .ob-tema{border:1.5px solid var(--line);border-radius:10px;padding:8px;cursor:pointer;background:var(--papel);font-family:'Zen Maru Gothic',sans-serif;
    font-size:.78rem;color:var(--gris);text-align:left;display:flex;flex-direction:column;gap:5px;min-width:0;}
  .ob-tema[aria-pressed="true"]{border-color:var(--shu);box-shadow:inset 0 0 0 1px var(--shu);}
  .ob-tema b{font-weight:500;font-size:.86rem;color:var(--ai-deep);}
  .ob-muestra{height:74px;border-radius:6px;overflow:hidden;border:1px solid rgba(0,0,0,.15);}
  .ob-muestra svg{width:100%;height:100%;display:block;}
  .ob-muestra.washi{background:#f2ecdc;} .ob-muestra.sakura{background:#fbf0f1;} .ob-muestra.matsuri{background:#f7efe0;}
  .ob-muestra.samurai{background:#141110;} .ob-muestra.noche{background:#10142a;} .ob-muestra.manga{background:#f7f5ef;}
  .ob-edad{display:flex;gap:10px;align-items:flex-start;font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;line-height:1.45;margin:4px 0 2px;}
  .ob-edad input{margin-top:3px;accent-color:var(--ai);}
  @media (max-width:460px){ .ob-resumen{grid-template-columns:1fr;} .ob-temas{grid-template-columns:1fr 1fr;} .ob-h{font-size:1.4rem;} .ob-jp{font-size:1.5rem;} .ob-jp.larga{font-size:1.15rem;} }

  /* Mi perfil y aspecto */
  .aj-sec{margin:0 0 6px;}
  .aj-sec .ob-sub{margin-top:22px;}
  .aj-aviso{font-family:'Zen Maru Gothic',sans-serif;font-size:.86rem;color:var(--matcha-osc);background:var(--tinte-matcha);border:1px solid var(--matcha);border-radius:8px;padding:10px 12px;margin:0 0 6px;line-height:1.5;}

  /* «Fuera del cuaderno»: pantalla completa del contenido recomendado */
  .ver-filtros{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px;}
  .ver-filtro{font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;border:1.5px solid var(--line);background:var(--washi);color:var(--sumi);border-radius:16px;padding:5px 12px;cursor:pointer;}
  .ver-filtro[aria-pressed="true"]{background:var(--ai);border-color:var(--ai);color:var(--washi);}
  .ver-perfil{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;background:var(--papel);border:1.5px dashed var(--ai);
    border-radius:10px;padding:12px 14px;margin:0 0 16px;font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;color:var(--sumi);}
  .ver-perfil b{color:var(--ai-deep);font-weight:500;}
  .ver-lista{display:flex;flex-direction:column;gap:12px;}
  .obra{background:var(--papel);border:1px solid var(--line);border-radius:8px;padding:16px 16px 14px;display:grid;grid-template-columns:44px minmax(0,1fr);gap:4px 14px;box-shadow:0 2px 0 var(--line);}
  .obra .ob-sello{grid-row:span 3;width:44px;height:44px;font-size:1.25rem;}
  .obra h3{margin:0;font-family:'Shippori Mincho',serif;font-size:1.12rem;color:var(--ai-deep);line-height:1.3;}
  .obra .ja{font-family:'Shippori Mincho',serif;color:var(--gris);font-size:.85rem;margin-left:6px;font-weight:500;}
  .obra-meta{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris);}
  .obra-pill{border-radius:12px;padding:2px 9px;border:1px solid var(--matcha);color:var(--matcha);font-weight:500;}
  .obra-desc{margin:2px 0 0;font-size:.9rem;line-height:1.55;color:var(--sumi);}
  .obra-porque{grid-column:1 / -1;margin:8px 0 0;padding:8px 0 0;border-top:1px dashed var(--line);font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--sumi);display:flex;flex-wrap:wrap;gap:4px 14px;list-style:none;}
  .obra-porque li::before{content:"・";color:var(--shu);}
  .obra-calc{grid-column:1 / -1;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris);}
  .obra-calc summary{cursor:pointer;color:var(--shu-deep);margin-top:6px;}
  .obra-barras{display:grid;grid-template-columns:auto 1fr auto;gap:4px 10px;align-items:center;margin-top:8px;font-variant-numeric:tabular-nums;}
  .obra-barra{height:6px;border-radius:4px;background:var(--washi-deep);overflow:hidden;}
  .obra-barra span{display:block;height:100%;background:var(--matcha);}

  /* =====================================================================
     TEMAS VISUALES — capa opcional sobre la base washi (elige cada alumno).
     Redefinen colores y, desde el 24/10, ponen su ilustración viva detrás de la app (Temas vivos, más abajo).
     Washi es el de siempre: sin atributo o con data-tema="washi" no cambia nada.
     ===================================================================== */
  :root[data-tema]:not([data-tema="washi"]) .hdr{padding-top:26px;min-height:150px;}


  /* Sakura */
  :root[data-tema="sakura"]{--washi:#fbf0f1;--washi-deep:#f1dde0;--papel:#fffafa;--sumi:#3a2a30;--gris:#8c7479;--gris-osc:#6f5a5f;--ai:#7a3b55;--ai-deep:#5c2a40;
    --shu:#d0607f;--shu-deep:#b04565;--kincha:#e6a3b4;--matcha:#4a7f55;--line:#e7c9cf;--line-cl:#efd8dc;}
  :root[data-tema="sakura"] .card::before{background:radial-gradient(ellipse 6px 3px at 50% 50%, #e89bb0 90%, transparent) 0 0/22px 5px;opacity:1;}
  /* Matsuri */
  :root[data-tema="matsuri"]{--washi:#f7efe0;--washi-deep:#eedfc4;--papel:#fffaf0;--sumi:#2a2320;--gris:#7f7262;--gris-osc:#62574a;--ai:#1f3a6e;--ai-deep:#152a52;
    --shu:#cf3a24;--shu-deep:#a82c1a;--kincha:#e3a02a;--matcha:#4f7a4a;--line:#dcc49c;}
  :root[data-tema="matsuri"] .card::before{background:repeating-linear-gradient(90deg, #cf3a24 0 12px, #fffaf0 12px 24px);opacity:1;height:7px;}
  /* Viñeta */
  :root[data-tema="manga"]{--washi:#f7f5ef;--washi-deep:#e6e3da;--papel:#ffffff;--sumi:#111111;--gris:#5a5750;--gris-osc:#3f3d38;--ai:#111111;--ai-deep:#111111;
    --line:#111111;--line-cl:#8d8a82;--shu:#c0392b;--shu-deep:#9b2a1e;}
  :root[data-tema="manga"] .card{border-width:2px;box-shadow:5px 5px 0 #111;}
  :root[data-tema="manga"] .card::before{display:none;}
  :root[data-tema="manga"] .hdr .kanji{font-family:'Dela Gothic One','Shippori Mincho',sans-serif;font-weight:400;}
  /* Temas oscuros: Samurái y Tokio de noche */
  :root[data-tema="samurai"]{--washi:#141110;--washi-deep:#2b2421;--papel:#1e1917;--sumi:#ece3d3;--gris:#a2968a;--gris-osc:#c4b9ab;--gris-cl:#8a7f73;
    --ai:#c9a24a;--ai-deep:#e0bf6c;--shu:#e05a4c;--shu-deep:#e86a5c;--kincha:#c9a24a;--matcha:#9bb98a;--line:#3a302b;color-scheme:dark;}
  :root[data-tema="samurai"] .hdr .kanji{text-shadow:0 2px 10px #000, 0 0 2px #000;}
  :root[data-tema="samurai"] .hdr .sub{text-shadow:0 1px 6px #000;color:#f3d9a0;}
  :root[data-tema="samurai"] .hdr .marca-kj{color:var(--kincha);text-shadow:0 1px 6px #000, 0 0 2px #000;}
  :root[data-tema="samurai"] .card::before{background:linear-gradient(90deg, #c0392b 0 30%, #c9a24a 30% 100%);height:2px;opacity:1;}
  /* Tokio de noche (rediseño 19/10/2026): 85 % fondo oscuro desaturado, 12 % superficies, 3 % luz neón.
     Los tokens --noche-… y --neon-… están en :root (más abajo) para que la miniatura del tema se vea bien desde cualquier tema. */
  :root[data-tema="noche"]{--washi:var(--noche-fondo);--washi-deep:var(--noche-superficie-2);--papel:var(--noche-superficie);--sumi:var(--texto);
    --gris:var(--texto-suave);--gris-osc:color-mix(in srgb, var(--texto) 55%, var(--texto-suave));--gris-cl:#9996ba;
    --ai:var(--neon-rosa);--ai-deep:color-mix(in srgb, var(--neon-rosa) 70%, var(--texto));--shu:var(--neon-cian);--shu-deep:color-mix(in srgb, var(--neon-cian) 70%, var(--texto));
    --kincha:var(--neon-ambar);--matcha:#7ee0a8;--line:var(--noche-linea);color-scheme:dark;}
  :root[data-tema="noche"] .hdr .kanji{text-shadow:0 0 14px color-mix(in srgb, var(--neon-rosa) 50%, transparent);}
  :root[data-tema="noche"] .card::before{background:linear-gradient(90deg, var(--neon-rosa), var(--neon-cian));height:2px;opacity:1;box-shadow:0 0 6px color-mix(in srgb, var(--neon-rosa) 50%, transparent);}
  /* En los temas oscuros, los tonos claros de fondo se oscurecen y los textos oscuros se aclaran */
  :root[data-tema="samurai"], :root[data-tema="noche"]{
    --gris-cl-2:color-mix(in srgb, var(--gris) 70%, var(--papel)); --gris-osc-2:var(--gris-osc); --line-cl:color-mix(in srgb, var(--line) 70%, var(--sumi));
    --tinte-shu:color-mix(in srgb, var(--papel) 82%, var(--shu)); --tinte-shu-2:color-mix(in srgb, var(--papel) 86%, var(--shu));
    --tinte-shu-3:color-mix(in srgb, var(--papel) 86%, var(--shu)); --tinte-shu-4:color-mix(in srgb, var(--papel) 84%, var(--shu));
    --tinte-papel:color-mix(in srgb, var(--papel) 92%, var(--sumi)); --tinte-matcha:color-mix(in srgb, var(--papel) 82%, var(--matcha));
    --tinte-kincha:color-mix(in srgb, var(--papel) 75%, var(--kincha)); --tinte-kincha-2:color-mix(in srgb, var(--papel) 40%, var(--kincha));
    --tinte-murasaki:color-mix(in srgb, var(--papel) 78%, #b48ad0);
    --matcha-osc:color-mix(in srgb, var(--matcha) 70%, #fff); --matcha-osc-2:color-mix(in srgb, var(--matcha) 65%, #fff); --matcha-osc-3:var(--matcha);
    --kincha-osc:color-mix(in srgb, var(--kincha) 80%, #fff); --kincha-osc-2:color-mix(in srgb, var(--kincha) 80%, #fff);
    --kincha-osc-3:color-mix(in srgb, var(--kincha) 75%, #fff); --kincha-osc-4:color-mix(in srgb, var(--kincha) 75%, #fff);
    --shu-osc:var(--shu-deep); --shu-osc-2:var(--shu-deep); --murasaki:#c9a6e0; --murasaki-osc:#dcc3ee;}
  :root[data-tema="samurai"] .tabbar, :root[data-tema="noche"] .tabbar{background:color-mix(in srgb, var(--papel) 94%, transparent);}
  :root[data-tema="samurai"] .ob-muestra, :root[data-tema="noche"] .ob-muestra{border-color:rgba(255,255,255,.15);}

  /* =====================================================================
     TEMAS VIVOS (24/10/2026, js/motor/escenas.js): la ilustración de cada tema cubre toda la pantalla, detrás de la app
     y fija (no se mueve con el scroll). Nada pasa por encima del texto: el lienzo de partículas va dentro de #escena,
     debajo de .wrap. Los colores, en variables de cada tema (--ev-*): ninguno fijo en las reglas. El lienzo los lee
     con getComputedStyle (en hexadecimal). El cielo del dibujo (--ev-cielo) es el fondo de la página.
     ===================================================================== */
  :root{--ev-brillo:#ffaa46;--ev-brillo-2:#ff963c;--ev-sombra:rgba(0,0,0,.10);--ev-hoja:86%;}
  :root[data-tema="sakura"]{--ev-cielo:#f6e7e9;--ev-agua-brillo:#fffafa;--ev-onda:#8a6670;--ev-petalo-centro:#c25c77;
    --ev-petalo-1:#efa0b4;--ev-petalo-2:#f3b0c1;--ev-petalo-3:#e3829c;--ev-petalo-4:#f2b6c5;--ev-petalo-5:#ea92a9;}
  :root[data-tema="matsuri"]{--ev-cielo:#f2e2c6;--ev-cuerda:#2b2620;--ev-vela:#ffd68c;--ev-vela-2:#ffbe6e;--ev-chispa:#f6e2b8;--ev-destello:#ffecbe;
    --ev-fuego-1:#e3a72f;--ev-fuego-2:#d9482b;--ev-fuego-3:#2c4a86;--ev-fuego-4:#f6e2b8;--ev-fuego-5:#e9603d;}
  :root[data-tema="noche"]{--ev-cielo:#0b122d;--ev-lluvia:#b9cdff;--ev-salpicadura:#bed2ff;--ev-halo:#ffe296;
    --ev-tren:#49d6e6;--ev-tren-luz:#a0f0ff;--ev-tren-punta:#ffffff;--ev-sombra:rgba(0,0,0,.45);--ev-hoja:84%;}
  :root[data-tema="samurai"]{--ev-cielo:#09090b;--ev-luna-1:#deab5a;--ev-luna-2:#d49d4d;--ev-luna-3:#c98f42;--ev-luna-fin:#e6b45a;
    --ev-katana:#fff0cd;--ev-mon:#f0c86e;--ev-niebla:#96a5be;--ev-luciernaga-1:#fff0b4;--ev-luciernaga-2:#f0c86e;--ev-luciernaga-3:#dcaa46;
    --ev-sombra:rgba(0,0,0,.45);--ev-hoja:84%;}
  :root[data-tema="manga"]{--ev-cielo:#f6f1e2;--ev-tinta:#111111;--ev-estrella:#c8302c;--ev-fogonazo:#ffffff;--ev-fogonazo-2:#faf8f0;}

  :root[data-ev][data-tema] body{background:var(--ev-cielo);}
  :root[data-ev] .page-bg{display:none;}     /* los dibujos sueltos de fondo (fondo-pagina.js), fuera en estos temas */

  #escena{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;}
  #escena .ev-escenario{position:absolute;left:0;top:0;transform-origin:0 0;}
  #escena .ev-escenario > *{position:absolute;}
  #escena .ev-base{left:0;top:0;user-select:none;}
  #escena .ev-lienzo{position:absolute;inset:0;width:100%;height:100%;}
  #escena .ev-fijo{position:absolute;inset:0;transition:opacity .45s ease;}
  #escena img{display:block;max-width:none;}

  /* Lo que se mece (farolillos, la rama): cuelga de arriba */
  #escena .ev-pieza img, #escena .ev-farol-guirnalda img{width:100%;height:100%;}
  #escena .ev-mece, #escena .ev-golpe{width:100%;height:100%;transform-origin:50% 0;}
  #escena .ev-mece{animation:ev-mecer var(--dur,4.2s) ease-in-out var(--del,0s) infinite alternate;}
  @keyframes ev-mecer{from{transform:rotate(calc(var(--amp,2deg) * -1));}to{transform:rotate(var(--amp,2deg));}}
  /* al acertar, un empujón que se amortigua (sin cortar el balanceo de siempre) */
  #escena.ev-acierto .ev-golpe{animation:ev-golpe 1.6s cubic-bezier(.3,.7,.4,1) var(--retraso,0ms) both;}
  @keyframes ev-golpe{0%{transform:rotate(0)}18%{transform:rotate(6deg)}40%{transform:rotate(-4deg)}62%{transform:rotate(2deg)}82%{transform:rotate(-.8deg)}100%{transform:rotate(0)}}
  @keyframes ev-golpe-suave{0%{transform:rotate(0)}25%{transform:rotate(1.6deg)}55%{transform:rotate(-.8deg)}100%{transform:rotate(0)}}

  /* farolillos que se encienden */
  #escena .ev-con-luz img{transition:filter .9s ease;}
  #escena.ev-acierto .ev-con-luz img{transition-duration:.18s;filter:brightness(1.12) saturate(1.1)
    drop-shadow(0 0 10px color-mix(in srgb, var(--ev-brillo) 75%, transparent)) drop-shadow(0 0 22px color-mix(in srgb, var(--ev-brillo-2) 35%, transparent));}
  #escena.ev-fin .ev-con-luz img{filter:brightness(1.15) saturate(1.15)
    drop-shadow(0 0 12px color-mix(in srgb, var(--ev-brillo) 85%, transparent)) drop-shadow(0 0 30px color-mix(in srgb, var(--ev-brillo-2) 45%, transparent));}

  /* ---------- Matsuri: la cuerda de chōchin y los tōrō ---------- */
  #escena .ev-fijo .ev-cuerda{position:absolute;left:0;top:0;overflow:visible;}
  #escena .ev-cuerda polyline{fill:none;stroke:var(--ev-cuerda);stroke-width:2.2;stroke-linecap:round;}
  #escena .ev-farol-guirnalda{position:absolute;}
  #escena .ev-toro-deriva, #escena .ev-toro-meci{position:absolute;inset:0;}
  #escena .ev-toro-deriva{animation:ev-deriva var(--dur,28s) ease-in-out var(--del,0s) infinite alternate;}
  @keyframes ev-deriva{from{transform:translateX(calc(var(--dx,20px) * -1))}to{transform:translateX(var(--dx,20px))}}
  #escena .ev-toro-meci{animation:ev-flotar var(--dur,5s) ease-in-out var(--del,0s) infinite alternate;}
  @keyframes ev-flotar{from{transform:translateY(-1.6px) rotate(-.9deg)}to{transform:translateY(1.6px) rotate(.9deg)}}
  #escena .ev-toro img{width:100%;height:100%;}
  /* la vela de cada tōrō: respira despacio; al acertar se aviva */
  #escena .ev-toro-luz{position:absolute;left:0;right:0;top:0;mix-blend-mode:screen;pointer-events:none;opacity:.25;
    background:radial-gradient(ellipse 34% 30% at 50% 50%, color-mix(in srgb, var(--ev-vela) 85%, transparent), color-mix(in srgb, var(--ev-vela-2) 25%, transparent) 55%, transparent 75%);
    animation:ev-vela 3.6s ease-in-out infinite alternate;}
  @keyframes ev-vela{0%{opacity:.18}40%{opacity:.32}70%{opacity:.22}100%{opacity:.3}}
  #escena.ev-acierto .ev-toro-luz{animation:ev-avivar 1.7s ease-out both;}
  #escena.ev-fin .ev-toro-luz{animation:ev-avivar 5s ease-out both;}
  @keyframes ev-avivar{0%{opacity:.25}15%{opacity:1}100%{opacity:.25}}

  /* ---------- Sakura: la rama y los brillos del estanque ---------- */
  #escena .ev-rama{position:absolute;left:0;top:0;transform-origin:0 0;}
  #escena .ev-rama .ev-rama-mece{position:absolute;left:0;top:0;}
  #escena.ev-acierto .ev-rama .ev-rama-mece{animation:ev-golpe-suave 1.6s ease-out both;}
  #escena .ev-agua svg{display:block;overflow:visible;}
  #escena .ev-agua line{stroke:var(--ev-agua-brillo);stroke-width:2.5;stroke-linecap:round;opacity:0;animation:ev-brillo-agua 6s ease-in-out infinite;}
  @keyframes ev-brillo-agua{0%,100%{opacity:0;transform:translateX(0)}45%{opacity:.85}70%{opacity:0;transform:translateX(16px)}}
  #escena.ev-acierto .ev-agua line{animation-duration:1.6s;}

  /* ---------- Tokio de noche: neones, luna y el tren ---------- */
  #escena .ev-luces{mix-blend-mode:screen;opacity:.32;animation:ev-neon 7s steps(1,end) infinite;}
  #escena .ev-luces img{width:100%;height:100%;}
  @keyframes ev-neon{0%{opacity:.32}43%{opacity:.32}44%{opacity:.18}45%{opacity:.34}46%{opacity:.22}47%{opacity:.32}100%{opacity:.32}}
  #escena.ev-acierto .ev-luces{animation:ev-encender 1.5s ease-out both;}
  @keyframes ev-encender{0%{opacity:.32}15%{opacity:1}100%{opacity:.32}}
  #escena.ev-fin .ev-luces{animation:ev-ciudad 5s ease-in-out both;}
  @keyframes ev-ciudad{0%{opacity:.32;filter:none}18%{opacity:1;filter:brightness(1.5)}70%{opacity:.9;filter:brightness(1.25)}100%{opacity:.32;filter:none}}
  #escena .ev-halo-luna{border-radius:50%;animation:ev-respirar 8s ease-in-out infinite;
    background:radial-gradient(circle, color-mix(in srgb, var(--ev-halo) 30%, transparent) 0, color-mix(in srgb, var(--ev-halo) 12%, transparent) 28%, transparent 62%);}
  @keyframes ev-respirar{0%,100%{opacity:.35}50%{opacity:1}}
  #escena.ev-fin .ev-halo-luna{animation:ev-encender 4s ease-out both;}
  #escena .ev-via{transform-origin:0 50%;overflow:visible;}
  #escena .ev-via i{position:absolute;left:0;top:-3px;width:150px;height:12px;border-radius:6px;opacity:0;
    background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--ev-tren-luz) 95%, transparent) 70%, var(--ev-tren-punta));
    box-shadow:0 0 18px 4px color-mix(in srgb, var(--ev-tren) 55%, transparent);}
  #escena.ev-acierto .ev-via i{animation:ev-pasa 1.4s cubic-bezier(.45,0,.3,1) both;}
  #escena.ev-fin .ev-via i{animation:ev-pasa 2.2s cubic-bezier(.45,0,.3,1) .2s 2 both;}
  @keyframes ev-pasa{0%{opacity:0;transform:translateX(-150px)}12%{opacity:1}88%{opacity:1}100%{opacity:0;transform:translateX(738px)}}

  /* ---------- Samurái: la luna (detrás del dibujo), la katana, el emblema y la niebla ---------- */
  #escena .ev-luna-atras{position:absolute;border-radius:50%;transition:box-shadow 1.2s ease;
    background:radial-gradient(circle at 42% 40%, var(--ev-luna-1) 0, var(--ev-luna-2) 55%, var(--ev-luna-3) 100%);
    box-shadow:0 0 40px 6px color-mix(in srgb, var(--ev-luna-2) 22%, transparent), 0 0 120px 30px color-mix(in srgb, var(--ev-luna-2) 10%, transparent);}
  #escena.ev-fin .ev-luna-atras{box-shadow:0 0 60px 14px color-mix(in srgb, var(--ev-luna-fin) 45%, transparent), 0 0 180px 60px color-mix(in srgb, var(--ev-luna-fin) 18%, transparent);}
  #escena .ev-brillo-katana{opacity:0;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-size:280% 100%;background-position:120% 0;
    background-image:linear-gradient(100deg, transparent 0 42%, color-mix(in srgb, var(--ev-katana) 95%, transparent) 50%, transparent 58% 100%);}
  #escena.ev-acierto .ev-brillo-katana{animation:ev-tajo 1.1s cubic-bezier(.5,0,.3,1) both;}
  @keyframes ev-tajo{0%{opacity:1;background-position:120% 0}100%{opacity:1;background-position:-30% 0}}
  #escena .ev-mon{border-radius:50%;opacity:0;background:radial-gradient(circle, color-mix(in srgb, var(--ev-mon) 55%, transparent) 0, transparent 62%);}
  #escena.ev-fin .ev-mon{animation:ev-encender 3s ease-out both;}
  #escena .ev-niebla{border-radius:50%;background:radial-gradient(ellipse at center, color-mix(in srgb, var(--ev-niebla) 16%, transparent) 0, transparent 70%);
    animation:ev-niebla 46s ease-in-out infinite alternate;}
  @keyframes ev-niebla{from{transform:translateX(-60px)}to{transform:translateX(90px)}}

  /* ---------- Viñeta: los bocadillos ---------- */
  #escena .ev-bocadillo{display:flex;align-items:center;justify-content:center;}
  #escena .ev-bocadillo.ev-oculto{display:none;}
  #escena .ev-bocadillo-izq .ev-puntos{display:flex;gap:16px;margin-bottom:22px;}
  #escena .ev-bocadillo-izq .ev-puntos i{width:14px;height:14px;border-radius:50%;background:var(--ev-tinta);opacity:0;animation:ev-puntos 5s ease-in-out infinite;}
  #escena .ev-bocadillo-izq .ev-puntos i:nth-child(2){animation-delay:.35s}
  #escena .ev-bocadillo-izq .ev-puntos i:nth-child(3){animation-delay:.7s}
  @keyframes ev-puntos{0%,8%{opacity:0;transform:scale(.4)}16%,62%{opacity:1;transform:scale(1)}72%,100%{opacity:0;transform:scale(.4)}}
  #escena .ev-bocadillo-der::after{content:"!";font:900 120px/1 'Zen Maru Gothic', sans-serif;color:var(--ev-tinta);margin:0 0 30px 12px;opacity:0;transform:scale(.3) rotate(-8deg);}
  #escena.ev-acierto .ev-bocadillo-der::after{animation:ev-pop 1.6s cubic-bezier(.2,1.6,.4,1) both;}
  #escena.ev-fin .ev-bocadillo-der::after{content:"★";color:var(--ev-estrella);animation:ev-pop 4.5s cubic-bezier(.2,1.6,.4,1) both;}
  @keyframes ev-pop{0%{opacity:0;transform:scale(.3) rotate(-8deg)}14%{opacity:1;transform:scale(1.08) rotate(3deg)}24%{transform:scale(1) rotate(0)}80%{opacity:1}100%{opacity:0;transform:scale(1)}}

  /* En las lecciones del móvil (sin cabecera), lo que cuelga arriba se recoge */
  @media (max-width:600px), (max-height:500px){ body.focus-mode #escena .ev-fijo{opacity:0;} }
  /* Reducir movimiento: todo quieto (escenas.js tampoco crea el lienzo ni reacciona) */
  @media (prefers-reduced-motion: reduce){
    #escena, #escena *{animation:none !important;transition:none !important;}
    #escena .ev-lienzo{display:none;}
  }

  /* ---------- Que se lea bien: el texto nunca va directo sobre el dibujo ----------
     Las pestañas sin tarjeta (Leer, Kanji, Repasar, Diccionario, recomendados), Configuración y el perfil inicial van
     sobre una hoja de washi translúcida: el paisaje se intuye detrás, como a través de un shōji. Las tarjetas ya son opacas. */
  :root[data-ev] #app > .tab-page:not([data-tab="camino"]),
  :root[data-ev] #app > .ajustes, :root[data-ev] #app > .perfil-pg{
    position:relative;padding:18px 18px 22px;margin:0 -6px;border-radius:14px;
    background:color-mix(in srgb, var(--washi) var(--ev-hoja), transparent);
    -webkit-backdrop-filter:blur(7px) saturate(1.05);backdrop-filter:blur(7px) saturate(1.05);
    box-shadow:0 1px 0 color-mix(in srgb, var(--papel) 60%, transparent) inset, 0 10px 34px var(--ev-sombra);
    border:1px solid color-mix(in srgb, var(--line) 60%, transparent);}
  :root[data-ev] #app:has(> .progress-row #ajVolver), :root[data-ev] #app:has(> .progress-row #obAtras){
    padding:16px 18px 22px;margin:0 -6px;border-radius:14px;
    background:color-mix(in srgb, var(--washi) var(--ev-hoja), transparent);
    -webkit-backdrop-filter:blur(7px) saturate(1.05);backdrop-filter:blur(7px) saturate(1.05);
    box-shadow:0 10px 34px var(--ev-sombra);border:1px solid color-mix(in srgb, var(--line) 60%, transparent);}
  @media (max-width:600px){
    :root[data-ev] #app > .tab-page:not([data-tab="camino"]){margin:0 -10px;padding:16px 14px 20px;border-radius:12px;}
    :root[data-ev] #app:has(> .progress-row #ajVolver), :root[data-ev] #app:has(> .progress-row #obAtras){margin:0 -10px;padding:14px 14px 20px;border-radius:12px;}
  }
  /* en las lecciones, la fila de arriba (volver, barra, 1 / 17, racha) va sobre una tira de papel */
  :root[data-ev] #app > .progress-row:not(:has(#ajVolver)):not(:has(#obAtras)){padding:6px 8px;border-radius:14px;
    background:color-mix(in srgb, var(--washi) 82%, transparent);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);}
  /* lo que va suelto bajo la tarjeta de una lección (atajos de teclado) */
  :root[data-ev] .nav-hint{width:fit-content;margin-left:auto;margin-right:auto;padding:4px 12px;border-radius:999px;
    background:color-mix(in srgb, var(--washi) 88%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);}
  /* el logo: un velo de papel muy suave detrás, para que se lea sobre cualquier dibujo (en Samurái no: taparía la luna) */
  :root[data-ev] .hdr{position:relative;isolation:isolate;}
  :root[data-ev] .hdr::after{content:"";position:absolute;left:50%;top:-14px;width:min(360px, 92%);height:calc(100% + 10px);transform:translateX(-50%);z-index:-1;pointer-events:none;
    background:radial-gradient(ellipse at 50% 45%, color-mix(in srgb, var(--ev-cielo) 82%, transparent) 0, color-mix(in srgb, var(--ev-cielo) 55%, transparent) 45%, transparent 72%);}
  :root[data-ev][data-tema="samurai"] .hdr::after{display:none;}
  /* Los botones de la cabecera, con papel debajo: el dibujo no se cuela entre las letras */
  :root[data-ev] .hdr .lang-btn{background:color-mix(in srgb, var(--papel) 88%, transparent);}

  /* ---------- Miniaturas para elegir tema: la ilustración, quieta ---------- */
  .ob-muestra img.ev-mini{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 50%;}
  .ob-muestra.matsuri img.ev-mini{object-position:50% 0;}      /* la cuerda de chōchin, siempre visible */
  .ob-muestra.sakura img.ev-mini{object-position:50% 70%;}     /* el puente */
  .ob-muestra.noche img.ev-mini{object-position:50% 35%;}      /* la luna y el tren */
  .ob-muestra.samurai img.ev-mini{object-position:50% 55%;}    /* el castillo con la luna */
  .ob-muestra.manga img.ev-mini{object-position:50% 45%;}

  /* =====================================================================
     CONFIGURACIÓN (js/motor/ajustes.js)
     ===================================================================== */

  .cfg-lista{display:flex;flex-direction:column;gap:8px;margin-top:6px;}
  .cfg-fila, .cfg-tu{width:100%;display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer;background:var(--papel);
    border:1.5px solid var(--line);border-radius:10px;padding:12px 14px;font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);}
  @media (hover:hover){ .cfg-fila:hover, .cfg-tu:hover{border-color:var(--ai);} }
  .cfg-fila:focus-visible, .cfg-tu:focus-visible{outline:2px solid var(--kincha);outline-offset:2px;}
  .cfg-fila-txt, .cfg-tu-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;}
  .cfg-fila-txt b{font-weight:500;font-size:.98rem;}
  .cfg-fila-txt span, .cfg-tu-txt span{font-size:.8rem;color:var(--gris-osc);line-height:1.35;}
  .cfg-tu{margin:6px 0 12px;padding:12px 14px;border-color:var(--shu);box-shadow:0 2px 0 var(--line);}
  .cfg-tu .hanko{flex-shrink:0;}
  .cfg-tu-txt b{font-family:'Shippori Mincho',serif;font-size:1.2rem;color:var(--ai-deep);}
  .cfg-tu-txt .cfg-tu-nube{font-size:.76rem;color:var(--gris);} .cfg-tu-txt .cfg-tu-nube.si{color:var(--matcha-osc);}
  .cfg-entrar{width:100%;margin:0 0 6px;}
  .cfg-sub{font-family:'Shippori Mincho',serif;font-size:1.05rem;color:var(--ai-deep);margin:18px 2px 8px;}
  .cfg-flecha{color:var(--gris);font-size:1.4rem;line-height:1;}
  /* Volumen (Configuración · Sonidos) */
  .cfg-vol{display:flex;flex-direction:column;gap:10px;padding:12px 14px 10px;margin:-4px 0 4px;border:1px solid var(--line);border-top:none;border-radius:0 0 12px 12px;background:color-mix(in srgb, var(--papel) 85%, transparent);}
  .cfg-vol-fila{display:grid;grid-template-columns:1fr auto;grid-template-areas:"t n" "r r";align-items:center;gap:4px 10px;font-family:'Zen Maru Gothic',sans-serif;font-size:.88rem;color:var(--sumi);}
  .cfg-vol-fila span{grid-area:t;} .cfg-vol-fila output{grid-area:n;font-variant-numeric:tabular-nums;color:var(--gris-osc);font-size:.82rem;}
  .cfg-vol-fila input[type=range]{grid-area:r;width:100%;accent-color:var(--matcha);height:28px;margin:0;}
  .cfg-vol-fila input:disabled{opacity:.4;}
  /* Elegir la voz grabada (26/10) */
  .cfg-elige-voz{display:flex;flex-direction:column;gap:10px;padding:14px;margin:4px 0;border:1px solid var(--line);border-radius:12px;background:var(--papel);}
  .cfg-ev-cab{display:flex;align-items:center;gap:12px;}
  .cfg-ev-ops{display:flex;flex-direction:column;gap:8px;}
  .cfg-ev-op{display:flex;align-items:flex-start;gap:8px;padding:10px 10px 10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--papel);}
  .cfg-ev-op.sel{border-color:var(--ai);background:color-mix(in srgb, var(--ai) 7%, var(--papel));}
  .cfg-ev-op label{display:flex;align-items:flex-start;gap:10px;flex:1;min-height:44px;cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;}
  .cfg-ev-op input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--ai);flex-shrink:0;}
  .cfg-ev-txt{display:flex;flex-direction:column;gap:2px;font-size:.82rem;color:var(--gris-osc);line-height:1.45;}
  .cfg-ev-t{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
  .cfg-ev-t b{font-size:.92rem;color:var(--sumi);}
  .cfg-ev-rec{font-size:.68rem;font-weight:700;color:var(--matcha);background:color-mix(in srgb, var(--matcha) 14%, var(--papel));border-radius:999px;padding:2px 8px;}
  .cfg-ev-oir{width:44px;height:44px;flex-shrink:0;border-radius:22px;border:1px solid var(--line);background:var(--papel);color:var(--ai);display:flex;align-items:center;justify-content:center;cursor:pointer;}
  .cfg-ev-oir svg{width:20px;height:20px;}
  .cfg-vol-nota{margin:0;font-family:'Zen Maru Gothic',sans-serif;font-size:.74rem;color:var(--gris);}
  .aj-aviso.ko{border-color:var(--shu);color:var(--shu);background:var(--tinte-shu);}
  .cfg-interruptor{flex-shrink:0;width:42px;height:24px;border-radius:12px;background:var(--line);position:relative;transition:background .15s ease;}
  .cfg-interruptor::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--papel);box-shadow:0 1px 2px rgba(43,42,40,.3);transition:left .15s ease;}
  .cfg-fila[aria-pressed="true"] .cfg-interruptor{background:var(--matcha);}
  .cfg-fila[aria-pressed="true"] .cfg-interruptor::after{left:21px;}
  .cfg .ob-sub{margin-top:22px;}
  .cfg-pills{margin-bottom:8px;}
  .cfg-campo{display:flex;flex-direction:column;gap:6px;margin:14px 0 6px;font-family:'Zen Maru Gothic',sans-serif;font-size:.85rem;color:var(--gris-osc);}
  .cfg-campo input{font:inherit;font-size:1.05rem;color:var(--sumi);background:var(--papel);border:1.5px solid var(--line);border-radius:8px;padding:10px 12px;}
  .cfg-campo input:focus{outline:none;border-color:var(--ai);}
  .cfg-hanko{display:flex;align-items:center;gap:18px;margin:16px 0 4px;padding:16px;background:var(--papel);border:1px solid var(--line);border-radius:10px;}
  .cfg-hanko .hanko{flex-shrink:0;}
  .cfg-hanko-txt{min-width:0;}
  .cfg-hanko-txt small{display:block;font-family:'Zen Maru Gothic',sans-serif;font-size:.75rem;color:var(--gris);letter-spacing:.05em;}
  .cfg-hanko-txt b{display:block;font-family:'Shippori Mincho',serif;font-size:1.6rem;color:var(--shu-deep);margin:2px 0 6px;overflow-wrap:anywhere;}
  .cfg-hanko-txt .hint-note{margin:0;}
  .hanko.vacio{opacity:.35;}
  .cfg-lee{display:block;font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--gris-osc);margin:-2px 0 6px;}
  .cfg-solo-kata{font-family:'Zen Maru Gothic',sans-serif;font-size:.82rem;color:var(--shu-deep);background:var(--tinte-shu);border:1px solid var(--shu);border-radius:8px;padding:8px 10px;margin:0 0 6px;}
  #cfgHankoTxt{font-family:'Shippori Mincho',serif;font-size:1.3rem;letter-spacing:.08em;}
  .kb-kata{display:grid;grid-template-columns:repeat(10, minmax(0, 1fr));gap:4px;margin:8px 0 10px;}
  .kb-kata .kb-key{min-width:0;padding:0;font-family:'Shippori Mincho',serif;font-size:1.05rem;}
  .kb-kata .kb-hueco{display:block;}
  .kb-kata .kb-wide{grid-column:span 2;font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;}
  .cfg-muestra{display:flex;flex-direction:column;gap:14px;align-items:flex-start;background:var(--papel);border:1px dashed var(--line);border-radius:10px;padding:16px 16px 14px;margin:8px 0 4px;}
  .cfg-m-frase{font-family:'Shippori Mincho',serif;font-size:1.35rem;color:var(--sumi);}
  .cfg-letra-muestra{font-family:'Zen Maru Gothic',sans-serif;font-size:1rem;color:var(--sumi);background:var(--papel);border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin:6px 0 4px;}
  .cfg-letra-muestra span{font-family:'Shippori Mincho',serif;font-size:1.4rem;margin-right:6px;}
  .cfg-dias .ver-filtro{min-width:40px;text-align:center;}
  .cfg-hora{font-family:'Zen Maru Gothic',sans-serif;font-size:1.2rem;color:var(--sumi);background:var(--papel);border:1.5px solid var(--line);border-radius:8px;padding:8px 12px;}
  .cfg-opcion{background:var(--papel);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin:0 0 10px;font-family:'Zen Maru Gothic',sans-serif;}
  .cfg-opcion > b{display:flex;align-items:center;gap:8px;font-weight:500;color:var(--sumi);}
  .cfg-opcion p{font-size:.86rem;color:var(--gris-osc);line-height:1.5;margin:6px 0 10px;}
  .cfg-opcion p b{color:var(--sumi);font-weight:500;}
  .cfg-opcion small{display:block;font-size:.76rem;color:var(--gris);margin-top:8px;line-height:1.4;}
  .cfg-cal-btns{display:flex;flex-wrap:wrap;gap:8px;}
  .cfg-cal-btns .btn{text-decoration:none;display:inline-flex;align-items:center;}
  .cfg-opcion.pronto{border-style:dashed;background:transparent;}
  .cfg-opcion.pronto p{margin-bottom:0;}
  /* Créditos y licencias */
  .cr-bloque .cr-autor{color:var(--sumi);}
  .cr-bloque .cr-version{font-size:.8rem;color:var(--gris);}
  .cr-bloque .cr-enlaces{margin-bottom:0;font-size:.84rem;line-height:1.7;}
  .cr-fuentes{margin:6px 0 10px;padding-left:18px;font-size:.86rem;line-height:1.45;color:var(--sumi);}
  .cr-fuentes li{margin:0 0 6px;} .cr-fuentes small{margin-top:2px;}
  .cfg-op-kj{font-family:'Shippori Mincho',serif;font-weight:700;color:var(--shu-deep);border:1.5px solid var(--shu);border-radius:5px;width:26px;height:26px;display:inline-grid;place-items:center;font-size:.9rem;transform:rotate(-3deg);}
  .cfg-pronto{font-size:.7rem;color:var(--kincha-osc-2);border:1px solid var(--kincha);border-radius:10px;padding:1px 8px;margin-left:auto;}
  .cfg-cero-label{display:block !important;margin:16px 0 8px !important;}   /* «Para confirmar, escribe EMPEZAR» (AUT-CS-02) */
  .lb-hanko{display:flex;align-items:center;gap:12px;margin:4px 0 10px;font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);}
  .lb-hanko small{display:block;font-family:'Shippori Mincho',serif;color:var(--shu-deep);font-size:.95rem;}

  /* Ayudas de lectura: rōmaji debajo (data-rom) y furigana encima (.frg) */
  :root[data-romaji="si"] [data-rom]::after{content:attr(data-rom);display:block;font-family:'Zen Maru Gothic',sans-serif;font-size:max(.58em, .72rem);
    font-weight:400;letter-spacing:.02em;line-height:1.3;color:var(--gris-osc);margin-top:1px;text-transform:none;white-space:normal;}
  :root[data-romaji="si"] span[data-rom], :root[data-romaji="si"] b[data-rom]{display:inline-block;text-align:center;vertical-align:middle;}
  :root[data-romaji="si"] .st-jp[data-rom], :root[data-romaji="si"] .cfg-m-frase[data-rom]{display:block;text-align:left;}
  .frg{display:inline-block;position:relative;}
  :root[data-furigana="si"] .frg{padding-top:.6em;}
  :root[data-furigana="si"] .frg::before{content:attr(data-furi);position:absolute;top:0;left:50%;transform:translateX(-50%);white-space:nowrap;
    font-family:'Zen Maru Gothic',sans-serif;font-size:.45em;line-height:1.2;letter-spacing:0;color:var(--gris-osc);font-weight:400;}

  /* Accesibilidad: tamaño de letra (todo va en rem) */
  :root[data-letra="grande"]{font-size:112.5%;}
  :root[data-letra="enorme"]{font-size:125%;}
  /* Letra grande: la tira de la semana pasa a dos líneas para no salirse */
  :root[data-letra="grande"] .semana, :root[data-letra="enorme"] .semana{flex-wrap:wrap;}
  :root[data-letra="grande"] .sem-txt, :root[data-letra="enorme"] .sem-txt{white-space:normal;}
  /* ---- Pestaña central: el camino, siempre destacado ----
     Un sello redondo de estación (道 en un aro bermellón) que asoma por encima de la barra. No lleva el fondo azul de
     «la pestaña elegida»: así destaca siempre sin parecer elegida estando en otra. Elegida, el sello se rellena. */
  .tab.principal .tab-kj{display:grid;place-items:center;width:48px;height:48px;margin-top:-20px;border-radius:50%;box-sizing:border-box;
    background:var(--papel);border:2.5px solid var(--shu);color:var(--shu-deep);font-size:1.5rem;font-weight:700;line-height:1;
    box-shadow:0 3px 10px color-mix(in srgb, var(--sumi) 20%, transparent);transition:background var(--dur-rapida, .16s) var(--curva-suave, ease), color var(--dur-rapida, .16s) var(--curva-suave, ease);}
  .tab.principal .tab-name{font-weight:700;color:var(--shu-deep);}
  .tab.principal.on{background:transparent;box-shadow:none;}
  .tab.principal.on .tab-kj{background:var(--shu);color:var(--papel);}
  .tab.principal.on .tab-name{color:var(--shu-deep);}
  @media (hover:hover){ .tab.principal:not(.on):hover{background:transparent;} .tab.principal:not(.on):hover .tab-kj{background:var(--tinte-shu);} }
  .tab.principal:focus-visible{outline:none;} .tab.principal:focus-visible .tab-kj{outline:2px solid var(--shu);outline-offset:3px;}
  /* ---- Pestaña Kanji ---- */
  .kanji-big{font-family:'Shippori Mincho',serif;font-size:6.5rem;line-height:1.05;color:var(--sumi);margin-top:6px;}
  .q-kanji{display:block;font-family:'Shippori Mincho',serif;font-size:3.8rem;line-height:1.15;margin-top:8px;text-align:center;}
  .q-es{display:block;text-align:center;color:var(--gris-osc);font-size:.85rem;margin-top:2px;}
  .kj-fila{font-family:'Shippori Mincho',serif;font-size:2.4rem;letter-spacing:.12em;text-align:center;margin:10px 0;white-space:nowrap;}
  .q-kanji-pal{font-size:2.8rem;}
  .kj-palabras{margin:14px auto 0;max-width:340px;text-align:left;}
  .kj-palabras > small{display:block;color:var(--gris-osc);font-size:.78rem;margin-bottom:4px;}
  .kj-pal{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px dashed var(--line);}
  .kj-w{font-family:'Shippori Mincho',serif;font-size:1.5rem;min-width:5.5em;}
  .kj-w rt{font-family:'Zen Maru Gothic',sans-serif;font-size:.5em;color:var(--gris-osc);}
  .kj-es{flex:1;font-size:.88rem;color:var(--sumi);}
  @media (max-width:600px){ .kanji-card .kanji-big{font-size:5rem;} }
  .kj-origen{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin:10px 0 0;}
  .kj-origen svg{width:58px;height:58px;fill:none;stroke:var(--shu);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;color:var(--shu);}
  .kj-origen svg path[fill], .kj-origen svg circle[fill]{stroke:none;}
  .kj-flecha{color:var(--gris);font-size:1.2rem;}
  .kj-o-k{font-family:'Shippori Mincho',serif;font-size:2.6rem;line-height:1;color:var(--sumi);}
  .kj-origen figcaption{flex-basis:100%;text-align:center;font-size:.82rem;color:var(--gris-osc);}
  @media (prefers-reduced-motion:no-preference){ .kj-origen svg{animation:kj-aparece .9s ease-out both;} .kj-o-k{animation:kj-aparece .6s .7s ease-out both;} }
  @keyframes kj-aparece{from{opacity:0;transform:scale(.85);}to{opacity:1;transform:none;}}
  .kj-tambien{margin:-2px 0 6px;font-size:.88rem;color:var(--gris-osc);}
  .kj-lee{margin:8px 0 0;font-size:.92rem;color:var(--gris-osc);}
  .kj-lee b{font-family:'Shippori Mincho',serif;font-size:1.25rem;color:var(--sumi);margin:0 4px;}
  :root[data-furigana="si"] .frg.sabido{padding-top:0;}
  :root[data-furigana="si"] .frg.sabido::before{display:none;}
  /* Al terminar una lección del camino: los kanji que han salido y se pueden aprender en la pestaña Kanji */
  .kj-puerta{max-width:440px;margin:16px auto 0;text-align:center;}
  .kj-puerta-t{font-size:1.1rem;margin:0 0 8px;}
  .kj-puerta .btn{margin-top:12px;}
  .kj-sugerencia{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:16px auto 0;max-width:440px;padding:12px 14px;border:1.5px solid var(--line);border-radius:14px;background:var(--papel);text-align:left;}
  .kj-sug-k{flex-basis:100%;font-family:'Shippori Mincho',serif;font-size:1.6rem;color:var(--ai-deep);letter-spacing:.12em;}
  .kj-sug-t{flex:1 1 180px;font-size:.86rem;color:var(--gris-osc);line-height:1.35;}
  .kj-sugerencia .btn{flex:0 0 auto;margin-left:auto;}
  .kj-sug-t b{display:block;color:var(--sumi);font-size:.95rem;}

  /* ===== Plano de metro v2: vías que dan vueltas, transbordos y plano general (js/motor/plano.js) ===== */
  /* Colores de las líneas. Cada tema los «tiñe» hacia su paleta: --mezcla es el color con el que se mezclan
     y --mezcla-pct cuánto (0% en washi: los colores de siempre). Así las 17 líneas casan con cada tema. */
  :root{
    --lb-0:#b4553f; --lb-1:#2f6f9f; --lb-2:#3f8a63; --lb-3:#c88a1e; --lb-4:#7a5ea8; --lb-5:#1f8f8c;
    --lb-6:#c2557a; --lb-7:#8a6d3b; --lb-8:#d0702e; --lb-9:#5b7fb8; --lb-10:#a0457a; --lb-11:#6c8c2f;
    --lb-12:#2a5f6e; --lb-13:#c0392b; --lb-14:#4b4b8f; --lb-15:#2b2a28; --lb-16:#8c7a3a;
    --lb-verbos:#8e5aa8; --lb-historias:#d4881f;
    --mezcla:var(--sumi); --mezcla-pct:0%;
    --linea-0:color-mix(in oklab, var(--lb-0), var(--mezcla) var(--mezcla-pct));
    --linea-1:color-mix(in oklab, var(--lb-1), var(--mezcla) var(--mezcla-pct));
    --linea-2:color-mix(in oklab, var(--lb-2), var(--mezcla) var(--mezcla-pct));
    --linea-3:color-mix(in oklab, var(--lb-3), var(--mezcla) var(--mezcla-pct));
    --linea-4:color-mix(in oklab, var(--lb-4), var(--mezcla) var(--mezcla-pct));
    --linea-5:color-mix(in oklab, var(--lb-5), var(--mezcla) var(--mezcla-pct));
    --linea-6:color-mix(in oklab, var(--lb-6), var(--mezcla) var(--mezcla-pct));
    --linea-7:color-mix(in oklab, var(--lb-7), var(--mezcla) var(--mezcla-pct));
    --linea-8:color-mix(in oklab, var(--lb-8), var(--mezcla) var(--mezcla-pct));
    --linea-9:color-mix(in oklab, var(--lb-9), var(--mezcla) var(--mezcla-pct));
    --linea-10:color-mix(in oklab, var(--lb-10), var(--mezcla) var(--mezcla-pct));
    --linea-11:color-mix(in oklab, var(--lb-11), var(--mezcla) var(--mezcla-pct));
    --linea-12:color-mix(in oklab, var(--lb-12), var(--mezcla) var(--mezcla-pct));
    --linea-13:color-mix(in oklab, var(--lb-13), var(--mezcla) var(--mezcla-pct));
    --linea-14:color-mix(in oklab, var(--lb-14), var(--mezcla) var(--mezcla-pct));
    --linea-15:color-mix(in oklab, var(--lb-15), var(--mezcla) var(--mezcla-pct));
    --linea-16:color-mix(in oklab, var(--lb-16), var(--mezcla) var(--mezcla-pct));
    /* Líneas transversales (字 Kanji, 動 Verbos, 話 Historias) y el texto que va encima de un color de línea */
    --tr-kanji:var(--sumi);
    --tr-verbos:color-mix(in oklab, var(--lb-verbos), var(--mezcla) var(--mezcla-pct));
    --tr-historias:color-mix(in oklab, var(--lb-historias), var(--mezcla) var(--mezcla-pct));
    --sobre-linea:#fbf6ea;   /* la tinta de los carteles de color: la misma en todas las líneas y en todos los temas */
    --via-pct:30%;   /* cuánto color tiene la vía que aún no has recorrido */
  }
  /* Carteles de color (24/10, Alex): la letra es SIEMPRE la misma tinta clara (--sobre-linea), en todas las líneas y en
     todos los temas. Lo que cambia es el fondo: --lc-f / --tc-f son el color de la línea con la luz (OKLCH) como mucho en
     0,54, así la tinta clara se lee (4,5:1 o más). Las líneas oscuras no cambian; las claras (el amarillo de Matsuri, el
     ámbar de Tokio de noche, las de Samurái) se ven un poco más hondas solo en sus carteles: la vía sigue con su color.
     Sin soporte, el color de siempre. Nunca otra tinta encima de un cartel: si no se lee, se oscurece el fondo. */
  /* Excepción (03/11, Alex): las franjas del número de cada estación y el cartel «Repaso del tramo» llevan el color de
     la línea tal cual, el mismo que la vía, hechas o no. Ahí lo que se ajusta es la tinta (--lc-t): oscura sobre una
     línea clara (el ámbar de Tokio de noche) y clara sobre una oscura, para que se lea. Sin soporte, como antes. */
  [style*="--lc"]{--lc-f:var(--lc); --lc-e:var(--lc-f); --lc-t:var(--sobre-linea);} [style*="--tc"]{--tc-f:var(--tc);}
  @supports (color: oklch(from red l c h)){
    [style*="--lc"]{--lc-f:oklch(from var(--lc) min(l, .54) c h); --lc-e:var(--lc);
      --lc-t:oklch(from var(--lc) clamp(.24, (.66 - l) * 1000, .97) min(c, .05) h);}
    [style*="--tc"]{--tc-f:oklch(from var(--tc) min(l, .54) c h);}
  }
  .unit-head{color:var(--sobre-linea);}
  :root[data-tema="sakura"]{--mezcla:var(--ai);--mezcla-pct:24%;}
  :root[data-tema="matsuri"]{--mezcla:var(--shu);--mezcla-pct:8%;}
  :root[data-tema="manga"]{--mezcla:var(--sumi);--mezcla-pct:42%;}
  /* En los temas oscuros las líneas se aclaran (si no, no se verían sobre el fondo) y la línea casi negra pasa a gris claro */
  :root[data-tema="samurai"]{--mezcla:var(--sumi);--mezcla-pct:30%;--lb-15:#8f857b;--via-pct:48%;}
  :root[data-tema="noche"]{--mezcla:var(--sumi);--mezcla-pct:28%;--lb-15:#8b88a6;--via-pct:48%;}
  /* Paleta unificada por tema: cada tema tiene sus 6 tintas (--tp-0 … --tp-5), sacadas de sus propios colores,
     y las 17 líneas salen de ahí: las 6 tintas, luego las mismas más hondas (hacia --sumi) y luego más suaves
     (hacia --washi). Así el camino, el plano, las cabeceras y el tren hablan el mismo idioma que el resto del tema.
     Washi no cambia: sus 17 colores tradicionales de siempre. */
  :root[data-tema="sakura"]{--tp-0:#d0607f;--tp-1:#7a3b55;--tp-2:#6f8a5e;--tp-3:#8a6fae;--tp-4:#e08a6a;--tp-5:#4f8a8b;}
  :root[data-tema="matsuri"]{--tp-0:#cf3a24;--tp-1:#1f3a6e;--tp-2:#d99417;--tp-3:#2f6a4a;--tp-4:#e0622a;--tp-5:#8a2f5a;}
  :root[data-tema="manga"]{--tp-0:#111111;--tp-1:#c0392b;--tp-2:#5a5750;--tp-3:#9b2a1e;--tp-4:#3f3d38;--tp-5:#7a756c;}
  :root[data-tema="samurai"]{--tp-0:#c9a24a;--tp-1:#d0453a;--tp-2:#b07a4a;--tp-3:#8fa3b8;--tp-4:#8fae7a;--tp-5:#b07aa0;}
  /* Tokio de noche: solo rosa y cian a tope (+ ámbar como luz cálida); las demás tintas, mezclas desaturadas de esos tres con --noche-linea */
  :root[data-tema="noche"]{--tp-0:var(--neon-rosa);--tp-1:var(--neon-cian);--tp-2:var(--neon-ambar);
    --tp-3:color-mix(in oklab, var(--neon-rosa) 55%, var(--noche-linea));--tp-4:color-mix(in oklab, var(--neon-cian) 55%, var(--noche-linea));--tp-5:color-mix(in oklab, var(--neon-ambar) 55%, var(--noche-linea));}
  :root[data-tema]:not([data-tema="washi"]){--mezcla-pct:0%;
    --lb-0:var(--tp-0); --lb-1:var(--tp-1); --lb-2:var(--tp-2); --lb-3:var(--tp-3); --lb-4:var(--tp-4); --lb-5:var(--tp-5);
    --lb-6:color-mix(in oklab, var(--tp-0) 70%, var(--sumi)); --lb-7:color-mix(in oklab, var(--tp-1) 70%, var(--sumi)); --lb-8:color-mix(in oklab, var(--tp-2) 70%, var(--sumi));
    --lb-9:color-mix(in oklab, var(--tp-3) 70%, var(--sumi)); --lb-10:color-mix(in oklab, var(--tp-4) 70%, var(--sumi)); --lb-11:color-mix(in oklab, var(--tp-5) 70%, var(--sumi));
    --lb-12:color-mix(in oklab, var(--tp-0) 68%, var(--washi)); --lb-13:color-mix(in oklab, var(--tp-1) 68%, var(--washi)); --lb-14:color-mix(in oklab, var(--tp-2) 68%, var(--washi));
    --lb-15:color-mix(in oklab, var(--tp-3) 68%, var(--washi)); --lb-16:color-mix(in oklab, var(--tp-4) 68%, var(--washi));
    --lb-verbos:var(--tp-3); --lb-historias:var(--tp-2);
    --hondo:var(--sumi);}   /* «tinta honda»: hacia donde se oscurece un color (en los temas oscuros, hacia el fondo) */
  :root[data-tema="samurai"], :root[data-tema="noche"]{--hondo:var(--washi);}
  /* Contraste en los temas oscuros (Tokyo night y Samurái): lo que va SOBRE un color vivo (pestaña activa,
     cabecera de la línea, «Continuar») se escribe en tinta honda, no en otro color vivo que se pierde. */
  :root[data-tema="samurai"] .tab.on .tab-kj, :root[data-tema="noche"] .tab.on .tab-kj{color:inherit;}
  /* El rojo de Samurái es más claro (#e05a4c) para que se lea como texto sobre el fondo oscuro (4,7:1);
     por eso, lo que va escrito ENCIMA del rojo, en tinta oscura (5,1:1) en vez de blanco (2,9:1). */
  :root[data-tema="samurai"] .next-btn, :root[data-tema="samurai"] .btn-danger, :root[data-tema="samurai"] .tl-item.is-done .tl-dot, :root[data-tema="samurai"] .w-seal.on{color:var(--washi);}
  :root[data-tema="samurai"] .read-kj, :root[data-tema="noche"] .read-kj{color:var(--washi);}
  :root[data-tema="samurai"] .read-list.later .read-card, :root[data-tema="noche"] .read-list.later .read-card{opacity:.8;}   /* las de «Más adelante»: apagadas, pero legibles */
  :root[data-tema="samurai"] .tn-s, :root[data-tema="noche"] .tn-s{color:inherit;font-weight:700;opacity:.9;}
  /* Las tarjetas de secciones (Repasar, Leer…) y los libros de la estantería, con las tintas del tema */
  :root[data-tema]:not([data-tema="washi"]) .sec-shu{background:linear-gradient(135deg, var(--tp-0), color-mix(in oklab, var(--tp-0) 72%, var(--hondo)));}
  :root[data-tema]:not([data-tema="washi"]) .sec-ai{background:linear-gradient(135deg, var(--tp-1), color-mix(in oklab, var(--tp-1) 72%, var(--hondo)));}
  :root[data-tema]:not([data-tema="washi"]) .sec-kin{background:linear-gradient(135deg, var(--tp-2), color-mix(in oklab, var(--tp-2) 72%, var(--hondo)));}
  :root[data-tema]:not([data-tema="washi"]) .sec-mura{background:linear-gradient(135deg, var(--tp-3), color-mix(in oklab, var(--tp-3) 72%, var(--hondo)));}
  :root[data-tema]:not([data-tema="washi"]) .sec-card .sec-kj{color:color-mix(in oklab, var(--washi) 80%, var(--tp-2));}
  :root[data-tema]:not([data-tema="washi"]){--omk-tela-sellos:color-mix(in oklab, var(--tp-1) 62%, var(--hondo));--omk-tela-omikuji:color-mix(in oklab, var(--tp-0) 62%, var(--hondo));
    --omk-madera-cl:color-mix(in oklab, var(--kincha) 55%, var(--hondo));--omk-madera:color-mix(in oklab, var(--kincha) 35%, var(--hondo));}

  /* La vía de cada línea abierta: la dibuja Plano.vias() sobre las estaciones */
  .metro-wrap{position:relative;margin-top:10px;background:color-mix(in srgb, var(--papel) 78%, transparent);border:1px solid var(--line);border-radius:18px;}
  .metro-wrap > svg.via{position:absolute;left:0;top:0;pointer-events:none;z-index:0;overflow:visible;}
  .metro-wrap.has-via .st::before, .metro-wrap.has-via .st::after{display:none;}
  .via path{fill:none;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;}
  .via .via-base{stroke:color-mix(in srgb, var(--lc) var(--via-pct), var(--papel));}
  .via .via-hecha{stroke:var(--lc);}

  /* Estaciones en serpiente: una fila hacia la derecha, la siguiente vuelve y la vía da la media vuelta.
     Móvil: 3 por fila (2 en pantallas muy estrechas); tableta: 4; ordenador: 6. */
  .metro-wrap ol.metro{display:grid;grid-template-columns:repeat(3, minmax(0,1fr));grid-auto-rows:minmax(116px, auto);row-gap:2px;padding:14px 14px 12px;margin:0;}
  .metro-wrap ol.metro .st{grid-row:var(--r3);grid-column:var(--c3);}
  .metro-wrap .metro .st button{z-index:1;flex-direction:column;align-items:center;justify-content:flex-start;text-align:center;gap:5px;min-height:0;height:100%;padding:6px 3px 8px;}
  .metro-wrap .metro .st-dot, .metro-wrap .metro .st.is-current .st-dot{margin-left:0;}
  .metro-wrap .metro .st-dot{width:34px;height:34px;font-size:.88rem;}
  .metro-wrap .metro .st.is-current .st-dot{width:40px;height:40px;font-size:1rem;}
  .metro-wrap .metro .st-body{align-items:center;width:100%;}
  .metro-wrap .metro .st-num{align-self:center;font-size:.6rem;}
  .metro-wrap .metro .st-body b{font-size:.8rem;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;}
  .metro-wrap .metro .st-body small{font-size:.64rem;line-height:1.3;}
  /* Cartel de estación (駅名標): una placa de papel con el número de la estación en una franja del color de la línea.
     Es opaca, así la vía nunca pasa por encima del nombre. En el móvil, estrecha para que la media vuelta la rodee. */
  .metro-wrap .metro .st-body{width:min(100%, 92px);gap:1px;padding:0 4px 5px;background:var(--papel);border:1.5px solid color-mix(in srgb, var(--lc) 40%, var(--line));
    border-radius:7px;overflow:hidden;box-shadow:0 1px 0 var(--washi-deep);}
  .metro-wrap .metro .st-num{align-self:stretch;margin:0 -4px 3px;border:0;border-radius:0;background:var(--lc-e, var(--lc));color:var(--lc-t, var(--sobre-linea));padding:1px 0;line-height:1.45;}
  .metro-wrap .metro .st-body b{font-size:.74rem;line-height:1.2;}
  .metro-wrap .metro .st-body small{font-size:.6rem;}
  /* El repaso que cierra cada tramo (03/11, Alex): su cartel, del color de la línea como la franja del número (--lc-e,
     --lc-t), y el punto con un aro más */
  /* Todas las estaciones del mismo tamaño (03/11, Alex): la placa tiene una altura fija, el título (dos líneas como
     mucho) queda centrado entre la franja del número y la línea de abajo, y nada la estira. El examen, aparte. */
  .metro-wrap .metro .st:not(.st-examen) .st-body{flex:none;height:72px;position:relative;justify-content:flex-start;}
  .metro-wrap .metro .st:not(.st-examen) .st-body b{margin-block:auto;flex:none;}
  .metro-wrap .metro .st-trans{position:absolute;top:1px;right:3px;margin:0;}   /* 動 字 話 del transbordo, en la esquina de la franja */
  .metro-wrap .metro .st-trans i{width:13px;height:13px;font-size:.5rem;border-radius:3px;}
  .metro-wrap .metro .st-trans em{display:none;}
  .metro-wrap .metro .st.is-cierre .st-dot{box-shadow:0 0 0 3px var(--papel), 0 0 0 5px var(--lc);}
  /* El repaso del tramo: una franja fina abajo, en el sitio de «Aprender» o el porcentaje (el ✓ del punto ya dice si está hecha) */
  .metro-wrap .metro .st.is-cierre .st-body > :not(.st-num):not(b):not(.st-cierre):not(.st-trans){display:none;}
  .st-cierre{display:block;align-self:stretch;margin:0 -4px -5px;padding:3px 2px 4px;background:var(--lc-e, var(--lc));color:var(--lc-t, var(--sobre-linea));
    font-family:'Zen Maru Gothic',sans-serif;font-size:.56rem;font-weight:700;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}   /* sin mayúsculas, como «Repaso de kana» (PR-04) */
  .metro-wrap .metro .st.is-current .st-body{border-color:var(--shu);box-shadow:0 0 0 2px color-mix(in srgb, var(--shu) 25%, transparent);}
  @media (hover:hover){ .metro-wrap .metro .st button:hover .st-body{border-color:var(--lc);} }
  /* «Estás aquí» y «Nueva»: solo el kanji, en una etiqueta junto a la estación */
  .metro-wrap .metro .st-here{position:absolute;top:0;left:calc(50% + 20px);padding:2px 6px;font-size:0;white-space:nowrap;z-index:2;}
  .metro-wrap .metro .st-here b{font-size:.78rem;}
  /* En la última columna, la etiqueta va a la izquierda de la estación para no salirse */
  .metro-wrap .metro .fin3 .st-here{left:auto;right:calc(50% + 20px);}
  /* El % de la lección hecha: debajo del nombre, grande y claro (la satisfacción de verlo todo al 100 %) */
  .st-pct{display:block;font-family:'Zen Maru Gothic',sans-serif;font-weight:700;font-size:1.3rem;line-height:1.1;margin-top:2px;
    color:color-mix(in srgb, var(--lc, var(--ai)) 72%, var(--sumi));font-variant-numeric:tabular-nums;letter-spacing:.01em;}
  .metro-wrap .metro .st-pct{font-size:1.15rem;}
  .st-pct.oro{color:var(--rc-oro-tinta);}
  @media (max-width:359px){
    .metro-wrap ol.metro{grid-template-columns:repeat(2, minmax(0,1fr));}
    .metro-wrap ol.metro .st{grid-row:var(--r2);grid-column:var(--c2);}
    .metro-wrap .metro .fin3 .st-here{left:calc(50% + 20px);right:auto;}
    .metro-wrap .metro .fin2 .st-here{left:auto;right:calc(50% + 20px);}
  }
  @media (min-width:560px){
    .metro-wrap ol.metro{grid-template-columns:repeat(4, minmax(0,1fr));grid-auto-rows:minmax(128px, auto);padding:18px 40px 14px;}
    .metro-wrap ol.metro .st{grid-row:var(--r4);grid-column:var(--c4);}
    .metro-wrap .metro .st-dot{width:36px;height:36px;font-size:.95rem;}
    .metro-wrap .metro .st.is-current .st-dot{width:44px;height:44px;font-size:1.1rem;}
    .metro-wrap .metro .st-body{width:min(100%, 150px);padding:0 6px 6px;}
    .metro-wrap .metro .st:not(.st-examen) .st-body{height:80px;}
    .st-cierre{margin:0 -6px -6px;font-size:.56rem;letter-spacing:.06em;}
    .metro-wrap .metro .st-num{margin:0 -6px 4px;}
    .metro-wrap .metro .st-body b{font-size:.86rem;}
    .metro-wrap .metro .st-body small{font-size:.68rem;}
    .metro-wrap .metro .st-here{left:calc(50% + 26px);}
    .metro-wrap .metro .st-here b{font-size:.86rem;}
    .metro-wrap .metro .fin3 .st-here{left:calc(50% + 26px);right:auto;}
    .metro-wrap .metro .fin4 .st-here{left:auto;right:calc(50% + 26px);}
  }

  /* Transbordo (乗換): estación con anillo de tinta, como en los planos de metro */
  .st.is-trans .st-dot{box-shadow:0 0 0 3px var(--papel), 0 0 0 5.5px var(--sumi);}
  .st.is-trans.is-current .st-dot{box-shadow:0 0 0 3px var(--papel), 0 0 0 5.5px var(--sumi), 0 0 0 9px var(--shu);}
  .st-trans{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:3px;margin-top:3px;font-size:.66rem;color:var(--gris-osc);}
  .st-trans > span{font-family:'Shippori Mincho',serif;font-weight:700;color:var(--papel);background:var(--sumi);border-radius:4px;padding:0 4px;line-height:1.5;}
  .st-trans i{font-style:normal;font-family:'Shippori Mincho',serif;font-weight:700;width:17px;height:17px;border-radius:4px;background:var(--tc-f, var(--tc));color:var(--sobre-linea);display:inline-flex;align-items:center;justify-content:center;font-size:.7rem;}
  .st-trans em{font-style:normal;}
  @media (max-width:559px){ .st-trans em{display:none;} }   /* en el móvil, sin el nombre: basta el kanji de la transversal */
  /* Pasada en exprés (急行) */
  .unit-acts{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;align-items:flex-end;gap:6px;}
  .unit-acts .unit-start{position:static;}
  .unit-head:has(.unit-acts) .unit-txt{padding-right:96px;}
    background:color-mix(in srgb, var(--kincha) 30%, transparent);color:var(--washi);cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;}

  /* Plano general (路線図): solo al pulsar «Ver el plano completo», a pantalla entera, para no abrumar al empezar */
  .pl-acceso{display:flex;flex-direction:column;align-items:center;gap:6px;margin:4px 0 16px;}
  .pl-acceso .pl-ley{align-self:stretch;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:2px -16px 0;padding:2px 16px 4px;}
  .pl-acceso .pl-ley::-webkit-scrollbar{display:none;}
  .pl-acceso .pl-sim{display:none;}
  .pl-ley{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-family:'Zen Maru Gothic',sans-serif;}
  .pl-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:5px 10px 5px 5px;border-radius:999px;background:var(--papel);
    border:1.5px solid color-mix(in srgb, var(--tc) 45%, var(--line));font-size:.8rem;color:var(--sumi);}
  .pl-chip > i{font-style:normal;font-family:'Shippori Mincho',serif;font-weight:700;width:22px;height:22px;border-radius:6px;background:var(--tc-f, var(--tc));color:var(--sobre-linea);display:inline-flex;align-items:center;justify-content:center;font-size:.8rem;}
  .pl-chip b{font-weight:500;}
  .pl-chip-n{font-size:.72rem;color:var(--gris-osc);}
  .pl-chip-bar{width:40px;height:4px;border-radius:3px;background:var(--line-cl);overflow:hidden;}
  .pl-chip-bar span{display:block;height:100%;background:var(--tc);}
  .pl-sim{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;color:var(--gris-osc);}
  .pl-sim svg{width:16px;height:16px;}
  .pl-sim-inter{fill:var(--papel);stroke:var(--sumi);stroke-width:2.2;}
  /* El dibujo del plano */
  .pl-svg{display:block;width:100%;height:auto;font-family:'Zen Maru Gothic',sans-serif;}
  .pl-linea{fill:none;stroke:color-mix(in srgb, var(--lc) var(--via-pct), var(--papel));stroke-width:7;stroke-linecap:round;stroke-linejoin:round;}
  .pl-linea.is-done{stroke:var(--lc);}
  .pl-pasillo{fill:none;stroke:var(--sumi);stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;}
  .pl-trans-borde{fill:none;stroke:var(--papel);stroke-width:9;stroke-linecap:round;stroke-linejoin:round;}
  .pl-trans-via{fill:none;stroke:var(--tc);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;opacity:.42;}
  .pl-trans.is-started .pl-trans-via{opacity:.85;}
  .pl-st{cursor:pointer;}
  .pl-hit{fill:transparent;}
  .pl-dot{fill:var(--papel);stroke:color-mix(in srgb, var(--lc) calc(var(--via-pct) + 10%), var(--papel));stroke-width:2;}
  .pl-st.is-done .pl-dot{stroke:var(--lc);stroke-width:2.4;}
  .pl-st.is-inter .pl-dot{stroke:var(--sumi);stroke-width:2.4;}
  .pl-st.is-inter:not(.is-done) .pl-dot{stroke:color-mix(in srgb, var(--sumi) 55%, var(--papel));}
  @media (hover:hover){ .pl-st:hover .pl-dot{stroke-width:3.6;stroke:var(--shu);} }
  .pl-badge{cursor:pointer;outline:none;}
  .pl-badge circle{fill:var(--lc-f, var(--lc));stroke:var(--papel);stroke-width:3;}
  .pl-badge:not(.is-started):not(.is-done):not(.is-current) circle{filter:saturate(.4);}   /* sin empezar: el color apagado, la letra igual */
  .pl-badge.is-current circle{stroke:var(--shu);stroke-width:3.5;}
  .pl-badge.is-done circle{stroke:var(--kincha);}
  .pl-badge:focus-visible circle{stroke:var(--kincha);stroke-width:5;}
  .pl-badge-kj{fill:var(--sobre-linea);font-family:'Shippori Mincho',serif;font-weight:700;font-size:14px;text-anchor:middle;}
  .pl-badge-name{font-size:12.5px;font-weight:500;fill:var(--sumi);paint-order:stroke;stroke:var(--papel);stroke-width:4px;stroke-linejoin:round;}
  @media (hover:hover){ .pl-badge:hover .pl-badge-name{fill:var(--shu);} }
  .pl-tbadge rect{fill:var(--tc-f, var(--tc));stroke:var(--papel);stroke-width:2.5;}
  .pl-tbadge text{fill:var(--sobre-linea);font-family:'Shippori Mincho',serif;font-weight:700;font-size:13px;text-anchor:middle;}
  .pl-here{cursor:pointer;}
  .pl-here-dot{fill:var(--shu);stroke:var(--papel);stroke-width:3;}
  .pl-here-pulso{fill:var(--shu);opacity:.25;}
  .pl-here rect{fill:var(--shu);}
  .pl-here text{fill:var(--papel);font-family:'Shippori Mincho',serif;font-weight:700;font-size:11.5px;text-anchor:middle;letter-spacing:.06em;}
  @media (prefers-reduced-motion:no-preference){
    .pl-here-pulso{animation:pl-pulso 2.4s ease-in-out infinite;transform-box:fill-box;transform-origin:center;}
    @keyframes pl-pulso{0%,100%{transform:scale(1);opacity:.28;} 50%{transform:scale(2.1);opacity:0;}}
  }
  /* A pantalla entera: se arrastra (o se desplaza) para moverse por el plano */
  body.pl-abierto{overflow:hidden;}
  .pl-over{position:fixed;inset:0;z-index:70;display:flex;flex-direction:column;background:var(--washi);}
  /* Barra de arriba: las pestañas (路線図 Plano · 案内 Cómo funciona) en el centro y «Cerrar» a la derecha */
  .pl-over-top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;padding:calc(10px + env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 10px max(16px, env(safe-area-inset-left));border-bottom:1px solid var(--line);
    font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);background:var(--papel);}
  .pl-over-top .pl-tabs{grid-column:2;}
  .pl-over-top .btn{grid-column:3;justify-self:end;padding:7px 16px;min-width:0;}
  .pl-cerrar-x{display:none;}
  .pl-tabs{display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:14px;background:var(--washi);}
  .pl-tabs button{border:0;background:transparent;border-radius:10px;padding:8px 16px;cursor:pointer;font-family:'Zen Maru Gothic',sans-serif;font-size:.95rem;color:var(--gris-osc);white-space:nowrap;}
  .pl-tabs button b{font-family:'Shippori Mincho',serif;font-weight:700;font-size:1.02rem;margin-right:5px;color:color-mix(in srgb, var(--shu) 82%, var(--sumi));}   /* contraste AA */
  .pl-tabs button[aria-selected="true"]{background:var(--ai);color:var(--washi);}
  .pl-tabs button[aria-selected="true"] b{color:inherit;}
  .pl-tabs button:focus-visible{outline:3px solid var(--kincha);outline-offset:1px;}
  /* En el móvil no cabe «Cerrar» con las pestañas centradas: se queda en una ✕ */
  @media (max-width:599px){
    .pl-over-top{gap:6px;padding-left:10px;padding-right:10px;}
    .pl-over-top .btn{padding:6px 10px;}
    .pl-cerrar-t{display:none;} .pl-cerrar-x{display:inline;font-size:1rem;line-height:1;}
    .pl-tabs button{padding:7px 9px;font-size:.86rem;}
    .pl-tabs button b{font-size:.95rem;margin-right:4px;}
  }
  @media (max-width:360px){ .pl-tabs button{padding:6px 7px;font-size:.8rem;} .pl-tabs button b{font-size:.9rem;} }
  .pl-vista{flex:1;min-height:0;display:flex;flex-direction:column;}
  .pl-vista[hidden]{display:none;}
  /* El aviso: lleva a la pestaña 案内 */
  .pl-aviso{display:flex;align-items:center;gap:10px;width:100%;padding:10px 16px;border:0;border-bottom:1px solid var(--line);cursor:pointer;text-align:left;
    background:color-mix(in srgb, var(--kincha) 14%, var(--papel));color:var(--sumi);font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;line-height:1.4;}
  .pl-aviso b{font-weight:700;}
  .pl-aviso-i{flex:0 0 auto;width:24px;height:24px;border-radius:50%;background:var(--kincha);color:var(--papel);display:inline-flex;align-items:center;justify-content:center;
    font-family:'Noto Serif',serif;font-style:italic;font-weight:700;}
  .pl-aviso-ir{margin-left:auto;font-size:1.2rem;color:var(--kincha-osc);}
  .pl-aviso:focus-visible{outline:3px solid var(--kincha);outline-offset:-3px;}
  .pl-scroll{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;}
  .pl-scroll .pl-svg{width:1200px;max-width:none;margin:0 auto;}
  .pl-scroll .pl-svg.is-vertical{width:100%;max-width:520px;}   /* móvil: ocupa el ancho y se baja con scroll */
  .pl-scroll:has(.is-vertical){overflow-x:hidden;}
  @media (min-width:1240px){ .pl-scroll .pl-svg{width:min(100%, 1500px);} }
  .pl-vista > .pl-ley{padding:10px max(16px, env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));border-top:1px solid var(--line);background:var(--papel);flex-wrap:nowrap;overflow-x:auto;}
  /* La guía (案内): cómo funciona el plano */
  .pl-vista-guia{overflow:auto;-webkit-overflow-scrolling:touch;}
  .pl-guia{max-width:720px;margin:0 auto;padding:22px 18px calc(40px + env(safe-area-inset-bottom));font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);line-height:1.6;}
  .pl-guia h2{margin:0 0 8px;font-family:'Shippori Mincho',serif;font-size:1.55rem;color:var(--ai-deep);text-wrap:balance;}
  .pl-guia h2 span{color:var(--shu);margin-right:6px;}
  .pl-guia section{margin-top:24px;padding-top:18px;border-top:1px dashed var(--line);}
  .pl-guia h3{display:flex;align-items:center;gap:10px;margin:0 0 8px;font-family:'Shippori Mincho',serif;font-size:1.18rem;color:var(--ai-deep);}
  .pl-guia h3 i{font-style:normal;min-width:32px;height:30px;padding:0 6px;border-radius:7px;background:var(--sumi);color:var(--papel);display:inline-flex;align-items:center;justify-content:center;font-size:.9rem;}
  .pl-guia p{margin:0 0 8px;font-size:.95rem;max-width:62ch;}
  .pl-g-lead{font-size:1rem!important;color:var(--gris-osc);}
  .pl-g-num{white-space:nowrap;}
  .pl-g-kj{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;border:3px solid var(--lc);background:var(--papel);color:var(--lc);
    font-family:'Shippori Mincho',serif;font-size:.72rem;vertical-align:middle;}
  .pl-g-sim, .pl-g-trans, .pl-g-rec{list-style:none;padding:0;margin:10px 0 0;}
  .pl-g-sim{display:grid;gap:12px;}
  .pl-g-sim li{display:flex;align-items:flex-start;gap:12px;font-size:.92rem;}
  .pl-g-dot{flex:0 0 auto;width:32px;height:32px;border-radius:50%;border:4px solid var(--linea-2);background:var(--papel);display:flex;align-items:center;justify-content:center;
    font-family:'Shippori Mincho',serif;font-weight:700;font-size:.85rem;color:color-mix(in srgb, var(--linea-2) 70%, var(--sumi));}
  .pl-g-dot.is-done{background:var(--linea-2);color:var(--sobre-linea);}
  @supports (color: oklch(from red l c h)){ .pl-g-dot.is-done{background:oklch(from var(--linea-2) min(l, .54) c h);} }
  .pl-g-tag{flex:0 0 auto;align-self:flex-start;background:var(--shu);color:var(--papel);border-radius:6px;padding:2px 7px;font-family:'Shippori Mincho',serif;font-weight:700;font-size:.8rem;font-style:normal;line-height:1.5;}
  .pl-g-tipos{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px;}
  .pl-g-tipos span{display:inline-flex;align-items:center;gap:5px;padding:2px 9px 2px 3px;border:1px solid var(--line);border-radius:999px;background:var(--papel);font-size:.8rem;}
  .pl-g-tipos i{font-style:normal;width:20px;height:20px;border-radius:50%;background:var(--washi-deep);display:inline-flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-weight:700;font-size:.72rem;}
  .pl-g-trans{display:grid;gap:10px;}
  .pl-g-trans li{display:flex;align-items:flex-start;gap:12px;padding:10px 12px;border:1.5px solid color-mix(in srgb, var(--tc) 40%, var(--line));border-radius:12px;background:var(--papel);font-size:.9rem;}
  .pl-g-trans i{flex:0 0 auto;font-style:normal;width:30px;height:30px;border-radius:7px;background:var(--tc-f, var(--tc));color:var(--sobre-linea);display:inline-flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-weight:700;}
  .pl-g-trans small{display:block;margin-top:3px;color:var(--gris-osc);font-size:.78rem;}
  /* El recorrido completo, como el plano de una sola línea que hay encima de las puertas del vagón */
  .pl-g-rec li{position:relative;}
  .pl-g-rec li:not(:last-child)::before{content:"";position:absolute;left:28px;top:30px;height:100%;width:6px;background:var(--lc);border-radius:3px;}
  .pl-g-rec button{position:relative;z-index:1;display:flex;align-items:center;gap:12px;width:100%;padding:7px 8px;border:0;border-radius:10px;background:none;cursor:pointer;
    text-align:left;font-family:inherit;color:inherit;}
  @media (hover:hover){ .pl-g-rec button:hover{background:color-mix(in srgb, var(--papel) 80%, transparent);} .pl-g-rec button:hover b{color:var(--shu);} }
  .pl-g-rec button:focus-visible{outline:3px solid var(--kincha);outline-offset:1px;}
  .pl-g-rec i{flex:0 0 auto;font-style:normal;width:36px;height:36px;margin-left:3px;border-radius:50%;border:4px solid var(--lc);background:var(--papel);color:var(--lc);
    display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-weight:700;}
  .pl-g-rec li.is-done i{background:var(--lc-f, var(--lc));color:var(--sobre-linea);}
  .pl-g-rec li.is-current i{box-shadow:0 0 0 3px var(--papel), 0 0 0 5.5px var(--shu);}
  .pl-g-rec span{flex:1;min-width:0;display:flex;flex-direction:column;}
  .pl-g-rec b{font-weight:600;font-size:.95rem;}
  .pl-g-rec small{font-size:.76rem;color:var(--gris-osc);}
  .pl-g-rec em{flex:0 0 auto;font-style:normal;font-size:.8rem;color:var(--gris-osc);font-variant-numeric:tabular-nums;}
  .pl-g-rec em.pl-g-tag{color:var(--papel);}

  /* ===== Ordenador: el camino a lo ancho ===== */
  @media (min-width:1000px){
    body.plano-ancho .wrap{max-width:1240px;}
    /* «Continuar» a todo el ancho (con el avance dentro) y «Tu cuaderno» debajo, en una fila */
    body.plano-ancho .cuaderno{grid-template-columns:auto auto 1px minmax(0,1fr) auto;grid-template-areas:"num dias sep cosas ir";gap:0 22px;padding:14px 22px;}
    body.plano-ancho .cu-cab, body.plano-ancho .cu-avance, body.plano-ancho .cu-balda, body.plano-ancho .cuaderno .cu-baul{display:none;}
    body.plano-ancho .cu-num, body.plano-ancho .cu-sep, body.plano-ancho .cu-cosas{display:flex;}
    body.plano-ancho .cu-ir{grid-area:ir;align-self:center;}
    body.plano-ancho .cu-ir-kj, body.plano-ancho .cu-ir-t{display:inline;} body.plano-ancho .cu-ir-m{display:none;}
    body.plano-ancho .cuaderno .sem-d, body.plano-ancho .cuaderno .sem-d svg{width:34px;height:34px;}
    body.plano-ancho .pl-l-largo{display:inline;} body.plano-ancho .pl-l-corto{display:none;}
    body.plano-ancho .pl-acceso.pl-tarjeta{margin:16px 0 20px;}
    body.plano-ancho .pl-acceso .pl-ley{align-self:center;justify-content:center;margin:4px 0 0;padding:0;flex-wrap:wrap;overflow:visible;}
    body.plano-ancho .pl-acceso .pl-sim{display:inline-flex;}
    /* Las líneas cerradas, en rejilla; la abierta ocupa toda la fila */
    /* rejilla de 6: tres líneas cerradas por fila; Hiragana y Katakana, mitad y mitad (las dos juntas = lo que ocupa una línea abierta) */
    body.plano-ancho #path{display:grid;grid-template-columns:repeat(6, minmax(0,1fr));gap:14px;align-items:stretch;}
    body.plano-ancho #path .unit{margin-top:0;}
    body.plano-ancho #path .unit.is-closed{grid-column:span 2;}
    body.plano-ancho #path .unit.is-closed.is-silabario{grid-column:span 3;}
    body.plano-ancho #path .unit.is-closed{display:flex;flex-direction:column;} body.plano-ancho #path .unit.is-closed .unit-head{flex:1;}
    body.plano-ancho #path .unit:not(.is-closed){grid-column:1 / -1;}
    /* Hiragana y Katakana, siempre juntas arriba (mitad y mitad), también con una abierta: su plano va debajo de las dos, a todo el ancho */
    body.plano-ancho #path .unit.is-silabario:not(.is-closed){display:contents;}
    body.plano-ancho #path .unit.is-silabario > .unit-head, body.plano-ancho #path .unit.is-silabario.is-closed{grid-row:1;grid-column:span 3;}
    body.plano-ancho #path .unit.is-silabario > .metro-wrap, body.plano-ancho #path .unit.is-silabario > .tl-wrap{grid-row:2;grid-column:1 / -1;margin-top:0;}
    body.plano-ancho #path .unit.is-silabario > .metro-transfer{grid-row:3;grid-column:1 / -1;}
    body.plano-ancho #path .unit.is-silabario > .unit-head .unit-txt{padding-right:0;}
    body.plano-ancho .metro-transfer{margin-left:12px;}
    body.plano-ancho .unit-acts{flex-direction:row;}
    body.plano-ancho .unit:not(.is-closed) .unit-head:has(.unit-acts) .unit-txt{padding-right:220px;}
  }
  @media (min-width:1000px) and (max-width:1199px){ body.plano-ancho #path .unit.is-closed{grid-column:span 3;} }
  @media (min-width:1200px){
    body.plano-ancho .metro-wrap ol.metro{grid-template-columns:repeat(6, minmax(0,1fr));grid-auto-rows:minmax(132px, auto);row-gap:6px;padding:20px 74px 18px;}
    body.plano-ancho .metro-wrap ol.metro .st{grid-row:var(--r6);grid-column:var(--c6);}
    body.plano-ancho .metro-wrap .metro .fin4 .st-here{left:calc(50% + 26px);right:auto;}
    body.plano-ancho .metro-wrap .metro .fin6 .st-here{left:auto;right:calc(50% + 26px);}
  }
  /* Repaso de hoy: barra de la tanda y sello 済 «hecho» */
  .rv-barra{width:min(260px,80%);height:8px;margin:2px auto 12px;border-radius:4px;background:var(--line);overflow:hidden;}
  .rv-barra div{height:100%;background:var(--matcha);border-radius:4px;}
  .rv-hecho{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:8px;font-family:'Zen Maru Gothic',sans-serif;}
  .rv-hecho b{font-size:1.1rem;color:var(--ai-deep);}
  .rv-sello{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border:3px solid var(--shu);border-radius:12px;
    color:var(--shu);font-family:'Shippori Mincho',serif;font-size:2.2rem;transform:rotate(-8deg);}
  .rv-hecho-fin{flex-direction:row;justify-content:center;gap:14px;max-width:420px;margin:6px auto 10px;text-align:left;font-size:.92rem;color:var(--gris-osc);}
  .rv-hecho-fin .rv-sello{flex:none;animation:rv-sellar .45s cubic-bezier(.3,1.6,.6,1) .3s both;}
  @keyframes rv-sellar{from{transform:scale(1.8) rotate(-8deg);opacity:0;}to{transform:scale(1) rotate(-8deg);opacity:1;}}
  @media (prefers-reduced-motion:reduce){ .rv-hecho-fin .rv-sello{animation:none;} }
  /* Repaso por minutos: eliges el rato; la barra mide el tiempo, no las tarjetas */
  .rv-pregunta{margin:0 0 10px;text-align:center;font-family:'Shippori Mincho',serif;font-size:1.15rem;color:var(--sumi);}
  .rv-mins{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:320px;margin:0 auto 12px;}
  .rv-min{background:var(--washi);border:1.5px solid var(--line);border-radius:14px;padding:12px 4px;color:var(--sumi);cursor:pointer;
    display:flex;flex-direction:column;align-items:center;font-family:'Zen Maru Gothic',sans-serif;}
  .rv-min b{font-family:'Shippori Mincho',serif;font-size:1.7rem;line-height:1;}
  .rv-min span{font-size:.72rem;color:var(--gris-osc);}
  .rv-min[aria-pressed="true"]{background:var(--papel);border-color:var(--shu);box-shadow:inset 0 0 0 1.5px var(--shu);}
  .rv-min:focus-visible{outline:2px solid var(--shu);outline-offset:2px;}
  /* Repasar: una palabra de qué toca, «Hacia el N5» (巻物, una tira por tipo) y los atajos 献立 */
  .rv-toca{margin:12px 0 0;font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;color:var(--gris-osc);} .rv-toca b{color:var(--sumi);font-weight:500;}
  .rv-nada{margin:4px 0;font-family:'Zen Maru Gothic',sans-serif;color:var(--gris-osc);}
  .review-card .rv-mins{margin-bottom:12px;}
  .rv-sub{display:flex;align-items:baseline;gap:8px;} .rv-sub-kj{color:var(--shu);font-size:.95rem;}
  .rv-tiras{background:var(--papel);border:1px solid var(--line-cl);border-radius:14px;padding:14px;}
  .rv-n5{list-style:none;cursor:pointer;display:flex;flex-direction:column;gap:6px;}
  .rv-n5::-webkit-details-marker{display:none;}
  .rv-n5:focus-visible{outline:2px solid var(--shu);outline-offset:4px;border-radius:4px;}
  .rv-n5 .n5-rollo{height:12px;} .rv-n5 .n5-ley{font-size:.7rem;}
  .rv-n5-cab{display:flex;align-items:baseline;gap:10px;}
  .rv-n5-cab .n5-num b{font-size:1.7rem;}
  .rv-n5-txt{font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--gris-osc);}
  .rv-n5-cab{flex-wrap:wrap;}
  .rv-n5-det{display:flex;flex-wrap:wrap;gap:4px 14px;font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--gris-osc);font-variant-numeric:tabular-nums;}
  .rv-n5-det i{display:inline-block;width:.7em;height:.7em;border-radius:2px;margin-right:5px;vertical-align:-.04em;}
  .rv-n5-det .jd-arbol{background:var(--jd-arbol);} .rv-n5-det .jd-hoja{background:var(--jd-hoja);}
  .rv-n5-mas{margin-left:auto;font-family:'Zen Maru Gothic',sans-serif;font-size:.74rem;color:var(--gris-osc);border-bottom:1px dotted var(--line);}
  .rv-tiras[open] .rv-n5-mas{visibility:hidden;}
  .rv-tiras-det{display:grid;gap:14px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line-cl);}
  .kj-n5{margin:4px 0 16px;}
  .rv-tira-cab{display:flex;align-items:baseline;gap:8px;margin-bottom:6px;font-family:'Zen Maru Gothic',sans-serif;font-size:.9rem;}
  .rv-tira-kj{font-family:'Shippori Mincho',serif;color:var(--ai);width:2.2em;}
  .rv-tira-de{margin-left:auto;font-size:.8rem;color:var(--gris-osc);font-variant-numeric:tabular-nums;}
  .rv-tira-de b{font-family:'Shippori Mincho',serif;font-size:.98rem;color:var(--sumi);font-weight:500;}
  .rv-tira{position:relative;height:12px;border-radius:2px;background:var(--washi);border:1px solid var(--line-cl);overflow:hidden;}
  .rv-tira i{position:absolute;top:0;bottom:0;left:0;}
  .rv-tira::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg, transparent 0 calc(10% - 1px), color-mix(in srgb, var(--line) 70%, transparent) calc(10% - 1px) 10%);}
  .rv-tira-f{background:var(--matcha);} .rv-tira-a{background:color-mix(in srgb, var(--matcha) 45%, var(--papel));}
  .rv-leyenda{display:flex;justify-content:center;gap:14px;margin-top:8px;font-family:'Zen Maru Gothic',sans-serif;font-size:.74rem;color:var(--gris-osc);}
  .rv-leyenda i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:-1px;}
  .rv-atajos{display:grid;grid-template-columns:repeat(var(--n, 3), 1fr);gap:8px;}
  .rv-atajo{display:grid;justify-items:center;gap:4px;border:1px solid var(--line-cl);background:var(--papel);border-radius:12px;padding:12px 6px 10px;
    cursor:pointer;text-align:center;color:var(--sumi);font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;line-height:1.25;min-width:0;}
  .rv-atajo-kj{font-family:'Shippori Mincho',serif;font-size:1.35rem;color:var(--ai);line-height:1;}
  .rv-atajo.fuerte .rv-atajo-kj{color:var(--shu);}
  .rv-atajo[aria-expanded="true"]{border-color:var(--shu);box-shadow:inset 0 0 0 1px var(--shu);}
  .rv-chips{display:flex;flex-wrap:wrap;gap:6px;}
  /* La bandeja de «Por unidad»: cuelga de su ficha, con un piquito que la señala (--x) */
  .rv-bandeja{position:relative;margin-top:12px;border:1px solid var(--line-cl);background:var(--papel);border-radius:14px;padding:12px 12px 10px;}
  .rv-bandeja[hidden]{display:none;}
  .rv-bandeja::before{content:'';position:absolute;top:-7px;left:var(--x, 50%);width:12px;height:12px;background:var(--papel);
    border-left:1px solid var(--line-cl);border-top:1px solid var(--line-cl);transform:translateX(-50%) rotate(45deg);}
  .rv-bandeja p{margin:0 0 10px;font-size:.82rem;color:var(--gris-osc);}
  .rv-chip{font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;border:1.5px solid var(--line);background:var(--papel);border-radius:999px;padding:6px 12px;cursor:pointer;color:var(--sumi);}
  .rv-chip span{font-family:'Shippori Mincho',serif;color:var(--ai);margin-right:5px;}
  .rv-atajo:focus-visible,.rv-chip:focus-visible{outline:2px solid var(--shu);outline-offset:2px;}
  @media (hover:hover){ .rv-atajo:hover,.rv-chip:hover{border-color:var(--shu);} }
  .rv-tiempo .progress-fill{background:var(--sumi);transition:width 1s linear;}
  .tab-badge.punto{min-width:0;width:10px;height:10px;padding:0;top:6px;right:18px;border-radius:50%;}
  /* Calentamiento antes de una lección: franja de washi con la taza de té */
  .calienta{display:flex;align-items:center;gap:12px;margin:0 0 12px;padding:10px 14px;background:var(--washi-deep);
    border-left:4px solid var(--kincha);border-radius:4px 14px 14px 4px;font-family:'Zen Maru Gothic',sans-serif;font-size:.86rem;color:var(--gris-osc);}
  .calienta .ilus{flex:none;width:44px;height:44px;}
  .calienta .ilus .a{stroke:var(--kincha);}
  .calienta p{margin:0;min-width:0;}
  .calienta b{display:block;font-family:'Shippori Mincho',serif;font-size:1rem;color:var(--sumi);}
  .calienta.listo{border-left-color:var(--matcha);animation:calienta-pliega .5s ease .7s both;}
  .calienta.listo .ilus .a{stroke:var(--matcha);}
  .calienta.examen.listo{animation:none;}   /* antes del examen se queda: el examen lo empiezas tú */
  /* «Antes de irte» (PR-24): de qué línea viene cada pregunta y el «Saltar», discreto bajo «Siguiente» */
  .cierre-de{margin:-6px 0 10px;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;letter-spacing:.03em;color:var(--gris);}
  .cierre-saltar{display:block;margin:6px auto 0;padding:6px 10px;background:none;border:0;font:inherit;font-family:'Zen Maru Gothic',sans-serif;
    font-size:.86rem;color:var(--gris-osc);text-decoration:underline;text-underline-offset:3px;cursor:pointer;}
  .cierre-saltar:focus-visible{outline:2px solid var(--shu);outline-offset:2px;border-radius:6px;}
  .step-card .calienta{margin:14px 0 4px;}
  @keyframes calienta-pliega{to{opacity:0;transform:translateY(-6px);}}
  @media (prefers-reduced-motion:reduce){ .calienta.listo{animation:none;} .rv-tiempo .progress-fill{transition:none;} }
  /* «Tus confusiones»: barra de cada pareja (se llena según las separas) y las ya superadas */
  .conf-par{display:inline-flex;flex-direction:column;align-items:center;gap:5px;}
  .conf-barra{display:block;width:72px;height:6px;border-radius:3px;background:var(--line);overflow:hidden;}
  .conf-barra i{display:block;height:100%;background:var(--matcha);border-radius:3px;transition:width .4s ease;}
  .conf-progreso{display:flex;flex-direction:column;align-items:center;gap:5px;margin-top:10px;}
  .conf-progreso .conf-barra{width:min(220px,70%);height:8px;}
  .conf-progreso small{font-size:.8rem;color:var(--gris);}
  .conf-fila{display:flex;align-items:center;justify-content:center;gap:12px;margin:6px 0;font-size:1.2rem;}
  .conf-fila .conf-barra{width:140px;height:8px;}
  .conf-sup{margin:12px 0 0;font-size:.85rem;color:var(--gris-osc);}
  /* El repaso no cabe en la cuenta (AUT-03a): aviso calmado, sin interrumpir */
  .rv-lleno{margin:0 0 12px;padding:10px 12px;border:1px solid var(--line);border-left:3px solid var(--kincha);border-radius:8px;background:var(--papel);font-size:.9rem;color:var(--sumi);}
  .conf-sup span{margin-right:4px;} .conf-sup b{display:inline-block;margin:0 4px;font-weight:400;color:var(--matcha);}

  /* =====================================================================
     BIENVENIDA «KOMOREBI» (js/motor/escenas.js · Bienvenida): luz entre las hojas
     ===================================================================== */
  .bv{position:fixed;inset:0;z-index:1000;overflow:hidden;background:var(--bosque);cursor:pointer;-webkit-tap-highlight-color:transparent;}
  .bv-copa{position:absolute;inset:0;width:100%;height:100%;transform-origin:50% 0;animation:bv-mecer 3.2s ease-in-out infinite alternate;}
  .bv-copa path{fill:var(--hoja-bosque);}
  .bv-rayos{position:absolute;inset:-20% -20% 0 -20%;opacity:0;animation:bv-aparece 1.8s ease-out .35s forwards;}
  .bv-rayo{position:absolute;top:0;width:9%;height:140%;transform-origin:50% 0;transform:rotate(22deg);
    background:linear-gradient(to bottom, color-mix(in srgb, var(--luz-sol) 55%, transparent), transparent 85%);}
  .bv-motas{position:absolute;inset:0;}
  .bv-mota{position:absolute;border-radius:50%;opacity:0;animation:bv-mota 2.6s ease-in-out forwards;
    background:radial-gradient(circle, color-mix(in srgb, var(--luz-sol) 85%, transparent), transparent 70%);}
  .bv-sol{position:absolute;left:72%;top:6%;width:10vmin;height:10vmin;margin:-5vmin;border-radius:50%;background:var(--washi);transform:scale(0);
    animation:bv-sol 1.1s cubic-bezier(.6,0,.3,1) 2.05s forwards;}
  .bv-marca{position:absolute;left:50%;top:44%;translate:-50% 0;width:max-content;max-width:calc(100vw - 32px);padding:2vmin 6vmin 3vmin;border-radius:18px;text-align:center;font-family:'Shippori Mincho',serif;color:var(--sumi);opacity:0;animation:bv-subir .9s ease-out 2.55s forwards;outline:none;}
  .bv-marca:focus-visible{outline:3px solid var(--kincha);outline-offset:4px;}
  .bv-nombre{font-size:clamp(2rem, 9.5vmin, 4.5rem);font-weight:700;letter-spacing:.04em;line-height:1;}
  .bv-kj{font-size:clamp(.8rem, 3.6vmin, 1.6rem);letter-spacing:.5em;padding-left:.5em;color:var(--shu);margin-top:2vmin;}
  .bv-desc{font-family:'Zen Maru Gothic',sans-serif;font-size:clamp(.75rem, 3vmin, 1.1rem);color:var(--gris);margin-top:1.4vmin;}
  .bv-saltar{position:absolute;right:calc(14px + env(safe-area-inset-right, 0px));top:calc(14px + env(safe-area-inset-top, 0px));z-index:2;font:inherit;font-size:.85rem;
    border:1px solid color-mix(in srgb, var(--papel) 40%, transparent);background:color-mix(in srgb, var(--papel) 70%, transparent);color:var(--sumi);border-radius:999px;padding:6px 14px;cursor:pointer;}
  .bv-saltar:focus-visible{outline:3px solid var(--kincha);outline-offset:2px;}
  .bv.bv-fuera{animation:bv-fuera .6s ease forwards;pointer-events:none;}
  /* Columnas de luz (UX-PO-01, js/motor/portada-luz.js): el lienzo detrás del título, que sube a los 2,7 s. Mientras
     llega el primer fotograma, la noche del bosque; al llegar al papel se suelta el lienzo y el fondo es el papel del tema. */
  .bv.bv-luz{background:var(--bosque);}
  .bv-lienzo{position:absolute;inset:0;width:100%;height:100%;display:block;}
  .bv-luz .bv-marca{animation-delay:2.7s;animation-play-state:paused;}   /* corre con el primer fotograma (.bv-luz-va) */
  .bv-luz.bv-luz-va .bv-marca{animation-play-state:running;}
  .bv-luz-pronto .bv-marca{animation-delay:.2s;}
  .bv.bv-luz-papel{background:var(--washi);}
  .bv-luz-papel .bv-lienzo{display:none;}
  .bv.bv-corta *{animation-duration:.01s!important;animation-delay:0s!important;animation-iteration-count:1!important;}
  @keyframes bv-mecer{from{transform:rotate(-1.2deg);}to{transform:rotate(1.2deg);}}
  @keyframes bv-aparece{to{opacity:1;}}
  @keyframes bv-mota{0%{opacity:0;transform:translate(0,0) scale(.6);}45%{opacity:1;}100%{opacity:.85;transform:translate(var(--dx),2vmin) scale(1);}}
  @keyframes bv-sol{to{transform:scale(64);}}   /* que llegue a todas las esquinas, también en móviles altos */
  @keyframes bv-subir{from{opacity:0;transform:translateY(2.5vmin);}to{opacity:1;transform:none;}}
  @keyframes bv-fuera{to{opacity:0;visibility:hidden;}}
  .bv.bv-corta.bv-fuera{animation-duration:.3s;}
  /* La pausa en el título: una luz pasa despacio por el nombre, detrás respira una mancha de sol y la invitación */
  .bv-nombre{display:block;}
  .bv-letra{display:inline-block;}
  .bv-invita{margin:5vmin 0 0;font-family:'Zen Maru Gothic',sans-serif;font-size:clamp(.8rem, 3.2vmin, 1rem);letter-spacing:.06em;color:var(--gris-osc);opacity:0;}
  .bv-invita::before{content:'';display:inline-block;width:.55em;height:.55em;margin-right:.6em;vertical-align:.08em;border-radius:50%;
    background:radial-gradient(circle, color-mix(in srgb, var(--kincha) 75%, var(--luz-sol)), transparent 72%);}
  .bv-pausa .bv-nombre{background:linear-gradient(105deg, var(--sumi) 0 42%, color-mix(in srgb, var(--kincha) 80%, var(--luz-sol)) 50%, var(--sumi) 58% 100%);
    background-size:300% 100%;background-position:100% 0;-webkit-background-clip:text;background-clip:text;color:transparent;}
  .bv-pausa .bv-marca::before{content:'';position:absolute;z-index:-1;left:50%;top:40%;width:150%;aspect-ratio:1.6;translate:-50% -50%;border-radius:50%;
    background:radial-gradient(closest-side, color-mix(in srgb, var(--luz-sol) 70%, transparent), transparent);opacity:.5;}
  .bv-pausa .bv-invita{opacity:.85;transition:opacity 1s ease .5s;}
  .bv-pausa .bv-saltar{display:none;}   /* en la pausa, tocar ya es entrar */
  @media (prefers-reduced-motion:no-preference){
    .bv-pausa .bv-nombre{animation:bv-brillo 5.5s ease-in-out .4s infinite;}
    .bv-pausa .bv-marca::before{animation:bv-respira 4.5s ease-in-out infinite alternate;}
    .bv-pausa .bv-invita{animation:bv-invita 3.2s ease-in-out 1.4s infinite alternate;}
  }
  @keyframes bv-brillo{0%{background-position:100% 0;}55%,100%{background-position:0 0;}}
  @keyframes bv-respira{from{opacity:.35;scale:.92;}to{opacity:.65;scale:1.05;}}
  @keyframes bv-invita{from{opacity:.85;}to{opacity:.5;}}
  /* La salida (al compás de Sonido.entrada; --lat: lo que tarda en oírse): cada letra se deshace en motas de luz
     (una cada 80 ms, con su nota), con el acorde (900 ms) un destello de sol y a los 2,2 s la portada se funde en la app */
  .bv-salir .bv-nombre{background:none;color:var(--sumi);animation:none;}
  .bv-salir .bv-marca::before{display:none;}
  .bv-salir .bv-invita, .bv-salir .bv-saltar{display:none;}
  .bv-salir .bv-letra{animation:bv-letra .56s ease-in calc(var(--lat, 0ms) + var(--i)*80ms) both;}
  .bv-salir .bv-kj, .bv-salir .bv-desc{animation:bv-apaga .5s ease-out var(--lat, 0ms) both;}
  .bv-chispa{position:absolute;border-radius:50%;pointer-events:none;opacity:0;
    background:radial-gradient(circle, color-mix(in srgb, var(--kincha) 70%, var(--luz-sol)), transparent 70%);
    animation:bv-chispa 1.3s cubic-bezier(.2,.7,.3,1) calc(var(--lat, 0ms) + var(--d)) both;}
  .bv-destello{position:absolute;width:150vmax;height:150vmax;margin:-75vmax;border-radius:50%;pointer-events:none;opacity:0;
    background:radial-gradient(closest-side, var(--luz-sol), color-mix(in srgb, var(--luz-sol) 40%, transparent) 45%, transparent);
    animation:bv-destello 1.3s ease-out calc(var(--lat, 0ms) + 900ms) both;}
  .bv.bv-salir{animation:bv-fuera .7s ease calc(var(--lat, 0ms) + 2200ms) forwards;}
  @keyframes bv-letra{to{opacity:0;filter:blur(6px);transform:translateY(-.15em) scale(1.08);}}
  @keyframes bv-apaga{to{opacity:0;}}
  @keyframes bv-chispa{0%{opacity:0;transform:translate(0,0) scale(.3);}
    25%{opacity:1;transform:translate(calc(var(--dx)*.3),calc(var(--dy)*.3)) scale(1);}
    100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.4);}}
  @keyframes bv-destello{0%{opacity:0;transform:scale(.3);}35%{opacity:.9;transform:scale(.9);}100%{opacity:0;transform:scale(1.15);}}

  /* ===== Aparecer al hacer scroll («tinta»): js/motor/camino.js → Aparecer =====
     Lo que entra en pantalla sube un poco y pasa de borroso a nítido. En las estaciones, el punto crece desde
     su centro (no se mueve, así la vía sale en su sitio) y el cartel sube. */
  @media (prefers-reduced-motion:no-preference){
    .ap:not(.st){opacity:0;transform:translateY(18px);filter:blur(3px);}
    .ap:not(.st).ap-on{opacity:1;transform:none;filter:none;
      transition:opacity .8s ease var(--ap-d,0s), transform .9s cubic-bezier(.2,.7,.15,1) var(--ap-d,0s), filter .8s ease var(--ap-d,0s);}
    .st.ap .st-dot{opacity:0;transform:scale(.55);}
    .st.ap .st-body{opacity:0;transform:translateY(14px);filter:blur(3px);}
    .st.ap .st-here{opacity:0;}
    .st.ap.ap-on .st-dot{opacity:1;transform:none;transition:opacity .6s ease var(--ap-d,0s), transform .7s cubic-bezier(.3,1.4,.5,1) var(--ap-d,0s);}
    .st.ap.ap-on .st-body{opacity:1;transform:none;filter:none;
      transition:opacity .8s ease calc(var(--ap-d,0s) + .12s), transform .9s cubic-bezier(.2,.7,.15,1) calc(var(--ap-d,0s) + .12s), filter .8s ease calc(var(--ap-d,0s) + .12s);}
    .st.ap.ap-on .st-here{opacity:1;transition:opacity .5s ease calc(var(--ap-d,0s) + .5s);}
  }
  /* Aviso sin bloqueo al empezar «Presentarte» si los kana aún cuestan (js/motor/camino.js · avisoKana) */
  .aviso-kana p{margin:12px 0 0;}
  .aviso-acts{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px;}
  .aviso-acts .btn{flex:1 1 200px;}

  /* ===== Paso entre ejercicios (js/motor/app.js → pasarEjercicio) =====
     El ejercicio que acabas sube y se va; el siguiente entra desde abajo. Rápido, solo para acompañar el cambio. */
  @media (prefers-reduced-motion:no-preference){
    .card.ej-sale, .next-row.ej-sale{animation:ej-sale .15s cubic-bezier(.5,0,.9,.6) forwards;pointer-events:none;}
    .card.ej-entra{animation:ej-entra .24s cubic-bezier(.2,.8,.25,1);}
  }
  @keyframes ej-sale{to{opacity:0;transform:translateY(-40px);}}
  @keyframes ej-entra{from{opacity:0;transform:translateY(40px);}}

  /* ===== Movimiento (js/motor/movimiento.js): una misma forma de moverse en toda la app =====
     Una curva con un pequeño rebote (muelle), una suave, y tres duraciones. Nada si el sistema pide reducir movimiento. */
  :root{--curva-muelle:cubic-bezier(.34,1.56,.64,1); --curva-suave:cubic-bezier(.2,.8,.2,1); --dur-rapida:.16s; --dur-media:.26s; --dur-lenta:.42s;}
  @media (prefers-reduced-motion:no-preference){
    /* Opciones de respuesta: la correcta late, la elegida mal tiembla, las demás se retiran */
    .opt-btn.opt-latido{animation:mv-latido .42s var(--curva-muelle);}
    .opt-btn.opt-tiembla{animation:mv-tiembla .32s ease-in-out;}
    .opt-btn.opt-retira{animation:mv-retira var(--dur-media) var(--curva-suave) forwards;}
    /* Rōmaji → kana: el rōmaji sube y se va, el kana entra letra a letra */
    .fill-row{position:relative;}
    .fill-row.rk-anim textarea, .fill-row.rk-anim input{color:transparent;}
    .rk-capa{position:absolute;pointer-events:none;display:flex;align-items:center;white-space:nowrap;overflow:hidden;box-sizing:border-box;}
    .rk-capa > span{position:absolute;display:flex;}
    .rk-romaji span{display:inline-block;color:var(--gris-osc);animation:mv-rk-sale .26s ease-in calc(var(--i) * 18ms) forwards;}
    .rk-kana span{display:inline-block;color:var(--sumi);opacity:0;animation:mv-rk-entra .34s var(--curva-muelle) calc(140ms + var(--i) * 45ms) forwards;}
    /* Estación → lección: el punto de la estación se convierte en la tarjeta (View Transitions) */
    /* Ida: la tarjeta crece desde el punto de la estación (redonda al principio). Vuelta: se encoge hasta su estación. */
    ::view-transition-group(leccion){animation-duration:.44s;animation-timing-function:var(--curva-suave);}
    ::view-transition-old(leccion), ::view-transition-new(leccion){height:100%;width:100%;object-fit:cover;}
    html.vt-ida::view-transition-image-pair(leccion){animation:mv-vt-abre .44s var(--curva-suave) both;}
    html.vt-ida::view-transition-old(leccion){animation:none;opacity:0;}
    html.vt-ida::view-transition-new(leccion){animation:mv-vt-dentro .14s linear both;}
    html.vt-vuelta::view-transition-image-pair(leccion){animation:mv-vt-cierra .44s var(--curva-suave) both;}
    html.vt-vuelta::view-transition-old(leccion){animation:mv-vt-fuera .16s linear .26s both;}
    html.vt-vuelta::view-transition-new(leccion){animation:mv-vt-dentro .16s linear .26s both;}
    ::view-transition-old(root){animation:mv-vt-fuera .22s ease-out both;}
    ::view-transition-new(root){animation:mv-vt-dentro .28s var(--curva-suave) .05s both;}
  }
  /* Al cambiar de pestaña (js/motor/movimiento.js, nagare y ma): la pestaña vieja, quieta en su capa mientras se apaga */
  .pestana-foto{position:fixed;z-index:0;overflow:hidden;pointer-events:none;}
  .pestana-vieja{position:absolute;margin:0 !important;will-change:translate, opacity;}
  .pestana-vieja, .pestana-vieja *{animation:none !important;transition:none !important;}
  @keyframes mv-latido{0%{scale:1;}40%{scale:1.035;}100%{scale:1;}}
  @keyframes mv-tiembla{0%,100%{translate:0;}25%{translate:-5px 0;}55%{translate:4px 0;}80%{translate:-2px 0;}}
  @keyframes mv-retira{to{opacity:.45;scale:.975;}}
  @keyframes mv-rk-sale{to{opacity:0;transform:translateY(-10px);filter:blur(2px);}}
  @keyframes mv-rk-entra{from{opacity:0;transform:translateY(10px) scale(.8);}to{opacity:1;transform:none;}}
  @keyframes mv-vt-fuera{to{opacity:0;}}
  @keyframes mv-vt-abre{from{clip-path:inset(0 round 999px);}to{clip-path:inset(0 round 14px);}}
  @keyframes mv-vt-cierra{from{clip-path:inset(0 round 14px);}to{clip-path:inset(0 round 999px);}}
  @keyframes mv-vt-dentro{from{opacity:0;}}

  /* ===== Lecciones dominadas, en dorado (90 % o más; Camino.dominada) =====
     Un anillo dorado alrededor de la estación y el marco de su cartel en dorado. El dorado es --rc-oro: cambia con cada tema. */
  .st.is-oro .st-dot{box-shadow:0 0 0 2.5px var(--papel), 0 0 0 5px var(--rc-oro), 0 0 0 6.5px var(--rc-oro-filo), 0 0 14px color-mix(in srgb, var(--rc-oro) 55%, transparent);}
  .metro-wrap .metro .st.is-oro .st-body{border-color:var(--rc-oro);background:color-mix(in srgb, var(--rc-oro) 9%, var(--papel));box-shadow:0 0 0 1px var(--rc-oro), 0 0 0 2.5px var(--rc-oro-filo), 0 1px 10px color-mix(in srgb, var(--rc-oro) 35%, transparent);}
  .tl li.is-oro .tl-dot{box-shadow:0 0 0 2px var(--papel), 0 0 0 4px var(--rc-oro);}
  .unit-oro{color:color-mix(in srgb, var(--rc-oro) 75%, var(--sumi));font-weight:700;white-space:nowrap;}
  .unit-head .unit-oro{color:color-mix(in srgb, var(--rc-oro) 45%, var(--sobre-linea));}   /* sobre la cabecera de color, un dorado claro que se lea */
  .unit-oro i, .unit-plata i{font-style:normal;font-family:'Shippori Mincho',serif;}
  .unit-plata{color:color-mix(in srgb, var(--rc-plata) 60%, var(--sumi));font-weight:700;white-space:nowrap;}
  .unit-head .unit-plata{color:color-mix(in srgb, var(--rc-plata) 45%, var(--sobre-linea));}   /* sobre la cabecera de color, un gris claro que se lea */
  .unit.is-oro .unit-kj{box-shadow:0 0 0 2.5px var(--papel), 0 0 0 5px var(--rc-oro);}
  .pl-st.is-oro .pl-dot{stroke:var(--rc-oro);stroke-width:3;}
  .pl-badge.is-oro circle{stroke:var(--rc-oro);}
  .pl-g-dot.is-oro{box-shadow:0 0 0 2px var(--papel), 0 0 0 4px var(--rc-oro);}
  .oro-nota, .results .oro-nota{display:flex;align-items:center;gap:12px;margin:4px auto 14px;max-width:480px;box-sizing:border-box;padding:10px 14px;text-align:left;border:1.5px solid var(--rc-oro);border-radius:12px;
    background:color-mix(in srgb, var(--rc-oro) 10%, var(--papel));}
  .oro-nota span:last-child{display:flex;flex-direction:column;gap:1px;font-size:.88rem;color:var(--gris);}
  .oro-nota b{color:var(--sumi);font-size:.98rem;}
  .oro-sello{flex:0 0 auto;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-weight:700;font-size:1.15rem;
    color:var(--papel);background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--rc-oro) 55%, #fff), var(--rc-oro) 55%, var(--rc-oro-filo));box-shadow:0 0 0 2px var(--papel), 0 0 0 4px var(--rc-oro), 0 0 0 5px var(--rc-oro-filo);}
  @media (prefers-reduced-motion:no-preference){ .oro-nota .oro-sello{animation:oro-brilla 1.6s ease-out 1;} }
  /* Plata 銀: sin fallos una vez (el oro llega al repetirla sin fallos días después). Igual que el oro, en gris plata y sin brillo. */
  .st.is-plata .st-dot{box-shadow:0 0 0 2.5px var(--papel), 0 0 0 5px var(--rc-plata), 0 0 0 6.5px var(--rc-plata-filo);}
  /* El marco de plata u oro, solo en las tarjetas del plano del Camino: en la lista de Kanji, el texto va suelto */
  .metro-wrap .metro .st.is-plata .st-body{border-color:var(--rc-plata);box-shadow:0 0 0 1px var(--rc-plata);}
  .tl li.is-plata .tl-dot{box-shadow:0 0 0 2px var(--papel), 0 0 0 4px var(--rc-plata);}
  .pl-st.is-plata .pl-dot{stroke:var(--rc-plata);stroke-width:3;}
  .pl-g-dot.is-plata{box-shadow:0 0 0 2px var(--papel), 0 0 0 4px var(--rc-plata);}
  .st-pct.plata{color:color-mix(in srgb, var(--rc-plata) 70%, var(--sumi));}
  .st-med{font-style:normal;font-family:'Shippori Mincho',serif;font-size:.62em;margin-right:3px;vertical-align:.15em;}
  .st-pct[data-medalla]{cursor:help;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;}
  .oro-nota.plata, .results .oro-nota.plata{border-color:var(--rc-plata);background:color-mix(in srgb, var(--rc-plata) 10%, var(--papel));}
  .oro-nota.plata .oro-sello{background:var(--rc-plata);box-shadow:0 0 0 2px var(--papel), 0 0 0 4px var(--rc-plata);animation:none;}
  /* Globo con lo que significa la medalla (cursor encima o dedo mantenido) */
  .med-globo{position:fixed;z-index:80;padding:9px 12px;border-radius:10px;background:var(--sumi);color:var(--washi);font-family:'Zen Maru Gothic',sans-serif;
    font-size:.82rem;line-height:1.4;box-shadow:0 6px 18px rgba(43,42,40,.25);pointer-events:none;}
  @keyframes oro-brilla{0%{transform:scale(.6);opacity:0;} 45%{transform:scale(1.12);opacity:1;} 100%{transform:scale(1);}}

  /* Nombres propios con su kana en el enunciado (app.js · nombresConKana) */
  .q-nombre{font-size:.92em;color:var(--ai);white-space:nowrap;}

  /* ---- Aviso al salir de una lección a medias (js/motor/a-medias.js: AvisoSalir) ---- */
  .salir-velo{position:fixed;inset:0;z-index:70;display:flex;align-items:center;justify-content:center;padding:16px;
    background:color-mix(in srgb, var(--sumi) 38%, transparent);}
  .salir-caja{max-width:360px;width:100%;margin:0;text-align:center;}
  .salir-caja h2{font-family:'Shippori Mincho',serif;font-size:1.3rem;color:var(--ai-deep);margin:0 0 8px;}
  .salir-caja p{margin:0 0 18px;color:var(--gris-osc);line-height:1.5;}
  .salir-acts{display:flex;flex-direction:column;gap:8px;}
  .salir-acts .btn{width:100%;margin:0;}
  @media (prefers-reduced-motion:no-preference){ .salir-caja{animation:salir-entra var(--dur-media) var(--curva-suave) 1;} }
  @keyframes salir-entra{from{transform:translateY(12px);opacity:0;}to{transform:none;opacity:1;}}
  /* En el móvil, la hoja de papel sale desde abajo (más cerca del pulgar) */
  @media (max-width:600px){
    .salir-velo{align-items:flex-end;padding:0;}
    .salir-caja{max-width:none;border-radius:16px 16px 0 0;padding-bottom:calc(20px + env(safe-area-inset-bottom));}
    @media (prefers-reduced-motion:no-preference){ .salir-caja{animation:salir-sube var(--dur-media) var(--curva-suave) 1;} }
  }
  @keyframes salir-sube{from{transform:translateY(100%);}to{transform:none;}}
  /* ---- Glosario al tocar (js/motor/glosario.js): marcador kincha y hoja de papel ---- */
  .gl{background:linear-gradient(transparent 62%, color-mix(in srgb, var(--kincha) 30%, transparent) 62%);border-radius:2px;
    cursor:pointer;-webkit-box-decoration-break:clone;box-decoration-break:clone;}
  @media (hover:hover){ .gl:hover{background:linear-gradient(transparent 56%, color-mix(in srgb, var(--kincha) 45%, transparent) 56%);} }
  .gl:focus-visible{outline:2px solid var(--kincha);outline-offset:2px;}
  .gl-velo{position:fixed;inset:0;z-index:70;display:flex;align-items:center;justify-content:center;padding:16px;
    background:color-mix(in srgb, var(--sumi) 30%, transparent);}
  .gl-hoja{width:100%;max-width:420px;background:var(--papel);border:1px solid var(--line);border-radius:16px;
    padding:20px 22px 22px;box-shadow:0 10px 28px rgba(43,42,40,.14);font-family:'Zen Maru Gothic',sans-serif;}
  .gl-asa{display:none;width:40px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 14px;}
  .gl-t{font-family:'Shippori Mincho',serif;font-size:1.35rem;color:var(--ai-deep);margin:0 0 6px;}
  .gl-d{margin:0 0 14px;color:var(--gris-osc-2);line-height:1.55;font-size:.97rem;}
  .gl-ej{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border-radius:10px;background:var(--tinte-papel);
    border:1px dashed var(--line);margin-bottom:16px;}
  .gl-ej-ja{font-family:'Shippori Mincho',serif;font-size:1.5rem;color:var(--sumi);}
  .gl-ej-ja rt{font-size:.5em;color:var(--gris-osc);}
  .gl-ej-pie{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline;}
  .gl-ej-ro{font-size:.85rem;color:var(--gris);}
  .gl-ej-es{font-size:.92rem;color:var(--sumi);}
  .gl-hoja .btn{width:100%;margin:0;padding:13px;font-size:1rem;}
  /* Ayuda al tocar (06/11): «Tú, ahora» en la hoja y la señal «i» de lo que se puede tocar para saber cómo funciona */
  .gl-tu{display:flex;flex-direction:column;gap:2px;margin:0 0 14px;padding:12px 14px;border-radius:10px;background:var(--tinte-papel);
    border:1px solid var(--line-cl);color:var(--sumi);font-size:.95rem;line-height:1.45;}
  .gl-tu span{font-size:.75rem;color:var(--gris-osc);}
  .ayuda-i{display:inline-flex;align-items:center;justify-content:center;flex:none;width:18px;height:18px;box-sizing:border-box;border-radius:50%;
    border:1.3px solid var(--shu-deep);color:var(--shu-deep);font-family:'Shippori Mincho',serif;font-size:.75rem;font-weight:700;line-height:1;font-style:normal;}
  :where(.ayuda-btn){display:inline-flex;align-items:center;gap:8px;background:none;border:0;padding:0;margin:0;min-height:44px;font:inherit;color:inherit;
    text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;}
  :where(.ayuda-btn):focus-visible{outline:2px solid var(--ai);outline-offset:3px;border-radius:6px;}
  @media (prefers-reduced-motion:no-preference){ .gl-hoja{animation:salir-entra var(--dur-media) var(--curva-suave) 1;} }
  /* En el móvil, desde abajo, como el aviso al salir */
  @media (max-width:600px){
    .gl-velo{align-items:flex-end;padding:0;}
    .gl-hoja{max-width:none;border-radius:16px 16px 0 0;border-width:1px 0 0;padding:14px 22px calc(22px + env(safe-area-inset-bottom));
      box-shadow:0 -8px 24px rgba(43,42,40,.12);}
    .gl-asa{display:block;}
    @media (prefers-reduced-motion:no-preference){ .gl-hoja{animation:salir-sube var(--dur-media) var(--curva-suave) 1;} }
  }
  /* ---- Kanji en las frases (A11, js/motor/kanji-frases.js): la palabra que ya puedes leer en kanji y su hoja ----
     La palabra se toca: un subrayado suave de kincha. La primera vez que sale en kanji, en añil (--ai). */
  .kf{cursor:pointer;border-radius:4px;text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--kincha) 55%, transparent);
    text-decoration-thickness:2px;text-underline-offset:4px;transition:background-color var(--dur-corta, .15s) ease;}
  .kf:hover{background:color-mix(in srgb, var(--kincha) 14%, transparent);}
  .kf:focus-visible{outline:2px solid var(--ai);outline-offset:2px;}
  .kf-nuevo{color:var(--ai);text-decoration-color:color-mix(in srgb, var(--ai) 55%, transparent);}
  .kf-cab{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 14px;margin:0 0 10px;}
  .kf-cab b{font-family:'Shippori Mincho',serif;font-size:2.3rem;line-height:1.1;color:var(--sumi);font-weight:700;}
  .kf-cab span{font-size:1.1rem;color:var(--gris-osc);}
  .kf-es{margin:0 0 12px;font-size:1.05rem;color:var(--sumi);}
  .kf-piezas{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px;}
  .kf-pieza{display:flex;align-items:center;gap:10px;padding:6px 14px;border:1px solid var(--line);border-radius:12px;background:var(--papel);}
  .kf-pieza b{font-family:'Shippori Mincho',serif;font-size:1.5rem;color:var(--sumi);}
  .kf-pieza span{color:var(--gris-osc-2);font-size:.95rem;}
  .kf-junta{margin:0 0 16px;padding:10px 14px;border-radius:10px;background:var(--tinte-papel);color:var(--sumi);line-height:1.5;}
  .kf-tapado{margin:0 0 16px;color:var(--gris);font-style:italic;}
  .kf-invita{margin:14px auto 4px;max-width:460px;padding:12px 16px;border:1px dashed var(--line);border-radius:12px;background:var(--tinte-papel);
    color:var(--sumi);text-align:left;line-height:1.55;}
  .kf-invita p{margin:0 0 10px;}
  .kf-invita .btn{margin:0;}
  /* En los resultados de una lección de kanji el aviso es un <p>: «.results p» (margen 0 0 18px) le quitaba el centrado */
  .results .kf-invita{margin:14px auto 4px;}
  .results .kf-invita.kf-desde{margin-bottom:10px;}
  @media (prefers-reduced-motion:reduce){ .kf{transition:none;} }
  /* ---- Tropiezos del hispanohablante (P1, js/motor/tropiezos.js): el aviso ámbar con su porqué, el par para oír y los
     tiempos de la palabra; en Repasar, «Lo que te cuesta como hispanohablante» ---- */
  .feedback.tz{display:flex;flex-direction:column;gap:8px;text-align:left;}
  .feedback.tz p{margin:0;line-height:1.55;color:var(--sumi);}
  .tz-es{font-size:.75rem;font-weight:700;letter-spacing:.04em;color:var(--kincha-osc-2);}
  .tz-dicho [lang="ja"]{font-size:1.1rem;}
  .tz-dicho b{color:var(--shu);text-decoration:underline wavy color-mix(in srgb, var(--shu) 60%, transparent);text-underline-offset:5px;font-weight:600;}
  .tz-par{display:flex;flex-wrap:wrap;gap:8px;}
  .tz-oir{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:999px;padding:4px 12px 4px 6px;
    background:var(--papel);color:var(--sumi);font:inherit;cursor:pointer;}
  .tz-oir.sin{padding-left:12px;cursor:default;}
  .tz-oir .ic-audio{width:26px;height:26px;}
  .tz-oir [lang="ja"]{font-size:1.05rem;}
  .tz-oir small{color:var(--gris-osc);}
  .tz-oir:focus-visible{outline:2px solid var(--ai);outline-offset:2px;}
  .tz-tiempos{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-end;}
  .tz-t{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:1.15rem;}
  .tz-t i{width:10px;height:10px;border-radius:50%;background:var(--kincha);display:block;}
  .tz-t.hueco i{background:transparent;border:2px solid var(--kincha);}
  .tz-otra{font-weight:600;}
  .tz-repasar{display:flex;flex-direction:column;gap:8px;}
  .tz-fila{border:1px solid var(--line);border-radius:12px;background:var(--papel);padding:10px 14px;}
  .tz-fila summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none;}
  .tz-fila summary::-webkit-details-marker{display:none;}
  .tz-fila summary span:first-child{flex:1;font-weight:600;}
  .tz-fila summary small{color:var(--gris);}
  .tz-fila .flecha{transition:transform var(--dur-corta, .18s) ease;}
  .tz-fila[open]:not(.plegando) .flecha{transform:rotate(180deg);}
  .tz-fila p{margin:10px 0;line-height:1.55;}
  /* ---- Lecturas del examen en kanji (A12, n5/examen.js exTexto): la lectura encima, salvo la de los kanji que ya sabes
     leer (se ve al tocarlos) y nunca en el simulacro ([data-sin-ayuda]), como en el examen de verdad ---- */
  .ex-kj rt{font-size:.5em;color:var(--gris-osc);}
  .ex-kj.sabido{cursor:pointer;}
  .ex-kj.sabido rt{visibility:hidden;}
  .ex-kj.sabido.ver rt{visibility:visible;}
  [data-sin-ayuda] .ex-kj rt{display:none;}
  /* ---- Tutorial del primer día (js/motor/tutorial.js): velo con huecos, aros kincha y hoja de notas ----
     ens- (enseñar): .tu-btn y #tutHoja ya existen. El velo, en --ens-velo (en los temas oscuros, más negro). */
  :root{--ens-velo:color-mix(in srgb, var(--sumi) 70%, transparent);}
  :root[data-tema="samurai"], :root[data-tema="noche"]{--ens-velo:rgba(0,0,0,.72);}
  body.ens-on{overflow:hidden;}
  .ens-velo{position:fixed;inset:0;z-index:80;cursor:pointer;-webkit-tap-highlight-color:transparent;}
  .ens-sombra{position:absolute;inset:0;width:100%;height:100%;}
  .ens-sombra path{fill:var(--ens-velo);}
  .ens-aro{position:fixed;border:2px solid var(--kincha);box-shadow:0 0 0 4px color-mix(in srgb, var(--kincha) 25%, transparent);pointer-events:none;}
  .ens-hoja{background:var(--papel);color:var(--sumi);font-family:'Zen Maru Gothic',sans-serif;border:1px solid var(--line);}
  .ens-paso{position:fixed;left:0;right:0;border-radius:18px 18px 0 0;border-width:1px 0 0;padding:18px 22px 16px;
    box-shadow:0 -8px 30px rgba(43,42,40,.18);cursor:pointer;outline:none;}
  .ens-k{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--gris);letter-spacing:.04em;margin-bottom:4px;}
  .ens-saltar{font:inherit;font-size:.9rem;color:var(--gris-osc);background:none;border:0;padding:6px 0 6px 12px;cursor:pointer;}
  .ens-t{font-family:'Shippori Mincho',serif;font-size:1.4rem;color:var(--ai-deep);margin:0 0 10px;line-height:1.25;}
  .ens-t span{display:block;margin-top:2px;font-family:'Zen Maru Gothic',sans-serif;font-size:.9rem;font-weight:400;color:var(--gris-osc);}
  .ens-n{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:9px;}
  .ens-n li{display:flex;gap:10px;line-height:1.5;font-size:.93rem;}
  .ens-n li::before{content:'';flex:none;width:7px;height:7px;margin-top:.55em;border-radius:50%;background:var(--shu);}
  .ens-pie2{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:40px;}
  .ens-pts{display:flex;gap:7px;}
  .ens-pts i{width:7px;height:7px;border-radius:4px;background:var(--line);transition:width var(--dur-media) var(--curva-suave);}
  .ens-pts i.on{background:var(--shu);width:20px;}
  .ens-sig{font-size:.85rem;color:var(--gris);}
  .ens-fin{margin:0;padding:11px 18px;}
  /* La invitación: como la hoja del glosario, desde abajo */
  .ens-inv, .cc-inv{position:fixed;inset:0;z-index:80;display:flex;align-items:flex-end;justify-content:center;background:color-mix(in srgb, var(--sumi) 45%, transparent);}
  .ens-inv .ens-hoja, .cc-inv .ens-hoja{width:100%;max-width:460px;border-radius:18px 18px 0 0;border-width:1px 1px 0;padding:14px 22px calc(24px + env(safe-area-inset-bottom));
    box-shadow:0 -8px 30px rgba(43,42,40,.18);}
  .ens-asa{width:40px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 16px;}
  .ens-d{margin:0 0 18px;color:var(--gris-osc-2, var(--gris-osc));line-height:1.55;}
  .ens-bts{display:flex;flex-direction:column;gap:8px;}
  .ens-bts .btn{width:100%;margin:0;padding:13px;font-size:1rem;}
  .ens-pie{text-align:center;color:var(--gris);margin:12px 0 0;font-size:.82rem;line-height:1.45;}
  @media (prefers-reduced-motion:no-preference){
    .ens-inv .ens-hoja, .cc-inv .ens-hoja{animation:salir-sube var(--dur-media) var(--curva-suave) 1;}
    .ens-velo.entra{animation:ens-funde var(--dur-media) var(--curva-suave) 1;}
  }
  @keyframes ens-funde{from{opacity:0;}to{opacity:1;}}
  /* En el ordenador, la hoja va centrada sobre la barra */
  @media (min-width:601px){
    .ens-paso{left:50%;right:auto;width:min(460px, calc(100% - 32px));transform:translateX(-50%);border-radius:18px;border-width:1px;margin-bottom:8px;}
    .ens-inv, .cc-inv{align-items:center;padding:16px;}
    .ens-inv .ens-hoja, .cc-inv .ens-hoja{border-radius:18px;border-width:1px;padding-bottom:22px;}
    .ens-asa{display:none;}
  }
  /* ---- Contra el reloj (js/motor/contrarreloj.js): varilla de incienso y sellos de bronce, plata y oro ---- */
  .cr, .cr-cartas{--cr-oro:var(--kincha);--cr-plata:var(--gris);--cr-bronce:color-mix(in srgb, var(--shu) 40%, var(--kincha-osc));
    font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);text-align:center;}
  .cr-icono .cr-esfera{fill:var(--papel);stroke:var(--ai);stroke-width:2.5;}
  .cr-icono path{fill:none;stroke-width:2.5;stroke-linecap:round;}
  .cr-icono .cr-aguja-ai{stroke:var(--ai);} .cr-icono .cr-aguja{stroke:var(--sumi);} .cr-icono .cr-aguja-shu{stroke:var(--shu);}
  .cr-icono .cr-eje{fill:var(--sumi);}
  /* Repasar > Contra el reloj: una tarjeta por silabario abierto */
  .rv-sub.cr-rv-h{margin-top:26px;} .cr-rv-txt{margin:-2px 0 10px;font-size:.85rem;color:var(--gris-osc);}
  .cr-cartas{display:grid;grid-template-columns:repeat(var(--n, 2), 1fr);gap:10px;}
  .cr-cartas[data-n="3"]{gap:8px;}
  .cr-cartas[data-n="3"] .cr-carta{padding:14px 6px 10px;gap:4px;}
  .cr-cartas[data-n="3"] .cr-carta-k{font-size:1.9rem;}
  .cr-cartas[data-n="3"] .cr-carta small{font-size:.7rem;}
  /* El sello de la marca (bronce, plata, oro), estampado arriba a la derecha; sin marca, el hueco por estampar.
     Tinta: --rc-oro / --rc-plata de cada tema y --rc-bronce, fijo (en Tokio de noche el kincha se vuelve verde). */
  .cr-carta{position:relative;}
  .crs{position:absolute;top:7px;right:7px;width:30px;height:30px;transform:rotate(-6deg);pointer-events:none;}
  .crs-tinta{fill:none;stroke:var(--c);stroke-width:2.6;}
  .crs-tinta text{fill:var(--c);stroke:none;font-family:'Shippori Mincho',serif;font-weight:700;font-size:24px;}
  .crs-hueco{fill:none;stroke:var(--line);stroke-width:1.3;stroke-dasharray:3 3;}
  .cr-carta{display:grid;grid-template-rows:auto auto auto minmax(2.5em, auto) auto;justify-items:center;align-items:center;gap:6px;
    border:1px solid var(--line-cl);background:var(--papel);border-radius:14px;padding:14px 12px 12px;cursor:pointer;
    font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);text-align:center;}
  .cr-carta-k{font-family:'Shippori Mincho',serif;font-size:2.2rem;color:var(--ai);line-height:1;}
  .cr-carta b{font-size:.95rem;}
  .cr-carta-t{font-family:'Shippori Mincho',serif;font-size:1.25rem;}
  .cr-carta small{font-size:.76rem;color:var(--gris-osc);line-height:1.35;}
  .cr-carta-go{width:100%;border-top:1px solid var(--line-cl);padding-top:8px;font-size:.82rem;color:var(--shu);}
  .cr-cartas.solo{grid-template-columns:1fr;}
  .cr-carta:focus-visible{outline:2px solid var(--shu);outline-offset:2px;}
  @media (hover:hover){ .cr-carta:hover{border-color:var(--shu);} }
  .cr-inv{margin:18px auto 22px;max-width:340px;display:flex;gap:14px;align-items:center;text-align:left;padding:14px 16px;border-radius:14px;
    border:1.5px dashed color-mix(in srgb, var(--ai) 40%, transparent);background:color-mix(in srgb, var(--ai) 5%, var(--papel));}
  .cr-inv .cr-icono{flex:none;}
  .cr-inv b{display:block;font-family:'Shippori Mincho',serif;font-size:1.05rem;color:var(--ai-deep);margin-bottom:2px;}
  .cr-inv span{display:block;font-family:'Zen Maru Gothic',sans-serif;font-size:.86rem;color:var(--gris-osc);line-height:1.45;}
  .cr-inv-btn{margin-top:8px;font-family:'Zen Maru Gothic',sans-serif;font-size:.86rem;border:1.5px solid var(--ai);color:var(--ai-deep);background:transparent;border-radius:20px;padding:5px 14px;cursor:pointer;}
  .cr-fila{justify-content:space-between;}
  .cr-inicio .cr-fila{margin-bottom:6px;}
  .cr-tit{font-family:'Shippori Mincho',serif;color:var(--ai-deep);font-size:1.5rem;margin:8px 0 6px;}
  .cr-sub{font-size:.95rem;color:var(--gris-osc);line-height:1.55;margin:0 auto 20px;max-width:330px;}
  .cr-marcas{max-width:300px;margin:0 auto 18px;display:flex;flex-direction:column;gap:8px;}
  .cr-marca{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 14px;border-radius:10px;border:1.5px solid var(--line);background:var(--papel);}
  .cr-marca small{color:var(--gris-osc);font-size:.88rem;}
  .cr-marca.on{border-color:var(--sumi);}
  .cr-sello{display:inline-grid;place-items:center;min-width:64px;padding:4px 10px;border-radius:20px;border:2px solid var(--c);color:var(--c);
    font-family:'Shippori Mincho',serif;font-weight:700;font-size:.9rem;background:color-mix(in srgb, var(--c) 10%, var(--papel));}
  .cr-sello.grande{width:104px;height:104px;border-radius:50%;border-width:3px;font-size:1.3rem;padding:0;transform:rotate(-7deg);
    box-shadow:inset 0 0 0 5px var(--papel), inset 0 0 0 6.5px var(--c);}
  .cr-rec{font-size:.9rem;color:var(--gris-osc);margin:0 0 18px;}
  .cr-reloj{flex:1;text-align:left;margin-left:12px;font-family:'Shippori Mincho',serif;font-weight:700;font-size:2.1rem;line-height:1;font-variant-numeric:tabular-nums;}
  /* La varilla: se consume de izquierda a derecha (--p); al final, el bronce */
  .cr-varilla{--p:0%;position:relative;height:30px;margin:16px 2px 26px;}
  .cr-palo,.cr-ceniza{position:absolute;top:13px;height:5px;border-radius:3px;}
  .cr-palo{left:var(--p);right:0;background:color-mix(in srgb, var(--matcha) 70%, var(--sumi));}
  .cr-ceniza{left:0;width:var(--p);background:color-mix(in srgb, var(--gris) 40%, transparent);}
  .cr-ascua{position:absolute;top:10px;left:calc(var(--p) - 5px);width:11px;height:11px;border-radius:50%;background:var(--shu);
    box-shadow:0 0 10px var(--shu);}
  .cr-humo{position:absolute;left:-4px;top:-26px;width:20px;height:26px;}
  .cr-humo path{fill:none;stroke:var(--gris);stroke-width:1.5;stroke-linecap:round;opacity:.6;}
  .cr-hito{position:absolute;top:2px;left:calc(var(--x) - 1px);width:2px;height:26px;background:var(--c);}
  .cr-hito em{position:absolute;top:30px;left:-30px;width:62px;font-style:normal;font-size:.7rem;color:var(--c);text-align:center;}
  .cr-hito:last-of-type em{left:auto;right:-4px;text-align:right;}
  .cr-letra{font-family:'Klee One Kana','Zen Maru Gothic',sans-serif;font-size:7rem;line-height:1;margin:26px 0 34px;}
  .cr-letra.kj{font-family:'Shippori Mincho',serif;font-weight:500;}
  .cr-ops.kj .cr-op{font-size:1.1rem;padding:20px 6px;}
  .cr-al-repaso{margin:8px 0 0;font-size:.85rem;color:var(--gris-osc);}
  .cr-ops{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
  .cr-op{font-family:'Zen Maru Gothic',sans-serif;font-size:1.5rem;padding:18px 0;border-radius:10px;border:1.5px solid var(--line);background:var(--washi);color:var(--sumi);cursor:pointer;touch-action:manipulation;}
  .cr-op.mal{border-color:var(--shu);background:color-mix(in srgb, var(--shu) 10%, var(--washi));color:var(--shu-deep);}
  .cr-op.buena{border-color:var(--matcha);box-shadow:inset 0 0 0 1.5px var(--matcha);}
  .cr-op:disabled{cursor:default;}
  .cr-op:focus-visible{outline:2px solid var(--shu);outline-offset:2px;}
  .cr-pena{display:block;min-height:1.6em;margin-top:14px;font-family:'Shippori Mincho',serif;font-weight:700;color:var(--shu);font-size:1.15rem;}
  .cr-res-que{display:block;font-size:.9rem;color:var(--gris-osc);}
  .cr-res-t{font-family:'Shippori Mincho',serif;font-weight:700;font-size:4rem;line-height:1;font-variant-numeric:tabular-nums;margin:8px 0 4px;}
  .results p.cr-res-d{font-size:.9rem;color:var(--gris-osc);margin:0 0 14px;}
  .cr-chip{display:inline-block;font-size:.82rem;color:var(--gris-osc);border:1.5px solid var(--line);border-radius:20px;padding:3px 12px;margin-bottom:16px;}
  .cr-chip.nuevo{color:var(--kincha-osc);border-color:var(--kincha);}
  .cr-medalla{display:flex;flex-direction:column;align-items:center;gap:8px;margin:2px 0 12px;}
  .cr-medalla small{font-size:.86rem;color:var(--gris-osc);}
  .results p.cr-falta{font-size:.9rem;color:var(--gris-osc);margin:0 0 18px;}
  .cr-fallos{max-width:340px;margin:0 auto 20px;text-align:left;border-top:1px solid var(--line);padding-top:12px;}
  .cr-fallos h3{font-family:'Shippori Mincho',serif;font-size:1rem;color:var(--ai-deep);margin:0 0 8px;}
  .cr-fallos div{display:flex;gap:8px;flex-wrap:wrap;}
  .cr-fallos span{display:inline-flex;align-items:baseline;gap:6px;padding:6px 10px;border-radius:8px;background:var(--papel);border:1px solid var(--line);font-size:.88rem;}
  .cr-fallos span b{font-family:'Klee One Kana','Zen Maru Gothic',sans-serif;font-size:1.35rem;font-weight:400;}
  @media (prefers-reduced-motion:no-preference){
    .cr-pena:not(:empty){animation:cr-pena .65s var(--curva-suave) 1;}
    @keyframes cr-pena{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
  }
  /* «Mi respuesta también vale» (js/motor/app.js: Aceptadas) */
  .feedback .tambien-vale{display:block;margin:10px 0 0;font-size:.9rem;}
  /* Dōjō de kanji (道場, js/motor/dojo.js): tres cinturones en la pestaña Kanji */
  .dojo{margin-top:4px;}
  /* Pestaña Kanji (js/motor/kanji.js: plegable): 字の森, el bosque de los kanji, y el 道場, cada uno plegable */
  .kp{margin-top:18px;}
  .kp-head{list-style:none;display:flex;align-items:center;gap:14px;padding:16px 16px 14px;border-radius:14px;background:var(--papel);
    border:1px solid var(--line-cl);border-top:4px solid var(--kp-c);cursor:pointer;color:var(--sumi);}
  .kp-head::-webkit-details-marker{display:none;}
  .kp-head:focus-visible{outline:3px solid var(--kincha);outline-offset:2px;}
  .kp-bosque{--kp-c:var(--matcha);} .kp-dojo{--kp-c:var(--sumi);}
  .kp:not([open]) .kp-head{background:var(--tinte-papel);border-style:dashed;border-top:4px solid var(--kp-c);}
  .kp-kj{font-family:'Shippori Mincho',serif;font-weight:700;font-size:2.3rem;line-height:1;color:var(--kp-c);width:48px;text-align:center;flex-shrink:0;}
  .kp-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;font-family:'Zen Maru Gothic',sans-serif;}
  .kp-n{font-size:.74rem;color:var(--gris-osc);}
  .kp-h{font-family:'Shippori Mincho',serif;font-size:1.3rem;font-weight:700;}
  .kp-sub{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.8rem;color:var(--gris-osc-2);}
  .kp-prog{display:block;height:5px;border-radius:4px;background:var(--washi-deep);overflow:hidden;margin-top:6px;}
  .kp-prog span{display:block;height:100%;background:var(--kp-c);}
  .kp-chev::after{content:"▾";display:inline-block;font-size:.85rem;color:var(--gris-osc);transition:rotate var(--dur-media, .26s) var(--curva-suave, ease);}
  .kp[open]:not(.plegando) > .kp-head .kp-chev::after{rotate:180deg;}
  .kp-cuerpo{padding-top:4px;}
  .kp-cuerpo > .unit:first-child{margin-top:14px;}
  /* El bosque en dos partes (23/10): «Qué significan» y «Cómo se leen», cada una con su título */
  /* Los dos bloques del bosque (23/10): «Qué significan» y «Cómo se leen», plegables dentro del bosque */
  .kp-b{margin-top:12px;}
  .kp-cuerpo > .kp-b:first-child{margin-top:14px;}
  .kp-b-head{list-style:none;display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;
    background:var(--papel);border-left:4px solid var(--matcha);cursor:pointer;}
  .kp-b-head::-webkit-details-marker{display:none;}
  .kp-b-head:focus-visible{outline:3px solid var(--kincha);outline-offset:2px;}
  .kp-b-lee > .kp-b-head{border-left-color:var(--ai);}
  .kp-b-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;font-family:'Zen Maru Gothic',sans-serif;}
  .kp-b-n{font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--gris-osc);}
  .kp-b-h{font-family:'Shippori Mincho',serif;font-size:1.12rem;font-weight:700;color:var(--sumi);}
  .kp-b-p{font-size:.84rem;line-height:1.45;color:var(--gris-osc-2);}
  .kp-b[open]:not(.plegando) .kp-b-p{display:none;}   /* abierto, la frase sobra: ya ves sus líneas */
  .kp-b-prog{display:block;height:4px;border-radius:3px;background:var(--washi-deep);overflow:hidden;margin-top:6px;}
  .kp-b-prog span{display:block;height:100%;background:var(--matcha);}
  .kp-b-lee .kp-b-prog span{background:var(--ai);}
  .kp-b-c{font-size:.76rem;color:var(--gris-osc);}
  .kp-b[open]:not(.plegando) > .kp-b-head .kp-chev::after{rotate:180deg;}
  .kp-b-cuerpo > .unit:first-child{margin-top:12px;}
  .kp-b.is-cerrado .kp-b-head{cursor:default;border-style:dashed;border-left-style:solid;background:var(--tinte-papel);}
  .kp-b.is-cerrado .kp-b-h{color:var(--gris-osc);}
  .kp-b-candado{flex:0 0 auto;width:14px;height:11px;margin-top:6px;border:1.5px solid var(--gris-osc);border-radius:2px;position:relative;}
  .kp-b-candado::before{content:"";position:absolute;left:2px;right:2px;bottom:100%;height:7px;border:1.5px solid var(--gris-osc);border-bottom:0;border-radius:6px 6px 0 0;}
  /* Todos los significados de un kanji, del mismo tamaño: luna · mes */
  .kj-sigs i{font-style:normal;color:var(--gris-osc);}
  /* Segunda parte del bosque: las lecturas de un kanji en grupos (japonesa, china y las que suenan distinto) */
  .kj-grupo{margin:14px auto 0;max-width:340px;text-align:left;padding:10px 12px 4px;border-radius:12px;border-left:4px solid var(--kj-g, var(--line));background:var(--tinte-papel, var(--papel));}
  .kj-g-japonesa{--kj-g:var(--matcha);} .kj-g-china{--kj-g:var(--ai);} .kj-g-cambia{--kj-g:var(--kincha);}
  .kj-g-cab{display:flex;align-items:baseline;justify-content:space-between;gap:10px;}
  .kj-g-cab b{font-size:.92rem;color:var(--kj-g);}
  .kj-g-cab span{font-family:'Shippori Mincho',serif;font-size:1.3rem;}
  .kj-g-que{margin:2px 0 4px;font-size:.8rem;color:var(--gris-osc);}
  .kj-grupo .kj-pal:first-of-type{border-top:0;}
  .kj-diana{color:var(--kj-g, var(--shu));font-weight:700;}
  .kj-diana rt{color:var(--kj-g, var(--shu));}
  .kj-cambia{display:block;margin-top:2px;font-size:.78rem;color:var(--gris-osc);}
  /* La historia del principio de «Cómo se leen» */
  .kj-h-t{margin:6px 0 4px;font-family:'Shippori Mincho',serif;font-size:1.3rem;}
  .kj-h-ej{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin:14px 0 4px;}
  .kj-h-w{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:120px;padding:10px 12px;border-radius:12px;border-top:4px solid var(--kj-g, var(--line));background:var(--tinte-papel, var(--papel));}
  .kj-h-w span{font-family:'Shippori Mincho',serif;font-size:2rem;}
  .kj-h-w small{font-size:.8rem;color:var(--gris-osc);}
  .kp-cinta{display:inline-flex;align-items:center;gap:6px;}
  .kp-cinta i{width:18px;height:7px;border-radius:2px;background:var(--obi);border:1px solid var(--obi-n);}
  .kp-cinta.is-ok{color:var(--matcha-osc);font-weight:700;}
  /* Dōjō de kanji (js/motor/dojo.js): los siete cinturones. Cada uno da su color (--obi) y el de su nudo y borde (--obi-n) */
  .dj-blanco, .dj-obi-blanco{--obi:var(--papel);--obi-n:var(--gris-cl);--obi-barra:var(--gris-cl);}
  .dj-amarillo, .dj-obi-amarillo{--obi:var(--obi-amarillo);--obi-n:var(--obi-amarillo-n);}
  .dj-naranja, .dj-obi-naranja{--obi:var(--obi-naranja);--obi-n:var(--obi-naranja-n);}
  .dj-verde, .dj-obi-verde{--obi:var(--obi-verde);--obi-n:var(--obi-verde-n);}
  .dj-azul, .dj-obi-azul{--obi:var(--obi-azul);--obi-n:var(--obi-azul-n);}
  .dj-marron, .dj-obi-marron{--obi:var(--obi-marron);--obi-n:var(--obi-marron-n);}
  .dj-negro, .dj-obi-negro{--obi:var(--obi-negro);--obi-n:var(--gris-cl);}
  .dj-obi{width:56px;height:35px;flex-shrink:0;}
  .dj-obi-tela{fill:var(--obi);stroke:var(--obi-n);stroke-width:1;}
  .dj-obi-nudo{fill:var(--obi);stroke:var(--obi-n);stroke-width:1.5;}
  .dj-obi-cola{fill:none;stroke:var(--obi-n);stroke-width:6;stroke-linecap:round;}
  /* La escalera: un grado por cinturón, unidos por un hilo; conseguido (atado y con 合格), el actual, cerrados y lo que vendrá */
  .dj-escalera{position:relative;display:flex;flex-direction:column;gap:14px;margin-top:14px;}
  .dj-escalera::before{content:"";position:absolute;left:39px;top:26px;bottom:26px;border-left:2px dashed var(--line);}
  .dj-grado{position:relative;background:var(--papel);border:1px solid var(--line-cl);border-radius:14px;padding:14px 14px 14px 82px;font-family:'Zen Maru Gothic',sans-serif;}
  .dj-grado > .dj-obi{position:absolute;left:12px;top:14px;width:52px;height:32px;}
  .dj-g-fila{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;}
  .dj-grado.is-hecho .dj-g-fila{padding-right:52px;}
  .dj-g-c{font-size:1rem;font-weight:700;}
  .dj-g-n{font-size:.88rem;color:var(--gris-osc);}
  .dj-g-que{margin:2px 0 0;font-size:.88rem;line-height:1.45;color:var(--gris-osc-2);}
  .dj-g-estado{margin:10px 0 0;display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap;font-size:.8rem;color:var(--gris-osc);}
  .dj-g-acc{margin-top:12px;display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;}
  .dj-g-acc .btn{min-height:44px;}
  .dj-grado.is-actual{border:2px solid color-mix(in srgb, var(--obi-n) 65%, var(--papel));}
  .dj-grado.is-cerrado{background:var(--tinte-papel);border:1.5px dashed var(--line);}
  .dj-grado.is-cerrado > .dj-obi{opacity:.5;filter:grayscale(1);}
  .dj-grado.is-cerrado .dj-g-c, .dj-grado.is-cerrado .dj-g-que{color:var(--gris-osc);}
  .dj-candado{width:13px;height:13px;flex-shrink:0;}
  .dj-candado rect{fill:currentColor;} .dj-candado path{fill:none;stroke:currentColor;stroke-width:1.6;}
  .dj-grado.is-futuro{padding-left:82px;background:transparent;border:1.5px dashed var(--line);opacity:.7;}
  .dj-grado.is-hecho{padding-bottom:40px;}
  .dj-g-sello{position:absolute;right:12px;top:12px;font-family:'Shippori Mincho',serif;font-weight:800;font-size:.85rem;color:var(--shu);border:2px solid var(--shu);border-radius:6px;padding:1px 6px;transform:rotate(-7deg);}
  /* El cinturón atado alrededor de la tarjeta (en la escalera y al conseguirlo) */
  .dj-banda, .dj-nudo, .dj-cola, .cg-cinto{
    --obi-os:color-mix(in oklab, var(--obi) 70%, #000);
    --costura:color-mix(in oklab, var(--obi) 55%, #000);}
  .dj-negro :is(.dj-banda,.dj-nudo,.dj-cola), .cg-cinto.dj-obi-negro{--costura:color-mix(in oklab, var(--obi) 75%, #fff);}
  .dj-blanco :is(.dj-banda,.dj-nudo,.dj-cola){--obi:var(--obi-blanco);--obi-n:color-mix(in srgb, var(--obi-blanco) 70%, #000);}   /* el blanco, blanco en todos los temas */
  .dj-banda{position:absolute;left:-5px;right:-5px;bottom:10px;height:15px;border-radius:3px;border:1.5px solid var(--obi-tinta);transform-origin:left center;
    background:linear-gradient(to bottom, var(--obi) 0 60%, var(--obi-os) 60% 100%);box-shadow:0 3px 3px -1px var(--obi-sombra);}
  .dj-banda::before{content:"";position:absolute;left:10px;right:24px;top:2px;height:1.6px;border-radius:2px;background:var(--obi-brillo);}
  .dj-banda::after{content:"";position:absolute;left:3px;right:3px;top:5px;height:5px;opacity:.75;
    background:repeating-linear-gradient(90deg, var(--costura) 0 3px, transparent 3px 6px) 0 0/100% 1px no-repeat,
               repeating-linear-gradient(90deg, var(--costura) 0 3px, transparent 3px 6px) 3px 4px/100% 1px no-repeat;}
  .dj-nudo{position:absolute;left:33px;bottom:4px;width:22px;height:25px;border-radius:6px;border:1.5px solid var(--obi-tinta);box-shadow:1px 3px 3px -1px var(--obi-sombra);
    background:linear-gradient(118deg, transparent 0 44%, color-mix(in oklab, var(--obi-os) 85%, transparent) 44% 58%, transparent 58%),
               linear-gradient(90deg, var(--obi) 0 64%, var(--obi-os) 64%);}
  .dj-nudo::before{content:"";position:absolute;left:4px;top:3px;width:5px;height:1.6px;border-radius:2px;background:var(--obi-brillo);}
  .dj-cola{position:absolute;bottom:-13px;width:9px;height:22px;border-radius:2px 2px 3px 3px;border:1.5px solid var(--obi-tinta);transform-origin:top center;
    background:linear-gradient(90deg, var(--obi) 0 56%, var(--obi-os) 56%);}
  .dj-cola::after{content:"";position:absolute;left:2.5px;top:3px;bottom:3px;width:1px;opacity:.7;background:repeating-linear-gradient(to bottom, var(--costura) 0 3px, transparent 3px 6px);}
  .dj-cola-a{left:35px;transform:rotate(15deg);} .dj-cola-b{left:46px;transform:rotate(-13deg);}
  .dj-barra{position:relative;display:block;flex:1 1 140px;min-width:120px;max-width:260px;height:8px;border-radius:5px;background:var(--line-cl);}
  .dj-barra > span{display:block;height:100%;border-radius:5px;background:var(--obi-barra, var(--obi));}
  .dj-hito{position:absolute;top:-3px;width:3px;height:14px;margin-left:-1.5px;border-radius:2px;background:var(--gris-cl-2);}
  .dj-hito.on{background:var(--kincha);}
  /* La palabra de la pregunta (ふじさん, 月 subrayado), en la misma letra limpia que las opciones (31/10, Alex): la de pincel
     (Shippori Mincho) hacía dudar a quien empieza entre き, さ o ふ, y el kanji de arriba no se parecía al de abajo. */
  .q-pal{display:block;font-family:'Zen Maru Gothic',sans-serif;font-weight:500;font-size:1.9rem;margin:10px 0 2px;letter-spacing:.04em;}
  .q-es{display:block;font-size:.85rem;color:var(--gris-osc);font-family:'Zen Maru Gothic',sans-serif;}
  .dj-marca{text-decoration:underline;text-decoration-color:var(--shu);text-decoration-thickness:3px;text-underline-offset:6px;}
  .dj-varias{margin:6px 0 0;text-align:center;}
  /* Durante una prueba: el cinturón y qué prueba es, y una marca por pregunta (en rojo, las falladas) */
  .dj-ex-t{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25;font-family:'Zen Maru Gothic',sans-serif;}
  .dj-ex-t b{font-size:.95rem;} .dj-ex-t span{font-size:.78rem;color:var(--gris-osc);}
  .dj-marcas{display:flex;gap:2px;margin:-2px 0 10px;}
  .dj-marcas i{flex:1;min-width:1px;height:6px;border-radius:2px;background:var(--line-cl);}
  .dj-marcas i.ok{background:color-mix(in srgb, var(--sumi) 55%, var(--papel));}
  .dj-marcas i.mal{background:var(--shu);}
  .dj-marcas i.ya{background:var(--gris-cl);}
  .dj-ex-nota{margin:-4px 0 10px;font-size:.8rem;color:var(--gris-osc);text-align:center;}
  /* Resultados de una prueba: aprobada, cinturón conseguido o no aprobada */
  .dj-res{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;}
  .dj-res-que{font-size:.84rem;color:var(--gris-osc);font-family:'Zen Maru Gothic',sans-serif;}
  .dj-marcador{font-family:'Shippori Mincho',serif;line-height:1;font-variant-numeric:tabular-nums;}
  .dj-marcador b{font-size:3.4rem;font-weight:800;} .dj-marcador small{font-size:1.2rem;color:var(--gris-osc);}
  .dj-res-tit{margin:0;font-size:1.3rem;text-wrap:balance;}
  .dj-res-sub{margin:0;max-width:34ch;color:var(--gris-osc-2);text-wrap:pretty;}
  .dj-res-barra{width:100%;max-width:300px;display:flex;justify-content:center;}
  .dj-res-sig{margin:0;font-size:.85rem;color:var(--gris-osc);}
  .dj-tarjeta{position:relative;width:100%;max-width:300px;background:var(--washi);border:1px solid var(--line-cl);border-radius:14px;padding:16px 16px 46px;text-align:left;}
  .dj-tarjeta > b{display:block;font-size:1.05rem;} .dj-tarjeta > span:not([class]){font-size:.84rem;color:var(--gris-osc);}
  .dj-abre{display:flex;align-items:center;gap:10px;width:100%;max-width:300px;margin:0;padding:10px 12px;border:1.5px solid color-mix(in srgb, var(--obi-n) 65%, var(--papel));border-radius:12px;font-size:.86rem;text-align:left;}
  .dj-abre i{width:28px;height:9px;border-radius:2px;background:var(--obi);border:1px solid var(--obi-n);flex-shrink:0;}
  .dj-fallos{width:100%;max-width:420px;display:flex;flex-direction:column;gap:8px;text-align:left;}
  .dj-fallos h3{margin:4px 0 0;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gris-osc);}
  .dj-fallo{display:grid;grid-template-columns:52px 1fr;gap:2px 12px;align-items:center;padding:10px 12px;border-radius:12px;background:var(--washi);border:1px solid var(--line-cl);}
  .dj-fallo-k{grid-row:span 2;font-family:'Shippori Mincho',serif;font-size:2.1rem;line-height:1;text-align:center;}
  .dj-fallo b{font-size:.92rem;} .dj-fallo > span:last-child{font-size:.84rem;color:var(--gris-osc);}
  .dj-fallo em{font-style:normal;color:var(--shu);}
  .dj-res-repasar{margin:0;font-size:.85rem;color:var(--matcha-osc);}
  /* Llaves (js/motor/llaves.js): el examen de cada unidad y las puertas del Camino */
  .ll-ico{display:inline-block;vertical-align:-.15em;flex:none;}
  /* Unidad sellada (24/10, llaves.js): la tarjeta apagada, una shimenawa con dos shide por arriba (atada en las
     esquinas, sin tapar las letras) y, a la derecha, una fuda de hinoki colgada de un clavo con las llaves que pide
     marcadas a fuego. Paja, papel, madera y cordón son objetos: los mismos colores en todos los temas (en los oscuros, la
     paja un poco más apagada para que no brille). */
  :root{--paja-1:#dcc891;--paja-2:#c3a86b;--paja-borde:#7e6738;--paja-luz:#f3ead0;--shide:#fbf8ef;--shide-borde:#cfc5ad;
    --hk-1:#d9bb86;--hk-2:#f0dcb4;--hk-3:#e8cf9f;--hk-4:#c9a46c;--hk-borde:#7c5728;--hk-veta:#b88c55;--hk-agujero:#4a2e12;
    --hk-quema:#2a1306;--hk-halo:#7a3d14;--hk-luz:#fff8e6;--hk-sombra:#5a3a17;
    --cordel:#c23a2a;--cordel-osc:#5e130c;--cordel-luz:#f08a74;--borla:#b8322a;--borla-2:#9e2a20;--borla-osc:#6b1610;
    --borla-collar:#e3b95c;--borla-collar-borde:#8a6224;--clavo-1:#d8d3cb;--clavo-2:#8b857c;--clavo-3:#3b3732;}
  :root:is([data-tema="samurai"],[data-tema="noche"]){--paja-1:#bda775;--paja-2:#a48c57;--paja-borde:#5f4d2c;--paja-luz:#e3d6ad;}
  .unit.is-sellada{position:relative;}
  .unit.is-sellada .unit-head{cursor:default;filter:saturate(.18) brightness(1.04);transition:filter .9s ease;}
  .unit.is-sellada .unit-txt{padding-right:62px;}
  .ll-atado{position:absolute;z-index:2;left:-10px;right:-10px;top:-12px;height:60px;pointer-events:none;}
  .ll-cuerda{position:absolute;left:0;top:0;width:100%;height:22px;overflow:visible;filter:drop-shadow(0 2px 1.5px rgba(0,0,0,.25));}
  .ll-pj-b{fill:var(--paja-borde);stroke:var(--paja-borde);stroke-width:1.6;stroke-linejoin:round;}
  .ll-pj-1{fill:var(--paja-1);stroke:var(--paja-borde);stroke-width:.5;} .ll-pj-2{fill:var(--paja-2);stroke:var(--paja-borde);stroke-width:.5;}
  .ll-pj-luz{fill:none;stroke:var(--paja-luz);stroke-width:.9;opacity:.45;stroke-linecap:round;}
  .ll-nudo{position:absolute;top:-3px;width:22px;height:44px;overflow:visible;filter:drop-shadow(0 2px 1.5px rgba(0,0,0,.25));}
  .ll-nudo-a{left:2px;} .ll-nudo-b{right:2px;scale:-1 1;}
  .ll-pj-n{fill:var(--paja-2);stroke:var(--paja-borde);stroke-width:1.3;}
  .ll-pj-nl{fill:none;stroke:var(--paja-borde);stroke-width:.8;} .ll-pj-brillo{fill:var(--paja-luz);opacity:.6;}
  .ll-pj-cola{fill:none;stroke:var(--paja-borde);stroke-width:5.4;stroke-linecap:round;}
  .ll-pj-cola-h{fill:none;stroke:var(--paja-2);stroke-width:3.6;stroke-linecap:round;stroke-dasharray:3 2;}
  .ll-pj-fleco{fill:none;stroke:var(--paja-2);stroke-width:.9;stroke-linecap:round;}
  .ll-shide{position:absolute;top:13px;width:10px;height:25px;overflow:visible;transform-origin:50% 0;filter:drop-shadow(0 1.5px 1px rgba(0,0,0,.2));}
  .ll-shide polygon{fill:var(--shide);stroke:var(--shide-borde);stroke-width:.8;stroke-linejoin:round;} .ll-shide path{fill:none;stroke:var(--shide-borde);stroke-width:.7;}
  .ll-shide-1{left:max(58%, 205px);} .ll-shide-2{left:calc(max(58%, 205px) + 40px);}
  @media (prefers-reduced-motion:no-preference){
    .unit.is-sellada:not(.ll-abriendo) .ll-shide{animation:ll-mece 2.6s ease-in-out infinite alternate;}
    .unit.is-sellada:not(.ll-abriendo) .ll-shide-2{animation-duration:3.1s;animation-delay:-1s;}
  }
  @keyframes ll-mece{from{rotate:-4deg} to{rotate:4deg}}
  /* La fuda de hinoki: la tablilla (svg) y, encima, la llave, el número a fuego y «llaves» */
  .ll-sello{position:absolute;z-index:3;right:10px;top:50%;width:46px;transform:translateY(-50%);transform-origin:50% 4%;pointer-events:none;
    filter:drop-shadow(1px 4px 4px rgba(0,0,0,.35));}
  .ll-fuda{display:block;width:100%;height:auto;overflow:visible;}
  .ll-hk-1{stop-color:var(--hk-1);} .ll-hk-2{stop-color:var(--hk-2);} .ll-hk-3{stop-color:var(--hk-3);} .ll-hk-4{stop-color:var(--hk-4);}
  .ll-bis-l{stop-color:var(--hk-luz);stop-opacity:.9;} .ll-bis-l0{stop-color:var(--hk-luz);stop-opacity:0;}
  .ll-bis-s0{stop-color:var(--hk-sombra);stop-opacity:0;} .ll-bis-s{stop-color:var(--hk-sombra);stop-opacity:.55;}
  .ll-cl-1{stop-color:var(--clavo-1);} .ll-cl-2{stop-color:var(--clavo-2);} .ll-cl-3{stop-color:var(--clavo-3);}
  .ll-clavo{stroke:var(--clavo-3);stroke-width:.6;} .ll-clavo-s{fill:var(--clavo-3);opacity:.3;}
  .ll-cordel-o{fill:none;stroke:var(--cordel-osc);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;}
  .ll-cordel{fill:none;stroke:var(--cordel);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
  .ll-cordel-h{fill:none;stroke:var(--cordel-luz);stroke-width:1.8;stroke-dasharray:1.2 1.6;stroke-linecap:round;opacity:.7;}
  .ll-veta{fill:none;stroke:var(--hk-veta);stroke-width:.5;opacity:.6;}
  .ll-tabla-borde{fill:none;stroke:var(--hk-borde);stroke-width:1.1;stroke-linejoin:round;}
  .ll-agujero{fill:var(--hk-agujero);}
  .ll-borla-cola{stroke:var(--borla-2);stroke-width:1.6;} .ll-borla-nudo{fill:var(--borla);stroke:var(--borla-osc);stroke-width:.6;}
  .ll-borla-collar{fill:var(--borla-collar);stroke:var(--borla-collar-borde);stroke-width:.4;}
  .ll-borla-f0, .ll-borla-f1{fill:none;stroke-width:.9;stroke-linecap:round;} .ll-borla-f0{stroke:var(--borla-2);} .ll-borla-f1{stroke:var(--borla);}
  .ll-fuego{position:absolute;left:0;right:0;top:13%;bottom:18%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:var(--hk-quema);}
  .ll-fuego .ll-ico{opacity:.9;filter:drop-shadow(0 0 1.5px color-mix(in srgb, var(--hk-halo) 70%, transparent));}
  .ll-fuego b{font-family:'Shippori Mincho',serif;font-weight:800;font-size:1.55rem;line-height:1.05;
    text-shadow:0 0 2px color-mix(in srgb, var(--hk-halo) 80%, transparent), 0 0 5px color-mix(in srgb, var(--hk-halo) 45%, transparent);}
  /* La última puerta, el examen N5: sin shimenawa, la fuda un poco más grande y una ranura por llave */
  .unit.is-puerta .unit-head{filter:none;}
  .unit.is-puerta .unit-txt{padding-right:70px;}
  .unit.is-puerta .ll-sello{width:54px;right:12px;}
  .unit.is-puerta .ll-fuego b{font-size:1.85rem;}
  .ll-ranuras{display:grid;grid-template-columns:repeat(var(--n, 15), 1fr);gap:3px;width:100%;max-width:240px;margin-top:10px;}
  .ll-ranuras i{height:12px;border-radius:3px;border:1px solid color-mix(in srgb, currentColor 45%, transparent);}
  .ll-ranuras i.on{background:var(--kincha);border-color:var(--kincha);}
  .ll-ranuras i.nueva{outline:2px solid var(--sumi);outline-offset:1px;}
  /* La estación del examen: marco doble dorado y una llave en el punto */
  .st.st-examen .st-dot{background:var(--kincha);border-color:var(--kincha);color:var(--papel);box-shadow:0 0 0 3px var(--papel), 0 0 0 5px var(--kincha);}
  .st.st-examen.is-done .st-dot{background:var(--kincha);}
  .metro-wrap .metro .st.st-examen .st-body{border:2px solid var(--kincha);background:color-mix(in srgb, var(--kincha) 12%, var(--papel));
    box-shadow:0 0 0 3px var(--papel), 0 0 0 4.5px var(--kincha), 0 6px 14px color-mix(in srgb, var(--kincha) 35%, transparent);}
  .metro-wrap .metro .st.st-examen .st-num{background:var(--kincha);color:var(--papel);}
  .st.st-examen .st-body b{font-family:'Shippori Mincho',serif;font-size:.95rem;}
  .st.st-examen .st-ex-sub{color:var(--shu-deep);font-weight:700;}
  /* «Tu plano»: lo sellado, con las llaves que pide; en el N5, cuántas tienes */
  .ro.is-sellada .ro-sym{opacity:.4;filter:saturate(.2);}
  .ro-pide{position:absolute;top:-6px;right:0;display:flex;align-items:center;gap:2px;padding:1px 5px;border-radius:8px;
    background:var(--papel);border:1px solid var(--line);color:var(--sumi);font-size:.62rem;font-weight:700;}
  .ro-llaves{position:absolute;top:-8px;left:50%;transform:translateX(-50%);white-space:nowrap;display:flex;align-items:center;gap:3px;
    padding:2px 6px;border-radius:8px;background:var(--kincha);color:var(--papel);font-size:.62rem;font-weight:700;}
  /* El llavero dibujado (23/10, llaves.js → llaveroSVG): cordón rojo, anilla de latón y llaves en abanico, con el trazo de
     tinta de los libros y el oro del tema. Se mece despacio, como el farolillo. */
  .lv{overflow:visible;}
  .lv *{vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round;}
  .lv-cordon{fill:none;stroke:var(--shu);stroke-width:2;}
  .lv-nudo{fill:var(--shu);stroke:var(--est-tinta, var(--sumi));stroke-width:1.2;}
  .lv-anilla-borde{fill:none;stroke:var(--est-tinta, var(--sumi));stroke-width:5.4;}
  .lv-anilla{fill:none;stroke:var(--rc-oro);stroke-width:3;}
  .lv-anilla-luz{fill:none;stroke:color-mix(in srgb, var(--rc-oro) 40%, #fff);stroke-width:1.2;opacity:.8;}
  .lv-tija, .lv-dientes{fill:var(--rc-oro);stroke:var(--est-tinta, var(--sumi));stroke-width:1.2;}
  .lv-ojo{fill:none;stroke:var(--rc-oro);stroke-width:3.4;}
  .lv-filo{fill:none;stroke:var(--est-tinta, var(--sumi));stroke-width:1.2;}
  .est-llavero{display:block;width:92px;height:121px;transform-origin:50% 0;animation:fk-mece 4.4s ease-in-out infinite;animation-delay:-1.2s;}
  .est-llavero .lv{width:100%;height:100%;}
  .cu-llavero{display:block;width:20px;height:26px;margin:-1px 0 0;}
  .cu-llavero .lv{width:100%;height:100%;}
  .cu-cosa .cu-llavero{margin:0;align-self:center;}
  /* El colgador de la tarjeta: la estantería en pequeño (barra, cinturones a la izquierda y llavero a la derecha) */
  .cu-balda{width:116px;} .cu-libros{justify-content:center;width:100%;}
  .cu-colgador{display:flex;flex-direction:column;width:100%;margin-top:5px;}
  .cu-riel{display:block;height:3px;margin:0 8px;border-radius:2px;background:linear-gradient(var(--omk-madera-cl), var(--omk-madera));}
  .cu-cg-fila{display:flex;justify-content:space-between;align-items:flex-start;padding:0 14px 0 16px;margin-top:-3px;min-height:22px;}
  .cu-cintos{display:flex;gap:2px;}
  .cu-cintos .cu-cinto{width:7px;height:17px;} .cu-cintos .cu-cinto svg{filter:none;} .cu-cinto .cg-tela{stroke-width:.7;}
  .cu-llavero .lv-anilla-borde{stroke-width:3.2;} .cu-llavero .lv-anilla{stroke-width:2;} .cu-llavero .lv-tija, .cu-llavero .lv-dientes, .cu-llavero .lv-filo{stroke-width:.7;} .cu-llavero .lv-ojo{stroke-width:2.2;}
  .cu-cinto .cg-costura, .cu-cinto .cg-brillo{display:none;}
  /* El colgador de la estantería (23/10, omikuji.js → colgador): una barra de madera en la pared, los cinturones del Dōjō
     doblados encima (dojo.js → colgadorHTML) y el llavero al lado. */
  .est-colgador{position:relative;max-width:420px;margin:30px auto 0;padding:0 14px;}
  .est-cg-fila{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:flex-start;padding:0 26px 0 22px;height:128px;margin-bottom:-122px;}
  .est-cg-cintos{display:flex;gap:4px;width:234px;padding:0;border:none;background:none;cursor:pointer;font:inherit;color:inherit;}
  @media (hover:hover){ .est-cg-cintos:hover .cg-cinto:not(.cg-vacio){transform:translateY(-2px);} }
  .cg-cinto{transition:transform .15s var(--est-curva);}
  .est-riel{position:relative;height:12px;margin:0 6px;border-radius:6px;border:2px solid var(--est-tinta);overflow:hidden;
    background:linear-gradient(var(--omk-madera-cl), var(--omk-madera));box-shadow:var(--est-sombra-balda);}
  .est-riel-clavo{position:absolute;top:2px;width:5px;height:5px;border-radius:50%;background:var(--est-balda-cara);border:1px solid var(--est-tinta);}
  .est-riel-clavo:first-of-type{left:8px;} .est-riel-clavo:last-of-type{right:8px;}
  .cg-cinto{display:block;width:30px;height:72px;}
  .cg-cinto svg{display:block;width:100%;height:auto;overflow:visible;filter:drop-shadow(1px 5px 3px var(--obi-sombra));}
  .cg-cinto *{vector-effect:non-scaling-stroke;stroke-linejoin:round;}
  .cg-tela{fill:var(--obi);stroke:var(--est-tinta);stroke-width:1.5;}
  .cg-costura{fill:none;stroke:var(--costura);stroke-width:.8;stroke-dasharray:2.2 1.8;opacity:.85;}
  .cg-sombra{fill:rgba(0,0,0,.2);} .cg-sombra-sua{fill:rgba(0,0,0,.12);}
  .cg-brillo{fill:none;stroke:var(--obi-brillo);stroke-width:1.2;}
  .cg-cinto.dj-obi-blanco .cg-brillo{stroke:rgba(255,255,255,.9);}
  .cg-raya{fill:none;stroke:var(--rc-oro);stroke-width:2.4;}
  .cg-cinto.dj-obi-blanco{--obi:var(--obi-blanco);--obi-n:color-mix(in srgb, var(--obi-blanco) 70%, #000);}   /* el blanco, blanco en todos los temas */
  .cg-vacio{display:flex;justify-content:center;padding-top:5px;}
  .cg-clavija{width:7px;height:7px;border-radius:50%;background:var(--est-balda-cara);border:1.5px solid var(--est-tinta);}
  .est-llavero{margin-top:-8px;}
  .est-cg-pies{justify-content:space-between;padding:0 26px 0 22px;margin-top:92px;}
  .est-cg-pies > span{width:234px;} .est-cg-pies > .est-pie-llaves{width:92px;}
  /* El examen: marcas por pregunta y la pantalla final */
  .ll-res-marcas{width:100%;max-width:320px;margin:0;}
  .ll-llave{width:120px;height:120px;border-radius:50%;display:flex;align-items:center;justify-content:center;
    background:color-mix(in srgb, var(--kincha) 14%, var(--papel));border:3px solid var(--kincha);color:var(--kincha);}
  .ll-res-n{margin:0;font-size:1.05rem;}
  .ll-res .ll-ranuras{max-width:300px;margin:0;color:var(--gris-osc);}
  .ll-sig{width:100%;max-width:380px;box-sizing:border-box;display:flex;gap:12px;align-items:center;text-align:left;padding:12px 14px;
    border-radius:14px;background:var(--papel);border:1.5px solid var(--matcha);}
  .ll-sig > i{width:10px;align-self:stretch;border-radius:5px;background:var(--lc);flex:none;}
  .ll-sig span{display:flex;flex-direction:column;gap:2px;} .ll-sig small{color:var(--gris-osc);font-size:.84rem;}
  .ll-fallos{width:100%;max-width:420px;display:flex;flex-direction:column;gap:8px;text-align:left;}
  .ll-fallos h3{margin:4px 0 0;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gris-osc);}
  .ll-fallo{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:12px;background:var(--washi);border:1px solid var(--line-cl);font-size:.9rem;}
  .ll-fallo > span:last-child{font-size:.84rem;color:var(--gris-osc);} .ll-fallo em{font-style:normal;color:var(--shu);} .ll-fallo b{color:var(--sumi);}
  .ll-seal{color:var(--kincha);}
  /* Abrir una unidad (llaves.js → animar; --ll-t: cuándo llega la última llave). Las llaves bajan y entran en la fuda,
     la fuda brilla, se mece en su clavo y cae; luego la shimenawa se desata: los nudos se aflojan, los shide se van
     volando y la cuerda cae; al final, la tarjeta recupera su color. */
  .ll-vuela{position:absolute;z-index:5;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;pointer-events:none;
    background:var(--rc-oro);color:var(--hk-2);box-shadow:0 0 0 1.5px var(--rc-oro-filo, var(--rc-oro)), 0 2px 6px rgba(0,0,0,.3);
    animation:ll-vuela .7s cubic-bezier(.3,1.25,.5,1) both, ll-entra .3s ease-in forwards;}
  @keyframes ll-vuela{from{transform:translate(var(--dx), -190px) scale(.6) rotate(-120deg);opacity:0} 55%{opacity:1} to{transform:none;opacity:1}}
  @keyframes ll-entra{to{transform:scale(.25);opacity:0}}
  .unit.ll-abriendo{z-index:4;}   /* lo que cae pasa por encima de la tarjeta de abajo */
  .unit.ll-abriendo .ll-sello{animation:ll-brilla .7s ease calc(var(--ll-t, 0s) + .8s) both, ll-cae-fuda 1.3s cubic-bezier(.4,0,.7,.7) calc(var(--ll-t, 0s) + 1.5s) forwards;}
  @keyframes ll-brilla{45%{filter:drop-shadow(1px 4px 4px rgba(0,0,0,.35)) drop-shadow(0 0 10px var(--rc-oro));}}
  @keyframes ll-cae-fuda{0%{transform:translateY(-50%)} 18%{transform:translateY(-50%) rotate(12deg)} 36%{transform:translateY(-50%) rotate(-9deg)}
    55%{transform:translateY(-42%) rotate(14deg);opacity:1} to{transform:translateY(30%) rotate(32deg);opacity:0}}
  .unit.ll-abriendo .ll-nudo{transform-origin:45% 20%;animation:ll-afloja .5s ease-in calc(var(--ll-t, 0s) + 2.3s) forwards;}
  .unit.ll-abriendo .ll-nudo-b{animation-delay:calc(var(--ll-t, 0s) + 2.42s);}
  @keyframes ll-afloja{30%{transform:scale(1.15)} to{transform:translateY(18px) scale(.3);opacity:0}}
  .unit.ll-abriendo .ll-shide-1{animation:ll-vuela-shide-1 1.3s ease-in calc(var(--ll-t, 0s) + 2.55s) forwards;}
  .unit.ll-abriendo .ll-shide-2{animation:ll-vuela-shide-2 1.3s ease-in calc(var(--ll-t, 0s) + 2.7s) forwards;}
  @keyframes ll-vuela-shide-1{50%{transform:translate(-16px, 40px) rotate(-24deg);opacity:.9} to{transform:translate(10px, 125px) rotate(40deg);opacity:0}}
  @keyframes ll-vuela-shide-2{50%{transform:translate(14px, 40px) rotate(30deg);opacity:.9} to{transform:translate(-8px, 125px) rotate(-20deg);opacity:0}}
  .unit.ll-abriendo .ll-cuerda{transform-origin:50% 50%;animation:ll-cae-cuerda 1s cubic-bezier(.45,0,.85,.55) calc(var(--ll-t, 0s) + 2.68s) forwards;}
  @keyframes ll-cae-cuerda{25%{transform:translateY(6px) scaleX(.97)} to{transform:translateY(70px) rotate(2deg) scaleX(.9);opacity:0}}
  .unit.ll-abriendo.ll-color .unit-head{filter:none;}

  /* La animación: la marca nueva se sella; el cinturón rodea la tarjeta, se ata, caen las puntas y el sello */
  .dj-res.anima .dj-marcador{animation:dj-subir .5s ease-out backwards;}
  .dj-res.anima .dj-res-tit, .dj-res.anima .dj-res-sub{animation:dj-subir .5s ease-out .45s backwards;}
  .dj-res-ok.anima .dj-barra > span{animation:dj-llenar .9s ease-out .3s backwards;}
  .dj-res-ok.anima .dj-hito.on{animation:dj-hito .45s cubic-bezier(.3,1.6,.5,1) 1.1s backwards;}
  .dj-res-ok.anima .dj-res-sig, .dj-res-ok.anima .results-actions{animation:dj-subir .5s ease-out 1.5s backwards;}
  .dj-res-cinta.anima .dj-banda{animation:dj-atar .55s cubic-bezier(.6,.05,.3,1) 1s backwards;}
  .dj-res-cinta.anima .dj-nudo{animation:dj-nudo .45s cubic-bezier(.3,1.6,.5,1) 1.55s backwards;}
  .dj-res-cinta.anima .dj-cola-a{animation:dj-cola-a .7s cubic-bezier(.3,1.5,.5,1) 1.8s backwards;}
  .dj-res-cinta.anima .dj-cola-b{animation:dj-cola-b .7s cubic-bezier(.3,1.5,.5,1) 1.88s backwards;}
  .dj-res-cinta.anima .dj-g-sello{animation:dj-sello .35s cubic-bezier(.2,.9,.3,1.2) 2.5s backwards;}
  .dj-res-cinta.anima .dj-abre, .dj-res-cinta.anima .results-actions{animation:dj-subir .5s ease-out 2.9s backwards;}
  .dj-res-mal.anima .dj-fallo{animation:dj-tinta .5s ease-out .8s backwards;}
  .dj-res-mal.anima .dj-fallo:nth-of-type(2){animation-delay:1s;} .dj-res-mal.anima .dj-fallo:nth-of-type(n+3){animation-delay:1.2s;}
  .dj-res-mal.anima .dj-res-repasar, .dj-res-mal.anima .results-actions{animation:dj-subir .5s ease-out 1.4s backwards;}
  @keyframes dj-subir{from{opacity:0;transform:translateY(8px);}}
  @keyframes dj-tinta{from{opacity:0;transform:translateY(8px);filter:blur(2px);}}
  @keyframes dj-llenar{from{width:0;}}
  @keyframes dj-hito{from{transform:scaleY(0);}}
  @keyframes dj-atar{from{transform:scaleX(0);}}
  @keyframes dj-nudo{from{transform:scale(0);}}
  @keyframes dj-cola-a{0%{transform:scaleY(0);}60%{transform:rotate(26deg);}}
  @keyframes dj-cola-b{0%{transform:scaleY(0);}60%{transform:rotate(-24deg);}}
  @keyframes dj-sello{from{opacity:0;transform:scale(1.8) rotate(-7deg);}}
  @media (prefers-reduced-motion: reduce){ .dj-res.anima *{animation:none !important;} }
  /* Dōjō cerrado hasta terminar el bosque (js/motor/dojo.js: cerradoHTML) y sus puertas al abrirse (animarApertura) */
  .dj-cerrado{display:flex;align-items:center;gap:16px;margin-top:14px;padding:16px;border-radius:14px;background:var(--tinte-papel);border:1.5px dashed var(--line);}
  .dj-cerrado p{margin:0;font-size:.88rem;line-height:1.5;color:var(--gris-osc-2);}
  .dj-cerrado b{display:block;color:var(--sumi);font-size:.95rem;margin-bottom:2px;}
  .dj-puerta{position:relative;flex-shrink:0;width:46px;height:56px;border:3px solid var(--sumi);border-radius:2px;opacity:.55;
    background:repeating-linear-gradient(90deg, transparent 0 10px, var(--line) 10px 11.5px), repeating-linear-gradient(0deg, var(--papel) 0 12px, var(--line) 12px 13.5px);}
  .dj-puerta::after{content:"";position:absolute;left:50%;top:-3px;bottom:-3px;width:3px;margin-left:-1.5px;background:var(--sumi);}
  .kp-cerrado{color:var(--gris-osc);}
  .dj-abierto-nota{display:flex;align-items:center;gap:12px;margin:14px 0 4px;padding:12px 14px;border-radius:12px;background:var(--tinte-matcha);font-size:.86rem;line-height:1.45;}
  .dj-abierto-nota b{display:block;font-size:.95rem;}
  .dj-abierto-nota .dj-obi{width:48px;height:30px;}
  /* Las puertas del dōjō (24/10, js/motor/dojo.js): dos fusuma dibujadas (Dojo.hojaSVG) en su vano, a la altura de una
     pantalla. Larga (4 s, la primera vez del día): la luz se enciende tras el papel (0-.7 s), se sueltan y se deslizan
     (la de delante, .7 s; la de atrás, .79 s; 2,4 s con el frenazo y el rebote), entra el haz con sus motas, lo de dentro
     aparece uno a uno desde el segundo 1,5 y el vano se va al llegar al marco. Corta (.dj-corta, 1,3 s): deslizamiento y lo de dentro.
     Sonido.fusuma va a la par (js/motor/sonido.js). */
  .kp-cuerpo.dj-abriendo{position:relative;overflow:hidden;}
  .dj-fusuma{position:absolute;left:0;right:0;top:0;height:var(--dj-h);z-index:2;pointer-events:none;
    --fs-papel:var(--fusuma-papel);--fs-marco:var(--fusuma-marco);--fs-liston:color-mix(in oklab, var(--fusuma-marco) 72%, var(--fusuma-papel));
    --fs-luz:color-mix(in oklab, var(--rc-oro) 50%, var(--fusuma-papel));}
  .dj-vano{position:absolute;inset:0;}
  .dj-kamoi, .dj-shikii{position:absolute;left:-2px;right:-2px;z-index:3;border:1px solid var(--est-tinta);
    background:linear-gradient(to bottom, color-mix(in oklab, var(--fusuma-marco) 80%, #fff), var(--fusuma-marco) 45%, color-mix(in oklab, var(--fusuma-marco) 75%, #000));
    animation:dj-vano-fuera .4s ease 2.75s forwards;}   /* se va en cuanto las puertas llegan al marco */
  .dj-kamoi{top:0;height:9px;box-shadow:0 3px 4px -1px var(--obi-sombra);}
  .dj-shikii{bottom:0;height:8px;}
  @keyframes dj-vano-fuera{to{opacity:0}}
  .dj-hoja{position:absolute;top:7px;display:block;will-change:transform;}
  .dj-hoja-i{left:0;z-index:2;filter:drop-shadow(3px 0 3px var(--obi-sombra));animation:dj-hoja-i 2.4s .7s both;}
  .dj-hoja-d{right:0;z-index:1;animation:dj-hoja-d 2.4s .79s both;}
  .dj-hoja *{vector-effect:non-scaling-stroke;}
  .dj-hoja .fs-papel{fill:var(--fs-papel);}
  .dj-hoja .fs-fibra path{fill:none;stroke:color-mix(in oklab, var(--fs-marco) 30%, var(--fs-papel));stroke-width:.6;stroke-linecap:round;opacity:.55;}
  .dj-hoja .fs-farol{opacity:0;animation:dj-farol .7s ease-in both;}
  .dj-hoja .fs-l0{stop-color:var(--fs-luz);stop-opacity:.95;} .dj-hoja .fs-l1{stop-color:var(--fs-luz);stop-opacity:.35;} .dj-hoja .fs-l2{stop-color:var(--fs-luz);stop-opacity:0;}
  .dj-hoja .fs-kumiko{fill:var(--fs-liston);} .dj-hoja .fs-kumiko-s{fill:var(--obi-sombra);}
  .dj-hoja .fs-madera{fill:var(--fs-marco);} .dj-hoja .fs-madera-cl{fill:color-mix(in oklab, var(--fs-marco) 84%, #fff);}
  .dj-hoja .fs-junta{stroke:color-mix(in oklab, var(--fs-marco) 55%, #000);stroke-width:1.2;}
  .dj-hoja .fs-veta path{fill:none;stroke:color-mix(in oklab, var(--fs-marco) 68%, #000);stroke-width:.7;opacity:.4;}
  .dj-hoja .fs-brillo{fill:none;stroke:var(--obi-brillo);stroke-width:1;opacity:.6;} .dj-hoja .fs-sombra{fill:none;stroke:var(--obi-sombra);stroke-width:1.4;}
  .dj-hoja .fs-o0{stop-color:color-mix(in oklab, var(--rc-oro) 70%, #fff);} .dj-hoja .fs-o1{stop-color:var(--rc-oro-filo);}
  .dj-hoja .fs-oro{stroke:var(--est-tinta);stroke-width:.8;}
  .dj-hoja .fs-hueco{fill:color-mix(in oklab, var(--rc-oro) 45%, var(--fs-marco));stroke:color-mix(in oklab, var(--rc-oro) 50%, #000);stroke-width:.7;}
  .dj-hoja .fs-oro-brillo{fill:none;stroke:var(--obi-brillo);stroke-width:1.1;stroke-linecap:round;}
  .dj-hoja .fs-borde{fill:none;stroke:var(--est-tinta);stroke-width:1;}
  @keyframes dj-farol{to{opacity:.9}}
  /* se sueltan (un empujón), se deslizan y frenan en el marco con un rebote pequeño */
  @keyframes dj-hoja-i{0%{transform:none;animation-timing-function:ease-out} 6%{transform:translateX(-4px);animation-timing-function:cubic-bezier(.6,.05,.3,1)}
    86%{transform:translateX(-104%);animation-timing-function:ease-out} 93%{transform:translateX(-101.5%);animation-timing-function:ease-in} 100%{transform:translateX(-103%)}}
  @keyframes dj-hoja-d{0%{transform:none;animation-timing-function:ease-out} 6%{transform:translateX(4px);animation-timing-function:cubic-bezier(.6,.05,.3,1)}
    86%{transform:translateX(104%);animation-timing-function:ease-out} 93%{transform:translateX(101.5%);animation-timing-function:ease-in} 100%{transform:translateX(103%)}}
  /* el haz que entra por la rendija, con motas de polvo; se apaga antes de que las puertas lleguen al marco */
  .dj-haz{position:absolute;left:0;right:0;top:9px;bottom:8px;opacity:0;
    background:linear-gradient(90deg, transparent 20%, var(--fs-luz) 50%, transparent 80%), radial-gradient(70% 60% at 50% 0%, var(--fs-luz), transparent 80%);
    -webkit-mask:linear-gradient(to bottom, #000 30%, transparent 95%);mask:linear-gradient(to bottom, #000 30%, transparent 95%);
    animation:dj-haz 4.2s ease both;}
  @keyframes dj-haz{0%, 19%{opacity:0;clip-path:inset(0 49.6%)} 30%{opacity:.7;clip-path:inset(0 40%)} 48%{opacity:.45;clip-path:inset(0 14%)} 64%, 100%{opacity:0;clip-path:inset(0 4%)}}
  .dj-haz i{position:absolute;width:3px;height:3px;border-radius:50%;background:var(--fusuma-papel);box-shadow:0 0 4px var(--fs-luz);
    animation:dj-mota 2.2s ease-in-out 1.05s both;}
  .dj-haz i:nth-child(1){left:47%;top:18%;--dx:-6px;--dy:-14px;} .dj-haz i:nth-child(2){left:52%;top:30%;--dx:5px;--dy:-10px;animation-delay:1.2s;}
  .dj-haz i:nth-child(3){left:49%;top:44%;--dx:-4px;--dy:-16px;animation-delay:1.12s;width:2px;height:2px;} .dj-haz i:nth-child(4){left:54%;top:12%;--dx:7px;--dy:-8px;animation-delay:1.35s;}
  .dj-haz i:nth-child(5){left:45%;top:36%;--dx:-8px;--dy:-12px;animation-delay:1.28s;width:2px;height:2px;} .dj-haz i:nth-child(6){left:51%;top:56%;--dx:3px;--dy:-18px;animation-delay:1.42s;}
  .dj-haz i:nth-child(7){left:56%;top:24%;--dx:6px;--dy:-12px;animation-delay:1.08s;width:2px;height:2px;}
  @keyframes dj-mota{0%{opacity:0;transform:none} 35%{opacity:.9} 100%{opacity:0;transform:translate(var(--dx), var(--dy))}}
  /* lo de dentro, uno a uno, como tinta */
  .kp-cuerpo.dj-abriendo :is(.dj-abierto-nota, .dj-escalera > *){animation:dj-aparece .7s var(--curva-suave, ease) both;animation-delay:calc(1.5s + var(--dj-i, 0) * 120ms);}
  .kp-cuerpo.dj-abriendo .dj-escalera::before{animation:dj-aparece 1s ease 1.5s both;}
  @keyframes dj-aparece{from{opacity:0;transform:translateY(6px);filter:blur(1.5px)}}
  .dj-corta .dj-hoja-i{animation-duration:1.05s;animation-delay:0s;} .dj-corta .dj-hoja-d{animation-duration:1.05s;animation-delay:.04s;}
  .dj-corta .fs-farol, .dj-corta .dj-haz{display:none;}
  .dj-corta :is(.dj-kamoi, .dj-shikii){animation-duration:.3s;animation-delay:.92s;}
  .kp-cuerpo.dj-abriendo:has(.dj-corta) :is(.dj-abierto-nota, .dj-escalera > *){animation-duration:.5s;animation-delay:calc(.35s + var(--dj-i, 0) * 60ms);}
  .kp-cuerpo.dj-abriendo:has(.dj-corta) .dj-escalera::before{animation-duration:.5s;animation-delay:.35s;}
  @media (prefers-reduced-motion: reduce){ .dj-fusuma{display:none;} }
  /* Tu jardín del N5 (js/motor/camino.js: jdFilaHTML): árbol 木, hoja 葉, brote 芽 y semilla 種 */
  .jd{--jd-arbol:var(--matcha-osc);--jd-hoja:color-mix(in srgb, var(--matcha) 45%, var(--papel));--jd-brote:var(--kincha);--jd-semilla:var(--washi-deep);}
  .kj-n5{--jd-arbol:var(--matcha-osc);--jd-hoja:color-mix(in srgb, var(--matcha) 45%, var(--papel));--jd-brote:var(--kincha);--jd-semilla:var(--washi-deep);}
  .jd-barra{display:flex;gap:2px;height:14px;border-radius:7px;background:var(--jd-semilla);border:0;}
  .jd-barra::after{display:none;}
  .jd-barra i{position:static;flex:0 0 auto;min-width:0;}
  .jd-barra i.vacio{display:none;}   /* el trozo que mide 0 (camino.js, jdTrozo): antes miraba la nota «width:0.0%» */
  .jd-barra .jd-arbol{background:var(--jd-arbol);} .jd-barra .jd-hoja{background:var(--jd-hoja);} .jd-barra .jd-brote{background:var(--jd-brote);}
  .jd-ley{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:6px;}
  .jd-ley-i{display:flex;flex-direction:column;align-items:center;gap:3px;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--sumi);text-align:center;}
  .jd-ley-i b{font-weight:700;margin-top:1px;} .jd-ley-i small{font-size:.7rem;line-height:1.25;color:var(--gris-osc);}
  .jd-como{margin:0 0 12px;font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;line-height:1.45;color:var(--gris-osc-2);text-align:center;}
  .jd-regar span{font-family:'Shippori Mincho',serif;margin-right:4px;}
  .jd-sello{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;flex-shrink:0;
    font-style:normal;font-family:'Shippori Mincho',serif;font-weight:700;font-size:1rem;}
  .jd-sello.jd-arbol{background:var(--jd-arbol);color:var(--papel);} .jd-sello.jd-hoja{background:var(--jd-hoja);color:var(--matcha-osc-2);}
  .jd-sello.jd-brote{background:var(--jd-brote);color:var(--papel);} .jd-sello.jd-semilla{background:var(--jd-semilla);color:var(--gris-osc);border:1px solid var(--line);}
  .jd-toca{all:unset;display:block;width:100%;cursor:pointer;border-radius:10px;padding:4px 2px;box-sizing:border-box;}
  .jd-toca:focus-visible{outline:3px solid var(--kincha);outline-offset:3px;}
  .jd-toca .rv-tira-cab::after{content:"▾";display:inline-block;margin-left:6px;font-size:.7rem;color:var(--gris-osc);}
  .jd-fila.is-open .jd-toca .rv-tira-cab::after{rotate:180deg;}
  .jd-det{margin-top:12px;display:flex;flex-direction:column;gap:12px;}
  .jd-fichas{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:6px;}
  .jd-ficha{display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 2px 8px;min-height:44px;border-radius:12px;cursor:pointer;
    background:var(--tinte-papel);border:1px solid var(--line-cl);font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);}
  .jd-ficha b{font-family:'Shippori Mincho',serif;font-size:1.1rem;line-height:1.1;}
  .jd-ficha span{font-size:.72rem;color:var(--gris-osc);}
  .jd-ficha.on{background:var(--papel);border:2px solid var(--sumi);}
  .jd-que{border-radius:14px;background:var(--tinte-papel);border:1px solid var(--line-cl);padding:14px;display:flex;flex-direction:column;gap:10px;}
  .jd-que-brote{background:var(--tinte-shu-4);border-color:var(--tinte-kincha);}
  .jd-que p{display:flex;align-items:center;gap:10px;margin:0;font-size:.92rem;line-height:1.45;}
  .jd-cosas{display:flex;flex-wrap:wrap;gap:6px;font-family:'Shippori Mincho',serif;font-size:1.25rem;}
  .jd-cosas.es{font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;}
  .jd-cosas span{padding:3px 9px;border-radius:8px;background:var(--papel);}
  .jd-cosas em{align-self:center;font-style:normal;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;color:var(--gris-osc);}
  .jd-regar{align-self:flex-start;min-height:44px;}

  /* =====================================================================
     TOKIO DE NOCHE · paleta neón con jerarquía (19/10/2026)
     85 % fondo oscuro desaturado · 12 % superficies medias · 3 % luz neón.
     Reglas para los dibujos en este tema: superficies grandes en --noche-superficie-2 (nada de crema ni rosa pálido);
     neón solo en contornos de 1,5–2 px y detalles pequeños, con brillo suave; máximo 2 neones + ámbar;
     rayas a ~25 % sobre la superficie; sin grises neutros (azules-lila); sin parpadeo.
     Los tokens van en :root para que la miniatura del tema se vea igual desde cualquier tema.
     ===================================================================== */
  :root{--noche-fondo:#0F1222;--noche-superficie:#1A1F35;--noche-superficie-2:#262B47;--noche-linea:#3A4170;
    --neon-rosa:#FF5FA2;--neon-cian:#4FE3F0;--neon-ambar:#FFC857;--texto:#ECE8F5;--texto-suave:#A9A6C4;
    /* colores de los sellos (js/motor/sellos.js): en los demás temas, el papel y la tinta de siempre */
    --sl-papel:#fbf6ea;--sl-guia:#d9cdb0;--sl-guia-t:#e3d9c0;--sl-shu:#bd4932;--sl-oro:#a8801f;--sl-oro-2:#b8912f;--sl-pincel:#2b2a28;--sl-ai:#28415c;}
  :root:root[data-tema="noche"]{   /* doble :root: gana a las reglas genéricas de temas oscuros ([data-tema]:not(washi)) */
    --brillo-rosa:drop-shadow(0 0 6px color-mix(in srgb, var(--neon-rosa) 50%, transparent));
    --brillo-cian:drop-shadow(0 0 6px color-mix(in srgb, var(--neon-cian) 50%, transparent));
    --brillo-ambar:drop-shadow(0 0 6px color-mix(in srgb, var(--neon-ambar) 50%, transparent));
    /* sellos: página en superficie, tinta clara, sello rosa neón y oro ámbar */
    --sl-papel:var(--noche-superficie-2);--sl-guia:var(--noche-linea);--sl-guia-t:var(--texto-suave);--sl-shu:var(--neon-rosa);
    --sl-oro:var(--neon-ambar);--sl-oro-2:var(--neon-ambar);--sl-pincel:var(--texto);--sl-ai:var(--neon-cian);
    /* estantería: libros y balda en superficies, la tela solo teñida */
    --omk-tela-sellos:color-mix(in oklab, var(--neon-cian) 18%, var(--noche-superficie-2));
    --omk-tela-omikuji:color-mix(in oklab, var(--neon-rosa) 18%, var(--noche-superficie-2));
    --omk-madera-cl:var(--noche-superficie-2);--omk-madera:var(--noche-superficie);
    --est-tinta:var(--noche-linea);--est-filete:var(--noche-linea);--est-oro:var(--neon-ambar);--est-sep:var(--noche-linea);
    --est-seigaiha-trazo:color-mix(in srgb, var(--neon-cian) 22%, transparent);--est-asanoha-trazo:color-mix(in srgb, var(--neon-rosa) 22%, transparent);
    --est-sombra-balda:0 16px 20px -12px rgba(0,0,0,.55);--est-contacto:rgba(0,0,0,.5);
    /* fukubiki: luz ámbar (el farolillo de la estantería); el cielo y la luz del puesto, con los colores del puesto */
    --fk-luz:var(--neon-ambar);--fk-madera:var(--noche-superficie-2);}

  /* ---- Puesto de fukubiki: la ilustración no cambia; aquí, solo el farolillo de la estantería ---- */
  :root[data-tema="noche"] .fk-costilla{stroke:color-mix(in srgb, var(--neon-cian) 45%, var(--noche-superficie-2));}
  :root[data-tema="noche"] .fk-t-luz{fill:var(--neon-ambar);filter:var(--brillo-ambar);}
  :root[data-tema="noche"] .fk-halo{opacity:.18;}
  /* la leyenda y el farolillo de la estantería siguen la misma luz */
  /* el farolillo (fv3): cuerpo oscuro con contorno cian; al tocarlo, la luz en ámbar y el 福 en tinta oscura a contraluz */
  :root[data-tema="noche"] .fv3-cuerpo{fill:var(--noche-superficie-2);stroke:var(--neon-cian);stroke-width:1.5;filter:var(--brillo-cian);}
  :root[data-tema="noche"] .fv3-sombra{fill:var(--noche-fondo);opacity:.5;} :root[data-tema="noche"] .fv3-brillo{fill:var(--neon-cian);opacity:.1;}
  :root[data-tema="noche"] .fv3-borla, :root[data-tema="noche"] .fv3-nudo{fill:var(--noche-superficie-2);stroke:var(--neon-cian);}
  :root[data-tema="noche"] .fv3-l2{stop-color:var(--noche-superficie-2);}
  :root[data-tema="noche"] .fv3-contraluz{fill:var(--noche-fondo);}

  /* ---- Sellos: sin parpadeo; el brillo, estático ---- */
  @media (prefers-reduced-motion:reduce){
    :root[data-tema="noche"] .fk-halo, :root[data-tema="noche"] .fk-farol, :root[data-tema="noche"] .fk-resplandor, :root[data-tema="noche"] .est-farol{animation:none;}
  }

  /* ---- Diccionario 辞 (js/motor/diccionario.js) ---- */
  /* Pestaña: el icono es un SVG del mismo kanji de Shippori Mincho que las demás */
  .tab-svg{display:block;width:1.35rem;height:1.35rem;margin:.07rem auto .08rem;}
  .dic-buscador{position:relative;display:flex;align-items:center;margin:0 0 12px;}
  .dic-buscador input{flex:1;min-width:0;min-height:48px;padding:10px 44px 10px 42px;border:1.5px solid var(--line);border-radius:12px;background:var(--papel);color:var(--sumi);
    font-family:'Zen Maru Gothic',sans-serif;font-size:1.05rem;-webkit-appearance:none;appearance:none;}
  .dic-buscador input::placeholder{color:var(--gris);}
  .dic-buscador input::-webkit-search-cancel-button{display:none;}
  .dic-buscador input:focus-visible{outline:2px solid var(--shu);outline-offset:2px;border-color:var(--ai);}
  .dic-lupa{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--gris-osc);display:flex;pointer-events:none;}
  .dic-borrar{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;background:transparent;color:var(--gris-osc);font-size:1.5rem;line-height:1;border-radius:10px;cursor:pointer;}
  .dic-borrar:focus-visible{outline:2px solid var(--shu);outline-offset:-2px;}
  .dic-borrar[hidden]{display:none;}
  .dic-tipos .ver-filtro{min-height:36px;}
  .dic-tipos .ver-filtro span[lang]{font-family:'Shippori Mincho',serif;}
  .dic-explora{margin:2px 0 4px;}
  .dic-grupo-h{display:flex;align-items:center;gap:8px;margin-top:20px;}
  .dic-grupo-h span[lang]{color:var(--shu-deep);}
  .dic-lista{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;}
  .dic-fila{width:100%;min-height:52px;display:grid;grid-template-columns:minmax(0, 1.5fr) minmax(0, 1fr) auto;align-items:center;gap:10px;text-align:left;
    padding:9px 12px;background:var(--papel);border:1px solid var(--line);border-radius:10px;color:var(--sumi);font-family:'Zen Maru Gothic',sans-serif;cursor:pointer;}
  .dic-fila:focus-visible{outline:2px solid var(--shu);outline-offset:2px;}
  @media (hover:hover){ .dic-fila:hover{border-color:var(--ai);} }
  .dic-fila-jp{font-size:1.12rem;line-height:1.25;overflow-wrap:break-word;word-break:auto-phrase;}
  .dic-fila-jp small{display:block;font-size:.74rem;color:var(--gris-osc);}
  .dic-fila-es{font-size:.86rem;color:var(--gris-osc);line-height:1.3;overflow-wrap:anywhere;}
  /* P2-15 (PR-19): el rōmaji de lo que aún no sabes leer, en su línea (diccionario.js, leer) */
  .dic-rom{display:block;font-family:'Zen Maru Gothic',sans-serif;font-size:.74rem;color:var(--gris-osc);line-height:1.35;overflow-wrap:anywhere;}
  .dic-cab-jp .dic-rom{font-size:.95rem;margin-top:2px;}
  .dic-ejemplos .dic-rom{margin-top:1px;}
  /* DIC-1: la forma conjugada con la que ha encajado («たべました · pasado de たべる»), en su propia línea */
  .dic-fila-forma{grid-column:1 / -1;font-size:.8rem;color:var(--gris-osc);line-height:1.35;overflow-wrap:anywhere;}
  .dic-fila-forma span[lang]{color:var(--sumi);}
  .dic-fila.luego{background:transparent;border-style:dashed;}
  .dic-mas{margin-top:8px;}
  .dic-luego{display:inline-block;font-family:'Zen Maru Gothic',sans-serif;font-size:.7rem;color:var(--gris-osc);border:1px dashed var(--gris-cl);border-radius:10px;padding:2px 8px;white-space:nowrap;}
  /* P3-11 (PR-19): el sello es un icono sin letra (diccionario.js, ICONO_SELLO), para que no se lea como el significado.
     Hecha: el círculo de tinta con su marca. Plata y oro: una medalla (--rc-plata, --rc-oro, nunca --kincha). */
  .dic-sello{display:inline-grid;place-items:center;width:30px;height:30px;flex:none;}
  .dic-sello.chico{width:24px;height:24px;}
  .dic-sello svg{width:100%;height:100%;display:block;}
  .dic-sello .ds-aro{fill:none;stroke:var(--shu);stroke-width:1.8;}
  .dic-sello .ds-marca{fill:none;stroke:var(--shu-deep);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;}
  .dic-sello .ds-metal{fill:var(--rc-plata);stroke:var(--rc-plata-filo);stroke-width:1;}
  .dic-sello .ds-anillo{fill:none;stroke:color-mix(in srgb, var(--rc-plata) 60%, var(--papel));stroke-width:1.4;}
  .dic-sello .ds-luz{fill:none;stroke:color-mix(in srgb, var(--papel) 75%, transparent);stroke-width:1.6;stroke-linecap:round;}
  .dic-sello.oro .ds-metal{fill:var(--rc-oro);stroke:var(--rc-oro-filo);}
  .dic-sello.oro .ds-anillo{stroke:color-mix(in srgb, var(--rc-oro) 55%, var(--papel));}
  .dic-nada{display:flex;gap:14px;align-items:flex-start;padding:16px;border:1px dashed var(--line);border-radius:12px;margin-top:14px;}
  .dic-nada > span[lang]{font-family:'Shippori Mincho',serif;font-size:2rem;color:var(--gris);line-height:1;}
  /* «¿Querías decir…?» (DIC-5): hasta 3 botones debajo de «No lo encuentro» */
  .dic-quizas{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
  .dic-quizas-b{min-height:44px;padding:8px 14px;font-size:.9rem;}
  .dic-quizas-b span[lang]{font-size:1.05rem;color:var(--sumi);}
  .dic-nada p{margin:0;font-size:.9rem;color:var(--gris-osc);line-height:1.5;}
  .dic-nada b{color:var(--sumi);font-weight:500;}
  /* Ficha */
  .dic-ficha{min-height:0;font-family:'Zen Maru Gothic',sans-serif;}
  .dic-cab{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin:12px 0 8px;}
  .dic-cab-jp{display:flex;flex-direction:column;min-width:0;}
  .dic-forma{font-family:'Shippori Mincho',serif;font-size:2.1rem;line-height:1.2;color:var(--sumi);overflow-wrap:anywhere;word-break:auto-phrase;}   /* auto-phrase: no parte ありがとうございます a mitad de palabra (PR-04) */
  .dic-forma.grande{font-size:4.4rem;line-height:1.05;}
  .dic-lectura{font-size:1.05rem;color:var(--gris-osc);margin-top:2px;}
  .dic-cab-st{display:flex;flex-direction:column;align-items:center;gap:3px;flex-shrink:0;}
  .dic-cab-st small{font-size:.7rem;color:var(--gris-osc);}
  .dic-sig-fila,.dic-kj-fila{display:flex;gap:14px;align-items:flex-start;}
  .dic-pic{flex-shrink:0;width:96px;height:96px;display:grid;place-items:center;}
  .dic-pic svg{width:96px;height:96px;}
  .dic-sig{font-size:1.15rem;color:var(--sumi);margin:4px 0 6px;line-height:1.4;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;}
  .dic-sig small{display:block;flex-basis:100%;font-size:.82rem;color:var(--gris-osc);}
  .dic-say{vertical-align:middle;}
  .dic-con-kanji{font-size:.95rem;color:var(--sumi);margin:6px 0;}
  .dic-con-kanji span[lang]{font-family:'Shippori Mincho',serif;font-size:1.3rem;}
  .dic-truco{font-size:.92rem;color:var(--sumi);line-height:1.5;margin:4px 0;}
  .dic-truco b{font-weight:500;color:var(--ai-deep);}
  .dic-origen{flex-shrink:0;margin:4px 0 0;width:84px;text-align:center;}
  .dic-origen svg{width:64px;height:64px;fill:none;stroke:var(--sumi);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;}
  .dic-origen figcaption{font-size:.7rem;color:var(--gris-osc);line-height:1.3;}
  .dic-donde{display:flex;flex-direction:column;gap:4px;margin:14px 0 4px;padding:12px 14px;border-left:3px solid var(--ai);background:color-mix(in srgb, var(--ai) 6%, var(--papel));border-radius:0 8px 8px 0;}
  .dic-donde-t{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ai-deep);}
  .dic-donde-l{font-size:.92rem;color:var(--sumi);line-height:1.4;}
  .dic-donde-l b{font-weight:500;}
  .dic-ir{align-self:flex-start;margin-top:6px;min-height:44px;}
  .dic-h{font-family:'Shippori Mincho',serif;font-size:1.08rem;color:var(--ai-deep);margin:20px 0 8px;}
  .dic-ejemplos,.dic-pals{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
  .dic-ejemplos li,.dic-pals li{padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--washi);font-size:1.02rem;line-height:1.5;color:var(--sumi);}
  .dic-ejemplos small{display:block;font-size:.8rem;color:var(--gris-osc);margin-top:2px;}
  .dic-ejemplos mark{background:color-mix(in srgb, var(--kincha) 30%, transparent);color:inherit;border-radius:3px;padding:0 1px;}
  .dic-pals li{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
  .dic-pals li span[lang]{font-family:'Shippori Mincho',serif;font-size:1.3rem;}
  .dic-pals li > span:not([lang]){flex:1;min-width:8em;font-size:.88rem;color:var(--gris-osc);}
  .dic-pals rt,.dic-con-kanji rt{font-size:.55em;color:var(--gris-osc);}
  .dic-grupo-v{font-size:.92rem;color:var(--sumi);margin:6px 0;}
  .dic-grupo-v b{font-weight:500;}
  .dic-grupo-v small{display:block;color:var(--gris-osc);margin-top:4px;}
  .dic-conjs{display:grid;grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));gap:12px;}
  .dic-conj{width:100%;border-collapse:collapse;font-size:.9rem;}
  .dic-conj caption{text-align:left;font-size:.78rem;color:var(--gris-osc);padding-bottom:4px;}
  .dic-conj th{text-align:left;font-weight:400;color:var(--gris-osc);padding:6px 6px 6px 0;border-top:1px solid var(--line);}
  .dic-conj td{padding:4px 0;border-top:1px solid var(--line);color:var(--sumi);font-size:1.02rem;}
  .dic-conj td:last-child{width:1%;text-align:right;}
  /* KANJIDIC2: caja aparte, con su fuente en cada ficha (lo pide la licencia de EDRDG) */
  .dic-kd{margin-top:20px;padding:4px 14px 12px;border:1px solid var(--line);border-radius:10px;background:var(--washi);}
  .dic-kd .dic-h{margin-top:12px;}
  .dic-kd-dl{margin:0;display:flex;flex-direction:column;gap:8px;}
  .dic-kd-dl > div{display:grid;grid-template-columns:minmax(0, 9.5em) 1fr;gap:10px;align-items:baseline;}
  .dic-kd-dl dt{font-size:.82rem;color:var(--gris-osc);line-height:1.35;}
  .dic-kd-dl dt small{display:block;font-size:.72rem;}
  .dic-kd-dl dd{margin:0;font-size:1.05rem;color:var(--sumi);line-height:1.6;overflow-wrap:anywhere;}
  .dic-okuri{color:var(--gris);}
  .dic-pega{color:var(--gris);font-size:.85em;}
  .dic-coma{color:var(--gris);}
  .dic-todas summary{font-family:'Zen Maru Gothic',sans-serif;font-size:.8rem;color:var(--shu-deep);cursor:pointer;margin-top:4px;min-height:32px;display:flex;align-items:center;}
  .dic-kd-ayuda{font-size:.8rem;color:var(--gris-osc);line-height:1.5;margin:10px 0 6px;}
  .dic-kd-ayuda b{font-weight:500;color:var(--sumi);}
  .dic-kd-fuente{font-size:.74rem;color:var(--gris-osc);margin:0;}
  .dic-creditos{border:0;background:none;padding:6px 2px;min-height:32px;font:inherit;color:var(--shu-deep);font-weight:600;text-decoration:underline;cursor:pointer;}
  .dic-creditos:focus-visible{outline:2px solid var(--shu);outline-offset:2px;}
  /* Ayudas de lectura (Configuración): en el diccionario, alineadas a la izquierda como el texto; el rōmaji, a tamaño de lectura.
     Si la ficha ya enseña la lectura debajo (.dic-lectura), el rōmaji va solo en ella, no dos veces. */
  :root[data-romaji="si"] .dic-fila-jp-p[data-rom], :root[data-romaji="si"] .dic-ficha [data-rom]{text-align:left;}
  :root[data-romaji="si"] .dic-fila-jp-p[data-rom]::after{font-size:.74rem;}
  :root[data-romaji="si"] .dic-forma[data-rom]::after{font-size:1rem;margin-top:2px;}
  :root[data-romaji="si"] .dic-cab-jp:has(.dic-lectura) .dic-forma[data-rom]::after{display:none;}
  :root[data-romaji="si"] .dic-conj td[data-rom]::after, :root[data-romaji="si"] .dic-ejemplos [data-rom]::after{font-size:.78rem;}
  @media (max-width:420px){
    .dic-fila{grid-template-columns:minmax(0, 1fr) auto;}
    .dic-fila-es{grid-column:1;grid-row:2;}
    .dic-fila-st{grid-column:2;grid-row:1 / span 2;}
    .dic-forma.grande{font-size:3.6rem;}
    .dic-kd-dl > div{grid-template-columns:1fr;gap:2px;}
  }

  /* =====================================================================
     FIN DE UNIDAD 終点 (js/motor/fin-unidad.js): el tren llega, el 御朱印 se escribe y el resumen
     ===================================================================== */
  .fu-over{position:fixed;inset:0;z-index:61;overflow-y:auto;overscroll-behavior:contain;background:var(--washi);-webkit-overflow-scrolling:touch;}
  html.fu-abierto,html.fu-abierto body{overflow:hidden;}
  .fu-hoja{max-width:440px;min-height:100%;margin:0 auto;box-sizing:border-box;padding:28px 20px calc(28px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:20px;
    font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);}
  .fu-linea{display:flex;align-items:center;gap:12px;margin:0;}
  .fu-linea small{display:block;font-size:.82rem;color:var(--gris-osc);} .fu-linea b{display:block;font-family:'Shippori Mincho',serif;font-size:1.4rem;color:var(--ai-deep);}
  .fu-kj{flex:none;width:38px;height:38px;border-radius:50%;background:var(--lc);color:var(--papel);display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-weight:700;font-size:1.15rem;}
  .fu-acts{display:flex;flex-direction:column;gap:10px;margin-top:auto;align-items:stretch;align-self:stretch;}
  .fu-acts .btn{min-height:48px;} .fu-acts .linkish{align-self:center;min-height:44px;color:var(--ai-deep);text-decoration:underline;text-underline-offset:3px;font-size:.92rem;}
  /* 1 · El tren */
  .fu-plano{background:var(--papel);border:1px solid var(--line);border-radius:14px;padding:6px;}
  .fu-plano svg{display:block;width:100%;height:auto;overflow:visible;}
  .fu-via,.fu-via-luz{fill:none;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;}
  .fu-via{stroke:var(--line-cl);} .fu-via-luz{stroke:var(--lc);}
  .fu-est{fill:var(--papel);stroke:var(--line);stroke-width:3;transition:fill .25s ease, stroke .25s ease;}
  .fu-est.on{fill:var(--lc);stroke:var(--lc);animation:fu-enciende .35s ease-out;transform-box:fill-box;transform-origin:center;}
  .fu-fin{stroke-width:4;} .fu-tren.llego .fu-fin{fill:var(--papel);stroke:var(--lc);animation:fu-llega .6s cubic-bezier(.3,1.6,.5,1);}
  @keyframes fu-enciende{50%{transform:scale(1.5);}}
  @keyframes fu-llega{50%{transform:scale(1.4);}}
  .fu-trenillo rect{fill:var(--ai-deep);} .fu-trenillo .fu-ventana{fill:var(--washi);}
  .fu-cartel{display:flex;flex-direction:column;align-items:center;gap:4px;opacity:0;transform:translateY(12px);transition:opacity .6s ease, transform .6s cubic-bezier(.2,.9,.3,1);}
  .fu-tren.llego .fu-cartel{opacity:1;transform:none;}
  .fu-shuten{font-family:'Shippori Mincho',serif;font-weight:800;font-size:2.9rem;letter-spacing:.35em;margin-right:-.35em;color:var(--ai-deep);line-height:1.1;}
  .fu-cartel small{font-size:.85rem;color:var(--gris-osc);letter-spacing:.06em;}
  .fu-placa{margin-top:14px;width:100%;background:var(--papel);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 2px 0 var(--line);text-align:center;}
  .fu-placa b{display:block;padding:14px 12px 10px;font-family:'Shippori Mincho',serif;font-size:1.6rem;}
  .fu-placa-pie{display:flex;justify-content:space-between;padding:8px 14px;background:var(--lc);color:var(--papel);font-size:.85rem;}
  .fu-tren .fu-acts{opacity:0;transition:opacity .5s ease .4s;} .fu-tren.llego .fu-acts{opacity:1;}
  /* 2 · El 御朱印 */
  .fu-goshuin{align-items:center;text-align:center;}
  .fu-nota-ex{margin:0;align-self:flex-start;font-size:.85rem;color:var(--gris-osc);}
  .fu-papel{filter:drop-shadow(0 10px 18px color-mix(in srgb, var(--sumi) 14%, transparent));}
  .fu-papel svg{display:block;max-width:100%;height:auto;}
  .fu-trazo{animation:fu-trazo .45s ease-out both;}
  @keyframes fu-trazo{from{opacity:0;}to{opacity:1;}}
  .fu-cae{transform-box:fill-box;animation:fu-cae .55s cubic-bezier(.2,1.5,.4,1) both;}
  @keyframes fu-cae{0%{opacity:0;translate:0 -24px;scale:1.5;}60%{opacity:1;scale:.95;}100%{opacity:1;translate:0 0;scale:1;}}
  .fu-texto{display:flex;flex-direction:column;align-items:center;gap:4px;animation:fu-aparece .6s ease both;}
  .fu-texto h2{margin:0;font-family:'Shippori Mincho',serif;color:var(--ai-deep);font-size:1.5rem;}
  .fu-texto p{margin:0;max-width:330px;line-height:1.5;color:var(--gris-osc-2);}
  .fu-kj-nivel{font-family:'Shippori Mincho',serif;font-weight:700;color:var(--shu);font-size:1.1rem;}
  @keyframes fu-aparece{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}
  /* 3 · El resumen: cada parte aparece como tinta, una detrás de otra */
  .fu-resumen > *{animation:fu-tinta .7s ease-out both;}
  .fu-resumen > :nth-child(2){animation-delay:.15s;} .fu-resumen > :nth-child(3){animation-delay:.3s;} .fu-resumen > :nth-child(4){animation-delay:.45s;}
  .fu-resumen > :nth-child(5){animation-delay:.6s;} .fu-resumen > :nth-child(6){animation-delay:.75s;} .fu-resumen > :nth-child(n+7){animation-delay:1.35s;}
  .fu-resumen.fu-quieto > *{animation:none;}
  @keyframes fu-tinta{from{opacity:0;filter:blur(3px);transform:translateY(8px);}to{opacity:1;filter:none;transform:none;}}
  .fu-cab{display:flex;gap:16px;align-items:center;}
  .fu-mini{flex:none;} .fu-mini svg{display:block;}
  .fu-cab small{font-size:.85rem;color:var(--gris-osc);} .fu-cab h2{margin:2px 0;font-family:'Shippori Mincho',serif;color:var(--ai-deep);font-size:1.7rem;line-height:1.1;}
  .fu-cab p{margin:0;font-size:.92rem;color:var(--gris-osc-2);} .fu-cab p b{color:var(--shu);font-family:'Shippori Mincho',serif;}
  .fu-subio{margin:-6px 0 0;line-height:1.5;color:var(--gris-osc-2);}
  .fu-cifras{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:8px;}
  .fu-cifras span{display:flex;flex-direction:column;align-items:center;padding:12px 6px;background:var(--papel);border:1px solid var(--line);border-radius:10px;}
  .fu-cifras b{font-family:'Shippori Mincho',serif;font-size:1.6rem;color:var(--ai-deep);line-height:1.1;} .fu-cifras small{font-size:.8rem;color:var(--gris-osc);text-align:center;}
  .fu-sec{display:flex;flex-direction:column;gap:10px;}
  .fu-sec h3{margin:0;display:flex;align-items:center;gap:8px;font-family:'Shippori Mincho',serif;font-size:1.2rem;color:var(--ai-deep);}
  .fu-sec h3 span{font-size:.95rem;color:var(--lc);}
  .fu-frases,.fu-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
  .fu-frases li,.fu-lista li{display:flex;align-items:center;gap:12px;padding:11px 14px;background:var(--papel);border:1px solid var(--line);border-radius:12px;}
  .fu-frases li > span,.fu-lista li > span:last-child{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;}
  .fu-frases b{font-weight:500;font-size:1.12rem;} .fu-frases small,.fu-lista small{font-size:.84rem;color:var(--gris-osc);}
  .fu-lista b{font-weight:500;}
  .fu-med{flex:none;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Shippori Mincho',serif;font-weight:800;color:var(--papel);}
  .fu-oro{background:var(--kincha-osc);} .fu-plata{background:var(--gris-osc);}
  .fu-flojo-ja{flex:none;min-width:84px;font-weight:500;font-size:1.15rem;}
  .fu-calma,.fu-vacio{margin:0;font-size:.92rem;line-height:1.45;color:var(--gris-osc-2);}
  .fu-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0;}
  .fu-chips span{font-size:.84rem;padding:5px 11px;border-radius:20px;background:color-mix(in srgb, var(--ai) 7%, transparent);border:1px solid color-mix(in srgb, var(--ai) 22%, transparent);color:var(--ai-deep);}
  .fu-mas{margin:-8px 0 0;text-align:center;font-size:.85rem;color:var(--gris-osc);}
  .fu-resumen .results-words,.fu-resumen .results-kana{margin:0 auto;}
  .fu-ancho{width:100%;}
  .fu-extras{margin:0;text-align:center;font-size:.85rem;color:var(--gris-osc);}
  .fu-sig{border-radius:14px;overflow:hidden;background:var(--papel);border:1px solid var(--line);}
  .fu-sig-cab{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--lc);color:var(--papel);}
  .fu-sig-cab .fu-kj{background:transparent;border:2px solid var(--papel);}
  .fu-sig-cab small{display:block;font-size:.8rem;opacity:.92;} .fu-sig-cab b{display:block;font-family:'Shippori Mincho',serif;font-size:1.25rem;}
  .fu-sig p{margin:0;padding:12px 16px 14px;font-size:.92rem;line-height:1.5;color:var(--gris-osc-2);}
  @media (prefers-reduced-motion: reduce){
    .fu-resumen > *,.fu-texto,.fu-trazo,.fu-cae,.fu-est.on,.fu-tren.llego .fu-fin{animation:none !important;}
    .fu-cartel,.fu-tren .fu-acts{transition:none;}
  }

  /* ===== Versión nueva (AUT-09, js/motor/offline.js): una nota calmada arriba de las pestañas ===== */
  .version-nueva{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px;padding:10px 12px 10px 16px;
    border:1px solid var(--line);border-radius:12px;background:var(--papel);color:var(--sumi);font-size:.92rem;line-height:1.4;}
  .version-nueva-btn{flex:none;min-height:40px;padding:6px 14px;border:1px solid var(--ai);border-radius:999px;background:transparent;
    color:var(--ai);font:inherit;font-weight:700;cursor:pointer;}
  .version-nueva-btn:focus-visible{outline:2px solid var(--ai);outline-offset:2px;}
  /* Aviso de guardado (AUT-04, ajustes.js): calmado, sin botones; en la pestaña y en «Tú» › Tu cuenta */
  .aviso-guardado{margin:0 0 14px;padding:10px 14px;border:1px solid var(--line);border-left:3px solid var(--ai);border-radius:12px;
    background:var(--papel);color:var(--sumi);font-size:.92rem;line-height:1.45;}
  /* Línea de la analítica en el primer acceso (AUT-25, analitica.js): la misma calma que el aviso de guardado, con «Entendido» */
  .aviso-estadisticas{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;}
  .aviso-estadisticas p{margin:0;flex:1 1 220px;}
  .aviso-estadisticas button.auth-link{background:none;border:0;padding:0;font:inherit;color:var(--shu-deep);font-weight:600;cursor:pointer;text-decoration:underline;}
  .aviso-estadisticas .btn{padding:6px 14px;}
  /* Tema sin su dibujo (AUT-PE-01, escenas.js): sin conexión y sin haberlo visto antes, Washi y esta nota, donde sale el
     cartel de las recompensas. Se va sola; sin botones */
  .ev-nota{position:fixed;left:50%;bottom:calc(var(--alto-tabbar, 0px) + 16px);transform:translateX(-50%);z-index:60;
    width:max-content;max-width:min(420px, calc(100% - 32px));margin:0;padding:10px 14px;border:1px solid var(--line);
    border-left:3px solid var(--ai);border-radius:12px;background:var(--papel);color:var(--sumi);font-size:.92rem;line-height:1.45;
    pointer-events:none;}

  /* ---------- El baúl: frases para la vida real (js/motor/rincones.js) ----------
     En el suelo de la estantería, debajo del colgador; su aviso, en el hueco de la tarjeta de la racha.
     Los dibujos llevan los colores del objeto (fijos en todos los temas, como los premios del fukubiki). */
  .est-suelo{position:relative;max-width:420px;margin:30px auto 0;padding:0 14px;text-align:center;}
  .est-baul{display:block;margin:0 auto;padding:0;border:none;background:none;cursor:pointer;transform-origin:50% 100%;transition:transform .15s var(--est-curva);}
  .est-baul:focus-visible{outline:3px solid var(--est-oro);outline-offset:4px;border-radius:8px;}
  @media (hover:hover){ .est-baul:hover{transform:translateY(-3px) rotate(-1deg);} }
  .bau-baul{display:block;width:132px;height:auto;}
  .est-suelo-sombra{display:block;width:70%;height:10px;margin:-8px auto 0;border-radius:50%;background:radial-gradient(closest-side, color-mix(in srgb, var(--sumi) 16%, transparent), transparent);}
  .est-suelo-pie{margin:8px 0 0;display:flex;flex-direction:column;align-items:center;font-family:'Zen Maru Gothic',sans-serif;font-size:.78rem;line-height:1.35;color:var(--gris-osc);}
  .est-suelo-pie b{font-size:.85rem;color:var(--ai-deep);}
  .cuaderno .cu-baul{grid-row:3;grid-column:1;display:flex;align-items:center;gap:8px;min-width:0;font-size:.82rem;line-height:1.35;color:var(--gris-osc);}
  .cuaderno .cu-baul b{color:var(--sumi);font-weight:600;}
  .cu-baul-dib{flex:0 0 auto;width:30px;height:auto;}
  .cu-cosa .cu-baul-dib{width:40px;}   /* en el ordenador, el baúl va con las demás cosas de la fila */

  .bau .bau-arriba{margin-bottom:10px;}
  .bau-grupo-h{font-family:'Zen Maru Gothic',sans-serif;font-weight:600;font-size:.9rem;color:var(--gris-osc);margin:18px 2px 10px;}
  .bau-rejilla{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
  .bau-rejilla > .bau-tarjeta:only-child{grid-column:span 2;}
  .bau-tarjeta{display:flex;flex-direction:column;align-items:center;text-align:center;padding:14px 10px;background:var(--papel);border:1px solid var(--line);
    border-radius:16px;font:inherit;color:var(--sumi);cursor:pointer;transition:border-color .15s ease;}
  @media (hover:hover){ .bau-tarjeta:hover{border-color:var(--shu);} }
  .bau-tarjeta .bau-dib{height:84px;width:auto;max-width:96px;display:block;}
  .bau-tarjeta b{font-family:'Shippori Mincho',serif;font-weight:700;font-size:1.02rem;color:var(--ai-deep);margin-top:6px;line-height:1.25;}
  .bau-tarjeta span{font-size:.8rem;line-height:1.4;margin-top:4px;}
  .bau-tarjeta small{font-family:'Zen Maru Gothic',sans-serif;font-size:.76rem;color:var(--shu-deep);margin-top:8px;}
  .bau-cab{display:flex;align-items:center;gap:14px;margin:4px 0 6px;}
  .bau-cab .bau-dib{width:76px;height:auto;flex:0 0 auto;}
  .bau-cab .tab-h{margin:0;}
  .bau-avance{display:flex;align-items:center;gap:12px;margin:14px 0 18px;padding:12px 14px;background:var(--papel);border:1px solid var(--line);border-radius:14px;}
  .bau-avance-txt{flex:1;min-width:0;font-family:'Zen Maru Gothic',sans-serif;font-size:.84rem;color:var(--gris-osc);line-height:1.4;}
  .bau-avance-txt b{display:block;font-family:'Shippori Mincho',serif;font-size:1.05rem;color:var(--ai-deep);}
  .bau-barra{display:block;height:6px;border-radius:3px;background:var(--line);margin-top:7px;overflow:hidden;}
  .bau-barra i{display:block;height:100%;background:var(--matcha);}
  details.bau-plegable{border:1px solid var(--line);border-radius:14px;background:var(--papel);margin:0 0 12px;overflow:hidden;}
  .bau-plegable > summary{list-style:none;cursor:pointer;padding:14px 16px;font-family:'Zen Maru Gothic',sans-serif;font-weight:600;font-size:1rem;display:flex;align-items:center;gap:10px;color:var(--sumi);}
  .bau-plegable > summary::-webkit-details-marker{display:none;}
  .bau-plegable > summary::after{content:"▾";margin-left:auto;color:var(--shu-deep);rotate:-90deg;transition:rotate .2s ease;}
  .bau-plegable[open]:not(.plegando) > summary::after{rotate:0deg;}
  @media (prefers-reduced-motion:reduce){ .bau-plegable > summary::after{transition:none;} }
  .bau-plegable > summary small{font-weight:400;color:var(--gris-osc);font-size:.84rem;}
  .bau-fila{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-top:1px solid var(--line);}
  .bau-txt{flex:1;min-width:0;}
  .bau-jp{word-break:keep-all;overflow-wrap:anywhere;font-size:1.28rem;line-height:1.35;color:var(--sumi);}
  .bau-ro{font-family:'Zen Maru Gothic',sans-serif;font-size:.86rem;color:var(--gris-osc);margin-top:2px;}
  .bau-es{font-family:'Shippori Mincho',serif;font-weight:700;color:var(--ai-deep);margin-top:4px;}
  .bau-ya{font-family:'Zen Maru Gothic',sans-serif;font-weight:500;font-size:.76rem;color:var(--matcha);margin-left:8px;white-space:nowrap;}
  .bau-ya::before{content:"✓ ";}
  .bau-cuando{font-size:.86rem;line-height:1.45;margin-top:3px;color:var(--sumi);}
  .bau-say{flex:0 0 auto;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line);background:var(--washi);color:var(--sumi);display:grid;place-items:center;cursor:pointer;}
  .bau-say .ic-audio{width:1.3em;height:1.3em;vertical-align:0;}
  .bau-card .bau-q-jp{word-break:keep-all;overflow-wrap:anywhere;font-size:1.9rem;line-height:1.3;margin:6px 0 2px;color:var(--sumi);}
  .bau-card .bau-q-ro{font-family:'Zen Maru Gothic',sans-serif;font-size:.95rem;color:var(--gris-osc);margin-bottom:12px;}
  .bau-fin-h{margin-top:8px;}
  .bau-res{list-style:none;padding:0;margin:14px 0 20px;}
  .bau-res li{display:flex;gap:12px;align-items:center;padding:11px 14px;background:var(--papel);border:1px solid var(--line);border-radius:12px;margin-bottom:8px;}
  .bau-marca{flex:0 0 auto;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-family:'Zen Maru Gothic',sans-serif;font-weight:700;}
  .bau-marca.si{background:color-mix(in srgb, var(--matcha) 18%, transparent);color:var(--matcha);}
  .bau-marca.no{background:color-mix(in srgb, var(--kincha) 22%, transparent);color:var(--kincha-osc-3);}
  .bau-res-t{flex:1;min-width:0;} .bau-res-t b{display:block;font-size:1.05rem;font-weight:400;word-break:keep-all;}
  .bau-res-t small{font-family:'Zen Maru Gothic',sans-serif;color:var(--gris-osc);font-size:.82rem;}
  .bau-res-acts{display:flex;flex-direction:column;gap:10px;}
  /* Banda «Entorno de pruebas» (AUT-07, core.js): solo fuera de producción. Discreta, arriba en el centro y sin tocar */
  .banda-pruebas{position:fixed;top:max(4px, env(safe-area-inset-top));left:50%;transform:translateX(-50%);z-index:1001;pointer-events:none;
    font-family:'Zen Maru Gothic',sans-serif;font-size:.72rem;line-height:1;padding:4px 10px;border-radius:999px;
    background:var(--papel);color:var(--sumi);border:1px solid var(--shu);opacity:.92;white-space:nowrap;}
  @media print{ .banda-pruebas{display:none;} }

/* ---------- La unidad del examen y el modo examen (26/10, js/motor/simulacro.js) ----------
   Una hoja de examen: papel cuadriculado, tinta y encabezados de parte. Genérico: no imita ningún impreso del JLPT. */
  :root{--hoja-rejilla:color-mix(in srgb, var(--line) 40%, transparent);}
  .unit.is-examen .unit-head{border-bottom:4px solid var(--shu);}
  .metro-tramos{margin-top:10px;border:1.5px solid var(--sumi);border-radius:4px;overflow:hidden;background-color:var(--papel);
    background-image:linear-gradient(var(--hoja-rejilla) 1px, transparent 1px),linear-gradient(90deg, var(--hoja-rejilla) 1px, transparent 1px);background-size:20px 20px;}
  .metro-tramos .metro-wrap{margin:0;border:0;border-radius:0;background:transparent;}
  .tramo-cab{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:8px 14px;background:var(--sumi);color:var(--papel);font-family:'Zen Maru Gothic',sans-serif;}
  .tramo-t{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;}
  .tramo-t b{font-family:'Shippori Mincho',serif;font-size:1.05rem;}
  .tramo-t span, .tramo-min{font-size:.8rem;}
  .tramo-min{font-variant-numeric:tabular-nums;white-space:nowrap;}
  .tramo-nota{margin:10px 14px 0;font-family:'Zen Maru Gothic',sans-serif;font-size:.82rem;line-height:1.5;color:var(--gris-osc);}
  .st.st-practica:not(.is-done) .st-dot{background:color-mix(in srgb, var(--line) 35%, var(--papel));color:var(--sumi);}
  .st-reloj{display:block;}
  .st.st-final .st-dot{border-color:var(--shu);border-style:double;border-width:6px;color:var(--shu-deep);}
  .st.st-final.is-done .st-dot{background:var(--shu);color:var(--papel);}
  .st.st-final .st-body b{color:var(--shu-deep);}

  .sim{font-family:'Zen Maru Gothic',sans-serif;color:var(--sumi);max-width:640px;margin:0 auto;text-align:left;}
  .sim-hoja{margin:12px 0;padding:16px;border:1.5px solid var(--sumi);border-radius:4px;background-color:var(--papel);
    background-image:linear-gradient(var(--hoja-rejilla) 1px, transparent 1px),linear-gradient(90deg, var(--hoja-rejilla) 1px, transparent 1px);background-size:20px 20px;}
  .sim-hoja-cab{border-bottom:4px double var(--sumi);padding-bottom:12px;margin-bottom:12px;}
  .sim-titulo{font-family:'Shippori Mincho',serif;font-size:1.9rem;letter-spacing:.06em;margin:0;color:var(--sumi);}
  .sim .sim-sub{margin:4px 0;font-weight:700;color:var(--sumi);}
  .sim-de{margin:2px 0 0;font-size:.78rem;color:var(--gris-osc);}
  .sim-intro{margin:0 0 12px;font-size:.92rem;line-height:1.6;}
  .sim-partes{list-style:none;margin:0;padding:0;border-top:1.5px solid var(--sumi);}
  .sim-parte{display:grid;grid-template-columns:30px 1fr auto;gap:10px;align-items:center;padding:12px 4px;border-bottom:1px solid var(--line);}
  .sim-n{width:26px;height:26px;border:1.5px solid var(--sumi);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;}
  .sim-parte.is-toca{background:color-mix(in srgb, var(--line) 25%, transparent);}
  .sim-parte.is-toca .sim-n{background:var(--sumi);color:var(--papel);}
  .sim-p-t{display:flex;flex-direction:column;min-width:0;}
  .sim-p-t b{font-family:'Shippori Mincho',serif;font-size:1.05rem;}
  .sim-p-t small, .sim-de{font-size:.78rem;color:var(--gris-osc);}
  .sim-p-d{font-weight:700;font-size:.85rem;white-space:nowrap;}
  .sim-ok{color:var(--matcha-osc);}
  .sim-estado{margin:12px 0 0;font-size:.85rem;font-weight:700;color:var(--shu-deep);}
  .sim-acts{display:flex;flex-direction:column;gap:10px;margin:14px 0;}
  .sim-acts .btn{width:100%;}
  .sim .sim-legal{margin:14px 0 6px;font-size:.74rem;line-height:1.5;color:var(--gris-osc);}
  .sim-intentos ul{list-style:none;margin:0;padding:0;}
  .sim-intentos li{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:.88rem;}
  .sim-h3{margin:18px 0 8px;font-size:.95rem;text-align:left;}
  /* Durante una parte */
  .sim-cab{display:flex;align-items:center;gap:8px;}
  .sim-cab .back-btn{flex:none;}
  .sim-cab-t{flex:1;display:flex;flex-direction:column;min-width:0;}
  .sim-cab-t b{font-family:'Shippori Mincho',serif;font-size:1rem;}
  .sim-cab-t small{font-size:.75rem;color:var(--gris-osc);}
  .sim-reloj{display:flex;align-items:center;gap:6px;padding:6px 12px;border:1.5px solid var(--line);border-radius:16px;background:var(--papel);font-weight:700;font-variant-numeric:tabular-nums;}
  .sim-reloj.is-poco{border-color:var(--shu);color:var(--shu-deep);}
  .sim-barra{height:4px;margin:10px 0 0;border-radius:2px;background:color-mix(in srgb, var(--line) 50%, transparent);}
  .sim-barra i{display:block;height:4px;border-radius:2px;background:var(--sumi);}
  .sim-inst{margin:0;font-family:'Shippori Mincho',serif;font-size:1rem;line-height:2;}
  .sim-inst rt{font-size:.55em;}
  .sim-es-btn{margin:2px 0 6px;font-size:.8rem;color:var(--ai);text-decoration:underline;}
  .sim-inst-es{margin:0 0 8px;font-size:.85rem;color:var(--gris-osc);}
  .sim-pregunta .question{margin:12px 0;}
  .sim-ops{display:flex;flex-direction:column;gap:10px;}
  .sim .stamp[hidden]{display:none;}
  .sim-op{display:flex;align-items:center;gap:12px;min-height:48px;background:var(--papel);}
  .sim-op-n{flex:none;width:24px;height:24px;border-radius:50%;border:1.5px solid var(--gris);display:flex;align-items:center;justify-content:center;font-size:.8rem;}
  .sim-op.is-elegida{border:2.5px solid var(--ai);background:color-mix(in srgb, var(--ai) 16%, var(--papel));}
  .sim-op.is-elegida .sim-op-n{background:var(--ai);border-color:var(--ai);color:var(--papel);}
  .sim-nav{display:flex;justify-content:space-between;gap:10px;margin:12px 0;}
  .sim-mapa{padding:12px 0 4px;border-top:1px solid var(--line);}
  .sim-mapa-t{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px;font-size:.82rem;}
  .sim-blanco{color:var(--shu-deep);font-weight:700;}
  .sim-casillas{display:grid;grid-template-columns:repeat(auto-fill, minmax(34px, 1fr));gap:6px;margin-bottom:12px;}
  .sim-c{height:34px;border-radius:5px;border:1.5px solid var(--line);background:var(--papel);color:var(--gris-osc);font:inherit;font-size:.8rem;cursor:pointer;}
  .sim-c.is-resp{background:var(--ai);border-color:var(--ai);color:var(--papel);}
  .sim-c.is-aqui{outline:2.5px solid var(--shu);outline-offset:1px;font-weight:700;}
  .sim-entregar{width:100%;}
  .sim-oir-fila{margin:10px 0;}
  .sim-oir{display:inline-flex;align-items:center;gap:8px;}
  .sim-oir svg{width:22px;height:22px;}
  .sim-aviso{font-size:.82rem;color:var(--gris-osc);}
  /* Al entregar y la hoja de resultados */
  .results.sim{text-align:left;}
  .sim-entrega h2{font-family:'Shippori Mincho',serif;}
  .sim-marcador{display:flex;align-items:baseline;gap:8px;margin:8px 0 6px;}
  .sim-marcador b{font-family:'Shippori Mincho',serif;font-size:3rem;line-height:1;}
  .sim-marcador span{color:var(--gris-osc);}
  .sim-tipos{list-style:none;margin:8px 0;padding:0;}
  .sim-tipos li{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:.9rem;}
  .sim-tipos li.is-flojo{color:var(--shu-deep);font-weight:700;}
  .sim-fallos{display:flex;flex-direction:column;gap:10px;}
  .sim-fallo{padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--papel);font-size:.9rem;line-height:1.5;}
  .results .sim-fallo p{margin:6px 0 0;}
  .sim-mal{color:var(--shu-deep);}
  .sim-bien{color:var(--matcha-osc);}
  .results .sim-nota{color:var(--gris-osc);}
  .sim-veredicto{display:flex;justify-content:space-between;align-items:center;margin:10px 0;}
  .sim-veredicto h2{margin:0;font-size:1.8rem;}
  .sim-sello{color:var(--shu);}
  .sim-notas{border:1.5px solid var(--sumi);border-radius:4px;background:var(--papel);overflow:hidden;}
  .sim-sec{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);}
  .sim-sec > span:first-child{display:flex;flex-direction:column;}
  .sim-sec b{font-size:.95rem;}
  .sim-sec small{font-size:.75rem;color:var(--gris-osc);}
  .sim-sec.is-corta .sim-pts{color:var(--shu-deep);}
  .sim-total{border-bottom:0;background:color-mix(in srgb, var(--line) 25%, transparent);}
  .sim-pts{font-size:1.3rem;font-weight:700;white-space:nowrap;}
  .sim-pts small{font-weight:400;}
  .sim-barras{list-style:none;margin:0;padding:0;}
  .sim-barras li{display:grid;grid-template-columns:minmax(0, 1.3fr) 1fr auto;gap:8px;align-items:center;padding:4px 0;font-size:.82rem;}
  .sim-b{height:8px;border-radius:4px;background:color-mix(in srgb, var(--line) 50%, transparent);}
  .sim-b i{display:block;height:8px;border-radius:4px;background:var(--matcha);}
  .sim-barras .is-flojo .sim-b i{background:var(--shu);}
  .sim-b-n{white-space:nowrap;font-variant-numeric:tabular-nums;}
  .sim-practicar{display:flex;flex-direction:column;gap:8px;}

  /* El primer día (28/10, js/motor/primera-vez.js). Las indicaciones (PR-12, 06/11): dentro de la ficha, nunca encima,
     una por pantalla. La misma para las recompensas (una-a-una.js). Y el final limpio. */
  .pv-pista{display:flex;flex-direction:column;gap:2px;margin:14px 0 0;padding:10px 14px;border-radius:12px;text-align:left;
    background:color-mix(in srgb, var(--ai) 9%, var(--papel));color:var(--sumi);font-family:'Zen Maru Gothic',sans-serif;font-size:.9rem;line-height:1.5;}
  .pv-t{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ai-deep);}
  .pv-ok{align-self:flex-end;margin-top:2px;background:none;border:0;color:var(--ai-deep);font:inherit;font-size:.82rem;
    text-decoration:underline;text-underline-offset:3px;padding:4px 0;cursor:pointer;}
  .trazo-fb.pv-ahora{color:var(--sumi);} .trazo-fb.pv-ahora b{color:var(--ai-deep);}
  @media (prefers-reduced-motion:no-preference){ .pv-pista, .pe-tarjeta{animation:pv-entra .35s var(--curva-suave, ease-out) both;} }
  @keyframes pv-entra{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}
  /* Cada pestaña explica lo suyo (PR-12, js/motor/recorrido.js): la tarjeta de arriba, con el aspecto de «Haz tuyo». */
  .pe-tarjeta{margin:0 0 14px;max-width:none;}
  .pe-tarjeta b small{display:block;font-size:.8rem;font-weight:400;color:var(--gris-osc);}
  .pe-n{margin:6px 0 10px;padding-left:1.1em;font-size:.88rem;line-height:1.5;color:var(--sumi);}
  .pe-n li + li{margin-top:4px;}
  .pe-n span{display:inline;margin:0;font-size:inherit;line-height:inherit;}   /* el glosario al tocar (llave…), en su línea */
  .pv-fin{text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px;padding-top:18px;}
  .pv-fin .btn{width:100%;max-width:420px;}
  .tuyo-tarjeta{margin:0 0 14px;max-width:none;}

  /* =====================================================================================================
     AUT-CS-02 · Apartados reservados, uno por tanda. Cada tanda escribe SOLO dentro del suyo (entre su «desde» y
     su «hasta»), nunca en el de otra ni fuera: así varias tandas a la vez no chocan en Git. Van al final para ganar
     igual que la nota a mano en caso de empate; las clases que sustituyen notas, con !important (punto 8.1).
     El PR final de AUT-CS-02 puede juntarlos o dejarlos como están.
     ===================================================================================================== */

  /* --- T2 · Camino · desde (solo esta tanda) --- */
  /* --- T2 · Camino · hasta --- */

  /* --- T3 · Repasar · desde (solo esta tanda) --- */
  /* --- T3 · Repasar · hasta --- */

  /* --- T4 · Leer · desde (solo esta tanda) --- */
  /* Lo que antes eran notas style="…" del menú de temas y categorías (js/motor/secciones.js: renderLibre, renderSection,
     groupSection, renderTemaMenu, renderCatDetail). Se reúsan las u- que ya había (u-m0, u-mb4, u-mb8, u-mb12, u-mb22,
     u-mt18, u-m-0-0-12, u-f1); aquí, las propias de estas pantallas. Las barras de avance llegan con Estilo.pinta. */
  .lr-pie{text-align:center !important;margin-top:22px !important;}
  .lr-fallos{min-height:0 !important;flex-direction:row !important;align-items:center !important;justify-content:space-between !important;gap:14px !important;flex-wrap:wrap !important;margin-bottom:22px !important;}
  .lr-fallos-txt{font-family:'Zen Maru Gothic',sans-serif !important;}
  .lr-fallos-titulo{color:var(--ai-deep) !important;}
  .lr-grupo{font-family:'Zen Maru Gothic',sans-serif !important;color:var(--ai-deep) !important;font-size:1rem !important;margin:22px 0 4px !important;}
  .lr-empezar{align-items:center !important;text-align:center !important;justify-content:center !important;}
  .lr-botones{display:flex !important;gap:10px !important;flex-wrap:wrap !important;justify-content:center !important;}
  .lr-enlace{color:var(--shu-deep) !important;font-weight:600 !important;}
  /* --- T4 · Leer · hasta --- */

  /* --- T5 · Lección · desde (solo esta tanda) --- */
  /* Lo que antes eran notas style="…" de la lección (kana.js, palabras.js, historia.js) y de los dibujos de las unidades
     (japones-dibujos.js y js/idiomas/n5/*). El margin:0 de historia.js va a la u-m0 de siempre. Las barras (progreso,
     tiempo del repaso, confusiones) y la fila de kana de la explicación animada (--de, --a) llegan con Estilo.pinta.
     Colores de los dibujos (D4 A): el mismo color que llevaban escrito, pero como variable aquí, nunca a pelo en la regla.
     No dependen del tema, igual que antes. */
  :root{
    --dib-shu-12:rgba(189,73,50,.12); --dib-shu-15:rgba(189,73,50,.15); --dib-shu-20:rgba(189,73,50,.2);
    --dib-kin-25:rgba(184,145,47,.25); --dib-kin-30:rgba(184,145,47,.3);
    --dib-mat-25:rgba(92,122,82,.25); --dib-sumi-18:rgba(43,42,40,.18);
    /* La mancha de las palabras de colores (n5/compras.js): un color por palabra. En rgb(), no en #…: es el mismo color,
       y tests/diccionario_test.js no deja colores en #… desde el apartado del Diccionario hasta el final del archivo */
    --dib-m-aka:rgb(189,73,50); --dib-m-ao:rgb(47,93,140); --dib-m-shiro:rgb(255,253,246); --dib-m-shiro-l:rgb(43,42,40);
    --dib-m-kuro:rgb(43,42,40); --dib-m-kiiro:rgb(226,181,42); --dib-m-chairo:rgb(122,82,50); --dib-m-midori:rgb(92,122,82);
  }
  .dib-shu-12{fill:var(--dib-shu-12) !important;} .dib-shu-15{fill:var(--dib-shu-15) !important;} .dib-shu-20{fill:var(--dib-shu-20) !important;}
  .dib-kin-25{fill:var(--dib-kin-25) !important;} .dib-kin-30{fill:var(--dib-kin-30) !important;}
  .dib-mat-25{fill:var(--dib-mat-25) !important;} .dib-sumi-18{fill:var(--dib-sumi-18) !important;}
  .dib-papel{fill:var(--papel) !important;}
  .dib-op55{opacity:.55 !important;} .dib-op75{opacity:.75 !important;} .dib-op80{opacity:.8 !important;}
  .dib-m{stroke:none !important;}
  .dib-m-aka{fill:var(--dib-m-aka) !important;} .dib-m-ao{fill:var(--dib-m-ao) !important;} .dib-m-kuro{fill:var(--dib-m-kuro) !important;}
  .dib-m-shiro{fill:var(--dib-m-shiro) !important;stroke:var(--dib-m-shiro-l) !important;}
  .dib-m-kiiro{fill:var(--dib-m-kiiro) !important;} .dib-m-chairo{fill:var(--dib-m-chairo) !important;} .dib-m-midori{fill:var(--dib-m-midori) !important;}
  .lc-saltar{text-align:center !important;margin-top:12px !important;}   /* «Ya los conozco: vamos a practicar» (kana.js, palabras.js) */
  /* --- T5 · Lección · hasta --- */

  /* --- T6 · Taller de verbos · desde (solo esta tanda) --- */
  /* Lo que antes eran notas style="…" del taller (js/idiomas/japones.js). Se reúsan las u- que ya había (u-mb6, u-m0,
     u-mb8, u-mb16, u-mt14, u-mt16, u-m-0-0-10, u-m-0-0-12, u-m-4-0-4, u-m-4-0-10, u-m-6-0-0-0, u-m-8-0, u-m-8-0-0,
     u-m-10-0, u-mt-n8); aquí, las que faltaban y las clases propias de sus pantallas. */
  .u-f1{font-size:1rem !important;font-weight:500 !important;}
  .u-scroll-x{overflow-x:auto !important;}
  .u-centro{align-self:center !important;}
  .u-flex1{flex:1 !important;}
  .tv-flojos{min-height:0 !important;flex-direction:row !important;align-items:center !important;justify-content:space-between !important;gap:14px !important;flex-wrap:wrap !important;margin:14px 0 4px !important;}
  .tv-flojos-txt{font-family:'Zen Maru Gothic',sans-serif !important;}
  .tv-titulo{font-family:'Zen Maru Gothic',sans-serif !important;color:var(--ai-deep) !important;}
  .tv-significado{min-height:0 !important;margin-bottom:16px !important;}
  .tv-sig-select{width:100% !important;margin-bottom:8px !important;}
  .tv-sig-botones{display:flex !important;gap:8px !important;flex-wrap:wrap !important;}
  .tv-leyenda{padding:12px 14px !important;}
  .tv-leyenda-txt{font-size:.84rem !important;}
  .tv-filtro-fila{margin:6px 0 8px !important;flex-wrap:wrap !important;align-items:center !important;}
  .tv-filtro-btn{padding:6px 12px !important;}
  .tv-hist{display:block !important;margin-top:8px !important;}
  .tv-ficha{align-items:center !important;justify-content:center !important;text-align:center !important;cursor:pointer !important;}
  .tv-ficha-detalle{text-align:left !important;width:100% !important;font-family:'Zen Maru Gothic',sans-serif !important;font-size:.85rem !important;}
  .ficha-kana{font-size:2rem !important;}
  .ficha-kanji{font-size:1.3rem !important;}
  .ficha-es{font-size:1.6rem !important;}
  .ficha-dorso-es{font-size:1.4rem !important;color:var(--shu-deep) !important;}
  .ficha-dorso-jp{font-size:1.8rem !important;color:var(--shu-deep) !important;}
  /* La fila mini del fallo (filaMini): sale de la u (--de) y llega a la a o a la i (--a). Clases y no nota puesta por el
     código: viajan bien en la foto de NAV.snap al volver a una pregunta anterior. */
  .tut-fila-mini.hasta-a{--de:2 !important;--a:0 !important;}
  .tut-fila-mini.hasta-i{--de:2 !important;--a:1 !important;}
  /* --- T6 · Taller de verbos · hasta --- */

  /* --- T7 + T11 · Kanji y juegos · desde (solo esta tanda) --- */
  /* --- T7 + T11 · Kanji y juegos · hasta --- */

  /* --- T10 · Estantería · desde (solo esta tanda) --- */
  /* Puesto de fukubiki (js/motor/fukubiki.js, puesto()): los sitios fijos que antes iban en la nota de cada pieza.
     Lo que se calcula (farolillos, bola, tambor, tablón, estrellas) llega con Estilo.pinta. */
  .fk-escena .fk-resplandor{left:10.3% !important;top:22.5% !important;}
  .fk-escena .fk-resplandor.b{left:89.7% !important;}
  .fk-escena .fk-cartel{left:10.9% !important;top:58.1% !important;}
  .fk-escena .fk-karan{left:24.6% !important;top:52% !important;}
  /* --- T10 · Estantería · hasta --- */

  /* --- T12 · Escenas · desde (solo esta tanda) --- */
  /* --- T12 · Escenas · hasta --- */
