:root{--void:#050405;--stone:#17130f;--stone-2:#282016;--iron:#4a4032;--gold:#d8a83e;--gold-hot:#ffcf62;--parchment:#e7d2a0;--ink:#2a1708;--rune-blue:#4aa9d8;--fel-green:#6bd66b;--blood:#b92724;--purple:#a36ad8;--line:#ffcf6261;font-family:Georgia,Songti SC,STSong,serif}*{box-sizing:border-box}html,body{color:#f8ecd2;background:radial-gradient(circle at 50% 0,#532d14b8,#0000 34%),linear-gradient(#120e0b 0%,#050405 68%,#020202 100%);width:100%;min-height:100%;margin:0;overflow:hidden}button{color:inherit;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;border:0}#game-host{z-index:1;filter:saturate(.9)contrast(1.05)brightness(.86);position:fixed;inset:0}#ui-host{z-index:2;pointer-events:none;position:fixed;inset:0}.shell{width:min(100vw,430px);height:100dvh;padding:max(10px, env(safe-area-inset-top)) 10px max(10px, env(safe-area-inset-bottom));pointer-events:none;margin:0 auto;position:relative}.shell button,.stone-panel,.route-card,.expedition-hero,.combat-plaque,.dialogue-log,.result-card,.splash-panel,.starter-class-card,.auth-panel,.auth-form input{pointer-events:auto}.auth-screen{gap:14px;margin-top:12px;display:grid}.auth-panel p{color:#d8c39a;margin:0 0 14px;line-height:1.5}.auth-form{gap:12px;display:grid}.auth-form label{color:#e7d2a0;gap:6px;font-size:13px;display:grid}.auth-form input{color:#f8ecd2;width:100%;font:inherit;background:#080604d1;border:2px solid #6f552b;border-radius:6px;padding:10px 12px}.auth-error{color:#ff8f8f;margin:0;font-size:13px}.auth-switch{margin-top:10px}.topbar{z-index:5;background:linear-gradient(#42311df0,#120d09f0),repeating-linear-gradient(90deg,#0000 0 12px,#ffffff08 12px 13px);border:2px solid #6f552b;border-radius:6px;justify-content:space-between;align-items:center;gap:10px;min-height:52px;padding:6px 8px;display:flex;position:relative;box-shadow:0 6px 24px #0000008c,inset 0 0 0 1px #ffe69b3d}.brand-lockup{align-items:center;gap:8px;min-width:0;display:flex}.brand-rune{color:#9fe4ff;text-shadow:0 0 8px #4aa9d8;background:radial-gradient(circle,#28465f,#0d1720 66%);border:2px solid #b88c3a;border-radius:50%;place-items:center;width:34px;height:34px;font-weight:900;display:grid}.brand-lockup b,.brand-lockup em,.resource-stack span{display:block}.brand-lockup b{color:var(--gold-hot);text-shadow:0 1px #2b1605,0 0 8px #ffcf6259;font-size:17px}.brand-lockup em{color:#d8c28a;text-overflow:ellipsis;white-space:nowrap;max-width:210px;font-size:11px;font-style:normal;overflow:hidden}.resource-stack{color:#e6d2a1;text-align:right;min-width:92px;font-size:11px;line-height:1.45}.onboarding-screen,.hub-screen,.combat-screen,.result-screen{scrollbar-width:none;height:100%;overflow-y:auto}.hub-screen,.combat-screen,.result-screen{height:calc(100dvh - 66px);padding-top:8px}.onboarding-screen::-webkit-scrollbar{display:none}.hub-screen::-webkit-scrollbar{display:none}.combat-screen::-webkit-scrollbar{display:none}.result-screen::-webkit-scrollbar{display:none}.onboarding-screen{flex-direction:column;justify-content:center;gap:10px;display:flex}.splash-panel,.expedition-hero,.result-card{background:linear-gradient(#1910093d,#0b0705e6),url(/assets/generated/frostline_battlefield.png) 50%/cover no-repeat;border:2px solid #7e5e2b;border-radius:6px;position:relative;overflow:hidden;box-shadow:0 16px 40px #0000009e,inset 0 0 0 1px #ffe7a038}.splash-panel{flex-direction:column;justify-content:flex-end;min-height:300px;padding:18px;display:flex}.wow-kicker{width:fit-content;color:var(--gold-hot);letter-spacing:0;text-transform:uppercase;background:linear-gradient(#2b2115,#100b07);border:1px solid #8f6b32;border-radius:3px;padding:4px 9px;font-size:11px;font-weight:800;display:inline-flex}h1,h2,p{margin:0}h1,h2{color:#ffe4a0;text-shadow:0 2px #2a1405,0 0 16px #ffcf6247;line-height:1.05}h1{margin-top:8px;font-size:34px}h2{margin-top:6px;font-size:24px}p{color:#ead8af;font-size:13px;line-height:1.45}.starter-class-grid{gap:8px;display:grid}.starter-class-card{text-align:left;background:linear-gradient(#302417f5,#0f0a07f5),radial-gradient(circle at 0 0,#4aa9d847,#0000 42%);border:2px solid #5f4525;border-radius:6px;min-height:82px;padding:12px;box-shadow:inset 0 0 0 1px #ffe69b24}.starter-class-card strong,.starter-class-card span,.starter-class-card em{display:block}.starter-class-card strong{color:#ffe4a0;font-size:18px}.starter-class-card span{color:#cbb27d;margin-top:4px;font-size:12px}.starter-class-card em{flex-wrap:wrap;gap:5px;margin-top:7px;font-style:normal;display:flex}.starter-class-card i{color:#efdca8;background:#00000047;border:1px solid #d8a83e6b;border-radius:3px;padding:3px 6px;font-size:10px;font-style:normal}.hub-screen{flex-direction:column;gap:8px;display:flex}.expedition-hero{flex-direction:column;justify-content:flex-end;min-height:230px;padding:12px;display:flex}.expedition-hero img{object-fit:cover;opacity:.72;mix-blend-mode:screen;width:100%;height:100%;position:absolute;inset:0}.hero-copy,.expedition-hero .primary{z-index:1;position:relative}.hero-copy p{max-width:34em;margin-top:7px}.primary,.metal-button,.small-metal{color:#221103;text-shadow:0 1px #fff0b98f;background:linear-gradient(#f6d070,#a96a15 55%,#5f3107);border:2px solid #7c5a2a;border-radius:5px;font-weight:900;box-shadow:0 4px #2e1805,inset 0 1px #fff6cac2}.primary{width:100%;min-height:48px;margin-top:12px;padding:10px 12px;font-size:18px}.metal-button,.small-metal{color:#f0d69a;text-shadow:0 1px #000;background:linear-gradient(#4d4233,#211812);min-height:36px;padding:7px 9px}.small-metal{min-width:72px;min-height:30px;font-size:12px}.stone-panel,.combat-plaque,.dialogue-log{background:linear-gradient(#281f16f5,#0d0906f5),repeating-linear-gradient(135deg,#ffffff06 0 2px,#0000 2px 7px);border:2px solid #624926;border-radius:6px;box-shadow:inset 0 0 0 1px #ffe69b1f,0 8px 22px #0000006b}.stone-panel{padding:10px}.panel-title{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.panel-title b,.panel-title span{display:block}.panel-title b{color:#ffe4a0;font-size:16px}.panel-title span{color:#bba477;font-size:11px}.rpg-bars{gap:7px;display:grid}.rpg-bar{background:#090604;border:1px solid #120b06;border-radius:3px;min-height:24px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffe69b1f}.rpg-bar span{z-index:2;color:#f8ecd2;text-shadow:0 1px 2px #000;justify-content:space-between;align-items:center;height:24px;padding:0 7px;font-size:11px;display:flex;position:relative}.rpg-bar i{width:var(--p);background:linear-gradient(#66d66d,#1f7d34);border-radius:2px;position:absolute;inset:2px auto 2px 2px;box-shadow:inset 0 1px #ffffff59}.rpg-bar.depth i{background:linear-gradient(#7ec8f1,#1f5f91)}.rpg-bar.danger i{background:linear-gradient(#ed6a5d,#8d1413)}.meta-grid{grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px;display:grid}.meta-grid span{color:#cbb27d;text-align:center;background:#00000042;border:1px solid #d8a83e42;border-radius:4px;place-items:center;min-height:44px;padding:5px;font-size:10px;display:grid}.meta-grid b{color:#ffcf62;font-size:14px;display:block}.route-board{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;display:grid}.route-card{text-align:left;background:linear-gradient(#261d14f7,#090604fa),radial-gradient(circle at 50% 0,#4aa9d833,#0000 45%);border:2px solid #514024;border-radius:6px;flex-direction:column;gap:5px;min-height:160px;padding:8px;display:flex}.route-card.selected{border-color:#d8a83e;box-shadow:0 0 0 1px #ffcf6280,0 0 18px #d8a83e38}.route-card.elite{background-color:#462b5c8c}.route-card.boss{background-color:#5b17129e}.route-card.event{background-color:#1e433970}.route-lane,.route-card i{color:#ffcf62;background:#00000047;border:1px solid #d8a83e61;border-radius:3px;width:fit-content;padding:3px 5px;font-size:10px;font-style:normal}.route-card strong{color:#ffe4a0;font-size:14px;line-height:1.2}.route-card em{color:#bba477;font-size:10px;font-style:normal}.route-card p{color:#d7c398;flex:1;font-size:11px}.hub-actions,.result-actions{grid-template-columns:1fr 1fr;gap:7px;display:grid}.relic-grid,.inventory-list{gap:6px;display:grid}.relic-grid{grid-template-columns:1fr 1fr;margin-bottom:7px}.relic-card,.loot-row,.loot-drop{background:#00000047;border:1px solid #d8a83e42;border-radius:4px}.relic-card{min-height:56px;padding:8px}.relic-card b,.relic-card span,.loot-row b,.loot-row span,.loot-drop span,.loot-drop b,.loot-drop em{display:block}.relic-card b,.loot-row b,.loot-drop b{color:#e7d2a0;font-size:13px}.relic-card span,.loot-row span,.loot-drop em{color:#bba477;margin-top:3px;font-size:10px;font-style:normal}.loot-row{text-align:left;min-height:46px;padding:7px}.loot-row.equipped{background:#d8a83e24;border-color:#ffcf62}.legendary b{color:#ff9f37}.epic b{color:#b985ff}.rare b{color:#72c8ff}.empty-state{color:#bba477;text-align:center;border:1px dashed #d8a83e4d;border-radius:4px;padding:10px;font-size:12px}.intel-panel blockquote{color:#ccecff;background:#4aa9d81f;border-left:3px solid #4aa9d8;margin:8px 0 0;padding:8px;font-size:12px;line-height:1.45}.error-line{color:#ff8f82;margin-top:7px}.world-feed{gap:5px;margin-top:8px;display:grid}.world-feed p,.dialogue-log p{color:#d7c398;background:#00000038;border:1px solid #d8a83e2e;border-radius:4px;padding:6px 7px;font-size:11px}.world-feed b,.dialogue-log b{color:#ffcf62;margin-right:6px}.combat-screen{flex-direction:column;justify-content:flex-end;gap:7px;display:flex}.combat-plaque{margin-top:auto;padding:10px}.drpg-enemy-rank{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.enemy-card{background:radial-gradient(circle at 50% 0,#b9272447,#0000 52%),linear-gradient(#251c13f5,#080504fa);border:2px solid #5b4324;border-radius:6px;min-height:66px;padding:8px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffe69b1f}.enemy-card.boss{border-color:#a4772e}.enemy-card b,.enemy-card span{z-index:1;display:block;position:relative}.enemy-card b{color:#ffe4a0;font-size:12px;line-height:1.15}.enemy-card span{color:#d7c398;margin-top:4px;font-size:10px}.enemy-card i,.party-status-grid i{width:var(--p);background:linear-gradient(90deg,#8d1413,#ed6a5d);border-radius:999px;height:4px;position:absolute;bottom:6px;left:6px;right:auto}.combat-bars{gap:6px;display:grid}.party-status-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.party-status-grid article{background:linear-gradient(#211810f0,#080504f0);border:1px solid #d8a83e52;border-radius:5px;min-height:54px;padding:7px;position:relative;overflow:hidden}.party-status-grid article.down{filter:grayscale()brightness(.7)}.party-status-grid b,.party-status-grid span{z-index:1;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;overflow:hidden}.party-status-grid b{color:#f8ecd2;font-size:11px}.party-status-grid span{color:#bba477;margin-top:3px;font-size:10px}.party-status-grid i{background:linear-gradient(90deg,#1f7d34,#66d66d)}.auto-combat-ribbon{color:#d7c398;background:linear-gradient(#43311bf2,#110b07f2);border:1px solid #d8a83e5c;border-radius:5px;justify-content:space-between;align-items:center;gap:8px;min-height:34px;padding:7px 9px;font-size:11px;display:flex}.auto-combat-ribbon b{color:#ffcf62;font-size:13px}.skill-bar{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.skill-btn{background:radial-gradient(circle at 50% 28%,#4aa9d873,#0000 36%),linear-gradient(#30271c,#0b0705);border:2px solid #67502b;border-radius:6px;min-width:0;min-height:58px;padding:5px;box-shadow:inset 0 0 0 1px #ffe69b29}.skill-btn.ready{border-color:#d8a83e}.skill-btn.cooling{filter:grayscale(.65)brightness(.72)}.skill-btn b,.skill-btn span{overflow-wrap:anywhere;text-align:center;display:block}.skill-btn b{color:#ffe4a0;font-size:clamp(10px,3vw,12px)}.skill-btn span{color:#cbb27d;margin-top:4px;font-size:9px}.dialogue-log{gap:5px;max-height:154px;padding:7px;display:grid;overflow:hidden}.result-screen{align-items:flex-end;padding-bottom:18px;display:flex}.result-card{width:100%;min-height:300px;padding:14px}.result-card.lost{background:linear-gradient(#2b080866,#0b0705eb),url(/assets/generated/death_tide_commander.png) 50%/cover no-repeat}.result-card p{margin-top:8px}.loot-drop{background:#0000006b;margin-top:12px;padding:10px}.loot-drop span{color:#cbb27d;font-size:11px}.result-actions{margin-top:14px}.result-actions .primary,.result-actions .metal-button{margin-top:0}.toast{left:18px;right:18px;bottom:max(16px, env(safe-area-inset-bottom));z-index:10;color:#ffe4a0;text-align:center;pointer-events:auto;background:linear-gradient(#3a2b18,#120c07);border:2px solid #8f6b32;border-radius:5px;padding:10px 12px;font-size:13px;position:absolute;box-shadow:0 10px 28px #0000008f}.character-panel .character-row{flex-wrap:wrap;gap:8px;display:flex}.character-chip{text-align:left;background:linear-gradient(#282016f5,#120c07f5);border:1px solid #ffcf6247;border-radius:6px;min-width:108px;padding:8px 10px}.character-chip b{color:#ffe4a0;font-size:13px;display:block}.character-chip span{color:#e7d2a0b8;margin-top:2px;font-size:11px;display:block}.character-chip.active{border-color:#ffcf62;box-shadow:inset 0 0 0 1px #ffcf6259}.character-chip.new-character-btn,.back-hub-btn{border-style:dashed}.character-cap{color:#e7d2a09e;align-self:center;font-size:12px}.llm-loading-overlay{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);pointer-events:auto;background:#050405b8;place-items:center;padding:24px;display:grid;position:absolute;inset:0}.llm-loading-card{text-align:center;background:linear-gradient(#271f16fa,#0c0805fa);border:2px solid #ffcf626b;border-radius:8px;width:min(100%,320px);padding:18px 16px;box-shadow:0 16px 40px #0000008c}.llm-loading-card h2{margin:8px 0 6px;font-size:18px}.llm-loading-card p{color:#e7d2a0d1;margin:0;font-size:13px}.llm-loading-spinner{border:3px solid #ffcf622e;border-top-color:#ffcf62;border-radius:50%;width:28px;height:28px;margin:14px auto 0;animation:.9s linear infinite llm-spin}.start-btn:disabled{opacity:.55;cursor:wait}@keyframes llm-spin{to{transform:rotate(360deg)}}@media (width<=360px){.route-board{grid-template-columns:1fr}.route-card{min-height:118px}.meta-grid{grid-template-columns:repeat(2,1fr)}.skill-bar{gap:4px}}
