@import"https://fonts.googleapis.com/css2?family=Cinzel:wght@500;600;700&family=Libre+Franklin:wght@400;500;600;700&display=swap";:root{font-family:Libre Franklin,system-ui,sans-serif;color:#e8e2d4;background:#111512;font-synthesis:none;--ink:#171b17;--panel:#1c221d;--line:#3a443b;--gold:#d0ac5b;--muted:#9aa297}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden}body{margin:0;min-width:320px;background:radial-gradient(circle at 25% -10%,#33402f 0,transparent 34%),#111512}button{font:inherit}button:focus-visible{outline:2px solid #e8c878;outline-offset:2px}h1,h2,h3,h4{font-family:Cinzel,Georgia,serif}.app-shell{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.topbar{height:76px;flex:0 0 76px;display:flex;align-items:center;gap:32px;padding:10px clamp(16px,3vw,42px);border-bottom:1px solid var(--line);background:#151a16e8;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:20}.brand{display:flex;align-items:center;gap:12px;margin-right:auto}.brand span,.eyebrow{display:block;color:var(--gold);font-size:.67rem;text-transform:uppercase;font-weight:700;letter-spacing:.13em}.brand h1{margin:2px 0 0;font-size:1.25rem;letter-spacing:.05em}.sigil{width:64px;height:64px;display:grid;place-items:center;border:1px solid var(--gold);transform:rotate(45deg);color:var(--gold);font:700 1rem Cinzel;background:#222a22}.sigil:first-line{transform:rotate(-45deg)}.sigil.small{width:42px;height:42px;font-size:.7rem}.brand .sigil{transform:rotate(45deg)}.brand .sigil{text-indent:0}.world-clock{min-width:85px;text-align:right;border-right:1px solid var(--line);padding-right:24px}.world-clock span{color:var(--muted);font-size:.66rem;display:block;text-transform:uppercase}.world-clock b{color:#f0d990}.topbar nav{display:flex;gap:6px}.topbar nav button,.layer-tabs button,.map-tools button{border:1px solid transparent;color:#c9cfc6;background:transparent;padding:8px 10px;cursor:pointer}kbd{color:#777f77;border:1px solid #4e584e;border-radius:3px;padding:1px 4px;font-size:.62rem;margin-left:4px}.game-layout{flex:1;min-height:0;width:100%;display:grid;grid-template-columns:minmax(0,1fr) 330px;max-width:1680px;margin:0 auto;overflow:hidden}.map-column{padding:clamp(14px,2.2vw,30px);min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.map-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:16px}.map-heading h2{font-size:clamp(1.5rem,3vw,2.5rem);margin:5px 0}.map-heading p:last-child{color:var(--muted);margin:0;font-size:.78rem}.layer-tabs{display:flex;background:#181e19;border:1px solid var(--line);border-radius:5px;padding:3px;flex-wrap:wrap}.layer-tabs button{font-size:.7rem}.layer-tabs button.active{color:#171813;background:var(--gold)}.map-shell{width:100%;min-width:0;min-height:0;flex:1;display:flex;flex-direction:column;border:1px solid #465047;background:#0c100d;box-shadow:0 22px 50px #0007;overflow:hidden}.map-tools{display:flex;align-items:center;justify-content:space-between;min-height:38px;padding:4px 10px;background:#1b211c;color:#9da59b;font-size:.7rem;border-bottom:1px solid #374037}.map-tools div{display:flex;align-items:center;gap:7px}.map-tools button{border-color:#424c42;padding:3px 8px;color:#e0d6bf}.map-viewport{position:relative;overflow:hidden;width:100%;min-height:0;flex:1;display:grid;place-items:center;touch-action:none;overscroll-behavior:none;background:#0d110e}.map-viewport canvas{position:absolute;left:50%;top:50%;display:block;height:auto;max-width:none;margin:0;cursor:grab;image-rendering:pixelated;transform-origin:center center;will-change:transform,width;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.map-viewport.is-routing canvas{cursor:crosshair}.map-viewport.is-panning canvas{cursor:grabbing}.map-legend{display:flex;gap:20px;color:#8c958c;font-size:.65rem;padding:10px 3px}.map-legend span{display:flex;gap:5px;align-items:center}.map-legend i{width:10px;height:10px;border-radius:50%}.legend-player{background:#f4d275}.legend-seen{background:#84925b}.legend-known{background:#3e4940}.legend-unknown{background:#111512;border:1px solid #3e453f}.side-panel{width:100%;min-width:0;height:100%;min-height:0;border-left:1px solid var(--line);padding:24px 22px;background:#161b17cc;overflow-x:hidden;overflow-y:auto}.traveler-card{display:grid;grid-template-columns:60px 1fr;gap:14px;align-items:center}.portrait-circle{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;border:2px solid #dbc376;background:linear-gradient(145deg,#596653,#283029);font:600 1rem Cinzel}.traveler-card h3{margin:3px 0;font-size:1rem}.traveler-card small{color:#9da59c;font-size:.65rem}.hp-bar{height:5px;background:#313831;margin:8px 0 4px}.hp-bar i{display:block;height:100%;background:#a8574e}.primary-action,.world-action button,.event-choices button{width:100%;border:1px solid #c9a650;color:#191b16;background:var(--gold);padding:10px;margin-top:16px;cursor:pointer;font-weight:700}.world-action{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:25px 0;padding:24px 0}.world-action h3{margin:6px 0}.world-action p:not(.eyebrow){color:var(--muted);font-size:.78rem;line-height:1.5}.section-heading{display:flex;justify-content:space-between;align-items:center}.section-heading span{font-size:.65rem;color:#757e76}.chronicle{max-height:38%;overflow:hidden}.chronicle article{position:relative;border-left:1px solid #495349;padding:0 0 12px 14px}.chronicle article:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--gold);position:absolute;left:-3px;top:5px}.chronicle time{color:#788178;font-size:.61rem;text-transform:uppercase}.chronicle h4{margin:3px 0;font-size:.8rem}.chronicle article p,.empty-copy{color:#929b91;font-size:.7rem;line-height:1.45;margin:0}.text-button{background:none;border:0;color:#929c93;text-decoration:underline;cursor:pointer;font-size:.68rem;padding:10px 0}.text-button.danger:hover{color:#e38c7f}.journey-panel,.quest-summary{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.journey-panel>p,.quest-summary>p{color:var(--muted);font-size:.72rem;line-height:1.45}.hunger-bar{height:5px;background:#313831;margin:9px 0 12px}.hunger-bar i{display:block;height:100%;background:linear-gradient(90deg,#a8574e,#d0ac5b)}.travel-modes{display:flex;flex-wrap:wrap;gap:5px}.travel-modes button{border:1px solid #485247;background:#202721;color:#adb5aa;padding:5px 7px;font-size:.64rem;cursor:pointer}.travel-modes button.active{border-color:var(--gold);color:#f0d990;background:#322d1e}.transport-destinations{display:grid;gap:5px;margin-top:10px}.transport-destinations button{display:flex;justify-content:space-between;border:1px solid #3f493f;background:#1c231d;color:#e0d6bf;padding:7px 9px;cursor:pointer;text-align:left}.transport-destinations small{color:#7f887e;text-transform:uppercase}.quest-summary h3{font-size:.86rem;margin:9px 0 3px}.quest-ledger{width:min(760px,100%);max-width:760px}.quest-ledger:before{content:"";display:block;height:120px;margin:-34px -34px 24px;background:linear-gradient(0deg,#20271f,transparent 75%),url(/FantasyGame/generated/royal-road.jpg) center 52%/cover;border-bottom:1px solid #8d7e54}.quest-list{display:grid;gap:10px;max-height:55vh;overflow:auto;padding-right:4px}.quest-card{border:1px solid #3e473d;background:#19201a;padding:15px}.quest-card.active{border-left:3px solid var(--gold)}.quest-card.ready{border-color:#789447}.quest-card.complete,.quest-card.failed{opacity:.58}.quest-card h3{margin:6px 0;font-size:1rem}.quest-card>p{color:#aab1a7;font-size:.75rem;line-height:1.5}.quest-card .section-heading b,.quest-kind{font-size:.6rem;text-transform:uppercase;letter-spacing:.12em;color:var(--gold)}.quest-objective{display:flex;gap:9px;padding:9px;background:#111612;color:#c8cec3;font-size:.72rem}.quest-objective i{width:10px;height:10px;flex:0 0 10px;margin-top:2px;border:1px solid #738071}.quest-objective i.done{background:#789447}.quest-objective small{display:block;color:#778078;margin-top:4px}.quest-card footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;color:#929b91;font-size:.65rem}.quest-card footer button{border:1px solid #b99649;background:var(--gold);color:#1a1c17;padding:6px 9px;font-weight:700;cursor:pointer}.modal-backdrop{position:fixed;z-index:50;inset:0;background:#080b09d9;display:grid;place-items:center;padding:20px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.character-sheet{width:min(850px,100%);max-height:92vh;overflow:auto;background:#e3d6b7;color:#27271f;border:6px double #6e654c;padding:clamp(20px,4vw,38px);position:relative;box-shadow:0 25px 70px #000b}.character-sheet:before{content:"";position:absolute;inset:8px;border:1px solid #958766;pointer-events:none}.character-sheet .eyebrow{color:#756233}.character-sheet h2{font-size:2rem;margin:5px 0}.character-head{display:flex;gap:14px;align-items:flex-start}.close-button{position:absolute;right:16px;top:14px;border:0;background:transparent;font-size:1.4rem;cursor:pointer;z-index:2}.vitals{display:flex;gap:25px;border-top:1px solid #a4946f;border-bottom:1px solid #a4946f;padding:9px 0}.vitals span{font-size:.75rem;text-transform:uppercase}.vitals b{margin-left:5px}.stats-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:20px 0}.stats-grid div{display:grid;text-align:center;border:1px solid #938460;padding:7px;background:#eee4cc}.stats-grid span{text-transform:uppercase;font-size:.62rem}.stats-grid strong{font:700 1.4rem Cinzel}.stats-grid small{color:#71684f}.inventory-heading{display:flex;align-items:center;justify-content:space-between;margin-top:12px}.inventory-heading h3{margin:0}.inventory-heading span{font-size:.7rem;color:#70664d}.attack-list{display:flex;flex-direction:column;gap:5px;margin-top:8px}.attack-row{display:flex;align-items:center;gap:8px;padding:6px 9px;border:1px solid #a59777;background:#d5c7a8;border-radius:5px;position:relative}.attack-row b{font-size:.78rem}.attack-row small{font-size:.68rem;color:#776b51}.inventory-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:10px}.inventory-slot{position:relative;min-height:76px;border:1px dashed #a59777;background:#d5c7a8;padding:9px;display:flex;flex-direction:column;justify-content:center}.inventory-slot.filled{border-style:solid;background:#eee3c9}.inventory-slot b{font-size:.72rem}.inventory-slot small{font-size:.6rem;color:#776b51}.inventory-slot button{align-self:start;font-size:.6rem;margin-top:5px;border:1px solid #82734e;background:#d7c28d;cursor:pointer}.slot-number{position:absolute;right:4px;top:2px;color:#a59878;font-size:.55rem}.event-card{width:min(520px,100%);padding:38px;background:#1f261f;border:1px solid #8d7e54;box-shadow:0 25px 70px #000b;text-align:center}.event-card h2{font-size:1.8rem}.event-card>p:not(.eyebrow){color:#b3bbb0;line-height:1.6}.event-choices{display:flex;gap:8px}.event-choices button{margin-top:12px}.toast{position:fixed;z-index:100;bottom:20px;left:50%;transform:translate(-50%);padding:12px 16px;background:#3b201e;border:1px solid #a7544b;color:#ffd6ce;box-shadow:0 10px 30px #0008}.toast button{background:none;border:0;color:inherit;margin-left:10px;cursor:pointer}.saving-indicator{position:fixed;right:15px;bottom:12px;color:#c9b56f;background:#1b211c;border:1px solid #4a5448;padding:6px 10px;font-size:.64rem;z-index:80}.local-map-toggle{position:fixed;z-index:48;right:18px;top:14px;border:1px solid #7f7048;background:#252c25;color:#e7d8ae;padding:9px 13px;cursor:pointer}.dialogue-backdrop{position:fixed;z-index:70;inset:0;background:#080b09d9;display:grid;place-items:center;padding:18px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.dialogue-panel{position:relative;width:min(580px,100%);max-height:90vh;overflow:auto;padding:34px;background:#20271f;border:1px solid #8d7e54;box-shadow:0 25px 70px #000c}.dialogue-panel h2{font-size:1.7rem;margin:5px 0 18px}.portrait-frame{position:relative;float:right;margin:0 0 12px 16px;border:1px solid #8d7e54;image-rendering:pixelated}.portrait-frame img{image-rendering:auto}.dialogue-appearance{color:#8d968c;font-size:.74rem;font-style:italic;line-height:1.4;margin:0 0 14px}.dialogue-lines{border-left:2px solid var(--gold);padding-left:16px}.dialogue-lines p{color:#c1c7bc;line-height:1.55;font-family:Georgia,serif}.npc-stats{display:flex;flex-wrap:wrap;gap:6px;margin:18px 0}.npc-stats span{padding:5px 7px;border:1px solid #475047;color:#929b91;font-size:.6rem}.npc-stats b{color:#e8e2d4}.merchant-stock{border-top:1px solid var(--line);padding-top:16px}.merchant-stock h3{margin:0}.merchant-stock>button{width:100%;display:flex;justify-content:space-between;align-items:center;margin-top:7px;padding:10px;border:1px solid #4f594e;background:#2a322a;color:#e8e2d4;cursor:pointer;text-align:left}.merchant-stock>button:disabled{opacity:.45;cursor:not-allowed}.merchant-stock small{display:block;color:#8d968c;margin-top:2px}.merchant-stock strong{color:var(--gold)}.escort-offer{border-top:1px solid var(--line);margin-top:18px;padding-top:15px}.escort-offer p{color:#aeb6aa;font-size:.78rem}.escort-offer button,.dialogue-goodbye{border:1px solid #b99649;background:var(--gold);color:#1a1c17;padding:9px 12px;font-weight:700;cursor:pointer}.dialogue-goodbye{width:100%;margin-top:18px;background:transparent;color:#d5c9ad;border-color:#596258}.local-character-toggle{position:fixed;z-index:48;right:18px;top:55px;border:1px solid #596258;background:#202720;color:#d7cdb8;padding:7px 11px;cursor:pointer}.loading-screen{height:100%;display:grid;place-content:center;justify-items:center;gap:20px}.loading-screen h1{font-size:1.2rem;color:#cbbd94}.start-screen{position:relative;isolation:isolate;background:linear-gradient(90deg,#0b0f0cdd,#0b0f0c73),url(/FantasyGame/generated/ember-crown-realm.jpg) center/cover}.start-screen:after{content:"";position:absolute;z-index:-1;inset:18px;border:1px solid #d0ac5b66;pointer-events:none}.start-screen>*{text-shadow:0 2px 12px #000}.encounter-page{height:100dvh;overflow:hidden;padding:clamp(8px,2vw,24px);display:grid;place-items:center;background:radial-gradient(circle,#2c342c,#0e120f)}@media(max-width:1000px){.game-layout{grid-template-columns:minmax(0,1fr) 280px}.map-heading{align-items:start;flex-direction:column;gap:8px}.layer-tabs{width:100%}.layer-tabs button{flex:1;min-width:0}.side-panel{padding:16px}.world-action{margin:16px 0;padding:16px 0}.chronicle article:nth-of-type(n+3){display:none}}@media(max-width:650px){.topbar{height:66px;flex-basis:66px;gap:10px}.brand span,.world-clock{display:none}.brand h1{font-size:1rem}.topbar nav button{font-size:0}.topbar nav kbd{font-size:.65rem}.game-layout{width:100vw;max-width:100vw;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) 116px}.map-column{padding:10px}.map-heading{margin-bottom:8px}.map-heading h2{font-size:1.25rem;margin:2px 0}.map-heading p:last-child{font-size:.62rem}.layer-tabs button{font-size:.58rem;padding:6px 3px}.map-tools{min-height:32px}.map-tools>span{display:none}.map-legend{padding:5px 2px}.side-panel{position:relative;width:100vw;max-width:100vw;height:116px;border-left:0;border-top:1px solid var(--line);padding:8px 10px;display:block;overflow:hidden}.traveler-card{width:calc(100% - 142px);min-width:0;height:100%;grid-template-columns:40px minmax(0,1fr);gap:8px;overflow:hidden}.traveler-card>div{min-width:0}.portrait-circle{width:38px;height:38px;font-size:.7rem}.traveler-card h3{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.72rem}.primary-action{position:absolute;right:8px;top:8px;width:130px;height:47px;margin:0;padding:5px;font-size:0}.primary-action:after{content:"Character & inventory";font-size:.57rem}.world-action{position:absolute;right:8px;top:60px;width:130px;height:47px;margin:0;padding:0;border:0}.world-action .eyebrow,.world-action h3,.world-action p:not(.eyebrow){display:none}.world-action button{height:100%;margin:0;padding:5px;font-size:.58rem}.journey-panel,.quest-summary{display:none}.chronicle,.side-panel>.text-button{display:none}.stats-grid{grid-template-columns:repeat(3,1fr)}.inventory-grid{grid-template-columns:repeat(2,1fr)}.event-choices{flex-direction:column}.quest-card footer{align-items:flex-start;flex-direction:column}}
