/* Theme ZELDA : rétro SNES, The Legend of Zelda: A Link to the Past (1991).
   Panneaux noirs à bordures épaisses et pixelisées (vert « ITEM », or
   « EQUIPMENT », rouge « DO »), coins en escalier, étiquettes de panneau posées
   sur la bordure du haut, typo pixel, cœurs de vie, anneau de sélection vert,
   murs de donjon en briques. Rendu net : aucune ombre floue, aucun dégradé doux.
   Purement visuel : chaque règle est bornée à :root[data-theme="zelda"], le
   balisage et le comportement des pages sont identiques aux autres thèmes.
   Les cadres sont de petits SVG (data-URI) en « 9 tranches » : un liseré vif de
   4 px + un liseré sombre de 2 px, coin coupé en escalier, sans clip-path (qui
   rognerait ombres et étiquettes). Aucune image externe, aucun logo protégé :
   formes génériques et caractères Unicode (♥ ♡ ◆ ▶).
   Polices : Press Start 2P (titres, étiquettes) + Tiny5 (lecture, boutons, tableaux). */

:root[data-theme="zelda"]{
  color-scheme:dark;
  --z-green:#2fbf2f; --z-lime:#7dff7d; --z-gold:#f8c820; --z-red:#e02424;
  --z-cream:#f4ecd0; --z-stone:#e8d9b0; --z-rupee:#39d353; --z-blue:#6ab8ff;
  --z-pixel:"Press Start 2P","Courier New",monospace;
  --z-font:"Tiny5","Segoe UI",system-ui,sans-serif;
  --z-sym:"Segoe UI Symbol","DejaVu Sans",sans-serif;
  /* Cadres 9 tranches (7x7 unités, tranche 3, rendus à 2 px l'unité = 6 px). */
  --z-f-green:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%2314601a' d='M2 2h3v3H2z'/%3E%3Cpath fill='%232fbf2f' d='M2 0h3v1H2zM1 1h5v1H1zM0 2h2v3H0zM5 2h2v3H5zM1 5h5v1H1zM2 6h3v1H2z'/%3E%3C/svg%3E");
  --z-f-lime:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%232fbf2f' d='M2 2h3v3H2z'/%3E%3Cpath fill='%237dff7d' d='M2 0h3v1H2zM1 1h5v1H1zM0 2h2v3H0zM5 2h2v3H5zM1 5h5v1H1zM2 6h3v1H2z'/%3E%3C/svg%3E");
  --z-f-gold:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%238a6a08' d='M2 2h3v3H2z'/%3E%3Cpath fill='%23f8c820' d='M2 0h3v1H2zM1 1h5v1H1zM0 2h2v3H0zM5 2h2v3H5zM1 5h5v1H1zM2 6h3v1H2z'/%3E%3C/svg%3E");
  --z-f-red:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%237a1212' d='M2 2h3v3H2z'/%3E%3Cpath fill='%23e02424' d='M2 0h3v1H2zM1 1h5v1H1zM0 2h2v3H0zM5 2h2v3H5zM1 5h5v1H1zM2 6h3v1H2z'/%3E%3C/svg%3E");
  --z-f-stone:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='7' height='7' shape-rendering='crispEdges'%3E%3Cpath fill='%238b7a4e' d='M2 2h3v3H2z'/%3E%3Cpath fill='%23e8d9b0' d='M2 0h3v1H2zM1 1h5v1H1zM0 2h2v3H0zM5 2h2v3H5zM1 5h5v1H1zM2 6h3v1H2z'/%3E%3C/svg%3E");
  /* Mur de donjon : briques 40x20 en appareil décalé, très assombries. */
  --z-bricks:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='40' shape-rendering='crispEdges'%3E%3Crect width='80' height='40' fill='%23100904'/%3E%3Cpath fill='%232a190b' d='M0 0h38v18H0zM40 0h38v18H40zM0 20h18v18H0zM20 20h38v18H20zM60 20h20v18H60z'/%3E%3Cpath fill='%23372210' d='M0 0h38v2H0zM40 0h38v2H40zM0 20h18v2H0zM20 20h38v2H20zM60 20h20v2H60z'/%3E%3Cpath fill='%231f1208' d='M0 16h38v2H0zM40 16h38v2H40zM0 36h18v2H0zM20 36h38v2H20zM60 36h20v2H60z'/%3E%3Cpath fill='%23331f0e' d='M8 8h2v2H8zM24 12h2v2H24zM50 6h2v2H50zM66 10h2v2H66zM6 28h2v2H6zM34 26h2v2H34zM44 32h2v2H44zM70 26h2v2H70z'/%3E%3C/svg%3E");

  --bg:#1c1108; --bg-soft:#140b05;
  --surface:#000; --surface-2:#0c0c0c; --surface-hover:#10260f;
  --border:#2fbf2f; --border-soft:#1c6b1c;
  /* Crème sur noir ≈ 17:1 ; --text-faint (#bcae84) ≈ 9:1 sur noir, ≈ 7:1 sur brique. */
  --text:#f4ecd0; --text-dim:#dccfa2; --text-faint:#bcae84;
  --accent:#39d353; --accent-hover:#7dff7d; --accent-dim:#2fbf2f;
  --accent-soft:rgba(57,211,83,.16);
  --danger:#ff7b7b; --danger-hover:#ffa3a3; --danger-soft:rgba(224,36,36,.22);
  --success:#39d353; --success-soft:rgba(57,211,83,.16);
  --warning:#f8c820; --warning-soft:rgba(248,200,32,.16);
  --purple:#d1adff; --purple-soft:rgba(179,123,255,.18);
  --radius-sm:0; --radius:0; --radius-lg:0;
  --shadow:4px 4px 0 #000;
  --shadow-sm:3px 3px 0 #000;
  --nav-bg:#000;
}

