/* Theme TRON : la Grid de Tron: Legacy. Noir bleute, sol quadrille en
   perspective, traits de lumiere cyan, angles coupes. Purement visuel : chaque
   regle est bornee a :root[data-theme="tron"], le balisage et le comportement
   des pages sont identiques aux autres themes.
   Palette : cyan #19e3ff (lignes, texte actif, halos) ; orange Clu #ff7a18
   reserve au danger et aux alertes ; fond #02060c.
   Polices (registre NICOFLIX_THEMES, champ « polices ») : Orbitron (titres,
   large et fin) et Rajdhani (corps), avec repli systeme.
   Angles coupes : clip-path exact (deux coins, haut-gauche et bas-droite). Il
   rogne aussi les ombres exterieures : le halo de ces elements est donc
   interieur (inset), et la diagonale coupee est retracee par un degrade. */

:root[data-theme="tron"]{
  color-scheme:dark;
  --tr-cyan:#19e3ff; --tr-cyan-rgb:25,227,255; --tr-ice:#eaffff; --tr-clu:#ff7a18;
  --tr-title:"Orbitron","Eurostile","Bank Gothic","Segoe UI",Arial,sans-serif;
  --tr-body:"Rajdhani","Exo 2","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;

  --bg:#02060c; --bg-soft:#040c14;
  --surface:#06121c; --surface-2:#0a1c2b; --surface-hover:#0e2a3d;
  --border:rgba(25,227,255,.5); --border-soft:rgba(25,227,255,.24);
  --text:#d9f7ff; --text-dim:#8ecfe0; --text-faint:#6aa6b8;
  --accent:#19e3ff; --accent-hover:#7df0ff; --accent-dim:#0a8fa8;
  --accent-soft:rgba(25,227,255,.12);
  --danger:#ff7a18; --danger-hover:#ff9a4d; --danger-soft:rgba(255,122,24,.14);
  --success:#3dffc4; --success-soft:rgba(61,255,196,.12);
  --warning:#ffe14d; --warning-soft:rgba(255,225,77,.12);
  --purple:#b39bff; --purple-soft:rgba(179,155,255,.14);
  --radius-sm:0; --radius:0; --radius-lg:0;
  --shadow:0 0 22px rgba(25,227,255,.32);
  --shadow-sm:0 0 8px rgba(25,227,255,.16);
  --nav-bg:rgba(2,6,12,.88);
}

