html,body{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;background:#0b1622;height:100%;margin:0;overflow:hidden}#game{inset:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);position:fixed}.action-panel{color:#cfe8ff;background:#0b1622eb;border:1px solid #3a5470;border-radius:10px;flex-direction:column;gap:8px;min-width:8.5rem;padding:10px;font:15px/1.3 system-ui,sans-serif;display:flex;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.action-panel[hidden]{display:none}.action-panel[data-side=left]{left:8px;right:auto}.action-panel button{min-height:44px;color:inherit;font:inherit;cursor:pointer;background:#1c3550;border:1px solid #4a90e2;border-radius:8px;padding:0 16px;font-weight:600}.action-panel button:active{background:#2a4d73}.forecast{text-align:center;grid-template-columns:1fr auto 1fr;gap:4px 10px;display:grid}.forecast .name{font-weight:600}.forecast .label{color:#7f9bb5;font-size:13px}.forecast .value{font-variant-numeric:tabular-nums}.forecast .weapon{color:#a9c4dd;font-size:13px}.action-panel .title{text-align:center;font-weight:600}.action-panel .confirm-lines{font-variant-numeric:tabular-nums;flex-direction:column;gap:2px;font-size:13px;display:flex}.action-panel .notice{color:#ffd166;text-align:center;font-size:13px;font-weight:600}.unit-summary{color:#cfe8ff;pointer-events:none;background:#0b1622eb;border:1px solid #3a5470;border-left-width:4px;border-radius:10px;min-width:9rem;max-width:13rem;padding:8px 10px;font:13px/1.35 system-ui,sans-serif;position:absolute;top:48px;left:8px}.unit-summary[hidden]{display:none}.unit-summary[data-side=right]{left:auto;right:8px}.unit-summary[data-faction=player]{border-left-color:#3b6fd8}.unit-summary[data-faction=enemy]{border-left-color:#c0392b}.unit-summary .title{font-size:15px;font-weight:600}.unit-summary .gear{color:#a9c4dd}.unit-summary .stats{font-variant-numeric:tabular-nums;grid-template-columns:repeat(4,auto 1fr);gap:1px 6px;margin-top:4px;display:grid}.unit-summary .stats .label{color:#7f9bb5}.end-turn-button{color:#cfe8ff;cursor:pointer;background:#1c3550;border:1px solid #4a90e2;border-radius:8px;min-height:36px;padding:0 14px;font:600 14px/1 system-ui,sans-serif;position:absolute;top:6px;right:8px}.end-turn-button[hidden]{display:none}.result-screen{color:#cfe8ff;text-align:center;background:#0b1622d9;flex-direction:column;justify-content:center;align-items:center;gap:12px;font:16px/1.4 system-ui,sans-serif;display:flex;position:absolute;inset:0}.result-screen h1{letter-spacing:.04em;margin:0;font-size:clamp(36px,9vw,64px)}.result-screen[data-outcome=victory] h1{color:#8fd0ff}.result-screen[data-outcome=defeat] h1{color:#ff8a80}.result-screen p{margin:0}.result-screen button{min-height:44px;color:inherit;cursor:pointer;background:#1c3550;border:1px solid #4a90e2;border-radius:8px;margin-top:8px;padding:0 28px;font:600 16px/1 system-ui,sans-serif}.level-up{color:#cfe8ff;background:#0b1622f2;border:1px solid #ffd166;border-radius:12px;min-width:12rem;padding:12px 16px;font:13px/1.4 system-ui,sans-serif;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 6px 24px #00000080}.level-up[hidden]{display:none}.level-up .title{color:#ffd166;margin-bottom:6px;font-size:15px;font-weight:600}.level-up .rows{font-variant-numeric:tabular-nums;gap:2px;display:grid}.level-up .row{grid-template-columns:3rem 2rem 2rem;display:grid}.level-up .label{color:#7f9bb5}.level-up .gained .value,.level-up .gained .gain{color:#8ef08e;font-weight:600}.level-up[data-animate=true] .gained{animation:.32s ease-out both level-up-gain}@keyframes level-up-gain{0%{opacity:0;transform:translate(-6px)}}.menu-screen,.camp-screen{touch-action:pan-y;color:#cfe8ff;background:#0b1622;font:16px/1.4 system-ui,sans-serif;position:absolute;inset:0;overflow-y:auto}.menu-screen{box-sizing:border-box;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:16px;display:flex}.menu-screen h1{letter-spacing:.04em;color:#8fd0ff;margin:0;font-size:clamp(36px,9vw,64px)}.menu-screen[data-tone=defeat] h1{color:#ff8a80}.menu-screen .subtitle{color:#9fb8d0;max-width:32rem;margin:0}.menu-screen section{min-width:min(20rem,100%)}.menu-screen h2{text-transform:uppercase;letter-spacing:.08em;color:#9fb8d0;margin:8px 0 4px;font-size:14px}.menu-screen ul{margin:0;padding:0;list-style:none}.menu-screen .buttons{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:8px;display:flex}.menu-screen button,.camp-screen button{min-height:44px;color:inherit;cursor:pointer;background:#1c3550;border:1px solid #4a90e2;border-radius:8px;padding:0 22px;font:600 16px/1 system-ui,sans-serif}.menu-screen button:disabled,.camp-screen button:disabled{opacity:.4;cursor:default}.dialogue{box-sizing:border-box;color:#e6f2ff;cursor:pointer;background:#0b16228c;justify-content:center;align-items:flex-end;padding:12px;font:17px/1.45 system-ui,sans-serif;display:flex;position:absolute;inset:0}.dialogue-box{box-sizing:border-box;background:#102032f5;border:1px solid #3a5470;border-radius:10px;gap:14px;width:min(46rem,100%);min-height:7.5rem;padding:14px 16px 26px;display:flex;position:relative}.dialogue .portrait{border-radius:8px;flex:none;place-items:center;width:4.5rem;height:4.5rem;font-size:32px;font-weight:700;display:grid}.dialogue[data-narration=true] .portrait{display:none}.dialogue .speaker{color:#ffd166;font-weight:700}.dialogue[data-narration=true] .line{color:#b9cde0;font-style:italic}.dialogue .line{margin:4px 0 0}.dialogue .choices{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.dialogue .choices button{min-height:44px;color:inherit;font:inherit;cursor:pointer;background:#1c3550;border:1px solid #4a90e2;border-radius:8px;padding:0 16px}.dialogue .hint{color:#6f8aa5;font-size:12px;position:absolute;bottom:6px;right:12px}.camp-screen{box-sizing:border-box;padding:12px 16px 24px}.camp-screen header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.camp-screen h1{color:#8fd0ff;margin:0;font-size:28px}.camp-screen .primary{background:#24507a;border-color:#8fd0ff}.camp-screen .camp-message{color:#ffd166;min-height:1.4em;margin:6px 0}.camp-screen .roster{grid-template-columns:repeat(auto-fill,minmax(min(19rem,100%),1fr));gap:10px;display:grid}.unit-card,.camp-screen .convoy{background:#102032;border:1px solid #3a5470;border-radius:10px;padding:10px 12px}.camp-screen .convoy{margin-top:10px}.camp-screen h2{margin:0 0 6px;font-size:16px}.unit-card .card-title{align-items:center;gap:8px;display:flex}.unit-card .badge{border-radius:50%;place-items:center;width:28px;height:28px;font-weight:700;display:grid}.unit-card .level{color:#9fb8d0;margin-left:auto;font-size:14px}.unit-card .card-stats,.unit-card .card-spells{color:#9fb8d0;margin-top:4px;font-size:13px}.camp-screen .item-row{border-top:1px solid #1d3348;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;padding:4px 0;display:flex}.camp-screen .give{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.camp-screen .give .label,.camp-screen .empty{color:#6f8aa5;font-size:13px}.camp-screen .item-row button{min-height:36px;padding:0 12px;font-size:14px}