/* ---------- Décor : murs de donjon, cadre de pierre autour de l'écran ---------- */
:root[data-theme="zelda"] body{
  font-family:var(--z-font);font-weight:400;font-size:1.12rem;letter-spacing:.01em;font-synthesis:none;
  background:#100904 var(--z-bricks) 0 0/80px 40px;
  background-attachment:fixed;
}
/* Cadre de la pièce, collé au bord de la fenêtre. Ne capte aucun clic. */
:root[data-theme="zelda"] body::before{
  content:"";position:fixed;inset:0;z-index:50;pointer-events:none;
  border:6px solid transparent;border-image:var(--z-f-stone) 3 / 6px stretch;
}
:root[data-theme="zelda"] ::selection{background:var(--z-gold);color:#000}
:root[data-theme="zelda"] *{scrollbar-color:var(--z-green) #000}
:root[data-theme="zelda"] a:focus-visible,
:root[data-theme="zelda"] button:focus-visible,
:root[data-theme="zelda"] summary:focus-visible{outline:3px solid var(--z-gold);outline-offset:2px}

/* ---------- Titres : Press Start 2P, cœurs de vie, ◆ ---------- */
:root[data-theme="zelda"] h1{
  font-family:var(--z-pixel);font-weight:400;font-size:.95rem;line-height:1.8;letter-spacing:0;
  text-transform:uppercase;color:var(--z-cream);text-shadow:3px 3px 0 #000;
  margin-bottom:1.4rem;overflow-wrap:anywhere;
}
/* Jauge de vie sous le titre de page : 4 cœurs pleins + 1 vide, qui battent. */
:root[data-theme="zelda"] h1::after{
  content:"♥♥♥♥♡";display:block;width:max-content;margin-top:.45rem;font-family:var(--z-sym);font-size:1.15rem;
  line-height:1;letter-spacing:.18em;color:var(--z-red);text-shadow:2px 2px 0 #000;
  transform-origin:left center;animation:z-beat 1.4s steps(1,end) infinite;
}
:root[data-theme="zelda"] h2{
  font-family:var(--z-pixel);font-weight:400;font-size:.78rem;line-height:1.8;letter-spacing:0;
  text-transform:uppercase;color:var(--z-cream);text-shadow:3px 3px 0 #000;margin-top:2.2rem;
}
:root[data-theme="zelda"] h2::before{content:"♥";margin-right:.55em;color:var(--z-red);font-family:var(--z-sym);font-size:1.9em;line-height:.6;vertical-align:-.12em}
:root[data-theme="zelda"] h3{
  font-family:var(--z-font);font-weight:400;font-size:1.3rem;color:var(--z-cream);text-shadow:2px 2px 0 #000;
}
:root[data-theme="zelda"] h3::before{content:"◆";margin-right:.45em;color:var(--z-rupee);font-family:var(--z-sym);font-size:.85em}
:root[data-theme="zelda"] a{
  color:var(--z-lime);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;
}
:root[data-theme="zelda"] a:hover{color:var(--z-gold)}
:root[data-theme="zelda"] nav a,
:root[data-theme="zelda"] a.btn,
:root[data-theme="zelda"] a.card,
:root[data-theme="zelda"] .chips a{text-decoration:none}
:root[data-theme="zelda"] .meta-line{color:var(--text-dim);font-size:1.08rem}

/* ---------- Barre de navigation : ruban noir à liseré d'or, façon HUD ---------- */
:root[data-theme="zelda"] nav{
  background:#000;backdrop-filter:none;border-bottom:4px solid var(--z-gold);
  box-shadow:0 4px 0 #8a6a08,0 8px 0 #000;
  flex-wrap:wrap;row-gap:.4rem;   /* tablette : la barre passe sur deux rangées plutôt que de déborder */
}
/* Marque : jauge magique verte (dessinée) + « NICOFLIX » en or. Le clap 🎬 du
   balisage est masqué (font-size 0). */
:root[data-theme="zelda"] nav .brand{font-size:0;gap:.6rem;text-shadow:none}
:root[data-theme="zelda"] nav .brand::before{
  content:"";flex:none;width:14px;height:30px;border:2px solid var(--z-cream);
  background:linear-gradient(90deg,var(--z-lime) 0 3px,var(--z-green) 3px 100%) bottom/100% 75% no-repeat,#000;
  box-shadow:0 0 0 2px #000,3px 3px 0 2px #000;
}
:root[data-theme="zelda"] nav .brand::after{
  content:"NICOFLIX";font-family:var(--z-pixel);font-size:.78rem;letter-spacing:0;
  color:var(--z-gold);text-shadow:2px 2px 0 #5a4206;
}
:root[data-theme="zelda"] nav a.nav-link{
  font-family:var(--z-font);font-weight:400;font-size:1.12rem;text-transform:uppercase;letter-spacing:.08em;
  color:var(--z-cream);border:2px solid transparent;border-radius:0;
}
:root[data-theme="zelda"] nav a.nav-link:hover{color:var(--z-lime);background:#000;border-color:var(--z-green)}
/* Élément choisi : anneau vert + curseur ▶ qui clignote. */
:root[data-theme="zelda"] nav a.nav-link.active{
  color:var(--z-lime);background:#000;border-color:var(--z-green);
  box-shadow:0 0 0 2px #000,0 0 0 4px var(--z-lime);margin:0 4px;
}
:root[data-theme="zelda"] nav a.nav-link.active::before{
  content:"▶";color:var(--z-lime);font-family:var(--z-sym);font-size:.7em;margin-right:.4em;
  display:inline-block;animation:z-blink 1s steps(1,end) infinite;
}
/* « — LIFE — » et cœurs du HUD, dans l'espace libre (bureau seulement). */
:root[data-theme="zelda"] nav .spacer{display:flex;justify-content:flex-end;align-items:center;gap:.5rem;padding-right:.9rem}
:root[data-theme="zelda"] nav .spacer::before{
  content:"— LIFE —";font-family:var(--z-pixel);font-size:.55rem;color:var(--z-cream);
  text-shadow:2px 2px 0 #000;white-space:nowrap;
}
:root[data-theme="zelda"] nav .spacer::after{
  content:"♥♥♥♥♡";font-family:var(--z-sym);font-size:1.05rem;line-height:1;letter-spacing:.1em;
  color:var(--z-red);text-shadow:2px 2px 0 #000;white-space:nowrap;
  animation:z-beat 1.4s steps(1,end) infinite;transform-origin:right center;
}
:root[data-theme="zelda"] nav #theme-toggle{font-size:1.1rem;line-height:1;color:var(--z-gold)}
:root[data-theme="zelda"] nav #theme-toggle:hover,
:root[data-theme="zelda"] nav #theme-toggle[aria-expanded="true"]{color:#000}

/* ---------- Panneaux : noir, cadre pixel épais, coins en escalier ---------- */
:root[data-theme="zelda"] .card,
:root[data-theme="zelda"] details.section,
:root[data-theme="zelda"] .table-wrap,
:root[data-theme="zelda"] .warn,
:root[data-theme="zelda"] #theme-menu{
  border:6px solid transparent;border-radius:0;background-color:#000;background-clip:padding-box;
  box-shadow:none;filter:drop-shadow(4px 4px 0 #000);
}
:root[data-theme="zelda"] .card,
:root[data-theme="zelda"] .table-wrap,
:root[data-theme="zelda"] #theme-menu{border-image:var(--z-f-gold) 3 / 6px stretch}
:root[data-theme="zelda"] details.section{
  border-image:var(--z-f-green) 3 / 6px stretch;margin:2.4rem 0 1.6rem;
}
:root[data-theme="zelda"] .warn{
  border-image:var(--z-f-red) 3 / 6px stretch;position:relative;margin-top:1.8rem;color:var(--text);
}
/* Étiquette « DO » : mini-titre posé sur la bordure du haut, fond noir. */
:root[data-theme="zelda"] .warn::before{
  content:"▲ ATTENTION";position:absolute;top:-1.05rem;left:.7rem;padding:.25rem .55rem;
  background:#000;color:var(--danger);font-family:var(--z-pixel);font-size:.58rem;line-height:1.4;
}
:root[data-theme="zelda"] .warn strong{color:var(--danger)}
:root[data-theme="zelda"] .table-wrap table{border:0;outline:0}
:root[data-theme="zelda"] .grid a.card:not(.poster-card){
  border-image:var(--z-f-green) 3 / 6px stretch;
}
:root[data-theme="zelda"] .grid a.card:not(.poster-card):hover,
:root[data-theme="zelda"] .grid a.card:not(.poster-card):focus-visible{
  border-image:var(--z-f-lime) 3 / 6px stretch;transform:translate(0,-2px);box-shadow:none;
}

/* Étiquette de section « ITEM / EQUIPMENT » : le summary se pose à cheval sur
   la bordure du haut du panneau. Fermé, le panneau reste une fine bande. */
:root[data-theme="zelda"] details.section > summary{
  position:relative;z-index:1;width:max-content;max-width:calc(100% - .8rem);
  margin:-1.2rem 0 0 .5rem;padding:.5rem .7rem;gap:.55rem;
  background:#000;border-radius:0;
  font-family:var(--z-pixel);font-size:.66rem;line-height:1.6;font-weight:400;
  text-transform:uppercase;color:var(--z-cream);transition:none;
}
:root[data-theme="zelda"] details.section > summary::before{
  content:"◆";color:var(--z-rupee);font-family:var(--z-sym);font-size:.9em;
}
:root[data-theme="zelda"] details.section > summary:hover{background:#000;color:var(--z-lime)}
:root[data-theme="zelda"] details.section[open] > summary{border-radius:0;border-bottom:0}
:root[data-theme="zelda"] details.section:not([open]){padding-bottom:.35rem}
:root[data-theme="zelda"] details.section > summary .chevron{color:var(--z-gold);font-family:var(--z-sym);margin-left:.2rem}
:root[data-theme="zelda"] details.section > summary .count{
  font-family:var(--z-font);font-size:.95rem;font-weight:400;letter-spacing:0;color:#000;
  background:var(--z-gold);border:0;border-radius:0;padding:.05rem .4rem;
}
:root[data-theme="zelda"] details.section > .section-body{padding-top:.5rem}

/* ---------- Affiches : objets d'inventaire dans un cadre noir à bordure verte ---------- */
:root[data-theme="zelda"] .poster-card.card{
  border-image:var(--z-f-green) 3 / 6px stretch;background-color:#000;
  transition:none;
}
:root[data-theme="zelda"] .poster-card.card:hover,
:root[data-theme="zelda"] .poster-card.card:focus-within{
  border-image:var(--z-f-lime) 3 / 6px stretch;transform:none;box-shadow:none;
}
:root[data-theme="zelda"] .poster-card .poster-wrap,
:root[data-theme="zelda"] .grid a.card .poster-wrap{position:relative;background:#0c0c0c;margin:6px 6px 0}
/* Par-dessus l'affiche : tramage 2 px (image « basse définition ») au repos,
   anneau de sélection vert au survol ou au focus. Purement décoratif. */
:root[data-theme="zelda"] .poster-card .poster-wrap::after,
:root[data-theme="zelda"] .grid a.card .poster-wrap::after{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:1;
  background:repeating-conic-gradient(rgba(0,0,0,.2) 0 25%,transparent 0 50%) 0 0/4px 4px;
}
:root[data-theme="zelda"] .poster-card:hover .poster-wrap::after,
:root[data-theme="zelda"] .poster-card:focus-within .poster-wrap::after,
:root[data-theme="zelda"] .grid a.card:hover .poster-wrap::after,
:root[data-theme="zelda"] .grid a.card:focus-visible .poster-wrap::after{
  background:none;box-shadow:inset 0 0 0 3px var(--z-lime),inset 0 0 0 6px #000;
}
:root[data-theme="zelda"] .poster-card .card-title,
:root[data-theme="zelda"] .grid a.card .title{
  font-family:var(--z-font);font-weight:400;font-size:1.05rem;line-height:1.3;color:var(--z-cream);
  padding-top:.55rem;
}
/* Curseur ▶ devant le nom de l'objet visé. */
:root[data-theme="zelda"] .poster-card:hover .card-title::before,
:root[data-theme="zelda"] .poster-card:focus-within .card-title::before{
  content:"▶ ";color:var(--z-lime);font-family:var(--z-sym);font-size:.75em;
  display:inline-block;animation:z-blink 1s steps(1,end) infinite;
}
:root[data-theme="zelda"] .poster-card .card-meta{color:var(--text-faint);font-size:.95rem}
:root[data-theme="zelda"] .grid a.card .title .year{color:var(--text-faint)}
:root[data-theme="zelda"] .grid a.card .poster-fallback{color:var(--text-faint)}
:root[data-theme="zelda"] .poster-card .overlay{top:.95rem;left:.95rem;right:3.2rem;z-index:2}
:root[data-theme="zelda"] .poster-card .remove-form{top:.85rem;right:.85rem;z-index:3}
:root[data-theme="zelda"] .poster-card .overlay .badge{
  background:#000;color:var(--z-cream);border-color:var(--z-cream);
  font-size:.8rem;letter-spacing:.02em;padding:.08rem .35rem;gap:.25rem;
}
:root[data-theme="zelda"] .poster-card .overlay .badge.s-warn{background:var(--z-gold);color:#000;border-color:#000}
:root[data-theme="zelda"] .poster-card .overlay .badge.s-info{background:#000;color:var(--z-lime);border-color:var(--z-green)}

/* Cadre de l'affiche sur la page film : même objet d'inventaire, en plus grand. */
:root[data-theme="zelda"] .holo-frame{
  border:6px solid transparent;border-image:var(--z-f-green) 3 / 6px stretch;background-color:#000;
  background-clip:padding-box;padding:6px;filter:drop-shadow(4px 4px 0 #000);align-self:flex-start;
}
:root[data-theme="zelda"] .holo-art{position:relative;background:#0c0c0c;overflow:hidden}
:root[data-theme="zelda"] .holo-art img{box-shadow:none!important;border-radius:0!important}
:root[data-theme="zelda"] .holo-art::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:repeating-conic-gradient(rgba(0,0,0,.2) 0 25%,transparent 0 50%) 0 0/4px 4px;
}

/* ---------- Champs : fond noir, bordure verte, focus or ---------- */
:root[data-theme="zelda"] label{
  font-family:var(--z-font);font-weight:400;font-size:1rem;text-transform:uppercase;letter-spacing:.06em;
  color:var(--z-gold);
}
:root[data-theme="zelda"] input,
:root[data-theme="zelda"] select,
:root[data-theme="zelda"] textarea{
  background:#000;color:var(--z-cream);border:3px solid var(--z-green);border-radius:0;
  font-family:var(--z-font);font-weight:400;font-size:1.05rem;caret-color:var(--z-gold);
  box-shadow:inset 0 0 0 2px #000,0 0 0 2px #000;
}
:root[data-theme="zelda"] input::placeholder{color:var(--text-faint)}
:root[data-theme="zelda"] input:focus,
:root[data-theme="zelda"] select:focus,
:root[data-theme="zelda"] textarea:focus{
  border-color:var(--z-gold);outline:none;box-shadow:inset 0 0 0 2px #000,0 0 0 2px #000,0 0 0 5px var(--z-gold);
}
:root[data-theme="zelda"] select option{background:#000;color:var(--z-cream)}
:root[data-theme="zelda"] input[type="checkbox"]{
  accent-color:var(--z-green);width:1.1rem;height:1.1rem;padding:0;vertical-align:-.15rem;box-shadow:none;
}

/* ---------- Boutons : plaques pixel, pressées au clic ---------- */
:root[data-theme="zelda"] button,
:root[data-theme="zelda"] a.btn{
  --z-out:0 0 0 2px #000,4px 4px 0 0 #000;
  font-family:var(--z-font);font-weight:400;font-size:1rem;letter-spacing:.06em;text-transform:uppercase;
  color:#000;background:var(--z-green);border:0;border-radius:0;
  box-shadow:inset 2px 2px 0 #9dff9d,inset -2px -2px 0 #157a15,var(--z-out);
  transition:none;
}
:root[data-theme="zelda"] button:hover,
:root[data-theme="zelda"] a.btn:hover{
  background:var(--z-lime);color:#000;
  box-shadow:inset 2px 2px 0 #d2ffd2,inset -2px -2px 0 #2fbf2f,var(--z-out);
}
:root[data-theme="zelda"] button:active,
:root[data-theme="zelda"] a.btn:active{--z-out:0 0 0 2px #000,1px 1px 0 0 #000;transform:translate(2px,2px)}
/* Secondaire (fantôme) : plaque or sur fond noir. */
:root[data-theme="zelda"] button.btn-ghost{
  background:#000;color:var(--z-gold);
  box-shadow:inset 0 0 0 2px var(--z-gold),var(--z-out);
}
:root[data-theme="zelda"] button.btn-ghost:hover{
  background:var(--z-gold);color:#000;box-shadow:inset 0 0 0 2px #8a6a08,var(--z-out);
}
/* Danger : plaque rouge. */
:root[data-theme="zelda"] button.btn-danger,
:root[data-theme="zelda"] button.btn-remove{
  background:#000;color:var(--danger);box-shadow:inset 0 0 0 2px var(--z-red),var(--z-out);
}
:root[data-theme="zelda"] button.btn-danger:hover,
:root[data-theme="zelda"] button.btn-remove:hover{
  background:#c81818;color:#fff;box-shadow:inset 0 0 0 2px #ff7b7b,var(--z-out);
}
:root[data-theme="zelda"] .poster-card button.btn-remove{background:#000;color:var(--danger);border-radius:0}
:root[data-theme="zelda"] .poster-card button.btn-remove:hover{background:#c81818;color:#fff}
:root[data-theme="zelda"] button.btn-mini{
  background:transparent;color:var(--text-faint);box-shadow:none;transform:none;
}
:root[data-theme="zelda"] button.btn-mini:hover{background:transparent;color:var(--danger);box-shadow:none}
/* Désactivé : plaque grise hachurée, texte toujours lisible. */
:root[data-theme="zelda"] button:disabled,
:root[data-theme="zelda"] button:disabled:hover{
  background:repeating-linear-gradient(-45deg,#262626 0 4px,#1a1a1a 4px 8px);color:#a8a8a8;
  box-shadow:inset 0 0 0 2px #555,0 0 0 2px #000,2px 2px 0 0 #000;transform:none;cursor:default;
}
/* Interrupteur : glissière carrée, curseur carré, état lu aussi à sa position. */
:root[data-theme="zelda"] button.switch-toggle,
:root[data-theme="zelda"] button.switch-toggle:hover,
:root[data-theme="zelda"] button.switch-toggle:active{
  background:transparent;box-shadow:none;transform:none;color:var(--z-cream);
  font-size:1.05rem;text-transform:none;letter-spacing:.01em;
}
:root[data-theme="zelda"] .switch-track{border-radius:0;background:#000;border:3px solid var(--z-green)}
:root[data-theme="zelda"] .switch-thumb{border-radius:0;background:#8a7f5a}
:root[data-theme="zelda"] button.switch-toggle[aria-checked="true"] .switch-track{background:#10300f;border-color:var(--z-lime)}
:root[data-theme="zelda"] button.switch-toggle[aria-checked="true"] .switch-thumb{background:var(--z-lime)}

/* ---------- Badges : pastilles à bords nets, ◆ devant, distinctes par couleur + libellé ---------- */
:root[data-theme="zelda"] .badge{
  font-family:var(--z-font);font-weight:400;font-size:.88rem;letter-spacing:.05em;
  border-radius:0;padding:.1rem .5rem;gap:.35rem;
  background:#000;color:var(--z-cream);border:2px solid var(--text-faint);box-shadow:2px 2px 0 #000;
}
:root[data-theme="zelda"] .badge::before{
  content:"◆";width:auto;height:auto;border-radius:0;background:none;font-family:var(--z-sym);font-size:.72em;line-height:1;
}
:root[data-theme="zelda"] .s-searching{background:#000;color:var(--z-gold);border-color:var(--z-gold)}
:root[data-theme="zelda"] .s-searching::before{content:"◇"}
:root[data-theme="zelda"] .s-downloading,
:root[data-theme="zelda"] .s-waiting_release{background:#000;color:var(--z-blue);border-color:var(--z-blue)}
:root[data-theme="zelda"] .s-downloading::before{content:"▼"}
:root[data-theme="zelda"] .s-validating{background:#000;color:var(--purple);border-color:#b37bff}
:root[data-theme="zelda"] .s-validating::before{content:"◈"}
:root[data-theme="zelda"] .s-completed{background:var(--z-green);color:#000;border-color:var(--z-lime)}
:root[data-theme="zelda"] .s-completed::before{content:"◆"}
:root[data-theme="zelda"] .s-failed,
:root[data-theme="zelda"] .s-error{background:#c81818;color:#fff;border-color:#ff7b7b}
:root[data-theme="zelda"] .s-failed::before,
:root[data-theme="zelda"] .s-error::before{content:"✖"}
:root[data-theme="zelda"] .s-needs_review,
:root[data-theme="zelda"] .s-waiting_space,
:root[data-theme="zelda"] .s-waiting_approval{background:var(--z-gold);color:#000;border-color:#fff3b0}
:root[data-theme="zelda"] .s-needs_review::before,
:root[data-theme="zelda"] .s-waiting_space::before,
:root[data-theme="zelda"] .s-waiting_approval::before{content:"!"}
:root[data-theme="zelda"] .s-duplicate_rejected{background:#000;color:var(--text-faint);border:2px dotted var(--text-faint)}
:root[data-theme="zelda"] .s-duplicate_rejected::before{content:"≡"}
:root[data-theme="zelda"] .s-info{background:#000;color:var(--z-stone);border-color:var(--z-stone)}
:root[data-theme="zelda"] .s-warn{background:#000;color:var(--z-gold);border:2px dashed var(--z-gold)}
:root[data-theme="zelda"] .s-warn::before{content:"!"}
/* États « en cours » : le symbole clignote. */
:root[data-theme="zelda"] .s-searching::before,
:root[data-theme="zelda"] .s-downloading::before,
:root[data-theme="zelda"] .s-validating::before{animation:z-blink 1s steps(1,end) infinite}
:root[data-theme="zelda"] .chips .badge{padding:.3rem .7rem;border-radius:0}
:root[data-theme="zelda"] .chips a:hover .badge{border-color:var(--z-lime);color:var(--z-lime)}
:root[data-theme="zelda"] .id-num{color:var(--text-faint)}

/* ---------- Tableaux : panneau or, en-tête « EQUIPMENT » ---------- */
:root[data-theme="zelda"] table{background:#000;border:3px solid var(--z-gold);outline:2px solid #000}
:root[data-theme="zelda"] th{
  font-family:var(--z-font);font-weight:400;font-size:.95rem;letter-spacing:.07em;color:#000;
  background:var(--z-gold);border-bottom:3px solid #8a6a08;
}
:root[data-theme="zelda"] td{
  font-size:1.05rem;color:var(--z-cream);border-bottom:2px dashed rgba(248,200,32,.28);
}
:root[data-theme="zelda"] tbody tr:nth-child(even){background:#080808}
:root[data-theme="zelda"] tbody tr:hover{background:#10260f}
:root[data-theme="zelda"] tr.row-link:hover{background:#143a14;box-shadow:inset 5px 0 0 var(--z-lime)}
:root[data-theme="zelda"] td small,
:root[data-theme="zelda"] td .id-num{color:var(--text-faint)}
:root[data-theme="zelda"] table code,
:root[data-theme="zelda"] time{color:var(--text-dim);font-family:var(--z-font)}

/* ---------- Journal, états vides ---------- */
:root[data-theme="zelda"] .journal li{
  background:#000;border:2px solid #3a3a2a;border-left-width:8px;border-radius:0;font-size:1.02rem;
  box-shadow:3px 3px 0 #000;
}
:root[data-theme="zelda"] .journal li.lvl-info{border-left-color:var(--z-green)}
:root[data-theme="zelda"] .journal li.lvl-warn{border-left-color:var(--z-gold)}
:root[data-theme="zelda"] .journal li.lvl-error{border-left-color:var(--z-red)}
:root[data-theme="zelda"] .journal .msg{color:var(--z-cream)}
:root[data-theme="zelda"] .empty-state{
  font-size:1.1rem;color:var(--z-cream);text-shadow:2px 2px 0 #000;
  /* Tapis vert pointillé de la boutique, frangé d'or terne. */
  background:radial-gradient(circle,#4f9a2a 0 1px,transparent 1.6px) 0 0/6px 6px,#143a0f;
  border:4px dotted #c8b22a;box-shadow:0 0 0 2px #000,4px 4px 0 2px #000;
}
:root[data-theme="zelda"] .empty-state::before{
  content:"♡";display:block;width:max-content;margin:0 auto .4rem;font-family:var(--z-sym);font-size:1.8rem;line-height:1;
  color:var(--z-red);animation:z-beat 1.4s steps(1,end) infinite;
}
:root[data-theme="zelda"] .skeleton-card{border-image:var(--z-f-green) 3 / 6px stretch}
:root[data-theme="zelda"] .skeleton-line{border-radius:0}
:root[data-theme="zelda"] .skeleton{
  background:linear-gradient(100deg,#0c0c0c 30%,#16300f 50%,#0c0c0c 70%);background-size:250% 100%;
}

/* ---------- Menu de choix du thème : panneau or, sélection en anneau vert ---------- */
:root[data-theme="zelda"] #theme-menu{padding:.4rem;gap:.2rem}
:root[data-theme="zelda"] #theme-menu button{
  font-family:var(--z-font);font-weight:400;font-size:1.1rem;letter-spacing:.02em;text-transform:none;
  color:var(--z-cream);background:transparent;border:2px solid transparent;border-radius:0;
  box-shadow:none;transform:none;
}
:root[data-theme="zelda"] #theme-menu button:hover{background:#10260f;color:var(--z-lime);border-color:var(--z-green);box-shadow:none}
:root[data-theme="zelda"] #theme-menu button[aria-checked="true"]{
  background:#000;color:var(--z-lime);border-color:var(--z-lime);box-shadow:0 0 0 2px #000,0 0 0 4px var(--z-green);margin:2px 4px;
}

/* ---------- Animations (toutes coupées en mouvement réduit) ---------- */
@keyframes z-beat{0%,100%{transform:scale(1)}60%{transform:scale(1.12)}}
@keyframes z-blink{0%,55%{opacity:1}56%,100%{opacity:0}}

/* ---------- Écrans moyens : on libère la place du HUD (il ne tient qu'au-delà de 1100 px) ---------- */
:root[data-theme="zelda"] nav .brand,
:root[data-theme="zelda"] nav a.nav-link{white-space:nowrap}
@media (max-width:1100px){
  :root[data-theme="zelda"] nav .spacer::before,
  :root[data-theme="zelda"] nav .spacer::after{display:none}
}
/* Tablette : si la barre passe sur deux rangées, les boutons restent à droite. */
@media (min-width:641px){
  :root[data-theme="zelda"] nav #theme-toggle{margin-left:auto}
}

/* ---------- Mobile ---------- */
@media (max-width:640px){
  :root[data-theme="zelda"] body::before{border-width:4px;border-image-width:4px}
  :root[data-theme="zelda"] h1{font-size:.75rem}
  :root[data-theme="zelda"] h2{font-size:.68rem}
  :root[data-theme="zelda"] nav .brand::after{font-size:.66rem}
  :root[data-theme="zelda"] nav a.nav-link{font-size:1rem;padding:.5rem .4rem;letter-spacing:.04em}
  :root[data-theme="zelda"] nav a.nav-link.active{margin:0 2px}
  :root[data-theme="zelda"] details.section > summary{font-size:.6rem}
  :root[data-theme="zelda"] .poster-card .card-title{font-size:.98rem}
  :root[data-theme="zelda"] .poster-card .poster-wrap{margin:4px 4px 0}
  :root[data-theme="zelda"] .poster-card .overlay{top:.75rem;left:.75rem;right:2.8rem}
  :root[data-theme="zelda"] .poster-card .remove-form{top:.65rem;right:.65rem}
}

@media (prefers-reduced-motion:reduce){
  :root[data-theme="zelda"] h1::after,
  :root[data-theme="zelda"] nav .spacer::after,
  :root[data-theme="zelda"] .empty-state::before,
  :root[data-theme="zelda"] .badge::before,
  :root[data-theme="zelda"] nav a.nav-link.active::before,
  :root[data-theme="zelda"] .poster-card .card-title::before{animation:none!important}
  :root[data-theme="zelda"] button:active,
  :root[data-theme="zelda"] a.btn:active,
  :root[data-theme="zelda"] .grid a.card:hover{transform:none}
}