/* ---------- Fond : nuit bleutee et sol de la Grid ---------- */
:root[data-theme="tron"] body{
  font-family:var(--tr-body);font-weight:500;letter-spacing:.012em;
  background:
    radial-gradient(ellipse 90% 34% at 50% 100%,rgba(25,227,255,.13),transparent 72%),
    linear-gradient(#02060c,#03091200 40%),
    #02060c;
  background-attachment:fixed;
}
/* Le sol : grille couchee en perspective, fixe, qui s'efface vers l'horizon. */
:root[data-theme="tron"] body::before{
  content:"";position:fixed;left:-90%;right:-90%;bottom:0;height:95vh;
  z-index:-1;pointer-events:none;
  background:
    linear-gradient(rgba(25,227,255,.55) 1px,transparent 1px) 0 0/80px 80px,
    linear-gradient(90deg,rgba(25,227,255,.55) 1px,transparent 1px) 0 0/80px 80px;
  transform:perspective(520px) rotateX(63deg);transform-origin:50% 100%;
  -webkit-mask-image:linear-gradient(to top,#000 0%,rgba(0,0,0,.7) 45%,transparent 92%);
          mask-image:linear-gradient(to top,#000 0%,rgba(0,0,0,.7) 45%,transparent 92%);
}
:root[data-theme="tron"] ::selection{background:var(--tr-cyan);color:#02060c}
:root[data-theme="tron"] *{scrollbar-color:var(--accent-dim) #02060c}

/* ---------- Titres : Orbitron, large et fin ---------- */
:root[data-theme="tron"] h1,
:root[data-theme="tron"] h2,
:root[data-theme="tron"] h3{font-family:var(--tr-title);text-transform:uppercase}
:root[data-theme="tron"] h1{
  font-size:1.45rem;font-weight:700;letter-spacing:.09em;color:var(--tr-ice);
  text-shadow:0 0 14px rgba(var(--tr-cyan-rgb),.65);
  padding-bottom:.8rem;
  background:
    linear-gradient(var(--tr-cyan),var(--tr-cyan)) left bottom/64px 2px no-repeat,
    linear-gradient(90deg,rgba(var(--tr-cyan-rgb),.45),transparent 75%) left bottom/100% 1px no-repeat;
}
:root[data-theme="tron"] h2{
  font-size:.98rem;font-weight:500;letter-spacing:.14em;color:var(--accent);
  text-shadow:0 0 10px rgba(var(--tr-cyan-rgb),.4);
}
:root[data-theme="tron"] h2::before{content:"◈ ";font-size:.85em;color:var(--tr-cyan)}
:root[data-theme="tron"] h3{font-size:.9rem;font-weight:500;letter-spacing:.12em;color:var(--text)}
:root[data-theme="tron"] a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}
:root[data-theme="tron"] a:hover{color:var(--tr-ice);text-shadow:0 0 8px rgba(var(--tr-cyan-rgb),.7)}

/* ---------- Barre de navigation : trait de lumiere qui court sur le bord ---------- */
:root[data-theme="tron"] nav{
  border-bottom:1px solid var(--border-soft);
  box-shadow:0 0 22px rgba(var(--tr-cyan-rgb),.14);
}
:root[data-theme="tron"] nav::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;pointer-events:none;
  background:
    linear-gradient(90deg,transparent 0,transparent 42%,var(--tr-ice) 50%,transparent 58%,transparent 100%) 100% 0/200% 100% no-repeat,
    linear-gradient(90deg,rgba(var(--tr-cyan-rgb),.15),rgba(var(--tr-cyan-rgb),.7) 50%,rgba(var(--tr-cyan-rgb),.15));
  animation:tr-run 7s linear infinite;
}
:root[data-theme="tron"] nav .brand{
  position:relative;isolation:isolate;padding-left:.45rem;
  font-family:var(--tr-title);font-weight:900;font-size:.98rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--tr-ice);
  text-shadow:0 0 10px rgba(var(--tr-cyan-rgb),.8);
}
/* Disque d'identite derriere la marque : anneau dont un arc tourne, halo discret. */
:root[data-theme="tron"] nav .brand::before{
  content:"";position:absolute;z-index:-1;left:-.25rem;top:50%;
  width:2.3rem;height:2.3rem;margin-top:-1.15rem;border-radius:50%;pointer-events:none;
  background:conic-gradient(from 0deg,rgba(var(--tr-cyan-rgb),.12) 0 55%,var(--tr-cyan) 100%);
  -webkit-mask:radial-gradient(circle,transparent 62%,#000 65%);
          mask:radial-gradient(circle,transparent 62%,#000 65%);
  animation:tr-spin 9s linear infinite;
}
:root[data-theme="tron"] nav .brand::after{
  content:"";position:absolute;z-index:-1;left:-.25rem;top:50%;
  width:2.3rem;height:2.3rem;margin-top:-1.15rem;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,rgba(var(--tr-cyan-rgb),.22),transparent 68%);
}
:root[data-theme="tron"] nav a.nav-link{
  font-weight:600;font-size:.95rem;text-transform:uppercase;letter-spacing:.1em;
  border:1px solid transparent;
}
:root[data-theme="tron"] nav a.nav-link:hover{
  color:var(--tr-ice);background:var(--accent-soft);border-color:var(--border-soft);
}
:root[data-theme="tron"] nav a.nav-link.active{
  color:var(--accent);background:linear-gradient(var(--accent-soft),rgba(var(--tr-cyan-rgb),.04));
  border-color:var(--border);text-shadow:0 0 8px rgba(var(--tr-cyan-rgb),.7);
  box-shadow:inset 0 -2px 0 var(--tr-cyan),0 0 12px rgba(var(--tr-cyan-rgb),.25);
}
:root[data-theme="tron"] nav #theme-toggle{font-size:1.05rem;line-height:1;color:var(--accent)}

/* ---------- Panneaux : bordure lumineuse et coins coupes ---------- */
:root[data-theme="tron"] .card:not(.poster-card),
:root[data-theme="tron"] details.section{
  --c:12px;
  border:1px solid var(--border-soft);
  box-shadow:inset 0 0 22px rgba(var(--tr-cyan-rgb),.07);
  clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);
  background-image:
    linear-gradient(to bottom right,transparent 50%,var(--tr-cyan) 50%,var(--tr-cyan) calc(50% + 1.5px),transparent calc(50% + 1.5px)),
    linear-gradient(to top left,transparent 50%,var(--tr-cyan) 50%,var(--tr-cyan) calc(50% + 1.5px),transparent calc(50% + 1.5px));
  background-size:12px 12px,12px 12px;
  background-position:left top,right bottom;
  background-repeat:no-repeat;
}
:root[data-theme="tron"] details.section > summary{
  font-family:var(--tr-title);font-weight:500;font-size:.92rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--text);
}
:root[data-theme="tron"] details.section > summary:hover{background:var(--accent-soft)}
:root[data-theme="tron"] details.section[open] > summary{
  background:linear-gradient(90deg,rgba(var(--tr-cyan-rgb),.14),transparent 75%);
  border-bottom-color:var(--border-soft);
}
:root[data-theme="tron"] details.section > summary .chevron{color:var(--accent)}
:root[data-theme="tron"] details.section > summary .count{
  color:var(--accent);background:transparent;border-color:var(--border);border-radius:0;
  font-family:var(--tr-body);
}

/* ---------- Affiches : cadre « circuit » et halo qui s'intensifie ---------- */
:root[data-theme="tron"] .poster-card{
  border:1px solid var(--border-soft);
  clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);
  transition:transform .15s,box-shadow .2s,border-color .2s;
}
/* Equerres lumineuses (haut-droite, bas-gauche) et pistes de circuit. */
:root[data-theme="tron"] .poster-card::before{
  content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:
    linear-gradient(var(--tr-cyan),var(--tr-cyan)) right top/18px 2px no-repeat,
    linear-gradient(var(--tr-cyan),var(--tr-cyan)) right top/2px 18px no-repeat,
    linear-gradient(var(--tr-cyan),var(--tr-cyan)) left bottom/18px 2px no-repeat,
    linear-gradient(var(--tr-cyan),var(--tr-cyan)) left bottom/2px 18px no-repeat;
  filter:drop-shadow(0 0 3px rgba(var(--tr-cyan-rgb),.8));
  transition:background-size .25s ease,box-shadow .25s ease;
}
:root[data-theme="tron"] .poster-card::after{
  content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:
    linear-gradient(to bottom right,transparent 50%,var(--tr-cyan) 50%,var(--tr-cyan) calc(50% + 1.5px),transparent calc(50% + 1.5px)) left top/12px 12px no-repeat,
    linear-gradient(to top left,transparent 50%,var(--tr-cyan) 50%,var(--tr-cyan) calc(50% + 1.5px),transparent calc(50% + 1.5px)) right bottom/12px 12px no-repeat,
    linear-gradient(90deg,rgba(var(--tr-cyan-rgb),.65),transparent) 14px 0/34% 1px no-repeat,
    radial-gradient(circle,var(--tr-ice) 0 1.5px,transparent 2px) calc(14px + 34%) -1.5px/5px 5px no-repeat,
    linear-gradient(270deg,rgba(var(--tr-cyan-rgb),.65),transparent) right 14px bottom 0/34% 1px no-repeat,
    radial-gradient(circle,var(--tr-ice) 0 1.5px,transparent 2px) right calc(14px + 34%) bottom -1.5px/5px 5px no-repeat;
  opacity:.7;transition:opacity .25s;
}
:root[data-theme="tron"] .grid a.card:hover,
:root[data-theme="tron"] .poster-card:hover{
  border-color:var(--tr-cyan);
}
:root[data-theme="tron"] .grid a.card:not(.poster-card):hover{
  box-shadow:inset 0 0 26px rgba(var(--tr-cyan-rgb),.3)}
