/* Néomuna — ton de la page : la ville de néon (cyan et rose), le vert du filobscur, l'orange de la
   Légion de l'Ombre, le violet du Voile, le magenta de l'Archinuage et le rouge des Vex. Ambiance par
   section (data-mood sur <body> : neon, strider, legion, strand, ark, veil, voir js/rituals.js).
   Héros à titre parasité, bandeau des Infos civiles, trames de balayage, étapes, portraits, missions,
   Foule-nuages, journal d'Osiris, doctrines, textes de légende, couleurs du plan et pastilles.
   Les deux mini-jeux sont dans css/games.css. Polices : Inter et Cormorant (site), et la police à
   chasse fixe du système pour les affichages de terminal. */

.neomuna {
  --neon: #3fe8ff;
  --neon-hi: #d6fbff;
  --pink: #ff4fd8;
  --pink-hi: #ffd8f6;
  --strand: #4dff8f;
  --strand-hi: #d9ffe6;
  --legion: #ffad42;
  --legion-hi: #ffe7c4;
  --veil: #9d84ff;
  --veil-hi: #e7e0ff;
  --ark: #ff6bf0;
  --ark-hi: #ffe0fb;
  --vex: #ff5b5b;
  --vex-hi: #ffd8d8;
  --mono: 'Cascadia Mono', 'Consolas', 'SF Mono', 'Menlo', ui-monospace, monospace;
  --page-accent: var(--neon);
  --page-accent-hi: var(--neon-hi);
}
.neomuna[data-mood="strider"] { --page-accent: var(--pink); --page-accent-hi: var(--pink-hi); }
.neomuna[data-mood="legion"] { --page-accent: var(--legion); --page-accent-hi: var(--legion-hi); }
.neomuna[data-mood="strand"] { --page-accent: var(--strand); --page-accent-hi: var(--strand-hi); }
.neomuna[data-mood="ark"] { --page-accent: var(--ark); --page-accent-hi: var(--ark-hi); }
.neomuna[data-mood="veil"] { --page-accent: var(--veil); --page-accent-hi: var(--veil-hi); }
.neomuna ::selection { background: rgba(255, 79, 216, .35); }
.neomuna { background: #05060f; }
.neomuna main { background: radial-gradient(ellipse 70% 16% at 85% 4%, rgba(63, 232, 255, .08), transparent 70%), radial-gradient(ellipse 55% 14% at 6% 26%, rgba(255, 79, 216, .07), transparent 70%); }
/* une trame de balayage très légère sur toute la page */
.neomuna main::after { content: ''; position: fixed; inset: 0; z-index: 50; pointer-events: none; background: repeating-linear-gradient(0deg, rgba(255, 255, 255, .018) 0 1px, transparent 1px 3px); mix-blend-mode: overlay; }
.neomuna .sec-title { transition: text-shadow .8s; text-shadow: 0 0 22px color-mix(in srgb, var(--page-accent) 45%, transparent), 0 0 2px color-mix(in srgb, var(--page-accent) 60%, transparent); }
.neomuna .kicker { color: var(--page-accent); font-family: var(--mono); letter-spacing: .16em; transition: color .6s; }
.neomuna .kicker svg { filter: drop-shadow(0 0 4px var(--page-accent)); }
.neomuna .tag { font-family: var(--mono); letter-spacing: .12em; color: var(--page-accent); transition: color .6s; }
.neomuna .regions li::before { background: var(--page-accent); box-shadow: 0 0 6px var(--page-accent); }
.neomuna .footer-crest { color: var(--neon); filter: drop-shadow(0 0 8px rgba(63, 232, 255, .6)); }
.neomuna .cap-kind { color: var(--pink); }
.neomuna .who li { font-family: var(--mono); letter-spacing: .06em; }
.neomuna .d-btn--solid { box-shadow: 0 0 22px color-mix(in srgb, var(--page-accent) 40%, transparent); }
@media (min-width: 1021px) { .neomuna .nav-menu a { padding: 8px 7px; letter-spacing: .08em; font-size: .7rem; white-space: nowrap; } }
@media (min-width: 1021px) and (max-width: 1400px) { .neomuna .brand span { display: none; } }

/* ---------- Héros ---------- */
.neomuna #motes { filter: hue-rotate(150deg) saturate(1.6); }
.hero-grid { position: absolute; left: -20%; right: -20%; bottom: 0; z-index: 4; height: 34%; pointer-events: none; opacity: .5;
  background: linear-gradient(90deg, rgba(63, 232, 255, .55) 1px, transparent 1px) 0 0 / 60px 100%, linear-gradient(0deg, rgba(255, 79, 216, .5) 1px, transparent 1px) 0 0 / 100% 40px;
  transform: perspective(380px) rotateX(62deg); transform-origin: 50% 100%;
  -webkit-mask-image: linear-gradient(0deg, #000 10%, transparent 90%); mask-image: linear-gradient(0deg, #000 10%, transparent 90%); animation: grid-run 4s linear infinite; }
@keyframes grid-run { to { background-position: 0 0, 0 40px; } }
.neomuna .brand svg { color: var(--neon); filter: drop-shadow(0 0 6px rgba(63, 232, 255, .7)); }
.neomuna .hero-title span:last-child { margin-top: .18em; font-size: .34em; font-weight: 500; letter-spacing: .22em; color: var(--neon-hi); text-shadow: 0 0 18px rgba(63, 232, 255, .7); }
.glitch { position: relative; display: inline-block; color: #fff; text-shadow: 0 0 10px rgba(63, 232, 255, .9), 0 0 34px rgba(255, 79, 216, .55); }
.glitch::before, .glitch::after { content: attr(data-text); position: absolute; left: 0; top: 0; width: 100%; overflow: hidden; pointer-events: none; }
.glitch::before { color: var(--neon); transform: translate(-2px, 0); clip-path: inset(10% 0 62% 0); animation: glitch-a 3.2s infinite steps(1); mix-blend-mode: screen; }
.glitch::after { color: var(--pink); transform: translate(2px, 0); clip-path: inset(58% 0 12% 0); animation: glitch-b 2.7s infinite steps(1); mix-blend-mode: screen; }
@keyframes glitch-a { 0%, 86%, 100% { transform: translate(-2px, 0); clip-path: inset(10% 0 62% 0); } 88% { transform: translate(-7px, -2px); clip-path: inset(30% 0 40% 0); } 92% { transform: translate(5px, 1px); clip-path: inset(70% 0 5% 0); } }
@keyframes glitch-b { 0%, 80%, 100% { transform: translate(2px, 0); clip-path: inset(58% 0 12% 0); } 83% { transform: translate(8px, 2px); clip-path: inset(5% 0 75% 0); } 90% { transform: translate(-5px, -1px); clip-path: inset(40% 0 35% 0); } }
.hero-fact { margin: 0; font-family: var(--mono); font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.hero-fact b { color: var(--neon-hi); text-shadow: 0 0 10px rgba(63, 232, 255, .8); }

/* ---------- Infos civiles ---------- */
.ticker { display: flex; align-items: stretch; border-top: 1px solid rgba(63, 232, 255, .35); border-bottom: 1px solid rgba(255, 79, 216, .35); background: linear-gradient(90deg, rgba(63, 232, 255, .1), rgba(5, 6, 15, .9) 30%, rgba(255, 79, 216, .08)); font-family: var(--mono); }
.ticker-label { flex: none; display: flex; align-items: center; gap: 10px; margin: 0; padding: 10px 16px; background: var(--pink); color: #12031a; font-size: .66rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.ticker-dot { width: 8px; height: 8px; border-radius: 50%; background: #12031a; animation: blink 1.2s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }
.ticker-window { position: relative; flex: 1; overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); }
.ticker-track { display: flex; width: max-content; animation: ticker 90s linear infinite; }
.ticker:hover .ticker-track, .ticker:focus-within .ticker-track { animation-play-state: paused; }
@keyframes ticker { to { transform: translateX(-50%); } }
.ticker-list { display: flex; margin: 0; padding: 0; list-style: none; }
.ticker-list li { flex: none; padding: 10px 28px; font-size: .78rem; line-height: 1.4; white-space: nowrap; color: var(--neon-hi); }
.ticker-list li::before { content: '▸ '; color: var(--pink); }

/* ---------- Sections ---------- */
.neomuna .steps, .neomuna .mission-steps { margin-bottom: clamp(30px, 4vw, 44px); }
.neomuna .duo + .duo, .neomuna .duo + .strider-cards, .neomuna .words-note + .testimonies, .neomuna .words-note + .quarters, .neomuna .testimonies + .quarters,
.neomuna .words-note + .duo, .neomuna .duo + .quarters, .neomuna .quarters + .testimonies, .neomuna .logs + .class-cards, .neomuna .words-note + .game,
.neomuna .game + .quarters, .neomuna .duo + .sub-title, .neomuna .steps + .quarters, .neomuna .duo + .steps { margin-top: clamp(30px, 4vw, 44px); }
.strider-sec { background: radial-gradient(ellipse 60% 22% at 82% 4%, rgba(255, 79, 216, .1), transparent 70%); }
.legion-sec { background: radial-gradient(ellipse 60% 22% at 16% 4%, rgba(255, 173, 66, .09), transparent 70%); }
.strand-sec { background: radial-gradient(ellipse 60% 24% at 80% 6%, rgba(77, 255, 143, .08), transparent 70%), radial-gradient(ellipse 50% 20% at 10% 60%, rgba(77, 255, 143, .05), transparent 70%); }
.ark-sec { background: radial-gradient(ellipse 60% 22% at 20% 4%, rgba(255, 107, 240, .09), transparent 70%), linear-gradient(180deg, transparent, rgba(63, 232, 255, .03) 50%, transparent); }
.veil-sec { background: radial-gradient(ellipse 60% 24% at 76% 6%, rgba(157, 132, 255, .1), transparent 70%); }
.secrets-sec { background: radial-gradient(ellipse 60% 45% at 30% 30%, color-mix(in srgb, var(--page-accent) 7%, transparent), transparent 70%); }
.lore-sec { background: radial-gradient(ellipse 60% 24% at 20% 8%, rgba(255, 107, 240, .06), transparent 70%); }
.neomuna .secrets-layout .games { gap: 28px; }
.neomuna .atlas-photo > a { position: absolute; inset: 0; }
.neomuna .quarter-photo > a { display: block; height: 100%; }
.neomuna .quarter-photo > a > img { width: 100%; height: 100%; object-fit: cover; }
.neomuna .quarter, .neomuna .atlas { transition: box-shadow .4s, border-color .4s; }
.neomuna .quarter:hover { border-color: color-mix(in srgb, var(--page-accent) 55%, transparent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--page-accent) 25%, transparent), 0 0 28px color-mix(in srgb, var(--page-accent) 18%, transparent); }
.words-note { margin: 12px 0 0; font-size: .74rem; font-style: italic; color: var(--muted); }
.sub-title { margin: 0 0 16px; font-family: var(--mono); font-size: .8rem; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--page-accent-hi); }
/* un filet de néon entre deux sections */
.neon-rule { --c: var(--pink); position: relative; height: 1px; margin: 0; border: 0; overflow: visible; background: linear-gradient(90deg, transparent, var(--c) 30%, #fff 50%, var(--c) 70%, transparent); box-shadow: 0 0 18px var(--c), 0 0 4px var(--c); }
.neon-rule--strand { --c: var(--strand); }
.neon-rule--veil { --c: var(--veil); }

/* ---------- Étapes ---------- */
.strider-steps .n { border-color: var(--pink); color: var(--pink-hi); }
.strand-steps .n { border-color: var(--strand); color: var(--strand-hi); }
.veil-steps .n { border-color: var(--veil); color: var(--veil-hi); }
.neomuna .steps .n { font-family: var(--mono); box-shadow: 0 0 10px color-mix(in srgb, var(--page-accent) 30%, transparent); }
@media (min-width: 1021px) { .neomuna .strider-steps { grid-template-columns: repeat(5, minmax(0, 1fr)); } }

/* ---------- Deux colonnes : un portrait et son texte ---------- */
.duo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); background: var(--panel-solid); border: 1px solid var(--line); }
.duo--flip { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); }
.duo--flip .duo-photo { order: 2; }
.duo-photo { position: relative; min-height: 380px; margin: 0; overflow: hidden; }
.duo-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; }
.duo .duo-photo > a { position: absolute; inset: 0; display: block; }
.duo-photo figcaption { position: absolute; left: 0; bottom: 0; padding: 6px 12px; background: rgba(5, 6, 15, .8); font-family: var(--mono); font-size: .6rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }
.duo-body { padding: clamp(22px, 3vw, 36px); }
.duo-body h3 { margin: 4px 0 14px; font-size: clamp(1.6rem, 3vw, 2.2rem); font-weight: 800; letter-spacing: .02em; text-transform: uppercase; color: var(--pearl); }
.duo-body > p:not(.tag) { margin: 0 0 14px; font-size: .95rem; line-height: 1.65; color: var(--muted); }
.duo-note { margin: 0; font-size: .86rem; line-height: 1.6; color: var(--muted); }
.duo-note .d-btn { margin: 4px 6px 0 0; }
.lore-lines { display: grid; gap: 8px; margin: 0 0 14px; padding: 0; list-style: none; }
.lore-lines li { padding-left: 12px; border-left: 2px solid var(--page-accent); }
.lore-lines q { quotes: '« ' ' »'; font-family: var(--font-lore); font-style: italic; font-size: 1.08rem; line-height: 1.38; color: #e9e6f5; }
.lore-lines small { display: block; margin-top: 2px; font-family: var(--mono); font-size: .62rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--page-accent-hi); }

/* ---------- Missions (cartes illustrées) ---------- */
.mission-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin: 0; padding: 0; list-style: none; }
.mission-step { position: relative; display: flex; flex-direction: column; border: 1px solid var(--line); background: var(--panel-solid); transition: border-color .3s, box-shadow .3s; }
.mission-step:hover { border-color: color-mix(in srgb, var(--page-accent) 60%, transparent); box-shadow: 0 0 24px color-mix(in srgb, var(--page-accent) 20%, transparent); }
.mission-step figure { position: relative; margin: 0; aspect-ratio: 16 / 9; overflow: hidden; }
.mission-step figure > a { display: block; height: 100%; }
.mission-step figure img { width: 100%; height: 100%; object-fit: cover; }
.mission-step > div { padding: 14px 16px 18px; }
.mission-step h3 { margin: 4px 0 8px; font-size: 1.02rem; font-weight: 800; letter-spacing: .03em; text-transform: uppercase; color: var(--pearl); }
.mission-step p:not(.tag) { margin: 0; font-size: .84rem; line-height: 1.58; color: var(--muted); }
.ark-sec .mission-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); }

