:root{font-family:Georgia,Times New Roman,serif;color:#f7edcf;background:#141d18}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;overflow:hidden}#app{height:100vh;height:100dvh}button{font:inherit}#app{--aw: calc(100vw - env(safe-area-inset-left) - env(safe-area-inset-right)) ;--ah: calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom)) ;display:grid;place-items:center;background:radial-gradient(ellipse,#344339,#101714 75%);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}@supports not (height: 100dvh){#app{--ah: calc(100vh - env(safe-area-inset-top) - env(safe-area-inset-bottom)) }}.game-shell{position:relative;width:min(var(--aw),calc(var(--ah) * 16 / 9));height:min(var(--ah),calc(var(--aw) * 9 / 16));container-type:size;overflow:hidden;background:#819376;box-shadow:0 0 60px #0009}.three-root,.hud,.unit-overlays{position:absolute;inset:0}.three-root canvas{display:block;width:100%;height:100%}.hud{pointer-events:none}.battle-topbar{position:absolute;top:2cqh;left:2cqw;right:2cqw;display:flex;justify-content:space-between;align-items:center;text-shadow:0 2px 4px #18291d}.brand{display:grid;gap:5px}.brand small{font-family:system-ui,sans-serif;font-size:max(8px,1.9cqh);letter-spacing:.19em;color:#f8e5ad}.brand strong{font-size:max(14px,3.6cqh);font-weight:500}.timer{border:1px solid #dfc89288;border-radius:4px;padding:.8cqh 1.4cqw;background:#20352d99;font-size:max(14px,3.4cqh);font-variant-numeric:tabular-nums}.hero-dock{pointer-events:auto;position:absolute;left:2cqw;width:62cqw;bottom:2.5cqh;display:grid;grid-template-columns:repeat(5,1fr);gap:.8cqw}.hero-card{position:relative;min-width:0;height:max(76px,21cqh);border:2px solid #b59b63;border-radius:7px 7px 3px 3px;background:linear-gradient(#668477,#213b32);color:#fff1cc;padding:0 4px 5px;display:flex;flex-direction:column;justify-content:flex-end;gap:3px;cursor:pointer;box-shadow:0 3px 8px #0006,inset 0 0 0 2px #243c31;overflow:hidden}.hero-portrait{position:absolute;width:120%;height:auto;left:-10%;bottom:max(16px,4cqh);pointer-events:none}.hero-name{position:relative;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:system-ui,sans-serif;font-weight:700;font-size:max(9px,2cqh);text-shadow:0 1px 3px #000;background:#172a26b3;margin:0 -4px;padding:3px 0}.energy,.card-hp{position:relative;height:4px;overflow:hidden;background:#101e1c;border-radius:1px}.energy i,.card-hp i{display:block;width:0;height:100%;background:#ecc25f;transition:width .12s linear}.card-hp{height:3px}.card-hp i{background:#84c775}.ult-label{display:none}.hero-card.ready{border-color:#ffe895;box-shadow:0 0 14px #f7c95bbb,inset 0 0 12px #efcd5488}.hero-card.ready:after{content:"✦";position:absolute;top:2px;right:4px;color:#ffe992;font-size:19px;text-shadow:0 0 5px #e99230}.hero-card.queued{border-color:#8fd7ff}.hero-card:disabled{cursor:default}.hero-card.dead{opacity:.4;filter:grayscale(1)}.hero-card:focus-visible,.presentation-controls button:focus-visible{outline:2px solid #fff5c5;outline-offset:2px}.dock-caption{position:absolute;bottom:calc(max(76px,21cqh) + 3cqh);left:2cqw;width:62cqw;font-family:system-ui,sans-serif;font-weight:600;font-size:max(9px,2cqh);letter-spacing:.08em;display:flex;justify-content:space-between;color:#e2d5ae;text-shadow:0 1px 3px #000}.dock-caption span{font-size:max(9px,1.9cqh);font-weight:400;letter-spacing:0}.hud:before{content:"";position:absolute;left:0;right:0;bottom:0;height:32cqh;background:linear-gradient(transparent,#152d26e8 35%,#12251ff5);border-bottom:3px solid #af945b}.presentation-controls{position:absolute;bottom:2.5cqh;right:2cqw;display:flex;gap:.8cqw}.presentation-controls.dev-controls{bottom:auto;top:12cqh;flex-direction:column;align-items:flex-end;gap:1cqh}.presentation-controls button{min-height:44px;min-width:44px;padding:0 1cqw;border:1px solid #d7bd7b;border-radius:4px;background:#243a30da;color:#fff0c2;font-family:system-ui,sans-serif;font-size:max(12px,2.6cqh);cursor:pointer}[data-actors],.replay-export{display:none}.game-shell.debug [data-actors],.game-shell.debug .replay-export{display:block}.replay-export{pointer-events:auto;position:absolute;top:12cqh;right:12cqw;border:1px solid #aa935f;padding:8px;background:#223b32;color:#ffe7ab;font-size:9px;cursor:pointer}.combat-log{display:none;position:absolute;top:20cqh;left:2cqw;width:26cqw;background:#172d25ed;color:#f5e3b6;padding:8px;border:1px solid #b49963;border-radius:4px;font-family:system-ui,sans-serif;font-size:9px;line-height:1.5}.game-shell.debug .combat-log{display:block}.unit-bar{position:absolute;width:max(44px,8cqw);transform:translate(-50%,-50%);text-align:center;color:#fff2c9;font-family:system-ui,sans-serif;font-size:max(8px,1.9cqh);text-shadow:0 1px 2px #18291d}.unit-name{display:none}.game-shell.debug .unit-name{display:block;white-space:nowrap;font-size:7px}.hp,.gauge{display:block;height:5px;overflow:hidden;border-radius:2px;background:#152a21b3;border:1px solid #213429}.hp i,.gauge i{display:block;height:100%;width:100%;transition:width .12s linear}.hp i{background:#87cf65}.enemy .hp i{background:#df7b60}.gauge{height:3px;margin-top:1px}.gauge i{background:#e7ca66}.unit-debug{display:block;min-height:10px;margin-top:2px;font-size:7px}.unit-bar.dead{opacity:0}.floating-number{position:absolute;left:50%;top:22px;color:#fff1c9;font-size:17px;font-weight:900;text-shadow:-1px -1px #523325,1px 1px #523325,0 2px 3px #000;animation:floatUp .65s ease-out forwards;pointer-events:none}.floating-number.heal{color:#b9ff99}.ultimate-cutin{position:absolute;top:22%;left:0;right:0;padding:1.5cqh;border-top:1px solid #e7bd57;border-bottom:1px solid #e7bd57;background:linear-gradient(90deg,#172d2500,#172d25ed 20% 80%,#172d2500);text-align:center;font-size:15px;animation:cutIn .75s ease-out forwards}.result{position:absolute;inset:0;display:grid;place-items:center;color:#ffe6a1;background:#172b2355;font-size:48px;text-shadow:0 3px 8px #000;opacity:0;transform:scale(.8);transition:.3s ease}.result.show{opacity:1;transform:scale(1)}@keyframes floatUp{to{transform:translateY(-40px);opacity:0}}@keyframes cutIn{0%{opacity:0;transform:translate(-15px)}20%,70%{opacity:1;transform:translate(0)}to{opacity:0}}@media(prefers-reduced-motion:reduce){.floating-number,.ultimate-cutin{animation:none}}.player-screen{overflow-y:auto;background:#2d493d;padding:16px;font-family:system-ui,sans-serif}.player-screen h1{font-size:max(18px,4.4cqh);margin:0}.player-screen h2{font-size:max(16px,3.6cqh);margin:0 0 .4em}.player-screen header{display:flex;align-items:center;flex-wrap:wrap;gap:4px 16px}.player-screen header small{font-size:max(10px,2cqh);opacity:.8}.player-screen header nav{margin-left:auto}.player-screen header button{min-height:44px;padding:6px 12px}.player-screen .hub-notice{margin:4px 0}.player-screen .hub-notice:empty{display:none}.player-screen:not(.hub-home)>:not(header):not(.hub-notice){width:100%;max-width:min(1040px,100%);margin-inline:auto}.player-screen.hub-home{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,6fr);grid-template-areas:"head head" "note note" "wallet mission" "nudge mission" "camp mission" "camp grid";gap:0 3cqw;align-content:start}.hub-home>header{grid-area:head}.hub-home>.hub-notice{grid-area:note}.hub-home>.hub-wallet{grid-area:wallet;margin:8px 0 0}.hub-home>.hub-camp{grid-area:camp;margin:8px 0;min-height:0}.hub-home>.hub-mission{grid-area:mission;margin:8px 0;padding:max(10px,2.4cqh)}.hub-home>.hub-grid{grid-area:grid;margin:0 0 8px}.hub-home .hub-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.hub-home .hub-grid button{font-size:max(12px,2.6cqh);padding:6px 4px}.hub-home .hub-mission h2,.hub-home .hub-mission h3{margin:2px 0;font-size:max(15px,3.4cqh)}.hub-home .hub-mission button{margin-top:6px}.hub-home .hub-mission p{margin:6px 0 0;font-size:max(11px,2.4cqh)}.player-screen button,.player-screen select,.hub-dialog button{min-height:44px;padding:10px 12px;color:#f7edcf;background:#435c46;border:1px solid #b7a46e;border-radius:10px;cursor:pointer}.player-screen button:focus-visible,.player-screen select:focus-visible{outline:3px solid #e0c36d}.player-screen section{margin:16px 0}.player-screen nav{display:flex;gap:8px}.hub-wallet small{display:block;opacity:.7;margin-top:5px}.hub-camp{min-height:150px;display:flex;flex-direction:column;justify-content:end;align-items:center;padding:16px;position:relative;background:linear-gradient(#91aea1,#cabb89 60%,#55725a 61%);color:#203d31;border-radius:18px;overflow:hidden}.hub-cloud{position:absolute;top:16px;left:20px;animation:hub-drift 8s ease-in-out infinite alternate}@keyframes hub-drift{to{transform:translate(100px)}}.reduce-motion .hub-cloud{animation:none}@media(prefers-reduced-motion:reduce){.hub-cloud{animation:none}}.hub-mission{background:#3e563d;padding:16px;border:1px solid #b7a46e;border-radius:14px}.hub-mission button{width:100%;background:#cbb26b;color:#243a2e}.hub-mission p,.hub-notice{font-size:13px}.hub-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.hub-grid button{font-size:14px}.formation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.formation-grid label{display:grid;gap:8px}.formation-grid select{width:100%;font-size:13px}.hub-dialog{background:#263f33;color:#f7edcf;max-width:340px;border:1px solid #b7a46e;border-radius:16px}.hub-dialog::backdrop{background:#0009}.battle-exit{position:absolute;top:12cqh;left:2cqw;z-index:10;min-height:44px}.story-stage{height:260px;position:relative;overflow:hidden;border-radius:16px;background:linear-gradient(#8cae9c,#c0b37d 65%,#517051 66%)}.story-cloud{position:absolute;top:20px;animation:hub-drift 8s infinite alternate}.story-actor{position:absolute;bottom:20px;left:20%;color:#422f26;text-align:center;transition:transform 1.2s}.story-actor span{display:block;font-size:100px;line-height:1;color:#c7946c}.story-actor.coc{left:60%;color:#273a25}.story-actor.coc span{color:#85a451}.story-stage[data-shot="1"] .pig{transform:translate(20px) rotate(-4deg)}.story-stage[data-shot="2"] .pig{transform:translate(45px)}.story-stage[data-shot="2"] .coc{transform:translate(12px) rotate(5deg)}.story-sign{position:absolute;right:15px;top:100px;background:#645b3d;padding:10px;color:#f3ebd3}.story-subtitle{min-height:72px;padding:12px;background:#243c30;border-radius:12px}.story-map{display:grid;gap:12px;background:#3e553d;padding:16px;border-radius:16px}.story-map button:disabled{opacity:.55;cursor:default}.reduce-motion .story-actor{transition:none}.reduce-motion .story-cloud{animation:none}@media(prefers-reduced-motion:reduce){.story-actor{transition:none}.story-cloud{animation:none}}.story-stage.theme-home{background:linear-gradient(#9eaa84 65%,#73634b 65%)}.story-stage.theme-labor{background:linear-gradient(#889676 65%,#807555 65%)}.story-stage.theme-cave,.story-stage.theme-alarm{background:radial-gradient(ellipse at bottom,#826b43,#24342b 75%)}.story-stage.theme-alarm .story-sign{background:#9c4635}.theme-escape .story-actor{animation:story-run 1s infinite alternate}@keyframes story-run{to{transform:translate(20px) translateY(-4px)}}.reduce-motion .story-actor{animation:none}.quest-stage{position:relative;height:170px;border-radius:16px;background:linear-gradient(#69745d,#a49065);overflow:hidden}.quest-pig,.quest-coc{position:absolute;left:20%;bottom:10px;text-align:center;font-size:13px;animation:story-work 2s ease-in-out infinite alternate}.quest-coc{left:65%}.pig-face,.coc-face{border-radius:45%;padding:14px;background:#cc9b76;color:#48372b;font-size:18px}.coc-face{background:#88a754;color:#30452c}.quest-load{position:absolute;left:18%;top:35px;font-size:24px;color:#cbb789;animation:story-work 2s infinite alternate}.quest-escape{background:linear-gradient(#7d9e86 60%,#47634b 60%)}.quest-escape .quest-pig,.quest-escape .quest-coc{animation:story-run 1s infinite alternate}@keyframes story-work{to{transform:translateY(5px) rotate(-5deg)}}.reduce-motion .quest-stage *{animation:none}@media(prefers-reduced-motion:reduce){.quest-stage *,.story-actor{animation:none}}.enemy-encounter-selector{position:absolute;top:2cqh;left:50%;transform:translate(-50%);z-index:10;min-height:44px;max-width:22cqw;background:#253c32;color:#f7edcf;border:1px solid #baa777;border-radius:8px;padding:8px}.boss-cast{position:absolute;top:12cqh;left:50%;width:44cqw;transform:translate(-50%);background:#4c302bea;color:#fff0cf;border:1px solid #e7a55b;border-radius:10px;padding:8px;font-size:12px;z-index:9}.boss-cast progress{display:block;width:100%;height:8px;margin-top:5px;accent-color:#ee9c4c}.boss-cast[hidden]{display:none}.story-stage.theme-companions{background:linear-gradient(#8ca28b 60%,#47694c 60%)}.story-actor-row{position:absolute;left:12px;right:12px;bottom:16px;display:flex;align-items:flex-end;gap:8px}.story-actor-row .story-actor{position:relative;left:auto;bottom:auto;flex:1;min-width:0;text-align:center;transition:transform 1s;animation:story-breathe 2s ease-in-out infinite alternate}.story-actor-row svg{display:block;width:100%;max-height:125px;overflow:visible}.story-actor-row strong{font-size:13px;display:block}.story-actor-row small{display:block;font-size:10px;line-height:1.3;min-height:26px}.story-actor-row [data-pose=talk]{animation:story-talk .8s ease-in-out infinite alternate}.story-actor-row [data-pose=shy]{animation:story-hesitate 3s ease-in-out infinite alternate}.story-actor-row [data-pose=limp]{animation:story-limp 2.4s ease-in-out infinite}.story-actor-row [data-pose=join]{transform:translate(15px);animation:none}.story-stage[data-shot="2"] [data-pose=join]{transform:translate(0)}@keyframes story-breathe{to{transform:translateY(-3px)}}@keyframes story-talk{to{transform:translateY(-3px) rotate(-4deg)}}@keyframes story-limp{0%{transform:translateY(0)}30%{transform:translateY(-4px) rotate(-2deg)}45%{transform:translateY(1px) rotate(1deg)}70%{transform:translateY(-2px)}to{transform:translateY(0)}}@keyframes story-hesitate{to{transform:translate(5px) rotate(2deg)}}.hub-camp strong{max-width:90%;font-size:16px;line-height:1.4;text-align:center}.reduce-motion .story-actor-row .story-actor{animation:none;transition:none;transform:none}@media(prefers-reduced-motion:reduce){.story-actor-row .story-actor{animation:none;transition:none;transform:none}}.quest-stage .story-actor-row svg{max-height:100px}.battle-hint{text-align:left;font:inherit;font-size:max(12px,2.8cqh);position:absolute;left:50%;width:44cqw;transform:translate(-50%);top:24cqh;margin:0;padding:8px 10px;background:#21372be8;color:#f5ecd5;border:1px solid #c4b78c;border-radius:10px;line-height:1.35;z-index:8;cursor:pointer}.battle-hint[hidden]{display:none}.unit-poison{display:inline-block;margin-top:1px;padding:0 3px;border-radius:6px;background:#3d2f4acc;color:#e2cdf5;font-size:9px;line-height:12px}.unit-poison.ready{background:#6a3f8a;color:#fff;outline:1px solid #e2cdf5}.unit-poison[hidden]{display:none}.tutorial-pause{position:absolute;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;background:#000b;color:#f5ecd5;text-align:center}.tutorial-pause p{max-width:min(520px,70cqw);margin:0;font-size:16px;line-height:1.4}.tutorial-pause button{min-height:44px;padding:0 20px;background:#41583e;color:#f5ecd5;border:1px solid #c4b78c;border-radius:10px;font:inherit}.player-screen ul{padding-left:1.1rem}.player-screen li.locked{opacity:.65}.rotate-screen{display:none}@media(orientation:portrait)and (pointer:coarse){.rotate-screen{position:fixed;inset:0;z-index:1000;display:grid;place-content:center;gap:16px;padding:24px;background:#101714;color:#f7edcf;text-align:center;font-family:system-ui,sans-serif}.rotate-screen i{font-style:normal;font-size:64px;display:inline-block;transform:rotate(90deg);animation:rotate-hint 1.6s ease-in-out infinite alternate}}@keyframes rotate-hint{to{transform:rotate(0)}}@media(prefers-reduced-motion:reduce){.rotate-screen i{animation:none}}.fullscreen-toggle{position:fixed;right:calc(env(safe-area-inset-right) + 6px);top:calc(env(safe-area-inset-top) + 6px);z-index:900;width:44px;height:44px;border:1px solid #d7bd7b;border-radius:8px;background:#243a30cc;color:#fff0c2;font-size:20px;cursor:pointer}.fullscreen-toggle[hidden]{display:none}@media(pointer:fine){.fullscreen-toggle{display:none}}@media(pointer:coarse){.battle-topbar{right:calc(2cqw + 52px)}.player-screen header{padding-right:52px}}.hub-home .hub-mission button{width:calc(50% - 4px)}.hub-home .hub-grid{gap:6px}.hub-home .hub-grid button{min-height:44px}.player-screen section:has(>article[data-hero]){display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 12px}.player-screen section:has(>article[data-hero])>p{grid-column:1/-1;margin:0}.player-screen article[data-hero]{border:1px solid #b7a46e66;border-radius:12px;padding:8px 12px;background:#3e563d66}.player-screen article[data-hero] h2{font-size:max(14px,3cqh)}.player-screen article[data-hero] p{margin:4px 0;font-size:max(12px,2.6cqh)}[data-hero-detail-page]{columns:2;column-gap:4cqw}[data-hero-detail-page]>h2{column-span:all;margin-top:0}[data-hero-detail-page] h3{break-after:avoid;margin:8px 0 4px}[data-hero-detail-page] ul{margin:0}.formation-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.hub-dialog{max-width:min(560px,80cqw);max-height:90cqh;overflow:auto}.story-stage{height:clamp(150px,50cqh,320px)}.quest-stage{height:clamp(120px,40cqh,240px)}.player-screen:has(>.story-stage){display:grid;grid-template-columns:minmax(0,6fr) minmax(0,4fr);gap:6px 3cqw;align-content:start}.player-screen:has(>.story-stage)>small,.player-screen:has(>.story-stage)>h1{grid-column:1/-1;margin:0}.player-screen:has(>.story-stage)>.story-stage{grid-column:1;grid-row:3/8;height:clamp(150px,70cqh,420px)}.player-screen:has(>.story-stage)>:not(small):not(h1):not(.story-stage){grid-column:2;margin:0}.player-screen:has(>.story-stage)>.story-subtitle{min-height:0}.player-screen{padding:max(8px,2cqh) 16px}.key-hint{display:none}@media(pointer:fine){.key-hint{display:block;position:absolute;left:4px;top:3px;padding:0 5px;border-radius:4px;background:#10201ccc;color:#f8e5ad;font:700 max(10px,2.2cqh) system-ui,sans-serif}}.asset-loading{position:absolute;inset:0;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;background:#101a16f2;color:#f5ecd5;text-align:center;font-family:system-ui,sans-serif}.asset-loading p{margin:0;max-width:min(520px,70cqw);font-size:max(14px,3cqh)}.asset-loading progress{width:min(320px,60cqw);height:10px;accent-color:#e7ca66}.asset-loading-actions{display:flex;gap:12px}.asset-loading-actions[hidden]{display:none}.asset-loading button{min-height:44px;padding:0 18px;background:#41583e;color:#f5ecd5;border:1px solid #c4b78c;border-radius:10px;font:inherit;cursor:pointer}.hub-home>.hub-nudge{grid-area:nudge;margin:6px 0 0;padding:6px 8px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;border:1px solid #e7ca66aa;border-radius:12px;background:#4d4a2d;font-size:max(11px,2.4cqh)}.hub-nudge[hidden]{display:none}.hub-nudge span{flex:1 1 100%}.hub-nudge button{flex:1;padding:4px 8px}.storage-tools p{margin:6px 0}.hub-home .hub-grid [data-gallery]{grid-column:span 2}