:root[data-theme="tron"] .poster-card:hover::before{
  background-size:34px 2px,2px 34px,34px 2px,2px 34px;
  box-shadow:inset 0 0 0 1px rgba(var(--tr-cyan-rgb),.6),inset 0 0 26px rgba(var(--tr-cyan-rgb),.5);
}
:root[data-theme="tron"] .poster-card:hover::after{opacity:1}
:root[data-theme="tron"] .poster-card .poster-wrap{background:var(--surface-2)}
:root[data-theme="tron"] .poster-card .card-title{color:var(--tr-ice);font-weight:700;letter-spacing:.02em}
:root[data-theme="tron"] .poster-card .card-meta{color:var(--text-dim);font-weight:600}
:root[data-theme="tron"] .grid a.card .poster-fallback,
:root[data-theme="tron"] .poster-fallback{color:var(--accent);text-shadow:0 0 12px rgba(var(--tr-cyan-rgb),.7)}
:root[data-theme="tron"] .poster-card .overlay .badge{
  background:rgba(2,6,12,.88);color:var(--accent);
  border-color:rgba(var(--tr-cyan-rgb),.5);
}
:root[data-theme="tron"] .poster-card .overlay .badge.s-warn{color:var(--warning)}
:root[data-theme="tron"] .poster-card .remove-form{z-index:3}

