/* Entry flow: illustrated scenes, silver filigree and quiet violet focus. */
.in-front{background:#0e0d14;color:#e1dce4;font-family:Georgia,'Noto Serif SC','Microsoft YaHei',serif}.in-front:before,.in-front .page-footer{display:none}.in-front #app{min-height:100dvh}.front-scene{position:relative;isolation:isolate;min-height:100dvh;width:100%;max-width:none;margin:0;padding:0 4.5vw 70px;overflow:hidden;background:linear-gradient(90deg,#101018ed,#13101c85 55%,#101017ad),url('../assets/battle/sanctuary-background.png') center/cover fixed}.front-scene:before{content:'';position:absolute;inset:14px;pointer-events:none;border:1px solid #a996ad47;box-shadow:inset 0 0 0 4px #08080b44,inset 0 0 0 5px #a996ad15;z-index:6}.front-scene button{font-family:inherit;cursor:pointer}.front-scene button:disabled{cursor:default}.front-scene button:focus-visible{outline:2px solid #e7ccff;outline-offset:5px}.front-scene .button{border-radius:0;min-height:44px;border:1px solid #ae9aac;background:linear-gradient(115deg,#27232f,#191820);color:#e9dfe9;font-size:13px;letter-spacing:2px;position:relative;padding:13px 24px;clip-path:polygon(5% 0,95% 0,100% 50%,95% 100%,5% 100%,0 50%);text-align:center}.front-scene .button.primary{background:linear-gradient(105deg,#33253e,#544263aa,#2b2335);border-color:#d8b5f8;box-shadow:inset 0 0 12px #b983e36b,inset 0 0 0 3px #b596cf25;text-shadow:0 0 8px #e1c8ff55}.front-scene .button:hover{background-color:#483650;filter:brightness(1.18)}.front-header{height:93px;display:flex;align-items:center;gap:16px;position:relative;z-index:8;border-bottom:1px solid #a38f9d80}.front-header:after{content:'✦';position:absolute;bottom:-7px;left:35%;font-size:12px;color:#bfaabc}.front-header h1{font-size:23px;letter-spacing:4px;font-weight:400;margin:0;display:flex;align-items:baseline;gap:20px}.front-header h1 small{font-size:10px;color:#a799b1;letter-spacing:2px}.front-ornament{font-size:33px;color:#baa9bb}.front-back{background:transparent;border:0;border-left:1px solid #a591a557;padding:8px 18px;margin-left:auto;color:#d4c7db;font-size:12px}.front-wordmark{font-size:13px;letter-spacing:3px;color:#9c90a5;padding-left:20px}.front-wordmark b{font-size:22px;font-weight:400}.front-foot{position:absolute;bottom:27px;left:4.5vw;right:4.5vw;display:flex;gap:20px;align-items:center;color:#a99dab;letter-spacing:2px;font-size:11px}.front-foot:before{content:'';width:70px;height:1px;background:#b4a0b36b}.front-foot small{font-size:9px;margin-left:auto;letter-spacing:1px}.front-foot i{font-size:24px;font-style:normal;color:#bba7bc}.front-intro{text-align:center;margin:36px 0 27px;letter-spacing:5px;color:#d4c6dd;font-size:16px}
/* Cover */
.front-cover{height:100dvh;min-height:720px;background:linear-gradient(90deg,#0c0b11cf 0%,#15101c45 29%,transparent 54%),url('../assets/covers/eclipse-sanctuary.png') center/cover}.front-cover:after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,#100c164d,transparent 50%),linear-gradient(0deg,#0c0b13d9,transparent 22%)}.cover-hero{position:absolute;right:4%;bottom:-15%;width:77%;height:122%;object-fit:contain;object-position:center bottom;filter:drop-shadow(-18px 8px 24px #08070c80);z-index:1;pointer-events:none}.cover-moon{position:absolute;right:18%;top:5%;width:37vw;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#dbc6ff1c,transparent 66%);box-shadow:0 0 80px #b9a0fc17;pointer-events:none}.cover-sigil{position:absolute;left:-33px;top:-30px;width:200px;height:200px;opacity:.26;transform:rotate(16deg);color:#c4aeb7}.cover-sigil .ui-icon{width:100%;height:100%}.cover-version{position:absolute;right:36px;top:32px;font-size:10px;letter-spacing:2px;color:#d5c8d9;z-index:3}.cover-title{position:relative;z-index:3;width:390px;padding-top:clamp(65px,10vh,120px);text-shadow:0 2px 20px #09080ef0}.cover-title>span{font-size:31px;letter-spacing:12px}.cover-title h1{font-size:100px;line-height:1.12;letter-spacing:15px;font-weight:400;margin:12px 0 4px;padding-left:2px}.cover-subtitle{font-size:12px;letter-spacing:8px;border-top:1px solid #bcaabc77;padding-top:14px;width:222px}.cover-title p{font-size:13px;line-height:2.05;letter-spacing:2px;margin-top:26px}.cover-title>small{font-size:10px;letter-spacing:1.1px;line-height:1.7;color:#b6aaba}.cover-menu{position:relative;z-index:4;display:flex;flex-direction:column;width:335px;gap:4px;margin:38px 0 0 -18px}.cover-menu button{display:flex;align-items:center;gap:17px;border:0;background:none;color:#ddd3e1;text-align:left;padding:12px 24px;position:relative;font-size:18px;letter-spacing:4px;min-height:63px}.cover-menu button:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#b087d750,#6f4e8b27,transparent);opacity:0;border-block:1px solid transparent;transition:opacity .25s}.cover-menu button:hover:before,.cover-menu .cover-start:before{opacity:1;border-image:linear-gradient(90deg,transparent,#e4c6f5b3,transparent) 1}.cover-menu .ui-icon{width:23px;height:25px;color:#b8a2c5}.cover-menu .cover-start .ui-icon{color:#efd7ff;filter:drop-shadow(0 0 8px #c58bff)}.cover-menu small{display:block;font-size:9px;letter-spacing:1.7px;margin-top:5px;color:#b0a1ba}.cover-menu button:disabled{opacity:.4}.cover-bottom{position:absolute;bottom:34px;left:4.5vw;right:35px;display:flex;justify-content:space-between;z-index:4;font-size:11px;letter-spacing:2px;color:#c1b1c8}.cover-bottom small{font-size:9px;color:#a798b1}
/* Modes */
.front-modes{background:linear-gradient(#12101bb8,#100d16c4),url('../assets/battle/sanctuary-background.png') center/cover}.mode-cards{display:flex;justify-content:center;gap:28px;max-width:1120px;margin:0 auto 35px}.mode-card{position:relative;isolation:isolate;overflow:hidden;flex:1;max-width:330px;height:clamp(490px,66vh,640px);padding:0;border:1px solid #9e879e;background:#14121d;box-shadow:inset 0 0 0 4px #1d1724,inset 0 0 0 5px #8f768d4d;color:#e8ddeb;transition:box-shadow .2s,transform .2s}.mode-card:after{content:'✧';position:absolute;top:0;left:0;right:0;height:100%;padding:4px;border:5px double #aa91ac50;pointer-events:none;font-size:18px;color:#d9bbdc;z-index:3;box-sizing:border-box}.mode-card:hover:not(:disabled),.mode-rogue{border-color:#e2c4fc;box-shadow:0 0 23px #b886df66,inset 0 0 10px #caa7eb78}.mode-card:hover:not(:disabled){transform:translateY(-5px)}.mode-art{position:absolute;inset:0 0 22%;z-index:-1;background:linear-gradient(0deg,#14121d 3%,transparent 85%),url('../assets/battle/sanctuary-background.png') 62% 45%/cover}.mode-story .mode-art{background:linear-gradient(0deg,#14121d 2%,transparent 90%),url('../assets/battle/luneth-portrait.png') 67% 22%/230% auto no-repeat}.mode-story{filter:saturate(.5);opacity:.62}.mode-trial .mode-art{display:flex;align-items:flex-start;justify-content:center;background:radial-gradient(circle at 50% 45%,#57436177,transparent 65%),url('../assets/battle/moon-courtyard.png') center/cover;mask-image:linear-gradient(#000 50%,transparent)}.mode-trial .mode-art .ui-icon{width:78%;height:75%;color:#c7afbd;filter:drop-shadow(0 0 9px #dcc0f357)}.mode-index{position:absolute;top:22px;right:23px;font-size:13px;color:#d6c0df;letter-spacing:2px}.mode-lock{position:absolute;top:26px;left:0;right:0;font-size:11px;letter-spacing:2px}.mode-copy{position:absolute;bottom:31px;left:18px;right:18px;text-align:center;text-shadow:0 2px 10px #110b1b}.mode-copy h2{font-size:26px;font-weight:400;letter-spacing:5px;margin:0 0 8px}.mode-copy>small{font-size:11px;letter-spacing:3px;color:#c4b3cc}.mode-copy>i{display:block;font-style:normal;font-size:16px;color:#b29abf;position:relative;margin:12px auto;width:80%}.mode-copy>i:before,.mode-copy>i:after{content:'';position:absolute;top:50%;height:1px;width:39%;background:linear-gradient(90deg,transparent,#b5a0b488)}.mode-copy>i:before{left:0}.mode-copy>i:after{right:0;transform:rotate(180deg)}.mode-copy p{font-size:12px;line-height:2;color:#ccbdd4}.mode-copy>b{font-size:10px;letter-spacing:1px;font-weight:400;color:#a997b8}
/* Character selection */
.front-character{min-height:max(100dvh,800px);background:linear-gradient(90deg,#111019d9,#11101935 37%,#100e18c9 74%,#100e18e8),url('../assets/battle/sanctuary-background.png') center/cover}.character-hero{position:absolute;height:calc(100% - 105px);width:73%;left:0;bottom:0;object-fit:contain;object-position:center bottom;z-index:-1;filter:drop-shadow(-10px 0 24px #09081199);pointer-events:none}.character-roster{position:relative;width:225px;margin-top:51px;display:flex;flex-direction:column;gap:17px}.roster-card{height:94px;display:flex;align-items:center;gap:14px;color:#dfd2e6;background:linear-gradient(90deg,#25202fd4,#18131de0);border:1px solid #a48ba36b;padding:10px 15px;text-align:left;position:relative;font-size:16px}.roster-card.selected{border-color:#d6b7ed;box-shadow:0 0 12px #c58bee50,inset 0 0 12px #cba9f065;clip-path:polygon(0 0,95% 0,100% 50%,95% 100%,0 100%)}.roster-avatar{display:block;flex:none;width:58px;height:64px;background:url('../assets/battle/luneth-avatar.png') 65% center/cover no-repeat;border:1px solid #bca6c26b}.roster-card small,.roster-card em{display:block;font-style:normal;font-size:9px;margin-top:5px;color:#b3a4c0;letter-spacing:1px}.roster-card em{letter-spacing:0}.roster-card i{margin-left:auto;font-style:normal;font-size:13px}.roster-card.locked{opacity:.48}.roster-silhouette{display:grid;place-items:center;width:46px;flex:none;height:55px;color:#b4a0bc}.roster-silhouette .ui-icon{width:32px;height:40px}.roster-note{font-size:10px;line-height:2.2;color:#ad9fb7;padding-left:6px}.character-details{position:relative;width:365px;margin:-364px 0 55px auto;padding:12px 0 0;text-shadow:0 2px 12px #0c0813}.character-quote{font-size:13px;letter-spacing:2px;line-height:2;margin:0 0 22px;color:#dbccdf}.character-details h2{font-size:39px;letter-spacing:6px;margin:0 0 20px;font-weight:400}.character-details h2 small{display:block;font-size:11px;letter-spacing:3px;color:#baa9c4;margin-top:12px}.character-bio{font-size:12px;line-height:2;color:#c5b8d1;margin-bottom:20px}.character-facts{border-block:1px solid #a890a33b;padding:11px 0;display:grid;gap:11px}.character-facts>span{display:flex;align-items:center;justify-content:space-between;gap:5px;font-size:11px;color:#bfaec8}.character-facts b{font-size:11px;font-weight:400;color:#e7d6ed}.discipline-heading{font-size:13px;letter-spacing:1px;display:flex;justify-content:space-between;align-items:center;margin:22px 0 13px}.discipline-heading small{font-size:9px;letter-spacing:0;color:#a895b5}.discipline-options{display:flex;gap:10px}.discipline{flex:1;min-width:0;background:#211a2bc2;border:1px solid #99859c70;color:#cab8d6;padding:13px 8px;text-align:left}.discipline.selected{background:linear-gradient(105deg,#493651c4,#312139);border-color:#cfade5;box-shadow:inset 0 0 9px #ba89d52e}.discipline b{font-size:13px;font-weight:400;white-space:nowrap}.discipline small{display:block;font-size:9px;margin-top:8px;color:#b9a8c7}.discipline-note{font-size:11px;line-height:1.85;color:#c1afd0;min-height:42px;margin:14px 0}.character-selected{font-size:10px;color:#bda4ce;letter-spacing:1px;margin:20px 0 14px}.character-details>.button{width:100%}
/* The preview renders the same card component used in battle. */
.front-deck{background:linear-gradient(180deg,#100f19ea,#15111aca),url('../assets/battle/sanctuary-background.png') center/cover}.preview-heading{display:flex;justify-content:space-between;align-items:center;margin:28px 0 6px}.preview-heading h2{font-size:22px;font-weight:400;letter-spacing:3px;margin:0 0 10px}.preview-heading p{font-size:11px;letter-spacing:1px;color:#ac9dbb}.preview-identity{display:flex;align-items:center;gap:12px;background:transparent;border:0;text-align:left;color:#d8cbe1;font-size:12px}.preview-identity .roster-avatar{width:40px;height:43px}.preview-identity small{display:block;font-size:9px;margin-top:7px;color:#a997b8}.front-deck .starter-gallery{display:flex;flex-wrap:nowrap;justify-content:flex-start;gap:21px;overflow-x:auto;padding:17px 10px 30px;margin:0 -10px;scroll-snap-type:x proximity;scrollbar-color:#86708e #17121e;scrollbar-width:thin}.starter-card-wrap{position:relative;flex:0 0 195px;scroll-snap-align:start}.front-deck .starter-gallery .hand-card{width:195px!important;min-width:0!important;max-width:none;flex:none!important;height:326px!important;margin:0!important;transform:none}.front-deck .starter-gallery .hand-card:hover{transform:translateY(-5px);box-shadow:0 0 16px #ba8eed70}.starter-count{position:absolute;right:7px;bottom:-14px;display:grid;place-items:center;background:#241a2f;border:1px solid #b49cc8;min-width:46px;height:28px;padding:0 9px;font-size:13px;color:#e4d2ee;box-shadow:0 3px 8px #0008;pointer-events:none}.gallery-hint{font-size:10px;color:#ae9dbc;letter-spacing:1px;margin:7px 0 25px}.deck-preparation{display:grid;grid-template-columns:.9fr 1.4fr .9fr;gap:42px;border-top:1px solid #ad8fa645;padding:25px 0 15px}.deck-preparation h3{font-size:15px;letter-spacing:2px;font-weight:400;margin:0 0 17px}.deck-preparation h3 small{font-size:10px;color:#a997b5;letter-spacing:1px;margin-left:9px}.composition-row{display:grid;grid-template-columns:40px 30px 1fr;gap:13px;align-items:center;margin:10px 0;font-size:11px;color:#c4b3d0}.composition-row>b{font-weight:400;color:#d8c7e5;text-align:center}.composition-row>i{display:block;height:8px;background:#29212f;border:1px solid #75617d26}.composition-row em{display:block;height:100%;background:linear-gradient(90deg,#765b8c,#c6afdb)}.deck-composition>p{font-size:10px;color:#ad9eba;margin:16px 0}.deck-composition>.button{font-size:11px;letter-spacing:1px;padding:10px 20px}.journey-difficulty{display:flex;gap:12px}.journey-difficulty button{flex:1;min-width:0;background:#1c1723ba;border:1px solid #8f759b66;text-align:left;padding:12px;color:#c1aecf}.journey-difficulty button.selected{border-color:#bc96d6;background:linear-gradient(110deg,#43314da1,#1d1726);box-shadow:inset 0 0 10px #ba8fd124}.journey-difficulty b{font-size:13px;font-weight:400;letter-spacing:2px}.journey-difficulty small{display:block;font-size:10px;line-height:1.8;margin-top:8px;color:#b7a3c5}.journey-seed{display:flex;align-items:center;gap:12px;font-size:11px;color:#c9b6d5;margin-top:17px;white-space:nowrap}.journey-seed input{width:100%;min-width:0;flex:1;font:11px Georgia,'Microsoft YaHei',serif;background:#17121d;color:#e0cbe9;border:1px solid #7f688e7a;border-radius:0;padding:11px 10px}.journey-seed input::placeholder{font-size:10px;color:#8f7da0}.journey-hint{font-size:10px;line-height:1.8;color:#9f8eac;margin-top:11px}.deck-oath{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:space-between;isolation:isolate;min-height:240px}.deck-oath>p{font-size:13px;line-height:2;letter-spacing:2px;color:#bcacc9;text-align:center;margin-top:20px}.deck-oath>.button{width:100%;z-index:1}.deck-back-decoration{position:absolute;right:20%;top:5%;width:130px;height:175px;border:5px double #ae8eb03b;transform:rotate(17deg);color:#bd97c93b;display:grid;place-items:center;z-index:-1}.deck-back-decoration .ui-icon{width:94%;height:90%}.starter-list{display:grid;grid-template-columns:1fr 1fr;gap:10px}.starter-list button{display:flex;align-items:center;gap:12px;text-align:left;border:1px solid #7f6b8d6b;background:#1e1925;color:#dcd0e7;padding:8px;font:13px Georgia,'Microsoft YaHei',serif;cursor:pointer}.starter-list img{width:42px;height:52px;object-fit:cover}.starter-list small{display:block;font-size:10px;color:#ad9bbd;margin-top:6px}.starter-list b{margin-left:auto;padding:0 6px;font-weight:400}.front-card-detail>.reward-cards{display:flex;flex-wrap:nowrap;justify-content:center;align-items:center;gap:22px;margin:25px 0}.front-card-detail .hand-card{width:210px!important;flex:0 0 210px!important;height:330px!important;pointer-events:none}.front-card-detail>p{text-align:center;font-size:12px;color:#bba8c9;line-height:1.8}.front-card-detail>.button{display:block;margin:20px auto 0}
/* Settings and departure */
.front-settings{background:linear-gradient(90deg,#0e0d15f5,#121018f2 60%,#100c189e),url('../assets/battle/sanctuary-background.png') center/cover}.settings-layout{display:grid;grid-template-columns:180px minmax(300px,1fr) minmax(230px,.8fr);gap:45px;padding-top:60px;max-width:1260px;margin:auto}.settings-tabs{display:flex;flex-direction:column;gap:9px}.settings-tabs button{padding:13px 18px;text-align:left;background:linear-gradient(90deg,#24202cec,#17141e);border:1px solid #8d789666;color:#bfaecc;font-size:13px;letter-spacing:2px}.settings-tabs button.selected{border-color:#c8a2e0;box-shadow:inset 0 0 15px #a16ccd66,0 0 9px #a779c838;background:linear-gradient(90deg,#674975aa,#2b2038);color:#ecdbf9}.settings-content h2{font-size:23px;letter-spacing:4px;font-weight:400;margin:0 0 29px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 0;border-bottom:1px solid #9e83a630;font-size:13px;min-width:0}.setting-row span{min-width:0}.setting-row small{display:block;font-size:10px;line-height:1.8;color:#a997b7;margin-top:7px}.setting-row>b{font-size:11px;white-space:nowrap;font-weight:400;color:#b6a2c6}.setting-switch{position:relative;flex:none;width:41px;height:23px;padding:3px;border:1px solid #9e83b0!important;border-radius:20px;background:#24202d}.setting-switch i{position:absolute;width:15px;height:15px;left:3px;top:3px;border-radius:50%;background:#8d8199;transition:left .16s}.setting-switch.on{background:#746181;box-shadow:0 0 10px #b89cc62b}.setting-switch.on i{left:21px;background:#eee2f7;box-shadow:0 0 6px #efd9ff55}.setting-row .button{font-size:11px;letter-spacing:1px;white-space:nowrap;padding:10px 18px}.settings-note{font-size:11px;line-height:2;color:#aa98b8;margin:24px 0}.settings-content>.button{font-size:11px;letter-spacing:1px;margin-top:4px}.settings-illustration img{width:100%;height:360px;object-fit:cover;object-position:60% 45%;border:1px solid #c0a4ba75;padding:5px;background:#0e0c15;box-shadow:0 0 0 4px #17111d}.settings-illustration p{font-size:12px;line-height:2;letter-spacing:2px;margin-top:23px;color:#c7b6d1}.settings-illustration small{font-size:10px;letter-spacing:1px;color:#9a88aa}.volume-setting{flex-wrap:wrap;gap:15px}.volume-setting input{width:50%;flex:1;min-width:70px;accent-color:#c6a5e0;cursor:pointer}.volume-setting output{width:38px;text-align:right;font-size:11px}.key-guide{display:grid;gap:0}.key-guide>div{display:grid;grid-template-columns:90px 1fr;align-items:center;gap:20px;border-bottom:1px solid #8c73972e;padding:14px 0;color:#bca9ca;font-size:11px}.key-guide kbd{border:1px solid #7c668b6b;background:#272030;font:11px Georgia,serif;padding:6px;text-align:center;box-shadow:0 2px 0 #110e18}
/* Actual user preferences apply to both entry and combat. */
.reduce-effects *,.reduce-effects *:before,.reduce-effects *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reduce-effects .battle-particles,.reduce-effects .sanctuary-mist,.reduce-effects .battle-shake{animation:none!important}.hide-combat-hints .hand-instructions,.hide-combat-hints .end-shortcut,.hide-combat-hints .hand-label small{visibility:hidden}.hide-float-numbers .float-number{display:none}
@media(min-width:1600px){.front-character .character-details{width:405px;margin-right:2%}.character-roster{width:245px}.character-hero{width:76%;left:-2%}.front-cover .cover-menu{margin-top:50px}.front-cover .cover-title{padding-top:12vh}}
@media(min-width:901px) and (max-height:800px){.front-cover{min-height:660px}.cover-title{padding-top:50px}.cover-title>span{font-size:27px}.cover-title h1{font-size:80px;margin:6px 0}.cover-title p{margin-top:18px;font-size:12px}.cover-menu{margin-top:22px;gap:0}.cover-menu button{padding:9px 24px;min-height:54px;font-size:16px}.cover-bottom{bottom:24px}.front-header{height:78px}.front-intro{margin:25px 0 22px}.mode-card{height:490px}.front-character{min-height:735px}.character-roster{margin-top:38px}.character-details{margin-top:-351px}.character-quote{margin-bottom:14px}.character-details h2{font-size:33px;margin-bottom:14px}.character-bio{margin-bottom:14px}.discipline-heading{margin-top:17px}.character-selected{margin-top:10px}.settings-layout{padding-top:40px}.settings-illustration img{height:320px}}
@media(max-width:1100px){.front-wordmark{display:none}.character-roster{width:200px}.roster-card{gap:10px;padding:10px}.roster-avatar{width:48px;height:57px}.roster-card em{font-size:8px}.character-details{width:330px}.character-hero{left:-9%;width:83%}.settings-layout{grid-template-columns:150px 1fr 230px;gap:26px}.deck-preparation{gap:25px}.journey-difficulty{gap:8px}.journey-difficulty button{padding:10px}.journey-seed{display:block}.journey-seed input{margin-top:9px}.front-deck .deck-oath>.button{padding-inline:12px}.mode-cards{gap:22px}.mode-copy h2{font-size:23px}.mode-copy p{font-size:11px}}
@media(max-width:900px){.front-header h1{font-size:20px;letter-spacing:3px;gap:14px}.front-header h1 small{font-size:9px}.front-foot{font-size:10px;letter-spacing:1px}.front-foot small{font-size:8px}.front-cover .cover-hero{right:-23%;width:115%;opacity:.9}.cover-title{width:330px}.cover-menu{width:290px}.character-roster{width:180px}.roster-card{height:84px;font-size:13px;gap:8px}.roster-card i{display:none}.character-details{width:310px;margin-top:-334px}.character-facts b{font-size:10px}.character-hero{left:-23%;width:100%;opacity:.8}.character-details{padding:16px;background:linear-gradient(90deg,#110e1880,#110e18df);border:1px solid #a585ae33}.character-details h2{font-size:32px}.discipline b{font-size:11px}.discipline small{font-size:8px}.discipline-heading small{font-size:8px}.deck-preparation{grid-template-columns:1fr 1.6fr}.deck-oath{grid-column:1/-1;flex-direction:row;gap:25px;min-height:85px}.deck-oath>p{font-size:12px;text-align:left;margin:0}.deck-oath>.button{max-width:300px}.deck-back-decoration{right:45%;width:60px;height:80px;top:0}.settings-layout{grid-template-columns:145px 1fr;gap:30px}.settings-illustration{grid-column:2;display:flex;align-items:center;gap:22px}.settings-illustration img{width:150px;height:130px}.settings-illustration p{font-size:11px;margin:0}.settings-illustration small{display:none}}
@media(max-width:600px){.front-scene{padding:0 24px 66px;background-attachment:scroll}.front-scene:before{inset:8px}.front-header{height:75px;gap:9px}.front-ornament{font-size:23px}.front-header h1{display:block;font-size:17px;letter-spacing:2px}.front-header h1 small{display:block;font-size:8px;margin-top:6px;letter-spacing:1px}.front-back{font-size:11px;letter-spacing:0;padding:8px 0 8px 14px}.front-foot{left:25px;right:25px;bottom:23px;font-size:9px;gap:10px;letter-spacing:0}.front-foot:before{width:22px}.front-foot small{display:none}.front-foot i{margin-left:auto;font-size:20px}.front-cover{height:100dvh;min-height:760px;background-position:62% center;padding-inline:30px}.front-cover .cover-hero{right:-58%;width:165%;height:89%;bottom:9%;opacity:.83;object-position:center bottom}.front-cover:after{background:linear-gradient(0deg,#0d0914 1%,#100a174d 48%,transparent 70%),linear-gradient(90deg,#0c081360,transparent 65%)}.cover-title{padding-top:57px;width:260px}.cover-title>span{font-size:24px;letter-spacing:8px}.cover-title h1{font-size:76px;margin:10px 0 6px;letter-spacing:10px}.cover-subtitle{width:172px;font-size:9px;letter-spacing:5px;padding-top:10px}.cover-title p{font-size:10px;letter-spacing:1px;line-height:2;margin-top:22px;max-width:205px}.cover-title>small{font-size:8px;letter-spacing:.5px}.cover-version{right:21px;top:25px;font-size:8px;letter-spacing:1px}.cover-sigil{width:125px;height:125px;left:-24px;top:-17px}.cover-menu{position:absolute;bottom:100px;left:25px;margin:0;width:265px;gap:0}.cover-menu button{font-size:16px;letter-spacing:3px;padding:10px 18px;min-height:58px;gap:14px}.cover-menu small{font-size:8px;letter-spacing:1px}.cover-menu .ui-icon{width:19px;height:22px}.cover-bottom{left:30px;right:25px;bottom:30px;flex-direction:column;gap:10px;font-size:10px}.cover-bottom small{font-size:8px}.front-intro{font-size:12px;margin:28px 0;letter-spacing:3px}.mode-cards{flex-direction:column;gap:20px;margin-bottom:20px}.mode-card{max-width:none;flex:none;width:100%;height:280px;display:block}.mode-art{inset:0 22% 0 0;background:linear-gradient(90deg,transparent,#14121d 96%),url('../assets/battle/sanctuary-background.png') 60% 38%/cover;opacity:.72}.mode-copy{left:36%;right:14px;bottom:40px}.mode-copy h2{font-size:22px;letter-spacing:3px}.mode-copy>small{font-size:9px;letter-spacing:2px}.mode-copy p{font-size:10px}.mode-copy>b{font-size:8px;letter-spacing:0}.mode-copy>i{margin:8px auto}.mode-story .mode-art{background:linear-gradient(90deg,transparent,#14121d 94%),url('../assets/battle/luneth-portrait.png') 70% 18%/300% auto no-repeat}.mode-lock{text-align:left;left:20px;top:24px;font-size:9px;letter-spacing:1px}.mode-trial .mode-art{mask-image:linear-gradient(90deg,#000,transparent);align-items:center;justify-content:flex-start}.mode-trial .mode-art .ui-icon{width:90%;height:75%}.front-character{background-position:60% 0;min-height:100dvh}.character-hero{width:140%;height:555px;left:-36%;top:85px;bottom:auto;object-position:center top;opacity:.94}.character-roster{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:25px}.roster-card{height:66px;padding:7px 8px;gap:8px;background:#17121cd4}.roster-card.selected{grid-column:1/-1;width:160px}.roster-card.locked{width:100%;opacity:.6;margin-top:4px;font-size:11px}.roster-card .roster-avatar{width:40px;height:49px}.roster-card small{font-size:8px;margin-top:3px}.roster-card em{font-size:7px;margin-top:3px}.roster-silhouette{width:25px;height:40px}.roster-silhouette .ui-icon{width:23px;height:27px}.roster-note{grid-column:1/-1;font-size:8px;line-height:1.8;color:#c4b3d1;margin-top:3px;max-width:165px;text-shadow:0 1px 6px #000}.character-details{margin:193px 0 26px;padding:25px 19px;width:100%;background:linear-gradient(#18101fde,#130e1bec);border:1px solid #ac8cba73;box-shadow:0 15px 35px #05020880}.character-quote{font-size:11px;margin:0 0 18px}.character-details h2{font-size:31px;margin-bottom:19px;letter-spacing:4px}.character-details h2 small{font-size:9px;letter-spacing:2px}.character-bio{font-size:11px;line-height:2}.character-facts>span{font-size:9px;gap:8px}.character-facts b{font-size:9px}.discipline-heading{font-size:11px;margin-top:20px}.discipline-heading small{font-size:8px}.discipline-options{gap:8px}.discipline{padding:11px 7px}.discipline b{font-size:11px}.discipline small{font-size:8px;letter-spacing:-.3px}.discipline-note{font-size:10px}.character-selected{font-size:9px;letter-spacing:0;margin-top:17px}.character-details>.button{font-size:11px;padding:13px 12px;letter-spacing:1px}.preview-heading{margin-top:25px;align-items:flex-start;gap:10px}.preview-heading h2{font-size:18px;letter-spacing:2px}.preview-heading p{font-size:9px;line-height:1.8;margin:7px 0}.preview-identity{padding:0;font-size:0;gap:0;flex:none}.preview-identity .roster-avatar{width:36px;height:40px}.preview-identity>span:last-child{display:none}.front-deck .starter-gallery{gap:17px;padding-top:15px;margin-right:-10px}.starter-card-wrap{flex-basis:180px}.front-deck .starter-gallery .hand-card{width:180px!important;height:310px!important}.gallery-hint{font-size:9px;line-height:1.9;margin:8px 0 21px;letter-spacing:0}.deck-preparation{grid-template-columns:1fr;gap:29px;padding-top:23px}.deck-preparation h3{font-size:14px;margin-bottom:15px}.deck-composition{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px}.deck-composition h3{grid-column:1/-1}.composition-row{grid-template-columns:30px 15px 1fr;gap:7px;margin:6px 0;font-size:10px}.deck-composition>p{font-size:9px;margin:9px 0}.deck-composition>.button{grid-column:1/-1;width:max-content;margin-top:8px;font-size:10px;min-height:37px}.journey-difficulty button{padding:12px}.journey-difficulty b{font-size:12px}.journey-difficulty small{font-size:9px}.journey-seed{font-size:10px;margin-top:17px}.journey-seed input{font-size:12px;padding:12px}.journey-hint{font-size:9px;margin-top:12px}.deck-oath{grid-column:auto;flex-direction:column;align-items:stretch;gap:15px;min-height:150px;padding-top:10px;border-top:1px solid #8e6e9b3b}.deck-oath>p{font-size:11px;line-height:2;margin:5px 0 10px}.deck-oath>.button{max-width:none;font-size:12px}.deck-back-decoration{right:10%;top:15px}.starter-list{grid-template-columns:1fr}.front-card-detail>.reward-cards{gap:9px;margin:20px -6px}.front-card-detail .hand-card{width:130px!important;min-width:0!important;flex-basis:130px!important;height:285px!important}.front-card-detail .card-copy p{font-size:10px!important}.front-card-detail .upgrade-arrow{font-size:21px}.front-card-detail>p{font-size:11px}.settings-layout{display:block;padding-top:26px}.settings-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.settings-tabs button{font-size:10px;letter-spacing:0;text-align:center;padding:12px 5px}.settings-content{padding-top:31px}.settings-content h2{font-size:20px;letter-spacing:3px;margin-bottom:15px}.setting-row{font-size:12px;padding:18px 0;gap:13px}.setting-row small{font-size:9px}.setting-row>.button{font-size:10px;padding:10px 13px}.setting-switch{transform:scale(.94)}.settings-note{font-size:10px;margin:23px 0;line-height:2}.settings-content>.button{font-size:10px}.settings-illustration{margin-top:40px;gap:19px;border-top:1px solid #8e73953b;padding-top:20px}.settings-illustration img{width:45%;height:150px}.settings-illustration p{font-size:10px;line-height:2;letter-spacing:1px}.key-guide>div{grid-template-columns:65px 1fr;gap:16px;font-size:10px;padding:12px 0}.key-guide kbd{font-size:10px}}
.front-astrolabe{display:block;width:100%;height:100%}.cover-sigil{opacity:.5}.mode-trial .mode-art .front-astrolabe{width:86%;height:80%;color:#dec5cf;filter:drop-shadow(0 0 8px #c0a4e24a)}.deck-back-decoration .front-astrolabe{width:90%;height:90%}.roster-avatar{background-size:cover;background-position:65% center}.front-scene .button:after{content:'';position:absolute;inset:2px;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 56' preserveAspectRatio='none'%3E%3Cpath d='M20 1H380L399 28 380 55H20L1 28Z' fill='none' stroke='%23bba6c9' stroke-width='1'/%3E%3C/svg%3E") center/100% 100% no-repeat;opacity:.75}.front-scene .button.primary:after{filter:brightness(1.3);opacity:.95}.gallery-navigation{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:7px 0 25px}.gallery-navigation .gallery-hint{margin:0}.gallery-navigation>div{display:flex;gap:8px}.gallery-navigation button{background:#28202f;border:1px solid #a68cb780;color:#d8bee9;font:20px Georgia,serif;width:37px;height:29px;line-height:22px}.gallery-navigation button:hover{background:#4a3659}.reduce-effects .scene-particles,.reduce-effects .scene-mist{display:none}
@media(max-width:600px){.front-cover .cover-hero{right:-22%}.character-roster{display:flex;flex-direction:column;align-items:flex-start;width:155px;gap:9px}.roster-card.locked{width:145px;margin-top:0}.roster-note{max-width:145px;margin:1px 0 0}.character-details{margin-top:120px}.character-hero{left:-31%}.front-deck .journey-seed{display:block;white-space:normal}.front-deck .journey-seed input{display:block;box-sizing:border-box;max-width:100%;width:100%;margin-top:9px}.gallery-navigation{gap:10px;margin:8px 0 21px}.gallery-navigation .gallery-hint{font-size:9px;flex:1}.gallery-navigation button{width:28px;height:28px}.gallery-navigation>div{gap:5px}.mode-trial .mode-art .front-astrolabe{width:95%;height:85%}}
@media(prefers-reduced-motion:reduce){.front-scene *,.front-scene *:before,.front-scene *:after{animation:none!important;transition:none!important}}

/* User-selected cover painting already includes Luneth and the eclipse. */
@media(max-width:600px){
 .front-scene.front-cover{height:auto;min-height:100dvh;padding:0 30px 90px;background-color:#0d0914;background-image:linear-gradient(180deg,transparent 20%,#0d091420 36%,#0d0914 64%),url('../assets/covers/eclipse-sanctuary.png');background-size:100% 650px,auto 560px;background-position:center top,70% top;background-repeat:no-repeat}
 .front-cover:after{background:linear-gradient(90deg,#0c08131c,transparent 65%)}
 .front-cover .cover-title{padding-top:310px;width:100%;max-width:290px}
 .front-cover .cover-title>span{font-size:20px;letter-spacing:7px}
 .front-cover .cover-title h1{font-size:60px;margin:5px 0 4px}
 .front-cover .cover-title p{font-size:10px;line-height:1.8;margin-top:15px;max-width:270px}
 .front-cover .cover-title>small{display:none}
 .front-cover .cover-menu{position:relative;left:auto;bottom:auto;margin:18px 0 0 -10px;width:calc(100% + 10px);max-width:290px}
 .front-cover .cover-menu button{min-height:53px;padding:8px 18px}
 .front-cover .cover-bottom{bottom:24px;gap:6px}
}
