/* Independent table layout; size by available height, including mobile browser chrome. */
body.landlord-open{overflow:hidden;overscroll-behavior:none}
.landlord-overlay{position:fixed;z-index:1000;inset:0;padding:0!important;background:#0b1010;overflow:hidden;overscroll-behavior:none}
.landlord-overlay[hidden]{display:none!important}
.landlord-stage{width:100%!important;max-width:none!important;height:100%!important;min-height:0!important;aspect-ratio:auto!important;margin:0!important;position:relative}
.ll2-shell{--gold:#d6b47b;--light:#f5e7c7;--cw:clamp(76px,calc(var(--table-vh,1dvh)*13),112px);--ch:calc(var(--cw)*130/93);--left:165px;--right:calc(var(--portrait) + 82px);--dock:max(156px,calc(var(--ch) + 40px));--portrait:clamp(96px,calc(var(--table-vh,1dvh)*17),145px);position:relative;isolation:isolate;display:flex;flex-direction:column;box-sizing:border-box;width:100%;height:100%;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);color:var(--light);font:14px/1.4 system-ui,-apple-system,'PingFang SC',sans-serif;background:#28352a url('/sanguosha/sanguosha-battle/image/backdrop/default.jpg') center/cover;overflow:hidden}
.ll2-shell::before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#0b171640,#0c161718 48%,#0b101938),linear-gradient(0deg,#071113a8,transparent 45%)}
.ll2-shell *{box-sizing:border-box}
.ll2-shell button{min-height:32px;border:1px solid #947647;border-radius:4px;background:linear-gradient(#403526,#201b15);box-shadow:inset 0 1px #ffffff15;color:#eeddba;font:inherit;font-weight:600;cursor:pointer;touch-action:manipulation;white-space:nowrap;padding:5px 12px}
.ll2-shell button:hover:not(:disabled){border-color:#f0d998;filter:brightness(1.15)}
.ll2-shell button:focus-visible{outline:2px solid #fff4b3;outline-offset:2px}
.ll2-shell button:disabled{cursor:default;opacity:.45}
.ll2-shell button.confirm,.ll2-shell .ll2-gold{background:linear-gradient(#923b2e,#541d19);border-color:#d3ac64;box-shadow:inset 0 0 0 1px #291912,0 2px 8px #0005;color:#fff0ce;min-width:90px}
.ll2-header{display:flex;align-items:center;gap:20px;height:40px;flex:none;padding:3px 16px;background:linear-gradient(#101e20ed,#11191a99);border-bottom:1px solid #baa27150;white-space:nowrap;z-index:5}
.ll2-header>b{font:700 21px/1.1 'STKaiti','KaiTi',serif;letter-spacing:2px;color:#ead4a0}
.ll2-header em{font-style:normal;font-size:18px;border-left:1px solid #ab8b5d;padding-left:12px;margin-left:6px}
.ll2-header>span{font-size:12px;color:#c8bba3}
.ll2-header nav{margin-left:auto;display:flex;gap:5px}
.ll2-header button{padding:3px 9px;min-height:28px;font-size:12px;background:#10212799;border-color:#6973696b}
.ll2-header button:last-child{font-size:21px;width:30px;padding:0}
.ll2-volume{display:flex;align-items:center;gap:4px;padding:0 5px;color:#c8bba3;font-size:10px;background:#10212799;border:1px solid #6973696b;border-radius:4px}
.ll2-volume input{width:58px;accent-color:#d6b47b;margin:0;touch-action:manipulation}
.ll2-table{min-height:0;flex:1;display:grid;grid-template-rows:minmax(0,1fr) var(--dock);position:relative}
.ll2-battlefield{position:relative;min-height:0}
.ll2-opponents{position:absolute;inset:32px clamp(22px,calc(var(--table-vw,1vw)*6),110px) auto;display:flex;justify-content:space-between;align-items:start;z-index:2;pointer-events:none}
.ll2-person{width:var(--portrait);position:relative;flex:none;transition:filter .25s;pointer-events:auto}
.ll2-portrait-frame{position:relative;width:100%;container-type:inline-size;--equip-font:clamp(8px,10.5cqw,18px);--equip-row:clamp(13px,16cqw,27px)}
.ll2-shell .ll2-equipment-rail{position:absolute;left:3px;right:3px;bottom:4px;z-index:6;display:flex;flex-direction:column;gap:1px;max-width:none;min-width:0;pointer-events:auto}
.ll2-shell .ll2-equipment-rail:empty{display:none}
.ll2-shell .ll2-equip-row{display:flex;align-items:center;justify-content:flex-start;gap:2px;flex:none;width:100%;height:var(--equip-row);min-height:0;margin:0;padding:0 3px;border:0;border-block:1px solid #d6bd7838;border-radius:0;background:linear-gradient(90deg,#090b10ed,#090b10bf);box-shadow:0 1px 2px #0007;color:#fff7e7;font:600 var(--equip-font)/1 'STKaiti','KaiTi','Kaiti SC','Songti SC',serif;text-shadow:0 1px 2px #000;white-space:nowrap;overflow:hidden;text-align:left;cursor:help}
.ll2-shell .ll2-equip-row .ll2-equip-value{display:flex;align-items:center;gap:1px;flex:none;min-width:2.05em;background:none;padding:0;margin:0;font:600 .92em/1 Georgia,'Times New Roman',serif;text-shadow:0 1px 2px #000}
.ll2-shell .ll2-equip-row .ll2-equip-value i{font-style:normal;font-size:1.15em;color:inherit}
.ll2-shell .ll2-equip-row .ll2-equip-value.red{color:#ff665c}
.ll2-shell .ll2-equip-row .ll2-equip-value.black{color:#eae6dc}
.ll2-shell .ll2-equip-row .ll2-equip-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:inherit;text-align:left;letter-spacing:0}
.ll2-shell .ll2-equip-row .ll2-equip-stat{flex:none;min-width:.6em;margin-left:auto;color:#f6e4bd;font:600 .92em/1 Georgia,'Times New Roman',serif;text-align:right;letter-spacing:-.04em}
.ll2-shell .ll2-equip-row.selectable{cursor:pointer;border-color:#e2c16c;background:linear-gradient(90deg,#30230eed,#211c13dc)}
.ll2-shell .ll2-equip-row.picked{outline:1px solid #ffd36b;outline-offset:0;background:linear-gradient(90deg,#956523f5,#513617ed);color:#fff8d6;box-shadow:0 0 8px #e4b44b88}
.ll2-shell .ll2-judge-rail{position:absolute;left:3px;top:29%;display:flex;flex-direction:column;gap:2px;z-index:6}
.ll2-shell .ll2-judge-tag{display:grid;place-items:center;width:1.6em;height:1.6em;min-height:0;padding:0;border:1px solid #b99a6b;background:#191b20d9;border-radius:2px;color:#ffdbac;font:600 var(--equip-font)/1 'STKaiti','KaiTi',serif;cursor:help;text-shadow:0 1px 2px #000}
.ll2-shell .ll2-judge-tag b{font:inherit}
.ll2-shell .ll2-person.mine .ll2-player-name{top:9px;bottom:auto;left:3px;right:auto;writing-mode:vertical-rl;padding:4px 2px;background:#111721b8;border-right:1px solid #c8a76580;font-size:clamp(12px,14cqw,22px);letter-spacing:1px}
.ll2-person.mine .ll2-player-name small{display:none}
.ll2-shell .ll2-equipment-info{position:absolute;z-index:50;width:min(300px,calc(var(--table-vw,1vw)*100 - 24px));padding:12px 28px 10px 12px;border:1px solid #b99b65;border-radius:4px;background:#12171bf5;box-shadow:0 5px 25px #000a;color:#eee2c6;text-align:left;pointer-events:auto}
.ll2-equipment-info strong{font:700 16px 'STKaiti','KaiTi',serif;color:#ffe0a1}
.ll2-equipment-info small{font:12px Georgia,serif;color:#f3e4c7}
.ll2-equipment-info p{margin:7px 0 0;font:12px/1.6 system-ui;white-space:normal;overflow-wrap:anywhere}
.ll2-shell .ll2-equipment-info>button{position:absolute;top:3px;right:3px;min-height:20px;width:22px;padding:0;border:0;background:transparent;font:18px/1 system-ui}
.ll2-person .ll2-portrait{width:100%;height:calc(var(--portrait)*1.36);display:block;padding:0;position:relative;border:2px solid #a88d5f;border-radius:5px;background-color:#171d18;background-size:cover;background-position:center 23%;box-shadow:0 5px 15px #0008;overflow:visible;isolation:isolate}
.ll2-portrait::before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,#0c1013f0,transparent 45%)}
/* 翻面只暗化立绘背景，身份、体力与金色翻面字保持清楚。三模式共用。 */
.ll2-person .ll2-portrait.flipped::before{background:linear-gradient(#080b12a8,#080b12c9)}
.ll2-flip-mark{position:absolute;left:10%;right:10%;top:31%;z-index:7;pointer-events:none;text-align:center;font-family:"STKaiti","KaiTi","Songti SC",serif;font-size:clamp(22px,28cqw,52px);line-height:1.15;letter-spacing:.08em;color:#f3d075;text-shadow:0 2px 2px #241506,1px 0 #80551d,-1px 0 #80551d,0 0 9px #000;font-weight:900}
.ll2-general-flip{perspective:700px;z-index:12;pointer-events:none}
.ll2-general-flip-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d}
.ll2-general-flip .ll2-flip-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:rotateY(0deg)}
.ll2-general-flip .ll2-flip-face.after{transform:rotateY(180deg)}
.ll2-shell .ll2-general-flip .ll2-person,.ll2-shell .ll2-general-flip .ll2-portrait-frame{position:relative;inset:auto;width:100%;height:100%;margin:0;padding:0}
.ll2-general-flip .ll2-person .ll2-portrait{width:100%;height:100%;margin:0}
.ll2-person .ll2-portrait.can-target{border-color:#ffc64b;box-shadow:0 0 10px #eabc524f;cursor:crosshair}
.ll2-person.active .ll2-portrait{box-shadow:0 0 0 1px #e2cd88,0 0 24px #dfb75377}
.ll2-person.active::before{content:'行动中';position:absolute;left:50%;top:-12px;transform:translateX(-50%);z-index:3;background:#af7431;border:1px solid #dabb7a;padding:0 8px;font-size:10px;white-space:nowrap}
.ll2-person.targeted .ll2-portrait{border-color:#ff6f48;box-shadow:0 0 0 2px #b74b30,0 0 24px #d56732aa}
.ll2-role{position:absolute;top:5px;left:-10px;border:1px solid #93b98c;background:#254138;padding:4px 3px;color:#e1f5cc;writing-mode:vertical-rl;font:700 15px serif;letter-spacing:3px;border-radius:3px;box-shadow:1px 1px 4px #0009}
.ll2-role.lord{background:#721d21;border-color:#d5a369;color:#ffe0aa}
.ll2-player-name{position:absolute;bottom:7px;left:5px;right:5px;color:#fff1d0;font:700 23px 'STKaiti','KaiTi',serif;text-shadow:0 2px 3px #000;white-space:nowrap}
.ll2-player-name small{display:block;color:#d4c6aa;font:10px system-ui;margin-top:2px}
.ll2-vitals{display:flex;justify-content:space-between;gap:5px;padding:3px 2px;color:#d6c3a1;background:#0e1419c9;font-size:11px;border-radius:0 0 4px 4px}
.ll2-hearts{color:#9ad081;letter-spacing:0;font-size:14px;white-space:nowrap}
.ll2-hearts i{color:#dfd6ba;font-style:normal;margin-left:4px;font-size:11px}
.ll2-vitals>span:last-child{align-self:center;white-space:nowrap}
.ll2-opponent-name,.ll2-opponent-role{position:absolute;top:13px;z-index:4;min-height:44px;padding:4px 3px;border:1px solid #bb9c66;background:linear-gradient(#172225,#0c1518);box-shadow:1px 2px 5px #000a;color:#f3e4bc;font:700 14px/1.1 'STKaiti','KaiTi',serif;letter-spacing:2px;writing-mode:vertical-rl;text-align:center;text-shadow:0 1px 2px #000;white-space:nowrap}
.ll2-opponent-name{left:-27px;border-radius:3px 0 0 3px}
.ll2-opponent-role{right:-27px;border-color:#93b98c;background:#254138;color:#e1f5cc;border-radius:0 3px 3px 0}
.ll2-opponent-role.lord{border-color:#d5a369;background:#721d21;color:#ffe0aa}
.ll2-chain{position:absolute;bottom:52%;left:0;width:100%;background:#121b20b3;color:#e6d39a;letter-spacing:3px;text-shadow:0 1px #000;border-top:2px dotted #c1c0a7;border-bottom:2px dotted #c1c0a7;font-size:13px}
.ll2-wine{position:absolute;top:5px;right:5px;padding:1px 5px;border-radius:50%;background:#ab4128;color:white}
.ll2-skill-status{position:absolute;bottom:44%;left:0;right:0;background:#252038ed;border-block:1px solid #ae9bc1;color:#f4daff;padding:3px;font-size:11px;white-space:normal}
.ll2-skill-status.charged{background:#65281be8;border-color:#dcaa64;color:#ffe1a9}
.ll2-fushi-mark,.ll2-dongdao-mark{display:inline-block;margin-left:3px;padding:1px 4px;border-radius:8px;background:#502b1ddd;color:#ffe1a8;border:1px solid #b67b43;font-size:10px;white-space:nowrap}
.ll2-dongdao-mark{background:#263c64dd;border-color:#82b5e8;color:#d8eeff}
.ll2-dead{position:absolute;inset:0;display:grid;place-items:center;font:700 30px serif;background:#0c0f1380;color:#b6b3a7;transform:rotate(-12deg)}
.ll2-person.dead{filter:grayscale(1)}
.ll2-target-num{position:absolute;right:-8px;top:-8px;border-radius:50%;width:25px;height:25px;line-height:25px;background:#9f341d;border:1px solid #ffd995;color:#fff4c6}
.ll2-phase{position:absolute;left:50%;top:13px;transform:translateX(-50%);display:flex;align-items:center;gap:12px;color:#e7dfc4;font-size:11px;white-space:nowrap;text-shadow:0 1px 4px #000}
.ll2-phase b{font:700 17px serif;color:#f5e5b5;letter-spacing:3px;padding-right:12px;border-right:1px solid #d3bd8b77}
.ll2-phase small{color:#ddd0ad}
.ll2-center{position:absolute;left:25%;right:25%;top:48px;bottom:68px;display:flex;justify-content:center;align-items:center;z-index:3;pointer-events:none}
.ll2-center button{pointer-events:auto}
.ll2-table-cards{display:flex;gap:12px;align-items:flex-end;opacity:.92}
.ll2-shell:has(.ll2-event) .ll2-table-cards{visibility:hidden}
.ll2-table-cards .ll2-card:disabled{filter:none}
.ll2-table-cards>div{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:0}
.ll2-table-cards small{font-size:10px;color:#f1e4c0;text-shadow:0 1px 4px #000;max-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ll2-table-cards .ll2-card{--card-width:calc(var(--cw)*.88)}
.ll2-card{--card-art:none;--card-width:var(--cw);position:relative;flex:none;width:var(--card-width);height:auto;aspect-ratio:93/130;padding:0!important;border:1px solid #a78e62!important;background:#e9ddbe var(--card-art) center/100% 100% no-repeat!important;border-radius:4px!important;color:#221c19!important;box-shadow:0 3px 8px #0008!important;overflow:hidden;font-family:serif!important;transition:transform .12s,border-color .12s,filter .12s;min-height:0!important;isolation:isolate}
.ll2-card:disabled{opacity:1!important;filter:brightness(.7) saturate(.75)}
.ll2-card.selectable{filter:none}
.ll2-card.picked{transform:translateY(-13px);border-color:#ffe093!important;box-shadow:0 0 0 2px #d5a241,0 0 18px #ffcb6670!important;filter:brightness(1.12) saturate(1.05);z-index:3}
.ll2-card.picked::after{content:'';position:absolute;inset:0;pointer-events:none;border:2px solid #ffe8a1;box-shadow:inset 0 0 11px #ffc34888;animation:ll2-select-glow .85s ease-in-out infinite alternate}
.ll2-person.targeted .ll2-portrait::after{content:'';position:absolute;z-index:8;left:22%;right:22%;top:32%;height:40%;pointer-events:none;background:linear-gradient(45deg,transparent 43%,#8d5215 44%,#fff3bd 48%,#ffe393 52%,#b26b18 56%,transparent 57%),linear-gradient(-45deg,transparent 43%,#8d5215 44%,#fff3bd 48%,#ffe393 52%,#b26b18 56%,transparent 57%);filter:drop-shadow(0 0 6px #ffc52e);animation:ll2-target-mark .28s cubic-bezier(.18,.72,.24,1) both}
@keyframes ll2-select-glow{from{opacity:.55}to{opacity:1}}
@keyframes ll2-target-mark{from{transform:scale(1.5);opacity:0}to{transform:scale(1);opacity:1}}
/* Elevation represents selection only; hover (including sticky touch hover)
   must not keep a deselected card raised. */
.ll2-card:hover:not(:disabled){z-index:4}
.ll2-corner{position:absolute;top:3px;left:3px;display:grid;line-height:.98;font:bold 18px/1 Georgia,serif;background:#f0e3c8e8;min-width:18px;text-align:center;border-radius:2px;padding:1px}
.ll2-corner i{font-style:normal;font-size:16px}
.ll2-card.red .ll2-corner{color:#9f211e}
.ll2-card-name{position:absolute;left:0;right:0;bottom:0;font-size:13px;font-weight:700;background:linear-gradient(#eee1c4b0,#ebdbb5);padding:3px 0;color:#302218;white-space:normal;line-height:1.05;text-shadow:0 1px #fffa}
.ll2-controls{z-index:5;position:absolute;bottom:calc(var(--dock) + 3px);left:calc(var(--left) + 16px);right:calc(var(--right) + 16px);display:flex;flex-direction:column;align-items:center;justify-content:end;gap:5px;text-align:center;pointer-events:none}
.ll2-prompt{display:flex;align-items:baseline;justify-content:center;gap:10px;max-width:100%;padding:3px 10px;border-radius:3px;background:#10201bd9;text-shadow:0 1px 3px #000;pointer-events:auto}
.ll2-prompt>b{color:#f3e4bc;font:600 13px/1.4 system-ui;flex:none;max-width:100%}
.ll2-prompt small{font-size:11px;color:#d1d2bb;line-height:1.4;min-width:0;max-width:550px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ll2-buttons{display:flex;justify-content:center;gap:8px;pointer-events:auto}
.ll2-buttons:empty{display:none}
.ll2-buttons button{min-width:76px;min-height:32px;padding:4px 14px;font-size:12px}
.ll2-bottom{display:grid;grid-template-columns:minmax(0,1fr) var(--right);grid-template-rows:minmax(0,1fr);gap:16px;align-items:end;background:linear-gradient(transparent,#071317b3);padding:0 14px 7px;position:relative;z-index:4;min-height:0}
.red{color:#b65c50}
.ll2-delays{min-height:16px;color:#c0ba9e;font-size:10px;display:flex;flex-wrap:wrap;gap:4px;padding-top:2px}
.ll2-delays span{border:1px solid #99765b;color:#e8ba92;padding:0 3px}
.ll2-hand-wrap{min-width:0;align-self:end}
.ll2-hand-label{display:flex;gap:7px;align-items:center;height:16px;color:#c1c6b0;font-size:10px;text-shadow:0 1px 3px #000}
.ll2-hand-label b{color:#e4cc92}
.ll2-hand-label span{margin-left:auto;color:#b4c1b5}
.ll2-hand-label:has(.ll2-hand-sort){height:24px}
.ll2-hand-label .ll2-hand-sort{flex:none;margin-left:auto;min-height:22px;padding:2px 7px;font-size:10px;line-height:1.2;white-space:nowrap}
.ll2-hand-wrap.ll2-fushi-hand .ll2-hand-label{color:#ffe0a0}
.ll2-hand-wrap.ll2-fushi-hand .ll2-hand{background:linear-gradient(90deg,#562d191f,#80511b38,#562d191f);border-top:1px solid #bf86414d;border-radius:6px}
.ll2-hand-wrap.ll2-fushi-hand .ll2-card{filter:drop-shadow(0 0 5px #d9953855)}
.ll2-hand{display:flex;align-items:flex-end;overflow-x:auto;overflow-y:hidden;padding:13px 3px 4px;min-height:calc(var(--ch) + 17px);scrollbar-width:none;gap:0;overscroll-behavior-x:contain;touch-action:pan-x}
.ll2-hand::-webkit-scrollbar{display:none}
@media (hover:hover) and (pointer:fine){
 .ll2-hand.hand-scrollable,.ll2-hand.hand-scrollable .ll2-card{cursor:grab}
 .ll2-hand.hand-dragging,.ll2-hand.hand-dragging .ll2-card{cursor:grabbing;user-select:none}
}
.ll2-hand .ll2-card{margin-right:calc(var(--hand-step,var(--cw)*.77) - var(--cw))}
.ll2-hand .ll2-card:last-child{margin-right:0}
.ll2-hand .ll2-card:disabled{filter:brightness(.67) saturate(.7)}
.ll2-empty-hand{width:100%;text-align:center;margin:auto;color:#65776d;font-size:14px;letter-spacing:3px}
.ll2-own{position:relative;justify-self:end;display:flex;align-items:flex-end;gap:8px;max-width:100%}
.ll2-own .ll2-person{width:var(--portrait)}
.ll2-own .ll2-portrait{height:calc(var(--portrait)*1.36)}
.ll2-own .ll2-role{left:auto;right:3px;top:4px;writing-mode:horizontal-tb;padding:3px;border-radius:50%;letter-spacing:0;font-size:11px}
.ll2-own .ll2-seat-number{top:5px;right:35px}
.ll2-own .ll2-hearts{font-size:clamp(10px,calc(var(--table-vh,1dvh)*1.6),12px);letter-spacing:-1px}
.ll2-own .ll2-hearts i{font-size:10px;letter-spacing:0;margin-left:2px}
.ll2-own .ll2-vitals{font-size:10px;gap:2px}
.ll2-skills{position:absolute;right:calc(100% + 7px);bottom:4px;display:flex;flex-direction:column;gap:5px;z-index:5}
.ll2-skills button,.ll2-skills>span{font:700 12px serif;min-height:30px;padding:5px 9px;border:1px solid #b2a172;background:linear-gradient(#394339,#1b251f);color:#eee4bd;border-radius:4px;white-space:nowrap;text-align:center}
.ll2-skills>span{font-size:10px;opacity:.7}
.ll2-skills .on{background:#8b5724;border-color:#e1c376}
.ll2-choice-board{pointer-events:auto;background:linear-gradient(#222b2af7,#0d1719fa);border:1px solid #ba9f69;box-shadow:0 10px 40px #000a;padding:10px 12px;border-radius:5px;text-align:center;max-width:100%;max-height:100%;overflow:auto}
.ll2-choice-board>b{display:block;font:700 18px serif;color:#e4d097;margin-bottom:9px}
.ll2-options{display:flex;align-items:end;justify-content:safe center;gap:9px;overflow:auto;padding:3px;max-width:100%;scrollbar-width:thin}
.ll2-options.ll2-benxi-options{display:grid;grid-template-columns:repeat(2,minmax(110px,1fr));align-items:stretch;justify-content:stretch;overflow:visible}
.ll2-options.ll2-benxi-options .ll2-text-option{min-width:0;width:100%}
.ll2-option{display:flex;flex-direction:column;gap:4px;flex:none;padding:2px}
.ll2-option small{font-size:10px;color:#b4bba9}
.ll2-choice-board .ll2-card{--card-width:calc(var(--cw)*.85)}
.ll2-option.chosen .ll2-card,.ll2-text-option.chosen,.ll2-card-back.chosen{border-color:#ffdc79!important;box-shadow:0 0 0 2px #c49149!important}
.ll2-card-back{flex:none;width:calc(var(--cw)*.85);height:auto;aspect-ratio:93/130;background:#282b27 url('/sanguosha/sanguosha-battle/image/system/card-back.png') center/100% 100%!important;font-family:serif!important;text-shadow:0 1px #000}
.ll2-text-option{min-width:110px;min-height:44px!important}
.ll2-fx{position:absolute;inset:0;pointer-events:none;z-index:15;display:grid;place-items:center}
.ll2-event{position:absolute;left:25%;right:25%;top:48px;bottom:calc(var(--dock) + 72px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;animation:ll2-pop .25s ease-out;z-index:2}
.ll2-event .ll2-card{--card-width:calc(var(--cw)*1.12);filter:none;box-shadow:0 12px 25px #0008!important}
.ll2-event>strong{font:700 24px serif;color:#ffdc96;text-shadow:0 2px 6px #000}
.ll2-event>strong:empty{display:none}
.ll2-event p{margin:0;background:#091317e8;border:1px solid #b69a6977;padding:7px 20px;text-align:center;color:#f6e5b8;font-size:14px;box-shadow:0 5px 20px #0008}
.ll2-event.damage p{color:#ffd2b7;border-color:#bc6c49}
.ll2-event.heal p{color:#bde5ac;border-color:#8fac72}
.ll2-target-lines{position:absolute;inset:0;width:100%;height:100%;z-index:1}
.ll2-target-lines line{stroke:#ffd394;stroke-width:2;stroke-dasharray:10 4}
.ll2-fx-layer{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;contain:layout style}
.ll2-fx-layer.judging{background:#050c112c}
.ll2-judgement{width:min(580px,calc(var(--table-vw,1vw)*75));border:2px solid #b6a375;border-radius:5px;box-shadow:0 10px 55px #000d;background:linear-gradient(145deg,#2b302df9,#0d171afa);padding:16px 24px;animation:ll2-pop .22s ease}
.ll2-judgement header{text-align:center;border-bottom:1px solid #ac996055;padding-bottom:10px;font:700 23px serif;letter-spacing:3px;color:#f4d68e}
.ll2-judgement header small{font:12px system-ui;letter-spacing:1px;color:#bcbca2}
.ll2-judge-content{display:flex;align-items:center;justify-content:center;gap:35px;padding:22px 0 10px}
.ll2-judge-card{position:relative;perspective:800px}
.ll2-judge-card .ll2-card{filter:none;animation:ll2-flip .65s ease-out}
.ll2-judge-card>strong{position:absolute;left:0;right:0;bottom:12px;transform:rotate(-10deg);font:900 24px serif;text-align:center;text-shadow:0 1px 3px #000;background:#131c1da3;animation:ll2-stamp .3s .6s both}
.ll2-judge-card .success{color:#ffc979}
.ll2-judge-card .failure{color:#dedbc8}
.ll2-judge-content>div:last-child{max-width:250px}
.ll2-judge-content b{color:#fff1c3;font-size:15px}
.ll2-judge-content p{font-size:12px;color:#adb9aa;line-height:1.8}
.ll2-log{position:absolute;right:12px;top:58px;bottom:calc(var(--ch) + 65px);z-index:20;width:min(290px,calc(var(--table-vw,1vw)*60));background:#0c181bf2;border:1px solid #9c8d64;border-radius:4px;display:flex;flex-direction:column;box-shadow:0 5px 30px #0008}
.ll2-log header{display:flex;justify-content:space-between;align-items:center;padding:5px 12px;color:#dcc596;border-bottom:1px solid #746947}
.ll2-log>div{overflow:auto;flex:1;padding:8px 12px;scrollbar-width:thin}
.ll2-log p{margin:0;padding:5px 0;border-bottom:1px solid #8f9b9120;color:#bfccbe;font-size:12px}
.ll2-lobby{flex:1;min-height:0;overflow:auto;text-align:center;display:flex;flex-direction:column;justify-content:safe center;align-items:center;padding:28px 15px;background:radial-gradient(ellipse,#0b191d44,#09181ac4)}
.ll2-eyebrow{font:12px serif;letter-spacing:6px;color:#d6bb80}
.ll2-lobby h1{font:700 clamp(46px,calc(var(--table-vh,1dvh)*10),92px)/1.2 'STKaiti','KaiTi',serif;letter-spacing:14px;margin:12px 0;color:#f3e5bc;text-shadow:0 5px 20px #000}
.ll2-lobby p{margin:8px 0;color:#c0c5ae;line-height:1.7}
.ll2-beans{font:30px Georgia;color:#eacf8d;margin:20px 0}
.ll2-beans small{display:block;font:11px system-ui;color:#b2baaa;margin-top:4px}
.ll2-start-buttons{display:flex;gap:16px}
.ll2-start-buttons button{min-height:45px;padding:8px 28px}
.ll2-lobby .ll2-muted{font-size:11px;margin-top:18px;color:#8eaa9a}
.ll2-exchange{margin-top:18px;border-top:1px solid #75816c66;padding-top:10px;color:#c7b892;font-size:12px}
.ll2-exchange summary{cursor:pointer}
.ll2-exchange input{width:80px;margin:8px;border:1px solid #8d805b;padding:6px;background:#132126;color:#eedfae}
.ll2-exchange small{display:block;font-size:10px}
.ll2-lucky{flex:1;min-height:0;overflow:auto;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;background:radial-gradient(ellipse,#594b2744,#09181ac4)}
.ll2-lucky h2{font:700 42px/1.2 'STKaiti','KaiTi',serif;letter-spacing:8px;color:#f3e5bc;margin:10px 0;text-shadow:0 5px 20px #000}
.ll2-lucky p{max-width:620px;color:#d2d6bf;font-size:13px;line-height:1.7}
.ll2-lucky-hand{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;min-height:142px;margin:14px 0}
.ll2-lucky-stock{color:#edcf88!important}
.ll2-shop-modal article{width:min(820px,calc(calc(var(--table-vw,1vw)*100) - 48px))}
.ll2-general-pool-modal article{width:min(940px,calc(calc(var(--table-vw,1vw)*100) - 34px))}
.ll2-general-pool-modal h2 small{font:600 13px sans-serif;color:#bfc8ad;margin-left:8px}
.ll2-general-pool-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:14px}
.ll2-general-pool-card{position:relative;min-height:170px;padding:9px 8px;text-align:left;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;gap:3px;background-size:cover;background-position:center top;border:1px solid #b99b61;color:#f2e4bd}
.ll2-general-pool-card::before{content:'';position:absolute;inset:0;background:linear-gradient(transparent 15%,#081116ca 58%,#081116f8);z-index:-1}
.ll2-general-pool-card.enabled{box-shadow:inset 0 0 0 1px #e5c87844,0 3px 8px #0006}.ll2-general-pool-card.disabled{filter:grayscale(.9) brightness(.58);border-color:#6d7270}
.ll2-general-pool-card:disabled{opacity:.7;cursor:not-allowed}.ll2-general-pool-card i{position:absolute;top:7px;right:7px;padding:2px 5px;border-radius:4px;background:#213e27e8;color:#dcf3c8;font-size:10px;font-style:normal}.ll2-general-pool-card.disabled i{background:#432222e8;color:#ffd0c5}.ll2-general-pool-card b{font:700 19px serif;color:#ffebbd}.ll2-general-pool-card small,.ll2-general-pool-card span{font-size:10px;line-height:1.35;color:#d4d7c1}.ll2-general-pool-modal footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:15px}.ll2-general-pool-modal footer small{font-size:11px;color:#c7cdb8}.ll2-general-pool-modal footer button{min-width:100px}
.ll2-shop-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}
.ll2-shop-feedback{margin:8px 0 2px;padding:8px 10px;border:1px solid #c9ad6a;border-radius:5px;background:#262b1f;color:#f5dfa2;font-weight:700;font-size:12px}
.ll2-shop-feedback.success{border-color:#a7cf86;background:#193022;color:#e4f5ce}.ll2-shop-feedback.error{border-color:#e48770;background:#3b1d1d;color:#ffe0d5}.ll2-shop-feedback.pending{border-color:#e4c67b;background:#3a301d;color:#fff0be}
.ll2-shop-item{display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:76px;padding:9px 10px;border:1px solid #9d83534f;background:linear-gradient(135deg,#304034db,#172529e8);border-radius:8px;text-align:left;box-shadow:inset 0 1px #e8cb8b12,0 3px 8px #0002}
.ll2-shop-item:hover{border-color:#d6b66f9c;background:linear-gradient(135deg,#3a4d38ed,#1b2c2fef)}
.ll2-shop-icon{width:48px;height:48px;object-fit:contain;padding:3px;border-radius:8px;background:radial-gradient(circle,#e5c37b28,#08141740);filter:drop-shadow(0 3px 4px #0008)}
.ll2-shop-icon[src$="hand_luck_card.svg"]{padding:10px;transform:scale(.88)}
.ll2-shop-item>div{display:grid;gap:4px;min-width:0}.ll2-shop-item b{color:#f5d994;font-size:15px}.ll2-shop-item small,.ll2-shop-item i{font-size:11px;line-height:1.45;color:#c0c9b0}.ll2-shop-item i{color:#e8cc87;font-style:normal}
.ll2-shop-item aside{display:grid;gap:5px;flex:none}.ll2-shop-item button{white-space:nowrap;min-height:30px;font-size:11px}.ll2-shop-item.pending{box-shadow:0 0 0 1px #e7c76c,0 0 16px #e7c76c44}.ll2-shop-item.sold{opacity:.52;filter:saturate(.55)}
.ll2-shop-quantity{display:flex;align-items:center;justify-content:space-between;gap:3px;padding:2px 0}.ll2-shop-quantity b{min-width:22px;text-align:center;color:#fff0ba}.ll2-shop-quantity button{width:27px;min-height:25px;padding:0;font-size:16px;line-height:1}
.ll2-result{font:700 32px Georgia,serif;color:#ebc66e;margin:25px 0}
.ll2-draft{flex:1;min-height:0;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:safe center;padding:18px;overflow:auto}
.ll2-draft h2{font:700 32px serif;margin:12px 0;color:#ecdbad}
.ll2-draft>p{font-size:12px;color:#b7c4b0;margin:0 0 20px}
.ll2-draft>div.ll2-draft-cards{display:flex;justify-content:center;gap:20px;max-width:95%;width:900px}
.ll2-draft>div.ll2-draft-cards>button{position:relative;width:165px;height:min(360px,calc(var(--table-vh,1dvh)*46));min-height:180px;flex:1;background-size:cover;background-position:center top;border:2px solid #9a865b;display:flex;flex-direction:column;justify-content:flex-end;padding:12px 10px;overflow:hidden;white-space:normal;isolation:isolate}
.ll2-draft>div.ll2-draft-cards>button::before{content:'';position:absolute;inset:0;background:linear-gradient(transparent 18%,#0a121acc 56%,#071117fa);z-index:-1}
.ll2-draft b{font:700 29px serif;color:#ffebbd}
.ll2-draft small{color:#babb9a;font-size:11px}
.ll2-draft strong{font:700 17px serif;color:#e4c783;margin:7px 0}
.ll2-draft span{font-size:12px;line-height:1.55;color:#cbd2b8;min-height:60px}
.ll2-draft>.ll2-eyebrow{min-height:0}
.ll2-draft>div.ll2-draft-cards{flex:none}
.ll2-draft>div.ll2-draft-reroll{width:auto;max-width:95%;align-items:center;gap:9px;margin:-8px 0 10px;padding:5px 9px;border:1px solid #856637;border-radius:7px;background:#1c1a16d9}
.ll2-draft>div.ll2-draft-reroll>span{min-height:0;font-size:11px;color:#ead69c}
.ll2-draft>div.ll2-draft-reroll>button{width:auto;height:auto;min-height:30px;padding:5px 12px;display:block;background:#755226;border-color:#d5ad58;color:#fff0bf;white-space:nowrap}
.ll2-draft>div.ll2-draft-reroll>button::before{display:none}
.ll2-draft>div.ll2-draft-cards{align-items:stretch}
.ll2-draft-card{width:165px;height:min(405px,calc(var(--table-vh,1dvh)*54));min-height:214px;flex:1;display:flex;flex-direction:column;gap:6px}
.ll2-draft-card>.ll2-draft-preview{position:relative;flex:1;min-height:180px;background-size:cover;background-position:center top;border:2px solid #9a865b;display:flex;flex-direction:column;justify-content:flex-end;padding:12px 10px;overflow:hidden;white-space:normal;isolation:isolate}
.ll2-draft-card>.ll2-draft-preview::before{content:'';position:absolute;inset:0;background:linear-gradient(transparent 18%,#0a121acc 56%,#071117fa);z-index:-1}
.ll2-draft-card>.ll2-draft-preview.chosen{border-color:#ffe1a1;box-shadow:0 0 0 2px #ac733b,0 0 18px #d5aa6744}
.ll2-draft-card>.ll2-draft-exchange{width:100%;min-height:30px;padding:5px 8px;border:1px solid #b78a42;background:#4c3523;color:#ffe4a0;font-size:12px}
.ll2-draft-card>.ll2-draft-exchange:disabled{opacity:.58}
.ll2-draft>div.ll2-draft-cards>button.chosen{border-color:#ffe1a1;box-shadow:0 0 0 2px #ac733b,0 0 18px #d5aa6744}
.ll2-draft-detail{display:flex;align-items:center;gap:20px;width:900px;max-width:95%;margin-top:14px;text-align:left;background:#111d20e8;border:1px solid #9a865b;padding:12px 16px;flex:none}
.ll2-draft-detail>div{flex:1;min-width:0}
.ll2-draft-detail b{font:700 16px serif}
.ll2-draft-detail p{font-size:12px;line-height:1.7;margin:5px 0 0;color:#dfdcc7}
.ll2-draft-detail>button{flex:none}
.ll2-modal{position:absolute;z-index:25;inset:0;background:#020b11c9;display:grid;place-items:center;padding:25px;backdrop-filter:blur(4px)}
.ll2-modal article{position:relative;width:min(650px,calc(var(--table-vw,1vw)*90));max-height:90%;overflow:auto;padding:22px 28px;border:1px solid #b39d6a;background:#142127;color:#c3cbbd;box-shadow:0 15px 40px #0008;border-radius:5px}
.ll2-modal h2{font:700 24px serif;color:#e9d498;margin:0 0 16px}
.ll2-modal p{font-size:13px;line-height:1.8}
.ll2-modal b{color:#f0d69d}
.ll2-portrait[data-ll2-general-info],.ll2-skills [data-ll2-general-info]{cursor:help}
.ll2-general-info-modal{z-index:45;background:#02080be0}
.ll2-general-info-modal article{width:min(790px,calc(calc(var(--table-vw,1vw)*100) - 44px));height:min(590px,calc(calc(var(--table-vh,1dvh)*100) - 54px));max-height:none;overflow:hidden;padding:0;display:grid;grid-template-columns:minmax(210px,35%) minmax(0,1fr);background:linear-gradient(135deg,#283326,#10191b 64%);border:2px solid #b99b61;box-shadow:0 18px 65px #000d}
.ll2-general-info-art{position:relative;min-height:0;overflow:hidden;background:#17221e}
.ll2-general-info-art::after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#07100eec,transparent 52%);pointer-events:none}
.ll2-general-info-art img{width:100%;height:100%;display:block;object-fit:cover;object-position:center top}
.ll2-general-info-art span{position:absolute;z-index:1;left:12px;right:10px;bottom:11px;color:#e5d1a0;font:700 14px/1.35 serif;text-shadow:0 2px 3px #000}
.ll2-general-info-content{min-width:0;min-height:0;display:flex;flex-direction:column;padding:22px 26px 15px;background:linear-gradient(90deg,#1a2421ed,#11191bd9)}
.ll2-general-info-content>header{padding-right:34px;border-bottom:1px solid #c1a86c77;padding-bottom:10px}
.ll2-general-info-content>header small{display:block;color:#a7b8a8;font-size:11px;letter-spacing:3px}
.ll2-general-info-content h2{margin:2px 0 3px;font:700 33px/1.15 'STKaiti','KaiTi',serif;color:#f0d58e;text-shadow:0 2px 3px #000}
.ll2-general-info-content header p{margin:0;color:#c7d0bb;font-size:13px;line-height:1.4}
.ll2-general-info-skills{min-height:0;overflow:auto;padding:12px 3px 4px 0;scrollbar-width:thin}
.ll2-general-info-skills section{padding:8px 10px;margin-bottom:8px;border-left:3px solid #6e855f;background:#070f0f70;border-radius:0 4px 4px 0}
.ll2-general-info-skills section.focused{border-left-color:#f0c45e;background:#4c351a8c;box-shadow:inset 0 0 0 1px #d9b46c66}
.ll2-general-info-skills b{display:inline-block;padding:2px 8px;border:1px solid #b4975d;border-radius:3px;background:#334a33;color:#ffe5a1;font:700 17px serif}
.ll2-general-info-skills p{margin:5px 0 0;color:#ece2c7;font-size:14px;line-height:1.55;white-space:pre-wrap}
.ll2-general-info-content footer{padding-top:8px;border-top:1px solid #a68c5a55;color:#9ca998;font-size:10px}
.ll2-general-info-hover{z-index:24;display:block;padding:0;background:transparent;backdrop-filter:none;pointer-events:none}
.ll2-general-info-hover article{position:absolute;left:var(--info-x);top:var(--info-y);width:min(500px,calc(var(--table-vw,1vw)*42));height:min(350px,calc(calc(var(--table-vh,1dvh)*100) - 20px));max-height:none;grid-template-columns:140px minmax(0,1fr);border-color:#c3a66caa;background:linear-gradient(120deg,#1f2b25e8,#10191bea);box-shadow:0 8px 32px #0009;opacity:.97}
.ll2-general-info-hover .ll2-general-info-art span{left:7px;right:5px;bottom:7px;font-size:10px}
.ll2-general-info-hover .ll2-general-info-content{padding:12px 15px 10px;background:linear-gradient(90deg,#18231fec,#101819e8)}
.ll2-general-info-hover .ll2-general-info-content>header{padding-right:0;padding-bottom:6px}
.ll2-general-info-hover .ll2-general-info-content>header small{font-size:9px;letter-spacing:2px}
.ll2-general-info-hover .ll2-general-info-content h2{font-size:24px}
.ll2-general-info-hover .ll2-general-info-content header p{font-size:10px}
.ll2-general-info-hover .ll2-general-info-skills{padding-top:7px}
.ll2-general-info-hover .ll2-general-info-skills section{padding:5px 7px;margin-bottom:5px}
.ll2-general-info-hover .ll2-general-info-skills b{font-size:13px;padding:1px 5px}
.ll2-general-info-hover .ll2-general-info-skills p{font-size:11px;line-height:1.4;margin-top:3px}
.ll2-dismiss{position:absolute;top:7px;right:8px}
.ll2-error{position:absolute;z-index:30;top:60px;left:50%;transform:translateX(-50%);background:#613529;border:1px solid #d6ad70;border-radius:5px;color:#fff0cc;padding:8px 16px;max-width:90%;font-size:12px}
.ll2-error button{margin-left:10px}
.ll2-loading{height:100%;display:grid;place-items:center;background:#101f23;color:#e3d5b1;font-size:18px}
@keyframes ll2-flip{0%{transform:rotateY(90deg) scale(.8)}100%{transform:none}}
@keyframes ll2-stamp{from{opacity:0;scale:1.8}to{opacity:1;scale:1}}
@keyframes ll2-pop{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@keyframes ll2-line{to{stroke-dashoffset:-28}}

.ll2-seat-number{position:absolute;top:5px;right:5px;font:10px/1.5 system-ui;color:#f3e5c4;background:#101a1bd9;border:1px solid #a58e5d88;padding:0 4px;border-radius:2px}

.ll2-controls.waiting .ll2-prompt small{display:none}

.ll2-event-cards{display:flex;gap:5px}

.ll2-event-cards .ll2-card{--card-width:var(--cw)}

.ll2-draw-back{position:absolute;width:52px;height:auto;aspect-ratio:93/130;border:1px solid #e2c486;border-radius:4px;background:#29382d url('/sanguosha/sanguosha-battle/image/system/card-back.png') center/cover;box-shadow:0 4px 12px #0008;z-index:3}


body.landlord-open .toast{z-index:1100}

/* Landscape phones: compact dock, full-height cards, open center. */
@media (max-height:600px) and (orientation:landscape), (max-width:600px) and (max-width:700px) and (orientation:portrait){
 .ll2-shell{--cw:clamp(58px,calc(var(--table-vh,1dvh)*16.5),88px);--left:145px;--right:calc(var(--portrait) + 70px);--dock:max(132px,calc(var(--ch) + 32px));--portrait:clamp(72px,calc(var(--table-vh,1dvh)*21),116px);font-size:11px}
 .ll2-header{height:30px;padding:2px 10px;gap:12px}
 .ll2-header>span{display:none}
 .ll2-header>b{font-size:17px;letter-spacing:1px}
 .ll2-header em{font-size:14px;padding-left:8px}
 .ll2-header>span{font-size:10px}
 .ll2-header nav{gap:4px}
 .ll2-header button{min-height:25px;font-size:10px;padding:2px 7px}
 .ll2-header button:last-child{font-size:18px;width:25px}
 .ll2-volume{padding:0 3px;font-size:8px}.ll2-volume input{width:42px}
 .ll2-opponents{top:30px;left:5%;right:5%}
 .ll2-role{font-size:11px;padding:3px 2px;left:-7px;letter-spacing:2px}
 .ll2-player-name{font-size:18px;bottom:4px}
 .ll2-player-name small{font-size:8px}
 .ll2-seat-number{font-size:8px;top:3px;right:3px;padding:0 3px}
 .ll2-vitals{font-size:9px;padding:2px;gap:2px}
 .ll2-hearts{font-size:10px;letter-spacing:-1px}
 .ll2-hearts i{font-size:9px;letter-spacing:0;margin-left:2px}
 .ll2-vitals>span:last-child{white-space:nowrap}
 .ll2-opponent-name,.ll2-opponent-role{top:10px;min-height:36px;padding:3px 2px;font-size:11px;letter-spacing:1px}
 .ll2-opponent-name{left:-20px}.ll2-opponent-role{right:-20px}
 .ll2-person.active::before{font-size:9px;top:-13px}
 .ll2-phase{top:9px;gap:8px;font-size:9px}
 .ll2-phase b{font-size:13px;padding-right:8px;letter-spacing:2px}
 .ll2-phase small{font-size:9px}
 .ll2-center{left:25%;right:25%;top:30px;bottom:70px}
 .ll2-table-cards{gap:7px}
 .ll2-table-cards .ll2-card{--card-width:calc(var(--cw)*.8)}
 .ll2-table-cards small{font-size:8px;max-width:64px}
 .ll2-bottom{gap:10px;padding:0 9px 5px}
 .ll2-delays{font-size:9px;min-height:14px}
 .ll2-hand-label{height:13px;font-size:9px}
 .ll2-hand-label span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .ll2-hand{padding:11px 3px 3px;min-height:calc(var(--ch) + 14px)}
 .ll2-card-name{font-size:11px;padding:2px 0}
 .ll2-corner{font-size:14px;left:2px;top:2px;min-width:13px}
 .ll2-corner i{font-size:12px}
 .ll2-card.picked{transform:translateY(-8px)}
 .ll2-controls{left:calc(var(--left) + 19px);right:calc(var(--right) + 19px);gap:4px;bottom:calc(var(--dock) + 2px)}
 .ll2-prompt{display:block;padding:3px 6px;max-width:100%}
 .ll2-prompt>b{font-size:11px;line-height:1.25;display:block}
 .ll2-prompt small{font-size:9px;line-height:1.25;-webkit-line-clamp:1}
 .ll2-buttons{gap:6px}
 .ll2-buttons button{padding:4px 9px;min-height:30px;min-width:62px;font-size:11px}
 .ll2-skills{gap:4px;right:calc(100% + 6px)}
 .ll2-skills button{font-size:11px;min-height:30px;padding:4px 8px}
 .ll2-skills>span{font-size:9px;min-height:18px;padding:2px 5px}
 .ll2-skill-status{font-size:8px;padding:1px;bottom:42%}
 .ll2-choice-board{padding:5px 8px}
 .ll2-choice-board>b{font-size:12px;margin-bottom:4px}
 .ll2-options{gap:7px;padding:3px}
 .ll2-options.ll2-benxi-options{grid-template-columns:repeat(2,minmax(95px,1fr));gap:6px}
 .ll2-choice-board .ll2-card{--card-width:calc(var(--cw)*.78)}
 .ll2-card-back{width:calc(var(--cw)*.72);font-size:10px!important;padding:0 3px}
 .ll2-option small{font-size:8px}
 .ll2-text-option{min-height:33px!important;min-width:95px;font-size:10px!important}
 .ll2-event{left:25%;right:25%;top:54px;bottom:calc(var(--dock) + 67px);gap:4px}
 .ll2-event .ll2-card{--card-width:calc(var(--cw)*.9)}
 .ll2-event-cards .ll2-card{--card-width:calc(var(--cw)*.8)}
 .ll2-event p{font-size:11px;padding:4px 9px}
 .ll2-event>strong{font-size:17px}
 .ll2-judgement{width:440px;padding:9px 18px}
 .ll2-judgement header{font-size:18px;padding-bottom:6px}
 .ll2-judge-content{padding:10px 0 4px;gap:25px}
 .ll2-judge-content b{font-size:12px}
 .ll2-judge-content p{font-size:10px}
 .ll2-judge-card>strong{font-size:19px}
 .ll2-log{top:36px;bottom:10px;width:230px}
 .ll2-log p{font-size:10px}
 .ll2-draft{padding:12px}.ll2-draft h2{font-size:22px;margin:5px 0}.ll2-draft>p{font-size:10px;margin-bottom:8px}.ll2-draft>div{gap:12px;width:720px}.ll2-draft>div>button{min-height:155px;height:calc(var(--table-vh,1dvh)*62);padding:8px}.ll2-draft b{font-size:21px}.ll2-draft small{font-size:9px}.ll2-draft strong{font-size:14px;margin:3px 0}.ll2-draft span{font-size:10px;min-height:42px}.ll2-draft .ll2-eyebrow{min-height:0}.ll2-lobby{padding:12px}.ll2-lobby h1{font-size:40px;margin:5px 0}.ll2-lobby p{font-size:10px;margin:3px 0}.ll2-beans{font-size:23px;margin:8px 0}.ll2-beans small{font-size:9px}.ll2-start-buttons button{min-height:34px;padding:5px 20px}.ll2-lobby .ll2-muted{margin-top:8px;font-size:9px}.ll2-exchange{margin-top:5px;padding-top:5px;font-size:10px}.ll2-eyebrow{font-size:10px}.ll2-modal article{padding:15px 20px}.ll2-modal h2{font-size:19px}.ll2-modal p{font-size:11px;margin:7px 0}.ll2-lucky{padding:12px}.ll2-lucky h2{font-size:28px}.ll2-lucky-hand{min-height:100px;margin:7px 0}.ll2-lucky-hand .ll2-card{width:67px;height:96px}.ll2-shop-list{gap:6px}.ll2-shop-item{grid-template-columns:48px minmax(0,1fr) auto;min-height:64px;padding:6px 8px;gap:6px}.ll2-shop-icon{width:44px;height:44px;padding:2px}.ll2-shop-item b{font-size:12px}.ll2-shop-item small,.ll2-shop-item i{font-size:9px}.ll2-shop-item button{font-size:10px;min-height:27px;padding:3px 6px}.ll2-general-pool-list{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.ll2-general-pool-card{min-height:125px;padding:6px}.ll2-general-pool-card b{font-size:15px}.ll2-general-pool-card small,.ll2-general-pool-card span{font-size:8px}.ll2-general-pool-card i{font-size:8px;top:4px;right:4px}.ll2-general-pool-modal footer{margin-top:8px}.ll2-general-pool-modal footer small{font-size:9px}
}
@media (max-width:740px) and (orientation:landscape), (max-height:740px) and (max-width:700px) and (orientation:portrait){
 .ll2-shell{--left:128px;--right:130px}
 .ll2-opponents{left:4%;right:4%}
 .ll2-hand-label span{display:none}
 .ll2-header{gap:9px}
 .ll2-header nav{gap:3px}
 .ll2-header button{padding:2px 6px}
 .ll2-volume{display:none}.ll2-header em{display:none}.ll2-header>b{font-size:15px}
}

@media (max-width:640px) and (orientation:landscape), (max-height:640px) and (max-width:700px) and (orientation:portrait){
 .ll2-shop-list{grid-template-columns:1fr}
 .ll2-general-pool-list{grid-template-columns:repeat(3,minmax(0,1fr))}.ll2-general-pool-card{min-height:108px}
}
@media (prefers-reduced-motion:reduce) {
 .ll2-shell *{animation:none!important;transition:none!important}
}

/* Progression rewards share the outer game's inventory and equipment artwork. */
.ll2-growth{width:min(740px,100%);margin-top:18px;padding:12px 14px;background:#10201edb;border:1px solid #ac95616b;border-radius:6px;text-align:left;flex:none}
.ll2-growth>header,.ll2-reward-drop>header{display:flex;justify-content:space-between;gap:12px;align-items:center;color:#efdaa9;font-size:13px}
.ll2-growth>header>span,.ll2-reward-drop>header>span{font-size:11px;color:#b7c6af}
.ll2-milestones{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:9px 0}
.ll2-milestones>div{padding:8px 10px;background:#2b352aad;border:1px solid #82785470;border-radius:4px;display:grid;gap:5px}
.ll2-milestones b{font-size:12px;color:#e6d6aa}
.ll2-milestones i{font:10px system-ui;color:#adb5a1;float:right}
.ll2-milestones span{font-size:11px;color:#c6c7b2}
.ll2-milestones .earned{background:#34472b8c;border-color:#9caf6480}
.ll2-milestones .earned i{color:#b7d491}
.ll2-growth>small{font-size:10px;color:#a9b7a0;display:block}
.ll2-reward-rules{width:min(740px,100%);margin-top:10px;text-align:left;font-size:12px;color:#d5c8a5;flex:none}
.ll2-reward-rules summary{cursor:pointer;padding:5px 0;color:#e1ce9d}
.ll2-reward-rules p{font-size:11px!important;line-height:1.65!important;margin:6px 0!important}
.ll2-result-screen{gap:0}
.ll2-settlement{display:grid;grid-template-columns:210px minmax(0,1fr);gap:24px;align-items:center;width:min(740px,100%);flex:none}
.ll2-result-intro{display:flex;align-items:center;flex-direction:column;min-width:0}
.ll2-result-intro h1{font-size:42px;letter-spacing:3px;margin:12px 0}
.ll2-result-intro .ll2-result{font-size:25px;display:block;margin:12px 0 3px;white-space:nowrap}
.ll2-result-intro>small{font-size:11px;color:#b8b79d}
.ll2-result-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:20px}
.ll2-result-actions button{min-height:34px;font-size:12px;padding:5px 12px}
.ll2-reward-drop{padding:16px;background:#132320ed;border:1px solid #ad945e99;border-radius:6px;text-align:left;min-width:0}
.ll2-loot{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 0;padding:0}
.ll2-loot>li{display:flex;gap:8px;align-items:center;padding:8px;background:#303b2abd;border:1px solid #697b534d;border-radius:4px;min-width:0;font-size:12px}
.ll2-loot img{width:30px;height:30px;object-fit:contain;flex:none}
.ll2-loot>li>b,.ll2-loot>li>strong{margin-left:auto;white-space:nowrap;color:#f4d690}
.ll2-loot .ll2-loot-equip{grid-column:1/-1;background:#333528}
.ll2-loot .ll2-loot-equip.legendary{background:linear-gradient(110deg,#574328,#2c3526);border-color:#c1954999}
.ll2-loot-equip>div{display:grid;gap:3px;min-width:0}
.ll2-loot-equip small{font-size:10px;color:#c0c7ae;line-height:1.4}
.ll2-lobby .ll2-milestone-earned{font-size:11px;color:#d9c685;margin:10px 0 0}
.ll2-lobby .ll2-reward-empty{padding:25px 10px;margin:0;font-size:13px;line-height:1.8;color:#bfc8b6;text-align:center}
@media (max-height:600px) and (orientation:landscape), (max-width:600px) and (max-width:700px) and (orientation:portrait){
 .ll2-growth{margin-top:10px;padding:8px 10px}
 .ll2-growth>header,.ll2-reward-drop>header{font-size:12px}
 .ll2-growth>header>span,.ll2-reward-drop>header>span{font-size:10px}
 .ll2-milestones{margin:6px 0;gap:6px}
 .ll2-milestones>div{padding:5px 7px;gap:3px}
 .ll2-milestones b{font-size:11px}
 .ll2-milestones span,.ll2-milestones i,.ll2-growth>small{font-size:9px}
 .ll2-settlement{grid-template-columns:180px minmax(0,1fr);gap:16px}
 .ll2-result-intro h1{font-size:32px;margin:8px 0;letter-spacing:2px}
 .ll2-result-intro .ll2-result{font-size:21px;margin:8px 0 2px}
 .ll2-result-actions{margin-top:12px;gap:6px}
 .ll2-result-actions button{font-size:11px;min-height:30px;padding:4px 10px}
 .ll2-reward-drop{padding:10px}
 .ll2-loot{gap:5px;margin-top:8px}
 .ll2-loot>li{padding:5px 7px;font-size:11px;gap:6px;min-height:36px}
 .ll2-loot img{width:24px;height:24px}
 .ll2-loot-equip small{font-size:9px}
 .ll2-reward-rules{margin-top:4px;font-size:11px}
 .ll2-lobby .ll2-milestone-earned{font-size:10px;margin-top:6px}
}
@media (max-height:600px) and (orientation:landscape), (max-width:600px) and (max-width:700px) and (orientation:portrait){
 .ll2-result-intro>.ll2-eyebrow{display:none}
 .ll2-result-actions{margin-top:8px}
 .ll2-result-screen .ll2-growth{margin-top:8px;padding:6px 10px}
}
/* Keep full new-general descriptions readable in a short landscape viewport. */
@media (max-height:600px) and (orientation:landscape), (max-width:600px) and (max-width:700px) and (orientation:portrait){
 .ll2-general-info-modal{padding:12px}.ll2-general-info-modal article{width:min(720px,calc(calc(var(--table-vw,1vw)*100) - 24px));height:calc(calc(var(--table-vh,1dvh)*100) - 24px);grid-template-columns:minmax(145px,29%) minmax(0,1fr)}
 .ll2-general-info-content{padding:12px 16px 9px}.ll2-general-info-content h2{font-size:24px}.ll2-general-info-content>header{padding-bottom:6px}.ll2-general-info-content header p{font-size:10px}.ll2-general-info-skills{padding-top:7px}.ll2-general-info-skills section{padding:5px 7px;margin-bottom:4px}.ll2-general-info-skills b{font-size:13px;padding:1px 5px}.ll2-general-info-skills p{font-size:10px;line-height:1.35;margin-top:3px}.ll2-general-info-content footer{padding-top:5px;font-size:8px}.ll2-general-info-art span{left:7px;bottom:6px;font-size:10px}
 .ll2-draft>div.ll2-draft-cards>button{height:clamp(100px,calc(var(--table-vh,1dvh)*37),200px);min-height:100px;padding:5px}
 .ll2-draft-card{height:clamp(130px,calc(var(--table-vh,1dvh)*43),230px);min-height:130px;gap:4px}.ll2-draft-card>.ll2-draft-preview{min-height:100px;padding:5px}.ll2-draft-card>.ll2-draft-exchange{min-height:26px;padding:3px;font-size:10px}
 .ll2-draft-detail{margin-top:8px;padding:7px 10px;gap:12px}
 .ll2-draft-detail b{font-size:12px}
 .ll2-draft-detail p{font-size:10px;line-height:1.45;margin-top:3px}
 .ll2-draft-detail>button{min-height:32px;font-size:11px;padding:5px 10px}
}
@media (max-height:600px) and (orientation:landscape), (max-width:600px) and (max-width:700px) and (orientation:portrait){
 .ll2-choice-board .ll2-options{align-items:center}
 .ll2-choice-board .ll2-option{padding:0}
 .ll2-choice-board .ll2-option small{line-height:1;margin-top:2px}
 .ll2-choice-board .ll2-card{--card-width:calc(var(--cw)*.7)}
 .ll2-choice-board .ll2-card-back{width:calc(var(--cw)*.7)}
}
@media (max-height:350px) and (orientation:landscape), (max-width:350px) and (max-width:700px) and (orientation:portrait){
 .ll2-center:has(.ll2-choice-board){top:0;bottom:65px}
 .ll2-battlefield:has(.ll2-choice-board) .ll2-phase{display:none}
 .ll2-choice-board .ll2-card{--card-width:36px}
 .ll2-choice-board .ll2-card-back{width:36px}
 .ll2-choice-board .ll2-option small{display:none}
}

/* The covered lobby is idle while the table is open. */
body.landlord-open #game{visibility:hidden;content-visibility:hidden}
body.landlord-open #game *{animation-play-state:paused!important}
.ll2-hand{contain:layout style}
@media (prefers-reduced-motion:reduce){.ll2-shell *{animation:none!important;transition:none!important}}

/* Software landscape works inside WeChat and browsers with rotation locked.
   Geometry is derived from the visible overlay; no sensor/fullscreen API is needed. */
.table-rotated{
 position:absolute!important;left:0;top:0;
 width:var(--table-width)!important;height:var(--table-height)!important;
 transform-origin:0 0;transform:translateX(var(--table-height)) rotate(90deg);
}
.table-rotated .ll2-shell{padding:env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left) env(safe-area-inset-top)}
/* These horizontal strips use table-local touch coordinates when rotated. */
.table-rotated :is(.ll2-hand,.ll2-options:not(.ll2-benxi-options)),
.table-rotated :is(.ll2-hand,.ll2-options:not(.ll2-benxi-options)) *{touch-action:none}
.table-rotated .ll2-general-pool-modal article,.table-rotated .ll2-general-pool-modal article *{touch-action:none}

/* The five changed standard generals are explicitly marked in both mode pools. */
.ll2-general-pool-card.modified{border:2px solid #ffba48;box-shadow:0 0 12px #e5a32d66}
.ll2-modified-badge{display:block!important;background:#ffe09b;color:#633400;padding:3px 5px;border-radius:4px;font-size:12px;line-height:1.4;margin-top:5px}
.ll2-modified-hint{display:block;color:#ffd178;margin-top:8px}

/* Shared motion for Landlord and Raid: flight endpoints are actual table nodes. */
.ll2-shell .ll2-motion{position:absolute;pointer-events:none!important}
.ll2-shell .ll2-flight{left:0;top:0;transform-origin:center;will-change:transform,opacity;backface-visibility:hidden;contain:layout style;z-index:3}
.ll2-shell .ll2-flight .ll2-card{width:100%;height:100%;aspect-ratio:auto;filter:none!important;transform:none!important;opacity:1!important;margin:0;transition:none}
.ll2-shell .ll2-flight .ll2-card::after{display:none}
.ll2-shell .ll2-flight-back{background:#30281d url('/sanguosha/sanguosha-battle/image/system/card-back.png') center/100% 100%;border:1px solid #c6a669;border-radius:4px;box-shadow:0 3px 8px #0007}
.ll2-shell .ll2-trick-flow{inset:0;z-index:4}
.ll2-shell .ll2-trick-flow>.ll2-flight{z-index:auto}
.ll2-shell .ll2-trick-entry{position:absolute;isolation:isolate;overflow:visible;pointer-events:none}
.ll2-shell .ll2-trick-entry>.ll2-card{width:100%;height:100%;filter:none!important;transform:none!important;opacity:1!important;transition:none}
.ll2-shell .ll2-trick-status{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:3px 1px;background:#251f16de;border-top:1px solid #cfaa59;color:#ffe3a1;text-align:center;font:700 clamp(9px,calc(var(--table-vh,1dvh)*1.65),14px)/1.2 'STKaiti','KaiTi',serif;white-space:nowrap}
.ll2-shell .ll2-trick-entry[data-state=success]>.ll2-trick-status{color:#b6ffbe;border-color:#79d99a;background:#153c25e6}
.ll2-shell .ll2-trick-entry[data-state=cancelled]>.ll2-trick-status{color:#ffc2ab;border-color:#c26f61;background:#481f1de6}
.ll2-shell .ll2-trick-mark{position:absolute;z-index:3;inset:8% 4% 20%;display:grid;place-items:center;filter:drop-shadow(0 2px 2px #132d20) drop-shadow(0 0 5px #83ffb8)}
.ll2-shell .ll2-trick-mark svg{width:100%;height:100%;overflow:visible}
.ll2-shell .ll2-trick-mark path{fill:none;stroke:#60ed82;stroke-width:13;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;paint-order:stroke}
.ll2-shell .ll2-trick-mark.cancelled{filter:drop-shadow(0 2px 2px #381814) drop-shadow(0 0 4px #ff9975)}
.ll2-shell .ll2-trick-mark.cancelled path{stroke:#e77e68;stroke-width:10}
.ll2-shell .ll2-nullification{z-index:7;display:grid;place-items:center;transform-origin:center;filter:drop-shadow(0 4px 8px #0007)}
.ll2-shell .ll2-nullification>img{position:absolute;width:68%;height:83%;object-fit:contain;left:16%;top:2%;filter:drop-shadow(0 0 8px #ffe5a4)}
.ll2-shell .ll2-nullify-halo{position:absolute;inset:-16%;background:radial-gradient(circle,#fff2b754,#ebc86c57 28%,#c28e3840 44%,transparent 65%)}
.ll2-shell .ll2-nullify-ring{position:absolute;inset:3%;border-radius:50%;border:3px solid #ffe6a48c;box-shadow:0 0 14px #ffe18499,inset 0 0 12px #ffe6aa55;background:conic-gradient(from 15deg,transparent,#ffd78644 20%,transparent 28%,transparent 55%,#fff3af55 70%,transparent 83%)}
.ll2-shell .ll2-nullification>strong{position:absolute;left:-15%;right:-15%;bottom:0;text-align:center;color:#fff0c4;font:900 clamp(15px,calc(var(--table-vh,1dvh)*3.1),27px)/1.15 'STKaiti','KaiTi',serif;text-shadow:0 2px 4px #392318,0 0 8px #bf8b37}
.ll2-shell .ll2-nullification.counter .ll2-nullify-ring{border-color:#e9ffaac9;box-shadow:0 0 14px #d1ef7299,inset 0 0 12px #ffe6aa55}
.ll2-shell .ll2-arrival{border:2px solid #ffe19b;box-shadow:0 0 16px #f5b634b3,inset 0 0 10px #ffe2976b;border-radius:4px;z-index:4}
.ll2-shell .ll2-arrival.hp{border-color:#ff7559;box-shadow:0 0 12px #ee503bbb}
.ll2-shell .ll2-target-line{inset:0;width:100%;height:100%;z-index:1}
.ll2-shell .ll2-target-line line{stroke:#ffe2a1;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0;filter:drop-shadow(0 0 3px #f5a62c)}
.ll2-shell .ll2-float{z-index:7;text-align:center;white-space:nowrap;font:900 clamp(19px,calc(var(--table-vh,1dvh)*5),46px)/1 'STKaiti','KaiTi',serif;color:#ffe2a0;text-shadow:0 2px 3px #000,0 0 10px #58351a;transform:translate(-50%,-50%)}
.ll2-shell .ll2-float.damage{color:#ff493e;text-shadow:1px 2px #5d0d0c,0 0 5px #ffd3a066}
.ll2-shell .ll2-float.heal{color:#c2ed8c}
.ll2-shell .ll2-float.skill-detail{z-index:8;box-sizing:border-box;width:max-content;max-width:min(280px,55%);padding:8px 12px;white-space:normal;font:800 clamp(15px,calc(var(--table-vh,1dvh)*3),24px)/1.5 system-ui,sans-serif;background:#211a10ed;border:1px solid #e9bf70;border-radius:8px;box-shadow:0 3px 18px #0008}
.ll2-shell .ll2-impact{z-index:5;overflow:visible;transform-origin:center}
.ll2-shell .ll2-slash-stroke{position:absolute;left:-24%;top:44%;width:152%;height:8%;background:linear-gradient(90deg,transparent,#ffebac 18%,#fffef1 60%,transparent);clip-path:polygon(0 52%,84% 0,100% 42%,14% 100%);transform:rotate(-54deg);transform-origin:50% 50%;filter:drop-shadow(0 0 4px #ffdfa3)}
.ll2-shell .ll2-slash-stroke.echo{left:-6%;top:45%;width:122%;height:4%;transform:rotate(-62deg);opacity:.75}
.ll2-shell .ll2-impact.fire .ll2-slash-stroke{background:linear-gradient(90deg,transparent,#ff8b28,#fff2b2,transparent);filter:drop-shadow(0 0 7px #ff4c12)}
.ll2-shell .ll2-impact.thunder .ll2-slash-stroke{background:linear-gradient(90deg,transparent,#b4aaff,#f2f7ff,transparent);filter:drop-shadow(0 0 7px #776bff)}
.ll2-shell .ll2-hit-flare{position:absolute;left:24%;top:28%;width:52%;height:42%;background:#fff3cb;clip-path:polygon(48% 0,55% 30%,83% 8%,68% 42%,100% 50%,67% 58%,86% 91%,55% 72%,47% 100%,40% 70%,9% 91%,29% 60%,0 50%,31% 43%,12% 12%,41% 30%);opacity:.8}
.ll2-shell .ll2-death-cloud{z-index:6;overflow:visible}
.ll2-shell .ll2-death-cloud>i{position:absolute;inset:-8%;border-radius:50%;background:radial-gradient(ellipse,#ccd0c850,#6a726cc9 36%,#1f252485 56%,transparent 74%);filter:blur(5px)}
.ll2-shell .ll2-death-cloud>i:nth-child(2){inset:12% -12% -4%}
.ll2-shell .ll2-death-cloud>i:nth-child(3){inset:-14% 8% 22%}
.ll2-shell .ll2-death-cloud>strong{position:absolute;inset:0;display:grid;place-items:center;transform:rotate(-12deg);font:900 clamp(20px,calc(var(--table-vh,1dvh)*4.5),42px) 'STKaiti','KaiTi',serif;color:#deded3;text-shadow:0 2px 5px #000}
@media(prefers-reduced-motion:reduce){.ll2-card.picked::after,.ll2-person.targeted .ll2-portrait::after{animation:none!important}.ll2-death-cloud>i{display:none}.ll2-card{transition:none}.ll2-person{transition:none}}
/* 青书：自选等级、全部触发时机、合法效果。 */
.ll2-tian-writing{position:fixed;inset:36px 2% 12px;z-index:70;overflow:hidden;border-radius:22px;background:radial-gradient(ellipse at 50% 30%,#32384b80,#080910ee 78%);box-shadow:0 0 0 100vmax #020308b8;color:#f4e6bf;pointer-events:auto}
.ll2-tian-art{position:absolute;inset:0;background-size:contain;background-position:center top;background-repeat:no-repeat;opacity:.8;mask-image:linear-gradient(#000 65%,transparent)}
.ll2-tian-runes{position:absolute;inset:8% 5%;border:2px solid #d8bd6955;border-radius:50%;color:#ffde8977;text-align:center;padding-top:22px;font:24px serif;letter-spacing:16px;transform:rotate(-9deg);pointer-events:none;box-shadow:0 0 35px #e2c16b44,inset 0 0 35px #e2c16b33}
.ll2-tian-writing section{position:absolute;inset:auto 7% 3%;text-align:center}.ll2-tian-writing h2{margin:8px 0 18px;font:26px serif;text-shadow:0 2px 8px #000}.ll2-tian-writing small{color:#e4cb87;font-size:13px;letter-spacing:3px}.ll2-tian-writing p{font-size:18px;margin:18px 0 5px}
.ll2-tian-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.ll2-tian-options button{min-height:155px;border:2px solid #d5be82;background:linear-gradient(135deg,#343847ec,#8895adeb);border-radius:3px 60px 3px 60px;color:#fff9e4;font:22px/1.6 serif;padding:22px 16px;box-shadow:inset 0 0 0 4px #222638,0 4px 16px #0008;cursor:pointer;white-space:normal}.ll2-tian-options button.chosen{border-color:#fff2b5;box-shadow:0 0 25px #efcf74,inset 0 0 0 4px #d7bd61;transform:translateY(-5px)}
.ll2-tian-inspect article{max-width:740px}.ll2-tian-books{display:grid;gap:12px}.ll2-tian-books section{border:1px solid #ccae6855;border-radius:10px;background:#161d2f;padding:15px}.ll2-tian-books section b{color:#efd18b}.ll2-tian-books p{line-height:1.65}.ll2-tian-count{position:absolute;left:4px;top:35px;padding:3px 5px;color:#ffe5a4;background:#141a2dd9;font-size:11px;border-radius:4px}/* 查看入口避开头像底部装备：自己放技能栏首位，其他角色放头像左上角。 */
.ll2-shell .ll2-tian-peek{position:absolute;left:4px;top:4px;z-index:4;min-height:26px;padding:3px 5px;font-size:10px;line-height:1.2;background:#141a2deb;color:#ffe5a4;border:1px solid #d7bc75}
.ll2-shell .ll2-skills button.ll2-tian-skill{border-color:#d7bc75;background:linear-gradient(#51452d,#27291f);color:#ffe5a4}
.ll2-shell .ll2-own .ll2-skills button.ll2-tian-skill{min-height:26px;padding:2px 1px}
.ll2-shell:has(.ll2-tian-writing) .ll2-controls{display:none}
@media(max-height:520px){.ll2-tian-writing{inset:30px 2% 6px}.ll2-tian-writing section{inset:auto 5% 2%}.ll2-tian-writing h2{font-size:18px;margin:4px 0 8px}.ll2-tian-options{gap:12px}.ll2-tian-options button{min-height:90px;font-size:15px;padding:10px;border-radius:2px 30px 2px 30px}.ll2-tian-writing p{font-size:13px;margin:7px 0 1px}.ll2-tian-art{background-size:auto 140%;opacity:.65}.ll2-tian-writing small{font-size:10px}.ll2-tian-runes{font-size:16px;letter-spacing:6px}.ll2-tian-inspect article{max-height:85vh;overflow:auto}.ll2-tian-books{grid-template-columns:repeat(3,minmax(0,1fr))}.ll2-tian-books section{padding:8px;font-size:12px}}
@media(max-width:600px) and (min-height:521px){.ll2-tian-writing{inset:40px 2% 10px}.ll2-tian-options{gap:8px}.ll2-tian-options button{min-height:125px;font-size:16px;padding:10px}.ll2-tian-writing h2{font-size:20px}.ll2-tian-writing section{left:4%;right:4%}}

.ll2-tian-confirm{margin-top:8px;min-width:120px;border:1px solid #d9b867;background:linear-gradient(#826024,#483312);color:#ffedb8;padding:7px 22px;border-radius:6px;cursor:pointer}.ll2-tian-confirm:disabled{opacity:.45}.ll2-shell:has(.ll2-tian-writing) .ll2-bottom{opacity:.16;pointer-events:none}

.ll2-tian-level{display:inline-block;border:1px solid #d8be7b99;border-radius:5px;padding:3px 10px;background:#242030d9;color:#ffe0a0;font:600 15px/1.4 sans-serif;letter-spacing:1px}
.ll2-tian-options .ll2-tian-level{display:table;margin:0 auto 12px}
.ll2-tian-timing-label{display:block}
.ll2-tian-effect-picker{container-type:size;container-name:tian-picker;inset:36px 3% 12px;background:linear-gradient(120deg,#131925f0,#292734f5);border:1px solid #c2a66888}
.ll2-tian-effect-picker .ll2-tian-art{opacity:.18;background-position:left center;background-size:auto 110%;mask-image:linear-gradient(90deg,#000,transparent 70%)}
.ll2-tian-effect-picker .ll2-tian-effect-panel{position:absolute;inset:22px 24px 16px;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:16px;text-align:left;max-width:1200px;margin:auto}
.ll2-tian-effect-heading{display:flex;align-items:center;gap:16px}
.ll2-tian-effect-picker h2{font-size:24px;margin:10px 0 6px}
.ll2-tian-effect-picker header p{margin:0;font:14px/1.5 sans-serif;color:#c6bda5}
.ll2-tian-effect-grid{min-height:0;overflow:auto;overscroll-behavior:contain;touch-action:pan-y;scrollbar-color:#c6a967 #171d2b;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;grid-auto-rows:max-content;align-content:start;padding:4px 6px 8px 2px;overflow-x:hidden}
.ll2-shell .ll2-tian-effect{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;height:auto;gap:10px;text-align:left;min-width:0;min-height:90px;white-space:normal;overflow-wrap:anywhere;border:1px solid #a6926b88;border-radius:10px;padding:16px 14px;background:linear-gradient(135deg,#384052f5,#242c3cf5);color:#fff2d4;font:17px/1.65 'Songti SC',serif;cursor:pointer;box-shadow:inset 0 1px #ffffff0c}
.ll2-tian-effect>span:last-child{min-width:0;white-space:normal}
.ll2-tian-effect-number{flex:none;color:#bea66e;font:14px/1.9 sans-serif}
.ll2-shell .ll2-tian-effect:hover,.ll2-shell .ll2-tian-effect:focus-visible{border-color:#ffe3a2;outline:2px solid #e9c77a;outline-offset:1px}
.ll2-shell .ll2-tian-effect.chosen{border-color:#ffe7a0;background:linear-gradient(135deg,#655639,#3c352c);box-shadow:inset 0 0 0 1px #efd38e,0 0 12px #e9c77a33}
.ll2-tian-effect-picker footer{display:flex;align-items:center;gap:16px;border-top:1px solid #b59b6155;padding-top:12px}
.ll2-tian-effect-picker .ll2-tian-selected{flex:1;margin:0;color:#efdeb0;font:15px/1.5 sans-serif}
.ll2-tian-effect-picker .ll2-tian-confirm{flex:none;margin:0;min-height:42px}
@media(max-height:520px){.ll2-tian-options .ll2-tian-level{font-size:12px;margin-bottom:7px;padding:2px 8px}.ll2-tian-effect-picker{inset:30px 2% 6px}.ll2-tian-effect-picker .ll2-tian-effect-panel{inset:10px 14px 10px;gap:8px}.ll2-tian-effect-heading{gap:12px}.ll2-tian-effect-picker h2{font-size:18px;margin:5px 0 3px}.ll2-tian-effect-picker header p{font-size:12px}.ll2-tian-effect-grid{gap:8px}.ll2-shell .ll2-tian-effect{font-size:14px;line-height:1.5;padding:10px;min-height:65px;gap:7px}.ll2-tian-effect-number{font-size:12px}.ll2-tian-effect-picker footer{padding-top:7px;gap:12px}.ll2-tian-effect-picker .ll2-tian-selected{font-size:12px}.ll2-tian-effect-picker .ll2-tian-confirm{min-height:34px;padding:6px 16px}.ll2-tian-effect-heading .ll2-tian-level{font-size:12px}}
@media(max-width:700px){.ll2-tian-effect-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ll2-tian-effect-picker .ll2-tian-effect-panel{left:12px;right:12px}}

/* 天书满额：三册位置、剩余次数和组合技能，点击旧书直接替换。 */
.ll2-tian-replacing{inset:24px 3% 10px;border-radius:0;background:radial-gradient(ellipse at 50% 40%,#1b1b2380,#06070bd9 80%)}
.ll2-tian-replacing .ll2-tian-art{opacity:.95;filter:brightness(.8);background-size:cover;background-position:center 28%;mask-image:radial-gradient(ellipse at 50% 40%,#000 30%,#000a 55%,transparent 78%)}
.ll2-tian-replacing .ll2-tian-runes{inset:5% 11% 10%;border-color:#d8bd6990;box-shadow:0 0 40px #e2c16b66,inset 0 0 45px #e2c16b55;color:#ffdc8477}
.ll2-tian-replacing .ll2-tian-replace-panel{inset:auto 10% 4%;max-width:1100px;margin:auto}
.ll2-tian-replacing .ll2-tian-options{gap:24px;align-items:end}
.ll2-tian-replacing .ll2-tian-uses{margin-bottom:12px;color:#fff4d5;font:22px/1.3 'STKaiti','KaiTi',serif;text-shadow:0 2px 5px #000}
.ll2-tian-replacing .ll2-tian-book{display:block;width:100%;height:clamp(160px,27vh,245px);min-height:0;border:3px solid #ead59b;border-radius:3px 66px 3px 66px;background:linear-gradient(135deg,#353645eb,#758199ee);padding:20px 18px;font:23px/1.5 'STKaiti','KaiTi',serif;box-shadow:inset 0 0 0 4px #45465b,inset 0 0 0 6px #d2bb7d88,0 4px 16px #0009;overflow:auto;overflow-wrap:anywhere}
.ll2-tian-replacing .ll2-tian-book span+span::before{content:'，'}
.ll2-tian-replacing .ll2-tian-book:not(:disabled):hover,.ll2-tian-replacing .ll2-tian-book:focus-visible{border-color:#fff0b7;box-shadow:0 0 24px #edcd78,inset 0 0 0 4px #c6a85c;outline:2px solid #fff3c3;outline-offset:3px}
.ll2-tian-replacing .empty .ll2-tian-book{opacity:1!important;color:#8e8b80;border-color:#b9aa7666;background:linear-gradient(135deg,#19191ff5,#30353df5);box-shadow:inset 0 0 0 4px #303039,0 4px 16px #0009;cursor:default}
.ll2-tian-replacing .ll2-tian-replace-hint{position:relative;margin:24px 0 14px;font:23px/1.4 'STKaiti','KaiTi',serif;letter-spacing:2px;text-shadow:0 2px 4px #000,0 0 8px #000}
.ll2-tian-replace-hint::before{content:'';position:absolute;z-index:-1;left:4%;right:4%;top:55%;height:8px;border:1px solid #b99b5b99;border-radius:3px;background:linear-gradient(90deg,#b3822cbb,#e1bb62aa,#8b682244)}
.ll2-tian-replacing .ll2-tian-cancel{min-width:190px;padding:10px 32px;background:linear-gradient(#fffdf2,#ece7cf);border:3px double #c9a95a;border-radius:4px;clip-path:polygon(9% 0,91% 0,100% 50%,91% 100%,9% 100%,0 50%);color:#725526;font:24px/1.15 'STKaiti','KaiTi',serif;letter-spacing:10px;text-indent:10px;cursor:pointer;box-shadow:inset 0 0 0 2px #fff7cc}
.ll2-tian-replacing .ll2-tian-cancel:hover,.ll2-tian-replacing .ll2-tian-cancel:focus-visible{background:#fff7d8;outline:2px solid #ffdf8a;outline-offset:3px}.ll2-tian-replacing .ll2-tian-cancel:disabled{opacity:.5;cursor:wait}
@media(max-height:520px){.ll2-tian-replacing{inset:25px 2% 5px}.ll2-tian-replacing .ll2-tian-replace-panel{inset:auto 10% 3%}.ll2-tian-replacing .ll2-tian-options{gap:15px}.ll2-tian-replacing .ll2-tian-uses{font-size:16px;margin-bottom:6px}.ll2-tian-replacing .ll2-tian-book{height:clamp(108px,31vh,155px);padding:10px 12px;font-size:16px;line-height:1.35;border-radius:2px 40px 2px 40px}.ll2-tian-replacing .ll2-tian-replace-hint{font-size:16px;margin:13px 0 8px}.ll2-tian-replacing .ll2-tian-cancel{font-size:18px;min-width:150px;padding:7px 25px}}
@media(max-width:600px) and (min-height:521px){.ll2-tian-replacing .ll2-tian-replace-panel{inset:auto 3% 5%}.ll2-tian-replacing .ll2-tian-options{gap:8px}.ll2-tian-replacing .ll2-tian-book{height:230px;padding:12px 8px;font-size:16px;line-height:1.45;border-radius:2px 32px 2px 32px}.ll2-tian-replacing .ll2-tian-uses{font-size:16px}.ll2-tian-replacing .ll2-tian-replace-hint{font-size:17px}.ll2-tian-replacing .ll2-tian-art{background-size:auto 100%}}

/* 软件横屏按弹窗的实际尺寸排版，避免竖屏设备仍使用高屏样式。 */
@container tian-picker (max-height:520px){
 .ll2-tian-effect-panel{inset:10px 14px 10px!important;gap:8px!important}
 .ll2-tian-effect-heading{gap:12px}
 .ll2-tian-effect-panel h2{font-size:18px;margin:5px 0 3px}
 .ll2-tian-effect-panel header p{font-size:12px}
 .ll2-tian-effect-grid{gap:8px}
 .ll2-shell .ll2-tian-effect{font-size:14px;line-height:1.5;padding:10px;min-height:65px;gap:7px}
 .ll2-tian-effect-number{font-size:12px}
 .ll2-tian-effect-panel footer{padding-top:7px;gap:12px}
 .ll2-tian-effect-panel .ll2-tian-selected{font-size:12px}
 .ll2-tian-effect-panel .ll2-tian-confirm{min-height:34px;padding:6px 16px}
 .ll2-tian-effect-heading .ll2-tian-level{font-size:12px}
}
@container tian-picker (min-width:701px){.ll2-tian-effect-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
.table-rotated .ll2-tian-effect-grid,.table-rotated .ll2-tian-effect-grid *{touch-action:none}

/* Full private book descriptions for simultaneous trigger ordering. */
.ll2-tian-order-picker .ll2-tian-effect-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.ll2-shell .ll2-tian-order-book{display:flex;flex-direction:column;gap:14px;min-height:180px}
.ll2-tian-order-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-width:0}
.ll2-tian-order-meta b{font-size:20px;color:#ffe6a2;white-space:normal}
.ll2-tian-order-meta small{font:13px/1.5 sans-serif;color:#cfbc94;white-space:normal}
.ll2-tian-order-rule{display:grid;gap:4px;width:100%;min-width:0;text-align:left;white-space:normal;overflow-wrap:anywhere}
.ll2-tian-order-rule small{font:12px/1.5 sans-serif;color:#bca575;letter-spacing:1px}
.ll2-tian-order-rule>span+small{margin-top:8px}
@container tian-picker (max-height:420px){
 .ll2-shell .ll2-tian-order-book{min-height:145px;gap:9px}
 .ll2-tian-order-meta b{font-size:17px}
 .ll2-tian-order-meta small{font-size:11px}
 .ll2-tian-order-rule small{font-size:10px}
 .ll2-tian-order-rule>span+small{margin-top:4px}
}
@container tian-picker (max-width:550px){.ll2-tian-order-picker .ll2-tian-effect-grid{grid-template-columns:minmax(0,1fr)}}

.ll2-tian-level-name{display:block;font-size:30px;white-space:normal}
.ll2-tian-level-count{display:block;margin-top:10px;font:15px/1.6 sans-serif;color:#f5e2b0;white-space:normal}
@media(max-height:520px){.ll2-tian-level-name{font-size:22px}.ll2-tian-level-count{margin-top:5px;font-size:12px}}
.table-rotated .ll2-tian-level-name{font-size:22px}
.table-rotated .ll2-tian-level-count{margin-top:5px;font-size:12px}

.ll2-shell .ll2-qicai-copy-tag{position:relative;border-color:#a381df}
.ll2-shell .ll2-qicai-copy-label{position:absolute;left:calc(100% + 2px);top:0;white-space:nowrap;padding:2px 3px;border:1px solid #8966b0;border-radius:2px;background:#24172de8;color:#e1c7ff;font:600 9px/1.2 sans-serif;pointer-events:none}