/* ---------- Champs ---------- */
:root[data-theme="tron"] label{
  font-family:var(--tr-title);font-weight:500;font-size:.72rem;
  text-transform:uppercase;letter-spacing:.14em;color:var(--text-dim);
}
:root[data-theme="tron"] input,
:root[data-theme="tron"] select,
:root[data-theme="tron"] textarea{
  font-family:var(--tr-body);font-weight:600;font-size:1rem;
  background:#030c15;color:var(--tr-ice);caret-color:var(--tr-cyan);
  border:1px solid var(--border-soft);border-left:2px solid var(--tr-cyan);border-radius:0;
  box-shadow:inset 0 0 12px rgba(var(--tr-cyan-rgb),.06);
}
:root[data-theme="tron"] input::placeholder{color:var(--text-faint)}
:root[data-theme="tron"] input:focus,
:root[data-theme="tron"] select:focus,
:root[data-theme="tron"] textarea:focus{
  border-color:var(--tr-cyan);
  box-shadow:0 0 0 1px var(--tr-cyan),0 0 16px rgba(var(--tr-cyan-rgb),.45),inset 0 0 12px rgba(var(--tr-cyan-rgb),.1);
}

/* ---------- Boutons : contour neon qui se remplit au survol ---------- */
:root[data-theme="tron"] button,
:root[data-theme="tron"] a.btn{
  --tr-line:var(--tr-cyan); --tr-fill:var(--tr-cyan);
  font-family:var(--tr-body);font-weight:700;font-size:.95rem;
  text-transform:uppercase;letter-spacing:.12em;
  background-color:rgba(var(--tr-cyan-rgb),.06);color:var(--accent);
  border:1px solid var(--tr-line);border-radius:0;
  box-shadow:inset 0 0 12px rgba(var(--tr-cyan-rgb),.3);
  text-shadow:0 0 8px rgba(var(--tr-cyan-rgb),.5);
  clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);
  background-image:
    linear-gradient(to bottom right,transparent 50%,var(--tr-line) 50%,var(--tr-line) calc(50% + 1.5px),transparent calc(50% + 1.5px)),
    linear-gradient(to top left,transparent 50%,var(--tr-line) 50%,var(--tr-line) calc(50% + 1.5px),transparent calc(50% + 1.5px)),
    linear-gradient(var(--tr-fill),var(--tr-fill));
  background-size:8px 8px,8px 8px,0% 100%;
  background-position:left top,right bottom,left center;
  background-repeat:no-repeat;
  transition:background-size .28s ease,color .2s,box-shadow .2s,text-shadow .2s;
}
:root[data-theme="tron"] button:hover,
:root[data-theme="tron"] a.btn:hover{
  background-color:rgba(var(--tr-cyan-rgb),.06);
  background-size:8px 8px,8px 8px,100% 100%;
  color:#02060c;text-shadow:none;
  box-shadow:inset 0 0 14px rgba(255,255,255,.45);
}
:root[data-theme="tron"] button:focus-visible,
:root[data-theme="tron"] a.btn:focus-visible{outline:2px solid var(--tr-ice);outline-offset:-4px}
/* Fantome : contour discret, pas de remplissage plein. */
:root[data-theme="tron"] button.btn-ghost{
  --tr-line:rgba(25,227,255,.5);--tr-fill:rgba(25,227,255,.16);
  color:var(--text-dim);box-shadow:none;text-shadow:none;
}
:root[data-theme="tron"] button.btn-ghost:hover{
  color:var(--tr-ice);box-shadow:inset 0 0 12px rgba(var(--tr-cyan-rgb),.4);
  text-shadow:0 0 8px rgba(var(--tr-cyan-rgb),.7);
}
/* Danger : orange Clu. */
:root[data-theme="tron"] button.btn-danger,
:root[data-theme="tron"] button.btn-remove{
  --tr-line:var(--danger);--tr-fill:var(--danger);
  color:var(--danger);background-color:rgba(255,122,24,.07);
  box-shadow:inset 0 0 12px rgba(255,122,24,.3);
  text-shadow:0 0 8px rgba(255,122,24,.5);
}
:root[data-theme="tron"] button.btn-danger:hover,
:root[data-theme="tron"] button.btn-remove:hover{
  background-color:rgba(255,122,24,.07);color:#0a0300;box-shadow:inset 0 0 14px rgba(255,255,255,.4);
}
:root[data-theme="tron"] .poster-card button.btn-remove{
  --tr-line:var(--danger);
  clip-path:none;background-image:none;background-color:rgba(2,6,12,.88);
  border-color:rgba(255,122,24,.7);color:var(--danger);letter-spacing:0;
}
:root[data-theme="tron"] .poster-card button.btn-remove:hover{background-color:var(--danger);color:#0a0300}
:root[data-theme="tron"] button.btn-mini{
  clip-path:none;background:transparent;border:none;box-shadow:none;text-shadow:none;
  color:var(--text-faint);letter-spacing:0;
}
:root[data-theme="tron"] button.btn-mini:hover{background:transparent;color:var(--danger);box-shadow:none}
:root[data-theme="tron"] button:disabled,
:root[data-theme="tron"] button:disabled:hover{
  --tr-line:rgba(25,227,255,.3);
  background-color:rgba(var(--tr-cyan-rgb),.03);background-size:8px 8px,8px 8px,0% 100%;
  color:var(--text-faint);border-style:dashed;border-color:var(--border-soft);
  box-shadow:none;text-shadow:none;
}
/* Interrupteur : rail rectangulaire, curseur carre lumineux. */
:root[data-theme="tron"] button.switch-toggle,
:root[data-theme="tron"] button.switch-toggle:hover{
  clip-path:none;background:transparent;border:none;box-shadow:none;text-shadow:none;
  color:var(--text-dim);letter-spacing:.06em;
}
:root[data-theme="tron"] .switch-track{
  border-radius:0;background:#030c15;border-color:var(--border);
}
:root[data-theme="tron"] .switch-thumb{border-radius:0;background:var(--text-faint)}
:root[data-theme="tron"] button.switch-toggle[aria-checked="true"] .switch-track{
  background:rgba(var(--tr-cyan-rgb),.16);border-color:var(--tr-cyan);
}
:root[data-theme="tron"] button.switch-toggle[aria-checked="true"] .switch-thumb{
  background:var(--tr-cyan);box-shadow:0 0 10px var(--tr-cyan);
}
:root[data-theme="tron"] button.switch-toggle:focus-visible{outline:2px solid var(--tr-cyan);border-radius:0}

/* ---------- Menu de choix du theme ---------- */
:root[data-theme="tron"] #theme-menu{
  background:rgba(4,12,20,.97);border:1px solid var(--border);
  box-shadow:0 0 22px rgba(var(--tr-cyan-rgb),.35),inset 0 0 18px rgba(var(--tr-cyan-rgb),.06);
}
:root[data-theme="tron"] #theme-menu button{
  clip-path:none;background:transparent;background-image:none;box-shadow:none;text-shadow:none;
  border:1px solid transparent;border-left:2px solid transparent;color:var(--text);
  font-weight:600;letter-spacing:.06em;
}
:root[data-theme="tron"] #theme-menu button:hover{
  background:var(--accent-soft);color:var(--tr-ice);border-left-color:var(--tr-cyan);
  box-shadow:none;
}
:root[data-theme="tron"] #theme-menu button[aria-checked="true"]{
  background:rgba(var(--tr-cyan-rgb),.18);color:var(--accent);
  border-color:var(--border-soft);border-left-color:var(--tr-cyan);
  text-shadow:0 0 8px rgba(var(--tr-cyan-rgb),.6);
}

