:root{--ink:#2a1f1a;--ink-soft:#5a4a3e;--parchment:#f3e9d6;--parchment-deep:#e6d6b8;--gold:#c9a046;--gold-bright:#ffd27a;--crimson:#b0413e;--night:#16121c;--glass:#16121c9e;--glass-line:#ffe2b047;--text-on-glass:#f6ecd8;--display:"Cormorant Garamond", "Times New Roman", serif;--body:"Work Sans", system-ui, sans-serif;--accent:var(--gold-bright)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--night);color:var(--text-on-glass);font-family:var(--body);-webkit-font-smoothing:antialiased;overflow:hidden}button{font:inherit;cursor:pointer}kbd{font-family:var(--body);opacity:.85;border:1px solid;border-radius:4px;padding:.05em .45em;font-size:.75em}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.world-canvas{inset:0;position:fixed!important}.primary,.ghost,.nav{border:1px solid var(--glass-line);border-radius:999px;align-items:center;gap:.5em;padding:.6em 1.2em;text-decoration:none;transition:transform .15s,background .2s,border-color .2s;display:inline-flex}.primary{color:#22170e;background:linear-gradient(#e8c070,#b8862e);border-color:#f6dc9a;font-weight:600;box-shadow:0 4px 18px #c9a04659}.primary:hover{transform:translateY(-1px)}.ghost{background:var(--glass);color:var(--text-on-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.ghost:hover{border-color:var(--gold-bright)}.nav{background:var(--glass);width:2.6em;height:2.6em;color:var(--text-on-glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);justify-content:center;padding:0;font-size:1.2em}button:disabled{opacity:.35;cursor:default}.big{padding:.8em 1.8em;font-size:1.15em}.intro{background:radial-gradient(at 50% 70%,#f2b56b 0%,#b0563e 35%,#2a1a2a 75%,#120e16 100%);place-items:center;padding:16px;display:grid;position:fixed;inset:0}.intro:after{content:"";pointer-events:none;background:repeating-linear-gradient(115deg,#ffffff08 0 2px,#0000 2px 9px);position:absolute;inset:0}.intro-card{z-index:1;text-align:center;flex-direction:column;align-items:center;gap:14px;max-width:640px;display:flex;position:relative}.intro-kicker{letter-spacing:.3em;text-transform:uppercase;opacity:.8;margin:0;font-size:.75rem}.intro h1{font-family:var(--display);color:#fff1d6;text-shadow:0 4px 40px #ffb45a80;margin:0;font-size:clamp(3rem,11vw,6.5rem);font-style:italic;font-weight:500;line-height:.95}.intro-sub{opacity:.85;margin:0 0 12px}.intro-controls{opacity:.7;margin-top:18px;font-size:.85rem}.loading{font-family:var(--display);place-items:center;font-size:1.6rem;font-style:italic;display:grid;position:fixed;inset:0}.topbar{pointer-events:none;z-index:20;justify-content:space-between;align-items:center;gap:12px;padding:16px;display:flex;position:fixed;top:0;left:0;right:0}.topbar>*{pointer-events:auto}.brand{text-shadow:0 2px 12px #0009;flex-direction:column;display:flex}.brand-name{font-family:var(--display);font-size:1.6rem;font-style:italic;line-height:1}.brand-sub{letter-spacing:.25em;text-transform:uppercase;opacity:.8;font-size:.7rem}.topbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.act-card{pointer-events:none;z-index:15;text-shadow:0 4px 30px #000000b3;white-space:nowrap;flex-direction:column;align-items:center;animation:2.6s forwards act-in;display:flex;position:fixed;top:22%;left:50%;transform:translate(-50%)}.act-number{letter-spacing:.4em;text-transform:uppercase;font-size:.85rem}.act-title{font-family:var(--display);color:#fff1d6;font-size:clamp(2.4rem,8vw,4.5rem);font-style:italic}@keyframes act-in{0%{opacity:0;letter-spacing:.2em}20%,75%{opacity:1;letter-spacing:0}to{opacity:0}}.stop-prompt{z-index:20;align-items:center;gap:10px;max-width:calc(100vw - 32px);display:flex;position:fixed;bottom:74px;left:50%;transform:translate(-50%)}.stop-prompt .primary{flex-direction:column;gap:0;padding:.55em 1.4em;line-height:1.25}.prompt-act{letter-spacing:.2em;text-transform:uppercase;opacity:.75;font-size:.65rem}.travelling{font-family:var(--display);text-align:center;text-shadow:0 2px 12px #000000b3;min-width:10ch;font-size:1.3rem;font-style:italic}.timeline{background:var(--glass);border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:20;border-radius:999px;gap:14px;max-width:calc(100vw - 32px);padding:8px 16px;display:flex;position:fixed;bottom:16px;left:50%;overflow-x:auto;transform:translate(-50%)}.timeline-act{flex-direction:column;align-items:center;gap:4px;display:flex}.timeline-act-name{letter-spacing:.12em;text-transform:uppercase;opacity:.7;white-space:nowrap;font-size:.6rem}.timeline-stops{gap:6px;display:flex}.timeline-stop{border:1.5px solid var(--accent);background:0 0;border-radius:50%;width:14px;height:14px;padding:0;transition:transform .2s}.timeline-stop.visited{background:color-mix(in srgb, var(--accent) 45%, transparent)}.timeline-stop.current{background:var(--accent);box-shadow:0 0 12px var(--accent);transform:scale(1.35)}.flag-label{white-space:nowrap;background:var(--glass);border:1px solid var(--glass-line);color:var(--text-on-glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:10px;flex-direction:column;align-items:center;padding:6px 12px;transition:transform .2s;display:flex}.flag-label.is-here{border-color:var(--gold-bright);transform:scale(1.1)}.flag-name{font-family:var(--display);font-size:1.15rem;font-style:italic}.flag-dates,.flag-hint{letter-spacing:.08em;opacity:.8;font-size:.65rem}.flag-hint{color:var(--gold-bright)}.modal-backdrop{z-index:30;background:#0a060c73;place-items:center;padding:16px;animation:.25s fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.journal{width:min(680px,100%);max-height:calc(100dvh - 32px);color:var(--ink);background:radial-gradient(ellipse at 20% 0%, #ffffff80, transparent 60%), radial-gradient(ellipse at 100% 100%, #a06e3c2e, transparent 50%), var(--parchment);box-shadow:0 0 0 1px #c9b08a, 0 0 0 6px var(--parchment-deep), 0 0 0 7px #a8875a, 0 30px 80px #0000008c;border-top:4px solid var(--accent);border-radius:6px;padding:36px 36px 24px;animation:.3s rise;position:relative;overflow-y:auto}@keyframes rise{0%{opacity:0;transform:translateY(16px)}}.close{color:var(--ink-soft);background:0 0;border:0;font-size:1.8rem;position:absolute;top:10px;right:14px}.journal-act{letter-spacing:.25em;text-transform:uppercase;color:var(--crimson);margin:0 0 6px;font-size:.7rem}.region-name{font-family:var(--display);margin:0;font-size:2.4rem;font-style:italic;font-weight:600;line-height:1.05}.region-role{margin:6px 0 0;font-weight:600}.region-meta{color:var(--ink-soft);margin:2px 0 0;font-size:.9rem}.region-tagline{font-family:var(--display);color:var(--ink-soft);margin:10px 0 0;font-size:1.2rem;font-style:italic}.region-bullets{margin:18px 0;padding-left:1.2em;line-height:1.6}.region-bullets li::marker{color:var(--crimson)}.region-links,.contact{flex-wrap:wrap;gap:8px;margin:14px 0;display:flex}.region-links a,.contact a{color:var(--ink);border:1px solid #b89a6a;border-radius:999px;padding:.4em 1em;font-size:.9rem;text-decoration:none}.region-links a:hover,.contact a:hover{background:var(--parchment-deep)}.contact a.primary{color:#22170e}.pictos{flex-wrap:wrap;gap:6px;margin-top:16px;display:flex}.picto{color:var(--gold-bright);letter-spacing:.02em;background:#2a1f1a;border:1px solid #6b5030;border-radius:4px;padding:.3em .8em;font-size:.78rem}.picto.locked{color:#a8875a;background:0 0;border-style:dashed}.pictos.big .picto{font-size:.9rem}.media-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:14px 0;display:grid}.media-grid img,.media-grid video,.media-grid audio{border-radius:4px;width:100%}.media-slot{aspect-ratio:4/3;color:var(--ink-soft);background:repeating-linear-gradient(135deg,#a8875a14 0 10px,#0000 10px 20px);border:2px dashed #b89a6a;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.media-icon{font-size:1.6rem}.media-soon{letter-spacing:.15em;text-transform:uppercase;opacity:.7;font-size:.7rem}.journal-foot{border-top:1px solid #d8c4a0;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:24px;padding-top:16px;display:flex}.journal-foot .ghost{color:var(--ink);-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border-color:#b89a6a}.bb84{color:#f2e6f6;background:#241a2e;border-radius:6px;margin:16px 0;padding:14px}.bb84-controls{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:10px;display:flex}.bb84-controls button{color:inherit;background:#3a2a4a;border:1px solid #c78bd6;border-radius:999px;padding:.35em 1em}.bb84-eve{align-items:center;gap:6px;font-size:.9rem;display:flex}.bb84-grid{font-variant-numeric:tabular-nums;gap:8px;display:flex;overflow-x:auto}.bb84-head,.bb84-col{flex-direction:column;gap:2px;font-size:.8rem;display:flex}.bb84-head span{white-space:nowrap;opacity:.7;height:1.4em}.bb84-cols{gap:2px;display:flex}.bb84-col{border-radius:4px;align-items:center;min-width:1.6em}.bb84-col span{height:1.4em}.bb84-col.drop{opacity:.3}.bb84-col.keep{background:#7ff3ff1f}.bb84-col.err{background:#ff5a5a4d}.bb84-photon{color:#ff9cf0}.bb84-result{margin:10px 0 0;font-size:.85rem}.bb84-result .good{color:#7fffb0}.bb84-result .bad{color:#ff8a8a}.classic{background:var(--parchment);height:100%;color:var(--ink);padding:48px 16px 64px;overflow-y:auto}.classic>*{max-width:820px;margin-left:auto;margin-right:auto}.classic-hero h1{font-family:var(--display);margin:0;font-size:clamp(2.6rem,9vw,4.5rem);font-style:italic;font-weight:600;line-height:1}.classic-title{color:var(--crimson);font-weight:600}.classic-summary{max-width:62ch;line-height:1.7}.classic-act{margin-top:56px}.classic-act-title{font-family:var(--display);border-bottom:1px solid #c9b08a;padding-bottom:6px;font-size:2rem;font-style:italic}.classic-act-title span{font-family:var(--body);letter-spacing:.25em;text-transform:uppercase;color:var(--crimson);vertical-align:middle;margin-right:8px;font-size:.75rem;font-style:normal}.classic-card{border-left:3px solid var(--accent);margin:20px 0;padding:20px 0 24px 18px}.classic-card .region-name{font-size:1.8rem}.classic-foot{color:var(--ink-soft);margin-top:64px;font-size:.85rem}@media (prefers-color-scheme:dark){.classic{--ink:#f0e4cc;--ink-soft:#c4b49a;--parchment-deep:#3a2f28;background:#1c1714}.classic .region-links a,.classic .contact a{border-color:#6b5a44}}@media (width<=640px){.journal{padding:28px 20px 18px}.region-name{font-size:1.9rem}.brand-name{font-size:1.25rem}.topbar-actions .ghost{padding:.45em .9em;font-size:.8rem}.timeline{gap:10px;padding:6px 12px}.timeline-act-name{display:none}.stop-prompt{bottom:56px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.flag-status{letter-spacing:.04em;color:#ffb0a0;font-size:.7rem}.timeline-stop.cleared{background:var(--accent);opacity:.85}.timeline-stop.locked{opacity:.35;border-style:dashed}.locked-note{color:var(--ink-soft);align-self:center;font-size:.9rem}.region-section{margin-top:22px}.region-section h3{font-family:var(--display);margin:0 0 4px;font-size:1.45rem;font-style:italic}.region-section .region-bullets{margin:8px 0}.battle-preview{color:#f6ecd8;background:#241a22;border-radius:6px;flex-direction:column;align-items:flex-start;gap:8px;margin-top:22px;padding:18px;display:flex}.battle-preview p{margin:0;line-height:1.5}.battle-preview.won{background:#2a2618}.battle-label{letter-spacing:.25em;text-transform:uppercase;color:#ff9a8a;margin:0;font-size:.7rem}.battle-why{opacity:.9;font-style:italic;line-height:1.55}.cleared-badge{color:var(--gold-bright);font-weight:600}.battle{z-index:40;color:var(--text-on-glass);background:radial-gradient(ellipse at 50% 30%, color-mix(in srgb, var(--enemy,#b0413e) 28%, transparent), transparent 60%), radial-gradient(ellipse at 50% 110%, #ffbe6e2e, transparent 55%), #0e0a12e6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);-webkit-user-select:none;user-select:none;flex-direction:column;gap:10px;padding:16px;animation:.3s fade;display:flex;position:fixed;inset:0}.battle-top{justify-content:space-between;align-items:center;display:flex}.battle-top .journal-act{color:#ffb0a0}.battle-stage{flex:1;grid-template-rows:1fr auto;place-items:center;min-height:0;display:grid;position:relative}.combatant{flex-direction:column;align-items:center;gap:6px;width:min(360px,100%);display:flex;position:relative}.combatant.shake{animation:.3s shake}@keyframes shake{20%{transform:translate(-8px)}40%{transform:translate(7px)}60%{transform:translate(-5px)}80%{transform:translate(3px)}}.combatant-name{font-family:var(--display);font-size:1.6rem;font-style:italic}.enemy-glyph{width:150px;height:150px;font-size:3.6rem;font-family:var(--display);color:var(--enemy);box-shadow:0 0 0 2px color-mix(in srgb, var(--enemy) 60%, transparent), 0 0 60px color-mix(in srgb, var(--enemy) 45%, transparent);text-shadow:0 0 18px var(--enemy);background:radial-gradient(circle at 40% 35%,#3a2a40,#120c16 70%);border-radius:46% 54% 42% 58%/55% 45%;place-items:center;animation:3s ease-in-out infinite hover;display:grid}.enemy.boss .enemy-glyph{width:200px;height:200px;font-size:5rem}.enemy.veiled .enemy-glyph{filter:blur(6px)saturate(.4);opacity:.5}@keyframes hover{50%{transform:translateY(-8px)rotate(2deg)}}.enemy-weak{opacity:.8;font-size:.8rem}.bar{background:#ffffff1a;border:1px solid #ffffff26;border-radius:999px;width:100%;height:14px;position:relative;overflow:hidden}.bar span{transition:width .35s;position:absolute;inset:0 auto 0 0}.bar.enemy span{background:linear-gradient(90deg,#8a2a2a,#e05a4a)}.bar.hero span{background:linear-gradient(90deg,#3a8a5a,#8ae0a0)}.bar em{text-shadow:0 1px 2px #000;place-items:center;font-size:.65rem;font-style:normal;font-weight:600;display:grid;position:absolute;inset:0}.ap{gap:6px;display:flex}.ap span{border:1.5px solid var(--gold-bright);opacity:.4;width:16px;height:16px;transform:rotate(45deg)}.ap span.on{background:var(--gold-bright);opacity:1;box-shadow:0 0 10px var(--gold-bright)}.popup{font-family:var(--display);pointer-events:none;text-shadow:0 2px 8px #000;font-size:2rem;font-weight:600;animation:1.1s forwards popup;position:absolute;top:30%}.popup.dmg{color:#ffd27a}.popup.heal{color:#8ae0a0}.popup.info{color:#ff9a8a;letter-spacing:.15em;font-size:1.3rem;top:10%}@keyframes popup{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-50px)}}.qte{z-index:2;touch-action:manipulation;background:0 0;border:0;place-items:center;width:120px;height:120px;padding:0;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.qte-target,.qte-ring{border-radius:50%;position:absolute;inset:0}.qte-target{border:3px solid var(--gold-bright);box-shadow:0 0 20px var(--gold-bright), inset 0 0 20px #ffd27a66}.qte-ring{border:4px solid #ff6a5a;animation-name:qte-close;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes qte-close{0%{opacity:.3;transform:scale(2.6)}to{opacity:1;transform:scale(1)}}.qte-label{letter-spacing:.15em;text-transform:uppercase;color:#fff1d6;font-size:.8rem}.qte-result{font-family:var(--display);color:var(--gold-bright);text-shadow:0 2px 16px #000;pointer-events:none;font-size:2.4rem;font-style:italic;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.battle-log{text-align:center;min-height:2.8em;margin:0;line-height:1.4}.battle-tip{text-align:center;color:var(--gold-bright);margin:0;font-size:.85rem}.moves{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;width:100%;max-width:900px;margin:0 auto;display:grid}.moves.waiting{opacity:.55}.move{border:1px solid var(--glass-line);color:var(--text-on-glass);text-align:left;background:#281e2ed9;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 14px;display:flex}.move:not(:disabled):hover{border-color:var(--gold-bright)}.move.weak{border-color:#ff9a8a;box-shadow:0 0 14px #ff786459}.move.weak .move-cost:after{content:" · Weak";color:#ff9a8a}.move-name{font-weight:600}.move-cost{opacity:.75;font-size:.75rem}.battle-end{text-align:center;flex-direction:column;align-items:center;gap:12px;width:min(560px,100%);margin:auto;display:flex}.battle-end-title{font-family:var(--display);color:#fff1d6;margin:0;font-size:clamp(2rem,7vw,3.2rem);font-style:italic}.battle-end .contact a{color:var(--text-on-glass);border-color:var(--glass-line)}.battle-end-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:8px;display:flex}
