/* Rectangular illustrations preserve scene corners; inspect shows the full image. */
.card .card-art{border-radius:3px;aspect-ratio:auto}
.inspect-card .card-art>img:not(.mythic-frame){width:100%;height:auto;max-height:none;object-fit:contain}
/* Keep decorative layers inside explicit paint stacks on Android WebView. */
.battle-shell{isolation:isolate}
.battle-shell>.realm{z-index:0;isolation:isolate}
.portal .portal-frame{z-index:0}
.portal .portal-core{z-index:1}
.portal .portal-runes,.portal .portal-symbol,.portal .portal-power,.portal .portal-status,.portal>b,.portal>em{z-index:2}
@media (hover:none) and (pointer:coarse){
  .battle-shell .lane-unit{perspective:none}
  .battle-shell .realm-fog,.battle-shell .realm-dust{display:none}
  .battle-shell .portal-core,.battle-shell .portal-runes{animation:none;filter:none}
}
.menu-screen{background:#080b13}
.menu-screen>.realm,.menu-screen>.menu-stars,.menu-screen>.menu-gates{display:none}
.menu-screen:before{content:'';position:absolute;z-index:0;inset:-20px -16px auto;height:720px;background:linear-gradient(180deg,#080b1320 0%,transparent 45%,#080b13 94%),url('/assets/menu/shattered-portals.webp') center top/100% auto no-repeat;pointer-events:none}
.menu-screen .brand-type{margin:32px 0 8px;text-shadow:0 2px 5px #000,0 0 22px #000;color:#fff0ce}
.menu-screen .brand-type>span{font-size:20px;margin-bottom:10px}
.menu-screen .eyebrow{color:#e2d4be;text-shadow:0 1px 4px #000}
.menu-screen .menu-lore{margin:clamp(180px,53vw,250px) 0 20px;font-size:13px;color:#eee3da;text-shadow:0 1px 5px #000;max-width:280px}
.menu-screen .menu-nav{margin-top:0;gap:10px}
.menu-screen .play-button{background:linear-gradient(120deg,#6e5135f5,#3b2d42f5);border-color:#d0ad70;min-height:68px}
.menu-screen .menu-nav>button:not(.play-button){background:#11121eea}
.menu-screen .menu-secondary button{background:linear-gradient(130deg,#292332f5,#10121df5)}
.menu-screen .boss-event-button{border-color:#c46c91!important;background:linear-gradient(120deg,#5c1e3df2,#241632f2)!important;color:#f4d7e6;box-shadow:inset 0 0 0 3px #09071199,0 0 18px #a62b6540}
.boss-event-button small{display:block;margin-top:5px;font:9px Arial,sans-serif;color:#d7a9c2}
.boss-event{text-align:center;margin:18px 0;padding:24px 18px;background:radial-gradient(circle at 50% 5%,#6d285344,transparent 38%),linear-gradient(160deg,#201521,#0b0d15 70%);border:1px solid #8d536f;box-shadow:inset 0 0 0 3px #080910,0 12px 35px #0008}
.boss-event-sigil{font-size:76px;line-height:1;color:#df8eb8;text-shadow:0 0 30px #ca3a88;animation:break-pulse 2.4s infinite}
.boss-event h2{margin:9px 0;color:#ecd4bd;font-size:28px}.boss-event>p{font:13px/1.55 Arial,sans-serif;color:#cbbac8}.boss-event h3{margin-top:22px;font-size:15px;color:#dcc3d1}
.event-counter{display:flex;align-items:center;justify-content:center;gap:10px;margin:19px auto 8px}.event-counter b{font-size:42px;color:#f1c2d8}.event-counter span{max-width:110px;text-align:left;font:11px/1.35 Arial,sans-serif;color:#baa8b6}
.boss-event ol{list-style:none;padding:0;margin:10px 0 18px;display:grid;gap:6px}.boss-event li{padding:8px;background:#110e17aa;border:1px solid #64445a;font:12px Arial,sans-serif;color:#d2c3cd}.boss-event li b{color:#df9cbd;margin-right:6px}
.event-won{color:#e6b5ce!important;font-weight:700}.event-countdown{margin:12px 0!important;color:#ffd2eb!important;font:700 16px/1.3 Georgia,serif;letter-spacing:.08em;text-shadow:0 0 14px #ed4eaa}.event-card-reward{margin:13px 0!important;padding:10px 12px;border:1px solid #7d547d;background:linear-gradient(120deg,#26152f,#17253c);color:#f0c4e8!important;font:700 12px/1.45 Arial,sans-serif}.event-prize{display:block;margin:14px 0;padding:13px 10px;min-height:44px;border:1px solid #d191b1;background:linear-gradient(120deg,#6d294b,#2c1931);color:#fff0d7;text-decoration:none;font:700 13px/1.35 Arial,sans-serif}
.boss-event-portrait{position:relative;margin:-24px -18px 18px;height:330px;overflow:hidden;border-bottom:1px solid #bb668e}.boss-event-portrait:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,#17101b 98%);box-shadow:inset 0 0 40px #000}.boss-event-portrait img{width:100%;height:100%;object-fit:cover;object-position:center 18%}.boss-event-portrait span{position:absolute;z-index:2;bottom:9px;left:50%;transform:translateX(-50%);font-size:34px;color:#ef8fc0;text-shadow:0 0 18px #f04caa}.boss-rules{margin:18px 0;border:1px solid #76516a;background:#100d16;text-align:left}.boss-rules summary{padding:12px;font-size:12px;color:#e0bdd0;cursor:pointer}.boss-rules p{padding:0 12px 12px;margin:0!important;font:11px/1.55 Arial,sans-serif;color:#bba9b5!important}.boss-result-line{margin:10px 0 16px;padding:10px 12px;border-left:2px solid #ec77b4;background:#2b1726;color:#e7c7d8;font:italic 12px/1.55 Georgia,serif}
.boss-line{position:fixed;z-index:9500;left:50%;top:max(85px,calc(env(safe-area-inset-top) + 72px));width:min(430px,calc(100vw - 24px));transform:translateX(-50%);display:flex;gap:11px;align-items:center;padding:9px 12px;background:linear-gradient(110deg,#130e18f4,#41162ff4,#102332f4);border:1px solid #df77ae;box-shadow:0 8px 28px #000c,0 0 22px #e64d9a33;animation:boss-line-in .35s ease-out}.boss-line-major{border-color:#73d8ff;box-shadow:0 8px 28px #000c,0 0 30px #f34ba155}.boss-line img{width:48px;height:58px;object-fit:cover;object-position:center 20%;border:1px solid #d79abb}.boss-line div{min-width:0}.boss-line b{font-size:11px;color:#f4d6b9}.boss-line p{margin:4px 0 0;font:11px/1.4 Arial,sans-serif;color:#eadce7}.masquerade-mask{position:fixed;z-index:9200;width:55px;height:29px;transform:translate(-50%,-50%);border:3px solid #ef6fbd;border-radius:50% 50% 42% 42%;filter:drop-shadow(0 0 11px #58d9ff);animation:mask-flash .9s ease-out forwards;pointer-events:none}.masquerade-mask:before,.masquerade-mask:after{content:"";position:absolute;top:8px;width:14px;height:7px;background:#070810;border-radius:50%}.masquerade-mask:before{left:7px}.masquerade-mask:after{right:7px}.masquerade-shard{position:fixed;z-index:9300;pointer-events:none;font-style:normal;font-size:13px;text-shadow:0 0 8px currentColor;animation:masquerade-shard 1.1s var(--delay) ease-out forwards}
@keyframes boss-line-in{from{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%,0)}}@keyframes mask-flash{0%{opacity:0;transform:translate(-50%,-50%) scale(.25) rotate(-12deg)}45%{opacity:1;transform:translate(-50%,-50%) scale(1.12)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.4) rotate(8deg)}}@keyframes masquerade-shard{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}18%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) rotate(var(--rot)) scale(1.2)}}
/* The game supplies its own dark palette. Prevent Android WebView auto-darkening
   transparent text/decoration layers independently while the page scrolls. */
:root{color-scheme:only dark;background-color:#080b13}
/* Keep the scrolling menu in one explicit stacking context. Its decorative
   portals do not need perspective or filter-created compositing surfaces. */
.menu-screen{isolation:isolate}
.menu-screen>.realm{z-index:0}
.menu-screen>*:not(.realm){z-index:1}
.menu-screen .menu-gates{perspective:none}
.menu-screen .menu-gates i,.menu-screen .menu-gates i:nth-child(3){transform:none}
.menu-screen .menu-gates i:after{filter:none}
.menu-screen .menu-gates:after{transform:scaleY(.5)}
/* Battle 2.0: scene, playable surface and HUD remain independent layers. */
.realm{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;background:#080b13}.realm-sky{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 31%,#50405477,transparent 48%),linear-gradient(#080b14,#20202c 50%,#090c14)}.realm-eclipse{position:absolute;top:13%;left:calc(50% - 62px);width:124px;height:124px;border-radius:50%;background:#10121d;box-shadow:0 0 35px #d2b18d26,0 0 1px 1px #dbc39850}.realm-architecture{position:absolute;width:100%;height:100%;inset:0}.realm-fog{position:absolute;left:-20%;width:140%;height:25%;background:radial-gradient(ellipse,#b3acc219,transparent 65%);animation:realm-drift 19s ease-in-out infinite alternate}.fog-far{top:30%}.fog-near{bottom:19%;animation-delay:-9s}.realm-dust i{position:absolute;left:var(--x);top:55%;width:2px;height:2px;border-radius:50%;background:#deca9e;opacity:0;animation:realm-rise 12s var(--delay) infinite}.menu-screen>*:not(.realm){position:relative}.menu-screen .realm{inset:-20px -16px -24px}.brand-type{font-size:clamp(34px,9vw,48px);letter-spacing:5px;text-align:center;margin:42px 0 10px;text-shadow:0 2px 3px #000,0 0 35px #d7b78455;color:#e6d6b5}.brand-type small{display:block;font:9px Arial,sans-serif;letter-spacing:5px;margin-top:12px;color:#b5a88d}.menu-nav button{border-radius:2px;box-shadow:inset 0 0 0 3px #070a1166,0 5px 15px #0008}.menu-gates{margin-top:8px}.menu-secondary button{background:linear-gradient(130deg,#36313a,#13151f);border-color:#82715c}.menu-lore{color:#d2c4cc;text-shadow:0 2px 4px #000}
.battle-shell{padding:env(safe-area-inset-top) 9px env(safe-area-inset-bottom);max-width:480px;overflow:hidden}.battle-layout{position:relative;z-index:1;min-height:760px;height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom));display:grid;grid-template-rows:36px 72px 27px minmax(318px,1fr) 72px 153px 52px;gap:2px}.battle-header{height:auto}.battle-wordmark{text-align:center;font-size:13px;letter-spacing:4px}.battle-wordmark small{display:block;font:7px Arial;letter-spacing:3px;margin-top:3px}.hero,.hero.player{min-height:0;margin:0;padding:5px 4px;gap:9px;border:0;background:linear-gradient(90deg,#12141cc9,#1d1c2499,transparent)}.hero-identity{min-width:0;flex:1}.hero h2{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 0 3px}.hero small{font-size:9px}.portrait,.player-portrait,.enemy-portrait{width:52px;height:61px;position:relative;display:block;background:#161821;overflow:visible;border:2px ridge #978265;border-radius:45% 45% 8px 8px;padding:2px}.portrait img{width:100%;height:100%;object-fit:cover;object-position:center 25%;border-radius:inherit;display:block}.portrait>span{position:absolute;right:-5px;bottom:-2px;font-size:16px;background:#171923;border:1px solid #ad926d;border-radius:50%;width:22px;height:22px;display:grid;place-items:center;color:#e0cba5;text-shadow:none}.hero-hp{height:49px;min-width:43px;font-size:27px}.hero-critical .hero-hp{color:#ff9e91;box-shadow:inset 0 0 18px #971f3544}.enemy-cards{height:20px;margin:3px 0 0}.enemy-cards i{display:block;width:12px;height:18px;margin-left:-3px;border:1px solid #877050;background:repeating-linear-gradient(45deg,#494033 0 1px,#181923 1px 4px);transform:rotate(-7deg)}.enemy-cards span{font-size:9px}.mana-gems{gap:3px;margin:4px 0}.mana-gems i{width:10px;height:12px}.mana-gems b{font:10px Arial;margin-left:4px}.turn-strip{margin:0;padding:5px 2px;align-items:center;font-size:10px;background:#0b0e1680}.arena{position:relative;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 32px;grid-template-rows:23px minmax(0,1fr);column-gap:5px}.anomaly-banner{grid-column:1/-1;min-height:0;padding:2px;border:0;background:transparent;font-size:10px;color:#c5b6d6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.battlefield{padding:0;gap:5px;min-height:0;height:100%;isolation:isolate}.battlefield:before,.battlefield:after{content:'';position:absolute;left:-5px;right:-3px;height:29%;z-index:-1;border-bottom:2px solid #8a796455;background:linear-gradient(160deg,#68606d13,#131620aa 80%);clip-path:polygon(5% 0,95% 0,100% 84%,87% 100%,15% 100%,0 84%);box-shadow:0 18px 24px #000}.battlefield:before{top:0}.battlefield:after{bottom:0}.lane{border:0;border-radius:50% 50% 8px 8px;padding:0;display:grid;grid-template-rows:minmax(82px,1fr) 13px minmax(113px,1.35fr) 13px minmax(82px,1fr);background:transparent;position:relative;transition:background .15s,opacity .15s}.lane-unit{height:auto;min-height:0;display:flex;align-items:center;justify-content:center;flex-direction:column;perspective:500px}.empty-slot{height:75px;width:85%;border:1px solid #8c7e681c;background:#10131a30;border-radius:40% 40% 5px 5px}.empty-slot small{font-size:8px}.empty-slot>span{font-size:22px}.attachments{height:13px;min-width:0;overflow:hidden}.attachment{font-size:7px;min-height:6px;line-height:11px;background:#10131abb}.unit-status{font:7px Arial;color:#b4b8af;height:9px;line-height:9px;white-space:nowrap}.portal{height:100%;min-height:0;padding:0 0 4px;color:var(--portal-color);justify-content:flex-end;transform:none;touch-action:manipulation}.portal-frame{position:absolute;inset:3px 10% 20px;border:4px ridge #807566;border-radius:50% 50% 3px 3px;box-shadow:0 8px 8px #000a,inset 0 0 0 1px var(--portal-color),0 0 16px color-mix(in srgb,var(--portal-color) 14%,transparent);background:#0c101a;z-index:-2}.portal-frame:before{content:'';position:absolute;inset:5px;border:1px solid #c3b49c55;border-radius:inherit}.portal-frame:after{content:'';position:absolute;bottom:-8px;left:-12px;right:-12px;height:9px;background:linear-gradient(#746a5c,#252630);clip-path:polygon(12% 0,88% 0,100% 100%,0 100%)}.portal-core{position:absolute;inset:12px 20% 26px;border-radius:50% 50% 4px 4px;background:radial-gradient(ellipse at 50% 75%,color-mix(in srgb,var(--portal-color) 43%,transparent),#0d1222 70%);box-shadow:inset 0 0 14px color-mix(in srgb,var(--portal-color) 32%,transparent);z-index:-1;animation:portal-pulse 5s ease-in-out infinite}.portal-runes{position:absolute;top:19%;font-size:10px;width:40px;height:40px;line-height:40px;border:1px dotted color-mix(in srgb,var(--portal-color) 50%,transparent);border-radius:50%;animation:rune-turn 28s linear infinite;opacity:.6}.portal-symbol{top:21%;font-size:31px;line-height:1;left:0;right:0}.portal-power{position:absolute;bottom:28px;font:12px Arial;font-weight:bold;color:#eee4d0;text-shadow:0 2px 4px #000}.portal-power small{font:9px Arial;min-height:0;color:#c1a49e}.portal b{font-size:9px;letter-spacing:.7px;margin:0;line-height:13px}.portal-status{position:absolute;right:5%;bottom:30px;font-size:9px}.portal em{left:auto;right:0;bottom:4px;padding:1px 3px;font-size:9px;background:#242333;min-width:21px}.valid-target{box-shadow:none;background:linear-gradient(transparent,#c5aeef13,transparent)}.valid-target .portal-frame{border-color:#b6a98a;box-shadow:0 0 20px color-mix(in srgb,var(--portal-color) 34%,transparent)}.drag-target .portal-frame{border-color:#eee1b9;box-shadow:0 0 28px var(--portal-color)}.drag-target .portal-core{transform:scale(1.08)}.invalid-target .portal{opacity:.5}.control-player .portal-status{color:#e6e6b7}.control-enemy .portal-status{color:#e99b98}.portal-frozen .portal-core{background:repeating-linear-gradient(65deg,#ccf2ff55 0 1px,transparent 1px 10px),#31475b}.lane-corrupted .portal-frame{border-bottom-color:#a26299}.lane-damaged .board-card{border-bottom-color:#bc7169}
.veil-artifact{align-self:stretch;display:flex;flex-direction:column;align-items:center;gap:7px;min-height:0;padding:7px 1px;border:0;background:linear-gradient(90deg,transparent,#30213866,transparent);color:#d4baf0;overflow:hidden}.veil-orb{font-size:27px;line-height:30px;text-shadow:0 0 10px #b878ee}.veil-artifact>b{font:13px Arial}.veil-artifact small{display:block;font-size:8px;color:#a58ead}.veil-spine{flex:1;min-height:60px;width:13px;display:flex;flex-direction:column;gap:3px;border-inline:2px ridge #786182;padding:3px}.veil-spine i{flex:1;background:#433345;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}.veil-spine .lit{background:#c49aec;box-shadow:0 0 8px #a46ed4}.veil-name{writing-mode:vertical-rl;text-transform:uppercase;letter-spacing:2px;font-size:8px;max-height:62px}.veil-critical .veil-orb{animation:portal-pulse 1.8s ease-in-out infinite}.veil-critical .arena{background:radial-gradient(ellipse at right,#89509b19,transparent 70%)}
.card{border-radius:7px;border:1px solid #796c58;background:linear-gradient(145deg,#39363a,#141720 45%,#27232a);box-shadow:inset 0 0 0 2px #080b1280,0 4px 10px #0009}.card.rare{border-color:#9cabb2}.card.epic{border-color:#9982ad}.card.legendary{border-color:#b9a175}.card.mythic{border-color:#cab5df;background:linear-gradient(135deg,#413b53,#161822,#44374a)}.card-art{position:relative;background:#151923}.card-art img{object-fit:cover;object-position:center 25%}.card .faction-mark{font-size:15px;right:3px;top:3px;color:#d0c2a4;background:#10131a99;border:1px solid #8c7b5e88;border-radius:50%;width:22px;height:22px;display:grid;place-items:center}.card .cost{z-index:3;width:23px;height:25px;font:16px Georgia;border:1px solid #abb9ce;box-shadow:0 2px 4px #000}.card .card-name{color:#efdfbd;text-shadow:0 1px 2px #000}.card .stat-up{color:#a9e5b4}.card .stat-down{color:#f39e94}.card.board-card{width:90%;max-width:93px;height:calc(100% - 10px);max-height:120px;min-height:0;padding:3px;display:grid;grid-template-rows:minmax(0,1fr) 15px 20px;transform:rotateX(4deg);overflow:hidden}.board-card .card-art{height:auto;min-height:0}.board-card .card-art img{height:100%;width:100%}.board-card .card-name{font-size:8px;line-height:15px;padding:0;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.board-card .card-subtitle,.board-card .card-rarity,.board-card .card-ability{display:none}.board-card .card-stats{padding:0;align-items:center}.board-card .card-stats b{font-size:13px;width:21px;height:20px;line-height:19px}.board-card .cost{width:19px;height:21px;font-size:14px}.board-card .faction-mark{width:17px;height:17px;font-size:12px}.board-card.ready{box-shadow:0 3px 9px #000a,0 0 0 1px #b0bba66e}.hand-zone{position:relative;min-width:0;isolation:isolate}.hand-heading{display:flex;justify-content:space-between;height:23px;align-items:center;font-size:10px;color:#c6bacd}.hand-heading small{font-size:8px;color:#9f90ad}.hand{position:relative;height:127px;display:block;overflow:visible;margin:0;padding:0;border:0;touch-action:none}.hand .hand-card{position:absolute;left:var(--position);top:7px;width:77px;min-width:0;height:108px;margin:0;padding:3px;display:grid;grid-template-rows:minmax(0,1fr) 15px 21px;transform:translateX(-50%) translateY(var(--lift)) rotate(var(--angle));transform-origin:50% 150%;z-index:var(--order);transition:transform .16s,border-color .16s;overflow:hidden;touch-action:none}.hand-card .card-art{height:auto;min-height:0}.hand-card .card-art img{height:100%;width:100%}.hand-card .card-name{padding:0;font-size:8px;line-height:15px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.hand-card .card-ability,.hand-card .card-rarity,.hand-card .card-subtitle{display:none}.hand-card .card-stats{padding:0}.hand-card .card-stats b{width:22px;height:21px;font-size:14px;line-height:20px}.hand-card .card-type{font-size:8px;padding:3px}.hand .hand-card.selected{transform:translateX(-50%) translateY(-17px) rotate(0) scale(1.06);z-index:30;border-color:#e7d4ae}.selected-preview{position:absolute;left:0;right:0;top:-27px;min-height:27px;padding:4px 7px;background:#10131aef;border:1px solid #80705b;z-index:40;display:flex;gap:7px;align-items:center;font-size:10px;box-shadow:0 3px 9px #0009}.selected-preview>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:9px;color:#bcb0c6}.selected-preview button{min-height:24px;padding:2px 5px;font-size:9px}.forecast-options{position:absolute;bottom:100%;left:0;right:0;background:#0e111bf5;padding:6px;display:flex;gap:6px;font:9px/1.4 Arial;border:1px solid #87728d}.forecast-options span{flex:1}.battle-actions{display:flex;align-items:center;gap:5px;z-index:45;background:linear-gradient(transparent,#10121a);padding:3px 0 5px;margin:0;border:0}.battle-hint{font-size:9px;line-height:1.3;flex:1;color:#a99bb5}.log-toggle{padding:5px;min-width:32px}.end-turn{min-height:43px;white-space:nowrap;font-size:11px;padding:8px 10px;background:linear-gradient(#554535,#29222b);border-color:#ac9168;border-radius:2px;box-shadow:inset 0 0 0 2px #16151c80}.drag-ghost{position:fixed!important;width:85px!important;height:120px!important;pointer-events:none;z-index:9999!important;transform:rotate(-4deg)!important;opacity:.9;box-shadow:0 10px 24px #000}.battle-layout>.tutorial-step,.battle-layout>.debug-panel{grid-column:1/-1}.battle-layout:has(>.tutorial-step),.battle-layout:has(>.debug-panel){height:auto;min-height:100dvh;grid-template-rows:36px 72px 27px 340px 72px 153px 52px auto}.battle-layout>.battle-log{position:absolute;inset:120px 5px 70px;z-index:60;background:#11131bf5;overflow:auto;padding:12px}
.collection-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 10px}.collection-card{height:250px;display:grid;grid-template-rows:minmax(0,1fr) 24px 17px 18px 27px;padding:5px}.collection-card .card-art{height:auto;min-height:0}.collection-card .card-art img{width:100%;height:100%}.collection-card .card-name{font-size:12px;padding:4px 0}.collection-card .card-subtitle{font-size:8px;padding:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.collection-card .card-rarity{font-size:8px;padding:3px 0}.collection-card .card-ability{display:none}.collection-card .card-stats{padding:0}.owned-count{display:block;font:10px Arial;color:#a99eae;padding:5px}.unowned{filter:grayscale(1);opacity:.5}.collection-note{font:11px/1.4 Arial;color:#a99ab4}.card-button{padding:0;transition:transform .16s}.card-button:hover{transform:translateY(-3px)}.inspect-modal{background:linear-gradient(140deg,#2d2731,#10131c 55%);border-color:#9d8765;box-shadow:0 20px 80px #000}.veilbreak-modal{background:radial-gradient(ellipse,#33223de8,#070a13f5);overflow:hidden}.fracture-lines{position:absolute;inset:0;background:#c3a6e2;opacity:.4;clip-path:polygon(50% 0,51% 0,46% 30%,61% 47%,47% 70%,50% 100%,49% 100%,45% 70%,58% 47%,44% 30%);pointer-events:none;animation:fracture-arrive .45s ease-out}.departing-card{z-index:80}
@keyframes realm-drift{to{transform:translateX(8%)}}@keyframes realm-rise{10%{opacity:.4}90%{opacity:0;transform:translateY(-150px)}}@keyframes portal-pulse{50%{opacity:.7;filter:brightness(1.18)}}@keyframes rune-turn{to{transform:rotate(360deg)}}@keyframes fracture-arrive{from{transform:scaleY(.05);opacity:0}to{transform:scaleY(1);opacity:.4}}
body[data-quality=low] .realm-fog,body[data-quality=low] .realm-dust{display:none}body[data-quality=low] .portal-core,body[data-quality=low] .portal-runes,body[data-quality=low] .veil-orb,.reduced-motion .realm *,.reduced-motion .portal-core,.reduced-motion .portal-runes,.reduced-motion .veil-orb,.reduced-motion .fracture-lines{animation:none!important}.reduced-motion .hand-card{transition:none!important}.reduced-motion .floating-number{animation:none;opacity:1}@media(min-height:950px){.battle-layout{max-height:950px;margin:auto}.battle-shell{display:grid;align-content:center}.realm{min-height:100%}}@media(max-width:375px){.battle-shell{padding-inline:7px}.hand .hand-card{width:72px}.hero h2{font-size:13px}.battle-hint{font-size:8px}.end-turn{font-size:10px;padding-inline:7px}.portal b{font-size:8px}.collection-card{height:225px}}@media(prefers-reduced-motion:reduce){body:not(.motion-override) .realm *,body:not(.motion-override) .portal-core,body:not(.motion-override) .portal-runes,body:not(.motion-override) .veil-orb{animation:none!important}}

.brand-type h1{font-size:inherit;margin:0;letter-spacing:inherit}.brand-type p{font:9px Arial;letter-spacing:4px;margin:10px 0}.brand-type>span{display:block;font-size:24px;margin-bottom:12px}

.prediction-mark{position:absolute;bottom:2px;right:3px;color:#ebd5aa;text-shadow:0 0 6px #ac8cd6;font-size:15px}.prediction-detail{border:1px solid #7c6a93;padding:10px;color:#ddc5ef;font:12px/1.5 Arial}.legendary .card-art:after,.mythic .card-art:after{content:"";position:absolute;inset:0;pointer-events:none;border-top:1px solid #d9bc8270;box-shadow:inset 0 1px 8px #c3a47820;animation:material-shimmer 7s ease-in-out infinite}.mythic .card-art:after{box-shadow:inset 0 0 18px #a58bcc33}@keyframes material-shimmer{50%{opacity:.3}}.reduced-motion .card-art:after,body[data-quality=low] .card-art:after{animation:none}

/* Reserve preview space inside the hand, never over the hero resource HUD. */
.hand{top:8px;height:119px}.selected-preview{top:0}.hand .hand-card.selected{transform:translateX(-50%) translateY(-10px) rotate(0) scale(1.03)}

.portal-choice{position:absolute;inset:17px 16% 43px;display:grid;place-content:center;background:#0e1420ed;color:#e8dcc9;font:8px/1.3 Arial;overflow:hidden;border-radius:40% 40% 3px 3px;padding:5px 2px}.portal:has(.portal-choice) .portal-symbol,.portal:has(.portal-choice) .portal-runes{visibility:hidden}
.hand .hand-card{animation:none}.hand-card .card-name,.board-card .card-name{min-height:0}.hand-card .card-type{min-height:0}

/* The arena owns its geometry. Intrinsic card/image size must never size its grid row. */
.battlefield{grid-template-rows:minmax(0,1fr);min-width:0}
.battlefield>.lane{height:100%;min-height:0;grid-template-rows:minmax(0,1fr) 13px minmax(0,1.35fr) 13px minmax(0,1fr)}
.lane-unit{min-width:0;overflow:hidden;contain:size layout}
.lane-unit>.board-card{flex:0 0 auto;max-width:93px}
.board-card .card-art,.hand-card .card-art{overflow:hidden;contain:size layout}
.hand-zone{min-height:0}.hand{min-height:0}.hand-heading{margin:0}
.selected-preview>b{max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 0.6.0 actions/statuses are overlays: they never participate in battlefield sizing. */
.tactics-modal{width:min(94vw,440px);max-height:85dvh;overflow:auto;box-sizing:border-box}
.unit-actions{display:grid;gap:8px}.unit-actions button{min-height:44px;white-space:normal;overflow-wrap:anywhere;text-align:left}
.combat-preview{padding:12px;border:1px solid #a491bf;border-radius:10px;background:#171421;margin:10px 0}
.combat-preview p{margin:6px 0}.combat-preview small{display:block;color:#d1bbdd;margin-top:8px}
.status-icons{position:absolute;right:2px;bottom:1px;display:flex;flex-wrap:wrap;justify-content:flex-end;max-width:100%;gap:1px;z-index:4}
.status-icons [data-status]{display:inline-grid;place-items:center;min-width:16px;height:18px;padding:0 2px;background:#15121eee;color:#eadff6;border-radius:4px;cursor:help;font-size:12px;line-height:1}
[data-status]:focus-visible{outline:2px solid #ead58b}.move-destination .portal{outline:2px solid #c8eac5;outline-offset:-2px}
.action-unavailable{padding:10px;border:1px solid #81718566;background:#14121bcc;font:12px/1.5 Arial;color:#c7b8cd}.action-unavailable small{display:block;margin-top:5px;color:#e2c89e}
body:has(#overlay.open){overflow:hidden}.inspect-modal>.modal-close{position:sticky;top:0;margin-left:auto;display:block;width:44px;height:44px;min-height:44px}
@media(hover:none),(pointer:coarse){
 .hand-zone .hand{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;touch-action:pan-x pan-y;overscroll-behavior-x:contain;position:relative;top:0;height:128px;padding:8px 3px;margin:0;scrollbar-width:thin;align-items:center}
 .hand-zone .hand .hand-card{position:relative;left:auto;top:auto;bottom:auto;flex:0 0 88px;width:88px;height:110px;margin:0;transform:none;touch-action:pan-x pan-y;transition:border-color .15s;z-index:auto}
 .hand-zone .hand .hand-card.selected,.hand-zone .hand .hand-card:hover{transform:none;border-color:#ebd09c;box-shadow:0 0 0 2px #d8b87980}
 .board-card{touch-action:pan-y}
}
/* Android: stable geometry during selection and a single painted scenery layer. */
@media(hover:none),(pointer:coarse){
 .battle-shell .battle-layout{height:max(760px,calc(100svh - env(safe-area-inset-top) - env(safe-area-inset-bottom)));min-height:760px;max-height:none;grid-template-rows:36px 72px 27px minmax(318px,1fr) 72px 153px 52px}
 .battle-shell .hand-zone{display:grid;grid-template-rows:23px 128px;align-content:start}
 .battle-shell>.realm:has(.world-battle-art){background-image:linear-gradient(#080c1466,#080c1444 45%,#080c1488),var(--battle-background);background-position:center;background-size:cover;background-repeat:no-repeat}
 .battle-shell>.realm:has(.world-battle-art)>*{display:none}
 .battle-shell .lane-unit{perspective:none;contain:layout}
 .battle-shell .card-art{contain:layout}
 .battle-shell .portal,.battle-shell .board-card,.battle-shell .mana-gems i{filter:none;backdrop-filter:none}
 .battle-shell .invalid-target .portal{opacity:1}.battle-shell .invalid-target .portal-frame{border-color:#655c66;box-shadow:none}
 .battle-shell .battlefield:before,.battle-shell .battlefield:after{display:none}
 #overlay{backdrop-filter:none;background:#080911ed}
}

/* Compact post-battle report shared by solo, campaign and online matches. */
.result-modal{max-width:460px;padding:28px 24px}.result-modal .result-sigil{font-size:72px;line-height:.9}.result-modal h1{font-size:38px;margin:12px 0}
.result-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:20px 0 10px}
.result-summary>div{display:grid;place-content:center;min-height:72px;padding:8px 5px;border:1px solid #806d8f66;border-radius:8px;background:linear-gradient(145deg,#2e2639aa,#12111aaa)}
.result-summary small{font:9px/1.25 Arial,sans-serif;color:#aa9bb3;text-transform:uppercase;letter-spacing:.6px}.result-summary b{margin-top:7px;font-size:20px;font-weight:400;color:#e4cfaa}
.result-modal .result-footnote{margin:5px 0 17px;font-size:11px;color:#a99cad}.result-actions button{min-height:44px}
@media(max-width:420px){.result-modal{padding:22px 17px}.result-modal .result-sigil{font-size:58px}.result-modal h1{font-size:32px}.result-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.result-summary>div{min-height:62px}}

.quest>span small{display:block;margin-top:4px;color:#d5bd91;font-size:10px}.deck-row.locked-card{opacity:.58}.deck-row.locked-card .deck-portrait{filter:grayscale(.8) brightness(.55)}
.combat-streak{position:fixed;z-index:9000;height:3px;border-radius:50%;pointer-events:none;transform-origin:0 50%}.combat-streak.heavy{height:7px;clip-path:polygon(0 35%,88% 0,100% 50%,88% 100%,0 65%)}.combat-streak.shard{height:2px;background-image:linear-gradient(90deg,transparent,currentColor)}.combat-streak.phase{height:9px;filter:blur(2px);opacity:.65}.combat-streak.rift{height:5px;clip-path:polygon(0 0,38% 38%,55% 5%,72% 60%,100% 30%,100% 70%,72% 100%,55% 45%,38% 78%,0 100%)}.healing-sigil{position:fixed;z-index:9000;width:70px;height:70px;border:2px solid;border-radius:50%;pointer-events:none}.healing-sigil:before,.healing-sigil:after{content:"";position:absolute;inset:11px;border:1px solid currentColor;transform:rotate(45deg)}.healing-sigil:after{inset:23px;border-radius:50%}

/* Battle 3.0 — full-art cards and horizontal Veil rifts. */
.battle-shell{background:#070912}.battle-layout:after{content:"";position:absolute;inset:135px -9px 216px;z-index:-1;pointer-events:none;background:linear-gradient(90deg,#05070bbb,transparent 16% 84%,#05070bbb),linear-gradient(180deg,#05070b88,transparent 14% 84%,#05070baa);border-block:1px solid #a6937650;box-shadow:inset 0 18px 36px #0008,inset 0 -18px 36px #0008}.battle-header{border-bottom:1px solid #b59a7042;background:linear-gradient(90deg,transparent,#121725cc 18% 82%,transparent)}.battle-wordmark{color:#eadcc1;text-shadow:0 1px 12px #000}.hero,.hero.player{border:1px solid #9c896044;border-inline:0;background:linear-gradient(90deg,#0b0e17e8,#201c27c7 58%,#0b0e1755);box-shadow:inset 0 1px #ffffff08,0 5px 18px #0006}.hero.player{background:linear-gradient(90deg,#0b0e17e8,#171b29d9 58%,#0b0e1755)}.portrait,.player-portrait,.enemy-portrait{border-radius:5px;border:1px solid #c1a875;box-shadow:inset 0 0 0 2px #090b12,0 3px 12px #000}.hero-hp{clip-path:polygon(50% 0,94% 20%,86% 80%,50% 100%,14% 80%,6% 20%);background:radial-gradient(circle at 50% 36%,#773c49,#26131d 72%);border:0;filter:drop-shadow(0 2px 4px #000);text-shadow:0 0 12px #ff6d7b55}.turn-strip{border-block:1px solid #8f7d5b3b;background:linear-gradient(90deg,#080b12aa,#1d1922e6 50%,#080b12aa);letter-spacing:.4px}.arena{grid-template-columns:minmax(0,1fr) 30px}.anomaly-banner{color:#d7c8e3;letter-spacing:.5px;text-shadow:0 1px 8px #000}.battlefield{gap:7px}.battlefield:before,.battlefield:after{left:-2px;right:-2px;height:29%;border:1px solid #aa93674a;background:linear-gradient(180deg,#080b12cc,#20212a70);clip-path:polygon(5% 0,95% 0,100% 90%,92% 100%,8% 100%,0 90%);box-shadow:inset 0 0 20px #0008,0 9px 24px #0008}.battlefield:before{transform:perspective(300px) rotateX(-2deg)}.battlefield:after{transform:perspective(300px) rotateX(2deg)}
.battlefield>.lane{grid-template-rows:minmax(0,1fr) 12px 94px 12px minmax(0,1fr);border-radius:8px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--portal-color) 5%,transparent),transparent)}.lane:after{content:"";position:absolute;left:12%;right:12%;top:50%;height:1px;background:linear-gradient(90deg,transparent,var(--portal-color),transparent);opacity:.42;box-shadow:0 0 12px var(--portal-color);pointer-events:none}.empty-slot{width:88%;height:77%;max-height:84px;border-radius:5px;border:1px dashed #ac9a7650;background:linear-gradient(145deg,#15182455,#06080e33);box-shadow:inset 0 0 20px #0005}.empty-slot>span{color:#d2bd8d40}.lane-unit{perspective:none}.attachments{z-index:5}.attachment{border-radius:2px;border:1px solid #88775955;background:#0a0d15e8;color:#d8c8d9}
.portal{height:94px;display:block;padding:0;overflow:visible;color:var(--portal-color)}.portal-frame{inset:5px 10% 19px;border:1px solid color-mix(in srgb,var(--portal-color) 66%,#d9c69e);border-radius:50%;background:radial-gradient(ellipse at 50% 50%,#090c17 0 35%,color-mix(in srgb,var(--portal-color) 18%,#080a12) 62%,#05070b 73%);box-shadow:inset 0 0 0 4px #06080d,inset 0 0 22px color-mix(in srgb,var(--portal-color) 40%,transparent),0 0 0 3px #7f71524a,0 0 22px color-mix(in srgb,var(--portal-color) 28%,transparent);transform:perspective(180px) rotateX(17deg)}.portal-frame:before{inset:7px;border:1px dashed color-mix(in srgb,var(--portal-color) 62%,transparent);border-radius:50%;box-shadow:0 0 9px color-mix(in srgb,var(--portal-color) 34%,transparent)}.portal-frame:after{display:none}.portal-core{inset:18px 25% 31px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--portal-color) 52%,#fff) 0 3%,color-mix(in srgb,var(--portal-color) 44%,transparent) 10%,#090c18 64%);box-shadow:0 0 18px color-mix(in srgb,var(--portal-color) 46%,transparent),inset 0 0 12px #000;transform:perspective(180px) rotateX(17deg)}.portal-runes{top:18px;left:calc(50% - 24px);width:48px;height:32px;line-height:32px;border-radius:50%;font-size:8px}.portal-symbol{top:25px;left:0;right:0;font-size:22px;line-height:1}.portal-power{left:7px;top:6px;bottom:auto;min-width:26px;padding:2px 4px;border:1px solid #9c89665c;border-radius:9px;background:#080b13df;font-size:11px}.portal-power small{font-size:8px}.portal>b{position:absolute;left:0;right:0;bottom:4px;line-height:12px;margin:0;font-size:9px;letter-spacing:1.2px;color:#eee1c9;text-shadow:0 1px 4px #000}.portal-boon{position:absolute;left:12%;right:12%;bottom:-8px;z-index:4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:6.5px/10px Arial;color:#bdafbe;letter-spacing:.15px}.portal-status{right:6px;top:7px;bottom:auto;min-width:15px}.portal em{right:5px;bottom:17px;border-color:#d8c092;background:#241d2bef;color:#f3dfbb}.portal-choice{inset:13px 17% 22px;border-radius:50%;font-size:7px;line-height:1.15;background:#0a0e18f2}.valid-target{background:radial-gradient(ellipse at 50% 50%,color-mix(in srgb,var(--portal-color) 17%,transparent),transparent 74%)}.valid-target .portal-frame{border-color:#f3dfb0;box-shadow:inset 0 0 0 4px #06080d,inset 0 0 24px var(--portal-color),0 0 0 3px #c7b78a80,0 0 32px var(--portal-color)}.drag-target .portal-frame{transform:perspective(180px) rotateX(17deg) scale(1.05)}.invalid-target .portal{opacity:.56}.portal-frozen .portal-frame{background:repeating-radial-gradient(ellipse,#b9eaff50 0 1px,#142537 2px 8px)}
.veil-artifact{border-left:1px solid #9a7f9b40;background:linear-gradient(90deg,#0a0c14aa,#2f203a9c);box-shadow:inset 8px 0 18px #0005}.veil-spine{border:0;width:12px;padding:2px;background:#090b13aa}.veil-spine i{border:1px solid #775a7c;background:#211b2b}.veil-spine .lit{border-color:#d0a6ee;background:#a763d0}.veil-name{color:#bca7c7}
/* Compact battle cards use the art as the whole card instead of a tiny framed window. */
.card.board-card,.hand .hand-card{display:block;padding:2px;border-radius:6px;background:#080a11;box-shadow:inset 0 0 0 1px #06070b,0 4px 11px #000b;border-color:color-mix(in srgb,var(--accent) 72%,#8d7759)}.card.board-card{width:92%;max-width:96px;height:94%;max-height:112px;transform:none}.hand .hand-card{height:116px;width:82px}.board-card .card-art,.hand-card .card-art{position:absolute;inset:2px;height:auto;border-radius:4px}.board-card .card-art:after,.hand-card .card-art:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 43%,#090a10b8 63%,#07080df5 100%);box-shadow:inset 0 0 0 1px #ffffff0c}.board-card .card-art img,.hand-card .card-art img{height:100%;object-position:center 24%}.board-card .card-name,.hand-card .card-name{position:absolute;z-index:4;left:4px;right:4px;bottom:23px;height:auto;line-height:12px;padding:0 2px;font-size:8px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff0d1;text-shadow:0 1px 3px #000,0 0 5px #000}.board-card .card-stats,.hand-card .card-stats{position:absolute;z-index:4;left:4px;right:4px;bottom:3px;height:19px;padding:0;display:flex}.board-card .card-stats b,.hand-card .card-stats b{display:grid;place-items:center;width:20px;min-width:20px;height:19px;line-height:1;border-radius:50%;font:600 12px Arial;background:#12141ce8;box-shadow:0 1px 4px #000}.board-card .card-stats .atk,.hand-card .card-stats .atk{border-color:#c0a263;color:#f5ddb0}.board-card .card-stats .health,.hand-card .card-stats .health{border-color:#b66b79;color:#ffd1d6}.board-card .card-stats span,.hand-card .card-stats span{opacity:.4;font-size:10px}.board-card .card-type,.hand-card .card-type{position:absolute;z-index:4;left:4px;right:4px;bottom:4px;min-height:0;padding:2px;font-size:7px;line-height:13px;background:#090b12d9;color:#dbc7a8;border-top:1px solid #8d795044}.board-card .cost,.hand-card .cost{top:4px;left:4px;width:22px;height:22px;border-radius:50%;font:600 13px Arial;background:radial-gradient(circle at 35% 25%,#537399,#172236 70%);box-shadow:0 1px 6px #000}.board-card .faction-mark,.hand-card .faction-mark{top:4px;right:4px;width:20px;height:20px;border:0;background:#080a11d9;color:var(--accent)}.board-card.ready{border-color:#b8d6a4;box-shadow:0 0 0 1px #a8d99370,0 0 16px #90be7550}.board-card.frozen{border-color:#9fcfea}.unit-status{height:8px;line-height:8px;color:#d0c5d2;text-shadow:0 1px 3px #000}.status-icons{right:3px;bottom:23px}.status-icons [data-status]{min-width:14px;height:15px;font-size:10px;background:#080a11e8}
.hand-zone{border-top:1px solid #9c896047;background:linear-gradient(180deg,#080a1199,#11121be8)}.hand-heading{padding:0 4px;letter-spacing:.5px}.hand{top:0;height:127px;padding-top:7px}.hand .hand-card.selected{transform:translateX(-50%) translateY(-9px) rotate(0) scale(1.04);border-color:#f0d699;box-shadow:0 0 0 1px #f0d69988,0 5px 20px #000}.battle-actions{border-top:1px solid #9e89614a;background:#090b13e8}.end-turn{background:linear-gradient(135deg,#6e5536,#3c2d32 58%,#272332);border-color:#c2a36f;color:#f1dfc0;box-shadow:inset 0 0 0 2px #130f1280,0 3px 10px #0008}
@media(hover:none),(pointer:coarse){.battle-shell .battle-layout{grid-template-rows:36px 72px 27px minmax(318px,1fr) 72px 153px 52px}.hand-zone .hand{height:128px;padding:6px 4px;gap:7px}.hand-zone .hand .hand-card{flex-basis:88px;width:88px;height:116px}.battle-shell .portal-frame,.battle-shell .portal-core{filter:none}.battle-shell .battlefield:before,.battle-shell .battlefield:after{display:block}.battle-shell .card.board-card{height:92%}}
@media(max-width:375px){.battlefield{gap:4px}.battlefield>.lane{grid-template-rows:minmax(0,1fr) 12px 90px 12px minmax(0,1fr)}.portal{height:90px}.portal-frame{left:8%;right:8%}.portal-boon{font-size:6px}.hand-zone .hand .hand-card{flex-basis:82px;width:82px}}