/* ---------- Badges : coins coupes, contour a la couleur du statut ---------- */
:root[data-theme="tron"] .badge{
  border-radius:0;font-family:var(--tr-body);font-weight:700;letter-spacing:.1em;
  border-color:color-mix(in srgb,currentColor 50%,transparent);
  clip-path:polygon(5px 0,100% 0,100% calc(100% - 5px),calc(100% - 5px) 100%,0 100%,0 5px);
  background-image:
    linear-gradient(to bottom right,transparent 50%,currentColor 50%,currentColor calc(50% + 1.5px),transparent calc(50% + 1.5px)),
    linear-gradient(to top left,transparent 50%,currentColor 50%,currentColor calc(50% + 1.5px),transparent calc(50% + 1.5px));
  background-size:5px 5px,5px 5px;background-position:left top,right bottom;background-repeat:no-repeat;
}
:root[data-theme="tron"] .badge::before{border-radius:0;box-shadow:0 0 6px currentColor}
:root[data-theme="tron"] .s-searching,
:root[data-theme="tron"] .s-downloading,
:root[data-theme="tron"] .s-validating,
:root[data-theme="tron"] .s-completed,
:root[data-theme="tron"] .s-failed,
:root[data-theme="tron"] .s-needs_review,
:root[data-theme="tron"] .s-waiting_space,
:root[data-theme="tron"] .s-waiting_approval,
:root[data-theme="tron"] .s-info,
:root[data-theme="tron"] .s-warn,
:root[data-theme="tron"] .s-error{
  border-color:color-mix(in srgb,currentColor 50%,transparent);
}
:root[data-theme="tron"] .s-needs_review,
:root[data-theme="tron"] .s-waiting_space,
:root[data-theme="tron"] .s-waiting_approval{background-color:var(--warning-soft);color:var(--warning)}
:root[data-theme="tron"] .s-searching::before,
:root[data-theme="tron"] .s-downloading::before,
:root[data-theme="tron"] .s-validating::before{animation:tr-pulse 1.4s ease-in-out infinite}
:root[data-theme="tron"] .chips .badge{border-radius:0}
:root[data-theme="tron"] .chips a:hover .badge{border-color:var(--tr-cyan);box-shadow:0 0 10px rgba(var(--tr-cyan-rgb),.4)}
:root[data-theme="tron"] .id-num{color:var(--accent);font-family:var(--tr-title);font-size:.8em}

