@font-face{font-family:Galmuri11;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/Galmuri11-DfQIlyDK.woff2) format("woff2")}@font-face{font-family:Galmuri11;font-style:normal;font-weight:700 1000;font-display:swap;src:url(/assets/Galmuri11-Bold-QdFGsJ3v.woff2) format("woff2")}:root{--ink: #2a2118;--cream: #fff4d6;--paper: #f4dfb4;--wood: #8d5d36;--wood-dark: #4b2e1f;--gold: #e8b94f;--red: #8f2727;--blue: #314f78;--green: #4f774b;--shadow: rgba(42, 33, 24, .28);--screen-max-width: 1120px;font-family:Galmuri11,DungGeunMo,NeoDunggeunmo Pro,Pretendard,Noto Sans KR,Malgun Gothic,sans-serif;color:var(--ink);background:#24170f}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%;margin:0}body{min-height:100vh;background:radial-gradient(circle at 16% 12%,rgba(255,220,140,.28),transparent 24rem),radial-gradient(circle at 86% 20%,rgba(165,91,47,.2),transparent 22rem),linear-gradient(135deg,#1c130c,#392315 48%,#120d09)}button,input{font:inherit}button{color:inherit}.app-shell{display:grid;min-height:100vh;place-items:stretch;padding:0}.app-shell--auth,.app-shell--ending{position:static;width:auto;height:auto;min-height:100vh;overflow:visible;align-content:center;place-items:center;padding:24px;background:transparent}.auth-card{width:min(560px,100%);border:4px solid var(--wood-dark);border-radius:28px;background:linear-gradient(180deg,#fffae5f5,#ecd09af5),var(--cream);box-shadow:0 30px 80px #00000073;padding:32px}.ending-card{position:relative;width:min(560px,100%);border:0;border-radius:0;background:transparent;box-shadow:none;padding:52px 56px 60px}.ending-card:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;border:72px solid transparent;border-image-source:url(/assets/asset_ui_ending_card_panel-CujfXHcB.png);border-image-slice:96 fill;border-image-width:72px;border-image-outset:0;border-image-repeat:stretch;content:"";image-rendering:pixelated;pointer-events:none}.ending-card>*{position:relative;z-index:1}.auth-card h1,.ending-card h1{margin:4px 0 10px;font-size:clamp(2rem,7vw,4rem);letter-spacing:-.06em}.eyebrow{margin:0;color:#79502e;font-weight:900;letter-spacing:.16em;text-transform:uppercase}.auth-card__copy,.ending-card__student{color:#6c4a2f;line-height:1.6}.auth-form{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:24px}.auth-form label{display:grid;gap:8px;font-weight:800}.auth-form label:last-of-type{grid-column:1 / -1}.auth-form input{min-width:0;border:3px solid var(--wood);border-radius:14px;background:#fffaf0;padding:12px 14px}.form-error{grid-column:1 / -1;margin:0;color:#b23022;font-weight:800}.primary-button{border:0;border-radius:999px;background:linear-gradient(180deg,#ffd56b,#dd8c2e);box-shadow:0 8px #8f5528,0 16px 24px #0000003d;cursor:pointer;font-weight:900;padding:14px 22px}.auth-form .primary-button{grid-column:1 / -1}.reservation-note{margin:24px 0 0;color:#79502e;font-size:.85rem}.game-shell{position:relative;width:100vw;min-height:100vh;border:0;border-radius:0;overflow:hidden;background:#0f0a06;box-shadow:inset 0 0 0 4px #fff1c329;image-rendering:pixelated}.game-shell img{image-rendering:pixelated}.game-stage{position:relative;height:100vh;min-height:100vh;overflow:hidden;background:#0f0a06;border-bottom:5px solid #1d130c}.world-layer{position:absolute;top:0;left:0;transform-origin:top left;will-change:transform}.placeholder-bg-school-lobby{background-image:url(/assets/asset_bg_school_lobby-g4xRdnDJ.png);background-position:center;background-size:cover}.placeholder-bg-school-lobby-v2{background-image:url(/assets/asset_bg_school_lobby_v2-29uz6NDl.png);background-position:center;background-size:cover}.placeholder-bg-computer-room{background-image:url(/assets/asset_bg_computer_room-B8oi6okA.png);background-position:center;background-size:cover}.placeholder-bg-computer-room-intro-v2{background-image:url(/assets/asset_bg_computer_room_intro_v2-BOL4sFIO.png);background-position:center;background-size:cover}.placeholder-bg-computer-room-return-v2{background-image:url(/assets/asset_bg_computer_room_return_v2-BXuCVnnr.png);background-position:center;background-size:cover}.placeholder-bg-bletchley-lab{background-image:url(/assets/asset_bg_bletchley_lab-BocaxH0V.png);background-position:center;background-size:cover}.placeholder-bg-bletchley-lab-v2{background-image:url(/assets/asset_bg_bletchley_lab_v2-BfilVlK4.png);background-position:center;background-size:cover}.placeholder-bg-curtain-room{background-image:url(/assets/asset_bg_curtain_room-BX6JtBOD.png);background-position:center;background-size:cover}.placeholder-bg-curtain-room-v2{background-image:url(/assets/asset_bg_curtain_room_v2-CltSJ9yZ.png);background-position:center;background-size:cover}.ui-location-label,.ui-key-counter,.ui-goal-banner{position:absolute;z-index:12}.ui-location-label{top:18px;left:20px;display:grid;width:240px;height:60px;place-items:center;border:0;background:var(--ui-location-label-image) center / 100% 100% no-repeat;color:#fff6d8;font-weight:900;padding:0 24px;text-shadow:0 2px 0 rgba(0,0,0,.24)}.ui-location-label span{display:block;line-height:1;transform:translateY(4px)}.ui-key-counter{top:18px;right:20px;display:flex;gap:10px;align-items:center;justify-content:center;width:184px;height:72px;border:0;background:var(--ui-key-counter-image) center / 100% 100% no-repeat;font-weight:950;padding:0 22px 0 64px}.ui-key-counter span+span{color:#8f2727}.ui-goal-banner{top:72px;left:50%;display:grid;min-width:390px;min-height:70px;max-width:min(72%,760px);place-items:center;transform:translate(-50%);border:0;background:var(--ui-goal-banner-image) center top / 100% 200% no-repeat;font-weight:950;padding:0 64px;text-align:center}.ui-goal-banner span{display:block;line-height:1.1;transform:translateY(-8px)}.ui-goal-banner--hint{background-position:center bottom;animation:banner-pulse .85s ease-in-out infinite alternate}@keyframes banner-pulse{0%{transform:translate(-50%) scale(1)}to{transform:translate(-50%) scale(1.035)}}.scene-entity,.player-sprite{position:absolute;z-index:4;display:grid;width:96px;min-height:72px;place-items:center;transform:translate(-50%,-50%);will-change:left,top;-webkit-user-select:none;user-select:none}.scene-entity{--interaction-marker-x: 0px;--interaction-marker-y: -88px}.scene-entity--asset{border:0;border-radius:0;background-color:transparent;background-position:center;background-repeat:no-repeat;background-size:contain;box-shadow:none;padding:0}.scene-entity--hotspot{width:88px;min-height:88px;--interaction-marker-y: -84px;background:transparent;pointer-events:none}.scene-entity--npc,.player-sprite{width:270px;height:397px;border:0;border-radius:0;background-color:transparent;background-position:center bottom;background-repeat:no-repeat;background-size:contain;box-shadow:none;color:#fff7df;font-size:.8rem;font-weight:900;text-align:center}.scene-entity--npc{--interaction-marker-y: 18px;transform:translate(-50%,-70%)}.player-sprite{width:220px;height:363px;transform:translate(-50%,-95%)}.scene-entity--npc{background-image:var(--scene-entity-image)}.scene-entity--npc_respondent_a,.scene-entity--npc_respondent_b{opacity:.72;filter:drop-shadow(0 10px 12px rgba(0,0,0,.25))}.player-sprite{z-index:8;background-image:var(--player-sprite-image);background-position:calc(50% + var(--player-sprite-offset-x, 0px)) calc(100% + var(--player-sprite-offset-y, 0px));transition:filter .12s ease}.player-sprite.is-walking{filter:drop-shadow(0 9px 6px rgba(0,0,0,.24))}.player-sprite__label,.scene-entity__label{display:none}.placeholder-prop-door{width:190px;height:285px;background-image:url(/assets/asset_prop_door_to_computer_room-Dq6yEvCo.png)}.scene-entity--asset.placeholder-prop-door{transform:translate(-50%,-50%)}.placeholder-prop-headset{width:180px;height:180px;background-image:url(/assets/asset_prop_headset-wYc7iS18.png)}.placeholder-prop-bombe{width:330px;height:300px;background-image:url(/assets/asset_prop_bombe_machine-tFKWvreC.png)}.placeholder-prop-curtain-a,.placeholder-prop-curtain-b{width:300px;height:450px}.placeholder-prop-curtain-a{background-image:url(/assets/asset_prop_red_curtain_a-BRx3ejYA.png)}.placeholder-prop-curtain-b{background-image:url(/assets/asset_prop_red_curtain_b-Be92R-d5.png)}.placeholder-prop-note,.placeholder-prop-codebook,.placeholder-prop-question-card-pile,.placeholder-prop-answer-card,.placeholder-prop-keyword-card-back,.placeholder-prop-cipher-line{background-position:center;background-repeat:no-repeat;background-size:contain}.placeholder-prop-note{width:130px;height:130px;background-image:url(/assets/asset_prop_note_next_era-DYbaqtP7.png)}.placeholder-prop-codebook{width:130px;height:130px;background-image:url(/assets/asset_prop_codebook-DDo7ubze.png)}.placeholder-prop-question-card-pile{width:140px;height:95px;background-image:url(/assets/asset_prop_question_card_pile-C5yCaBql.png)}.placeholder-prop-answer-card{width:130px;height:160px;background-image:url(/assets/asset_prop_answer_card-CRZlivUs.png)}.placeholder-prop-keyword-card-back{width:75px;height:113px;background-image:url(/assets/asset_prop_keyword_card_back-CAlYGriz.png)}.placeholder-prop-cipher-line{width:240px;height:64px;background-image:url(/assets/asset_prop_cipher_line-Wl8gcdPV.png)}.ui-npc-interaction{position:absolute;top:var(--interaction-marker-y, -88px);left:calc(50% + var(--interaction-marker-x, 0px));display:grid;width:88px;height:120px;place-items:center;transform:translate(-50%);border:0;background:var(--ui-npc-interaction-image) left center / 200% 100% no-repeat;font-weight:1000;color:transparent;animation:marker-bob .8s ease-in-out infinite alternate}@keyframes marker-bob{to{transform:translate(-50%,-8px)}}.ui-dialog-box{position:absolute;z-index:20;bottom:24px;left:50%;width:min(1080px,calc(100vw - 56px));transform:translate(-50%)}.dialog-dim{position:absolute;top:0;right:0;bottom:0;left:0;z-index:15;background:#0805034d;pointer-events:none}.ui-speaker-nameplate{position:absolute;top:-20px;left:30px;z-index:2;display:inline-flex;min-width:138px;min-height:42px;align-items:center;justify-content:center;border:16px solid transparent;border-image-source:var(--ui-speaker-nameplate-image);border-image-slice:170 240 fill;border-image-width:16px 28px;border-image-outset:0;border-image-repeat:stretch;color:#fff1c4;font-weight:950;padding:0 18px;text-align:center;text-shadow:0 2px 0 rgba(46,29,18,.72),0 0 6px rgba(46,29,18,.5)}.ui-dialog-portrait{position:absolute;bottom:18px;left:22px;z-index:3;display:grid;width:112px;height:132px;place-items:end center;border:0;border-radius:48px 48px 20px 20px;background:transparent;box-shadow:none;color:#fff4d6;font-size:.72rem;font-weight:950;padding:10px;text-align:center}.ui-dialog-portrait img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(-16px 18px 24px rgba(0,0,0,.34))}.ui-dialog-portrait+.ui-speaker-nameplate{left:150px}.ui-dialog-portrait~.ui-dialog-box__body{min-height:152px;padding-left:156px}.ui-dialog-box--with-portrait{top:0;right:0;bottom:0;left:0;width:auto;transform:none;pointer-events:none;--dialog-portrait-right: clamp(26px, 4vw, 78px);--dialog-portrait-bottom: 0px;--dialog-portrait-width: clamp(190px, 27vw, 330px);--dialog-portrait-height: clamp(330px, 62vh, 580px);--dialog-bubble-gap: clamp(8px, 1.2vw, 18px);--dialog-bubble-bottom: clamp(96px, 16vh, 148px)}.ui-dialog-box--with-portrait:before{content:none}.ui-dialog-box--with-portrait .ui-dialog-box__body{position:absolute;top:auto;right:calc(var(--dialog-portrait-right) + var(--dialog-portrait-width) + var(--dialog-bubble-gap));bottom:var(--dialog-bubble-bottom);left:auto;width:min(700px,calc(100% - var(--dialog-portrait-right) - var(--dialog-portrait-width) - var(--dialog-bubble-gap) - 72px));min-height:clamp(150px,22vh,196px);padding:0 4px 6px;border:48px solid transparent;border-image-source:var(--ui-dialog-box-image);border-image-slice:150 170 fill;border-image-width:48px 56px;border-image-outset:0;border-image-repeat:stretch;background:transparent;box-shadow:none;color:#2e1d12;pointer-events:auto}.ui-dialog-box--with-portrait .ui-dialog-box__body:after{content:none}.ui-dialog-box--with-portrait .ui-speaker-nameplate{position:absolute;top:-86px;left:42px;display:inline-flex;border:16px solid transparent;border-image-source:var(--ui-speaker-nameplate-image);border-image-slice:170 240 fill;border-image-width:16px 28px;border-image-outset:0;border-image-repeat:stretch;color:#fff1c4;font-size:1.15rem;padding:0 18px}.ui-dialog-box--with-portrait .ui-dialog-box__body p{max-width:92%;font-size:clamp(1.08rem,2.2vw,1.65rem)}.ui-dialog-box--with-portrait .ui-next-indicator{right:-16px;bottom:-18px}.ui-dialog-box--with-portrait .ui-dialog-portrait{right:var(--dialog-portrait-right);left:auto;bottom:var(--dialog-portrait-bottom);width:var(--dialog-portrait-width);height:var(--dialog-portrait-height);align-items:end;border:0;border-radius:46% 46% 0 0;background:transparent;box-shadow:none;overflow:visible;pointer-events:none}.ui-dialog-box--with-portrait .ui-dialog-portrait:before{content:none}.ui-dialog-box--with-portrait .ui-dialog-portrait span{width:72%;margin:0 auto 28px;border:14px solid transparent;border-image-source:url(/assets/asset_ui_speaker_nameplate-DQezygLt.png);border-image-slice:170 240 fill;border-image-width:14px 24px;border-image-outset:0;border-image-repeat:stretch;color:#fff1c4;font-size:clamp(.76rem,1.35vw,1rem);padding:0 14px;text-shadow:0 2px 0 rgba(46,29,18,.72),0 0 6px rgba(46,29,18,.5)}.ui-dialog-box__body{position:relative;display:block;width:100%;min-height:136px;border:48px solid transparent;border-image-source:var(--ui-dialog-box-image);border-image-slice:150 170 fill;border-image-width:48px 56px;border-image-outset:0;border-image-repeat:stretch;background:transparent;box-shadow:none;padding:0 4px 4px;text-align:left}.ui-dialog-box__body.is-clickable{cursor:pointer}.ui-dialog-box__body p{margin:0;font-size:clamp(1.08rem,1.55vw,1.32rem);font-weight:400;line-height:1.5}.ui-dialog-box--narrator .ui-dialog-box__body{background:transparent;color:#2e1d12}.ui-dialog-box--system .ui-dialog-box__body{min-height:90px;background:transparent}.ui-dialog-box--player{bottom:24px}.ui-dialog-box--player .ui-speaker-nameplate{top:-20px;left:30px}.ui-dialog-box--player .ui-dialog-box__body{min-height:136px;background:transparent;padding:0 4px 4px}.ui-dialog-box--player .ui-dialog-box__body:before{content:none}.ui-dialog-box--player .ui-dialog-box__body p{font-size:clamp(1.08rem,1.55vw,1.32rem)}.ui-dialog-box--player.ui-dialog-box--with-portrait{top:0;right:0;left:0;bottom:0;--dialog-player-portrait-left: clamp(18px, 4vw, 70px);--dialog-player-portrait-width: clamp(170px, 22vw, 270px);--dialog-bubble-gap: clamp(8px, 1.2vw, 18px)}.ui-dialog-box--player.ui-dialog-box--with-portrait .ui-dialog-portrait{right:auto;left:var(--dialog-player-portrait-left);bottom:0;width:var(--dialog-player-portrait-width);height:clamp(300px,58vh,510px)}.ui-dialog-box--player.ui-dialog-box--with-portrait .ui-dialog-box__body{right:clamp(28px,4vw,82px);bottom:clamp(32px,5vh,54px);left:calc(var(--dialog-player-portrait-left) + var(--dialog-player-portrait-width) + var(--dialog-bubble-gap));width:auto;min-height:clamp(138px,20vh,178px)}.ui-dialog-box--player.ui-dialog-box--with-portrait .ui-speaker-nameplate{top:-72px;left:42px}.conversation-listener{position:absolute;right:clamp(18px,4%,78px);bottom:clamp(140px,19%,190px);z-index:19;display:grid;width:clamp(150px,18%,250px);height:clamp(230px,42%,380px);place-items:end center;border-radius:46% 46% 0 0;background:var(--conversation-listener-image) center bottom / contain no-repeat;filter:saturate(.95);opacity:.94;pointer-events:none}.conversation-listener:before{content:none}.conversation-listener span{width:78%;margin-bottom:22px;border:14px solid transparent;border-image-source:url(/assets/asset_ui_speaker_nameplate-DQezygLt.png);border-image-slice:170 240 fill;border-image-width:14px 24px;border-image-outset:0;border-image-repeat:stretch;color:#fff1c4;font-size:.78rem;font-weight:900;padding:0 12px;text-align:center;text-shadow:0 2px 0 rgba(46,29,18,.72),0 0 6px rgba(46,29,18,.5)}.ui-next-indicator{position:absolute;right:-16px;bottom:-18px;display:inline-grid;width:36px;height:36px;place-items:center;background:var(--ui-next-indicator-image) center / contain no-repeat;color:#8f5528;font-size:0;z-index:4;animation:next-blink .75s steps(2,end) infinite}@keyframes next-blink{50%{opacity:.2}}.ui-select-buttons-abc{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.ui-select-buttons-abc button{display:flex;gap:8px;align-items:center;justify-content:center;min-width:118px;min-height:52px;border:0;border-radius:999px;background:var(--ui-select-buttons-abc-image) left center / 200% 100% no-repeat,#fff9e8;cursor:pointer;font-weight:500;padding:13px 20px;line-height:1.2;text-align:center;white-space:normal}.ui-select-buttons-abc button.is-selected{background:var(--ui-select-buttons-abc-image) right center / 200% 100% no-repeat,#ffd95d;box-shadow:0 6px #6d472852}.letter-answer{display:grid;grid-template-columns:1fr minmax(140px,240px) auto;gap:12px;align-items:center;width:min(620px,100%);margin-top:18px;font-weight:950}.letter-answer input{width:100%;border:4px solid #6d4728;border-radius:18px;background:#fff9e8;color:#8f2727;font-size:1.35rem;font-weight:1000;padding:10px 14px;text-align:center;text-transform:uppercase}.inline-confirm-button{border:3px solid #6d4728;border-radius:16px;background:#ffd95d;cursor:pointer;font-weight:1000;padding:12px 18px}.minigame-help{margin-top:10px!important;color:#6d4728;font-size:.95rem!important}.ui-cursor{display:inline-grid;width:20px;height:20px;place-items:center;background:var(--ui-cursor-image) center / contain no-repeat;color:transparent}.touch-controls{position:absolute;z-index:24;right:24px;bottom:178px;left:24px;display:none;justify-content:space-between;pointer-events:none}.d-pad,.action-pad{pointer-events:auto}.d-pad{display:grid;grid-template-columns:56px 56px 56px;grid-template-rows:56px 56px 56px;gap:4px}.d-pad button,.action-pad{border:3px solid #20150d;border-radius:16px;background:#fff4d6e0;box-shadow:0 7px #0000003d;cursor:pointer;font-weight:1000}.d-pad__up{grid-column:2;grid-row:1}.d-pad__left{grid-column:1;grid-row:2}.d-pad__right{grid-column:3;grid-row:2}.d-pad__down{grid-column:2;grid-row:3}.action-pad{width:82px;height:82px;align-self:end;border-radius:50%;background:linear-gradient(180deg,#ffd56b,#dc8a2f)}.fx-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;background:radial-gradient(circle at center,rgba(255,217,93,.18),transparent 36vmin),#0c080599;color:#2a2118;font-size:clamp(2rem,8vw,5rem);font-weight:1000;text-shadow:0 2px 0 #fff8dc;animation:fx-fade 1.35s ease-in-out forwards}.fx-overlay:before{width:min(78vmin,680px);aspect-ratio:1;background-image:var(--fx-image);background-position:left center;background-repeat:no-repeat;background-size:auto 100%;content:"";filter:brightness(1.18) contrast(1.14) drop-shadow(0 0 28px rgba(255,217,93,.48)) drop-shadow(0 20px 36px rgba(0,0,0,.36))}.fx-overlay span{position:absolute;bottom:10vh;border-radius:999px;background:#fff4d6d1;font-size:.9rem;padding:8px 14px}.fx-overlay.placeholder-fx-headset-fade:before{animation:fx-sprite-headset 1.1s steps(4) forwards}.fx-overlay.placeholder-fx-note-open:before{animation:fx-sprite-note 1.15s steps(5) forwards}.fx-overlay.placeholder-fx-key-appear:before{animation:fx-sprite-key 1.15s steps(5) forwards}.fx-overlay.placeholder-fx-keyword-card-flip:before{animation:fx-sprite-card 1.25s steps(6) forwards}.ending-cut-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:32;display:grid;gap:18px;place-content:center;background:#090604;color:#fff4d6;text-align:center;animation:ending-cut-fade 2.2s ease-in-out forwards}.ending-cut-overlay:before{justify-self:center;width:min(48vmin,340px);aspect-ratio:1;background-image:var(--ending-key-image);background-position:left center;background-repeat:no-repeat;background-size:auto 100%;content:"";filter:brightness(1.18) contrast(1.14) drop-shadow(0 0 28px rgba(255,217,93,.48)) drop-shadow(0 20px 36px rgba(0,0,0,.36));image-rendering:pixelated;animation:fx-sprite-key 1.15s steps(5) forwards}.ending-cut-overlay strong{font-size:clamp(1.8rem,6vw,4.8rem);text-shadow:0 4px 22px rgba(232,185,79,.48)}@keyframes fx-fade{0%{opacity:0}14%,84%{opacity:1}to{opacity:0}}@keyframes fx-sprite-headset{to{background-position:right center}}@keyframes fx-sprite-note{to{background-position:right center}}@keyframes fx-sprite-key{to{background-position:right center}}@keyframes fx-sprite-card{to{background-position:right center}}@keyframes ending-cut-fade{0%,to{opacity:0}18%,82%{opacity:1}}.minigame-panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:18;display:grid;align-content:start;gap:10px;overflow:hidden;background:#140e08eb;padding:84px 46px 150px;border:0 solid transparent;border-image-source:var(--asset-ui-minigame-panel);border-image-slice:220 fill;border-image-width:46px 40px 42px 40px;border-image-outset:0;border-image-repeat:stretch}.minigame-panel--bombe{gap:8px;padding:82px 46px 150px}.minigame-panel>.ui-goal-banner{position:relative;top:auto;left:auto;z-index:1;justify-self:center;width:min(520px,88%);min-height:42px;margin:0 auto -2px;transform:none;font-size:.92rem}.minigame-panel--bombe .ui-dialog-box{position:absolute;right:auto;bottom:24px;left:50%;width:min(960px,calc(100% - 92px));transform:translate(-50%)}.bombe-stage-panel{display:grid;gap:8px;justify-self:center;width:min(1080px,100%);transition:opacity .35s ease,transform .35s ease}.bombe-stage-panel.is-entering{animation:stage-fade-in 1s ease both}.bombe-stage-header{display:grid;min-height:132px;align-content:center;gap:5px;border:30px solid transparent;border-image-source:var(--asset-ui-feedback-box);border-image-slice:220 fill;border-image-width:30px 46px;border-image-outset:0;border-image-repeat:stretch;background:transparent;box-shadow:none;color:#2e1d12;padding:0 12px 4px}.bombe-stage-header span{color:#8f5528;font-size:.84rem;font-weight:1000;letter-spacing:.12em;text-transform:uppercase}.bombe-stage-header strong{font-size:clamp(1.15rem,2.5vw,1.75rem);line-height:1.12}.bombe-stage-header p,.bombe-controls-help{margin:0;color:#5d3b22;font-weight:850;line-height:1.45}.bombe-machine-strip{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.bombe-machine-strip figure{display:grid;gap:4px;justify-items:center;margin:0;border:3px solid #2e1d12;border-radius:18px;background:#fff4d6f0;box-shadow:0 6px #0000002e;color:#6d4728;font-size:.84rem;font-weight:950;padding:6px 10px}.bombe-machine-strip img{width:72px;height:44px;object-fit:contain}.bombe-machine-strip figcaption{max-width:120px;text-align:center}.bombe-play-area{display:grid;grid-template-columns:minmax(360px,1fr) minmax(240px,.56fr);gap:14px;align-items:start}.bombe-card-grid{justify-content:stretch}.bombe-stage-card{display:grid;align-content:center;justify-items:center;min-height:84px;width:100%;padding:18px 22px 20px;text-align:center}.bombe-stage-card p{color:#2e1d12;font-size:clamp(1rem,2.2vw,1.35rem);margin:6px 0 0}.bombe-stage-card.is-bouncing{animation:card-bounce-back .42s ease}.slot-row--bombe{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));justify-content:stretch}.bombe-card-slot{display:grid;align-content:center;justify-items:center;min-height:96px;padding:18px 22px 20px;text-align:center}.bombe-card-slot strong{color:#8f5528}.bombe-card-slot strong img,.slot-row--primary .ui-card-slot strong img{width:44px;height:44px;object-fit:contain}.bombe-card-slot span{font-size:1.18rem}.bombe-placed-list{display:flex;flex-wrap:wrap;gap:7px;min-height:24px}.bombe-placed-list small{border:2px solid rgba(109,71,40,.42);border-radius:999px;background:#ffd95d47;color:#5d3b22;font-weight:900;padding:4px 8px}.bombe-controls-help{justify-self:center;margin:0;padding:11px 28px 14px;border:0 solid transparent;border-image-source:var(--asset-ui-feedback-box);border-image-slice:220 fill;border-image-width:18px 30px;border-image-outset:0;border-image-repeat:stretch;color:#2e1d12;font-weight:900}.minigame-panel--bombe .ui-dialog-box__body{min-height:82px;border:32px solid transparent;border-image-source:var(--ui-dialog-box-image);border-image-slice:150 170 fill;border-image-width:32px 42px;border-image-outset:0;border-image-repeat:stretch;background:transparent;padding:0 8px 2px}.minigame-panel--bombe .ui-dialog-box__body p{font-size:clamp(.9rem,1.8vw,1.1rem);font-weight:400}.cipher-board{display:grid;gap:8px;justify-self:center;min-width:min(680px,90%);border:4px solid #2e1d12;border-radius:22px;background:#f9e2b7;box-shadow:0 12px #00000042;padding:18px 24px;text-align:center}.cipher-board strong{font-family:Courier New,monospace;font-size:clamp(1.6rem,5vw,3.4rem);letter-spacing:.18em}.cipher-board__label,.concept-card span,.concept-card small{color:#8f5528;font-size:.82rem;font-weight:950;letter-spacing:.08em}.enigma-workbench{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(360px,1.1fr);gap:18px;justify-self:center;width:min(1060px,100%)}.enigma-machine-card,.rotor-test-card{display:grid;gap:14px;border:4px solid #2e1d12;border-radius:24px;background:radial-gradient(circle at 10% 0%,rgba(255,217,93,.32),transparent 34%),linear-gradient(145deg,#f8e1ad,#c89152);box-shadow:0 11px #00000042;color:#2e1d12;padding:20px 22px}.enigma-machine-card h2{margin:0;font-size:clamp(1.2rem,2.5vw,1.7rem);line-height:1.25}.enigma-machine-card p:last-child{margin:0;line-height:1.5}.enigma-route{display:grid;gap:9px}.enigma-route span{position:relative;border:3px solid #6d4728;border-radius:16px;background:#fff9e8eb;font-weight:950;padding:10px 12px;text-align:center}.enigma-route span:not(:last-child):after{content:"v";position:absolute;right:14px;bottom:-17px;color:#6d4728;font-weight:1000}.candidate-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.candidate-token{display:grid;gap:4px;border:3px solid #6d4728;border-radius:18px;background:#fff9e8eb;color:#2e1d12;cursor:pointer;font-weight:950;padding:12px 10px}.candidate-token strong{font-size:2rem}.candidate-token.is-selected{outline:4px solid #ffd95d;transform:translateY(-3px)}.candidate-token.is-pass{border-color:#2e7d46;background:#dff4c7}.candidate-token.is-fail{border-color:#9b342c;background:#f8c7aa}.rotor-inspection{display:grid;gap:12px;border:3px dashed rgba(46,29,18,.68);border-radius:20px;background:#fff9e8d1;padding:14px}.rotor-window-row{display:flex;gap:10px;justify-content:center}.rotor-window-row span{display:grid;place-items:center;width:54px;height:64px;border:4px solid #2e1d12;border-radius:14px;background:linear-gradient(180deg,rgba(255,255,255,.55),transparent),#3c3329;color:#ffd95d;font-family:Courier New,monospace;font-size:1.65rem;font-weight:1000}.rotor-inspection dl{display:grid;gap:8px;margin:0}.rotor-inspection dl div{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:center}.rotor-inspection dt{color:#79502e;font-size:.88rem;font-weight:950}.rotor-inspection dd{margin:0;font-weight:950}.status-pass{color:#146b34}.status-fail{color:#9b342c}.inspect-button{border:3px solid #2e1d12;border-radius:18px;background:#ffd95d;box-shadow:0 6px #00000038;color:#2e1d12;cursor:pointer;font-weight:1000;padding:12px 16px}.decoder-principle-card{display:grid;gap:14px;justify-self:center;width:min(860px,100%);border:4px solid #2e1d12;border-radius:24px;background:radial-gradient(circle at top left,rgba(255,217,93,.36),transparent 34%),linear-gradient(135deg,#fff4d6,#f5d59a);box-shadow:0 11px #0000003d;color:#2e1d12;padding:20px 24px}.decoder-principle-card h2,.decoder-principle-card ol{margin:0}.decoder-principle-card h2{font-size:clamp(1.25rem,2.8vw,1.9rem);line-height:1.25}.decoder-principle-card ol{display:grid;gap:8px;padding-left:22px}.decoder-principle-card li{line-height:1.45}.decoder-flow{display:flex;flex-wrap:wrap;gap:10px}.decoder-flow span{position:relative;border:3px solid #6d4728;border-radius:999px;background:#fff9e8eb;color:#6d4728;font-size:.92rem;font-weight:950;padding:8px 14px}.decoder-flow span:not(:last-child):after{content:">";margin-left:10px;color:#8f5528}.bombe-layout,.card-table,.question-strip,.answer-card-list,.slot-row{display:flex;flex-wrap:wrap;gap:14px;justify-content:center}.bombe-machine-card,.codebook-card,.curtain-card{border:3px solid #2e1d12;border-radius:18px;background:#fff4d6f0;box-shadow:0 9px #00000038;font-weight:950;padding:18px 22px}.curtain-card{display:grid;gap:8px;justify-items:center;min-width:150px}.curtain-card img{width:118px;height:148px;object-fit:contain}.bombe-answer-panel{position:sticky;top:92px;z-index:25;display:grid;gap:10px;justify-self:center;width:min(820px,100%);border:5px solid #ffd95d;border-radius:26px;background:linear-gradient(135deg,rgba(255,217,93,.35),transparent 60%),#fff8defc;box-shadow:0 12px #00000047,0 0 32px #ffd95d47;padding:20px 24px}.minigame-continue{justify-self:center;z-index:22}.question-strip article{display:grid;gap:4px;min-width:168px;border:3px solid #2e1d12;border-radius:16px;background:#fff4d6;padding:10px 12px}.question-strip strong{color:#8f2727}.current-answer-card{display:grid;gap:4px;justify-self:center;width:min(680px,100%);padding:16px 32px 20px;border:0 solid transparent;border-image-source:var(--asset-ui-feedback-box);border-image-slice:220 fill;border-image-width:22px 34px;border-image-outset:0;border-image-repeat:stretch;text-align:center}.current-answer-card span,.current-answer-card small{color:#8f5528;font-weight:950}.current-answer-card strong{color:#8f2727;font-size:.9rem;letter-spacing:.12em;text-transform:uppercase}.current-answer-card p{margin:0;font-size:clamp(1.05rem,2.8vw,1.65rem);font-weight:400;line-height:1.3}.slot-row--primary .ui-card-slot{min-width:min(300px,46%);min-height:128px;padding:18px 26px 20px}.slot-row--primary .ui-card-slot span{font-size:clamp(1.05rem,2.4vw,1.38rem);line-height:1.2}.minigame-panel--cards{gap:8px;grid-template-rows:auto auto auto auto auto auto auto;padding:72px 24px 144px}.minigame-panel--cards .card-table,.minigame-panel--cards .question-strip,.minigame-panel--cards .answer-card-list,.minigame-panel--cards .slot-row{gap:8px}.minigame-panel--cards .slot-row--primary{display:grid;grid-template-columns:repeat(2,minmax(220px,320px));justify-content:center}.minigame-panel--cards .question-strip article{min-width:160px;padding:8px 10px}.minigame-panel--cards .curtain-card{gap:5px;min-width:120px;padding:6px 12px}.minigame-panel--cards .curtain-card img{width:54px;height:66px}.minigame-panel--cards .answer-card-list{display:none}.minigame-panel--cards .ui-dialog-box{position:absolute;right:auto;bottom:20px;left:50%;width:min(920px,calc(100% - 72px));transform:translate(-50%)}.minigame-panel--cards .ui-dialog-box__body{min-height:82px;border:32px solid transparent;border-image-source:var(--ui-dialog-box-image);border-image-slice:150 170 fill;border-image-width:32px 42px;border-image-outset:0;border-image-repeat:stretch;background:transparent;padding:0 8px 2px}.minigame-panel--cards .ui-dialog-box__body p{font-size:clamp(.86rem,1.7vw,1.04rem);font-weight:400;line-height:1.35}.minigame-panel--cards .slot-row--primary .ui-card-slot{display:grid;align-content:center;justify-items:center;min-height:136px;width:100%;padding:18px 24px 20px;text-align:center}.minigame-panel--cards .slot-row--primary .ui-card-slot strong img{width:44px;height:44px}.minigame-panel--cards .slot-row--primary .ui-card-slot span{font-size:clamp(1rem,2.2vw,1.28rem)}.ui-card-draggable,.ui-card-slot{position:relative;display:grid;align-content:center;justify-items:center;border:0;border-radius:0;background:var(--asset-ui-card-frame) 0% 0% / 300% 100% no-repeat;box-shadow:none;cursor:pointer;padding:18px 18px 20px;text-align:center}.ui-card-draggable{width:min(280px,100%)}.ui-card-draggable span{color:#8f5528;font-size:.8rem;font-weight:1000;text-transform:uppercase}.ui-card-draggable p{margin:6px 0 0;font-weight:400;line-height:1.45}.ui-card-draggable.is-selected,.ui-card-slot.is-selected{background-position:50% 0%;outline:none}.ui-card-draggable.is-disabled,.ui-card-slot.is-disabled{background-position:100% 0%;filter:saturate(.7);pointer-events:none}.status-icon{display:inline-block;width:1.4em;height:1.4em;vertical-align:middle;background-repeat:no-repeat;background-size:contain;background-position:center;pointer-events:none}.status-icon--check{background-image:url(/assets/asset_icon_status_check-D3gItos_.png)}.status-icon--cross{background-image:url(/assets/asset_icon_status_cross-BilujS_q.png)}.status-icon--star{background-image:url(/assets/asset_icon_status_star-D53PA7j-.png)}.status-icon--crown{background-image:url(/assets/asset_icon_status_crown-BEqj2sQ3.png)}.status-icon--key{background-image:url(/assets/asset_icon_status_key-DAZwjoNa.png)}.ui-card-status{position:absolute;top:-14px;right:-14px;width:38px;height:38px;filter:drop-shadow(0 4px 6px rgba(0,0,0,.35));z-index:2;animation:status-icon-pop .32s ease-out}.current-answer-card__icon{width:1.2em;height:1.2em;margin-right:6px}.bombe-stage-header__crown{margin-left:10px;width:1.1em;height:1.1em}.minigame-continue__icon{margin-right:8px;width:1.2em;height:1.2em}.ending-cut-overlay__key{width:clamp(48px,8vw,92px);height:clamp(48px,8vw,92px);background-color:transparent}.ending-card__crown{width:1em;height:1em;margin-right:10px;vertical-align:-.12em}.ending-card__key{width:1.1em;height:1.1em;margin:0 4px}@keyframes status-icon-pop{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.18)}to{opacity:1;transform:scale(1)}}.ui-card-draggable.is-picked{transform:translateY(-8px)}.ui-card-slot{display:grid;gap:4px;min-width:170px;text-align:center}.ui-card-slot strong{color:#8f5528;font-size:.78rem}.ui-card-slot span{font-size:1.35rem;font-weight:1000}.ui-card-slot em{color:#6d4728;font-style:normal;font-weight:800}.quiz-panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:22;pointer-events:none}.quiz-panel .ui-dialog-box{bottom:24px;pointer-events:auto}.quiz-panel .ui-dialog-box__body{min-height:188px;border:48px solid transparent;border-image-source:var(--ui-dialog-box-image);border-image-slice:150 170 fill;border-image-width:48px 56px;border-image-outset:0;border-image-repeat:stretch;background:transparent;padding:0 4px 18px}.quiz-panel .ui-dialog-box__body p{margin-bottom:14px;font-size:clamp(1.08rem,1.6vw,1.35rem)}.quiz-panel .ui-select-buttons-abc{gap:12px;margin-top:22px}.quiz-panel .ui-select-buttons-abc button{min-width:128px}.quiz-feedback{margin-top:12px!important;color:#8f2727;font-size:1rem!important}.ending-card p{line-height:1.7}.app-shell--ending{align-content:start;overflow:auto}.app-shell--ending .ending-card{width:min(860px,100%);padding:clamp(50px,6vw,74px) clamp(42px,7vw,78px) clamp(56px,7vw,82px)}.app-shell--ending .ending-card h1{margin:2px 0 8px;font-size:clamp(2.1rem,4.8vw,3.2rem);letter-spacing:0}.app-shell--ending .ending-card p{margin:8px 0}.concept-card{position:relative;display:grid;gap:10px;justify-items:start;margin-top:24px;border:0;border-radius:0;background:transparent;padding:40px 36px 44px}.concept-card:before{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;border:48px solid transparent;border-image-source:url(/assets/asset_ui_concept_card_panel-DE3Y32r1.png);border-image-slice:74 fill;border-image-width:48px;border-image-outset:0;border-image-repeat:stretch;content:"";image-rendering:pixelated;pointer-events:none}.concept-card>*{position:relative;z-index:1}.concept-card img{justify-self:center;width:min(320px,100%);border:3px solid rgba(109,71,40,.58);border-radius:18px;box-shadow:0 12px 28px #38271938}.concept-card strong{font-size:1.45rem}.concept-card p{margin:0}.app-shell--ending .concept-card{width:min(360px,100%);justify-self:center;grid-template-columns:1fr;align-items:start;justify-items:center;gap:10px;margin-top:18px;padding:54px 44px 58px;text-align:center}.app-shell--ending .concept-card>span,.app-shell--ending .concept-card>small{display:none}.app-shell--ending .concept-card img{width:min(176px,100%);max-height:244px;object-fit:contain}.app-shell--ending .concept-card strong{align-self:auto}.app-shell--ending .concept-card p{align-self:auto;font-size:.92rem;line-height:1.55}@keyframes stage-fade-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes card-bounce-back{0%,to{transform:translate(0)}25%{transform:translate(-12px)}55%{transform:translate(10px)}78%{transform:translate(-6px)}}@media (max-width: 760px){.app-shell{padding:0}.game-shell{width:100%;min-height:100vh;border-radius:0;border-width:0}.game-stage{min-height:60vh}.ui-location-label,.ui-key-counter{top:12px;font-size:.78rem;padding:7px 10px}.ui-location-label{left:12px}.ui-key-counter{right:12px}.ui-goal-banner{top:58px;max-width:calc(100% - 24px);font-size:.9rem}.scene-entity,.player-sprite{transform:translate(-50%,-50%) scale(.82)}.scene-entity--npc{transform:translate(-50%,-70%) scale(.82)}.player-sprite{transform:translate(-50%,-95%) scale(.82)}.ui-dialog-box{bottom:10px;left:50%;width:calc(100vw - 20px);transform:translate(-50%)}.ui-dialog-box__body{min-height:136px;padding:22px 20px}.ui-dialog-portrait{display:none}.ui-dialog-box--with-portrait{top:0;right:0;bottom:0;left:0;width:auto;transform:none}.ui-dialog-box--with-portrait:before{display:block}.ui-dialog-box--with-portrait .ui-dialog-box__body{position:absolute;top:auto;right:auto;bottom:184px;left:12px;width:calc(100% - 150px);min-height:132px;padding:0 4px 4px;border:32px solid transparent;border-image-source:var(--ui-dialog-box-image);border-image-slice:150 170 fill;border-image-width:32px 38px;border-image-outset:0;border-image-repeat:stretch}.ui-dialog-box--with-portrait .ui-next-indicator{right:-10px;bottom:-12px}.ui-dialog-box--with-portrait .ui-dialog-portrait{display:grid;right:10px;bottom:0;left:auto;width:126px;height:254px}.ui-dialog-box--with-portrait .ui-dialog-portrait span{width:92%;margin-bottom:10px;font-size:.68rem}.ui-dialog-box--with-portrait .ui-speaker-nameplate{top:-54px;left:14px;min-height:36px;font-size:.88rem;padding:0 12px}.ui-dialog-box--with-portrait .ui-dialog-box__body p{max-width:100%;font-size:.95rem;line-height:1.42}.ui-dialog-box--player{bottom:10px}.ui-dialog-box--player .ui-dialog-box__body{min-height:126px;padding:28px 22px 30px}.ui-dialog-box--player.ui-dialog-box--with-portrait{bottom:0}.ui-dialog-box--player.ui-dialog-box--with-portrait .ui-dialog-portrait{right:auto;left:10px}.ui-dialog-box--player.ui-dialog-box--with-portrait .ui-dialog-box__body{right:12px;bottom:184px;left:138px;width:auto;min-height:132px;padding:0 4px 4px}.ui-dialog-box--player.ui-dialog-box--with-portrait .ui-speaker-nameplate{top:-54px;left:14px}.ui-dialog-box--player .ui-dialog-box__body:before{content:none}.conversation-listener{right:6px;bottom:138px;width:128px;height:224px}.conversation-listener span{width:88%;margin-bottom:14px;font-size:.66rem}.ui-dialog-portrait+.ui-speaker-nameplate{left:22px}.ui-dialog-portrait~.ui-dialog-box__body{min-height:136px;padding-left:20px}.touch-controls{display:flex;right:14px;bottom:166px;left:14px}.d-pad{grid-template-columns:48px 48px 48px;grid-template-rows:48px 48px 48px}.action-pad{width:72px;height:72px}.auth-form,.letter-answer,.enigma-workbench,.bombe-play-area{grid-template-columns:1fr}.minigame-panel{gap:8px;overflow-x:hidden;overflow-y:auto;padding:62px 12px 118px}.minigame-panel--bombe,.minigame-panel--cards{padding:62px 12px 118px}.minigame-panel>.ui-goal-banner{min-width:0;width:min(100%,360px);max-width:100%;min-height:48px;padding:0 44px;font-size:.76rem}.bombe-stage-panel,.bombe-play-area,.answer-card-list,.question-strip,.slot-row,.current-answer-card,.card-table{min-width:0;width:100%}.bombe-stage-header{gap:3px;min-height:112px;border-width:22px;border-image-width:22px 32px;padding:0 8px 2px}.bombe-stage-header strong{font-size:1.08rem}.bombe-stage-header p{font-size:.82rem}.bombe-machine-strip figure{min-width:86px;padding:5px 7px}.bombe-machine-strip img{width:58px;height:36px}.bombe-card-grid,.slot-row--bombe{grid-template-columns:minmax(0,1fr)}.minigame-panel--cards .slot-row--primary{grid-template-columns:repeat(2,minmax(0,1fr))}.bombe-stage-card,.bombe-card-slot,.ui-card-draggable,.ui-card-slot{width:100%;min-width:0}.bombe-stage-card{min-height:72px;padding:14px 18px 16px}.bombe-stage-card p{font-size:1rem}.bombe-controls-help{width:100%;padding:9px 16px 12px;font-size:.78rem;text-align:center}.minigame-panel--bombe .ui-dialog-box,.minigame-panel--cards .ui-dialog-box{position:absolute;right:auto;bottom:12px;left:12px;width:calc(100% - 24px);transform:none}.minigame-panel--bombe .ui-dialog-box__body,.minigame-panel--cards .ui-dialog-box__body{min-height:88px;border-width:28px 32px;padding:0 4px 2px}.minigame-panel--bombe .ui-dialog-box__body p,.minigame-panel--cards .ui-dialog-box__body p{font-size:.84rem;line-height:1.35}.minigame-panel--cards{grid-template-rows:none}.minigame-panel--cards .question-strip article{flex:1 1 145px;min-width:0}.current-answer-card{padding:12px 18px 14px}.current-answer-card p{font-size:1rem;line-height:1.28}.slot-row--primary .ui-card-slot,.minigame-panel--cards .slot-row--primary .ui-card-slot{min-height:96px;padding:12px 12px 14px}.minigame-panel--cards .slot-row--primary .ui-card-slot strong img{width:36px;height:36px}.minigame-panel--cards .slot-row--primary .ui-card-slot span{font-size:1rem}.candidate-strip{grid-template-columns:1fr}.rotor-inspection dl div{grid-template-columns:1fr;gap:3px}.rotor-window-row span{width:44px;height:54px}.auth-card,.ending-card{border-radius:0}.app-shell--ending .concept-card{grid-template-columns:1fr}.app-shell--ending .concept-card img{grid-row:auto;justify-self:center;max-height:240px}}
