@import url("https://fonts.googleapis.com/css2?family=Cinzel:wght@400;700;900&family=IM+Fell+English:ital@0;1&family=Orbitron:wght@400;700;900&family=Rajdhani:wght@300;400;500;600;700&family=Press+Start+2P&family=VT323&display=swap");:root{--parchment:#f4e4c1;--ink:#1a0f00;--blood:#8b1a1a;--gold:#c8a84b;--shadow:#2d1b00;--fade:#8a7055;--bg:#0d0800;--scene-bg-top:#1a0d00;--scene-bg-bottom:#120900;--border:#3a2800;--border-dark:#2a1800;--scene-text:#e8d5b0;--intro-text:#a08060;--player-action:#8ab4b0;--stat-bar-bg:#2a1800;--stat-health:var(--blood);--stat-sanity:#4a7a8a;--stat-resources:var(--gold);--stat-turns:#5a7a5a;--heading-font:"Cinzel",serif;--body-font:"IM Fell English",Georgia,serif;--badge-bg:var(--blood);--badge-border:#c44;--glow-color:rgba(200,168,75,0.4);--hover-bg:rgba(200,168,75,0.06);--game-over-bg:rgba(139,26,26,0.05);--scene-glow:rgba(200,168,75,0.03)}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);font-family:var(--body-font);color:var(--parchment);min-height:100vh;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");pointer-events:none;z-index:1000;opacity:.4}#app{max-width:780px;margin:0 auto;padding:20px;min-height:100vh;display:flex;flex-direction:column}.masthead{text-align:center;padding:30px 0 20px;border-bottom:2px solid var(--gold);margin-bottom:30px;position:relative}.masthead:after{content:"✦ ✦ ✦";display:block;color:var(--gold);font-size:12px;letter-spacing:8px;margin-top:10px}.masthead h1{font-family:var(--heading-font);font-size:clamp(28px,6vw,52px);font-weight:900;color:var(--gold);text-shadow:0 0 40px var(--glow-color),2px 2px 0 var(--shadow);letter-spacing:4px;text-transform:uppercase}.masthead .subtitle{color:var(--fade);font-style:italic;margin-top:6px;font-size:15px}.menu-btn{position:absolute;left:0;top:50%;transform:translateY(-50%);background:none;border:1px solid var(--border);color:var(--fade);padding:6px 14px;font-family:var(--heading-font);font-size:9px;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:all .2s}.menu-btn:hover{border-color:var(--gold);color:var(--gold)}.era-badge{text-align:center;margin-bottom:20px}.era-badge .badge{display:inline-block;background:var(--badge-bg);border:1px solid var(--badge-border);color:var(--parchment);padding:6px 20px;font-family:var(--heading-font);font-size:12px;letter-spacing:3px;text-transform:uppercase}.scene{background:linear-gradient(180deg,var(--scene-bg-top) 0,var(--scene-bg-bottom) 100%);border:1px solid var(--border);border-top:3px solid var(--gold);padding:28px 32px;margin-bottom:20px;position:relative;line-height:1.85;font-size:16px;min-height:180px;flex-shrink:0}.scene:before{content:"";position:absolute;top:0;left:0;right:0;height:60px;background:linear-gradient(180deg,var(--scene-glow) 0,transparent 100%);pointer-events:none}.scene-label{font-family:var(--heading-font);font-size:10px;letter-spacing:4px;color:var(--gold);text-transform:uppercase;margin-bottom:14px;opacity:.7}.scene-text{color:var(--scene-text)}.cursor{display:inline-block;width:2px;height:1em;background:var(--gold);margin-left:2px;vertical-align:middle;animation:blink .8s step-end infinite}@keyframes blink{50%{opacity:0}}.stats{display:flex;gap:16px;margin-bottom:20px;flex-wrap:wrap}.stat{flex:1 1;min-width:120px;background:var(--scene-bg-top);border:1px solid var(--border);padding:10px 14px}.stat-label{font-family:var(--heading-font);font-size:9px;letter-spacing:3px;color:var(--fade);text-transform:uppercase;margin-bottom:6px}.stat-bar{height:4px;background:var(--stat-bar-bg);position:relative;overflow:hidden}.stat-fill{height:100%;transition:width .6s ease}.stat-fill.health{background:var(--stat-health)}.stat-fill.sanity{background:var(--stat-sanity)}.stat-fill.resources{background:var(--stat-resources)}.stat-fill.turns{background:var(--stat-turns)}.stat-num{font-size:12px;color:var(--parchment);margin-top:4px;opacity:.7}.timer-bar-container{position:relative;height:6px;background:var(--stat-bar-bg);margin-bottom:12px;border:1px solid var(--border);overflow:hidden}.timer-bar-fill{height:100%;background:var(--stat-turns);transition:width .1s linear}.timer-bar-fill.warning{background:var(--gold)}.timer-bar-fill.critical{background:var(--blood);animation:pulse-bar .5s ease-in-out infinite}@keyframes pulse-bar{0%,to{opacity:1}50%{opacity:.5}}.timer-label{position:absolute;right:8px;top:-18px;font-family:var(--heading-font);font-size:10px;letter-spacing:2px;color:var(--fade)}.choices{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.choice-btn{background:transparent;border:1px solid var(--border);color:var(--parchment);padding:14px 20px;text-align:left;cursor:pointer;font-family:var(--body-font);font-size:15px;transition:all .2s ease;position:relative;display:flex;align-items:flex-start;gap:12px}.choice-btn:hover{background:var(--hover-bg);border-color:var(--gold);color:var(--gold)}.choice-btn:active{transform:translateX(2px)}.choice-letter{font-family:var(--heading-font);font-size:11px;color:var(--gold);border:1px solid var(--gold);width:22px;height:22px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}.input-area{display:flex;gap:10px;margin-bottom:20px}.player-input{flex:1 1;background:var(--scene-bg-bottom);border:1px solid var(--border);border-bottom:2px solid var(--gold);color:var(--parchment);padding:12px 16px;font-family:var(--body-font);font-size:15px;outline:none;transition:border-color .2s}.player-input:focus{border-color:var(--gold)}.player-input::placeholder{color:var(--fade);font-style:italic}.submit-btn{background:var(--gold);border:none;color:var(--shadow);padding:12px 24px;font-family:var(--heading-font);font-size:12px;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:all .2s;font-weight:700}.submit-btn:hover{opacity:.85}.loading{text-align:center;padding:20px;color:var(--fade);font-style:italic;font-size:14px}.loading-dots:after{content:"";animation:dots 1.5s infinite}@keyframes dots{0%{content:"."}33%{content:".."}66%{content:"..."}}.log-toggle{font-family:var(--heading-font);font-size:10px;letter-spacing:3px;color:var(--fade);text-transform:uppercase;background:none;border:none;cursor:pointer;padding:8px 0;text-align:left;transition:color .2s}.log-toggle:hover{color:var(--gold)}.log{border-top:1px solid var(--border-dark);margin-top:10px;padding-top:16px;max-height:300px;overflow-y:auto}.log-entry{padding:8px 0;border-bottom:1px solid var(--scene-bg-top);font-size:13px;color:var(--fade);line-height:1.6}.log-entry.player{color:var(--player-action);font-style:italic}.log-entry.player:before{content:"▶ "}.start-screen{text-align:center;padding:40px 20px}.ornament{color:var(--gold);font-size:24px;letter-spacing:16px;margin:20px 0;opacity:.6}.intro-text{color:var(--intro-text);line-height:1.9;font-size:15px;max-width:520px;margin:0 auto 30px;font-style:italic}.start-btn{background:transparent;border:2px solid var(--gold);color:var(--gold);padding:16px 48px;font-family:var(--heading-font);font-size:14px;letter-spacing:4px;text-transform:uppercase;cursor:pointer;transition:all .3s;font-weight:700}.start-btn:hover{background:var(--gold);color:var(--shadow);box-shadow:0 0 30px var(--glow-color)}.game-over{text-align:center;padding:30px;border:1px solid var(--blood);background:var(--game-over-bg);margin-bottom:20px}.game-over h2{font-family:var(--heading-font);font-size:28px;margin-bottom:10px}.game-over-text{color:var(--fade);font-style:italic;margin-top:10px}.score-display{margin:16px 0;padding:16px;border:1px solid var(--border);background:var(--scene-bg-top)}.score-total{font-family:var(--heading-font);font-size:48px;font-weight:900;color:var(--gold);line-height:1;text-shadow:0 0 20px var(--glow-color)}.score-label{font-size:10px;letter-spacing:6px;text-transform:uppercase;margin-top:4px}.score-breakdown,.score-label{font-family:var(--heading-font);color:var(--fade)}.score-breakdown{display:flex;gap:16px;justify-content:center;margin-top:12px;font-size:12px;letter-spacing:1px}.new-best{margin-top:10px;font-family:var(--heading-font);font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--gold);animation:pulse-best 1.5s ease-in-out infinite}@keyframes pulse-best{0%,to{opacity:1}50%{opacity:.5}}.run-history-toggle{margin-top:16px;font-family:var(--heading-font);font-size:10px;letter-spacing:3px;color:var(--fade);text-transform:uppercase;background:none;border:none;cursor:pointer;padding:8px 0;transition:color .2s}.run-history-toggle:hover{color:var(--gold)}.run-history{margin-top:12px;max-width:100%;overflow-x:auto}.run-history table{width:100%;border-collapse:collapse;font-size:12px;color:var(--fade)}.run-history th{font-family:var(--heading-font);font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--fade);padding:6px 8px;border-bottom:1px solid var(--border);text-align:left;opacity:.7}.run-history td{padding:8px;border-bottom:1px solid var(--scene-bg-top);white-space:nowrap}.run-history-best td{color:var(--gold)}.leaderboard{margin-top:12px;max-width:100%;overflow-x:auto}.leaderboard-filters{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-bottom:12px}.leaderboard-filter-btn{background:transparent;border:1px solid var(--border);color:var(--fade);padding:4px 12px;font-family:var(--heading-font);font-size:9px;letter-spacing:1px;text-transform:uppercase;cursor:pointer;transition:all .2s}.leaderboard-filter-btn.active,.leaderboard-filter-btn:hover{border-color:var(--gold);color:var(--gold);background:var(--hover-bg)}.leaderboard table{width:100%;border-collapse:collapse;font-size:12px;color:var(--fade)}.leaderboard th{font-family:var(--heading-font);font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--fade);padding:6px 8px;border-bottom:1px solid var(--border);text-align:left;opacity:.7}.leaderboard td{padding:8px;border-bottom:1px solid var(--scene-bg-top);white-space:nowrap}.leaderboard-you td{color:var(--parchment);background:var(--hover-bg)}.leaderboard-you-badge{color:var(--gold);font-size:10px;font-style:italic}.leaderboard-universe{text-transform:capitalize;font-size:11px}.leaderboard-empty,.leaderboard-loading{color:var(--fade);font-size:12px;font-style:italic;text-align:center;padding:16px 0}.achievement-toast{margin:16px 0;padding:14px 18px;border:1px solid var(--gold);background:var(--hover-bg);animation:toast-in .4s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.achievement-toast-label{font-family:var(--heading-font);font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--gold);margin-bottom:8px}.achievement-toast-item{display:flex;align-items:center;gap:10px;padding:4px 0;font-size:14px;color:var(--parchment)}.achievement-toast-item strong{color:var(--gold)}.achievements-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px;margin-top:12px;text-align:left}@media (max-width:560px){.achievements-grid{grid-template-columns:1fr}}.achievement-card{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);background:var(--scene-bg-top)}.achievement-card.achievement-locked{opacity:.35}.achievement-icon{font-size:20px;flex-shrink:0;width:28px;text-align:center}.achievement-info{min-width:0}.achievement-name{font-family:var(--heading-font);font-size:11px;letter-spacing:1px;color:var(--gold)}.achievement-locked .achievement-name{color:var(--fade)}.achievement-desc{font-size:11px;color:var(--fade);margin-top:2px}.restart-btn{margin-top:20px;background:transparent;border:1px solid var(--gold);color:var(--gold);padding:12px 32px;font-family:var(--heading-font);font-size:12px;letter-spacing:3px;text-transform:uppercase;cursor:pointer;transition:all .2s}.restart-btn:hover{background:var(--hover-bg)}.game-over-actions{display:flex;gap:12px;justify-content:center;margin-top:20px}.game-over-actions .restart-btn{margin-top:0}.share-btn{background:transparent;border:1px solid var(--border);color:var(--fade);padding:12px 32px;font-family:var(--heading-font);font-size:12px;letter-spacing:3px;text-transform:uppercase;cursor:pointer;transition:all .2s}.share-btn:hover{border-color:var(--gold);color:var(--gold)}.universe-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:0 0 28px}.universe-btn{background:transparent;border:1px solid var(--border);color:var(--fade);padding:10px 24px;font-family:var(--heading-font);font-size:12px;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:all .2s}.universe-btn.active,.universe-btn:hover{border-color:var(--gold);color:var(--gold);background:var(--hover-bg)}.diff-row{display:flex;gap:10px;justify-content:center;margin:20px 0}.diff-btn{background:transparent;border:1px solid var(--border);color:var(--fade);padding:8px 20px;font-family:var(--heading-font);font-size:11px;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:all .2s}.diff-btn.active,.diff-btn:hover{border-color:var(--gold);color:var(--gold);background:var(--hover-bg)}.custom-era-row{margin:16px auto 20px;max-width:340px;width:100%}.custom-era-input{width:100%;background:transparent;border:1px solid var(--border);color:var(--text);padding:10px 14px;font-family:var(--body-font);font-size:13px;text-align:center;letter-spacing:.5px;transition:border-color .2s;box-sizing:border-box}.custom-era-input::placeholder{color:var(--fade);opacity:.6}.custom-era-input:focus{outline:none;border-color:var(--gold)}.map-container{height:200px;width:100%;margin-bottom:16px;border:1px solid var(--border);border-top:2px solid var(--gold);overflow:hidden;position:relative;background:rgba(0,0,0,.3);opacity:0;transition:opacity .8s ease}.map-container.map-visible{opacity:1}.map-container.map-loading{opacity:1;display:flex;align-items:center;justify-content:center}.map-placeholder{color:var(--fade);font-style:italic;font-size:13px;font-family:var(--body-font);letter-spacing:1px}.map-image{width:100%;height:100%;object-fit:cover}.map-marker{width:14px!important;height:14px!important;background:var(--blood);border:2px solid var(--gold);border-radius:50%;box-shadow:0 0 8px rgba(200,168,75,.6)}.map-container .leaflet-container{background:rgba(0,0,0,.3);cursor:-webkit-grab;cursor:grab}.map-container .leaflet-container:active{cursor:-webkit-grabbing;cursor:grabbing}.map-container .leaflet-tile-pane{filter:sepia(.5) saturate(.6) brightness(.75) contrast(1.1)}.map-container .leaflet-control-zoom{border:none;margin:8px}.map-container .leaflet-control-zoom a{background:rgba(20,15,10,.85);color:var(--gold);border:1px solid var(--border);width:28px;height:28px;line-height:28px;font-size:14px}.map-container .leaflet-control-zoom a:hover{background:rgba(40,30,20,.9);color:var(--gold)}.map-portrait-row{display:flex;gap:12px;margin-bottom:16px}.map-portrait-map{flex:1 1;min-width:0}.map-portrait-map .map-container{margin-bottom:0}.portrait-container{width:160px;height:200px;flex-shrink:0;border:1px solid var(--border);border-top:2px solid var(--gold);overflow:hidden;background:rgba(0,0,0,.3);opacity:0;transition:opacity .8s ease;display:flex;align-items:center;justify-content:center}.portrait-container.portrait-visible{opacity:1}.portrait-container.portrait-loading{opacity:.5}.portrait-image{width:100%;height:100%;object-fit:cover}.game-options-row{display:flex;align-items:center;justify-content:center;gap:24px;margin:12px auto 16px}.turn-selector{display:flex;gap:6px}.turn-btn{background:transparent;border:1px solid var(--border);color:var(--fade);padding:4px 12px;font-family:var(--heading-font);font-size:10px;letter-spacing:1px;text-transform:uppercase;cursor:pointer;transition:all .2s}.turn-btn.active,.turn-btn:hover{border-color:var(--gold);color:var(--gold);background:var(--hover-bg)}.toggle-label{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-family:var(--heading-font);font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--fade)}.toggle-label input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:36px;height:18px;background:rgba(100,80,60,.3);border:1px solid var(--border);border-radius:9px;position:relative;cursor:pointer;transition:all .2s}.toggle-label input[type=checkbox]:after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;background:var(--fade);border-radius:50%;transition:all .2s}.toggle-label input[type=checkbox]:checked{background:var(--hover-bg);border-color:var(--gold)}.toggle-label input[type=checkbox]:checked:after{left:20px;background:var(--gold)}.toggle-text{transition:color .2s}@media (max-width:560px){.map-container{height:150px}.portrait-container{width:100px;height:150px}.map-portrait-row{gap:8px}}.game-state-panel{display:flex;gap:16px;margin-bottom:16px;flex-wrap:wrap}.game-state-section{flex:1 1;min-width:200px;background:var(--scene-bg-top);border:1px solid var(--border);padding:10px 14px}.game-state-label{font-family:var(--heading-font);font-size:9px;letter-spacing:3px;color:var(--fade);text-transform:uppercase;margin-bottom:8px}.game-state-items{display:flex;flex-wrap:wrap;gap:6px}.inventory-item,.relationship-item{background:var(--stat-bar-bg);border:1px solid var(--border);padding:2px 8px;font-size:13px;color:var(--scene-text)}.relationship-item strong{color:var(--gold)}.game-area{display:flex;flex-direction:column;flex:1 1}.universes-loading{display:flex;align-items:center;justify-content:center;min-height:60vh;color:var(--fade);font-style:italic;font-size:16px}@media (max-width:560px){.scene{padding:18px}.choice-btn{font-size:14px;padding:12px 14px}}