/* ---------- Tableaux ---------- */
:root[data-theme="tron"] .table-wrap,
:root[data-theme="tron"] table{
  border:1px solid var(--border-soft);
  box-shadow:inset 0 0 22px rgba(var(--tr-cyan-rgb),.04),0 0 14px rgba(var(--tr-cyan-rgb),.1);
}
:root[data-theme="tron"] .table-wrap table{border:none;box-shadow:none}
:root[data-theme="tron"] th{
  font-family:var(--tr-title);font-weight:500;font-size:.68rem;letter-spacing:.14em;
  color:var(--accent);background:linear-gradient(rgba(var(--tr-cyan-rgb),.14),rgba(var(--tr-cyan-rgb),.05));
  border-bottom:1px solid var(--border);
}
:root[data-theme="tron"] td{border-bottom-color:rgba(var(--tr-cyan-rgb),.14)}
:root[data-theme="tron"] tbody tr:hover{background:rgba(var(--tr-cyan-rgb),.06)}
:root[data-theme="tron"] tr.row-link:hover{
  background:rgba(var(--tr-cyan-rgb),.13);box-shadow:inset 3px 0 0 var(--tr-cyan);
}
:root[data-theme="tron"] td small{color:var(--text-dim)}
:root[data-theme="tron"] table code{color:var(--accent)}

