/* 十殿阎罗 PvE 联机：大厅 / 房间 / 牌桌。
   牌桌骨架与牌面全部复用 landlord.css 的 .ll2-*，这里只在 .ll2-shell.ll2-raid 作用域内
   补 raid 专属样式（身份牌、装备/判定微缩、翻面、AI 标记、7~8 座紧凑布局），绝不改动斗地主。 */
body.raid-open{overflow:hidden;overscroll-behavior:none}
/* 大厅入口磁贴与 game.css 的 .arena-tile 同族；放在这里可以只部署本次文件。
   入口目前是关闭状态（见 game.js 竞技页注释），恢复时把磁贴按钮加回去即可。 */
.arena-tile.raid{border-color:#b98a5a;background:linear-gradient(145deg,#4a2438,#2a1c30);box-shadow:0 4px 0 #1d1020}
.raid-overlay{position:fixed;z-index:1001;inset:0;background:#080c0d;overflow:hidden;overscroll-behavior:none}
.raid-overlay[hidden]{display:none!important}
.raid-stage{width:100%;height:100%;position:relative;container-type:size}
body.raid-open .toast{z-index:1100}
.ll2-shell.ll2-raid .raid-confirmation{z-index:60}
.ll2-shell.ll2-raid .raid-confirmation article{width:min(420px,88vw)}
.ll2-shell.ll2-raid .raid-confirmation .ll2-buttons button{min-height:40px;min-width:90px}
/* 牌桌打开时主页在背后空转，停掉动画省电。 */
body.raid-open #game{visibility:hidden;content-visibility:hidden}
body.raid-open #game *{animation-play-state:paused!important}

/* —— 大厅 / 房间（不是牌桌，保留 raid 自己的面板样式）—— */
/* —— 大厅 / 房间页（PC 与手机同一套）——
   原来 align-content:start 让两块面板贴在左上、下面空一大片背景，超宽屏上聊天面板还会被
   拉到 2000px 以上。现在：面板撑满可用高度、内容限宽居中、座位卡里的按钮允许收缩换行
   （原来两个 min-width:76px 的按钮塞进 ~110px 的座位卡，被挤出卡片外压到面板边框上）。 */
.raid-hall{flex:1;min-height:0;overflow:auto;display:grid;align-content:stretch;gap:12px;padding:14px;width:100%;max-width:1440px;margin:0 auto;grid-template-columns:minmax(300px,380px) minmax(0,1fr);grid-template-rows:minmax(min-content,1fr);grid-auto-rows:minmax(min-content,1fr)}
.raid-panel{border:1px solid #6a7a6a55;border-radius:8px;background:#0e1618cc;padding:12px 14px;min-width:0;min-height:0;display:flex;flex-direction:column}
/* 矮屏允许大厅滚动，不能压缩座位网格，让卡片溢出遮住重开/准备按钮。 */
.raid-panel>*{flex-shrink:0}
.raid-panel h2{margin:0 0 8px;font:700 17px 'STKaiti','KaiTi',serif;letter-spacing:2px;color:#ead4a0}
.raid-panel p{margin:0 0 8px;font-size:12px;line-height:1.6;color:#a9b3ac}
.raid-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.raid-row input,.raid-row select{min-height:34px;padding:4px 8px;border:1px solid #8d7a55;border-radius:4px;background:#101819;color:#f2e5c8;font:inherit;min-width:0}
.raid-room-list{display:flex;flex-direction:column;gap:8px;max-height:52dvh;overflow:auto}
.raid-room{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid #7d6a4655;border-radius:6px;background:#111c1e99}
.raid-room b{color:#ffe6b4;font-size:13px}
.raid-room small{margin-right:auto;color:#b4bcb4;font-size:11px}
.raid-seats{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:10px;min-height:0}
/* 座位卡复用 .ll2-person 的观感，但宽度由网格决定，不能沿用 --portrait。 */
.ll2-shell.ll2-raid .raid-seat{width:auto;min-width:0;padding:8px;border:1px solid #7f8f7f55;border-radius:8px;background:#0f191bcc;display:flex;flex-direction:column;gap:5px}
.ll2-shell.ll2-raid .raid-seat.mine{border-color:#e2cd88;box-shadow:0 0 0 1px #e2cd8855}
.ll2-shell.ll2-raid .raid-seat.dead{border-style:dashed;filter:none;color:#8e9a90}
/* 座位卡里的操作按钮：不设最小宽度、允许一行两个换行，绝不再溢出卡片。 */
.ll2-shell.ll2-raid .raid-seat .ll2-buttons{flex-wrap:wrap;gap:6px;justify-content:stretch;margin-top:auto}
.ll2-shell.ll2-raid .raid-seat .ll2-buttons button{min-width:0;flex:1 1 42%;padding:4px 6px;font-size:11px;min-height:28px}
/* 「开始对局 / 准备」这类面板级按钮贴在面板底部。 */
.ll2-shell.ll2-raid .raid-panel>.ll2-buttons{margin-top:auto;justify-content:flex-start}
.raid-seat-face{width:100%;height:clamp(58px,11dvh,86px);display:grid;place-items:center;border-radius:6px;border:1px solid #6f7a6c;background:radial-gradient(circle at 50% 30%,#25342f,#101819);font:700 22px 'STKaiti','KaiTi',serif;color:#e8d9b2}
.raid-seat-name{font-size:12px;color:#e3ddc8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.raid-seat-tags{display:flex;flex-wrap:wrap;gap:4px;min-height:18px}
.raid-badge{display:inline-block;padding:1px 6px;border-radius:8px;font-size:10px;border:1px solid #9dbb92;background:#26402f;color:#ddf3cf}
.raid-badge.host{border-color:#d5a369;background:#6c2a21;color:#ffe0aa}
.raid-badge.ready{border-color:#8fb8d5;background:#233b4d;color:#d8ecff}
.raid-invite{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;font-size:12px;color:#c9c2a8}
.raid-invite b{font:700 18px/1 system-ui;letter-spacing:5px;color:#ffe0a5;background:#1a2a2c;border:1px dashed #c3a464;border-radius:6px;padding:5px 9px}
.raid-chat{display:flex;flex-direction:column;min-height:0}
.raid-chat-log{flex:1;min-height:96px;overflow:auto;background:#0b1214aa;border:1px solid #56655a55;border-radius:6px;padding:6px 8px;font-size:12px;color:#cfd8cd;margin-bottom:8px}
.raid-chat-log div{margin-bottom:2px}
.raid-chat-log b{color:#ffe0a5}


/* Official-style perimeter table. All geometry is relative to the usable
   viewport; seven/eight-seat encounters retain two left seats, not a tiny row. */
.ll2-shell.ll2-raid{--portrait:min(18.2cqh,13vw);--ally:var(--portrait);--own:var(--portrait);--cw:min(15.3cqh,9.5vw);--ch:calc(var(--cw)*130/93);--dock:25cqh;--left:min(17cqh,12vw);--right:calc(var(--portrait) + 10cqh);--ui:clamp(10px,1.65cqh,16px);font-size:var(--ui);height:100%;background:#292b35 url('/sanguosha/assets/raid/ol-table.jpg') center/cover}
.ll2-shell.ll2-raid .ll2-header{height:4.2cqh;min-height:24px;padding:0 1.2%;gap:12px;background:linear-gradient(#14191dc9,#1e20256b);border-color:#b8a1774d}
.ll2-shell.ll2-raid .ll2-header>b{font-size:clamp(14px,2.7cqh,25px)}
.ll2-shell.ll2-raid .ll2-header>span{font-size:clamp(9px,1.35cqh,13px);overflow:hidden;text-overflow:ellipsis}
.ll2-shell.ll2-raid .ll2-header nav{gap:4px}
.ll2-shell.ll2-raid .ll2-header button{font-size:clamp(10px,1.5cqh,14px);min-height:22px;height:3.3cqh;padding:0 8px}
.ll2-shell.ll2-raid .ll2-header nav button[data-rd-forfeit]{border-color:#c8794f;color:#ffd9b8}
.ll2-shell.ll2-raid .ll2-table{grid-template-rows:minmax(0,1fr) var(--dock)}
.ll2-shell.ll2-raid .ll2-opponents,.ll2-shell.ll2-raid .ll2-allies{position:absolute;inset:0;display:block;pointer-events:none;z-index:2}
.ll2-shell.ll2-raid .ll2-opponents .raid-unit,.ll2-shell.ll2-raid .ll2-allies .raid-unit{position:absolute;pointer-events:auto}
.ll2-shell.ll2-raid .ll2-allies .ll2-person{width:var(--ally)}
/* Slots follow the living table's fixed seat ring: self at bottom-right,
   next seat right-bottom, then right-top, across the top, down the left.
   Dead portraits retain their slot; only the rules remove them from distance. */
.ll2-shell.ll2-raid .ll2-battlefield .raid-unit[data-rd-slot="0"]{right:2.6%;bottom:7%}
.ll2-shell.ll2-raid .ll2-battlefield .raid-unit[data-rd-slot="1"]{right:2.6%;top:3%}
.ll2-shell.ll2-raid .ll2-battlefield .raid-unit[data-rd-slot="2"]{left:53%;top:2%}
.ll2-shell.ll2-raid .ll2-battlefield .raid-unit[data-rd-slot="3"]{left:34%;top:2%}
.ll2-shell.ll2-raid .ll2-battlefield .raid-unit[data-rd-slot="4"]{left:2.6%;top:18%}
.ll2-shell.ll2-raid .ll2-battlefield .raid-unit[data-rd-slot="5"]{left:2.6%;bottom:7%}
.ll2-shell.ll2-raid .raid-seats-8 .raid-unit[data-rd-slot="2"]{left:62%;top:2%}
.ll2-shell.ll2-raid .raid-seats-8 .raid-unit[data-rd-slot="3"]{left:43%;top:2%}
.ll2-shell.ll2-raid .raid-seats-8 .raid-unit[data-rd-slot="4"]{left:24%;top:2%}
.ll2-shell.ll2-raid .raid-seats-8 .raid-unit[data-rd-slot="5"]{left:2.6%;top:18%;bottom:auto}
.ll2-shell.ll2-raid .raid-seats-8 .raid-unit[data-rd-slot="6"]{left:2.6%;bottom:7%}
.ll2-shell.ll2-raid .raid-seats-6 .raid-unit[data-rd-slot="0"],.ll2-shell.ll2-raid .raid-seats-5 .raid-unit[data-rd-slot="0"]{right:2.6%;top:34%;bottom:auto}
.ll2-shell.ll2-raid .raid-seats-6 .raid-unit[data-rd-slot="1"],.ll2-shell.ll2-raid .raid-seats-5 .raid-unit[data-rd-slot="1"]{left:65%;right:auto;top:2%}
.ll2-shell.ll2-raid .raid-seats-6 .raid-unit[data-rd-slot="2"]{left:47%;top:2%}
.ll2-shell.ll2-raid .raid-seats-6 .raid-unit[data-rd-slot="3"]{left:29%;top:2%}
.ll2-shell.ll2-raid .raid-seats-6 .raid-unit[data-rd-slot="4"]{left:2.6%;top:34%}
.ll2-shell.ll2-raid .raid-seats-5 .raid-unit[data-rd-slot="2"]{left:40%;top:2%}
.ll2-shell.ll2-raid .raid-seats-5 .raid-unit[data-rd-slot="3"]{left:2.6%;top:34%}
/* Large art, in-card health, a vertical nameplate and compact equipment rails. */
.ll2-shell.ll2-raid .raid-unit{width:var(--portrait);--frame:#b39462}
.ll2-shell.ll2-raid .raid-unit .ll2-portrait,.ll2-shell.ll2-raid .ll2-own .ll2-portrait{height:calc(var(--portrait)*1.36);border:2px solid var(--frame);border-radius:2px;background-size:cover;background-position:center 20%;box-shadow:inset 0 0 0 2px #251b11,0 3px 7px #000b;overflow:visible}
.ll2-shell.ll2-raid .raid-boss{--frame:#d1ba6f}
.ll2-shell.ll2-raid .raid-minion{--frame:#9d9389}
.ll2-shell.ll2-raid .raid-mengpo{--frame:#ba97c0}
.ll2-shell.ll2-raid .raid-ally,.ll2-shell.ll2-raid .raid-hero{--frame:#dbc681}
.ll2-shell.ll2-raid .raid-unit .ll2-portrait::after{content:'';position:absolute;inset:1px;border:1px solid #d6bd785e;pointer-events:none}
.ll2-shell.ll2-raid .raid-unit .ll2-role{left:auto;right:-5px;top:3px;writing-mode:horizontal-tb;letter-spacing:0;width:2.6em;white-space:normal;padding:3px 2px;border-radius:50%;font:700 clamp(10px,1.8cqh,17px)/1.05 'STKaiti','KaiTi',serif;box-shadow:0 1px 4px #000a;border-color:#d9cbae}
.ll2-shell.ll2-raid .ll2-role.ally{background:#ead6b1;color:#865f36}
.ll2-shell.ll2-raid .ll2-role.hero{background:#ead6b1;color:#865f36}
.ll2-shell.ll2-raid .ll2-role.minion{background:#dce1c5;color:#438256}
.ll2-shell.ll2-raid .ll2-role.lord{background:#e1d9a6;color:#3c773a}
.ll2-shell.ll2-raid .ll2-role.mengpo{background:#e2cde7;color:#764a86}
.ll2-shell.ll2-raid .ll2-opponent-name{left:-3px;top:8%;max-height:77%;min-height:0;padding:5px 3px;border-radius:1px;border-color:var(--frame);background:linear-gradient(90deg,#142420f5,#19251ecc);font-size:clamp(11px,2.3cqh,22px);line-height:1.05;letter-spacing:1px;pointer-events:none}
.ll2-shell.ll2-raid .raid-unit .ll2-vitals{position:absolute;right:3px;bottom:6px;width:20%;display:flex;flex-direction:column;align-items:center;gap:3px;padding:0;margin:0;background:transparent;pointer-events:none}
.ll2-shell.ll2-raid .raid-unit.opponent .ll2-opponent-name{left:calc(-1em - 3px)}
.ll2-shell.ll2-raid .raid-unit.opponent .ll2-vitals{right:-2cqh}
.ll2-shell.ll2-raid .raid-unit .ll2-hearts{display:flex;flex-direction:column-reverse;align-items:center;gap:1px;font-size:inherit;line-height:1}
.ll2-shell.ll2-raid .raid-unit .ll2-hearts .raid-hp-pip{display:block;flex:none;width:clamp(6px,1.8cqh,17px);height:clamp(6px,1.8cqh,17px);margin:0;border-radius:60% 55% 65% 35%;border:1px solid #315b21;background:radial-gradient(circle at 32% 25%,#e3f99d 1%,#83d13e 28%,#3a831c 58%,#1e4811 78%);box-shadow:0 1px 2px #000b}
.ll2-shell.ll2-raid .raid-unit .ll2-hearts .raid-hp-pip.empty{background:#243025a8;border-color:#a1ab7777;box-shadow:none}
.ll2-shell.ll2-raid .raid-unit .ll2-hearts .raid-hp-pip.low{background:radial-gradient(circle at 32% 25%,#ffdab0,#e95c39 40%,#821e18 78%);border-color:#6f291e}
.ll2-shell.ll2-raid .ll2-hearts em{font:700 clamp(9px,1.55cqh,15px)/1.1 Georgia,serif;color:#eee3c7;text-shadow:1px 1px 2px #000;order:-1}
.ll2-shell.ll2-raid .raid-hand-count{position:absolute;right:calc(var(--portrait)*.73);bottom:0;padding:0 3px;color:#fff1d2;background:#1a211caa;font:700 clamp(13px,2.8cqh,26px)/1 Georgia,serif;text-shadow:1px 1px 2px #000}
.ll2-shell.ll2-raid .raid-seat-tag{position:absolute;bottom:-2.8cqh;left:0;right:0;text-align:center;color:#e9e3d1;font:clamp(10px,1.6cqh,15px)/1.3 serif;text-shadow:0 1px 2px #000}
.ll2-shell.ll2-raid .raid-nick{display:none}
.ll2-shell.ll2-raid .raid-gear{position:absolute;left:2px;right:2px;bottom:12%;display:flex;flex-direction:column;gap:1px;pointer-events:none;z-index:5}
.ll2-shell.ll2-raid .raid-gear-chip{display:flex;align-items:center;gap:2px;padding:1px 2px;white-space:normal;background:linear-gradient(90deg,#eee2baf2,#b7ad86ed);border:1px solid #51422c;color:#29281f;font:700 clamp(9px,1.35cqh,13px)/1.15 serif;text-shadow:0 1px #fff4}
.ll2-shell.ll2-raid .raid-gear-chip b{flex:1;min-width:0;overflow-wrap:anywhere;text-align:center;font:inherit}
.ll2-shell.ll2-raid .raid-gear-chip i{flex:none;font:inherit}
.ll2-shell.ll2-raid .raid-gear-chip small{flex:none;font:inherit;font-size:.85em}
.ll2-shell.ll2-raid .raid-equip-icon{flex:none;width:clamp(12px,2.8cqh,24px);height:clamp(10px,2.4cqh,20px);object-fit:cover;object-position:left center;border-radius:1px}
.ll2-shell.ll2-raid .raid-judge-chip{background:#292a25df;color:#f3d5ae;border-color:#c4966a}
.ll2-shell.ll2-raid .raid-ai{position:absolute;right:0;bottom:0;transform:translateY(120%);font-size:9px;color:#f0d6ad;white-space:nowrap}
.ll2-shell.ll2-raid .raid-unit.active::before{content:'';left:-5px;right:-5px;top:-5px;bottom:-5px;transform:none;background:transparent;border:2px solid #d6a85c;box-shadow:0 0 14px #e6973b9c,inset 0 0 9px #edbd6166;pointer-events:none}
.ll2-shell.ll2-raid .raid-unit.active .ll2-portrait{box-shadow:0 0 10px #eb99478a}
.ll2-shell.ll2-raid .raid-unit.targeted .ll2-portrait{border-color:#ffe278;box-shadow:0 0 0 3px #bf8634,0 0 20px #ffc254}
.ll2-shell.ll2-raid .raid-unit .ll2-portrait.can-target{border-color:#edd39a;box-shadow:0 0 7px #ecb75d}
.ll2-shell.ll2-raid .ll2-dead{color:#cd4238;font-size:clamp(18px,4cqh,36px)}
.ll2-shell.ll2-raid .raid-flip,.ll2-shell.ll2-raid .raid-forbidden{position:absolute;left:15%;right:15%;top:45%;background:#24152bcc;color:#f5deca;font-size:clamp(9px,1.65cqh,15px);text-align:center;border-block:1px solid #b48a72}
.ll2-shell.ll2-raid .raid-forbidden{top:29%}
/* The pile and event objective occupy the corners, never the combat center. */
.ll2-shell.ll2-raid .ll2-phase{left:auto;right:calc(2.6% + var(--portrait) + 12px);top:1%;transform:none;display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:clamp(9px,1.8cqh,17px);z-index:1}
.ll2-shell.ll2-raid .ll2-phase b{font:700 clamp(13px,2.6cqh,24px) Georgia,serif;letter-spacing:0;border:0;padding:0}
.ll2-shell.ll2-raid .ll2-phase small{font-size:clamp(8px,1.5cqh,14px)}
.ll2-shell.ll2-raid .raid-deck{display:flex;align-items:center;gap:6px;background:#17191d77;padding:3px 8px}
.ll2-shell.ll2-raid .raid-event{position:absolute;z-index:3;left:2.4%;top:2%;width:19%;max-width:250px;max-height:16%;overflow:hidden;padding:5px 8px;background:linear-gradient(120deg,#211e18df,#302618ae);border:1px solid #9c885960;border-radius:2px;color:#e4d1a5}
.ll2-shell.ll2-raid .raid-event b{display:block;font:700 clamp(10px,1.9cqh,18px)/1.2 serif;text-align:center}
.ll2-shell.ll2-raid .raid-event span{display:block;font-size:clamp(8px,1.4cqh,13px);line-height:1.25;margin:3px 0}
.ll2-shell.ll2-raid .raid-event small{display:block;text-align:center;font-size:clamp(8px,1.3cqh,12px);color:#aeca92}
.ll2-shell.ll2-raid .raid-count-3 .raid-event{max-height:26%}
.ll2-shell.ll2-raid .raid-table-pile{position:absolute;left:23%;right:23%;top:48%;height:29%;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:1}
.ll2-shell.ll2-raid .ll2-table-cards{gap:5px;opacity:1;visibility:visible!important}
.ll2-shell.ll2-raid .ll2-table-cards>div{position:relative;gap:0}
.ll2-shell.ll2-raid .ll2-table-cards .ll2-card{--card-width:calc(var(--cw)*.86);filter:brightness(.94)}
.ll2-shell.ll2-raid .ll2-table-cards small{position:absolute;bottom:0;left:0;right:0;max-width:none;background:#211f19ca;text-align:center;white-space:normal;color:#fff1cf;font-size:clamp(8px,1.55cqh,14px);line-height:1.1;padding:3px 1px}
.ll2-shell.ll2-raid .ll2-center{left:21%;right:21%;top:42%;bottom:16%;padding:0;align-items:center;z-index:6}
.ll2-shell.ll2-raid .ll2-center:has(.ll2-choice-board){background:#131b20e6;border:1px solid #b59760;border-radius:5px;pointer-events:auto}
.ll2-shell.ll2-raid .ll2-choice-board{max-height:100%;overflow:auto;padding:6px;max-width:100%}
.ll2-shell.ll2-raid .ll2-options{padding:5px;gap:6px}
.ll2-shell.ll2-raid .ll2-choice-board .ll2-card{--card-width:calc(var(--cw)*.75)}
.ll2-shell.ll2-raid .ll2-controls{bottom:calc(var(--dock) + .8cqh);left:21%;right:21%;gap:5px;z-index:7}
.ll2-shell.ll2-raid .ll2-prompt{background:#151b1f9e;gap:8px;padding:2px 8px;flex-wrap:wrap;max-width:100%}
.ll2-shell.ll2-raid .ll2-prompt>b{font-size:clamp(10px,1.7cqh,16px)}
.ll2-shell.ll2-raid .ll2-prompt small{font-size:clamp(9px,1.45cqh,13px);max-width:100%;-webkit-line-clamp:1}
.ll2-shell.ll2-raid .ll2-controls .ll2-buttons button{min-width:10cqh;height:5.5cqh;min-height:25px;font:700 clamp(12px,2.2cqh,21px) 'STKaiti','KaiTi',serif;letter-spacing:2px;padding:2px 14px;border-radius:3px;background:linear-gradient(#795635,#4c311d);border-color:#b9945c}
.ll2-shell.ll2-raid .ll2-controls button.confirm{min-width:16cqh;background:linear-gradient(#b76436,#9d4027);box-shadow:inset 0 0 8px #edb67266,0 2px 4px #0007}
.ll2-shell.ll2-raid .raid-turn-phase{position:absolute;bottom:1%;left:calc(2.6% + var(--portrait) + 16px);font:700 clamp(11px,2.1cqh,20px) 'STKaiti','KaiTi',serif;color:#e5c783;text-shadow:0 1px 3px #000}
.ll2-shell.ll2-raid .raid-timer{color:#efce84;white-space:nowrap}
.ll2-shell.ll2-raid .raid-timer.warn{color:#ff996f}
/* Bottom hand rail: full-height cards with adaptive overlap and stable keys. */
.ll2-shell.ll2-raid .ll2-bottom{grid-template-columns:var(--left) minmax(0,1fr) var(--right);gap:1.2%;padding:0 2.6% .9cqh;border-top:1px solid #b9a06c66;background:linear-gradient(#0d111bc9,#12141fdb)}
.ll2-shell.ll2-raid .ll2-equipment{max-width:none;padding-bottom:1cqh}
.ll2-shell.ll2-raid{--left:clamp(112px,22cqh,205px)}
.ll2-shell.ll2-raid .ll2-equipment header{font-size:clamp(8px,1.35cqh,12px)}
.ll2-shell.ll2-raid .ll2-equipment header small{display:none}
.ll2-shell.ll2-raid .ll2-equipment>button{height:auto;min-height:3.8cqh;margin:3px 0;font-size:clamp(10px,1.6cqh,15px);padding:2px 4px;gap:3px;border-radius:1px;background:#382f229e;white-space:normal;overflow:visible}
.ll2-shell.ll2-raid .ll2-equipment b{flex:1;min-width:0;white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;font-size:clamp(11px,1.65cqh,16px);line-height:1.15;text-align:center}
.ll2-shell.ll2-raid .ll2-equipment i,.ll2-shell.ll2-raid .ll2-equipment small{flex:none}
.ll2-shell.ll2-raid .ll2-equipment i{font-size:clamp(8px,1.4cqh,13px)}
.ll2-shell.ll2-raid .ll2-delays{font-size:clamp(8px,1.35cqh,12px);min-height:0}
.ll2-shell.ll2-raid .ll2-hand-label{height:1.7cqh;font-size:clamp(8px,1.4cqh,13px)}
.ll2-shell.ll2-raid .ll2-hand-label>span{display:none}
.ll2-shell.ll2-raid .ll2-hand{min-height:0;height:calc(var(--ch) + 2cqh);padding:1.7cqh 4px .2cqh;gap:0;align-items:flex-end}
.ll2-shell.ll2-raid .ll2-hand .ll2-card{margin-right:calc(var(--hand-step,var(--cw)) - var(--cw));filter:none}
.ll2-shell.ll2-raid .ll2-hand .ll2-card:disabled{filter:brightness(.45) saturate(.25);cursor:not-allowed}
.ll2-shell.ll2-raid .ll2-hand .ll2-card:last-child{margin-right:0}
.ll2-shell.ll2-raid .ll2-card.picked{transform:translateY(-1.6cqh)}
.ll2-shell.ll2-raid .ll2-corner{font-size:clamp(12px,2.6cqh,24px);min-width:0;top:2px;left:2px;padding:0 1px}
.ll2-shell.ll2-raid .ll2-corner i{font-size:clamp(10px,2.2cqh,20px)}
.ll2-shell.ll2-raid .ll2-card-name{font-size:clamp(10px,1.9cqh,18px);padding:2px}
.ll2-shell.ll2-raid .ll2-own{gap:1cqh;align-items:flex-end;max-width:none}
.ll2-shell.ll2-raid .ll2-own .ll2-person{width:var(--own)}
.ll2-shell.ll2-raid .ll2-own .raid-seat-tag{bottom:2px;color:transparent}
.ll2-shell.ll2-raid .ll2-skills{gap:.8cqh;width:8.5cqh;min-width:42px}
.ll2-shell.ll2-raid .ll2-skills button,.ll2-shell.ll2-raid .ll2-skills>span{min-height:0;height:4.1cqh;font:700 clamp(10px,1.9cqh,18px)/1.2 'STKaiti','KaiTi',serif;padding:2px 3px;display:grid;place-items:center;white-space:nowrap;background:linear-gradient(#675234dd,#372919e8);border:1px solid #b9985c;border-radius:2px}
.ll2-shell.ll2-raid .ll2-skills .on{border-color:#ffe0a1;box-shadow:0 0 6px #edb86480;background:linear-gradient(#a87637,#644221)}
.ll2-shell.ll2-raid .ll2-skills .raid-skill-status{opacity:1}
.ll2-shell.ll2-raid .ll2-skills .unavailable{opacity:.45;text-decoration:line-through}
.ll2-shell.ll2-raid .ll2-skills button{letter-spacing:0;font-size:clamp(9px,1.75cqh,17px)}
.ll2-shell.ll2-raid .raid-draft-progress{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 14px;font-size:12px}
/* Transient effects never receive clicks or participate in layout. */
.ll2-shell.ll2-raid .ll2-fx,.ll2-shell.ll2-raid .ll2-fx *{pointer-events:none!important}
.ll2-shell.ll2-raid .raid-flight{position:absolute;left:0;top:0;will-change:transform,opacity;transform-origin:0 0}
.ll2-shell.ll2-raid .raid-flight .ll2-card{width:100%;height:100%;aspect-ratio:auto;filter:none;transform:none!important}
.ll2-shell.ll2-raid .raid-flight-back{background:#30281d url('/sanguosha/sanguosha-battle/image/system/card-back.png') center/100% 100%;border:1px solid #c6a669;border-radius:3px;box-shadow:0 3px 8px #0007}
.ll2-shell.ll2-raid .raid-loading{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:12px;padding:24px;text-align:center;background:radial-gradient(circle at 50% 42%,#253d35,#081215 70%);color:#e9dfc5}
.ll2-shell.ll2-raid .raid-loading h2{margin:0;color:#f0d58e;font:700 clamp(24px,4vw,42px) serif}
.ll2-shell.ll2-raid .raid-loading p{margin:0;color:#b8c5b5;font-size:13px}
.ll2-shell.ll2-raid .raid-loading progress{width:min(520px,70vw);height:12px;accent-color:#d7ae5c}
.ll2-shell.ll2-raid .raid-loading>b{color:#f6d98f;font:700 18px serif}
.ll2-shell.ll2-raid .raid-grace-modal{position:absolute;z-index:22;inset:12% 8% 16%;display:grid;place-items:center;pointer-events:none}
.ll2-shell.ll2-raid .raid-grace-modal article{pointer-events:auto;width:min(760px,92%);padding:12px 16px;border:1px solid #d1ad62;background:#101c1de8;box-shadow:0 10px 35px #000b;border-radius:8px;text-align:center}
.ll2-shell.ll2-raid .raid-grace-modal article>b{display:block;color:#f2d590;font:700 20px serif}
.ll2-shell.ll2-raid .raid-grace-modal article>small{display:block;color:#b6c2b5;margin:4px 0 8px}
.ll2-shell.ll2-raid .raid-grace-cards{display:flex;justify-content:center;gap:8px;overflow:auto;padding:5px}
.ll2-shell.ll2-raid .raid-grace-cards .ll2-card{flex:0 0 clamp(58px,9vw,86px);height:clamp(82px,14vw,121px)}
.ll2-shell.ll2-raid .raid-grace-cards .ll2-card:not(.selectable){opacity:.8}
.ll2-shell.ll2-raid .raid-gift-menu{position:absolute;z-index:46;left:50%;bottom:17%;transform:translateX(-50%);padding:10px;border:1px solid #d1ad62;border-radius:8px;background:#101c1df2;box-shadow:0 10px 35px #000b;text-align:center}
.ll2-shell.ll2-raid .raid-gift-menu b,.ll2-shell.ll2-raid .raid-gift-menu small{display:block;color:#ead99d;margin-bottom:7px}
.ll2-shell.ll2-raid .raid-gift-menu small{color:#aebcae;font-size:10px}
.ll2-shell.ll2-raid .raid-gift-menu button{margin:0 4px;min-width:76px;padding:6px 10px;border:1px solid #8f7749;border-radius:5px;background:#1e302d;color:#f1dfad}
.ll2-shell.ll2-raid .raid-gift-menu button span{font-size:20px;margin-right:4px;vertical-align:middle}
.ll2-shell.ll2-raid .raid-judge-result{position:absolute;z-index:30;pointer-events:none;font:700 24px serif;text-shadow:0 2px 4px #000;color:#fff1b0}
.ll2-shell.ll2-raid .raid-judge-result.success{color:#9fe38d}
.ll2-shell.ll2-raid .raid-judge-result.failure{color:#ed9b83}
.ll2-shell.ll2-raid .raid-gift-flight{position:absolute;z-index:35;pointer-events:none;filter:drop-shadow(0 3px 3px #000a)}
.ll2-shell.ll2-raid .raid-float{position:absolute;text-align:center;white-space:nowrap;font:700 clamp(14px,3.6cqh,34px)/1.2 'STKaiti','KaiTi',serif;color:#ffe2a0;text-shadow:0 2px 3px #000,0 0 10px #58351a}
.ll2-shell.ll2-raid .raid-float.damage{color:#ff6945}
.ll2-shell.ll2-raid .raid-float.heal{color:#c2ed8c}
.ll2-shell.ll2-raid .raid-target-line{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.ll2-shell.ll2-raid .raid-target-line line{stroke:#edc36b;stroke-width:2;filter:drop-shadow(0 0 3px #c57321)}
@media(max-width:880px){.raid-hall{grid-template-columns:1fr}}
@media(min-width:1100px){.raid-hall{grid-template-columns:minmax(420px,480px) minmax(0,1fr)}}
@media(max-width:640px) and (orientation:portrait){.raid-seats{grid-template-columns:1fr}}
@media(max-height:600px){
 .ll2-shell.ll2-raid .ll2-header>span{display:none}
 .ll2-shell.ll2-raid .ll2-header button{padding:0 5px}
 .ll2-shell.ll2-raid .raid-event{padding:3px 5px;max-height:16%}
 .ll2-shell.ll2-raid .raid-event small{display:none}
 .ll2-shell.ll2-raid .ll2-prompt small:not(.raid-timer){display:none}
 .ll2-shell.ll2-raid .ll2-controls .ll2-buttons{gap:5px}
 .ll2-shell.ll2-raid .ll2-controls .ll2-buttons button{padding:2px 10px}
 .ll2-shell.ll2-raid .raid-unit .ll2-portrait{border-width:1px}
 .ll2-shell.ll2-raid .raid-unit .ll2-role{font-size:10px;padding:2px 0;width:2em}
 .ll2-shell.ll2-raid .ll2-equipment header{display:none}
 .ll2-shell.ll2-raid .ll2-equipment>button{margin:1px 0;padding:0 3px;min-height:3.8cqh;line-height:1.3}
 .ll2-shell.ll2-raid .ll2-equipment>button b{font-size:10px;line-height:1.3}
 .ll2-shell.ll2-raid .ll2-equipment>button small{display:none}
 .ll2-shell.ll2-raid .ll2-equipment .ll2-delays{font-size:8px;line-height:1.1}
 .ll2-shell.ll2-raid .raid-ai{font-size:7px}
 .ll2-shell.ll2-raid .raid-gear-chip small{display:none}
}
@media(prefers-reduced-motion:reduce){.ll2-shell.ll2-raid .ll2-card{transition:none}}

/* Public draft cards keep their original positions after each player picks. */
.ll2-shell.ll2-raid .raid-grace-modal{inset:8% 5% 17%}
.ll2-shell.ll2-raid .raid-grace-modal article{max-height:100%;box-sizing:border-box;overflow:auto}
.ll2-shell.ll2-raid .raid-grace-cards{justify-content:flex-start;max-width:100%;padding:8px 3px}
.ll2-shell.ll2-raid .raid-grace-entry{flex:0 0 clamp(52px,8vw,82px);min-width:0}
.ll2-shell.ll2-raid .raid-grace-entry .ll2-card{width:100%;height:clamp(74px,11vw,114px);margin:0;opacity:1;filter:none}
.ll2-shell.ll2-raid .raid-grace-entry.taken .ll2-card{filter:brightness(.42) saturate(.35)}
.ll2-shell.ll2-raid .raid-grace-entry>small{display:block;white-space:normal;font-size:10px;line-height:1.4;color:#e7d5a5;margin-top:5px}
.ll2-shell.ll2-raid .raid-grace-modal .ll2-buttons{display:flex;justify-content:center;gap:12px;margin-top:8px}
.ll2-shell.ll2-raid .raid-grace-modal .ll2-buttons button{padding:6px 18px;min-height:30px;border:1px solid #d1ad62;background:#314238;color:#fff1c0;border-radius:5px}
.ll2-shell.ll2-raid .raid-grace-modal .ll2-buttons button:disabled{opacity:.45}
.ll2-shell.ll2-raid .raid-grace-modal.passive{inset:7% 5% auto;opacity:.65;pointer-events:none}
.ll2-shell.ll2-raid .raid-grace-modal.passive article{pointer-events:none}
.ll2-shell.ll2-raid .raid-grace-modal.passive .raid-grace-entry .ll2-card{height:65px;width:46px}
.ll2-shell.ll2-raid .raid-loading button{padding:6px 24px;color:#eadbb5;background:#263d35;border:1px solid #aa905e;border-radius:5px}

/* A real card-back-to-face flip, kept outside the patched gameplay DOM. */
.ll2-shell.ll2-raid .raid-judge-reveal{position:absolute;z-index:50;left:50%;top:16%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 20px;background:#0e191dfa;border:1px solid #cfa965;border-radius:10px;box-shadow:0 8px 30px #000b;perspective:700px;color:#f5dea3;pointer-events:none}
.ll2-shell.ll2-raid .raid-judge-reveal>b{font-size:15px;white-space:nowrap}
.ll2-shell.ll2-raid .raid-judge-flip{position:relative;width:clamp(65px,12cqh,108px);height:clamp(92px,17cqh,153px);transform-style:preserve-3d}
.ll2-shell.ll2-raid .raid-judge-front,.ll2-shell.ll2-raid .raid-judge-back{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:6px}
.ll2-shell.ll2-raid .raid-judge-front{transform:rotateY(180deg)}
.ll2-shell.ll2-raid .raid-judge-front .ll2-card{height:100%;width:100%;margin:0;opacity:1;filter:none}
.ll2-shell.ll2-raid .raid-judge-back{display:grid;place-items:center;box-sizing:border-box;border:3px double #cfb679;background:repeating-linear-gradient(45deg,#213a39 0 5px,#182d31 5px 10px);font:700 36px serif;color:#dcc896}
.ll2-shell.ll2-raid .raid-judge-outcome{font-size:14px;color:#ffdda3;white-space:nowrap}