/* ---------- Témoignages ---------- */
.testimonies { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.testimony { display: flex; flex-direction: column; margin: 0; padding: 20px 20px 16px; border: 1px solid var(--line); border-top: 2px solid var(--page-accent); background: var(--panel-solid); }
.testimony--neon { border-top-color: var(--neon); background: linear-gradient(180deg, rgba(63, 232, 255, .09), var(--panel-solid) 60%); box-shadow: inset 0 1px 0 rgba(63, 232, 255, .5); }
.testimony blockquote { margin: 0 0 14px; }
.testimony blockquote p { margin: 0; font-family: var(--font-lore); font-style: italic; font-size: 1.1rem; line-height: 1.42; color: #ece8f6; }
.testimony figcaption { margin-top: auto; padding-top: 10px; border-top: 1px solid var(--line); font-family: var(--mono); font-size: .62rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.testimony figcaption b { color: var(--page-accent-hi); }

/* ---------- Les Foule-nuages ---------- */
.strider-cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 0; padding: 0; list-style: none; }
.strider-card { position: relative; padding: 18px 16px 16px; border: 1px solid rgba(255, 79, 216, .2); background: radial-gradient(circle at 100% 0%, rgba(255, 79, 216, .12), transparent 55%), var(--panel-solid); }
.strider-card::before { content: ''; position: absolute; top: 14px; right: 14px; width: 18px; height: 3px; background: var(--pink); box-shadow: 0 0 10px var(--pink); }
.sc-race { margin: 0; font-family: var(--mono); font-size: .6rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--pink); }
.strider-card h3 { margin: 4px 0 0; font-size: 1.05rem; font-weight: 800; text-transform: uppercase; color: var(--pearl); }
.sc-title { margin: 2px 0 8px; font-family: var(--font-lore); font-style: italic; font-size: .98rem; color: var(--pink-hi); }
.strider-card p:last-child { margin: 0; font-size: .84rem; line-height: 1.55; color: var(--muted); }
.strider-card--fallen { border-color: rgba(255, 173, 66, .4); background: radial-gradient(circle at 100% 0%, rgba(255, 173, 66, .14), transparent 55%), var(--panel-solid); }
.strider-card--fallen .sc-race, .strider-card--fallen .sc-title { color: var(--legion-hi); }
.strider-card--fallen::before { background: var(--legion); box-shadow: 0 0 10px var(--legion); }
.strider-card--now { border-color: rgba(63, 232, 255, .5); background: radial-gradient(circle at 100% 0%, rgba(63, 232, 255, .16), transparent 55%), var(--panel-solid); }
.strider-card--now .sc-race, .strider-card--now .sc-title { color: var(--neon-hi); }
.strider-card--now::before { background: var(--neon); box-shadow: 0 0 10px var(--neon); animation: blink 1.6s steps(1) infinite; }

/* ---------- Le journal d'Osiris ---------- */
.logs { padding: clamp(22px, 3vw, 34px); border: 1px solid rgba(77, 255, 143, .3); background: linear-gradient(180deg, rgba(10, 40, 24, .5), var(--panel-solid)); }
.logs header h3 { margin: 4px 0 10px; font-size: clamp(1.4rem, 2.6vw, 1.9rem); font-weight: 800; text-transform: uppercase; color: var(--pearl); }
.logs header > p:not(.tag) { max-width: 780px; margin: 0 0 22px; font-size: .92rem; line-height: 1.6; color: var(--muted); }
.logs-cols { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.logs-cols blockquote { margin: 0; padding: 16px 18px; border-left: 2px solid var(--strand); background: rgba(3, 12, 8, .5); }
.logs-cols p { margin: 0 0 10px; font-family: var(--font-lore); font-style: italic; font-size: 1.02rem; line-height: 1.42; color: #e2f5e9; }
.logs-cols .lg-title { font-family: var(--mono); font-style: normal; font-size: .64rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--strand-hi); }

/* ---------- Les doctrines ---------- */
.class-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 0; padding: 0; list-style: none; }
.class-card { border: 1px solid rgba(77, 255, 143, .22); background: var(--panel-solid); }
.class-card figure { margin: 0; aspect-ratio: 16 / 9; overflow: hidden; }
.class-card figure > a { display: block; height: 100%; }
.class-card figure img { width: 100%; height: 100%; object-fit: cover; }
.class-card > div { padding: 14px 18px 18px; }
.class-card h3 { margin: 4px 0 8px; font-size: 1.15rem; font-weight: 800; text-transform: uppercase; color: var(--pearl); }
.cc-lore { margin: 0 0 8px; font-family: var(--font-lore); font-style: italic; font-size: 1.04rem; line-height: 1.4; color: var(--strand-hi); }
.class-card p:last-child { margin: 0; font-size: .84rem; line-height: 1.55; color: var(--muted); }

/* ---------- Armurerie ---------- */
.armory { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin: 0; padding: 0; list-style: none; }
.armory .item-card { margin: 0; }
.armory .item-flavor { font-size: .96rem; }
.armory .item-flavor span { display: block; margin-top: 10px; padding-top: 8px; border-top: 1px solid rgba(255, 255, 255, .08); font-family: var(--font-ui); font-style: normal; font-size: .8rem; line-height: 1.55; color: var(--muted); }
.item-shot { position: relative; margin: 0; aspect-ratio: 16 / 8; overflow: hidden; background: #0c0d16; }
.item-shot > a { display: block; height: 100%; }
.item-shot img { width: 100%; height: 100%; object-fit: cover; }

/* ---------- Textes de légende ---------- */
.lore-books { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; align-items: start; }
.lore-card { border: 1px solid var(--line); background: var(--panel-solid); }
.lore-card--wide { grid-column: span 2; border-color: rgba(255, 107, 240, .35); }
.lore-card .item-head { display: flex; align-items: center; gap: 12px; padding: 12px 14px; background: linear-gradient(90deg, rgba(63, 232, 255, .1), transparent); }
.lore-card .item-head img { flex: none; border: 1px solid rgba(255, 255, 255, .2); }
.lore-card .item-name { margin: 0; font-size: .92rem; font-weight: 800; text-transform: uppercase; color: var(--pearl); }
.lore-card .item-type { margin: 2px 0 0; font-family: var(--mono); font-size: .62rem; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.lore-flavor { margin: 0; padding: 12px 16px 0; font-family: var(--font-lore); font-style: italic; font-size: 1.04rem; line-height: 1.4; color: #ece8f6; }
.lore-flavor .spot--inline { margin: 0 0 0 6px; vertical-align: middle; }
.lore-card details { padding: 10px 16px 16px; }
.lore-card summary { cursor: pointer; font-family: var(--mono); font-size: .66rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--page-accent-hi); }
.lore-card details[open] summary { margin-bottom: 10px; }
.lore-card details p { margin: 0 0 10px; font-family: var(--font-lore); font-size: 1.02rem; line-height: 1.5; color: #e2dfee; }
.lore-card .lore-data { font-family: var(--mono); font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ark-hi); }

/* ---------- Divers ---------- */
.game-foot { margin: 10px 0 0; font-size: .72rem; font-style: italic; color: var(--muted); }
.game > .game-foot { margin: -8px 0 0; padding: 0 24px 18px; }
@media (min-width: 1021px) { .quarters--three { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.neomuna .game { border-color: color-mix(in srgb, var(--page-accent) 30%, var(--line)); box-shadow: 0 0 40px color-mix(in srgb, var(--page-accent) 8%, transparent); }
.neomuna .game-hud .hud-count { font-family: var(--mono); color: var(--page-accent); }

/* ---------- Plan (brique commune : css/components/depths.css) ---------- */
.neomuna .depths { aspect-ratio: 10 / 12; background: #04050c; }
.stratum--ciel { background: linear-gradient(180deg, #0a1030, #141640); }
.stratum--ville { background: linear-gradient(180deg, #160b26 0%, #120a22 60%, #0c0818 100%); }
.stratum--sous { background: linear-gradient(180deg, #0d0a1c 0%, #0b0818 100%); }
.stratum--reseau { background: linear-gradient(180deg, #03141c 0%, #031018 60%, #020a10 100%); }
.storm { fill: none; stroke: rgba(120, 170, 255, .35); stroke-width: 1; stroke-dasharray: 5 4; }
.skyline { fill: rgba(255, 79, 216, .07); stroke: rgba(255, 79, 216, .75); stroke-width: 1; filter: drop-shadow(0 0 2px rgba(255, 79, 216, .9)); }
.screen-line { stroke: rgba(63, 232, 255, .9); stroke-width: 1.2; filter: drop-shadow(0 0 3px rgba(63, 232, 255, .9)); }
.grid-line { stroke: rgba(63, 232, 255, .2); stroke-width: 1; }
.way-line { stroke: rgba(231, 235, 245, .3); }
.way-line--capsule, .way-line--convoi { stroke: rgba(255, 173, 66, .65); stroke-dasharray: 4 3; }
.way-line--voile { stroke: rgba(157, 132, 255, .8); stroke-dasharray: 2 4; stroke-linecap: round; }
.way-line--simulation { stroke: rgba(255, 107, 240, .75); stroke-dasharray: 1 4; stroke-linecap: round; }
.way-line--portail, .way-line--nexus { stroke: rgba(255, 91, 91, .7); stroke-dasharray: 3 3; }
.room-node--zone { color: #e9fbff; }
.room-node--city { color: var(--neon); }
.room-node--lost { color: var(--pink); }
.room-node--legion { color: var(--legion); }
.room-node--veil { color: var(--veil); }
.room-node--ark { color: var(--ark); }
.room-node--net { color: var(--vex); }
.neomuna .room-node.is-current i { box-shadow: 0 0 0 4px rgba(255, 255, 255, .18), 0 0 26px currentColor, 0 0 6px currentColor; }
.neomuna .room-label { text-shadow: 0 1px 6px rgba(0, 0, 0, .95), 0 0 2px rgba(0, 0, 0, .9); }
.neomuna .room-en, .neomuna .room-photo figcaption { font-family: var(--mono); font-style: normal; font-size: .72rem; letter-spacing: .06em; }
.neomuna .depths-count b { color: var(--neon-hi); }

/* ---------- Pastilles ---------- */
.spot[data-secret="clins"] { color: #e8fdff; border-color: rgba(63, 232, 255, .85); box-shadow: 0 0 12px rgba(63, 232, 255, .4); }
.spot[data-secret="coffres"] { color: #fff0d6; border-color: rgba(255, 173, 66, .95); }
.spot[data-secret="figurines"] { color: #ffe3f8; border-color: rgba(255, 79, 216, .95); box-shadow: 0 0 12px rgba(255, 79, 216, .45); }
.spot[data-secret="repeteurs"] { color: #e3ffef; border-color: rgba(77, 255, 143, .9); }
.spot[data-secret="archie"] { color: #fff7e0; border-color: rgba(255, 220, 140, .95); box-shadow: 0 0 12px rgba(255, 220, 140, .45); }
.spot[data-secret="mysteres"] { color: #ffe0e0; border-color: rgba(255, 91, 91, .95); box-shadow: 0 0 12px rgba(255, 91, 91, .45); }
.neomuna .spot.found { background: var(--neon-hi); border-color: var(--neon-hi); color: #05060f; box-shadow: 0 0 14px rgba(63, 232, 255, .7); }
.neomuna .spot-note { background: var(--neon-hi); font-family: var(--mono); }

@media (max-width: 1200px) {
  .strider-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .mission-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .logs-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1020px) {
  .duo, .duo--flip { grid-template-columns: minmax(0, 1fr); }
  .duo--flip .duo-photo { order: 0; }
  .duo-photo { min-height: 0; aspect-ratio: 16 / 10; }
  .testimonies, .lore-books, .class-cards { grid-template-columns: minmax(0, 1fr); }
  .lore-card--wide { grid-column: auto; }
  .ark-sec .mission-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .strider-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .neomuna .depths { aspect-ratio: 10 / 17; }
  .mission-steps, .ark-sec .mission-steps, .armory, .strider-cards, .logs-cols { grid-template-columns: minmax(0, 1fr); }
  .ticker-label { padding: 10px; font-size: .58rem; }
  .neomuna .hero-content { bottom: 150px; }
  .neomuna .hero-content .actions { gap: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-grid, .glitch::before, .glitch::after, .ticker-dot, .strider-card--now::before { animation: none; }
  .ticker-window { overflow-x: auto; }
  .ticker-track { animation: none; }
}