/* ---------- Alertes, journal, etats vides ---------- */
:root[data-theme="tron"] .warn{
  color:var(--text);background:var(--danger-soft);
  border:1px solid rgba(255,122,24,.6);border-left:4px solid var(--danger);
  box-shadow:inset 0 0 22px rgba(255,122,24,.08),0 0 14px rgba(255,122,24,.22);
}
:root[data-theme="tron"] .warn strong{
  font-family:var(--tr-title);font-weight:700;font-size:.85em;
  text-transform:uppercase;letter-spacing:.1em;
}
:root[data-theme="tron"] .journal li{
  background:rgba(var(--tr-cyan-rgb),.04);border-color:var(--border-soft);
  border-left-width:3px;
}
:root[data-theme="tron"] .journal .msg{color:var(--text)}
:root[data-theme="tron"] .journal time{color:var(--text-dim);font-weight:600}
:root[data-theme="tron"] .empty-state{
  color:var(--text-dim);font-weight:600;letter-spacing:.06em;
  border:1px dashed var(--border-soft);background:rgba(var(--tr-cyan-rgb),.03);
}
:root[data-theme="tron"] .empty-state::before{
  content:"// grille vide";display:block;margin-bottom:.35rem;
  font-family:var(--tr-title);font-size:.68rem;font-weight:500;
  text-transform:uppercase;letter-spacing:.2em;color:var(--accent);
}
:root[data-theme="tron"] .skeleton{
  background:linear-gradient(100deg,var(--surface-2) 30%,rgba(25,227,255,.16) 50%,var(--surface-2) 70%);
  background-size:250% 100%;
}

/* ---------- Animations ---------- */
@keyframes tr-run{from{background-position:100% 0,0 0}to{background-position:0% 0,0 0}}
@keyframes tr-spin{to{transform:rotate(360deg)}}
@keyframes tr-pulse{0%,100%{opacity:.4}50%{opacity:1}}

/* ---------- Mobile : grille allegee, nav compacte ---------- */
@media (max-width:640px){
  :root[data-theme="tron"] body::before{
    height:52vh;opacity:.85;
    background:
      linear-gradient(rgba(25,227,255,.4) 1px,transparent 1px) 0 0/56px 56px,
      linear-gradient(90deg,rgba(25,227,255,.4) 1px,transparent 1px) 0 0/56px 56px;
    transform:perspective(320px) rotateX(62deg);
  }
  :root[data-theme="tron"] h1{font-size:1.15rem;letter-spacing:.06em}
  :root[data-theme="tron"] h2{font-size:.88rem}
  :root[data-theme="tron"] nav .brand{font-size:.9rem;letter-spacing:.14em}
  :root[data-theme="tron"] nav a.nav-link{font-size:.85rem;letter-spacing:.06em;padding:.55rem .55rem}
  :root[data-theme="tron"] button,
  :root[data-theme="tron"] a.btn{letter-spacing:.08em}
}

@media (prefers-reduced-motion:reduce){
  :root[data-theme="tron"] nav::after,
  :root[data-theme="tron"] nav .brand::before,
  :root[data-theme="tron"] .badge::before{animation:none!important}
  :root[data-theme="tron"] nav::after{
    background:linear-gradient(90deg,rgba(var(--tr-cyan-rgb),.15),rgba(var(--tr-cyan-rgb),.7) 50%,rgba(var(--tr-cyan-rgb),.15));
  }
  :root[data-theme="tron"] .poster-card,
  :root[data-theme="tron"] .poster-card::before,
  :root[data-theme="tron"] .poster-card::after,
  :root[data-theme="tron"] button,
  :root[data-theme="tron"] a.btn{transition:none!important}
}
