:root{color-scheme:dark;--night: #080d20;--night-2: #0d1429;--panel: rgba(13, 20, 40, .91);--panel-soft: rgba(17, 25, 47, .86);--plum: #231638;--gold: #dfb876;--gold-dim: #9e8154;--teal: #70d8d7;--teal-dim: #386e7d;--ice: #9aeafa;--red: #ff827a;--ink: #f4efe4;--muted: #a2aec2;--line: rgba(223, 184, 118, .31);font-family:Noto Sans TC,Noto Sans CJK TC,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;background:var(--night);color:var(--ink);font-size:15px}*{box-sizing:border-box}html{min-width:320px;background:var(--night);scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;background:var(--night)}button,select{font:inherit}button{color:inherit}button:focus-visible,select:focus-visible{outline:2px solid var(--teal);outline-offset:3px}#app{min-height:100vh}.eyebrow{color:var(--gold);font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.button{min-height:46px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;gap:12px;border:1px solid rgba(223,184,118,.44);border-radius:9px;background:#171f35d1;color:var(--ink);font-weight:650;cursor:pointer;transition:.18s ease}.button:hover:not(:disabled){border-color:var(--gold);background:#2a3040f2;transform:translateY(-1px)}.button:disabled,button:disabled{cursor:not-allowed;opacity:.43}.button-primary{color:#151321;border-color:#ebce93;background:linear-gradient(135deg,#f2d59c,#c8965b);box-shadow:0 6px 24px #dfb87629}.button-primary:hover:not(:disabled){color:#0a1323;background:linear-gradient(135deg,#ffe2aa,#d8aa68)}.button-quiet{background:transparent;color:var(--muted);border-color:#a2aec240}.button-wide{width:100%}.button-quiet:hover:not(:disabled){color:var(--ink);border-color:#dfb87699}.compact{min-height:34px;padding:0 12px;font-size:.8rem}.icon-button{width:40px;height:40px;display:grid;place-items:center;border:1px solid rgba(223,184,118,.34);border-radius:50%;background:#080d208f;color:var(--gold);font-size:1.05rem;cursor:pointer}.icon-button:hover{color:var(--ink);border-color:var(--gold)}.panel{border:1px solid var(--line);border-radius:14px;background:var(--panel);box-shadow:0 18px 48px #0105103b}.title-screen{min-height:100vh;position:relative;overflow:hidden;display:flex;align-items:center;padding:clamp(28px,7vw,100px) clamp(24px,10vw,156px);isolation:isolate;background:#070b1a}.title-backdrop,.prologue-art,.ending-backdrop{position:absolute;inset:0;z-index:-2;background-image:linear-gradient(90deg,#050917f7,#070c1dde 35%,#070c1d5c 68%,#0509176e),linear-gradient(0deg,rgba(7,10,24,.63),transparent 55%),url(/veilbound/assets/veilbound-city.webp);background-position:center;background-size:cover}.title-backdrop:after,.prologue-art:after,.ending-backdrop:after{content:"";position:absolute;inset:0;opacity:.18;background:repeating-linear-gradient(0deg,transparent 0 4px,rgba(99,185,194,.07) 5px,transparent 6px);mix-blend-mode:screen}.title-copy{max-width:660px;position:relative;z-index:1;animation:fade-up .65s ease both}.title-copy .eyebrow{display:flex;align-items:center;gap:11px;margin-bottom:26px}.seal-dot{width:7px;height:7px;display:inline-block;border-radius:50%;background:var(--teal);box-shadow:0 0 17px var(--teal)}.title-copy h1{margin:0 0 8px;font-family:"Noto Serif TC",serif;font-size:clamp(3.2rem,8vw,6.8rem);line-height:1.13;font-weight:600;letter-spacing:.08em;color:#f6eedc;text-shadow:0 4px 34px rgba(0,0,0,.5)}.title-latin{color:#c3c5c8;font-size:clamp(.85rem,1.45vw,1.12rem);letter-spacing:.19em}.title-latin span{color:var(--gold);padding:0 9px}.title-story{margin:32px 0 22px;color:#d2d7e1;line-height:2;font-size:1rem}.mechanic-row{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:30px}.mechanic-row span{padding:8px 12px;border:1px solid rgba(112,216,215,.23);border-radius:999px;background:#0a182894;color:#b9dedd;font-size:.83rem}.title-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.title-actions .button-primary{min-width:235px;min-height:54px;font-size:1rem}.title-actions .button-quiet{min-height:48px}.save-note{margin-top:22px;color:#abb4c2;font-size:.78rem;line-height:1.7}.save-note span{color:#8792a4}.save-warning{color:#e4b8a2;font-size:.82rem;line-height:1.6}.title-seal{position:absolute;right:clamp(-120px,4vw,100px);top:50%;width:min(44vw,540px);aspect-ratio:1;transform:translateY(-50%);display:grid;place-items:center;border:1px solid rgba(223,184,118,.3);border-radius:50%;color:#dfb8766e;font-family:"Noto Serif TC",serif;font-size:clamp(5rem,14vw,11rem);box-shadow:0 0 0 20px #dfb87606,0 0 0 50px #dfb87606,inset 0 0 80px #dfb8760b;pointer-events:none}.title-seal:before,.title-seal:after{content:"";position:absolute;inset:9%;border:1px dashed rgba(112,216,215,.22);border-radius:50%}.title-seal:after{inset:20%;border-style:solid;border-color:#dfb8762e}.prologue-screen{min-height:100vh;position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(350px,510px);align-items:center;padding:clamp(20px,6vw,80px);isolation:isolate}.prologue-art{background-image:linear-gradient(90deg,#0509178a,#070c1db8 48%,#080d20f7),url(/veilbound/assets/veilbound-city.webp)}.prologue-card{grid-column:2;max-width:500px;padding:clamp(28px,5vw,54px);border:1px solid var(--line);border-radius:15px;background:#0a1022e6;box-shadow:0 26px 70px #00000061;backdrop-filter:blur(16px);animation:fade-up .6s ease both}.prologue-card h2{margin:12px 0 24px;font:600 clamp(2rem,4vw,3.1rem)/1.4 "Noto Serif TC",serif;letter-spacing:.04em}.prologue-card p{color:#bdc6d4;line-height:1.9;font-size:.94rem}.dialogue{margin:21px 0;padding:15px 17px;border-left:2px solid var(--teal);border-radius:0 8px 8px 0;background:#70d8d711;color:#deeeee;line-height:1.8}.dialogue-name{display:block;margin-bottom:4px;color:var(--teal);font-size:.78rem;font-weight:700}.game-shell{width:min(100%,1800px);min-height:100vh;margin:0 auto;padding:0 clamp(14px,2.1vw,34px) 28px;background:radial-gradient(ellipse at 52% -10%,rgba(45,35,68,.38),transparent 42%),var(--night)}.hud{min-height:78px;display:flex;align-items:center;gap:clamp(13px,2vw,32px);border-bottom:1px solid rgba(223,184,118,.19)}.hud-brand{display:flex;align-items:center;gap:10px;min-width:170px;color:#e9e4d8;font-size:.8rem;font-weight:800;letter-spacing:.12em}.hud-brand small{display:block;margin-top:4px;color:var(--muted);font-size:.66rem;font-weight:500;letter-spacing:.04em}.brand-seal{width:37px;height:37px;display:grid;place-items:center;border:1px solid var(--gold-dim);border-radius:50%;color:var(--gold);font-family:"Noto Serif TC",serif;font-size:1.12rem}.hud-location,.hud-objective{display:grid;gap:4px;white-space:nowrap}.hud-location strong{font-size:.96rem}.hud-objective strong{color:#ccd2dc;font-size:.84rem;font-weight:500}.hud-objective strong b{color:var(--gold);font-weight:700}.hud-party{display:flex;align-items:center;gap:9px;margin-left:auto}.mini-unit{display:flex;align-items:center;gap:7px;color:#c3cbd6;font-size:.76rem;white-space:nowrap}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--teal);box-shadow:0 0 8px #70d8d799}.status-dot.low{background:var(--red);box-shadow:0 0 8px #ff827ab3}.hud-resources{display:flex;gap:13px;padding:0 4px;color:var(--gold);font-size:.84rem;font-weight:700;white-space:nowrap}.hud-resources span+span{color:var(--teal)}.storage-status{color:#e4b8a2;font-size:.68rem;white-space:nowrap}.map-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(310px,.77fr);gap:clamp(14px,1.8vw,26px);padding:22px 0 10px}.map-stage{min-width:0;overflow:hidden;padding:18px 20px 14px;background:radial-gradient(ellipse at 50% 58%,#303b5d73,#0d1428e8 66%)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:18px;padding:2px 4px 14px}.section-heading h1{margin:3px 0 0;font:500 clamp(1.25rem,2vw,1.7rem) "Noto Serif TC",serif;letter-spacing:.08em}.map-legend{display:flex;flex-wrap:wrap;gap:11px;color:#aab5c6;font-size:.7rem}.map-legend span{display:flex;align-items:center;gap:5px}.legend-dot{width:7px;height:7px;border-radius:50%;background:#607287}.legend-dot.open{background:var(--teal);box-shadow:0 0 8px var(--teal)}.legend-dot.cleared{background:var(--gold)}.legend-dot.sealed{background:var(--red)}.map-board{height:clamp(510px,68vh,720px);min-height:510px;position:relative;overflow:hidden;border:1px solid rgba(112,216,215,.13);border-radius:12px;background:radial-gradient(ellipse at 50% 45%,#2b354e7a,#080e1fc4 74%),linear-gradient(160deg,#1d182e80,#0a1121e8)}.map-board:before{content:"";position:absolute;inset:0;opacity:.13;background-image:linear-gradient(rgba(124,165,192,.22) 1px,transparent 1px),linear-gradient(90deg,rgba(124,165,192,.22) 1px,transparent 1px);background-size:42px 42px;mask-image:radial-gradient(ellipse at center,#000 4%,transparent 90%)}.map-board:after{content:"";position:absolute;inset:5% 25%;border:1px solid rgba(112,216,215,.09);border-radius:48% 52% 55% 45%;transform:rotate(-20deg);pointer-events:none}.map-board svg{position:absolute;inset:0;width:100%;height:100%;z-index:1}.route-line{stroke:#658da273;stroke-width:2;stroke-dasharray:7 8;vector-effect:non-scaling-stroke}.route-line.route-lit{stroke:url(#routeGrad);stroke-dasharray:none;stroke-width:2.4;opacity:.64}.map-scanlines{position:absolute;z-index:4;inset:0;pointer-events:none;opacity:.12;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(112,216,215,.1) 4px,transparent 5px)}.map-node{position:absolute;z-index:3;width:clamp(106px,12.4vw,152px);min-height:84px;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 7px;border:1px solid rgba(128,151,179,.35);border-radius:12px;background:#0c1327eb;color:#c5ccda;box-shadow:0 8px 22px #00000042;cursor:pointer;transition:.18s ease}.map-node:hover,.map-node.selected{transform:translate(-50%,-52%);border-color:var(--gold);box-shadow:0 0 0 3px #dfb8761c,0 10px 28px #0000005c}.map-node.open{border-color:#70d8d799;color:#e4f4f1}.map-node.cleared{border-color:#dfb87694;color:#ecdfc2;background:linear-gradient(145deg,#302727f2,#111627f5)}.map-node.sealed{border-color:#ff827a70;color:#ccabb2}.map-node.closed{opacity:.72}.map-node.safe-node{border-color:var(--gold);background:linear-gradient(145deg,#3b3027f2,#161728f5)}.node-icon{color:var(--teal);font-family:"Noto Serif TC",serif;font-size:1.22rem;line-height:1.15}.map-node.cleared .node-icon,.map-node.safe-node .node-icon{color:var(--gold)}.node-title{font-size:.8rem;font-weight:700;line-height:1.2;white-space:nowrap}.node-caption{color:var(--muted);font-size:.65rem}.node-star{position:absolute;right:6px;top:-8px;padding:2px 5px;border-radius:4px;background:var(--gold);color:#211c21;font-size:.56rem;font-weight:700}.map-bottom{display:flex;justify-content:space-between;padding:12px 2px 0;color:#9ba6b7;font-size:.72rem}.map-bottom span{display:flex;align-items:center;gap:7px}.pulse-dot,.turn-lamp{width:7px;height:7px;display:inline-block;border-radius:50%;background:var(--teal);box-shadow:0 0 9px #70d8d7b3;animation:pulse 1.8s ease infinite}.map-sidebar{min-width:0;display:flex;flex-direction:column;gap:12px}.objective-panel{padding:16px 18px;background:linear-gradient(125deg,#231638c4,#0d1428ed)}.objective-panel p{margin:8px 0 13px;color:#c2c8d5;font-size:.83rem;line-height:1.65}.seal-row{display:flex;gap:9px}.seal-token{flex:1;display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border:1px solid rgba(156,168,190,.17);border-radius:7px;color:#9eabc0;font-size:.72rem}.seal-token b{color:#6c7790}.seal-token.obtained{color:#f0d69c;border-color:#dfb87680;background:#dfb87614}.seal-token.obtained b{color:var(--gold)}.node-detail{padding:17px 18px;background:linear-gradient(155deg,#121b32f5,#0c1225f5)}.node-card-head{display:flex;align-items:center;gap:13px}.node-large-icon{width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(112,216,215,.28);border-radius:10px;background:#70d8d70f;color:var(--teal);font:1.6rem "Noto Serif TC",serif}.node-detail h2{margin:3px 0 0;font:500 1.24rem "Noto Serif TC",serif;letter-spacing:.05em}.node-detail>p{margin:14px 0;color:#b9c3d1;font-size:.83rem;line-height:1.72}.node-detail>.requirement{margin:12px 0 14px;padding:10px 12px;display:grid;gap:6px;border:1px solid rgba(255,130,122,.21);border-radius:8px;background:#ff827a0b;color:#c0bbc2;font-size:.72rem}.requirement b{color:#f1b0a6}.event-result,.notice-strip{margin:11px 0;padding:11px 12px;border:1px solid rgba(112,216,215,.25);border-radius:8px;background:#70d8d712;color:#c9e8e7;font-size:.8rem;line-height:1.6}.notice-strip{border-color:#dfb87652;background:#dfb87612;color:#eed8ae}.choice-list{display:grid;gap:8px;margin:13px 0}.choice-button{width:100%;min-height:60px;display:flex;align-items:center;gap:11px;padding:10px 12px;border:1px solid rgba(137,155,177,.23);border-radius:9px;background:#091022ad;color:var(--ink);text-align:left;cursor:pointer}.choice-button:hover{border-color:var(--teal);background:#1c32417a}.choice-button>span:nth-child(2){flex:1;display:grid;gap:4px}.choice-button b{font-size:.78rem;font-weight:600;line-height:1.5}.choice-button small{color:var(--muted);font-size:.68rem;line-height:1.4}.choice-button>span:last-child{color:var(--gold)}.choice-symbol{width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(223,184,118,.32);border-radius:8px;color:var(--gold);flex:0 0 auto}.station-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.station-actions .button{min-height:42px;padding:0 8px;font-size:.78rem}.station-actions .button-wide{grid-column:1/-1}.enter-button{margin-top:8px;min-height:49px}.party-mini{padding:13px 16px}.side-heading{display:flex;justify-content:space-between;margin-bottom:9px;color:var(--muted);font-size:.74rem}.unit-mini{padding:8px 0}.unit-mini+.unit-mini{border-top:1px solid rgba(154,166,189,.12)}.unit-mini-top,.unit-mini-bottom{display:flex;justify-content:space-between;gap:8px}.unit-mini-top{color:#e3e5e8;font-size:.74rem}.unit-mini-top span,.unit-mini-bottom{color:#9ba8ba;font-size:.68rem}.unit-mini-bottom{margin-top:4px}.bar{height:5px;overflow:hidden;border-radius:8px;background:#9baac32e}.bar i{height:100%;display:block;border-radius:inherit;background:linear-gradient(90deg,#c7676d,#e79881);transition:width .2s ease}.station-return{min-height:43px;border-color:#70d8d738;background:#70d8d70b;color:#a7d4d2;font-size:.78rem}.roster-panel,.fusion-panel{margin-top:14px;padding-top:13px;border-top:1px solid rgba(223,184,118,.17)}.roster-row{display:grid;grid-template-columns:43px 1fr auto;align-items:center;gap:8px;padding:9px 0;border-bottom:1px solid rgba(154,166,189,.1)}.roster-row img{width:41px;height:41px;object-fit:contain;border-radius:8px;background:radial-gradient(circle,rgba(112,216,215,.13),transparent 72%)}.roster-row>div{min-width:0;display:grid;gap:4px}.roster-row b{font-size:.78rem}.roster-row small{overflow:hidden;color:#9eabbd;font-size:.65rem;text-overflow:ellipsis;white-space:nowrap}.fusion-hint{margin:7px 0 12px;color:#aeb9c8;font-size:.75rem;line-height:1.6}.fusion-selects{display:grid;grid-template-columns:1fr 17px 1fr;align-items:end;gap:7px;color:var(--gold)}.fusion-selects label{display:grid;gap:5px;color:#aeb9c8;font-size:.68rem}.fusion-selects select{min-width:0;min-height:40px;padding:0 8px;border:1px solid rgba(223,184,118,.29);border-radius:7px;background:#111a30;color:var(--ink)}.fusion-selects>span{align-self:center;padding-top:16px;text-align:center}.fusion-result{display:flex;gap:12px;margin:12px 0;padding:11px;border:1px solid rgba(112,216,215,.23);border-radius:8px;background:linear-gradient(130deg,#70d8d712,#dfb8760b)}.fusion-result>div{min-width:0;display:grid;gap:4px}.fusion-result b{color:#f2e4c7;font-size:.88rem}.fusion-result b small{color:var(--teal);font-weight:500}.fusion-result span:not(.eyebrow){color:#aab6c5;font-size:.67rem;line-height:1.5}.fusion-result em{color:#d7b87e;font-size:.68rem;font-style:normal}.fusion-glyph{flex:0 0 42px;width:42px;height:42px;display:grid;place-items:center;border:1px solid rgba(223,184,118,.39);border-radius:50%;color:var(--gold);font-size:1.4rem;box-shadow:inset 0 0 14px #dfb8761a}.battle-shell{padding-bottom:28px}.battle-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 4px 13px}.battle-heading h1{margin:3px 0 0;font:500 clamp(1.5rem,3vw,2.2rem) "Noto Serif TC",serif;letter-spacing:.06em}.turn-status{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid rgba(112,216,215,.24);border-radius:9px;background:#70d8d70b}.turn-status .turn-lamp{flex:0 0 auto}.turn-status .turn-lamp.enemy{background:var(--red);box-shadow:0 0 9px var(--red)}.turn-status b,.turn-status small{display:block}.turn-status b{font-size:.78rem}.turn-status small{margin-top:4px;color:#aab5c5;font-size:.68rem}.phase-alert{margin:0 0 10px;padding:10px 14px;border:1px solid rgba(112,216,215,.47);border-radius:8px;background:linear-gradient(90deg,#70d8d721,#70d8d70b);color:#c9ffff;font-weight:700;letter-spacing:.04em}.battle-field{min-height:315px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:18px clamp(15px,5vw,70px);border:1px solid rgba(112,216,215,.18);border-radius:15px;background:radial-gradient(ellipse at 51% 72%,rgba(35,66,80,.42),transparent 41%),radial-gradient(ellipse at 80% 15%,rgba(85,48,78,.24),transparent 48%),linear-gradient(150deg,#111a34,#0a1127 60%,#11142c)}.battle-field:before{content:"";position:absolute;inset:0;opacity:.22;background:linear-gradient(112deg,transparent 8%,rgba(113,197,199,.12) 8.2%,transparent 8.5% 72%,rgba(223,184,118,.1) 72.2%,transparent 72.5%),repeating-linear-gradient(0deg,transparent 0 55px,rgba(112,216,215,.065) 56px,transparent 57px)}.field-haze{position:absolute;left:10%;right:10%;bottom:2%;height:38%;border-radius:50%;background:radial-gradient(ellipse,rgba(49,143,151,.2),transparent 70%);filter:blur(14px)}.field-grid{position:absolute;left:4%;right:4%;bottom:-16%;height:52%;opacity:.23;transform:perspective(330px) rotateX(62deg);transform-origin:top;background-image:linear-gradient(rgba(113,216,215,.42) 1px,transparent 1px),linear-gradient(90deg,rgba(113,216,215,.42) 1px,transparent 1px);background-size:49px 35px;mask-image:linear-gradient(0deg,#000,transparent 84%)}.enemy-grid{position:relative;z-index:1;width:min(100%,980px);display:grid;grid-template-columns:1fr;gap:12px}.enemy-card{min-height:253px;position:relative;display:grid;grid-template-columns:minmax(180px,.8fr) minmax(220px,1fr);align-items:center;gap:clamp(12px,3vw,36px);padding:10px clamp(11px,3vw,38px);border:1px solid rgba(218,196,161,.25);border-radius:13px;background:linear-gradient(105deg,#080d1d24,#0b1123ba 45%,#0d1224e8);box-shadow:0 22px 36px #0003}.enemy-card.enemy-defeated{opacity:.34;filter:grayscale(.8)}.enemy-art-wrap{position:relative;width:100%;height:240px;display:grid;place-items:center}.enemy-art{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 13px 15px rgba(0,0,0,.55))}.art-glow{position:absolute;left:18%;right:18%;bottom:2%;height:28%;border-radius:50%;background:radial-gradient(ellipse,rgba(112,216,215,.22),transparent 72%);filter:blur(10px)}.boss-art .enemy-art{transform:scale(1.08);filter:drop-shadow(0 15px 16px rgba(81,47,111,.55))}.boss-art .art-glow{background:radial-gradient(ellipse,rgba(154,119,216,.29),transparent 73%)}.enemy-info{position:relative;z-index:2;min-width:0;padding:8px 0}.enemy-title-row{display:flex;align-items:center;justify-content:space-between;gap:7px}.enemy-title-row .eyebrow{font-size:.66rem}.affinity-chip{padding:4px 8px;border:1px solid rgba(223,184,118,.24);border-radius:999px;color:var(--gold);font-size:.64rem;white-space:nowrap}.enemy-info h2{margin:6px 0 10px;font:600 clamp(1.25rem,2.5vw,1.8rem) "Noto Serif TC",serif;letter-spacing:.07em}.enemy-hp>div:first-child{display:flex;justify-content:space-between;margin-bottom:5px;color:#bac4d1;font-size:.69rem}.enemy-hp .bar{height:8px;background:#a0acc233}.enemy-hp .bar i{background:linear-gradient(90deg,#b55263,#e47c7b);box-shadow:0 0 10px #e47c7b57}.enemy-affinity{margin-top:10px;color:#9fbac3;font-size:.72rem}.enemy-controls{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}.target-button,.talk-button{min-height:44px;padding:5px 11px;border:1px solid rgba(223,184,118,.43);border-radius:7px;background:#dfb87617;color:#f0d9ac;font-weight:650;cursor:pointer}.target-button:hover,.talk-button:hover:not(:disabled){border-color:var(--teal);color:#c9ffff}.talk-button{border-color:#70d8d757;background:#70d8d713;color:#aee7e4}.talk-button small{display:block;color:#95b5ba;font-size:.59rem;font-weight:500}.enemy-grid.two-enemies{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:10px}.two-enemies .enemy-card{min-height:270px;grid-template-columns:1fr;grid-template-rows:minmax(125px,1fr) auto;gap:0;padding:7px 14px 13px}.two-enemies .enemy-art-wrap{height:142px}.two-enemies .enemy-info h2{margin:4px 0 7px;font-size:1.28rem}.two-enemies .enemy-title-row .eyebrow{font-size:.58rem;letter-spacing:.09em}.two-enemies .enemy-hp>div:first-child{font-size:.62rem}.two-enemies .enemy-affinity{margin-top:7px;font-size:.65rem}.two-enemies .enemy-controls{margin-top:8px}.two-enemies .target-button,.two-enemies .talk-button{min-height:44px;font-size:.7rem}.battle-control{margin-top:11px;padding:15px 18px}.battle-control-head{display:grid;grid-template-columns:minmax(270px,.8fr) minmax(250px,1fr);gap:22px}.party-bars{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:8px;margin-top:9px}.combat-unit{min-width:0;position:relative;padding:9px 10px 7px;border:1px solid rgba(153,168,190,.18);border-radius:8px;background:#060c1b8f;transition:.17s ease}.combat-unit.is-actor{border-color:#dfb8768c;box-shadow:inset 0 0 20px #dfb8760b}.combat-unit.is-dead{opacity:.44;filter:grayscale(.75)}.combat-unit.ally-target{border-color:var(--teal);cursor:pointer;box-shadow:0 0 0 2px #70d8d71f}.combat-unit.ally-target:hover{background:#70d8d721;transform:translateY(-2px)}.combat-unit-top,.combat-unit-bottom{display:flex;justify-content:space-between;gap:5px}.combat-unit-top{color:#e1e3e5;font-size:.69rem}.combat-unit-top span,.combat-unit-bottom{color:#a6b2c2;font-size:.63rem}.combat-unit .bar{height:5px;margin:6px 0 4px}.target-hint{display:block;margin-top:5px;color:var(--teal);font-size:.62rem}.battle-log{min-width:0}.log-lines{height:78px;overflow:auto;margin-top:8px;padding:6px 9px;border-left:1px solid rgba(112,216,215,.3);background:#050a1775}.log-lines p{margin:2px 0 5px;color:#adbaca;font-size:.68rem;line-height:1.5}.log-lines p:last-child{color:#e5d4ae}.action-row{display:grid;grid-template-columns:170px minmax(0,1fr);gap:12px;margin-top:13px;padding-top:12px;border-top:1px solid rgba(223,184,118,.16)}.actor-badge{display:flex;align-items:center;gap:10px;padding:9px;border:1px solid rgba(223,184,118,.25);border-radius:9px;background:#dfb8760b}.actor-sigil{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;border:1px solid var(--gold-dim);border-radius:50%;color:var(--gold);font-family:"Noto Serif TC",serif;font-size:1.1rem}.actor-badge div{min-width:0;display:grid;gap:3px}.actor-badge small{color:var(--gold);font-size:.63rem}.actor-badge b{font-size:.79rem}.actor-badge span:last-child{color:#9eacbc;font-size:.62rem;white-space:nowrap}.battle-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:7px}.action-button{min-height:64px;display:grid;grid-template-columns:24px 1fr;grid-template-rows:auto auto;align-content:center;align-items:center;column-gap:7px;padding:7px 9px;border:1px solid rgba(146,163,185,.22);border-radius:8px;background:#0b1224d1;text-align:left;cursor:pointer;transition:.15s ease}.action-button:hover:not(:disabled){border-color:var(--gold);background:#282834e6;transform:translateY(-1px)}.action-button .action-symbol{grid-row:1/3;width:23px;color:#e2bd7b;font-size:1.05rem;text-align:center}.action-button b{font-size:.73rem}.action-button small{color:#98a6b8;font-size:.59rem;line-height:1.4}.action-button.element-冰 .action-symbol{color:var(--ice)}.action-button.element-火 .action-symbol{color:#ff927b}.action-button.element-雷 .action-symbol{color:#d5b8ff}.action-button.action-retreat{border-color:#ff827a40}.action-button.action-retreat .action-symbol{color:#d68d8c}.battle-result-inline{display:flex;align-items:center;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(223,184,118,.16)}.battle-result-inline>span{color:var(--gold);font-size:1.4rem}.battle-result-inline>b{color:#edd7a9}.battle-result-inline p{flex:1;margin:0;color:#a6b2c2;font-size:.77rem}.enemy-turn-note{display:flex;align-items:center;gap:9px;margin-top:13px;padding-top:12px;border-top:1px solid rgba(223,184,118,.16);color:#a9b7c6;font-size:.8rem}.battle-return{display:block;margin:12px auto 0;min-height:39px;border-color:#70d8d730;color:#a9c9c8;font-size:.74rem}.battle-notice{margin:11px 0 0}.modal-shade{position:fixed;z-index:50;inset:0;display:grid;place-items:center;overflow:auto;padding:18px;background:#030611c9;backdrop-filter:blur(9px)}.modal-card{width:min(100%,560px);max-height:min(90vh,820px);overflow-y:auto;position:relative;padding:clamp(23px,4vw,36px);border:1px solid rgba(223,184,118,.44);border-radius:15px;background:linear-gradient(145deg,#15182d,#0c1428 70%);box-shadow:0 25px 90px #00000094,inset 0 0 45px #dfb87609}.modal-close{position:absolute;top:12px;right:13px;width:36px;height:36px;border:1px solid rgba(223,184,118,.25);border-radius:50%;background:#060a169e;color:var(--gold);font-size:1.4rem;cursor:pointer}.modal-card h2{margin:8px 38px 14px 0;font:500 clamp(1.4rem,4vw,2rem) "Noto Serif TC",serif}.talk-intro,.modal-card>p{color:#b9c4d0;font-size:.88rem;line-height:1.75}.talk-answers{display:grid;gap:9px}.offer-box{padding:14px;border:1px solid rgba(223,184,118,.27);border-radius:9px;background:#dfb8760f}.offer-box>b{color:#efdaa9;font-size:.87rem}.offer-box p{color:#b9c4d0;font-size:.83rem;line-height:1.65}.offer-box>span{color:var(--gold);font-size:.79rem;font-weight:700}.offer-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}.fusion-modal{width:min(100%,510px)}.fusion-modal-result{display:flex;align-items:center;gap:15px;margin:19px 0;padding:16px;border:1px solid rgba(112,216,215,.26);border-radius:10px;background:linear-gradient(135deg,#70d8d717,#dfb8760f)}.fusion-modal-result>div{display:grid;gap:5px}.fusion-modal-result small{color:var(--teal);font-size:.68rem}.fusion-modal-result b{font:600 1.2rem "Noto Serif TC",serif;color:#f0e2c2}.fusion-modal-result span:not(.fusion-glyph){color:#aab8c8;font-size:.75rem}.cost-line{padding:11px 13px;border:1px solid rgba(223,184,118,.2);border-radius:8px;color:#c0c6ce;font-size:.8rem}.cost-line b{color:var(--gold)}.modal-warning{color:#d3c5b7;font-size:.79rem;line-height:1.65}.glossary-modal{width:min(100%,650px)}.glossary-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin:15px 0 20px}.glossary-grid>div{padding:13px;border:1px solid rgba(112,216,215,.16);border-radius:8px;background:#70d8d709}.glossary-grid b{color:#e7d4ad;font-size:.83rem}.glossary-grid p{margin:7px 0 0;color:#aab6c5;font-size:.76rem;line-height:1.7}.codex-section{margin:3px 0 19px;padding:12px 13px;border:1px solid rgba(223,184,118,.2);border-radius:8px;background:#dfb87609}.codex-section>b{color:var(--gold);font-size:.8rem}.codex-section>p,.codex-entry p{margin:7px 0 0;color:#aab6c5;font-size:.72rem;line-height:1.55}.codex-entry{display:inline-block;margin:8px 14px 0 0}.codex-entry b{color:#e4e8ed;font-size:.74rem}.result-modal{width:min(100%,490px)}.result-modal p{color:#b5c0ce;line-height:1.7}.ending-choice-screen,.ending-screen{min-height:100vh;position:relative;overflow:hidden;isolation:isolate;display:grid;place-items:center;padding:28px}.ending-backdrop{background-image:linear-gradient(90deg,#040813e0,#050916bd),url(/veilbound/assets/veilbound-city.webp)}.ending-choice-card{width:min(100%,860px);padding:clamp(24px,5vw,56px);border:1px solid rgba(223,184,118,.33);border-radius:15px;background:#080e1fd4;backdrop-filter:blur(16px);box-shadow:0 20px 90px #00000059}.ending-choice-card h1{margin:13px 0;font:500 clamp(2rem,5vw,3.4rem)/1.4 "Noto Serif TC",serif}.ending-choice-card>p{max-width:700px;color:#b7c2d0;line-height:1.85}.ending-options{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:25px}.ending-option{min-height:200px;display:flex;flex-direction:column;align-items:flex-start;padding:20px;border:1px solid rgba(223,184,118,.32);border-radius:11px;background:linear-gradient(140deg,#231638b3,#0c1328e0);text-align:left;cursor:pointer}.ending-option:hover{border-color:var(--teal);background:linear-gradient(140deg,#2b374fd6,#0c1328f0);transform:translateY(-2px)}.ending-mark{color:var(--gold);font-size:1.5rem}.ending-option b{margin-top:8px;font:600 1.2rem "Noto Serif TC",serif}.ending-option small{margin-top:9px;color:#abb8c9;font-size:.78rem;line-height:1.7}.ending-option i{margin-top:auto;padding-top:13px;color:var(--teal);font-size:.77rem;font-style:normal}.stance-note{margin-top:17px;color:#9faec1;font-size:.75rem}.ending-content{width:min(100%,780px);position:relative;padding:clamp(24px,6vw,65px);border:1px solid rgba(223,184,118,.35);border-radius:15px;background:#080e1fcf;backdrop-filter:blur(15px);box-shadow:0 20px 90px #0006}.ending-content h1{margin:11px 0 20px;font:500 clamp(2.2rem,6vw,4.4rem)/1.3 "Noto Serif TC",serif;letter-spacing:.06em}.ending-rule{width:75px;height:1px;margin:24px 0;background:var(--gold);box-shadow:0 0 12px var(--gold)}.ending-content p{color:#c1c9d3;font-size:.93rem;line-height:2}.ending-stats{display:flex;flex-wrap:wrap;gap:9px;margin:25px 0}.ending-stats span{flex:1;min-width:130px;padding:12px;border:1px solid rgba(112,216,215,.19);border-radius:8px;color:#9fabbc;font-size:.73rem}.ending-stats b{display:block;margin-top:5px;color:#edd8ad;font-size:.9rem}.ending-actions{display:flex;gap:10px;flex-wrap:wrap}.ending-content>small{display:block;margin-top:21px;color:#8794a6;font-size:.72rem}@keyframes pulse{50%{opacity:.42;box-shadow:0 0 3px currentColor}}@keyframes fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1500px){.map-layout{grid-template-columns:minmax(0,2fr) minmax(340px,.78fr)}.map-stage{padding:23px 25px 18px}}@media(max-width:1100px){.map-layout{grid-template-columns:minmax(0,1.35fr) minmax(290px,.82fr)}.hud{gap:13px}.hud-brand{min-width:140px}.hud-party{gap:6px}.mini-unit{font-size:.67rem}.battle-control-head{grid-template-columns:1fr;gap:13px}.log-lines{height:65px}}@media(max-width:860px){.hud{min-height:68px;flex-wrap:wrap;gap:10px;padding:9px 0}.hud-brand{min-width:0;margin-right:auto}.hud-location{order:2}.hud-objective{order:3}.hud-party{order:4;width:100%;margin-left:0;padding:5px 0 0;border-top:1px solid rgba(223,184,118,.1)}.hud-resources{order:5}.icon-button{width:36px;height:36px}.map-layout{grid-template-columns:1fr}.map-board{height:clamp(440px,66vh,620px)}.map-sidebar{display:grid;grid-template-columns:1fr 1fr;align-items:start}.objective-panel{grid-column:1/-1}.node-detail{grid-row:span 2}.party-mini{grid-column:2}.station-return{grid-column:1/-1}.battle-field{min-height:285px}}@media(max-width:600px){:root{font-size:14px}.title-screen{align-items:flex-end;min-height:100svh;padding:30px 22px 44px}.compact{min-height:44px}.title-backdrop{background-image:linear-gradient(0deg,#050917fa,#050917de 48%,#070c1d66),url(/veilbound/assets/veilbound-city.webp);background-position:55% center}.title-copy{width:100%}.title-copy .eyebrow{margin-bottom:18px;font-size:.64rem}.title-copy h1{font-size:clamp(3.2rem,15vw,5rem)}.title-story{margin:24px 0 16px;font-size:.9rem}.mechanic-row{gap:6px;margin-bottom:22px}.mechanic-row span{padding:7px 9px;font-size:.72rem}.title-actions{align-items:stretch}.title-actions .button-primary,.title-actions .button-quiet{width:100%}.title-seal{top:11%;right:-29%;width:62vw;transform:none;opacity:.58}.prologue-screen{min-height:100svh;grid-template-columns:1fr;align-items:end;padding:15px}.prologue-art{background-image:linear-gradient(0deg,#070c1df5,#070c1da3 66%,#070c1d54),url(/veilbound/assets/veilbound-city.webp)}.prologue-card{grid-column:1;padding:23px}.prologue-card h2{margin-bottom:14px;font-size:1.9rem}.prologue-card p{margin:9px 0;font-size:.84rem}.dialogue{margin:14px 0;padding:11px 13px;font-size:.84rem}.game-shell{padding:0 10px 20px}.hud{gap:7px}.hud-brand{font-size:.69rem}.brand-seal{width:32px;height:32px}.hud-location,.hud-objective{flex:1;min-width:0}.hud-location .eyebrow,.hud-objective .eyebrow{font-size:.57rem}.hud-location strong{font-size:.81rem}.hud-objective strong{font-size:.7rem;white-space:normal}.hud-resources{gap:7px;padding:0 1px;font-size:.73rem}.hud-party{overflow:auto}.mini-unit{flex:0 0 auto}.map-layout{gap:11px;padding-top:11px}.map-stage{padding:12px 10px 10px}.section-heading{align-items:flex-start;flex-direction:column;gap:8px;padding:1px 3px 9px}.section-heading h1{font-size:1.29rem}.map-legend{gap:10px;font-size:.63rem}.map-board{height:min(128vw,540px);min-height:390px}.map-node{width:clamp(85px,25vw,112px);min-height:68px;padding:6px 3px;gap:2px;border-radius:9px}.node-icon{font-size:1rem}.node-title{font-size:.69rem}.node-caption{font-size:.57rem}.node-star{right:3px;top:-7px;font-size:.49rem}.map-bottom{font-size:.63rem}.map-sidebar{grid-template-columns:1fr;gap:9px}.objective-panel{grid-column:auto;padding:13px}.objective-panel p{margin:6px 0 10px;font-size:.76rem}.node-detail{grid-row:auto;padding:14px}.party-mini{grid-column:auto}.station-return{grid-column:auto;width:100%}.unit-mini{padding:6px 0}.battle-heading{align-items:flex-start;flex-direction:column;gap:9px;padding:13px 2px 10px}.battle-heading h1{font-size:1.6rem}.turn-status{width:100%;padding:8px 11px}.battle-field{min-height:275px;padding:9px}.enemy-card{min-height:260px;grid-template-columns:minmax(120px,.85fr) minmax(150px,1fr);gap:7px;padding:8px}.enemy-art-wrap{height:230px}.enemy-info h2{font-size:1.23rem}.enemy-title-row{align-items:flex-start;flex-direction:column}.enemy-title-row .eyebrow{font-size:.58rem;letter-spacing:.08em}.affinity-chip{padding:3px 6px;font-size:.57rem}.enemy-affinity{font-size:.64rem;line-height:1.5}.enemy-controls{flex-direction:column}.enemy-controls button{width:100%}.enemy-grid.two-enemies{gap:6px}.two-enemies .enemy-card{min-height:294px;padding:6px 8px 10px}.two-enemies .enemy-art-wrap{height:126px}.two-enemies .enemy-title-row{flex-direction:row}.two-enemies .enemy-title-row .eyebrow{font-size:.5rem}.two-enemies .affinity-chip{font-size:.52rem}.two-enemies .enemy-info h2{font-size:.98rem}.two-enemies .enemy-affinity{font-size:.58rem}.two-enemies .enemy-controls button{min-height:44px;font-size:.62rem;padding-inline:5px}.battle-control{padding:11px}.battle-control-head{gap:10px}.party-bars{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.combat-unit{padding:7px 6px}.combat-unit-top{font-size:.63rem}.combat-unit-top span,.combat-unit-bottom{font-size:.57rem}.log-lines{height:74px}.action-row{grid-template-columns:1fr;gap:8px}.actor-badge{padding:7px}.battle-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.action-button{min-height:58px;padding:6px 7px}.battle-result-inline{flex-wrap:wrap}.battle-result-inline p{flex-basis:100%;order:3}.battle-result-inline button{margin-left:auto}.battle-return{width:100%}.glossary-grid{grid-template-columns:1fr}.ending-choice-screen,.ending-screen{padding:12px}.ending-choice-card,.ending-content{padding:22px 18px}.ending-choice-card h1{font-size:1.75rem}.ending-options{grid-template-columns:1fr;gap:8px;margin-top:17px}.ending-option{min-height:170px;padding:15px}.ending-option small{font-size:.73rem}.ending-content h1{font-size:2.1rem}.ending-content p{font-size:.84rem}.ending-stats span{min-width:calc(50% - 6px)}}@media(max-width:370px){.hud-objective{display:none}.map-node{width:82px}.node-title{font-size:.64rem}.two-enemies .enemy-card{min-height:302px}}@media(max-height:520px)and (orientation:landscape){.title-screen{min-height:100svh;align-items:center;padding-top:15px;padding-bottom:15px}.title-copy h1{font-size:3rem}.title-story{margin:12px 0}.mechanic-row{margin-bottom:12px}.save-note{margin-top:9px}.map-board{height:390px;min-height:390px}.map-layout{grid-template-columns:minmax(0,1.4fr) minmax(245px,.8fr)}.map-sidebar{display:flex}.battle-field{min-height:235px}.enemy-card{min-height:220px}.enemy-art-wrap{height:205px}}
