@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@400;500;600;700&family=Space+Grotesk:wght@400;600;700&display=swap');
:root{color-scheme:dark;--bg:#111013;--panel:#19161a;--raised:#242025;--border:#493036;--red:#db334b;--redlight:#f07885;--text:#f3ecee;--muted:#a99da3}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none;touch-action:pan-x pan-y}body{font-family:'Space Grotesk','Noto Sans Thai',sans-serif;color:var(--text);background:var(--bg);user-select:none;-webkit-user-select:none;-webkit-text-size-adjust:100%}main{width:100vw;height:100dvh;position:relative;overflow:hidden}.arena{position:absolute;inset:0;overflow:hidden;background:#a3b3a4}#scene{display:block;width:100%;height:100%;touch-action:none;image-rendering:pixelated}button,input{font:inherit}button{cursor:pointer;color:inherit;border:1px solid var(--border);background:var(--raised);border-radius:8px}button:focus-visible,input:focus-visible{outline:2px solid var(--redlight);outline-offset:3px}button:disabled{opacity:.35;cursor:default}button:hover:not(:disabled){filter:brightness(1.13)}
header{position:absolute;top:calc(14px + env(safe-area-inset-top,0px));left:14px;right:14px;max-width:460px;display:flex;align-items:center;gap:9px;padding:10px 12px;z-index:3;background:#151316e8;border:1px solid #65313a;border-radius:12px;box-shadow:0 4px 20px #16090c44;backdrop-filter:blur(5px)}.avatar{width:44px;height:44px;overflow:hidden;background:radial-gradient(#65303a,#20161c);border:1px solid #b44a5b;border-radius:9px;padding:0;flex-shrink:0}.avatar img{width:58px;height:58px;object-fit:contain;image-rendering:pixelated;transform:translate(-7px,-5px)}.identity{flex:1;min-width:0}.identity small{font-size:8px;color:var(--muted)}.identity>b{display:block;font-size:12px;margin:4px 0 7px}.identity>b span{color:var(--redlight)}.bar{height:5px;background:#0c0a0d;border-radius:4px;overflow:hidden}.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#b71f38,#ed697c);transition:width .15s}.money{font-size:11px;color:#f4dce2}.identity #place{display:block;font-size:9px;line-height:1.5;color:#d6c9cf}.header-meta{display:flex;flex-direction:column;align-items:flex-end;gap:7px;flex-shrink:0}.live{font-size:8px;color:#f07c8a}.combatnote{position:absolute;left:14px;bottom:calc(100px + env(safe-area-inset-bottom,0px));max-width:310px;background:#171316cf;color:#eee3e7;border:1px solid #69343f;border-left:3px solid var(--red);padding:7px 10px;font-size:9px;line-height:1.6;border-radius:5px;pointer-events:none;z-index:2}#health{display:none;position:absolute;left:50%;bottom:calc(114px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);width:180px;font-size:9px;text-shadow:1px 1px #201015;z-index:3}#health .bar{height:5px;margin-top:4px}#health .bar i{background:#e65063}
nav{position:absolute;bottom:0;left:0;width:100%;display:flex;justify-content:center;gap:clamp(12px,5vw,60px);z-index:5;padding:8px 12px calc(10px + env(safe-area-inset-bottom,0px));background:transparent;pointer-events:none}nav button{pointer-events:auto;border:0;background:transparent;border-radius:0;min-width:64px;padding:0 5px;color:#c4b6be}.navicon{display:grid;place-items:center;margin:auto;width:43px;height:43px;background:linear-gradient(#33232c,#1a131b);border:1px solid #7b3546;border-radius:12px;box-shadow:inset 0 1px #df8e9c18,0 3px #09070b}.navicon svg{height:25px;width:25px}nav button>span:last-child{display:block;font-size:9px;margin-top:5px;color:#fff0f3;text-shadow:0 1px 3px #000,0 0 5px #000}nav .active{color:#ffc0ca}nav .active .navicon{background:linear-gradient(#763044,#3b1d2c);border-color:#fa7389}
dialog{width:min(94vw,430px);max-height:84dvh;margin:auto;padding:0;overflow:auto;border:1px solid #a44255;border-radius:16px;background:var(--panel);color:var(--text);box-shadow:0 25px 100px #090409bb;touch-action:pan-y}dialog::backdrop{background:#0b070bb8;backdrop-filter:blur(4px)}.dialoghead{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:17px 20px;background:linear-gradient(120deg,#31191f,#1b141b);border-bottom:1px solid #71313f}.dialoghead small{font-size:8px;letter-spacing:1.6px;color:#e08897}.dialoghead h2{font-size:21px;line-height:1.3;margin:5px 0 0}.dialoghead button{font-size:26px;line-height:1;width:34px;height:34px;padding:0;background:#1a1117;border-color:#804053}.panel{padding:18px 20px 24px;min-height:220px}.panel p{font-size:11px;line-height:1.8;color:#c5b5be}.panel .caption{font-size:10px;color:#a58d99;margin:17px 0 0}.panel .sectionintro{font-size:11px;margin:0 0 15px;color:#bca8b4}.profile{display:flex;gap:15px;align-items:center;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid var(--border)}.profile>img{width:118px;height:118px;image-rendering:pixelated;background:radial-gradient(#542333,#21121e);border-radius:11px}.profile small,.dungeonhero small{font-size:9px;color:#c18f9e}.profile h3,.dungeonhero h3{font-size:17px;margin:7px 0}.profile b{font-size:12px;color:#ef9aaa}.profile p{margin:5px 0}.statgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:15px}.statgrid>div{border:1px solid #51303d;background:#22191f;border-radius:7px;padding:10px}.statgrid small{display:block;color:#bda6b3;font-size:9px}.statgrid b{display:block;font-size:20px;margin-top:5px;font-weight:600}.equippedline{font-size:10px!important;padding:10px 0 15px;border-bottom:1px solid var(--border)}.panelhead{display:flex;justify-content:space-between;font-size:12px;margin:16px 0 10px}.points{color:#f492a6}.attributes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.attribute{flex:1;min-width:0;padding:11px;position:relative;border:1px solid #633344;background:#281b24;border-radius:7px;font-size:10px;color:#efc6d1}.attribute strong{display:block;font-size:23px;margin:5px 0}.attribute small{font-size:8px;color:#b9a1ae}.attribute button{position:absolute;right:6px;top:7px;padding:0;width:24px;height:25px;border-color:#a84761;background:#572035;color:#ffc0d0;font-size:19px}.attribute button[data-subtract]{right:36px}.weaponcards{display:flex;flex-direction:column;gap:10px}.weaponcard{display:flex;align-items:center;gap:10px;padding:9px;text-align:left;background:#22191f;border-color:#57313e}.weaponcard .weaponicon{width:78px;height:78px;flex:0 0 78px;padding:8px;background:radial-gradient(#4b2634,#22151f);border-radius:7px;image-rendering:pixelated}.weaponcard>span{flex:1;min-width:0}.weaponcard small{font-size:8px;letter-spacing:1px;color:#cf8f9f}.weaponcard b{display:block;font-size:13px;margin:5px 0}.weaponcard em{display:block;font-style:normal;font-size:9px;color:#d9a5b3}.weaponcard p{font-size:9px;line-height:1.7;margin:5px 0}.weaponcard>strong{font-size:10px;color:#f9a9bb}.weaponcard.equipped{background:#381e2b;border-color:#f25b7d}.dungeonhero{display:flex;align-items:center;gap:12px;background:linear-gradient(130deg,#3a202a,#22181f);border:1px solid #753649;border-radius:9px;padding:9px;margin-bottom:18px}.dungeonhero img{width:118px;image-rendering:pixelated}.primaryaction,.secondaryaction{display:block;width:100%;padding:12px;margin-top:12px;border-radius:7px;font-size:12px}.primaryaction{background:#be2947;border-color:#ec647e;color:#fff2f5;font-weight:700}.secondaryaction{background:#2c1b25;border-color:#7d3a50;color:#e5bac8}.settingslist{display:flex;flex-direction:column;gap:11px}.settings-action{display:flex;justify-content:space-between;align-items:center;text-align:left;gap:12px;padding:14px;background:#25191f;border:1px solid #5d3040;border-radius:8px}.settings-action b{display:block;font-size:12px}.settings-action em{display:block;font-style:normal;font-size:9px;line-height:1.6;color:#bda2b0;margin-top:5px}.settings-action small{font-size:11px;color:#eea0b5;white-space:nowrap}.settings-action[aria-pressed=true]{background:#3b1d2b;border-color:#bc4463}.difficulty{padding:14px;border:1px solid #603345;border-radius:8px;background:#24191f}.difficulty label{display:flex;justify-content:space-between;align-items:center;font-size:12px}.difficulty label b{display:grid;place-items:center;width:31px;height:25px;background:#532039;color:#ffd2df;border-radius:4px;font-size:13px}.difficulty input{width:100%;margin:18px 0 2px;accent-color:#e34869;touch-action:pan-x}.difficulty p{font-size:9px;margin:6px 0 0}.panel #saveStatus{color:#e56c87}
@media(max-width:600px){header{top:calc(11px + env(safe-area-inset-top,0px));left:11px;right:11px;padding:8px 10px}.location{top:calc(82px + env(safe-area-inset-top,0px));left:11px;right:11px}.identity>b{font-size:11px}.avatar{width:42px;height:42px}.money{font-size:10px}nav{gap:clamp(10px,5vw,30px)}dialog{margin:auto auto calc(82px + env(safe-area-inset-bottom,0px));max-height:calc(100dvh - 110px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));border-radius:16px 16px 10px 10px}.dialoghead{padding:14px 16px}.panel{padding:16px}.combatnote{left:11px;bottom:calc(93px + env(safe-area-inset-bottom,0px));max-width:260px;font-size:8px}#health{bottom:calc(126px + env(safe-area-inset-bottom,0px))}.statgrid b{font-size:18px}}
input[type=range]{appearance:none;-webkit-appearance:none;height:20px;background:transparent;cursor:pointer}input[type=range]::-webkit-slider-runnable-track{height:5px;background:#51303c;border:1px solid #754052;border-radius:9px}input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:17px;height:17px;margin-top:-7px;border:1px solid #f5899f;border-radius:50%;background:#d93b5a;box-shadow:0 0 9px #c12b4c44}input[type=range]::-moz-range-track{height:5px;background:#51303c;border:1px solid #754052;border-radius:9px}input[type=range]::-moz-range-thumb{width:17px;height:17px;border:1px solid #f5899f;border-radius:50%;background:#d93b5a}

.header-level{white-space:nowrap;font-size:10px}.header-exp{font-size:9px;color:#d5b9c2;margin-bottom:6px}.header-exp .bar{height:3px;margin-top:3px}.header-exp .bar i{background:linear-gradient(90deg,#a62743,#ff849b)}

.studenticon{width:86px;height:96px;object-fit:contain;image-rendering:pixelated;background:radial-gradient(#4b2634,#22151f);border-radius:7px}.identity>b>[data-value="studentName"]{color:var(--text)}

.student-segments{display:flex;gap:4px;padding:4px;margin:0 0 16px;background:#100e12;border:1px solid #57313e;border-radius:10px}.student-segments button{flex:1;min-width:0;padding:11px 5px;font-size:12px;border:1px solid transparent;border-radius:7px;background:transparent;color:#bda5b0}.student-segments button[aria-selected="true"]{background:#642238;border-color:#db5c79;color:#fff0f5;box-shadow:0 2px 6px #0005}
/* Pixel rarity & student awakening */
.rarity-label{display:inline-flex;align-items:center;gap:7px;margin:4px 0}.rarity-badge{width:111px;height:27px;image-rendering:pixelated;object-fit:contain}.rarity-label>small{font-size:9px;color:#cfb6bf}.student-stars{display:flex;gap:4px;margin:10px 0}.student-stars img{width:22px;height:22px;image-rendering:pixelated}.student-card{padding:15px;border:1px solid #623043;border-radius:10px;background:linear-gradient(145deg,#2a1a25,#19141c)}.student-card.is-selected{border-color:#df6783;box-shadow:inset 0 1px #f9c4d31a}.student-card-top{display:flex;gap:13px;align-items:center}.student-portrait{width:108px;height:128px;object-fit:contain;image-rendering:pixelated;background:radial-gradient(#5b2b3e,#21141f);border-radius:8px;flex-shrink:0}.student-card-top>div{min-width:0}.student-card h3{font-size:17px;margin:6px 0}.student-card-top small{font-size:9px;color:#cfb6bf}.student-card-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}.student-card-actions button{font-size:11px;padding:12px 5px;margin:0;min-height:44px}.playing-label{display:block;text-align:center;color:#eaa3b5;font-size:10px;margin-top:10px}.rarity-legend{margin-top:17px;border-top:1px solid #54303d;padding-top:13px;font-size:11px;color:#bca5b0}.rarity-legend summary{cursor:pointer}.rarity-legend>div{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}.rarity-legend .rarity-label{display:flex;flex-direction:column;align-items:flex-start;gap:1px}.back-students{padding:8px 0;margin-bottom:12px;border:0;background:none;color:#d99caf;font-size:11px}.awakening-hero{text-align:center;padding:6px 0 18px;border-bottom:1px solid #59303e}.awakening-hero>img{display:block;margin:0 auto;width:144px;height:144px;object-fit:contain;image-rendering:pixelated;background:radial-gradient(#79334844,transparent 70%)}.awakening-hero h3{margin:7px 0;font-size:20px}.awakening-hero .student-stars{justify-content:center}.awakening-hero>b{display:block;color:#ffda83;font-size:11px}.awakening-total{display:flex;flex-direction:column;gap:6px;padding:14px;background:#2c2025;border:1px solid #77503e;border-radius:8px;margin:16px 0}.awakening-total small{color:#bca5b0;font-size:10px}.awakening-total b{color:#ffdf91;font-size:20px}.awakening-total span{font-size:11px;color:#f0c4d2}.star-milestones{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:7px}.star-milestones li{display:flex;gap:9px;align-items:center;padding:10px;border:1px solid #3b2c35;border-radius:7px;background:#18141a;color:#a7929d}.star-milestones li>img{width:24px;height:24px;image-rendering:pixelated}.star-milestones li>div{flex:1}.star-milestones b,.star-milestones span{display:block;font-size:10px;line-height:1.7}.star-milestones li>small{font-size:9px;white-space:nowrap}.star-milestones .unlocked{border-color:#78603d;background:#2a211d;color:#ffe2a1}.star-milestones .next{border-color:#b14664;background:#321b28;color:#f5b7cb}.awakening-unlock{position:sticky;bottom:0;box-shadow:0 -8px 16px #19161acc}.profile .student-stars{gap:2px}.profile .student-stars img{width:17px;height:17px}.profile .rarity-badge{width:92px;height:auto}#awakeningStatus{font-size:11px;color:#ffe2a1}
@media(max-width:380px){.student-portrait{width:82px;height:114px}.student-card{padding:11px}.student-card h3{font-size:15px}.student-stars{gap:2px}.student-stars img{width:20px;height:20px}.rarity-badge{width:100px;height:auto}}
/* Small transparent rarity lettering */
.rarity-badge,.profile .rarity-badge{width:auto;height:14px;max-width:90px;object-fit:contain;image-rendering:pixelated}.rarity-label{margin:4px 0;line-height:1}.rarity-legend .rarity-label{padding:4px 0}.student-options{display:flex;flex-direction:column;gap:14px}

.dungeon-collection{display:grid;gap:12px}.dungeon-collection-card{display:flex;align-items:center;gap:12px;text-align:left;padding:15px;background:linear-gradient(130deg,#3d1d28,#1a141b);border:1px solid #a3445d;border-radius:11px}.dungeon-collection-card img{width:102px;height:114px;object-fit:contain;image-rendering:pixelated}.dungeon-collection-card span{flex:1}.dungeon-collection-card small{font-size:8px;letter-spacing:1px;color:#e391a8}.dungeon-collection-card b{display:block;font-size:22px;margin:8px 0}.dungeon-collection-card em{font-style:normal;font-size:10px;color:#c5a6b5}.dungeon-collection-card strong{color:#e895aa}.boss-fight-hero{display:flex;gap:12px;align-items:center;padding:13px;background:radial-gradient(at left,#5e2436,#1d151e);border:1px solid #673142;border-radius:9px}.boss-fight-hero img{width:140px;height:150px;object-fit:contain;image-rendering:pixelated}.boss-fight-hero small{font-size:8px;letter-spacing:1px;color:#eb9aaf}.boss-fight-hero h3{font-size:24px;margin:8px 0}.boss-fight-hero p{font-size:10px;margin:0}.boss-levels{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.boss-levels button{min-height:53px;padding:8px 2px;background:#21171e;border-color:#5f3041}.boss-levels b,.boss-levels small{display:block}.boss-levels b{font-size:17px}.boss-levels small{font-size:9px;color:#c79aaa;margin-top:3px}.boss-levels [aria-pressed=true]{background:#74253e;border-color:#ef7898}.boss-stats{margin-top:16px}.boss-stats b{font-size:17px}.fight-result{padding:14px;text-align:center;margin-top:13px;border:1px solid #a87642;border-radius:7px;color:#ffe09f;background:#33231c;font-size:13px}.fight-result.defeat{border-color:#a23d55;color:#ff9cb5;background:#361a27}.fight-status{padding:13px;border:1px solid #633044;border-radius:7px}
/* Full-screen battle results */
#battleResult{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:0;border:0;border-radius:0;overflow:hidden;box-shadow:none;background:radial-gradient(ellipse at 50% 25%,#4a2530 0,#1c141c 45%,#0d0b10 100%);color:#f8e9ee;z-index:20}#battleResult.victory{background:radial-gradient(ellipse at 50% 25%,#51402c 0,#21191b 45%,#0e0b10 100%)}#battleResult::backdrop{background:#08070b}.result-content{height:calc(100% - 110px - env(safe-area-inset-bottom,0px));overflow:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 20px 16px;gap:8px;text-align:center}.result-kicker{font-size:9px;letter-spacing:3px;color:#b58f9f}.result-seal{display:grid;place-items:center;width:67px;height:67px;border:2px solid #cc566d;color:#ff8ca6;background:#4e1d2d;clip-path:polygon(20% 0,80% 0,100% 20%,100% 80%,80% 100%,20% 100%,0 80%,0 20%);font-size:46px;line-height:1;margin:10px 0}.victory .result-seal{border-color:#e0b86b;color:#ffe4a0;background:#564027}.result-en{font-size:27px;font-weight:700;letter-spacing:5px;color:#ed879f}.victory .result-en{color:#f4d58b}.result-content h2{font-size:35px;line-height:1.3;margin:0}.result-level{font-size:12px;color:#c9a7b7;margin:2px 0 0}.result-student{width:125px;height:125px;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 5px 20px #b3405b22)}.victory .result-student{filter:drop-shadow(0 5px 20px #e1b45633)}.result-stats{display:grid;grid-template-columns:1fr 1fr;gap:9px;width:min(100%,400px)}.result-stats>div{padding:12px 10px;background:#211820;border:1px solid #5c3243;border-radius:7px}.result-stats small{display:block;font-size:10px;color:#baa1ae}.result-stats b{display:block;margin-top:6px;font-size:21px}.result-boss-hp{font-size:10px;color:#b794a4;margin:4px 0}.result-actions{position:absolute;bottom:0;left:0;right:0;display:grid;grid-template-columns:1fr 1fr;gap:11px;padding:18px max(18px,calc((100vw - 440px)/2)) calc(22px + env(safe-area-inset-bottom,0px));border-top:1px solid #5a3040;background:#100c12e8}.result-actions button{margin:0;min-height:47px;font-size:13px}.victory .result-actions .primaryaction{background:#9e6d29;border-color:#deb771;color:#fff4d1}@media(max-height:680px){.result-content{justify-content:flex-start;padding-top:18px;gap:5px}.result-seal{width:44px;height:44px;font-size:31px;margin:3px 0}.result-content h2{font-size:28px}.result-en{font-size:22px}.result-student{width:85px;height:85px}.result-stats>div{padding:8px}.result-stats b{font-size:18px}}
/* Five floating navigation items */
nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;padding-left:6px;padding-right:6px}nav button{min-width:0;padding:0 2px}.navicon{width:40px;height:40px}
/* Stat-only equipment */
.gear-loadout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.gear-slot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:100px;padding:7px 3px;background:#1c171f;border:1px solid var(--gear-color);border-radius:8px}.gear-slot:disabled{opacity:1;cursor:default}.gear-slot small{font-size:10px;color:#cfb9c3}.gear-slot>img:not(.item-tier){width:45px;height:45px;object-fit:contain;image-rendering:pixelated}.gear-slot .empty-icon{opacity:.16}.gear-slot em{font-size:9px;color:#836e7a;font-style:normal}.gear-center-note{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;font-size:15px;letter-spacing:2px;color:#764555}.gear-center-note small{font-size:8px;letter-spacing:0;margin-top:8px;line-height:1.5;color:#a18a96}.gear-bonuses{margin-top:15px}.gear-bonuses b{font-size:18px}.gear-reserved{padding:9px;border:1px solid #7b553b;border-radius:6px;color:#f1cf96!important;font-size:10px!important}.gear-empty{font-size:10px!important;text-align:center;padding:10px;color:#bba0ad!important}.gear-bag{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.bag-item,.bag-empty{height:82px;min-width:0;background:#17131b;border:1px solid #3e2c39;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:5px 2px;gap:3px}.bag-item{border-color:var(--gear-color);box-shadow:inset 0 -15px 20px #0003}.bag-item>img:not(.item-tier){width:42px;height:42px;object-fit:contain;image-rendering:pixelated}.bag-item small{font-size:8px;color:#e3cbd5;white-space:nowrap}.bag-empty span{font-size:15px;color:#3d2b37}.item-tier{display:block;height:14px;max-width:100%;width:auto;object-fit:contain;image-rendering:pixelated}.item-tier.small{height:8px;max-width:100%}.bag-pagination{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:16px}.bag-pagination button{padding:9px 14px;background:#2d1a25;border-color:#713249}.bag-pagination span{text-align:center;font-size:11px}.bag-pagination small{display:block;font-size:8px;color:#b394a4;margin-top:4px}#gearDetails{width:min(94vw,380px);max-height:90dvh;z-index:15}#gearDetails .dialoghead h2{font-size:17px}.gear-detail-body{padding:20px;text-align:center}.gear-detail-icon{display:block;margin:0 auto 13px;width:116px;height:116px;object-fit:contain;image-rendering:pixelated;border:1px solid var(--gear-color);border-radius:9px;background:radial-gradient(#3d2938,#1b141d)}.gear-detail-body .item-tier{margin:auto;height:16px}.gear-detail-body h3{font-size:20px;margin:14px 0 7px}.gear-detail-body p{font-size:10px;line-height:1.7;color:#bda4b1}.gear-detail-stat{padding:13px;margin:16px 0;border:1px solid var(--gear-color);border-radius:7px;color:var(--gear-color);background:#211821;font-size:23px;font-weight:700}.gear-slot-label{display:block;text-align:left;font-size:10px;margin:14px 0 7px}.gear-detail-body select{width:100%;padding:11px;border:1px solid #734153;border-radius:6px;background:#22171f;color:#f2d7e3;font:inherit;font-size:12px}.gear-discard{border:0;background:none;color:#b9788c;font-size:10px;padding:11px;margin-top:6px}.result-loot{width:min(100%,400px);margin-top:5px}.result-loot h3{font-size:12px;color:#f7db9a;margin:5px 0 10px}.result-loot>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.result-loot article{width:auto;min-width:0;box-sizing:border-box;padding:8px;display:flex;flex-direction:column;align-items:center;gap:5px;border:1px solid var(--gear-color);border-radius:7px;background:#19151d}.result-loot article>img:not(.item-tier){width:42px;height:42px;image-rendering:pixelated}.result-loot small{font-size:9px;color:#dbc2cc}.result-loot p{font-size:9px;color:#b9a091;margin:8px 0}.result-content:has(.result-loot){justify-content:flex-start}.result-content:has(.result-loot) .result-student{height:80px;width:80px;flex-shrink:0}@media(max-width:350px){.gear-slot{min-height:89px}.gear-slot>img:not(.item-tier){width:38px;height:38px}.bag-item>img:not(.item-tier){width:34px;height:34px}.bag-item,.bag-empty{height:74px}.bag-item small{font-size:7px}.gear-bag{gap:4px}.gear-center-note{font-size:12px}.navicon{width:36px;height:36px}nav button>span:last-child{font-size:8px}}

/* Mechanical school ID, workshop insignias and campus system channel */
header.student-id{max-width:380px;gap:10px;padding:17px 12px 10px;background:#14171be8;border:1px solid #62666a80;border-left:3px solid #c63d42;border-radius:3px;box-shadow:0 3px 12px #0004;backdrop-filter:none}
.id-serial{position:absolute;top:4px;left:12px;font-size:6px;letter-spacing:2px;color:#a8afb4;font-weight:700}.student-id .avatar{width:43px;height:47px;border-radius:2px;border-color:#737a7d;background:linear-gradient(135deg,#3d4449,#20252a)}.student-id .identity>b{margin:3px 0 5px;line-height:1.5}.student-id .identity>b span{color:#f0efeb}.student-id .identity small{font-size:8px;color:#b6bec0}.student-id .identity #place{font-size:8px;color:#9fa9ab}.student-id .header-meta .money{display:none}.student-id .header-meta{align-self:flex-start;margin-top:6px}.student-id .live{font-size:7px;letter-spacing:.5px;color:#ef8580}.student-id .header-exp{font-size:8px;color:#b7bdbf}.student-id .header-exp .bar{height:3px;margin-top:3px;border-radius:0;background:#080c10}.student-id .header-exp .bar i{background:#c84a4f}.student-id .header-level{font-size:9px!important;color:#e68a82!important;white-space:nowrap}
nav .navicon{position:relative;width:43px;height:45px;color:#e6ded0;background:linear-gradient(135deg,#343b40,#181d23);border:1px solid #848781;border-radius:2px;clip-path:polygon(15% 0,85% 0,100% 14%,100% 85%,85% 100%,15% 100%,0 85%,0 14%);box-shadow:inset 0 -3px #a73940,inset 0 2px #ffffff18}nav .navicon:after{content:'';position:absolute;width:3px;height:3px;left:4px;top:4px;background:#bdb7a5;box-shadow:30px 30px #bdb7a5}nav .navicon svg{height:27px;width:27px;filter:drop-shadow(0 1px #000)}nav .active .navicon{color:#ffe9d0;background:linear-gradient(135deg,#823c3e,#311f25);border-color:#e7a29a}nav button>span:last-child{font-weight:600;letter-spacing:.3px}
.system-chat{position:absolute;bottom:calc(93px + env(safe-area-inset-bottom,0px));left:11px;width:min(360px,calc(100% - 22px));z-index:2;pointer-events:none;background:linear-gradient(90deg,#11171ee8,#11171eb3);border:1px solid #60656a75;border-radius:3px;color:#d9dde0;box-shadow:0 2px 10px #0002}.chat-channel{display:flex;align-items:center;gap:7px;padding:5px 9px;border-bottom:1px solid #ffffff12;font-size:8px;letter-spacing:.5px}.chat-channel b{font-size:9px;color:#dfb7ae}.chat-channel>span:last-of-type{font-size:6px;color:#879296;letter-spacing:1px}.chat-channel i{margin-left:auto;width:4px;height:4px;background:#aa6662}.chat-bubble{font-size:13px;color:#ad8580}.chat-message{display:flex;gap:7px;align-items:baseline;padding:7px 9px}.chat-tag{font-size:7px;color:#dc8980;font-weight:700;letter-spacing:1px}.system-chat .combatnote{position:static;max-width:none;border:0;border-radius:0;padding:0;background:none;color:#d3dadc;font-size:9px;line-height:1.6}.student-stat-list{margin:0 0 16px;padding:0}.student-stat-list>div{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid #ffffff13}.student-stat-list dt{font-size:11px;color:#b9afb5}.student-stat-list dd{margin:0;font-size:17px;font-weight:600;font-variant-numeric:tabular-nums;color:#f3e9e8}.student-stat-list>div:first-child{border-top:1px solid #ffffff13}.student-stat-list>div:nth-child(-n+2) dd{color:#f3b4ac}
@media(max-width:350px){header.student-id{left:8px;right:8px;padding-left:9px;padding-right:9px;gap:7px}.student-id .identity>b{font-size:10px}.student-id .avatar{width:35px;height:41px}.student-id .header-meta{display:none}nav .navicon{width:37px;height:41px}nav .navicon:after{box-shadow:24px 26px #bdb7a5}.system-chat .combatnote{font-size:8px}}

/* Compact floating HUD: clear playfield, no enclosing student panel. */
header.compact-student{top:calc(50px + env(safe-area-inset-top,0px));left:12px;right:auto;max-width:calc(100% - 85px);padding:0;gap:8px;background:none;border:0;border-radius:0;box-shadow:none;backdrop-filter:none;align-items:center;pointer-events:none}.compact-student .avatar{pointer-events:auto;width:45px;height:45px;border-radius:50%;border:1.5px solid #dbc4b1;background:#20232a;box-shadow:0 2px 6px #0005;overflow:hidden}.compact-student .avatar img{width:80px;height:80px;object-fit:contain;transform:translate(-18px,2px) scale(1.7);transform-origin:50% 25%}.compact-student .identity{overflow:hidden;text-shadow:0 1px 3px #000,0 0 5px #0009}.compact-student .identity>b{font-size:11px;color:#fff4e8;margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-student .header-level{display:block;font-size:10px;color:#f4ce96;line-height:1.4}.compact-student .header-exp{font-size:7px;color:#eee3d7;line-height:1.6}.compact-student .header-exp .bar{width:98px;height:4px;border:1px solid #f6e3ca55;background:#171a20bb;border-radius:2px;margin:3px 0 1px}.compact-student .header-exp .bar i{background:#e6b563}.location-capsule{position:absolute;top:calc(11px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);max-width:calc(100% - 30px);padding:5px 18px;background:#15191dd9;border:1px solid #cfbba280;border-radius:99px;z-index:4;color:#efdfc7;font-size:9px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 5px #0003}.dungeon-shortcut{position:absolute;top:calc(50px + env(safe-area-inset-top,0px));right:12px;z-index:5;border:0;background:none;padding:0;width:45px;text-align:center;filter:drop-shadow(0 2px 3px #0008)}.dungeon-shortcut svg{display:block;width:40px;height:40px;margin:auto}.dungeon-shortcut span{display:block;font-size:8px;color:#ffe8ce;text-shadow:0 1px 3px #000;margin-top:3px}nav{grid-template-columns:repeat(4,minmax(0,1fr))}#note[hidden]{display:none!important}
/* Readable HUD sizing and circular dungeon control. */
header.compact-student{gap:10px;max-width:calc(100% - 94px)}.compact-student .avatar{width:54px;height:54px;border-width:2px}.compact-student .avatar img{width:96px;height:96px;transform:translate(-22px,2px) scale(1.7)}.compact-student .identity>b{font-size:14px;line-height:1.5}.compact-student .header-level{font-size:12px}.compact-student .header-exp{font-size:9px}.compact-student .header-exp .bar{width:120px;height:5px}.location-capsule{font-size:11px;padding:6px 18px}.dungeon-shortcut{width:58px;top:calc(53px + env(safe-area-inset-top,0px))}.dungeon-shortcut svg{box-sizing:border-box;width:54px;height:54px;padding:7px;border:1.5px solid #d4aa91;border-radius:50%;background:radial-gradient(circle at 40% 30%,#3f3038ed,#171a22ef);box-shadow:inset 0 0 0 3px #ffffff08,0 2px 7px #0005}.dungeon-shortcut span{font-size:10px;margin-top:5px}nav .navicon{width:48px;height:49px}nav .navicon svg{width:31px;height:31px}nav button>span:last-child{font-size:11px;margin-top:6px}nav .navicon:after{box-shadow:35px 34px #bdb7a5}
@media(max-width:350px){header.compact-student{gap:7px;left:9px;max-width:calc(100% - 85px)}.compact-student .avatar{width:48px;height:48px}.compact-student .avatar img{width:85px;height:85px;transform:translate(-19px,2px) scale(1.7)}.compact-student .identity>b{font-size:12px}.compact-student .header-exp .bar{width:105px}.dungeon-shortcut{right:8px;width:54px}.dungeon-shortcut svg{width:50px;height:50px}nav .navicon{width:44px;height:46px}nav button>span:last-child{font-size:10px}nav .navicon:after{box-shadow:31px 31px #bdb7a5}}

.boss-full-page{position:fixed;inset:0;z-index:12;background:radial-gradient(ellipse at top,#3c1c27,#141318 65%);overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:env(safe-area-inset-top,0px) 0 env(safe-area-inset-bottom,0px)}.boss-full-page[hidden]{display:none}.boss-page-header{position:relative;inset:auto;display:block;max-width:720px;margin:auto;padding:25px 20px 12px;border:0;border-bottom:1px solid #77404b;border-radius:0;background:none;box-shadow:none;backdrop-filter:none}.boss-page-header small{font-size:9px;letter-spacing:2px;color:#dc8c92}.boss-page-header h1{font-size:28px;margin:8px 0;color:#f5e3db;outline:none}.boss-full-page>.panel{max-width:720px;margin:auto;padding-bottom:35px}.boss-loot-preview{border-top:1px solid #6b3945;margin-top:22px;padding-top:4px}.boss-loot-preview .panelhead{font-size:13px}.boss-loot-preview p{font-size:10px}.loot-tier-group{margin-top:12px;padding:12px;background:#17141bd9;border:1px solid color-mix(in srgb,var(--loot-color) 35%,transparent);border-radius:10px}.loot-tier-heading{display:flex;justify-content:space-between;color:var(--loot-color);font-size:13px;margin-bottom:12px}.boss-loot-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.boss-loot-items article{display:flex;align-items:center;flex-direction:column;text-align:center;gap:6px;min-width:0}.boss-loot-items img{width:48px;height:48px;image-rendering:pixelated}.boss-loot-items b{font-size:9px;font-weight:500;line-height:1.5}.boss-loot-items span{font-size:10px;color:var(--loot-color)}.boss-loot-items small{font-size:8px;color:#b9a7b3}.boss-full-page #enterBossFight{position:sticky;bottom:8px;box-shadow:0 -8px 25px #141318;min-height:48px}@media(max-width:350px){.boss-loot-items{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.boss-full-page>.panel{padding:14px}}

.boss-full-page>.panel{padding-bottom:calc(160px + env(safe-area-inset-bottom,0px))}.boss-page-actions{position:fixed;bottom:0;left:50%;transform:translateX(-50%);z-index:3;width:100%;max-width:720px;box-sizing:border-box;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));display:grid;grid-template-columns:1fr;gap:8px;background:linear-gradient(#19141bf2,#141318);border-top:1px solid #66323f;box-shadow:0 -8px 20px #14131888}.boss-page-actions #enterBossFight,.boss-page-actions #leaveDungeon{position:static;bottom:auto;margin:0;min-height:46px;box-shadow:none}.boss-page-actions #leaveDungeon{background:#251c25}

.gear-student-preview{display:flex;align-items:center;justify-content:center;min-width:0;overflow:hidden}.gear-student-preview img{display:block;width:100%;max-width:110px;height:115px;object-fit:contain;image-rendering:pixelated}@media(max-width:350px){.gear-student-preview img{height:100px}}

/* Translucent player details; the centered location sits below the HUD. */
header.compact-student{top:calc(12px + env(safe-area-inset-top,0px));left:10px;width:max-content;max-width:calc(100% - 92px);box-sizing:border-box;padding:10px 12px;border:1px solid #cbd8cd45;border-radius:15px;background:#15221dad;box-shadow:0 3px 12px #0003;backdrop-filter:none;gap:9px}.compact-student .identity{flex:1;min-width:0}.location-capsule{top:calc(108px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%)}.dungeon-shortcut{top:calc(18px + env(safe-area-inset-top,0px))}@media(max-width:350px){header.compact-student{left:8px;padding:9px 10px;max-width:calc(100% - 83px);gap:7px}.location-capsule{top:calc(101px + env(safe-area-inset-top,0px))}}
/* One modular character, shared across combat and all menus. */
.rig-preview{position:relative;display:inline-block;flex:0 0 auto;width:144px;height:144px;isolation:isolate;vertical-align:middle;image-rendering:pixelated}
.rig-preview>img,.rig-held>img{position:absolute!important;margin:0!important;max-width:none!important;width:100%;height:100%;inset:0;object-fit:contain;border:0!important;background:none!important;border-radius:0!important}
.rig-held{position:absolute;width:100%;height:100%;transform-origin:0 0;pointer-events:none}
.rig-held>img{right:auto!important;bottom:auto!important;object-fit:fill}
.profile>.rig-preview{width:120px;height:120px}.gear-student-preview .rig-preview{width:100%;height:auto;aspect-ratio:1}.battle-result .rig-preview{width:180px;height:180px}
.appearance-controls{border-block:1px solid #48222b;padding:14px 0;margin:16px 0;display:grid;grid-template-columns:1fr 1fr;gap:12px}.appearance-controls .panelhead{grid-column:1/-1;margin:0}.appearance-controls label{font-size:12px;color:#c1adb1}.appearance-controls label:first-of-type{grid-column:1/-1}.appearance-controls select{display:block;width:100%;margin-top:6px;background:#171318;color:#f0e5df;border:1px solid #59303b;border-radius:7px;padding:9px;font:inherit}
.student-card .student-portrait{width:100px;height:100px;object-fit:contain;image-rendering:pixelated;background:radial-gradient(ellipse,#4c243a66,transparent 70%)}
.avatar img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated;transform:none}

.compact-student .avatar img{width:100%;height:100%;transform:none;object-fit:contain}
/* Keep large weapons inside every menu preview while retaining one shared transform. */
.rig-preview{transform:translateY(10%) scale(.8);transform-origin:center center}

/* Location banner doubles as a two-way map selector. */
.location-capsule{display:flex;align-items:center;gap:8px;padding:3px 5px;max-width:calc(100% - 24px);overflow:visible}.location-capsule #placeName{min-width:0;overflow:hidden;text-overflow:ellipsis;padding:0 3px}.location-capsule button{width:30px;height:30px;flex:0 0 30px;padding:0;border:1px solid #c6a58b55;border-radius:50%;background:#39272ae6;color:#ffe5c1;font-size:25px;line-height:25px;touch-action:manipulation}.location-capsule button:active{background:#8b363a}.location-capsule button:disabled{opacity:.3}

.item-tier.tier-text{height:auto;font-size:12px;font-weight:900;line-height:1.2;letter-spacing:.4px;text-shadow:1px 1px #000;text-transform:uppercase}.item-tier.tier-text.small{height:auto;font-size:7px;letter-spacing:0}.gear-detail-body .item-tier.tier-text{height:auto;font-size:15px}

#resetProgressSection>.reset-progress{width:100%;border-color:#c04c5e;background:#36191f}.reset-confirm{padding:14px;border:1px solid #c04c5e;border-radius:8px;background:#30171e}.reset-confirm>b{font-size:14px;color:#ffc3cb}.reset-confirm p{font-size:11px}

.ticket-wallet{width:38px;flex:0 0 38px;display:flex;flex-direction:column;align-items:center;gap:2px;border-left:1px solid #b8997050;padding-left:6px;box-sizing:content-box}.ticket-wallet img{width:32px;height:32px;object-fit:contain;image-rendering:pixelated}.ticket-wallet b{font-size:11px;color:#ffe3a4;text-shadow:0 1px #000}.compact-student .header-exp .bar{max-width:100%}.farm-summon-controls{position:absolute;left:12px;bottom:calc(112px + env(safe-area-inset-bottom,0px));z-index:5;display:flex;flex-direction:column;gap:10px}.farm-summon-controls[hidden]{display:none}.farm-summon{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;width:61px;height:66px;padding:6px;border:1px solid #a85358;border-radius:15px;background:linear-gradient(145deg,#39252b,#14151c);box-shadow:0 3px 9px #0007;overflow:hidden;color:#ffca9b}.farm-summon.boss{color:#ff879e;border-color:#c05d70}.farm-summon span{font-size:10px;font-weight:900;letter-spacing:1px}.farm-summon b{font-size:22px;line-height:1.1}.farm-summon small{font-size:7px;color:#77ffa7;visibility:hidden}.farm-summon.is-auto small{visibility:visible}.farm-summon:disabled{opacity:1;cursor:default}.farm-summon.is-auto{border-color:#57f08c;box-shadow:inset 0 0 0 2px #225838}.farm-summon.is-auto:before,.farm-summon.is-auto:after{content:none;animation:none}.farm-summon:active{transform:scale(.96)}@keyframes summon-orbit{to{transform:rotate(360deg)}}.quota-test-controls{padding:12px;border:1px solid #5a343e;border-radius:10px;background:#21171d}.quota-test-controls>b{font-size:12px}.quota-test-controls .settings-action{width:100%;margin-top:8px}@media(prefers-reduced-motion:reduce){.farm-summon.is-auto:before{animation:none}}@media(max-width:350px){.ticket-wallet{width:29px;flex-basis:29px;padding-left:4px}.ticket-wallet img{width:27px;height:27px}.farm-summon-controls{left:8px;bottom:107px}.farm-summon{width:55px;height:61px}}

.summon-row{display:flex;gap:5px;align-items:center}.summon-auto-toggle{width:34px;height:40px;padding:2px;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:23px;line-height:1;border:1px solid #69444e;border-radius:10px;background:#23171ee8;color:#c9b9a8}.summon-auto-toggle small{font-size:7px;line-height:1.4}.summon-auto-toggle[aria-pressed=true]{border-color:#57f08c;box-shadow:inset 0 0 0 1px #225838}

/* Weapon gacha: obsidian, red enamel and luminous pixel treasure art. */
.gacha-shortcut{position:absolute;left:18px;top:calc(env(safe-area-inset-top) + 150px);z-index:12;width:66px;height:74px;border:0;border-radius:0;background:transparent;color:#ffe8c3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;box-shadow:none}.gacha-shortcut img{width:56px;height:54px;image-rendering:pixelated;object-fit:contain}.gacha-shortcut>span:last-child{font-size:11px;font-weight:800;text-shadow:1px 1px 2px #000,0 0 4px #000}
.gacha-page[hidden]{display:none}.gacha-page{position:fixed;inset:0;z-index:95;background:radial-gradient(ellipse at 50% 48%,#331b32 0,#140f19 48%,#08090e 100%);color:#f5e6de;display:flex;flex-direction:column;font-family:inherit;isolation:isolate}.gacha-heading{flex:none;display:flex;align-items:center;justify-content:space-between;padding:calc(14px + env(safe-area-inset-top)) 22px 12px;border-bottom:1px solid #8b494a50}.gacha-heading small{font-size:9px;letter-spacing:2px;color:#ae8179}.gacha-heading h1{font-size:23px;margin:3px 0 0}.gacha-heading button{order:-1;border:1px solid #704548;color:#f3d5c8;background:#22151d;border-radius:50%;width:42px;height:42px;font-size:24px;margin-right:14px}.gacha-heading>div{flex:1}.gacha-scroll{overflow-y:auto;flex:1;min-height:0;padding:18px 20px 8px}.gacha-banner{position:relative;max-width:520px;margin:auto;min-height:135px;border:1px solid #864d58;border-radius:18px;background:radial-gradient(ellipse at 16% 55%,#64273775,transparent 60%),linear-gradient(110deg,#261826,#17121e);display:grid;grid-template-columns:1.2fr 1fr;gap:4px;padding:27px 10px 0;overflow:hidden}.gacha-banner-kicker{position:absolute;top:10px;left:14px;font-size:9px;letter-spacing:2px;color:#dcac7f}.banner-weapon{display:flex;align-items:center;min-width:0;gap:0}.banner-weapon img{width:70px;height:95px;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 0 9px #f05c5c60)}.banner-weapon div{display:flex;flex-direction:column;min-width:0}.banner-weapon b{font-size:13px;line-height:1.35}.banner-weapon span{font-size:10px;color:#ff8a8c;margin-top:5px}.banner-weapon.ssr img{width:57px;filter:drop-shadow(0 0 7px #b875ea70)}.banner-weapon.ssr span{color:#ecd19d}.gacha-banner>p{grid-column:1/-1;text-align:center;color:#b79093;font-size:10px;margin:0 0 8px}.gacha-stage{position:relative;max-width:520px;margin:12px auto 0;min-height:235px;display:flex;align-items:center;justify-content:center;flex-direction:column}.chest-aura{position:absolute;inset:15px;background:radial-gradient(ellipse,#a93b6955,transparent 65%);border-radius:50%;pointer-events:none}.chest-runes{position:absolute;top:48%;left:0;right:0;text-align:center;color:#b7747650;font-size:46px;letter-spacing:24px}.gacha-chest{position:relative;width:220px;height:220px;background:url('assets/gacha/chest.png') center/contain no-repeat;image-rendering:pixelated;z-index:1}.gacha-stage p{position:relative;font-size:12px;color:#b99eaa;margin:-15px 0 10px;z-index:2}.gacha-stage.opening .gacha-chest{background-image:url('assets/gacha/chest-opening.png');background-size:1300% 100%;background-position:0 0;animation:chestOpen .7s steps(12,end) forwards}.gacha-stage.opened .gacha-chest{background-position:100% 0}.gacha-stage.opened .chest-aura{background:radial-gradient(ellipse,#fffef599,#fff4 25%,transparent 70%)}@keyframes chestOpen{to{background-position:100% 0}}
.gacha-rates{max-width:520px;margin:0 auto;color:#b59ea5;font-size:11px;border-top:1px solid #65414b;padding:12px 0}.gacha-rates summary{cursor:pointer;text-align:center;color:#d0a8a9}.gacha-rates>div{padding:10px 4px}.gacha-rates>div>div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid #ffffff0d}.gacha-rates b{white-space:nowrap;color:#e7c8a4}.gacha-rates p{line-height:1.8;font-size:10px;color:#ad9099}.gacha-actions{flex:none;padding:12px 22px calc(12px + env(safe-area-inset-bottom));border-top:1px solid #68404b;background:#100e16ed;display:flex;flex-direction:column;align-items:center;gap:7px}.gacha-ticket-balance{display:flex;align-items:center;gap:9px;font-size:13px;color:#bda4aa}.gacha-ticket-balance img{width:35px;height:30px;object-fit:contain;image-rendering:pixelated}.gacha-ticket-balance b{color:#ffe4af;font-size:19px;margin-left:7px}.gacha-actions button{width:100%;max-width:480px;min-height:52px;border:1px solid #cb776e;background:linear-gradient(#982d43,#642032);box-shadow:inset 0 1px #f5b7a844,0 4px 20px #a5304233;font-size:16px}.gacha-actions button span{margin-left:12px;color:#f1c7aa;font-size:12px}.gacha-actions p{font-size:10px;color:#a98b95;margin:0}.gacha-actions button:disabled{opacity:.45}.gacha-reward{max-width:520px;min-height:250px;margin:12px auto;text-align:center;animation:rewardAppear .55s ease-out}.gacha-reward[hidden]{display:none}.gacha-reward>small{display:block;font-size:11px;letter-spacing:3px;color:#bb9d99}.reward-image{position:relative;width:150px;height:150px;margin:0 auto;background:radial-gradient(ellipse,#ede1d51a,transparent 68%)}.reward-image img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}.reward-image>b{position:absolute;right:8px;bottom:8px;font-size:23px;color:#ffdda5;text-shadow:2px 2px #000}.gacha-reward h2{font-size:22px;margin:7px 0}.gacha-reward p{font-size:12px;color:#cab1b8}.gacha-reward .student-stars{justify-content:center}.quota-reward-type{color:#d0ad77;font-size:11px;letter-spacing:2px}.gacha-reward.god .reward-image{background:radial-gradient(ellipse,#d8455755,transparent 70%)}.gacha-reward.ssr .reward-image{background:radial-gradient(ellipse,#d5aa4666,transparent 70%)}@keyframes rewardAppear{from{opacity:0;transform:translateY(18px) scale(.93)}to{opacity:1;transform:none}}
.gacha-reveal-fx{display:none;position:absolute;inset:0;z-index:10;pointer-events:none;overflow:hidden}.gacha-reveal-fx.show{display:block;--reveal:#ffd26b;--reveal-rgb:255,195,60;animation:revealFade 3s ease-out both}.gacha-reveal-fx.god{--reveal:#ff3658;--reveal-rgb:255,35,65}.reveal-core{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 51%,rgba(var(--reveal-rgb),.94),rgba(var(--reveal-rgb),.35) 24%,rgba(var(--reveal-rgb),.08) 65%,transparent 85%)}.gacha-reveal-fx svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.gacha-reveal-fx path{stroke:var(--reveal);stroke-width:6;fill:none;stroke-linejoin:miter;stroke-linecap:square;animation:boltArrive .6s ease-out both}.reveal-ssr .chest-aura{background:radial-gradient(ellipse,#ffd267ee,transparent 70%)}.reveal-god .chest-aura{background:radial-gradient(ellipse,#ff315eee,transparent 70%)}@keyframes revealFade{0%{opacity:0}22%,66%{opacity:1}100%{opacity:0}}@keyframes boltArrive{from{stroke-dasharray:900;stroke-dashoffset:900;opacity:0}to{stroke-dashoffset:0;opacity:1}}
@media(max-width:360px){.gacha-scroll{padding:12px}.gacha-banner{padding-left:5px;padding-right:5px}.banner-weapon img{width:58px}.banner-weapon.ssr img{width:46px}.banner-weapon b{font-size:11px}.gacha-stage{min-height:205px}.gacha-chest{width:200px;height:200px}.gacha-heading{padding-left:15px;padding-right:15px}.gacha-heading h1{font-size:21px}}
@media(prefers-reduced-motion:reduce){.gacha-reveal-fx path,.gacha-reveal-fx.show,.gacha-reward{animation:none}.gacha-stage.opening .gacha-chest{animation-duration:.1s}.gacha-reveal-fx.show svg{display:none}}
.gacha-heading{position:relative;top:auto;left:auto;right:auto;max-width:none;width:100%;background:#130f17;border:0;border-bottom:1px solid #8b494a50;border-radius:0;box-shadow:none;backdrop-filter:none}
.gacha-shortcut[hidden]{display:none}

.gacha-stage[hidden]{display:none}

.gacha-draw-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;max-width:480px}.gacha-draw-buttons button{font-size:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:56px;padding:6px}.gacha-draw-buttons button span{margin:0;font-size:10px}.gacha-draw-buttons .multi-draw{background:linear-gradient(#aa3f4d,#792335);border-color:#e8a17b}.gacha-reward.batch-results{max-width:520px;width:100%;margin:15px auto}.batch-results .batch-title{font-size:18px;margin-bottom:15px}.gacha-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.gacha-result-card{position:relative;padding:12px 7px 9px;border:1px solid #66404b;border-radius:12px;background:#1c141f}.gacha-result-card.ssr{border-color:#e0b85d}.gacha-result-card.god{border-color:#f65870}.reward-order{position:absolute;top:7px;left:9px;font-size:10px;color:#a98e96}.gacha-result-card .reward-image{width:82px;height:82px}.gacha-result-card .reward-image>b{font-size:16px;right:0;bottom:0}.gacha-result-card h2{font-size:12px;margin:6px 0}.gacha-result-card p{font-size:9px;line-height:1.5;margin:5px 0}.gacha-result-card .quota-reward-type{font-size:8px;letter-spacing:1px}.gacha-result-card .rarity-badge{max-height:17px}.gacha-result-card .student-stars img{width:16px;height:16px}.gacha-result-card .student-stars{gap:1px}

.reveal-rays{position:absolute;inset:-60%;background:repeating-conic-gradient(from 0deg at 50% 50%,transparent 0deg 12deg,rgba(var(--reveal-rgb),.14) 14deg 18deg,transparent 20deg 30deg);animation:revealRays 3s ease-out both}.gacha-reveal-fx svg{filter:drop-shadow(0 0 8px var(--reveal))}.gacha-reveal-fx.show path{animation:boltStorm 3s ease-out both;stroke-width:7}.reveal-sparks{position:absolute;inset:0}.reveal-sparks i{position:absolute;left:var(--sx);top:var(--sy);width:5px;height:5px;background:#fff5ce;box-shadow:0 0 10px var(--reveal),0 0 24px var(--reveal);animation:revealSpark 2.5s var(--sd) ease-out both}.gacha-reveal-fx.god .reveal-sparks i{background:#ffbbc4}@keyframes revealRays{from{transform:rotate(-12deg) scale(.7);opacity:0}25%{opacity:1}to{transform:rotate(24deg) scale(1.2);opacity:0}}@keyframes boltStorm{0%{stroke-dasharray:1100;stroke-dashoffset:1100;opacity:0}18%{stroke-dashoffset:0;opacity:1}36%{opacity:.45;stroke-width:4}52%{opacity:1;stroke-width:8}72%{opacity:.55;stroke-width:5}86%{opacity:1;stroke-width:7}100%{opacity:0;stroke-dashoffset:0}}@keyframes revealSpark{0%{transform:translateY(30px) scale(0);opacity:0}25%,65%{opacity:1}100%{transform:translateY(-100px) scale(.3);opacity:0}}
@media(prefers-reduced-motion:reduce){.reveal-rays,.reveal-sparks{display:none}.gacha-reveal-fx.show path{animation:none}}
.gacha-page.reveal-ssr .gacha-stage.opened .chest-aura{background:radial-gradient(ellipse,#ffe098f5,#ffc04c99 28%,transparent 72%)}.gacha-page.reveal-god .gacha-stage.opened .chest-aura{background:radial-gradient(ellipse,#ff546ff5,#ff174c99 28%,transparent 72%)}

.panel .weapon-base-stat{font-size:14px;font-weight:700;color:#f3e6dc;margin-bottom:6px}.panel .weapon-ability{font-size:13px;font-weight:800;color:#ffdb74;text-shadow:0 0 9px #d59c3338;line-height:1.7;margin-top:0}.ui-back{display:grid;place-items:center;flex:0 0 42px;width:42px;height:42px;border:1px solid #79505a;border-radius:50%;background:#241820;color:#ffe0c7;font-size:25px;line-height:1}.ui-back[hidden]{display:none}.dialoghead{gap:12px}.dialoghead>div{flex:1}.dialoghead .ui-back{width:42px;height:42px;font-size:25px;border-radius:50%;flex-shrink:0}.boss-page-header{display:flex;align-items:center;gap:15px}.boss-page-header>div{flex:1}.result-back-button{position:absolute;z-index:3;top:calc(16px + env(safe-area-inset-top));left:18px}.result-content{padding-top:65px}.result-actions{grid-template-columns:1fr}.gacha-heading .ui-back{margin-right:14px}

.gacha-stage:not(.opening) .gacha-chest{background-image:url('assets/gacha/chest-idle.png');background-size:900% 100%;background-position:0 0;animation:chestIdle 2.4s steps(8,end) infinite}@keyframes chestIdle{to{background-position:100% 0}}@media(prefers-reduced-motion:reduce){.gacha-stage:not(.opening) .gacha-chest{animation:none;background-image:url('assets/gacha/chest.png');background-size:contain}}

.gacha-pity{width:100%;max-width:480px;padding:0 2px}.gacha-pity>div:first-child{display:flex;justify-content:space-between;font-size:11px;color:#cdb5b8}.gacha-pity b{color:#ffdb82}.pity-progress{height:4px;border-radius:4px;background:#38212b;overflow:hidden;margin:5px 0}.pity-progress i{display:block;height:100%;background:linear-gradient(90deg,#ae3e55,#ffd37a)}.gacha-pity small{display:block;text-align:center;font-size:9px;color:#b7989e}.gacha-debug-settings{margin-top:12px;border-top:1px solid #5d3341;padding-top:15px}.gacha-debug-settings>b{font-size:12px;color:#efc482}.settings-action[data-gacha-debug][aria-pressed=true]{border-color:#dfae66;background:#392526}.settings-action[data-gacha-debug][aria-pressed=true] small{color:#ffd882}

.location-capsule{padding:8px 18px;justify-content:center}

/* Compact status rows immediately after the character profile. */
.character-attributes{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.character-attributes .attribute{display:grid;grid-template-columns:58px 32px minmax(0,1fr) 36px 36px;gap:6px;align-items:center;padding:9px 8px;font-size:12px;border-radius:8px;background:#21171b}
.character-attributes .attribute strong{font-size:17px;margin:0;text-align:center}
.character-attributes .attribute small{font-size:10px;line-height:1.45}
.character-attributes .attribute button{position:static;width:36px;height:36px;font-size:22px;border-radius:7px}
@media(max-width:380px){.character-attributes .attribute{grid-template-columns:48px 24px minmax(0,1fr) 32px 32px;gap:4px;font-size:11px}.character-attributes .attribute button{width:32px;height:36px}.character-attributes .attribute small{font-size:9px}}
/* Lesson grimoire: an open book with three recessed card sockets. */
nav{gap:clamp(2px,2vw,24px)}nav button{min-width:0;flex:0 1 64px}
.lesson-book{position:relative;isolation:isolate;padding:22px 15px 18px;background:linear-gradient(90deg,#443028,#a58459 3%,#e0c493 7%,#ddc08c 47%,#9f7748 50%,#e4cc9d 53%,#d7b783 94%,#473125 98%);border:5px solid #572a31;border-radius:16px 16px 24px 24px;box-shadow:0 7px #241418,inset 0 0 0 2px #bc8d4d;color:#62321e;margin:4px 0 17px;transform:perspective(900px) rotateX(3deg)}
.lesson-book:before,.lesson-book:after{content:'';position:absolute;top:15px;bottom:15px;width:40%;border:1px solid #8e633e66;border-radius:45% 4% 4% 4%;z-index:-1}.lesson-book:before{left:5%}.lesson-book:after{right:5%;transform:scaleX(-1)}
.book-runes{font-size:15px;letter-spacing:5px;text-align:center;opacity:.7;margin-bottom:14px;text-shadow:0 1px #fff1c2}.book-runes.bottom{margin:14px 0 0;font-size:12px;letter-spacing:3px}
.lesson-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.lesson-slot{position:relative;aspect-ratio:2/3;padding:3px;background:#312522;border:2px solid #7d5036;border-radius:7px;box-shadow:inset 0 0 13px #000a,0 1px #fff0bf;overflow:hidden}.lesson-slot.selected{border-color:#ffcf59;outline:2px solid #6c281c}.lesson-slot img{width:100%;height:100%;object-fit:cover;image-rendering:pixelated;border-radius:3px}.lesson-slot>b{position:absolute;top:3px;left:3px;z-index:1;display:grid;place-items:center;background:#321b21e8;border:1px solid #ffd082;border-radius:50%;width:22px;height:22px;font-size:12px;color:#ffe3a0}.empty-lesson{font-size:35px;color:#ae8f6f}
.lesson-slot-action{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:#dabca9;margin:12px 0 18px}.lesson-slot-action button{font-size:11px;padding:7px 12px;background:#291b21;border-color:#79434a}
.lesson-library{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.lesson-card{min-width:0;padding:8px;background:#20161c;border:1px solid #62343b;border-radius:10px}.lesson-card-art{position:relative}.lesson-card-art img{display:block;width:100%;aspect-ratio:2/3;object-fit:cover;image-rendering:pixelated;border-radius:6px}.lesson-type{position:absolute;bottom:7px;left:7px;padding:3px 7px;border:1px solid #eccb79;background:#30211ce8;border-radius:4px;font-size:10px;color:#ffe8b0}.lesson-type.attack{color:#ffbbb0;border-color:#dc6753;background:#3b1722e8}.lesson-card h3{font-size:13px;color:#ffe2a4;line-height:1.5;margin:9px 0 5px}.panel .lesson-card p{font-size:10px;line-height:1.7;margin:0;color:#cfb6be;min-height:55px}.lesson-card .secondaryaction{font-size:11px;margin-top:8px;padding:9px 4px}
nav{grid-template-columns:repeat(5,minmax(0,1fr))}
/* Three equipped lessons stay visible in farm and dungeon combat. */
@property --lesson-sweep{syntax:'<angle>';inherits:true;initial-value:0deg}
.lesson-combat-hud{position:absolute;right:12px;bottom:calc(166px + env(safe-area-inset-bottom,0px));z-index:5;display:flex;gap:7px;padding:0;pointer-events:auto}
.battle-lesson{position:relative;width:42px;height:59px;border:1px solid #bf9b68;border-radius:6px;overflow:hidden;background:#191318d9;box-shadow:0 2px 5px #0008;--lesson-sweep:360deg;transition:--lesson-sweep .12s linear}
.battle-lesson>img,.battle-buff>img{display:block;width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
.lesson-order{position:absolute;z-index:3;top:2px;left:2px;width:13px;height:13px;border-radius:50%;display:grid;place-items:center;background:#100d10c9;color:#ffdfaa;font-size:8px}
.lesson-timer-shade{position:absolute;inset:0;pointer-events:none;background:conic-gradient(from 0deg,transparent 0deg var(--lesson-sweep),#000b var(--lesson-sweep) 360deg)}
.lesson-timer-value{position:absolute;inset:0;display:grid;place-items:center;z-index:2;color:#fff5dd;font-size:19px;line-height:1;font-weight:800;text-shadow:0 1px 3px #000,1px 0 #000,-1px 0 #000}
.battle-lesson:not(.cooling) .lesson-timer-shade{display:none}.lesson-ready{position:absolute;bottom:0;left:0;right:0;text-align:center;font-size:8px;line-height:14px;background:#101e15c9;color:#b6ffc9}.battle-lesson.cooling .lesson-ready{display:none}.battle-lesson.empty{display:grid;place-items:center;border-style:dashed;border-color:#7e626b;color:#bd9da8;font-size:19px;box-shadow:none}
.active-lesson-buffs{position:absolute;left:0;top:calc(100% + 5px);z-index:4;display:flex;gap:3px;transform:none;pointer-events:none}
.battle-buff{position:relative;width:18px;height:24px;border:1px solid #edc478;border-radius:3px;overflow:hidden;background:#171014;box-shadow:0 1px 4px #0008;--lesson-sweep:0deg;transition:--lesson-sweep .12s linear}.battle-buff .lesson-timer-value{font-size:8px;align-items:end;padding-bottom:1px}
.lesson-combat-hud[hidden],.active-lesson-buffs[hidden]{display:none}
@media(max-width:350px){.lesson-combat-hud{right:8px;gap:5px}.battle-lesson{width:37px;height:53px}}
/* Cabinet tabs and reusable book summon stage. */
.gacha-cabinet-tabs{display:flex;flex:none;gap:6px;padding:10px 20px;background:#140f17;border-bottom:1px solid #62313b}.gacha-cabinet-tabs button{flex:1;padding:10px 8px;background:#21161d;border:1px solid #65404a;border-radius:8px;color:#d5b9c3;font:inherit;font-size:13px}.gacha-cabinet-tabs [aria-selected=true]{background:#5b2639;border-color:#e79979;color:#ffe4b7;font-weight:700}.gacha-cabinet-tabs button:disabled{opacity:.7}
.lesson-gacha-banner{display:flex;align-items:center;gap:18px;max-width:520px;margin:auto}.lesson-gacha-banner>img{width:100px;aspect-ratio:2/3;object-fit:cover;border:1px solid #d4a65d;border-radius:7px;image-rendering:pixelated}.lesson-gacha-banner h2{color:#ffe1a2;margin:8px 0;font-size:24px}.lesson-gacha-banner b{color:#ff8f9d;font-size:13px}.lesson-gacha-banner p{font-size:11px;color:#ceb6bd}.lesson-gacha-actions{padding-top:12px}
.gacha-stage .gacha-book,.gacha-stage.opening .gacha-book,.gacha-stage:not(.opening) .gacha-book{width:230px;height:190px;background:none!important;animation:none!important;perspective:700px;overflow:visible}
.summon-book-cover{position:absolute;inset:22px 5px 20px;background:linear-gradient(90deg,#4b1827,#922d42 46%,#3b1922 50%,#a23d48 54%,#5a1c2e);border:5px solid #bd8750;border-radius:10px;color:#d3a466;font-size:34px;text-align:center;box-shadow:0 8px #2a101a,0 15px 30px #0008}.summon-book-cover small{display:block;font-size:15px}
.gacha-book:before{content:'ᚠ · ᚢ\A ᚨ · ᚱ';white-space:pre;position:absolute;z-index:1;top:30px;left:12px;width:97px;height:126px;background:linear-gradient(90deg,#d2b883,#f3dfb4);border:1px solid #b79a68;border-radius:8px 0 0 8px;color:#986b49;font-size:26px;line-height:55px;text-align:center}
.summon-book-page{position:absolute;top:30px;left:50%;width:98px;height:126px;display:block;background:linear-gradient(90deg,#d6bd8a,#f6e2b9);border:1px solid #c5a56b;border-radius:0 8px 8px 0;transform-origin:left center;backface-visibility:visible;box-shadow:2px 1px 1px #38211e66;z-index:2}.summon-book-page span{display:block;text-align:center;font-style:normal;font-size:27px;line-height:55px;color:#ac8060}.opening .summon-book-page{animation:lessonPageTurn .3s ease-in-out both;animation-delay:calc(var(--page)*.1s)}
@keyframes lessonPageTurn{0%{transform:rotateY(0deg);filter:brightness(1)}50%{filter:brightness(.65)}100%{transform:rotateY(-180deg);filter:brightness(1)}}
.lesson-reward-image img{max-height:230px!important;width:auto!important;aspect-ratio:2/3;object-fit:contain!important;border-radius:8px}.gacha-reward.card h2{color:#ffb6b0}.gacha-result-card.card{border-color:#dc5667}
@media(max-height:750px){.lesson-gacha-banner>img{width:75px}.lesson-gacha-banner h2{font-size:20px}.lesson-gacha-stage{min-height:190px}}
@media(prefers-reduced-motion:reduce){.opening .summon-book-page{animation-duration:.01s;animation-delay:0s}}
.gacha-stage[hidden]{display:none!important}
.panel .active-atk-bonus{color:#f5d58f;font-size:11px;margin:0 0 12px}.panel .active-atk-bonus[hidden]{display:none}

/* Cabinet illustration shared by HUD and weapon summon page. Book cabinet stays unchanged. */
header.compact-student{max-width:calc(100% - 144px)}
.gacha-shortcut{left:290px;top:calc(16px + env(safe-area-inset-top,0px));width:54px;height:72px;padding:0;gap:0}
.gacha-shortcut img{width:48px;height:54px}.gacha-shortcut>span:last-child{font-size:10px}
.gacha-stage:not(.opening) .gacha-chest:not(.gacha-book),.gacha-stage.opening .gacha-chest:not(.gacha-book){background-image:url('assets/gacha/machine.png');background-size:contain;background-position:center;animation:none;width:224px;height:240px}
.gacha-stage:not(.opening) .gacha-machine:after{content:'';position:absolute;left:26%;top:20%;width:4px;height:4px;background:#fff8c8;box-shadow:88px 7px #b3fff5,36px 45px #fff9bd,60px 97px #ffc8ed;animation:machineTwinkle 1.5s steps(2,end) infinite}
.gacha-stage.opening .gacha-chest:not(.gacha-book){animation:machineSpin 1s steps(10,end) both}
.gacha-stage.opening .gacha-machine:after{content:'';position:absolute;left:44%;top:80%;width:23px;height:23px;border-radius:50%;background:linear-gradient(#ef5d78 50%,#ffdc70 50%);border:2px solid #402c43;opacity:0;animation:capsuleDrop 1s steps(8,end) both}
@keyframes machineTwinkle{0%,100%{opacity:.2}50%{opacity:1}}@keyframes machineSpin{0%,100%{transform:translate(0,0)}20%,60%{transform:translate(-2px,0)}40%,80%{transform:translate(2px,-1px)}}@keyframes capsuleDrop{0%,65%{opacity:0;transform:translateY(-12px)}75%{opacity:1;transform:translateY(0)}100%{opacity:1;transform:translateY(23px)}}
@media(prefers-reduced-motion:reduce){.gacha-stage:not(.opening) .gacha-machine:after,.gacha-stage.opening .gacha-chest:not(.gacha-book),.gacha-stage.opening .gacha-machine:after{animation:none}}
@media(max-width:350px){header.compact-student{max-width:calc(100% - 134px);padding:8px}.gacha-shortcut{width:48px}.gacha-shortcut img{width:42px}}
@media(max-height:760px){.gacha-page:not(.is-lesson-cabinet) .gacha-banner{min-height:108px}.gacha-page:not(.is-lesson-cabinet) .gacha-stage{min-height:0;margin-top:8px}.gacha-page:not(.is-lesson-cabinet) .gacha-chest:not(.gacha-book){width:172px;height:184px}.gacha-page:not(.is-lesson-cabinet) .gacha-stage p{margin:0 0 4px;font-size:11px}.gacha-scroll{padding-top:10px}}
/* Shared card presentation: the illustration files themselves have no border. */
:root{--lesson-gold:#e3b958}
.card-art-button{display:block;width:100%;padding:0;border:0;background:transparent;border-radius:7px;cursor:zoom-in;line-height:0;box-shadow:none}
.lesson-art,.lesson-slot:has(img),.battle-lesson:not(.empty),.battle-buff{box-sizing:border-box;border:2px solid var(--lesson-gold);border-radius:6px;box-shadow:0 1px 4px #0006}
.lesson-card-art img,.lesson-slot img,.battle-lesson>img,.battle-buff>img,.lesson-gacha-banner img,.lesson-reward-image img{image-rendering:auto}
.lesson-slot:has(img){padding:0}.lesson-slot img,.battle-lesson>img,.battle-buff>img{border:0}.battle-buff{border-width:1px;border-radius:3px}
.lesson-gacha-banner>.card-art-button{flex:0 0 100px;width:100px}.lesson-gacha-banner .card-art-button>img{display:block;width:100%;height:auto;aspect-ratio:2/3;object-fit:cover}
.lesson-reward-image .card-art-button{width:auto;display:inline-block}.lesson-reward-image .card-art-button img{display:block}
.card-inspector{position:fixed;inset:0;margin:auto;max-width:none;max-height:none;width:100%;height:100%;border:0;padding:24px;background:rgba(12,9,17,.95);color:#ffedc9;overflow:auto;text-align:center;box-sizing:border-box}
.card-inspector[open]{display:flex;flex-direction:column;align-items:center;justify-content:center}.card-inspector::backdrop{background:#07050bc9}
.card-inspect-close{position:absolute;top:max(16px,env(safe-area-inset-top));left:max(16px,env(safe-area-inset-left));z-index:2}
.card-inspect-stage{position:relative;width:min(65vw,310px,calc((100dvh - 180px)*.6667));aspect-ratio:2/3;perspective:950px;isolation:isolate;flex:none}
.card-inspect-glow{position:absolute;inset:-18%;z-index:-1;background:radial-gradient(ellipse,#e9bc5145 0%,#ce854923 35%,transparent 70%);pointer-events:none}
.card-inspect-art{width:100%;height:100%;transform:rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .28s ease;touch-action:none;cursor:grab;outline-offset:8px;will-change:auto}
.card-inspect-art.dragging{cursor:grabbing;transition:none;will-change:transform}.card-inspect-art img{display:block;width:100%;height:100%;object-fit:cover;image-rendering:auto;user-select:none;-webkit-user-drag:none;box-shadow:5px 12px 24px #0007}
.card-inspector h2{margin:22px 0 4px;font-size:20px}.card-inspector p{margin:4px 0;font-size:12px;color:#bfae95}
@media(max-height:750px){.lesson-gacha-banner>.card-art-button{flex-basis:75px;width:75px}}
@media(prefers-reduced-motion:reduce){.card-inspect-art{transition:none;transform:none!important}}
/* Keep intrinsic2:3 art proportions even when HTML width/height attributes are present. */
.lesson-card-art .card-art-button{height:auto;aspect-ratio:2/3;overflow:hidden}
.lesson-card-art .lesson-art{display:block;width:100%;height:auto;aspect-ratio:2/3;object-fit:cover}
.card-inspect-stage{width:min(65vw,310px,calc((100dvh - 260px)*.6667));isolation:auto}
.card-inspect-art{transform-style:preserve-3d}
.card-inspect-art>.lesson-art{position:relative;transform:translateZ(1px);backface-visibility:hidden}
.card-stock{position:absolute;inset:0;border-radius:6px;background:linear-gradient(110deg,#b67a25,#fff0ba 40%,#b78439 65%,#6f451c);border:1px solid #ab7e3d;box-sizing:border-box;transform:translateZ(calc(var(--depth)*-1.2px));box-shadow:inset 0 1px #fff0bb,inset 1px 0 #ffe4a2;pointer-events:none}
.card-inspect-glow{inset:-30%;z-index:auto;background:radial-gradient(ellipse,#ffffff85 0%,#fff7dc45 32%,#ffffff16 52%,transparent 72%)}
.card-inspect-sparks{position:absolute;inset:-15%;pointer-events:none}
.card-inspect-sparks i{position:absolute;left:var(--x);top:var(--y);width:5px;height:5px;opacity:0;background:#fff;box-shadow:0 0 7px 2px #fff9;clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%)}
.card-inspector[open] .card-inspect-sparks i{animation:cardSpark var(--duration) ease-in-out var(--delay) infinite}
@keyframes cardSpark{0%,100%{opacity:0;transform:translateY(10px) scale(.4)}45%{opacity:.9;transform:translateY(-8px) scale(1.3)}70%{opacity:.1}}
.card-inspector .card-inspect-description{max-width:390px;line-height:1.75;margin:8px 0 0;padding:0 4px;color:#e2d7c2;font-size:12px}
.gear-options{margin:12px 0;padding:9px 0;border-top:1px solid #67503b;border-bottom:1px solid #67503b}
.gear-option{display:flex;justify-content:space-between;gap:12px;padding:5px 0;font-size:12px;color:#d0c4b9}
.gear-option b{color:#eee4d0}.gear-option .option-max{color:#c58d21;text-shadow:0 0 5px #bb7d1926;font-weight:900}
.result-loot .gear-options{width:100%;margin:6px 0}.result-loot .gear-option{font-size:10px;padding:2px 0}
.gear-option-debug{padding:14px 0;border-top:1px solid #66343e}.gear-option-debug label{display:grid;grid-template-columns:1fr auto;gap:7px;margin:12px 0;font-size:12px}.gear-option-debug input{grid-column:1/-1;width:100%;accent-color:#daaf58}.gear-option-debug output{color:#f3d491}
@media(prefers-reduced-motion:reduce){.card-inspector[open] .card-inspect-sparks i{animation:none;opacity:.35}}
.dungeon-collection-card .boss-portrait,.boss-fight-hero .boss-portrait{position:relative;display:block;flex:0 0 102px;width:102px;height:114px}
.boss-fight-hero .boss-portrait{flex-basis:140px;width:140px;height:150px}
.boss-portrait .boss-portrait-body{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.boss-portrait .boss-portrait-wings{position:absolute;width:80%;height:42%;left:10%;top:30%;object-fit:contain}
.boss-overview{margin-top:16px}.boss-overview+.boss-loot-preview{margin-top:14px}
.boss-portrait:has(.boss-portrait-wings){overflow:visible}.boss-portrait .boss-portrait-wings{width:130%;height:65%;left:-15%;top:18%}

.card-art-button{position:relative}.lesson-rarity{position:absolute;right:7%;bottom:5%;z-index:3;font-size:clamp(12px,2vw,20px);font-weight:900;font-style:italic;line-height:1;text-shadow:1px 2px 1px #000,-1px -1px #000;pointer-events:none;color:#b4edc8}.lesson-rarity.sr{color:#c8a0ff}.lesson-rarity.ssr{color:#ffda6b}.lesson-stars{display:flex;justify-content:center;gap:4px;margin:6px 0;color:#655a48;font-size:17px}.lesson-stars .lit{color:#ffd16a;text-shadow:0 1px 3px #000}.card-inspect-art>.lesson-rarity{transform:translateZ(1px);font-size:24px}

.lesson-gacha-collection{display:flex;justify-content:center;gap:12px;padding:12px}.lesson-gacha-collection .card-art-button{width:72px}.lesson-gacha-collection .lesson-art{width:100%;height:auto}.lesson-gacha-collection .lesson-rarity{font-size:11px}
.gear-dust-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.gear-dust-wallet{display:flex;align-items:center;gap:8px;color:#d9c1f5;font-size:12px}.gear-dust-wallet img{width:36px;height:36px;image-rendering:pixelated}.gear-dust-wallet b{display:block;color:#fff;font-size:18px}.gear-dust-toolbar .secondaryaction{width:auto;margin:0;padding:10px 14px}.salvage-body{padding:16px}.salvage-body>p{font-size:11px;color:#bda6ae}.salvage-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}.salvage-filters label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:#e2c8d0}.salvage-filters select,.salvage-filters input{width:100%;box-sizing:border-box;min-width:0;padding:10px;background:#19151c;color:#f7e9f1;border:1px solid #77434e;border-radius:7px;font:inherit}.salvage-filters :disabled{opacity:.4}.salvage-select-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:11px;margin:12px 0}.salvage-select-actions button{padding:9px;border:1px solid #79414d;border-radius:6px;background:#281c24;color:#f3d6df}.salvage-items{display:grid;gap:8px}.salvage-item{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #58404b;border-radius:8px;background:#19151c}.salvage-item:has(input:checked){border-color:#d599b5;background:#35212d}.salvage-item>input{width:20px;height:20px;accent-color:#bc4d6c;flex-shrink:0}.salvage-item>img{width:40px;height:40px;image-rendering:pixelated}.salvage-item>span{flex:1;min-width:0}.salvage-item b,.salvage-item small{display:block;font-size:11px;margin:3px 0}.salvage-item .gear-option{font-size:10px}.salvage-item .item-tier{display:block}.salvage-footer{position:sticky;bottom:-1px;background:#171218f5;border-top:1px solid #78424d;padding:10px 0 2px;margin-top:12px;text-align:center}.salvage-footer p{font-size:12px}.salvage-footer #salvageStatus{font-size:10px;color:#deb5bf}.salvage-footer .primaryaction{margin:0}.salvage-item:focus-within{outline:2px solid #e4b5cf}
.lesson-reward-image{aspect-ratio:2/3;height:auto;background:none;flex-shrink:0}.gacha-reward>.lesson-reward-image{width:min(140px,42vw);height:auto;margin:12px auto}.lesson-reward-image .card-art-button{display:block;width:100%;height:100%;aspect-ratio:2/3;line-height:0}.lesson-reward-image .card-art-button img{width:100%!important;height:100%!important;max-height:none!important;aspect-ratio:2/3;object-fit:contain!important}.gacha-result-card .lesson-reward-image{width:min(88px,100%);height:auto;aspect-ratio:2/3;margin:6px auto}.gacha-result-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gacha-result-card{min-width:0;overflow:hidden}.gacha-result-card h2{overflow-wrap:anywhere}.is-lesson-cabinet .chest-aura{display:none}.is-lesson-cabinet.reveal-god .chest-aura,.is-lesson-cabinet.reveal-ssr .chest-aura{display:block}.gacha-result-card .lesson-rarity{font-size:12px}.gacha-result-card .lesson-stars{font-size:13px;gap:2px}
.gacha-shortcut{left:auto;right:72px}.shop-shortcut{position:absolute;right:12px;top:calc(16px + env(safe-area-inset-top,0px));z-index:12;display:flex;flex-direction:column;align-items:center;justify-content:center;width:54px;height:72px;padding:0;background:none;border:0}.shop-shortcut svg{width:44px;height:48px;filter:drop-shadow(0 2px 2px #0008)}.shop-shortcut span{font-size:10px;font-weight:800;color:#ffe8c3;text-shadow:1px 1px 2px #000,0 0 4px #000}.shop-shortcut[hidden]{display:none}.dungeon-shortcut{top:calc(94px + env(safe-area-inset-top,0px))}.compact-student .identity>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compact-student .header-exp .bar{max-width:100%}.gear-shop-dialog{width:min(94vw,480px)}.gear-shop-dialog .dialoghead{justify-content:flex-start;gap:16px}.shop-body{padding:18px}.shop-body>p{font-size:11px;color:#c5acb9;line-height:1.7}.shop-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.shop-items article{min-width:0;text-align:center;padding:12px 8px;background:#21191f;border:1px solid #6e3f4c;border-radius:12px}.shop-items article>img{width:72px;height:72px;object-fit:contain;image-rendering:pixelated}.shop-items h3{font-size:12px;min-height:36px;margin:8px 0}.shop-items button{display:flex;align-items:center;justify-content:center;gap:4px;width:100%;font-size:12px;min-height:42px;margin:0;padding:8px 3px}.shop-items button img{width:22px;height:22px;image-rendering:pixelated}.shop-result{text-align:center;padding:20px}.shop-result>img{display:block;width:88px;height:88px;object-fit:contain;image-rendering:pixelated;margin:0 auto 8px}.shop-result h3{font-size:16px}.shop-result>.item-tier{display:block}.shop-result>.gear-options{max-width:260px;margin:14px auto}.shop-result>.primaryaction{margin:12px 0 0}
.dungeon-quota{display:flex;align-items:center;gap:12px;border:1px solid #7f3547;border-radius:10px;background:#2b1721;padding:12px;margin:0 0 16px}.dungeon-quota img{width:42px;height:42px;object-fit:contain;image-rendering:pixelated}.dungeon-quota span{font-size:12px;color:#edc5d1}.dungeon-quota b{font-size:22px;color:#ff8c99;margin-left:8px}.dungeon-quota small{display:block;font-size:10px;color:#b99ca8;margin-top:3px}
.gacha-heading{z-index:4;isolation:isolate}.gacha-cabinet-tabs{position:relative;z-index:3}.gacha-stage{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;align-content:center;gap:14px;padding:12px 0 20px;isolation:isolate}.gacha-stage .gacha-chest{grid-column:1;flex-shrink:0}.gacha-stage p,.gacha-page:not(.is-lesson-cabinet) .gacha-stage p{grid-column:1;margin:0 8px;line-height:1.6;text-align:center;max-width:100%}.gacha-stage .chest-aura,.gacha-stage .chest-runes{z-index:-1;pointer-events:none}
.bag-filter-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 0}.bag-filter-toolbar button,.gear-bag-filters>button{padding:10px 13px;border:1px solid #8e4b5f;border-radius:8px;background:#2e1c26;color:#f5c7d8;font-size:12px}.bag-filter-toolbar>span{font-size:11px;color:#bca7b2}.gear-bag-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px;margin-bottom:14px;background:#21171f;border:1px solid #68404c;border-radius:10px}.gear-bag-filters[hidden]{display:none}.gear-bag-filters label{font-size:11px;color:#d7b6c4}.gear-bag-filters select{display:block;margin-top:5px;width:100%;min-width:0;padding:9px;border:1px solid #72404f;border-radius:6px;background:#151118;color:#f3e4ec;font:inherit}.gear-bag-filters>button{align-self:end}
.farm-summon-controls{gap:8px}.farm-summon{width:58px;height:58px;padding:4px;border-radius:12px}.farm-summon span{font-size:9px;letter-spacing:0;line-height:1.4;white-space:nowrap}.farm-summon b{font-size:20px}.summon-auto-toggle{width:32px;height:36px;font-size:21px}.farm-summon.is-auto:after{border-radius:9px}
#battleResult[open]{display:flex;flex-direction:column}#battleResult .result-content{flex:1;min-height:0;height:auto}#battleResult .result-actions{position:relative;flex:none}#resultContinueStatus{margin:0;color:#f2acb8;font-size:11px;text-align:center}
/* Complete outfit packs and reusable back accessories. */
.profile{position:relative}.profile>div{min-width:0}.appearance-entry{margin-left:auto;flex:0 0 auto;display:flex;align-items:center;flex-direction:column;gap:3px;padding:9px 10px;border:1px solid #755a42;border-radius:12px;background:#201b20;color:#ffe3a3;font-size:11px}.appearance-entry>span{font-size:24px;animation:appearance-spark 2.4s ease-in-out infinite}@keyframes appearance-spark{50%{opacity:.65;transform:scale(1.15)}}.appearance-stage{display:flex;align-items:center;flex-direction:column;min-height:235px;padding:12px;background:radial-gradient(ellipse at 50% 60%,#68404755,transparent 65%)}.appearance-stage>.rig-preview{width:180px;height:180px}.appearance-stage small{color:#b8adb1;margin-top:5px}.appearance-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}.appearance-option{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;min-height:174px;padding:10px 6px;border:1px solid #49363d;border-radius:13px;background:#19161b;color:#eee}.appearance-option.chosen{border-color:#e9b76b;background:#352128;box-shadow:inset 0 0 0 1px #e9b76b55}.appearance-option .rig-preview{width:105px;height:105px}.appearance-option>img{width:100px;height:85px;object-fit:contain;image-rendering:pixelated}.appearance-option>b{font-size:13px}.appearance-option>small{height:18px;color:#eac98e;font-size:10px}.no-wings{height:85px;font-size:40px;color:#77666e}.appearance-actions{display:grid;grid-template-columns:1fr;gap:10px;position:sticky;bottom:0;background:#181318ee;padding:12px 0}.appearance-message{text-align:center;font-size:12px;color:#b9a9ae}@media(max-width:420px){.profile>.rig-preview{width:86px;height:100px}.profile h3{font-size:16px}.appearance-entry{padding:8px 7px;font-size:10px}}@media(prefers-reduced-motion:reduce){.appearance-entry>span{animation:none}}
.identity-name,.character-name-row{display:flex;align-items:center;gap:5px;min-width:0}.identity-name>b,.character-name-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rename-character{display:inline-grid;place-items:center;flex:0 0 24px;width:24px;height:24px;padding:4px;border:0;border-radius:7px;background:#21171b66;color:#e5c69c;cursor:pointer}.rename-character svg{width:16px;height:16px}.rename-character:hover{background:#6c3344}.rename-character:focus-visible{outline:2px solid #e5c69c}.rename-dialog{box-sizing:border-box;width:min(360px,calc(100vw - 32px));padding:24px;border:1px solid #8b4554;border-radius:18px;background:#1b151c;color:#fff}.rename-dialog::backdrop{background:#09070bd9}.rename-dialog h2{font-size:20px;margin:0 0 20px}.rename-dialog label{display:block;font-size:13px;margin-bottom:8px;color:#dbc8ce}.rename-dialog input{box-sizing:border-box;width:100%;padding:12px;border:1px solid #74505d;border-radius:10px;background:#100d12;color:#fff;font:inherit;font-size:16px}.rename-error{min-height:18px;font-size:12px;color:#ff9aad;margin:8px 0}.rename-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.game-profiler{position:fixed;z-index:70;top:150px;left:8px;max-height:calc(100dvh - 175px);width:min(390px,calc(100vw - 16px));box-sizing:border-box;overflow:auto;padding:12px;border:1px solid #b25f6c;border-radius:12px;background:#08090feF;color:#ccebd3;pointer-events:auto;touch-action:pan-y;box-shadow:0 4px 20px #0008}.game-profiler pre{font:11px/1.45 ui-monospace,monospace;white-space:pre-wrap;margin:0;overflow-wrap:anywhere}@media(max-width:500px){.game-profiler{top:140px;padding:9px}.game-profiler pre{font-size:10px}}
.feature-locked{opacity:.4;filter:grayscale(1);position:relative}.feature-locked::after{content:'🔒 ' attr(data-lock-level);display:block;font-size:9px;color:#fff}.unlock-guide{position:fixed;inset:0;z-index:10000;pointer-events:none}.guide-dim{position:fixed;background:#000c;pointer-events:auto}.guide-focus{position:fixed;border:2px solid #ffe4a2;border-radius:12px;box-shadow:0 0 24px #ffeaaf80;box-sizing:border-box}.guide-copy{position:fixed;pointer-events:auto;box-sizing:border-box;background:#15121bee;border:1px solid #997653;border-radius:16px;padding:16px;color:#fff;box-shadow:0 8px 30px #0009}.guide-copy small{font-size:11px;color:#e8c797}.guide-copy h3{margin:8px 0;font-size:18px}.guide-copy p{font-size:14px;line-height:1.6;margin:8px 0}.guide-copy button{border:0;background:none;color:#bdb1bb;padding:7px 0;font-size:12px}.invasion-entry{position:fixed;right:max(8px,calc(10% - 42px));bottom:calc(104px + env(safe-area-inset-bottom));width:84px;min-height:82px;z-index:8;border:1px solid #b0a7a4;border-radius:18px;background:#19131dde;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.invasion-entry>span{font-size:26px}.invasion-entry b{font-size:13px}.invasion-entry small{font-size:11px;color:#f4d7b5}.invasion-entry.ready{animation:invasion-shine 2s ease-in-out infinite}@keyframes invasion-shine{50%{box-shadow:0 0 7px 2px #fff8,0 0 20px #fff5;border-color:white}}.invasion-entry[hidden]{display:none}.invasion-entry:disabled{opacity:.5}.invasion-result{position:fixed;inset:0;margin:0;max-width:none;max-height:none;width:100vw;height:100dvh;box-sizing:border-box;border:0;background:radial-gradient(circle at 50% 30%,#4d2536,#141017 65%);color:#fff;text-align:center;padding:10vh 20px 130px;overflow:auto}.invasion-result>small{color:#c8a99c}.invasion-result h1{font-size:30px;color:#ffe0b2}.invasion-result>.rig-preview{width:180px;height:180px}.invasion-rewards{display:flex;gap:20px;justify-content:center;margin:20px 0;color:#ffdf9c}.invasion-result-actions{position:fixed;bottom:0;left:0;right:0;display:grid;gap:10px;padding:16px max(16px,calc((100vw - 440px)/2));background:#100d16f2}#invasionBattleHUD{position:fixed;left:50%;top:155px;transform:translateX(-50%);z-index:9;background:#18121dee;border:1px solid #a87a64;border-radius:12px;padding:10px 16px;text-align:center;color:#fff;min-width:210px}#invasionBattleHUD[hidden]{display:none}#invasionBattleHUD span{display:block;color:#ffe2ad;margin:5px}#invasionBattleHUD button{background:none;border:0;color:#c0a7ab;font-size:10px}.lesson-combat-hud{right:calc(10% + 52px)!important}@media(prefers-reduced-motion:reduce){.invasion-entry.ready{animation:none;box-shadow:0 0 8px #fff8}}
.guide-copy::before{content:'▲';position:absolute;top:-20px;left:22px;color:#e8c797;font-size:22px}.guide-copy[data-side="above"]::before{content:'▼';top:auto;bottom:-20px}

/* Locked features leave no disabled placeholder; tutorial has no arrow. */
#openWeaponGacha[hidden],#openGearShop[hidden],[data-tab][hidden]{display:none!important}
.guide-copy::before,.guide-copy::after{display:none!important;content:none!important}
/* Illustrated game HUD: equipment silhouettes float above the scene. */
nav .navicon{width:52px;height:52px;background:none;border:0;border-radius:0;clip-path:none;box-shadow:none;color:inherit;transition:transform .15s ease}
nav .navicon:after{display:none}
nav .navicon img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 2px 0 #19101c) drop-shadow(0 3px 3px #0008)}
nav .active .navicon{background:none;border:0;box-shadow:none;transform:translateY(-3px)}
nav .active .navicon img{filter:drop-shadow(0 0 5px #ffd89a90) drop-shadow(0 2px 2px #000)}
nav button>span:last-child{font-size:11px;font-weight:800;letter-spacing:0;margin-top:4px;color:#fff0d2;text-shadow:0 2px 2px #110c13,1px 0 #110c13,-1px 0 #110c13}
nav button:active .navicon{transform:translateY(1px) scale(.94)}
nav button:focus-visible,.shop-shortcut:focus-visible,.dungeon-shortcut:focus-visible{outline:2px solid #ffe1a4;outline-offset:4px;border-radius:10px}
.dungeon-shortcut{right:12px;width:54px;height:72px;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border:0;background:none;filter:none;z-index:12}
.dungeon-shortcut img{display:block;width:44px;height:48px;object-fit:contain;filter:drop-shadow(0 2px 2px #0008)}
.dungeon-shortcut span{font-size:10px;font-weight:800;color:#ffe8c3;text-shadow:1px 1px 2px #000,0 0 4px #000;margin-top:0}
@media(max-width:480px){nav .navicon{width:45px;height:46px}nav button>span:last-child{font-size:10px}}
@media(prefers-reduced-motion:reduce){nav .navicon{transition:none}}

/* Plain silhouette-first bottom navigation. */
nav .navicon img{width:37px;height:37px;margin:auto;filter:drop-shadow(0 1px 1px #000b)}
nav .active .navicon{transform:none}
nav .active .navicon img{filter:drop-shadow(0 1px 1px #000b)}
@media(max-width:480px){nav .navicon img{width:33px;height:33px}}

/* Invasion is a compact text shortcut, sized like a navigation icon. */
.invasion-entry{width:52px;height:52px;min-height:0;border-radius:12px;gap:3px;padding:3px}
.invasion-entry>span{display:none}
.invasion-entry b{font-size:10px;line-height:1.2;white-space:nowrap}
.invasion-entry small{font-size:9px;line-height:1.2}
@media(max-width:480px){.invasion-entry{width:45px;height:46px;border-radius:10px}.invasion-entry b{font-size:9px}.invasion-entry small{font-size:8px}}

/* Gacha, shop and dungeon share one compact illustrated shortcut family. */
.gacha-shortcut{width:54px;height:72px;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:none;border:0;border-radius:0;box-shadow:none;animation:none}
.gacha-shortcut img{width:44px;height:48px;object-fit:contain;image-rendering:auto;filter:drop-shadow(0 2px 2px #0008)}
.gacha-shortcut span{font-size:10px;font-weight:800;color:#ffe8c3;text-shadow:1px 1px 2px #000,0 0 4px #000;margin-top:0}
/* Distribute only visible entries; hidden level-gated menus leave no grid slot. */
nav{display:flex;justify-content:space-between;align-items:flex-end;gap:0;box-sizing:border-box;padding-left:max(12px,env(safe-area-inset-left,0px));padding-right:max(12px,env(safe-area-inset-right,0px))}
nav>button{flex:0 0 52px;width:52px;min-width:0}
@media(max-width:480px){nav>button{flex-basis:45px;width:45px}}

/* Small unread reward dots; anchored to the icon without affecting navigation spacing. */
nav .navicon .menu-badge{position:absolute;right:0;top:0;width:8px;height:8px;border:1.5px solid #4b1822;border-radius:50%;background:#f04455;box-shadow:inset 0 1px 1px #ffbbc5,0 0 4px #d7183950;pointer-events:none}
nav .navicon .menu-badge[hidden]{display:none}
/* Skill slots follow the screen's right safe edge, not the invasion button's inset. */
.lesson-combat-hud{right:max(12px,env(safe-area-inset-right,0px))!important}
/* Unread dots: twice the original diameter, same icon anchor. */
nav .navicon .menu-badge{width:16px;height:16px}

/* Battle navigation remains hidden until the result returns to farming. */
nav[hidden],.dungeon-shortcut[hidden]{display:none!important}

/* HUD transparency without re-blurring the live game beneath it. */
header.compact-student,dialog::backdrop{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}

/* Do not repaint an animated shadow at display refresh rate during balanced farming. */
.mobile-balanced .invasion-entry.ready{animation:none;box-shadow:0 0 6px #fff7;border-color:#fff}
.game-profiler{background:#08090f}
/* Full-screen asset update with safe-area spacing. */
.patch-screen{position:fixed;inset:0;z-index:100000;background:radial-gradient(ellipse at 50% 38%,#38202b,#100e13 70%);color:#f8eee6;display:grid;place-items:center;overflow:auto;padding:max(24px,env(safe-area-inset-top)) 24px max(24px,env(safe-area-inset-bottom));box-sizing:border-box}.patch-screen[hidden]{display:none}.patch-content{width:min(100%,420px);text-align:center}.patch-content>small{font-size:10px;letter-spacing:2px;color:#d58e85}.patch-content h1{font-size:clamp(18px,4vw,24px);margin:12px 0 20px}.patch-card{margin:0 auto 24px}.patch-card img{display:block;margin:auto;width:auto;max-width:100%;height:min(38vh,300px);aspect-ratio:3/4;object-fit:cover;border:2px solid #c59b54;border-radius:12px;box-shadow:0 8px 24px #0007}.patch-card h2{font-size:19px;margin:14px 0 6px;color:#f5d699}.patch-card p{font-size:12px;line-height:1.7;max-width:360px;margin:auto;color:#d8c6bf}.patch-progress-label{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;text-align:left}.patch-progress-label b{font-size:17px;color:#f5d699}.patch-content progress{display:block;width:100%;height:12px;margin:10px 0;accent-color:#d34853;border:0;border-radius:8px;overflow:hidden;background:#37262e}.patch-content progress::-webkit-progress-bar{background:#37262e}.patch-content progress::-webkit-progress-value{background:linear-gradient(90deg,#8d2738,#ed6b71);border-radius:8px}.patch-content progress::-moz-progress-bar{background:#d34853}.patch-save-note{font-size:10px;color:#a89a98}.patch-content button{margin-top:12px;padding:10px 28px;background:#912e40;color:#fff;border:1px solid #e28d93;border-radius:8px}.patch-loading>main{visibility:hidden}

/* Result motion is shared by boss fights and invasions. */
.battle-end{--result-accent:#f8ca73;--result-aura:#a866303f}
.battle-end.defeat{--result-accent:#ed9da4;--result-aura:#87344347}
.battle-end[open]{background-image:radial-gradient(ellipse at 50% 10%,var(--result-aura),transparent 64%)}
.battle-end[open] .result-seal{color:var(--result-accent);animation:result-seal-enter .48s .08s cubic-bezier(.2,.75,.25,1) both}
.battle-end[open] :is(.result-stats,.invasion-rewards){animation:result-enter .35s .17s ease-out both}
.battle-end[open] :is(.result-actions,.invasion-result-actions){animation:result-enter .28s .24s ease-out both}
.invasion-result[open]{background-color:#17121d;opacity:1}
.invasion-result .result-seal{display:grid;place-items:center;width:56px;height:56px;margin:12px auto;border:1px solid currentColor;border-radius:50%;font-size:30px}
@keyframes result-enter{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@keyframes result-seal-enter{from{opacity:0;transform:scale(.7) rotate(-12deg)}to{opacity:1;transform:scale(1) rotate(0)}}
.devil-wing-reward{display:flex;align-items:center;gap:12px;margin:12px 0;padding:10px;border:1px solid #dca454;border-radius:12px;background:linear-gradient(125deg,#492333,#241c26);text-align:left;color:#ffe2a2}
.devil-wing-reward b,.devil-wing-reward small,.devil-wing-reward span:not(.devil-wing-icon){display:block}
.devil-wing-reward small,.devil-wing-reward span:not(.devil-wing-icon){font-size:11px}
.devil-wing-icon{position:relative;display:grid;place-items:center;flex:0 0 64px;width:64px;height:64px;border-radius:10px;background:radial-gradient(circle,#df9e6370,transparent 73%)}
.devil-wing-icon img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}
.devil-wing-icon::after{content:'✦';position:absolute;top:1px;right:3px;color:#fff0a1;text-shadow:0 0 8px #ffc256;animation:wing-sparkle 1.8s ease-in-out infinite}
@keyframes wing-sparkle{50%{opacity:.4;transform:scale(.72)}}
.appearance-option:disabled{opacity:.66;cursor:not-allowed}
@media(prefers-reduced-motion:reduce){.battle-end[open],.battle-end[open] :is(.result-seal,.result-stats,.invasion-rewards,.result-actions,.invasion-result-actions),.devil-wing-icon::after{animation:none}}

.cloud-account{padding:12px;margin-bottom:14px;border:1px solid #67323e;border-radius:10px;background:#26191f}
.cloud-account p,.cloud-login p{font-size:13px;color:#dfc4c4}
.cloud-account .settings-action{width:100%;margin-top:8px}
.cloud-login{width:min(420px,calc(100vw - 32px));box-sizing:border-box;background:#21171f;color:#fff1e4;border:1px solid #985361;border-radius:14px;padding:20px}
.cloud-login::backdrop{background:#000b}
.cloud-login h2{margin:0 0 14px}
.cloud-login label{display:grid;gap:5px;margin:10px 0}
.cloud-login input{box-sizing:border-box;width:100%;padding:9px;background:#110e14;color:#fff;border:1px solid #78505e;border-radius:6px;font:inherit}
.cloud-login button{margin:5px 5px 0 0}

/* First visit takes place on the campus lawn. */
.player-intro{position:fixed;inset:0;z-index:100010;isolation:isolate;overflow:auto;background:#85bcdf;color:#fff5df;display:grid;place-items:center;padding:max(16px,env(safe-area-inset-top)) 16px max(18px,env(safe-area-inset-bottom));box-sizing:border-box}
.intro-campus,.intro-shade{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:-1}
.intro-clouds{position:absolute;inset:0 0 35%;overflow:hidden;background:#80b6e0}
.intro-clouds::before{content:'';position:absolute;inset:0 auto 0 0;width:max(135vw,240vh);background:url('assets/environment/backgrounds/campus-cloudy-sky.png') center / 100% 100%;animation:intro-cloud-drift 65s linear infinite alternate;image-rendering:pixelated}
.intro-school{position:absolute;bottom:35%;left:50%;transform:translateX(-50%);width:clamp(620px,88vw,1520px);max-height:60%;object-fit:contain;object-position:center bottom}
.intro-lawn{position:absolute;inset:64% 0 0;background:repeating-linear-gradient(0deg,#ffffff09 0 10px,transparent 10px 28px),linear-gradient(#678d4a,#426235 70%,#263d26);border-top:5px solid #b9bc78}
.intro-shade{background:linear-gradient(180deg,#1a253225,transparent 23%,#10121d25 65%,#0b1223a0)}
.intro-walker{--walker-size:clamp(108px,15vw,174px);position:absolute;bottom:9%;left:0;width:var(--walker-size);height:var(--walker-size);animation:intro-walk 15s linear infinite}
.intro-walker.walker-1{bottom:18%;animation-duration:19s;animation-delay:-9s}
.intro-walker-facing{position:relative;width:100%;height:100%;animation:intro-face 15s steps(1) infinite}
.walker-1 .intro-walker-facing{animation-duration:19s;animation-delay:-9s}
.intro-walker-strip{position:absolute;inset:0;overflow:hidden}
.intro-walker-strip img{display:block;width:calc(var(--frames) * 100%);height:100%;max-width:none;image-rendering:pixelated;animation:intro-walk-frames .68s steps(var(--frames)) infinite}
.intro-content{width:min(100%,430px);display:grid;justify-items:center;gap:14px;margin:auto}
.intro-card{width:100%;box-sizing:border-box;padding:clamp(18px,5vw,32px);text-align:center;background:linear-gradient(145deg,#1c1a26f2,#301a26f2);border:1px solid #f3c683a0;border-radius:18px;box-shadow:0 15px 45px #11112260}
.intro-eyebrow{font-size:11px;color:#f7cf92;letter-spacing:.16em}
.intro-landing h1{font-size:clamp(52px,12vw,88px);line-height:.8;letter-spacing:-.075em;margin:22px 0;color:#fff4df;text-shadow:0 3px #561a2f}
.intro-divider{height:1px;background:linear-gradient(90deg,transparent,#f4bf79,transparent)}
.intro-landing p{font-size:14px;margin:16px 0}
.intro-auth{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.intro-primary,.intro-secondary,.intro-guest{min-height:44px;padding:9px 14px;border-radius:8px;font:inherit;font-weight:800;cursor:pointer}
.intro-primary{border:1px solid #efbb75;background:linear-gradient(#ad494b,#782c42);color:#fff5df}
.intro-secondary{border:1px solid #ad836e;background:#342630;color:#fff1d9}
.intro-guest{border:1px solid #fff1c98c;background:#151c24eb;color:#fff4d7}
.intro-creation h1{margin:6px 0 12px;font-size:26px}
.intro-choices{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:14px}
.intro-choices button{display:grid;justify-items:center;gap:5px;min-width:0;padding:6px 4px 10px;border:1px solid #8b6a68;border-radius:12px;background:#30232c;color:#fff2db;cursor:pointer}
.intro-choices button[aria-pressed=true]{border-color:#f7cb83;background:radial-gradient(ellipse at 50% 65%,#8b5449,#432839 74%);box-shadow:inset 0 0 0 1px #f7cb83}
.intro-choices .rig-preview{width:100%;height:auto;aspect-ratio:1}
.intro-creation label,.intro-creation input{display:block;text-align:left}
.intro-creation input{width:100%;box-sizing:border-box;min-height:44px;margin-top:5px;border-radius:8px;border:1px solid #a77d73;padding:8px 10px;background:#18151c;color:#fff6e6;font:inherit}
.intro-creation .intro-primary{width:100%}
.intro-error{min-height:1.25em;margin:4px 0;color:#ffb9ad;font-size:12px}
.intro-leaving{pointer-events:none;animation:intro-enter-game .68s cubic-bezier(.4,0,.2,1) both}
.intro-leaving::after{content:'';position:fixed;inset:0;z-index:1;background:radial-gradient(ellipse at center,#fff4c2,#ffbd68 45%,#9a383f);animation:intro-gold-wipe .68s ease-in-out both}
@keyframes intro-cloud-drift{to{transform:translateX(calc(100vw - max(135vw,240vh)))}}
@keyframes intro-walk{0%,100%{transform:translateX(6vw)}50%{transform:translateX(calc(94vw - var(--walker-size)))}}
@keyframes intro-face{0%{transform:scaleX(1)}50%{transform:scaleX(-1)}}
@keyframes intro-walk-frames{to{transform:translateX(-100%)}}
@keyframes intro-enter-game{0%,62%{opacity:1}100%{opacity:0}}
@keyframes intro-gold-wipe{0%{opacity:0;clip-path:inset(49% 0 round 20px)}65%,100%{opacity:1;clip-path:inset(0)}}
@media(prefers-reduced-motion:reduce){
 .intro-clouds::before,.intro-walker,.intro-walker-facing,.intro-walker-strip img,.intro-leaving,.intro-leaving::after{animation:none}
 .intro-walker{left:10%}.intro-walker.walker-1{left:65%}
 .intro-leaving{animation:intro-enter-game .1s linear both}
 .intro-leaving::after{display:none}
}
@media(max-width:600px){
 .intro-clouds{bottom:48%}
 .intro-school{bottom:48%}
 .intro-lawn{top:51%}
 .intro-content:has(.intro-landing){transform:translateY(10vh)}
 .intro-walker{bottom:5%}
 .intro-walker.walker-1{bottom:12%}
}
@media(max-height:620px){
 .intro-content:has(.intro-landing){transform:none}
}

/* Dim locked collection artwork without dimming the card's text or controls. */
.weapon-card-art{position:relative;display:block;flex-shrink:0;border-radius:8px;overflow:hidden}
.weapon-card-art>.student-portrait{display:block}
.locked-art::after{content:"";position:absolute;inset:0;background:rgba(0,0,0,.48);border-radius:inherit;pointer-events:none}

.idle-rewards{width:min(92vw,460px);max-height:85dvh;overflow:auto;text-align:center;padding:24px;color:#fff2cb;border:1px solid #c99148;border-radius:16px;background:radial-gradient(ellipse at 50% 0%,#634016,#241713 65%,#130f13);box-shadow:0 0 45px #e3ac4655}
.idle-rewards::backdrop{background:#0e080ce6}
.idle-rewards::before{content:"✧  ·  ✦  ·  ✧";display:block;color:#ffdc85;text-shadow:0 0 18px #ffd078;font-size:26px;animation:idle-glow 2.5s ease-in-out infinite alternate}
@keyframes idle-glow{from{opacity:.45}to{opacity:1}}
.idle-rewards strong{display:block;font-size:1.5rem;color:#ffdc85}
.idle-rewards ul{list-style:none;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.idle-rewards li{display:grid;justify-items:center;gap:6px;padding:8px;border-radius:8px;background:#ffd97814;overflow-wrap:anywhere}
.idle-rewards img{width:62px;height:62px;object-fit:contain;image-rendering:pixelated}
.idle-rewards button{width:100%;margin-top:10px}
@media(prefers-reduced-motion:reduce){.idle-rewards::before{animation:none}}

.dungeon-shortcut.pvp-shortcut{top:calc(166px + env(safe-area-inset-top,0px))}
.pvp-screen{box-sizing:border-box;width:100%;height:100dvh;max-width:100%;max-height:100%;margin:auto;padding:calc(12px + env(safe-area-inset-top,0px)) 14px calc(16px + env(safe-area-inset-bottom,0px));color:#eeeaff;background:#070c1c url("assets/ui/pvp/podium-space.png") center center/cover no-repeat;border:0;border-radius:0;overflow:auto}
.pvp-screen::backdrop{background:#050711}
.pvp-heading{display:grid;grid-template-columns:42px 1fr 42px;align-items:center;min-height:42px}
.pvp-heading h2{grid-column:2;text-align:center;margin:0;font-size:1.15rem;text-shadow:0 2px #080b19}
.pvp-heading .ui-back{grid-column:1;grid-row:1;align-self:center;width:40px;height:40px;padding:0;background:#101b36b3;border:1px solid #547099;border-radius:10px}
.pvp-content>p,.pvp-pages{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pvp-content>p{flex-wrap:wrap;padding:7px 9px;margin:12px 0 0;background:#101b32b8;border-radius:6px;font-size:.83rem}
.pvp-podium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:3px;margin:12px 0 20px}
.pvp-place{min-width:0;text-align:center;overflow-wrap:anywhere}
.pvp-podium-fighter{position:relative;display:grid;justify-items:center;align-items:end;height:clamp(72px,23vw,128px);z-index:1}
.pvp-podium-fighter .pvp-challenge{position:absolute;right:0;bottom:0;width:32px;height:32px}
.pvp-podium-step{position:relative;display:grid;place-items:center;height:var(--step,48px);margin-top:-6px;background:url("assets/ui/pvp/podium.svg") center/100% 100% no-repeat;color:#fff;font:bold 1.35rem monospace;text-shadow:0 2px #141829}
.pvp-podium-step b{padding-top:12px}
.pvp-place-1{--step:74px}.pvp-place-1 .pvp-podium-step{filter:sepia(.85) saturate(1.7)}
.pvp-place-2{--step:58px}.pvp-place-3 .pvp-podium-step{filter:sepia(.68) saturate(1.55) hue-rotate(345deg)}
.pvp-place-caption{display:grid;gap:2px;min-height:2.8em;padding:4px 2px;font-size:.8rem;text-shadow:0 2px #070a16}
.pvp-place-caption small{color:#b8c8e5}
.pvp-place .rig-preview{width:min(100%,120px);height:auto;aspect-ratio:1}
.pvp-roster-panel{min-height:116px;border:1px solid #394d72;border-radius:8px;background:#10182ee8;overflow:hidden}
.pvp-roster-heading{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:9px;border-bottom:1px solid #394d72;color:#c9d9f2}
.pvp-roster-heading h3{margin:0;font-size:.9rem}
.pvp-roster-empty{padding:8px;text-align:center;color:#9eb0cf;font-size:.82rem}
.pvp-roster{list-style:none;padding:0}
.pvp-roster li{display:grid;grid-template-columns:2rem 38px minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px;border-bottom:1px solid #39394d;overflow-wrap:anywhere}
.pvp-roster img{width:38px;height:38px;object-fit:contain;image-rendering:pixelated}.pvp-roster small{display:block}
.pvp-challenge{width:38px;height:36px;border-radius:8px;background:#343453;color:#fff1c0;border:1px solid #65618a}
.pvp-duel-hud{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:8px auto;max-width:384px;text-align:center}
.pvp-duel-hud>div{min-width:0;overflow-wrap:anywhere}
.pvp-duel-hud progress{display:block;width:100%;accent-color:#67d4a5}
.pvp-duel-hud>div:nth-child(2) progress{accent-color:#eb708a}
.pvp-arena{width:min(100%,384px,calc(61dvh * .64));margin:auto;border-radius:8px;overflow:hidden;background:#0c1122 url("assets/ui/pvp/moon-arena.png") center/100% 100% no-repeat;image-rendering:pixelated}
.pvp-arena canvas{display:block;width:100%;height:auto;image-rendering:pixelated}
.pvp-outcome{text-align:center;margin:12px}

.idle-debug{padding:12px;border:1px solid #654151;border-radius:10px;background:#23151dcc}
.idle-debug h3,.idle-debug p{margin:4px 0 8px}
.idle-debug-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(68px,88px) auto;align-items:center;gap:5px;margin-block:6px;font-size:.8rem}
.idle-debug-row input{box-sizing:border-box;width:100%;padding:6px;color:#fff;background:#1a1118;border:1px solid #745061;border-radius:5px}
.idle-debug-row button,.idle-debug-actions button{padding:6px;color:#ffe4b4;background:#3c2633;border:1px solid #745061;border-radius:5px}
.idle-debug-actions{display:flex;gap:6px;margin-top:9px}

.dungeon-shortcut.pvp-shortcut{-webkit-tap-highlight-color:transparent}
.dungeon-shortcut.pvp-shortcut:focus:not(:focus-visible){outline:none}
.dungeon-shortcut.pvp-shortcut:focus-visible{outline-color:#a4b2d6}
.pvp-loading .pvp-content{display:grid;place-items:center;min-height:calc(100dvh - 112px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}
.pvp-loader{display:grid;gap:10px;width:min(72%,270px);text-align:center;color:#d8e8ff}
.pvp-loader progress{width:100%;height:12px;accent-color:#8fc9ff}

.pvp-screen:not(.pvp-in-battle)>.pvp-heading,.pvp-screen:not(.pvp-in-battle)>.pvp-content{max-width:680px;margin-inline:auto}
.pvp-screen.pvp-in-battle{position:fixed;inset:0;padding:0;background:#060715 url("assets/ui/pvp/space.svg") center/cover no-repeat;overflow:hidden}
.pvp-in-battle .pvp-arena{position:absolute;inset:0;width:min(100vw,64dvh);margin:auto;max-width:none;border-radius:0;height:fit-content}
.pvp-in-battle .pvp-heading,.pvp-in-battle .pvp-duel-hud,.pvp-in-battle .pvp-outcome{position:relative;z-index:1}
.pvp-in-battle .pvp-heading{margin:calc(8px + env(safe-area-inset-top,0px)) 12px 0}
.pvp-in-battle .pvp-duel-hud{width:min(90vw,460px);padding:8px 12px;background:#080b1bc9;border-radius:10px;box-sizing:border-box}
.pvp-in-battle .pvp-outcome{position:absolute;bottom:calc(10px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);width:min(88%,380px);margin:0;padding:8px 12px;background:#080b1be6;border-radius:10px;box-sizing:border-box}

.pvp-in-battle .pvp-arena{background-image:url("assets/ui/pvp/moon-perspective.png")}
.pvp-arena canvas{position:relative}
.pvp-planet{position:absolute;pointer-events:none;image-rendering:pixelated;animation:pvp-orbit 12s ease-in-out infinite alternate}
.pvp-planet-ring{left:9%;top:16%;width:19%}
.pvp-planet-blue{right:14%;top:9%;width:11%;animation-direction:alternate-reverse;animation-duration:16s}
@keyframes pvp-orbit{to{transform:translate(18px,-7px)}}
@media(prefers-reduced-motion:reduce){.pvp-planet{animation:none}}
.pvp-in-battle .pvp-outcome[hidden]{display:none}

.dungeon-shortcut.pvp-shortcut:focus,.dungeon-shortcut.pvp-shortcut:focus-visible{outline:none;box-shadow:none}
.dungeon-shortcut.pvp-shortcut:focus-visible img{filter:drop-shadow(0 0 4px #c3d8ff)}
.pvp-podium-fighter canvas{display:block;width:min(100%,132px);height:auto;image-rendering:pixelated}
.pvp-content .pvp-pages{justify-content:center;gap:8px;margin-block:14px;color:#d9e6ff}
.pvp-pages button,.pvp-pages span{display:grid;place-items:center;min-height:38px;padding:0 12px;border:1px solid #536b96;background:#17243e;box-shadow:inset 0 2px #7f97b446,0 3px #080d19;border-radius:4px}
.pvp-pages button{width:42px;padding:0;color:#ffdda3;font-size:25px}
.pvp-pages button:disabled{opacity:.4}
.pvp-pages span{display:flex;gap:5px;font-size:.83rem}

.pvp-screen.pvp-in-battle{background:#080a17 url("assets/ui/pvp/moon-perspective.png") center 42%/cover no-repeat;image-rendering:pixelated}
.pvp-in-battle .pvp-arena{width:100%;height:100%;background:none;display:grid;place-items:center}
.pvp-in-battle .pvp-arena canvas{width:min(100%,64dvh)}
.pvp-in-battle .pvp-planet-ring{left:clamp(18px,14vw,240px);width:clamp(48px,12vw,114px)}
.pvp-in-battle .pvp-planet-blue{right:clamp(18px,15vw,240px);width:clamp(32px,7vw,70px)}
.pvp-buff-slot{display:flex;justify-content:flex-start;min-height:0;padding-top:3px}
.pvp-duel-hud>div:nth-child(2) .pvp-buff-slot{justify-content:flex-end}
.pvp-buff{position:relative;display:block;width:22px;height:30px;overflow:hidden;border:1px solid #e2bd6b;border-radius:3px;background:#1e1721}
.pvp-buff img{display:block;width:100%;height:100%;object-fit:cover;image-rendering:auto}
.pvp-buff b{position:absolute;right:0;bottom:0;padding:0 2px;color:#fff;background:#110b16d9;font-size:9px;line-height:12px}

.pvp-screen.pvp-in-battle{background:#080a17 url("assets/ui/pvp/moon-perspective.png") center/auto 100% no-repeat}
.pvp-in-battle .pvp-arena canvas.pvp-scenery{position:absolute;top:0;left:50%;width:max(100%,64dvh);height:100%;transform:translateX(-50%);pointer-events:none}
.pvp-in-battle .pvp-planet{z-index:1}
.pvp-in-battle .pvp-arena canvas:not(.pvp-scenery){z-index:2}

.pvp-inspect-pose,.pvp-inspect-avatar{border:0;background:transparent;color:inherit;padding:0;cursor:pointer}
.pvp-inspect-pose{display:grid;justify-items:center;width:100%}
.pvp-equipment{box-sizing:border-box;width:min(94vw,480px);max-height:88dvh;overflow:auto;background:linear-gradient(160deg,#232943,#111425 68%);color:#f5efff;border:1px solid #56638d;border-radius:14px;padding:clamp(10px,3vw,16px);box-shadow:0 14px 60px #030611bb}
.pvp-equipment::backdrop{background:#060817db}
.pvp-equipment-header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 0 10px;border-bottom:1px solid #54608466}
.pvp-equipment-header small,.pvp-item-heading small,.pvp-item-extra>small{color:#c2c9e5;font-size:.72rem}
.pvp-equipment-header h2{margin:2px 0 0;font-size:1.15rem}
.pvp-equipment-header button{width:36px;height:36px;border:1px solid #647296;border-radius:8px;background:#26314d;color:#fff;font-size:22px}
.pvp-equipment-content{padding-top:10px}
.pvp-loadout{display:grid;grid-template-columns:minmax(62px,1fr) minmax(86px,1.6fr) minmax(62px,1fr);align-items:center;gap:6px;padding:6px;border-radius:9px;background:radial-gradient(ellipse at center,#4b588c88,transparent 65%),#12182a}
.pvp-loadout-slots{display:grid;gap:5px}
.pvp-loadout-player{display:grid;justify-items:center;min-width:0;text-align:center;overflow-wrap:anywhere}
.pvp-loadout-player .rig-preview{display:block;width:100%;max-width:150px;height:auto;aspect-ratio:1}
.pvp-loadout-player h3{margin:4px 0;font-size:clamp(.83rem,3.4vw,1.1rem)}
.pvp-loadout-player>span:last-child{color:#e7c788;font-size:.8rem}
.pvp-equipped{display:grid;justify-items:center;gap:2px;width:100%;padding:4px 2px;border:1px solid var(--item-accent);border-radius:7px;background:radial-gradient(ellipse,#354266,#192237 75%);color:#eef1ff;text-align:center;line-height:1.2}
.pvp-equipped[aria-pressed=true]{outline:1px solid #f6d89a;box-shadow:inset 0 0 12px #e2b46d44}
.pvp-equipped img{width:34px;height:34px;object-fit:contain;image-rendering:pixelated}
.pvp-equipped small,.pvp-equipped .tier-text,.pvp-slot-empty,.pvp-slot-stars{font-size:.69rem}
.pvp-equipped:disabled{opacity:.5}
.pvp-slot-stars{color:#ffdc89}
.pvp-item-stats{padding:10px;margin-top:10px;background:#101529;border:1px solid #455473;border-radius:8px}
.pvp-item-heading{display:flex;align-items:center;gap:10px}
.pvp-item-heading>img{flex:0 0 56px;width:56px;height:56px;object-fit:contain;image-rendering:pixelated}
.pvp-item-heading>div{min-width:0;overflow-wrap:anywhere}
.pvp-item-heading .rarity-label{display:block;width:fit-content;margin:5px 0 3px;padding:0;background:transparent;border:0;box-shadow:none}
.pvp-item-heading .rarity-badge{display:block;width:auto;height:13px;max-width:100%;background:transparent;border:0;box-shadow:none}
.pvp-item-heading .student-stars{justify-content:flex-start;gap:2px;margin:3px 0 0;padding:0;background:transparent;border:0;box-shadow:none}
.pvp-item-heading .student-stars img{flex:0 0 13px;width:13px;height:13px;background:transparent;border:0;box-shadow:none}
.pvp-item-heading h3{margin:2px 0;font-size:1rem}
.pvp-item-base{display:flex;justify-content:space-between;gap:8px;margin-top:9px;padding:7px 8px;background:#212d46;border-radius:6px}
.pvp-item-base b{color:#ffe19f}
.pvp-item-extra{margin-top:8px}
.pvp-item-extra p{margin:4px 0}

.intro-landing{position:relative}
.intro-landing h1{font-size:clamp(34px,8.5vw,58px);line-height:.96;letter-spacing:-.055em;margin:14px 0}
.intro-visitor{animation-duration:var(--visitor-time);animation-delay:var(--visitor-delay)}
.intro-visitor .intro-walker-facing{animation-duration:var(--visitor-time);animation-delay:var(--visitor-delay)}
.intro-visitor-cat{--walker-size:clamp(42px,7vw,64px);--visitor-time:22s;--visitor-delay:-13s;bottom:4%}
.intro-visitor-boss{--walker-size:clamp(108px,17vw,174px);--visitor-time:27s;--visitor-delay:-7s;bottom:17%}
@media(prefers-reduced-motion:reduce){
 .intro-ghost,.intro-visitor,.intro-visitor .intro-walker-facing{animation:none}
 .intro-visitor-cat{left:24%}.intro-visitor-boss{left:70%}
}

.intro-logo{display:block;width:min(100%,400px);height:auto;margin-inline:auto}
.intro-ghost{position:absolute;bottom:min(78%,calc(35% + 235px));width:clamp(74px,12vw,128px);aspect-ratio:1;background:url("assets/environment/gym/ghost-girl.png") center/300% 100% no-repeat;image-rendering:pixelated;opacity:.55;animation:intro-haunt 14s ease-in-out infinite alternate}
.intro-ghost-left{left:14%}
.intro-ghost-right{right:12%;animation-delay:-8s}
@keyframes intro-haunt{
 0%{transform:translate(-14px,10px);opacity:.3}
 45%{transform:translate(10px,-12px);opacity:.66}
 100%{transform:translate(32px,4px);opacity:.4}
}
@media(max-width:600px){.intro-ghost{bottom:min(79%,calc(48% + 125px))}}
@media(prefers-reduced-motion:reduce){.intro-ghost{animation:none}}
