*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#0b191b;color:#e5eee5;font-family:system-ui,-apple-system,sans-serif;font-size:14px}body{touch-action:manipulation}button,input,select{font:inherit}button{min-height:44px;padding:10px 13px;border:1px solid #597269;border-radius:10px;background:#244139;color:#edf6e9;cursor:pointer;margin:3px 1px}button:active{filter:brightness(1.25)}button:disabled{opacity:.38;cursor:default}.primary{background:linear-gradient(130deg,#866f32,#4c4528);border-color:#d6c186;font-weight:700}.selected{background:#647e61!important;color:#fff}h1{font-size:24px;margin:12px 0 16px}h2{font-size:18px;margin:6px 0 12px}h3{font-size:16px;margin:3px 0 7px}p{line-height:1.65;margin:9px 0}small{display:block;font-size:12px;color:#b9cdbf;line-height:1.5}.muted{font-size:12px;color:#a3b6ad}#stage-app{height:100dvh;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);max-width:760px;margin:auto}#stage-header{flex-shrink:0;display:flex;flex-wrap:wrap;gap:4px 16px;justify-content:space-between;border-bottom:1px solid #716d44;padding:12px;background:#102822}#stage-header strong{letter-spacing:1px;font-family:Georgia,serif}#stage-header span{font-size:12px;color:#d6dabc}#stage-content{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:14px 12px 28px;min-height:0;touch-action:pan-y}#stage-content[hidden],#battle-pane[hidden],#stage-nav[hidden]{display:none}article,details{padding:16px;margin:12px 0;border:1px solid #435d51;border-radius:15px;background:linear-gradient(120deg,#1b352c,#122721);overflow:hidden}details summary{cursor:pointer;min-height:30px}.hero-banner{text-align:center;padding:24px 8px;border-radius:18px;background:radial-gradient(ellipse at top,#406145,#102726 70%);border:1px solid #7b794c}.hero-banner h1{font-family:Georgia,serif;font-size:clamp(24px,7vw,40px);letter-spacing:2px;color:#ede9cd}.party-portraits{display:flex;justify-content:space-evenly;gap:8px;margin:22px 0}.party-portraits>div{width:31%;min-width:0}.party-portraits strong{display:block;font-size:12px;word-break:break-word}.portrait{width:56px;height:56px;object-fit:contain;image-rendering:pixelated;flex-shrink:0;vertical-align:middle}.portrait.large{width:100%;height:130px;max-width:200px}.silhouette{filter:brightness(0);opacity:.65}.card-head{display:flex;align-items:center;gap:10px}.card-head>div{flex:1;min-width:0}.card-head h3,.card-head h2{overflow-wrap:anywhere}.tag{display:inline-block;font-size:11px;line-height:1.6;background:#365244;border:1px solid #4b6a53;color:#dce6bc;padding:3px 6px;border-radius:6px;vertical-align:middle}.monster-card .tag{margin:2px}.filters{position:sticky;top:-14px;background:#0f2420;padding:8px 0;display:flex;gap:8px;z-index:1}.filters input{min-width:0;flex:1}.filters select{width:95px}input,select{background:#112b26;border:1px solid #557064;color:#ecf1db;border-radius:8px;padding:10px;min-height:44px;max-width:100%}label{display:block;line-height:1.7;margin:12px 0}label>select,label>input{display:block;width:100%;margin-top:4px}input[type=file]{width:100%;font-size:12px}.detail{text-align:center}.detail .large{height:230px}.stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.stats>div{background:#0d221e;border-radius:8px;padding:10px}.stats strong{display:block;color:#e7cc86;margin-top:3px}.trait-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.trait-grid>div{background:#10271f;padding:9px;border-radius:9px}.trait-grid button{font-size:12px;width:100%;padding:8px 4px}.stage-enemies{display:flex;gap:12px;align-items:center}.stage-enemies .portrait:last-child{margin-left:auto;width:82px;height:82px}.stage-card.locked{opacity:.65}#stage-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;padding:5px;flex-shrink:0;border-top:1px solid #4d6454;background:#10251f}#stage-nav button{font-size:11px;padding:8px 2px;border-radius:7px;min-height:42px;margin:0}#battle-pane{flex:1;display:flex;flex-direction:column;min-height:0;position:relative}#battle-status{padding:10px 12px;background:#152c25;flex-shrink:0;min-height:85px}.battle-numbers{display:flex;gap:8px;justify-content:space-between;font-size:12px;margin:6px 0;color:#f5dba1}#stage-render{flex:1;min-height:200px;position:relative;overflow:hidden}#stage-render canvas{display:block;image-rendering:pixelated}#battle-notices{pointer-events:none;position:absolute;left:10px;right:10px;bottom:105px;max-height:78px;overflow:hidden;font-size:11px;text-shadow:0 2px 2px #000}#battle-notices>div{margin-top:3px;background:#102720bb;padding:2px 5px;border-radius:4px}#battle-controls{display:flex;flex-wrap:wrap;gap:3px;padding:7px;background:#122821;flex-shrink:0}#battle-controls button{flex:1;min-width:80px;padding:8px 4px;font-size:12px}#battle-controls small{width:100%;text-align:center;font-size:10px}#stage-toast{position:fixed;left:50%;bottom:calc(100px + env(safe-area-inset-bottom));transform:translate(-50%,15px);width:max-content;max-width:90vw;pointer-events:none;opacity:0;transition:.15s;background:#233d32f0;border:1px solid #abac74;border-radius:10px;padding:12px 16px;z-index:100;font-size:13px;text-align:center;box-shadow:0 4px 20px #0008}#stage-toast.show{opacity:1;transform:translate(-50%)}.result{text-align:center;border-color:#d5b76a}.result h2{color:#f2d592}#load-error{padding:25px;line-height:1.7}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #e3ca79;outline-offset:2px}@media(max-height:650px){#stage-header{padding:6px 10px}#stage-nav button{min-height:36px}#battle-status{min-height:70px;padding:6px 10px}.hero-banner{padding-top:10px}.party-portraits{margin:10px 0}}.town-scene{position:relative;min-height:570px;height:calc(100dvh - 165px);background-size:cover;background-position:center;border:1px solid #a79158;border-radius:16px;overflow:hidden;margin:-4px -5px 12px}.town-heading{position:absolute;top:0;left:0;right:0;padding:18px 12px;text-align:center;background:linear-gradient(#10231fef,#10231f00);text-shadow:0 2px 4px #000}.town-heading h1{margin:8px 0}.hotspot{position:absolute;background:#142c27d9;border-color:#c7ae6d;box-shadow:0 0 20px #e6cc6a45;text-shadow:0 1px #000}.hotspot:before{content:"◆";display:block;color:#e9d47c;animation:hot-glow 2s ease-in-out infinite}.central{left:50%;top:43%;transform:translate(-50%);min-width:140px}.left-spot{left:2%;top:59%;max-width:45%}.right-spot{right:2%;top:65%;max-width:45%}.town-arrows{position:absolute;bottom:100px;left:8px;right:8px;display:flex;justify-content:space-between}.town-arrows button{background:#102c27e8;box-shadow:0 2px 10px #000}.town-party{position:absolute;bottom:12px;left:0;right:0;display:flex;justify-content:center;gap:8px}.town-party img{width:75px;height:75px;filter:drop-shadow(0 2px 3px #000)}#stage-nav{grid-template-columns:repeat(3,minmax(0,1fr))}.game-picker{position:relative;min-width:0;flex:1}.picker-trigger{width:100%;text-align:left;background:linear-gradient(#345c47,#1b382b);border:1px solid #b6a466;color:#fff2c6}.picker-options{position:absolute;top:100%;left:0;right:0;z-index:80;max-height:280px;overflow:auto;border:1px solid #b6a466;background:#122a22;box-shadow:0 6px 15px #0009;border-radius:10px;padding:5px}.picker-options button{display:block;text-align:left;width:100%;margin:3px 0;color:#f0efd4;background:#254636}.game-picker [hidden],select[hidden]{display:none!important}button{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.filters .game-picker{flex:0 0 110px}.capture-card{display:flex;align-items:center;gap:8px;background:linear-gradient(120deg,#284c3df5,#10332ef0);border:1px solid #dfca71;border-radius:14px;box-shadow:0 0 20px #e8c66c55;padding:5px 12px;animation:capture-pop .22s ease-out;max-width:290px;margin-top:6px}.capture-card small{color:#ffd97b;font-size:10px}.capture-card strong{display:block;font-size:14px}.capture-card span{font-size:12px}#capture-feed{position:fixed;top:calc(120px + env(safe-area-inset-top));right:10px;z-index:90;pointer-events:none}.bonus-active{box-shadow:inset 0 0 32px #e8bd3c77;outline:2px solid #e9d174}.bonus-active #battle-status{background:linear-gradient(110deg,#5d4920,#173b38)}.bonus-active #battle-status strong{color:#ffe491}.bonus-flare{position:fixed;inset:30% 0 auto;text-align:center;pointer-events:none;z-index:85;font-size:32px;font-family:Georgia,serif;letter-spacing:4px;color:#ffe99b;text-shadow:0 0 20px #ffd23f,0 3px 2px #000;animation:bonus-enter 1.8s ease-out forwards}@keyframes capture-pop{0%{transform:translate(100%) scale(.7);opacity:0}to{transform:translate(0) scale(1);opacity:1}}@keyframes hot-glow{50%{text-shadow:0 0 14px #fff3ab;transform:translateY(-3px)}}@keyframes bonus-enter{0%{opacity:0;transform:scale(.5)}20%,65%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.2)}}.game-modal{position:fixed;inset:0;background:#071711dd;display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}.game-modal article{max-width:450px;border-color:#d0b76b;box-shadow:0 0 50px #c5ac4d44}.game-modal button{min-width:100px}article,.town-scene,#battle-status{-webkit-user-select:none;user-select:none}.exp-readout{text-align:right;color:#ffe894;white-space:nowrap}.exp-readout small{font-size:11px;color:#ffe894}.event-announcement{position:fixed;top:32%;left:4%;right:4%;z-index:120;border:2px solid #fff0a5;background:radial-gradient(ellipse,#765216f5,#192852ee);box-shadow:0 0 55px #ffc850b0,inset 0 0 30px #fff8a050;border-radius:16px;color:#fff5b3;font-size:25px;font-weight:900;text-align:center;letter-spacing:2px;padding:28px 12px;pointer-events:none;animation:event-reveal 1.8s ease-out forwards;text-shadow:0 2px #482000,0 0 16px #ffce3c}.event-active{box-shadow:inset 0 0 45px #eec96099}.event-active #battle-status{background:linear-gradient(100deg,#523e17,#45304f)}@keyframes event-reveal{0%{opacity:0;transform:scale(.4) rotate(-5deg)}15%,70%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.08)}}h1,h2,h3{color:#eff1d4;text-shadow:0 1px 2px #081811}.card-head h3{font-size:17px}.portrait.large{max-width:250px;height:180px}.detail .large{max-width:330px;height:300px}#stage-content,#stage-content *{overflow-anchor:none}.bulk-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-top:8px}.bulk-buttons button{font-size:11px;min-height:45px;padding:7px 3px;overflow-wrap:anywhere}.ex-options{display:flex;flex-wrap:wrap;gap:6px}.ex-options>div{width:30%;display:flex;flex-direction:column;align-items:center}.ex-options button{font-size:12px;padding:6px}.starter-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.starter-options h2{font-size:17px}#battle-notices[hidden]{display:none}#battle-notices{max-height:55px;bottom:130px}.detail{overflow:visible}.detail .portrait.large{display:block;margin:0 auto;max-width:100%;width:min(100%,380px);height:300px;object-fit:contain;flex:none}#battle-log-modal article{width:100%;max-width:600px;max-height:85vh;display:flex;flex-direction:column}.log-scroll{overflow-y:auto;min-height:140px;max-height:55vh;overscroll-behavior:contain;touch-action:pan-y}.log-scroll p{font-size:13px;margin:5px 0;border-bottom:1px solid #547565;padding:5px}.log-scroll time{color:#d2bb74}#story-player{width:min(90vw,480px);min-height:320px;border:1px solid #dac58a;border-radius:16px;color:#fff;background-size:cover;background-position:center;padding:28px;box-sizing:border-box}#story-player::backdrop{background:#000b}#story-player p{font-size:18px;line-height:1.9;min-height:110px;white-space:pre-wrap}#story-player button{margin:8px;padding:12px 20px}#story-player h2{font-size:20px}#story-recall{max-height:75vh;width:min(90vw,480px);background:#142b29;color:#fff;border:1px solid #dac58a}#story-recall button{display:block;width:100%;margin:8px 0;padding:12px}#story-recall-open{position:fixed;right:12px;top:9px;z-index:20;padding:6px 12px;border-radius:12px}.story-party{display:flex;justify-content:center;gap:8px;height:90px}.story-party img{width:82px;height:82px;object-fit:contain;image-rendering:pixelated}#stage-app{position:relative}#stage-header{padding-right:80px;min-height:66px}#story-recall-open{position:absolute}.story-speaker{max-height:30vh;max-width:70%;object-fit:contain;display:block;margin:auto;filter:drop-shadow(0 4px 9px #0008)}#story-player{max-height:95dvh;overflow-y:auto;background-size:cover;background-position:center}#story-player p{white-space:pre-wrap;line-height:1.8}@media(prefers-reduced-motion:reduce){#story-player *,#story-recall *{animation:none!important;transition:none!important}}.evolution-preview{min-height:8em;display:flow-root}#pwa-update{position:fixed;top:env(safe-area-inset-top,0);left:50%;transform:translate(-50%);z-index:10000;background:#e8d389;color:#142722;box-shadow:0 4px 18px #0008;max-width:90vw}.loading-art #battle-status:after{content:"画像を準備しています…（戦闘時間は停止中）";display:block;font-size:.85rem;color:#d9cb8b}body:has(dialog[open]) #pwa-update,body:has(.game-modal) #pwa-update{visibility:hidden}
