@font-face{font-family:SerifLocal;src:local('Songti SC')}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#0d191f;color:#e0e1d1;font-family:'PingFang SC','Microsoft Yahei',sans-serif}body{background:radial-gradient(ellipse at 72% 4%,#25444b55,transparent 65%),#0d191f}button,select,input{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}button{border:1px solid #778e8b55;border-radius:2px;background:#20363d;color:#e5e3cd;padding:10px 18px;cursor:pointer;transition:background .18s,border-color .18s,transform .18s}button:hover{background:#345159;border-color:#bbc4aa}button:active{transform:translateY(1px)}button:focus-visible,a:focus-visible,select:focus-visible{outline:2px solid #e3c98d;outline-offset:3px}button:disabled{cursor:default;opacity:.38;transform:none}button.primary{color:#182b30;background:#d6c594;border:1px solid #f5e4b4;font-weight:600}button.primary:hover{background:#ead8a5}button.quiet{background:transparent;border-color:transparent;color:#b5c1ba;padding:8px 10px}a{color:#b5c9c5;text-decoration:none}small{font-size:11px;color:#a3b4b2}p{line-height:1.8;color:#acbdba}h1,h2,h3{font-family:SerifLocal,'Noto Serif SC',serif;font-weight:500;margin:0}h1{font-size:43px;letter-spacing:.14em}h2{font-size:26px;letter-spacing:.06em}h3{font-size:18px}b{font-weight:500;color:#e7d29c}[hidden]{display:none!important}.topbar{height:86px;max-width:1420px;margin:auto;padding:0 44px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #778e8b26}.brand{display:flex;align-items:center;gap:14px;font-family:SerifLocal,serif;font-size:25px;letter-spacing:3px;color:#e3e1c8}.brand em{font-style:normal;color:#b4c3bc}.brand small{display:block;font:8px sans-serif;letter-spacing:3px;margin-top:7px;color:#819d9e}.seal{font:26px SerifLocal,serif;background:#953f33;color:#f2d7aa;display:inline-flex;align-items:center;justify-content:center;width:38px;height:43px;letter-spacing:0;border:1px solid #bc7b5955}.top-right{display:flex;align-items:center;gap:20px;font-size:12px;color:#8fa7a5}#camp{max-width:1332px;margin:auto;padding:0 32px}#camp-nav{display:flex;gap:28px;margin:29px 0 26px;border-bottom:1px solid #667d7b33}#camp-nav button{font-size:14px;padding:12px 0 15px;background:none;border:none;border-bottom:2px solid transparent;color:#8da6a5;letter-spacing:2px}#camp-nav button.active{color:#edddb1;border-color:#cbb77f}#camp-content{min-height:580px}.camp-footer{display:flex;align-items:center;gap:24px;border-top:1px solid #81948d24;padding:23px 0;margin-top:28px;font:11px serif;letter-spacing:1px;color:#748f8f}.camp-footer span:first-child{margin-right:auto}#save-light{display:inline-block;width:5px;height:5px;background:#87ab92;border-radius:50%;margin-left:6px}.journey-hero{height:330px;position:relative;background:#203944 url('./assets/art/rain-temple.png') 55% 55%/cover;border:1px solid #82968c33;overflow:hidden}.journey-hero:before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#12232af5 5%,#12232ae8 34%,#10273255 67%,#10273215)}.journey-copy{position:relative;padding:34px 36px;max-width:600px}.eyebrow{font-size:11px;color:#aebbb0;letter-spacing:3px;margin-bottom:12px}.journey-copy p{font:15px/1.9 SerifLocal,serif;max-width:380px;margin:15px 0 20px}.hero-actions{display:flex;align-items:center;gap:14px}.journey-hero canvas{position:absolute;right:8%;bottom:20px;width:380px;height:260px;image-rendering:pixelated;pointer-events:none}.journey-hero .seal{position:absolute;right:25px;top:26px;font-size:16px;width:25px;height:75px;writing-mode:vertical-rl;letter-spacing:4px;background:#824436bd}.section-line{display:flex;align-items:end;justify-content:space-between;margin:27px 0 15px}.section-line h2{font-size:20px}.section-line span{color:#829e9e;font-size:12px}.boss-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.boss-card{position:relative;min-height:106px;text-align:left;padding:17px 17px 15px;border:1px solid #59757550;background:linear-gradient(125deg,#29444c55,#12252c)}.boss-card.selected{border-color:#c8b379;background:linear-gradient(125deg,#6b67413a,#1e3337)}.boss-card .number{font:25px SerifLocal,serif;color:#788d8477;float:right}.boss-card b{display:block;color:#d7ddd1;font:18px SerifLocal,serif;margin-bottom:9px}.boss-card .tag{font-size:10px;color:#a8b597;margin-left:8px}.boss-card.locked{opacity:.52}.boss-card small{font-size:10px}.mode-row{display:flex;gap:15px;align-items:center;justify-content:space-between;margin-top:18px;background:#1b313744;border:1px solid #556e6c33;padding:18px}.mode-row p{font-size:12px;margin:5px 0 0}.reward-row{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}.reward-row button{border-color:#c7aa6c;color:#edd29b}.panel-grid{display:grid;grid-template-columns:235px 1fr;gap:26px}.panel-card{border:1px solid #6c827755;background:#182b31b0;padding:24px}.loadout-side{position:sticky;top:15px;align-self:start;text-align:center}.loadout-side canvas{width:190px;height:210px;image-rendering:pixelated}.loadout-side p{font-size:12px}.stat-chips{display:grid;grid-template-columns:1fr 1fr;gap:7px;text-align:left}.stat-chips div{font-size:10px;padding:8px;background:#0d202588;color:#9bb6b2}.stat-chips b{display:block;font:18px serif;margin-top:3px}.loadout-content h3{margin:10px 0 13px}.gear-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-bottom:22px}.gear{padding:13px 14px;text-align:left;min-height:80px;background:#1e343955}.gear.active{border-color:#d2bb7d;background:#73714b2e}.gear b{font-size:13px;color:#d1dcd2}.gear small{display:block;margin-top:7px;line-height:1.65;font-size:10px}.gear.locked{opacity:.35}.gear-icon{float:right;font:23px serif;color:#91b4b5}.skills-grid{grid-template-columns:repeat(2,1fr)}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.row.spread{justify-content:space-between}.muted{color:#8da5a3;font-size:12px}.section-note{font-size:12px;color:#a9bdb6;margin:12px 0 22px}.collection{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.collection p{font-size:13px}.boss-meta{font-size:11px;color:#b9a97f;letter-spacing:1px;margin:10px 0}.move-list{margin:18px 0;padding:0;list-style:none}.move-list li{border-top:1px solid #677a742f;padding:12px 0}.move-list b{font-size:13px}.move-list p{margin:6px 0;font-size:12px}.practice-form label{display:block;font-size:13px;color:#b6c9bd;margin:18px 0 7px}select{width:100%;background:#12262d;border:1px solid #6d888055;color:#d8e1d5;padding:11px}.practice-form button.primary{margin-top:25px}.records-table{width:100%;border-collapse:collapse;font-size:12px}.records-table th{text-align:left;font-weight:400;color:#829d9c;padding:14px 10px;border-bottom:1px solid #6d827933}.records-table td{padding:15px 10px;border-bottom:1px solid #6d827922;color:#c3d1c8}.records-table .loss{color:#b88980}.records-table .win{color:#d9c793}.empty{padding:60px;text-align:center;font-family:serif;color:#8aa3a3}.challenge-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.challenge-grid article{border:1px solid #65817e44;padding:15px}.challenge-grid p{font-size:11px}.modal{position:fixed;inset:0;background:#06141ae6;z-index:50;display:flex;justify-content:center;align-items:center;padding:20px;backdrop-filter:blur(5px)}.modal-box{background:#192e34;border:1px solid #8a9a8366;width:min(680px,96vw);padding:33px;position:relative;max-height:90vh;overflow:auto}.modal h2{margin-bottom:22px}.modal h3{margin:25px 0 10px}.close{position:absolute;right:12px;top:10px;font-size:24px;background:none;border:0;color:#aac0b6;padding:0 10px}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid #57706e33;font-size:13px}.setting-row input[type=range]{width:180px;accent-color:#c7b276}.setting-row input[type=checkbox]{width:20px;height:20px;accent-color:#c7b276}.modal p{font-size:12px}#toast{position:fixed;z-index:100;bottom:24px;left:50%;transform:translate(-50%,20px);background:#daca98;color:#142c30;border:1px solid #f0ddb5;padding:12px 20px;font-size:13px;opacity:0;pointer-events:none;transition:.2s;max-width:90vw}#toast.show{opacity:1;transform:translate(-50%,0)}
#battle{padding:20px 20px 0;margin:auto;max-width:1500px}#stage{position:relative;width:min(100%,calc((100dvh - 150px)*16/9));aspect-ratio:16/9;margin:auto;overflow:hidden;border:1px solid #5d777877;background:#17323c;touch-action:none;user-select:none}#game{width:100%;height:100%;image-rendering:pixelated;display:block;outline:none}.battle-top{position:absolute;top:17px;left:22px;right:22px;display:flex;align-items:start;gap:28px;pointer-events:none}.player-hud{width:28%;padding:8px 10px;background:#10232bd9;border-left:2px solid #b7b896}.boss-hud{width:44%;margin-left:auto;padding:8px 10px;background:#10232bc7}.hud-cap{display:flex;align-items:center;justify-content:space-between;font:13px SerifLocal,serif;color:#e6d8b2;margin-bottom:7px}.hud-cap span:last-child{font:10px sans-serif;color:#b1bbaa}.meter{height:7px;background:#0d1b22;box-shadow:inset 0 0 0 1px #6f85812f;margin-bottom:4px}.meter i{display:block;height:100%;width:100%;background:#a56d57;transition:width .09s linear}.meter.energy{height:4px}.meter.energy i{background:#b8c69b}.meter.enemy i{background:#a77b67}.meter.posture{height:4px}.meter.posture i{background:#e3c678;width:0}.hud-small{font-size:9px;color:#9fb5b0;display:flex;justify-content:space-between;margin-top:6px}.pause-button{pointer-events:auto;background:#10232bd9;font-size:18px;padding:6px 12px;border-color:#71878266;height:39px}.desktop-keys{display:flex;justify-content:space-between;gap:15px;padding:12px 4px;font-size:11px;color:#7e9b9a;max-width:1200px;margin:auto}kbd{font:10px sans-serif;color:#d1d8c6;padding:2px 4px;border:1px solid #63797655;border-radius:2px;margin:0 4px 0 7px}#battle-caption{position:absolute;top:24%;left:15%;right:15%;text-align:center;color:#e4d5ad;font:17px/1.8 SerifLocal,serif;text-shadow:0 2px 5px #0c2028;pointer-events:none;transition:opacity .5s}#status-list{display:flex;gap:7px;font-size:9px;color:#d8c98d;margin-top:4px}#practice-strip{position:absolute;left:18px;top:28%;font-size:10px;display:flex;gap:6px;align-items:center}#practice-strip button{font-size:10px;padding:5px 7px;background:#10232bd9}#battle-overlay{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;background:#0c1b22bd;z-index:20;backdrop-filter:blur(2px)}.result-box{width:620px;max-width:90%;background:#11272feb;border:1px solid #86918170;text-align:center;padding:27px 32px}.result-box h2{font-size:33px;letter-spacing:7px;color:#d6c799}.result-box.death h2{color:#bc8772}.result-box>p{font-size:13px;margin:12px 0}.result-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:18px 0}.result-stats div{font-size:10px;color:#8aa8a6}.result-stats b{display:block;font:23px serif;color:#d9d6bb;margin-bottom:5px}.result-box .row{justify-content:center;margin-top:18px}.result-box button{font-size:12px}#touch-controls{display:none;position:absolute;left:15px;right:15px;bottom:10px;justify-content:space-between;align-items:end;pointer-events:none;--button-size:54px}#touch-controls button{pointer-events:auto;touch-action:none;width:calc(var(--button-size)*var(--touch-scale,1));height:calc(var(--button-size)*var(--touch-scale,1));padding:0;background:#142b33ae;border:1px solid #bed0c67a;color:#eee9d4;border-radius:50%;font:15px serif;box-shadow:0 1px 8px #00152255}#touch-controls button small{color:#e2d6b3;font:9px sans-serif}#touch-controls button.held{background:#ddc58ccb;color:#13282e}#touch-controls .skill{border-radius:4px;font:10px sans-serif;width:47px;height:35px;border-color:#ddc18780}.touch-left{display:flex;gap:10px}.touch-middle{display:flex;gap:7px}.touch-middle button{width:38px!important;height:38px!important;font-size:11px!important}.touch-middle small{display:block}.touch-right{display:flex;gap:8px;align-items:end}.touch-right .attack{background:#7b71537d!important;border-color:#e2d4ad!important}.touch-right .guard{font-size:12px!important}#rotate-hint{position:fixed;inset:0;z-index:80;background:#10232bf8;padding:30px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}#rotate-hint h2{margin:24px 0 0}#rotate-hint p{font-size:13px}#rotate-hint button{margin-top:20px}
@media(min-width:1500px){#camp-content{min-height:650px}.journey-hero{height:370px}.journey-copy{padding:45px}.journey-copy p{margin:20px 0 28px}.boss-card{min-height:118px}}@media(pointer:coarse){#touch-controls{display:flex}.desktop-keys{display:none}body.in-battle .topbar{display:none}body.in-battle #battle{padding:0;position:fixed;inset:0;background:#08171c;display:flex;align-items:center;justify-content:center}body.in-battle #stage{width:min(100vw,calc(100dvh*16/9));height:auto;max-height:100dvh;border:0}.battle-top{top:8px;left:max(14px,env(safe-area-inset-left));right:max(14px,env(safe-area-inset-right));gap:14px}.player-hud,.boss-hud{padding:6px}.hud-cap{font-size:11px}.hud-small{font-size:8px}.pause-button{height:31px;padding:3px 10px}.result-box{padding:18px}.result-box h2{font-size:26px}.result-box>p{margin:8px 0}.result-stats{margin:10px 0}.result-box button{padding:9px 12px}.result-box .row{margin-top:12px}}@media(max-width:900px){.topbar{height:72px;padding:0 22px}.top-right{gap:6px}#progress-label{display:none}#camp{padding:0 20px}#camp-nav{gap:21px;overflow:auto;margin:14px 0 19px}#camp-nav button{white-space:nowrap;font-size:12px;letter-spacing:1px}.journey-hero{height:285px}.journey-copy{padding:27px}.journey-copy h1{font-size:34px}.journey-copy p{font-size:13px;max-width:280px}.journey-hero canvas{right:0;bottom:0;width:300px;height:205px;opacity:.9}.boss-grid{gap:8px}.boss-card{padding:13px 12px;min-height:95px}.boss-card b{font-size:15px}.boss-card .number{font-size:20px}.gear-grid{grid-template-columns:repeat(2,1fr)}.panel-grid{grid-template-columns:190px 1fr;gap:14px}.panel-card{padding:18px}.loadout-side canvas{width:160px;height:175px}#battle{padding:10px}#stage{width:100%}.desktop-keys{font-size:9px}.challenge-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.brand{font-size:20px;gap:9px}.brand small{font-size:7px;letter-spacing:2px}.seal{width:32px;height:36px;font-size:23px}.topbar{padding:0 15px}.top-right button{font-size:11px;padding:6px}#camp{padding:0 15px}#camp-nav{gap:20px}#camp-nav button{font-size:11px}.journey-hero{height:320px}.journey-copy{padding:25px 21px;max-width:78%}.journey-copy h1{font-size:29px;letter-spacing:3px}.journey-copy p{max-width:225px;min-height:68px}.journey-hero canvas{right:-45px;opacity:.45;bottom:15px;width:270px;height:185px}.journey-hero .seal{right:15px;top:22px}.journey-copy{z-index:1}.hero-actions{gap:8px}.hero-actions button{padding:10px 13px;font-size:12px}.boss-grid{grid-template-columns:repeat(2,1fr)}.mode-row{padding:14px;gap:12px}.mode-row button{white-space:nowrap;padding:10px 12px;font-size:11px}.mode-row h3{font-size:16px}.mode-row p{font-size:11px}.section-line h2{font-size:18px}.section-line span{font-size:10px}.camp-footer{gap:12px;font-size:10px;flex-wrap:wrap}.camp-footer span:first-child{width:100%}.panel-grid{grid-template-columns:1fr}.loadout-side{position:static;display:grid;grid-template-columns:110px 1fr;text-align:left;padding:15px;gap:8px}.loadout-side canvas{width:110px;height:132px;grid-row:1/5}.loadout-side h2{font-size:22px}.loadout-side p{margin:0;font-size:11px}.stat-chips{grid-template-columns:repeat(4,1fr);gap:4px}.stat-chips div{padding:6px;font-size:9px}.stat-chips b{font-size:15px}.collection{grid-template-columns:1fr}.gear-grid{gap:7px}.gear{padding:11px;min-height:75px}.records-table{font-size:10px}.records-table th,.records-table td{padding:12px 5px}.records-table .hide-mobile{display:none}.modal-box{padding:26px 20px}.setting-row input[type=range]{width:140px}.challenge-grid article{padding:12px}.challenge-grid h3{font-size:16px}}@media(pointer:coarse) and (max-height:430px){#touch-controls{--button-size:46px;bottom:5px;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right))}.touch-right{gap:7px}.touch-middle{gap:5px}#touch-controls .skill{width:40px;height:29px;font-size:9px}.hud-cap{font-size:10px;margin-bottom:4px}.meter{height:5px;margin-bottom:3px}.hud-small{margin-top:4px}.player-hud{width:26%}.boss-hud{width:42%}#battle-caption{font-size:14px}#practice-strip{top:29%;left:12px}#practice-strip button{padding:4px;font-size:9px}.result-box{padding:15px 22px;width:550px}.result-box h2{font-size:26px}.result-box .eyebrow{margin-bottom:7px}.result-box p{font-size:11px}.result-box button{padding:8px 12px}.result-stats b{font-size:19px}.modal{padding:10px}.modal-box{max-height:94dvh;padding:22px 30px}}
#touch-controls button{min-width:44px;min-height:44px}#touch-controls button.low-energy{border-color:#ae735d99;color:#b49882}#touch-controls button[data-key=heal].empty,#touch-controls button[data-key=tactic].empty{opacity:.45}#stage:fullscreen{width:100vw;height:100dvh;border:0;aspect-ratio:auto;display:flex;align-items:center;justify-content:center}#stage:fullscreen #game{width:min(100vw,calc(100dvh*16/9));height:auto;max-height:100dvh;object-fit:contain}
@media(pointer:coarse){button{min-height:44px}.pause-button,.close{min-width:44px;min-height:44px}.result-box{max-height:calc(100dvh - 16px);overflow-y:auto}}
