@import "https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@500;600;700;900&family=ZCOOL+XiaoWei&display=swap";
:root{--ink:#171713;--paper:#f0eadc;--paper-bright:#fffaf0;--cinnabar:#b53527;--gold:#caa45d;--muted:#777164;--font-game:"STKaiti", "KaiTi", "ZCOOL XiaoWei", "Noto Serif SC", serif;--safe-bottom:max(18px, env(safe-area-inset-bottom));--safe-left:max(12px, env(safe-area-inset-left));--safe-right:max(18px, env(safe-area-inset-right))}*{box-sizing:border-box}html{background:var(--ink)}body{color:var(--ink);background:var(--ink);overscroll-behavior:none;margin:0;font-family:Noto Serif SC,Songti SC,serif}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.entry-screen,.room-screen,.game-screen{width:100%;max-width:760px;min-height:100svh;margin:0 auto;position:relative;overflow:hidden}.entry-screen{color:var(--paper-bright);background:#332c24}.entry-image{background:url(/art/journey-login-v2.png) 50%/cover no-repeat;animation:14s ease-in-out infinite alternate image-breathe;position:absolute;inset:0;transform:scale(1.015)}.entry-shade{background:linear-gradient(#13100b14 0 42%,#0f0e0bad 76%,#0f0e0bf5);position:absolute;inset:0}.entry-panel{z-index:1;grid-template-rows:auto minmax(0,1fr) auto;min-height:0;display:grid;position:absolute;inset:0}.brand{padding:max(32px, env(safe-area-inset-top)) 24px 0;text-shadow:0 2px 22px #00000052;position:relative}.brand>span{letter-spacing:.28em;font-size:12px}.brand h1{font-family:var(--font-game);letter-spacing:-.04em;margin:8px 0 4px;font-size:clamp(58px,18vw,96px);font-weight:400;line-height:1.02}.brand p{letter-spacing:.18em;margin:12px 0;font-size:14px}.entry-actions{padding:20px 20px var(--safe-bottom);font-family:var(--font-game);grid-row:3;position:relative}.entry-form-title{text-align:center;text-shadow:0 2px 16px #00000075;margin-bottom:10px}.entry-form-title span{color:#e3c77f;letter-spacing:.42em;font-size:9px}.entry-form-title h2{color:#fff5dc;letter-spacing:.16em;margin:2px 0 0;font-size:27px;font-weight:400}.field-label{color:#fffaf0b8;letter-spacing:.16em;margin-bottom:8px;font-size:12px;display:block}.text-field,.join-row input{color:var(--paper-bright);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffff1a;border:0;outline:0;box-shadow:inset 0 0 0 1px #ffffff29}.text-field{border-radius:12px;width:100%;height:52px;padding:0 16px}.text-field::placeholder,.join-row input::placeholder{color:#ffffff75}.primary-button{color:#fff6df;letter-spacing:.08em;background:linear-gradient(135deg,#9d3025,#6f211b);border:1px solid #ffdc8e47;border-radius:12px;justify-content:center;align-items:center;gap:9px;width:100%;height:54px;margin-top:12px;font-size:15px;font-weight:700;display:flex;box-shadow:0 12px 28px #61161057,inset 0 1px #ffffff1f}.primary-button svg,.join-row button svg,.start-button svg{width:18px}.capacity-picker{align-items:center;gap:6px;height:42px;margin-top:10px;display:flex}.capacity-picker span{color:#ffffff94;flex:1;font-size:12px}.capacity-picker button{color:#ffffffa3;background:#ffffff0f;border:1px solid #ffffff29;border-radius:8px;width:54px;height:32px;font-size:11px}.capacity-picker button.active{color:#fff;border-color:var(--gold);background:#caa45d38}.join-row{grid-template-columns:1fr 92px;gap:8px;margin-top:10px;display:grid}.join-row input{letter-spacing:.12em;text-transform:uppercase;border-radius:12px;min-width:0;height:48px;padding:0 14px}.join-row button{color:#fff;background:0 0;border:1px solid #fff3;border-radius:12px;justify-content:center;align-items:center;gap:6px;display:flex}button:disabled{opacity:.42}.room-screen{min-height:100svh;padding:max(28px, env(safe-area-inset-top)) 20px calc(150px + var(--safe-bottom));color:var(--paper-bright);background:linear-gradient(#14130fc7,#14130ff0),url(/art/journey-hero.png) 55%/cover;overflow-y:auto}.room-header>span{color:var(--gold);letter-spacing:.22em;font-size:12px}.room-code{color:#fff;letter-spacing:.08em;background:0 0;border:0;align-items:center;gap:10px;margin:8px 0 0;padding:0 0 19px;font-family:ZCOOL XiaoWei,serif;font-size:clamp(42px,14vw,70px);line-height:1;transition:color .2s;display:flex;position:relative}.room-code svg{opacity:.55;width:18px}.room-code small{color:#ffffff7a;letter-spacing:.12em;font-family:Noto Serif SC,serif;font-size:9px;position:absolute;bottom:0;left:2px}.room-code.is-copied{color:#f1d685}.room-code.is-copied svg{opacity:1;filter:drop-shadow(0 0 8px #f1d6858c)}.room-code.is-copied small{color:#efd483}.room-header p{color:#ffffff8c;margin:12px 0 24px;font-size:13px}.player-list{border-top:1px solid #ffffff24}.player-row{border-bottom:1px solid #ffffff1f;align-items:center;gap:12px;min-height:58px;display:flex}.player-row.empty{opacity:.34}.player-seal{width:38px;height:38px;color:var(--gold);border:1px solid #caa45db3;border-radius:4px;place-items:center;display:grid}.player-seal svg{width:19px}.player-seal.is-bot{color:#d8d0bd;border-color:#d8d0bd70;border-radius:50%}.player-name{flex:1;font-weight:700}.player-name small{color:var(--gold);margin-left:8px;font-weight:500}.owner-mark{width:16px;color:var(--gold)}.remove-bot{color:#ffffff7a;background:0 0;border:0;place-items:center;width:28px;height:28px;padding:0;display:grid}.remove-bot svg{width:15px}.ready-state{color:#ffffff73;justify-content:flex-end;align-items:center;gap:4px;min-width:72px;font-size:12px;display:flex}.is-ready .ready-state{color:#d8c28d}.ready-state svg{width:14px}.add-bot{color:#d8c28d;background:#caa45d0f;border:1px dashed #caa45d70;border-radius:10px;justify-content:center;align-items:center;gap:7px;width:100%;height:46px;margin-top:14px;font-size:12px;display:flex}.add-bot svg{width:16px}.rule-notice{color:#d9caa4;border-bottom:1px solid #ffffff1f;gap:10px;margin-top:18px;padding:14px 0;display:flex}.rule-notice>svg{flex:none;width:18px}.rule-notice strong{font-size:13px}.rule-notice p{color:#ffffff80;margin:4px 0 0;font-size:11px;line-height:1.6}.room-actions{z-index:5;width:min(100%,760px);padding:14px 20px var(--safe-bottom);background:linear-gradient(#0000,#12110efa 24%);grid-template-columns:52px 1fr 1.2fr;gap:9px;display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.room-actions button{border-radius:12px;height:52px;font-weight:700}.ready-button{color:#fff;background:#ffffff0f;border:1px solid #fff3}.leave-button{color:#fff9;background:#ffffff0a;border:1px solid #ffffff24}.leave-button svg{width:17px}.ready-button.active{color:#d6c28e;border-color:#a98c52}.start-button{color:#fff;background:var(--cinnabar);border:0;justify-content:center;align-items:center;gap:7px;display:flex}.game-screen{grid-template-rows:40px 58px minmax(0, 1fr) calc(142px + env(safe-area-inset-bottom));width:100dvw;max-width:none;height:100dvh;min-height:0;color:var(--paper);isolation:isolate;background:radial-gradient(circle at 50% 38%,#685b3a6b,#0000 31%),linear-gradient(#131410e6,#0c0d0bfa),url(/art/journey-hero.png) 50%/cover;display:grid}.game-screen:before,.game-screen:after{content:"";z-index:-1;filter:blur(18px);pointer-events:none;background:#e1d8c212;border-radius:50%;width:38vw;height:12vw;animation:16s ease-in-out infinite alternate cloud-drift;position:absolute}.game-screen:before{top:22%;left:-10%}.game-screen:after{animation-delay:-8s;top:48%;right:-12%}.game-topbar{min-width:0;padding:max(4px, env(safe-area-inset-top)) var(--safe-right) 0 var(--safe-left);letter-spacing:.08em;background:#0809073d;border-bottom:1px solid #ffffff14;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;font-size:10px;display:grid}.mini-code{color:#ffffff80}.game-meta{align-items:center;gap:12px;display:flex}.direction{color:#d6c28e;align-items:center;gap:6px;display:flex}.direction svg{width:15px}.audio-controls{justify-self:end;gap:5px;display:flex}.audio-controls button{color:#ffffff59;background:#ffffff0d;border:0;border-radius:8px;place-items:center;width:34px;height:32px;padding:0;display:grid}.audio-controls button.is-on{color:#dfc987;background:#caa45d1f}.audio-controls svg{width:15px}.opponents{z-index:3;pointer-events:none;min-width:0;position:relative;overflow:visible}.opponent{opacity:.78;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#080a087a;border:1px solid #ffffff1a;border-radius:13px;align-items:center;gap:7px;width:126px;min-height:48px;padding:5px 7px;transition:opacity .25s,border-color .25s,box-shadow .25s,transform .25s;display:flex;position:absolute;top:4px;box-shadow:0 5px 18px #0003}.opponent-count-3 .seat-0{right:max(var(--safe-right), 26px);top:30px}.opponent-count-3 .seat-1{left:50%;transform:translate(-50%)}.opponent-count-3 .seat-2{left:max(var(--safe-left), 26px);top:30px}.opponent-count-4 .seat-0{right:max(var(--safe-right), 18px);top:74px}.opponent-count-4 .seat-1{right:20%}.opponent-count-4 .seat-2{left:20%}.opponent-count-4 .seat-3{left:max(var(--safe-left), 18px);top:74px}.opponent-count-5 .seat-0{right:max(var(--safe-right), 14px);top:86px}.opponent-count-5 .seat-1{right:21%}.opponent-count-5 .seat-2{left:50%;transform:translate(-50%)}.opponent-count-5 .seat-3{left:21%}.opponent-count-5 .seat-4{left:max(var(--safe-left), 14px);top:86px}.opponent.is-current{z-index:5;opacity:1;background:#4a3018e0;border-color:#e2be68eb;transform:translateY(2px)scale(1.08);box-shadow:0 0 0 2px #caa45d2e,0 0 24px #ebb5456b,inset 0 0 18px #ffdd8e1a}.opponent-count-3 .seat-1.is-current,.opponent-count-5 .seat-2.is-current{transform:translate(-50%)translateY(2px)scale(1.08)}.opponent.is-current:after{content:"";z-index:-1;border:1px solid #efca7080;border-radius:16px;animation:1.25s ease-in-out infinite current-player-ring;position:absolute;inset:-4px}.opponent-avatar{background:linear-gradient(145deg,#ffffff29,#ffffff0a);border:1px solid #ffffff4d;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:12px;display:grid;box-shadow:inset 0 0 0 2px #00000026}.opponent.is-current .opponent-avatar{color:#2b2114;background:#e2c272;border-color:#f0d68f;box-shadow:0 0 15px #eec45b8c}.opponent-info{flex:1;grid-template-rows:15px 24px;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:3px;min-width:0;display:grid;position:relative}.opponent-info>b{color:#ffffffe6;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:9px;overflow:hidden}.opponent-info>em{color:#ffe6a5;letter-spacing:.08em;white-space:nowrap;font-size:7px;font-style:normal;font-weight:800}.opponent-counters{grid-column:1/-1;align-items:end;gap:8px;display:flex}.mini-pile{color:#f5e5b9;place-items:center;width:25px;height:20px;display:grid;position:relative}.mini-pile:before,.mini-pile>i{content:"";background:linear-gradient(145deg,#34463d,#202d27);border:1px solid #dabe7ba6;border-radius:3px;position:absolute;inset:3px 2px 0}.mini-pile:before{opacity:.66;transform:translate(-3px,2px)rotate(-5deg)}.mini-score>i{background:linear-gradient(145deg,#72443a,#352823)}.mini-pile>strong{z-index:2;text-shadow:0 1px 3px #000;font-size:10px;line-height:1;position:relative}.mini-pile>small{color:#ffffff80;font-size:7px;position:absolute;bottom:3px;left:27px}.table-center{grid-template-rows:24px minmax(0,1fr);place-items:center;min-width:0;min-height:0;display:grid;position:relative;overflow:hidden}.turn-callout{color:#ffffffad;text-align:center;white-space:nowrap;justify-content:center;align-items:center;gap:9px;width:min(86vw,660px);min-height:0;margin:0;font-size:11px;display:flex;overflow:hidden}.turn-callout>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.thinking-state{color:#d5bd7c;flex:none;font-size:9px;font-style:normal}.thinking-state span{vertical-align:bottom;width:13px;animation:1.25s steps(4,end) infinite thinking-dots;display:inline-block;overflow:hidden}.pile-stack{scrollbar-width:none;justify-content:safe center;align-items:center;width:100%;height:100%;min-height:0;padding:4px max(46px,7vw) 7px;display:flex;overflow:auto hidden}.pile-stack::-webkit-scrollbar{display:none}.pile-stack>div{flex:0 0 22px;transition:all .2s}.pile-stack>div:last-child{flex-basis:62px}.pile-stack .xiyou-card{box-shadow:0 7px 16px #0000006b}.pile-stack .is-active-card{transform:translateY(-5px)}.pile-stack .is-active-card .xiyou-card{box-shadow:0 0 0 2px var(--gold), 0 10px 20px #0000007a}.pile-stage-anchor{place-items:center;width:100%;height:100%;display:grid}.table-resources{z-index:2;inset:33px max(var(--safe-right), 24px) 8px max(var(--safe-left), 24px);pointer-events:none;justify-content:flex-end;align-items:center;display:flex;position:absolute}.score-pile-widget,.draw-pile-widget{color:#ffffff80;letter-spacing:.08em;justify-items:center;gap:5px;width:62px;font-size:8px;display:grid}.score-pile-stack,.draw-pile-stack{place-items:center;width:40px;height:52px;display:grid;position:relative}.score-pile-stack:before,.score-pile-stack i,.draw-pile-stack:before,.draw-pile-stack i{content:"";background:linear-gradient(145deg,#313b33,#1c241f);border:1px solid #d6bb79a3;border-radius:5px;position:absolute;inset:0;box-shadow:0 5px 11px #00000052,inset 0 0 0 2px #dec89014}.score-pile-stack:before,.draw-pile-stack:before{opacity:.58;transform:translate(-4px,3px)rotate(-4deg)}.score-pile-stack i:first-child,.draw-pile-stack i:first-child{opacity:.76;transform:translate(4px,1px)rotate(3deg)}.score-pile-stack i:nth-child(2){background:linear-gradient(145deg,#70443a,#332923)}.draw-pile-stack i:nth-child(2){background:repeating-linear-gradient(45deg,#34463d 0 5px,#28382f 5px 10px)}.score-pile-stack b,.draw-pile-stack b{z-index:3;color:#f2dfaa;background:#67231beb;border:1px solid #ddbc6fb8;border-radius:50%;place-items:center;width:27px;height:27px;font-size:11px;display:grid;position:relative}.draw-pile-stack b{color:#22271f;background:#dbc58d}.empty-play{color:#ffffff4d;border:1px dashed #ffffff38;border-radius:10px;align-content:center;place-items:center;gap:3px;width:64px;height:86px;display:grid}.empty-play span{font-family:ZCOOL XiaoWei,serif;font-size:27px}.empty-play small{letter-spacing:.1em;font-size:8px}.my-zone{min-width:0;min-height:0;padding:0 var(--safe-right) max(4px, env(safe-area-inset-bottom)) var(--safe-left);background:linear-gradient(#0000,#080907f5 24%);grid-template-rows:25px minmax(0,1fr);grid-template-columns:minmax(0,1fr) 208px;display:grid;position:relative}.my-score-pile{z-index:7;pointer-events:none;width:48px;position:absolute;top:calc(50% + 12.5px);bottom:auto;left:50%;transform:translate(-50%,-50%)}.my-zone:before{content:"";inset:18px var(--safe-right) 2px var(--safe-left);pointer-events:none;border:1px solid #0000;border-radius:18px 18px 0 0;transition:border-color .25s,box-shadow .25s;position:absolute}.my-zone.is-current:before{border-color:#caa45d61;animation:1.8s ease-in-out infinite my-turn-glow;box-shadow:inset 0 0 22px #caa45d14,0 -5px 28px #caa45d1a}.my-status{z-index:9;pointer-events:none;background:#0b0d0ab8;border:1px solid #ffffff1a;border-radius:13px;place-items:center;min-width:112px;height:24px;padding:0 12px;display:grid;position:absolute;top:1px;left:50%;transform:translate(-50%)}.my-status span{color:#ffffffa3;white-space:nowrap;font-size:10px;font-weight:700}.my-zone.is-current .my-status{background:#733c1deb;border-color:#e7c46cb8;animation:1.3s ease-in-out infinite my-status-pulse;box-shadow:0 0 18px #e7b24257}.my-zone.is-current .my-status span{color:#fff0bf;font-size:12px}.hand-scroller{scrollbar-width:none;grid-area:2/1;gap:5px;min-width:0;height:100%;padding:15px 8px 8px 5px;display:flex;overflow:visible}.hand-scroller::-webkit-scrollbar{display:none}.hand-order-item{touch-action:pan-y;cursor:grab;flex:0 0 60px;width:60px;height:100%;position:relative}.hand-order-item:active{cursor:grabbing}.turn-actions{grid-area:2/2;grid-template-columns:.72fr 1fr 1.08fr;align-content:end;gap:5px;padding:0 2px 8px 7px;display:grid}.turn-actions button{white-space:nowrap;text-overflow:clip;border-radius:24px;min-width:0;height:48px;font-weight:800;overflow:hidden}.play-button{color:#fff;background:var(--cinnabar);border:0;box-shadow:0 8px 22px #00000059}.collect-button{color:#ffffffd1;background:#ffffff14;border:1px solid #ffffff3d;font-size:11px}.sort-button{color:#d8c48f;background:#caa45d14;border:1px solid #caa45d47;justify-content:center;align-items:center;gap:3px;padding:0 5px;font-size:9px;display:flex}.sort-button svg{width:13px}.game-screen .xiyou-card{border-radius:8px;flex-basis:60px;width:60px}.game-screen .card-face{font-size:12px;top:4px;left:5px}.game-screen .card-art{inset:19px 5px 21px}.game-screen .card-art b{font-size:29px}.game-screen .card-art i{font-size:27px}.game-screen .card-name{max-width:46px;font-size:7px;bottom:5px;left:5px}.game-screen .card-stamp{font-size:5px;bottom:3px;right:3px}.game-screen .card-joker .card-face{font-size:7px}.hand-scroller .xiyou-card.is-selected{z-index:6}.hand-scroller .xiyou-card.is-playable{z-index:2;border-color:#f1d17c;box-shadow:0 8px 18px #00000057,0 0 0 2px #f1d17cdb,0 0 14px #efb73c7a}.hand-scroller .xiyou-card.is-playable:after{content:"可";z-index:8;color:#3d2a12;opacity:.68;background:#f2d27d;border-radius:50%;place-items:center;width:14px;height:14px;font-size:8px;font-weight:900;animation:1.35s ease-in-out infinite playable-indicator;display:grid;position:absolute;top:3px;right:3px;box-shadow:0 2px 5px #0000004d}.hand-scroller .xiyou-card.is-playable.is-selected{z-index:7;box-shadow:0 14px 26px #00000075,0 0 0 3px #fff0ae,0 0 26px #efb73cb8}.portrait-guard{display:none}.table-effects{z-index:15;pointer-events:none;position:fixed;inset:0;overflow:hidden}.stage-card{aspect-ratio:.68;transform-origin:50%;will-change:transform, opacity;width:60px;margin:-44px 0 0 -30px;position:fixed;top:0;left:0}.stage-card .xiyou-card{width:100%;height:100%}.ceremony{z-index:500;color:#f4dfab;background:radial-gradient(circle,#601b14f0 0 43%,#601b1457 44% 56%,#0000 57%);border-radius:50%;align-content:center;place-items:center;width:116px;height:116px;margin:-58px 0 0 -58px;display:grid;position:absolute;top:42%;left:50%;box-shadow:0 9px 20px #00000057}.ceremony:before,.ceremony:after{content:"";border:1px solid #e1c07094;border-radius:50%;position:absolute;inset:8px}.ceremony:after{opacity:.42;border-style:dashed;inset:-13px}.ceremony>span{text-shadow:0 2px 12px #42100c;font-family:ZCOOL XiaoWei,serif;font-size:48px;line-height:.9}.ceremony>b{letter-spacing:.2em;margin-top:7px;font-size:9px}.ceremony-reverse{background:radial-gradient(circle,#1a4c4cf5 0 43%,#266f6a57 44% 56%,#0000 57%)}.ceremony-collect{color:#33271b;background:radial-gradient(circle,#e5d2a2fa 0 43%,#caa45d52 44% 56%,#0000 57%)}.ceremony-bomb{color:#fff1bb;background:radial-gradient(circle,#881a11fa 0 39%,#e0532385 40% 58%,#0000 59%)}.card-flight{aspect-ratio:.68;filter:drop-shadow(0 12px 13px #0000008c);width:60px;margin:-44px 0 0 -30px;position:fixed;top:0;left:0}.flight-faces,.collect-stack{width:100%;height:100%;position:relative}.flight-faces>span{transform-origin:50% 85%;display:block;position:absolute;inset:0}.flight-faces .xiyou-card{width:100%;height:100%}.collect-stack>i{background:repeating-linear-gradient(45deg,#2e3b34 0 5px,#27332d 5px 10px);border:2px solid #b99754;border-radius:7px;position:absolute;inset:0;box-shadow:inset 0 0 0 2px #ebd59f2e}.collect-stack>strong{z-index:8;color:#f3dfac;background:#812a21;border:1px solid #caa45d;border-radius:50%;place-items:center;width:30px;height:30px;margin:-15px;font-size:12px;display:grid;position:absolute;top:50%;left:50%}.impact-ring{z-index:490;border:4px double #edb750e6;border-radius:50%;width:130px;height:130px;margin:-65px;position:absolute;top:42%;left:50%;box-shadow:0 0 26px #d7411fcc,inset 0 0 24px #d7411fb3}.xiyou-card{aspect-ratio:.68;scroll-snap-align:center;color:#27231b;text-align:left;background:#e9dfc9;border:1px solid #dac189b8;border-radius:10px;flex:0 0 84px;width:84px;padding:0;position:relative;overflow:hidden;box-shadow:0 7px 16px #00000047,inset 0 0 0 3px #50381d1a}.xiyou-card:before{content:"";opacity:.9;background:radial-gradient(circle at 50% 28%,#ccaf70,#58462d 55%,#221e18);border-radius:22px 22px 7px 7px;position:absolute;inset:22px 6px 25px}.card-face{z-index:3;font-family:Georgia,serif;font-size:15px;font-weight:800;position:absolute;top:5px;left:7px}.card-art{z-index:2;color:#f0ddb1;border-radius:18px 18px 6px 6px;place-items:center;display:grid;position:absolute;inset:25px 8px 27px;overflow:hidden}.card-art b{text-shadow:0 2px 10px #00000059;font-family:ZCOOL XiaoWei,serif;font-size:39px;font-weight:400}.card-art i{font-family:ZCOOL XiaoWei,serif;font-size:34px;font-style:normal}.card-name{z-index:3;white-space:nowrap;text-overflow:ellipsis;max-width:62px;font-size:9px;font-weight:800;position:absolute;bottom:7px;left:7px;overflow:hidden}.card-stamp{z-index:3;color:#9d3025;writing-mode:vertical-rl;border:1px solid #9d3025;padding:2px;font-size:6px;line-height:1;position:absolute;bottom:5px;right:5px}.card-character:before{background-image:linear-gradient(#281d121f,#211b1475),url(/art/journey-hero.png);background-size:630px}.portrait-wukong:before{background-position:52% 70%}.portrait-tangseng:before{background-position:67% 66%}.portrait-bajie:before{background-position:82% 69%}.portrait-sha:before{background-position:96% 65%}.card-monster{color:#eee3cb;background:#3a372f;border-color:#8a795a}.card-monster:before{background:radial-gradient(circle at 50% 30%,#8a2c25 0 8%,#0000 9%),radial-gradient(at 50% 45%,#111 0 27%,#0000 28%),linear-gradient(145deg,#77603c,#23231f 62%)}.card-monster .card-stamp{color:#d0ad67;border-color:#d0ad67}.card-joker{color:#f6ead1;background:#24231f;border-color:#d0ad67}.card-joker:before{background:radial-gradient(circle at 50% 32%,#e6c170db,#0000 22%),linear-gradient(145deg,#7f2722,#25231d 62%)}.card-joker .card-face{max-width:34px;font-family:Noto Serif SC,serif;font-size:10px;line-height:1.1}.card-joker .card-stamp{color:#d0ad67;border-color:#d0ad67}.card-skip{background:#e8e2d6}.card-skip:before{background:conic-gradient(from 20deg,#b53527,#e2c98f,#b53527,#332b20)}.card-reverse{background:#dce2df}.card-reverse:before{background:conic-gradient(from 180deg,#1f5054,#c7b77e,#1f5054)}.xiyou-card.is-selected{box-shadow:0 13px 25px #0000006b, 0 0 0 2px var(--gold)}.xiyou-card.is-compact{border-radius:14px;flex-basis:118px;width:118px}.xiyou-card.is-compact .card-face{font-size:21px;top:8px;left:10px}.xiyou-card.is-compact .card-art b,.xiyou-card.is-compact .card-art i{font-size:48px}.xiyou-card.is-compact .card-name{max-width:88px;font-size:12px;bottom:10px;left:10px}.xiyou-card:disabled{opacity:1}.status-error{z-index:9;color:#f1b2a7;margin:9px 0 0;font-size:11px;line-height:1.45;position:relative}.my-zone>.status-error{right:var(--safe-right);background:#531410e0;border-radius:7px;max-width:270px;margin:0;padding:5px 9px;position:absolute;bottom:64px}.winner-overlay{z-index:20;padding:max(16px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#080907a8;place-items:center;display:grid;position:fixed;inset:0}.winner-sheet{width:min(680px,100%);max-height:100%;color:var(--ink);text-align:center;background:linear-gradient(145deg,#fffaf0,#e7dcc5);border:1px solid #caa45da8;border-radius:20px;padding:18px 22px;overflow-y:auto;box-shadow:0 24px 70px #00000094,inset 0 0 0 3px #734d230f}.winner-sheet span{color:var(--cinnabar);letter-spacing:.2em;font-size:12px}.winner-sheet h2{margin:5px 0 14px;font-family:ZCOOL XiaoWei,serif;font-size:clamp(28px,7vh,38px);line-height:1.05}.winner-sheet button{color:#fff;background:var(--cinnabar);border:0;border-radius:12px;justify-content:center;align-items:center;gap:8px;width:100%;height:48px;display:flex}.winner-sheet>p{color:var(--muted);margin:0 0 16px;font-size:11px}.result-board{text-align:left;border-top:1px solid #48371f29;border-bottom:1px solid #48371f29;margin:0 0 14px;overflow:hidden}.result-head,.result-row{grid-template-columns:44px minmax(100px,1.5fr) repeat(3,minmax(58px,.72fr));align-items:center;gap:6px;min-height:30px;padding:0 10px;display:grid}.result-head{color:#817866;letter-spacing:.08em;background:#40311d0d;min-height:26px;font-size:9px}.result-row{border-top:1px solid #48371f1a;font-size:11px}.result-row>strong{color:#76684c;background:#4b3b2214;border-radius:50%;place-items:center;width:22px;height:22px;display:grid}.result-row>b{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.result-row>span{color:#625c50}.result-row.is-winner{color:#85291f;background:linear-gradient(90deg,#b535271a,#0000)}.result-row.is-winner>strong{color:#fff4d6;background:var(--cinnabar);box-shadow:0 3px 10px #7e221940}.winner-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.winner-actions .exit-game{color:var(--ink);background:0 0;border:1px solid #1717132e}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes image-breathe{0%{transform:scale(1.03)}to{transform:scale(1.08)translate(-1%)}}@keyframes cloud-drift{0%{transform:translate(-5%)scale(.9)}to{transform:translate(12%)scale(1.08)}}@keyframes turn-pulse{50%{opacity:.55;transform:scale(1.55)}}@keyframes my-turn-glow{50%{border-color:#eccc7ead;box-shadow:inset 0 0 30px #caa45d1f,0 -5px 34px #caa45d2b}}@keyframes thinking-dots{0%{width:0}to{width:13px}}@keyframes current-player-ring{50%{opacity:.25;transform:scale(1.08)}}@keyframes my-status-pulse{50%{transform:translate(-50%)scale(1.06);box-shadow:0 0 26px #eeb74380}}@keyframes my-status-pulse-left{50%{box-shadow:0 0 22px #eeb74380}}@keyframes playable-indicator{50%{opacity:1}}@media (orientation:landscape) and (max-height:600px){.entry-screen{width:100dvw;max-width:none;height:100dvh;min-height:0}.entry-image{animation:none}.entry-shade{background:linear-gradient(90deg,#0d0c090f 0 28%,#0e0d0a24 40%,#0f0e0b5c 52%,#0e0d0aa3 65%,#0c0c0adb 80%,#090a08f5 100%),linear-gradient(#0000 45%,#0c0c0a4d)}.entry-panel{left:auto;right:max(18px, env(safe-area-inset-right));top:max(9px, env(safe-area-inset-top));bottom:max(10px, env(safe-area-inset-bottom));grid-template-rows:auto minmax(0,1fr);width:min(42vw,370px);display:grid}.brand{text-align:center;width:100%;padding:0 10px 7px}.brand>span{color:#e2c782;font-size:9px}.brand h1{letter-spacing:.08em;white-space:nowrap;margin-top:3px;font-size:clamp(34px,min(9vh,6vw),54px);line-height:1.08}.brand h1 br{display:none}.brand p{margin-top:4px;font-size:10px}.entry-actions{scrollbar-width:none;background:0 0;border-top:1px solid #e7c77d40;border-bottom:1px solid #e7c77d2e;flex-direction:column;grid-row:2;justify-content:safe center;width:100%;min-height:0;padding:8px 16px 10px;display:flex;overflow-y:auto}.entry-actions>*{flex-shrink:0}.entry-actions::-webkit-scrollbar{display:none}.entry-form-title{margin-bottom:6px}.entry-form-title h2{font-size:22px}.text-field{height:44px}.primary-button{height:46px;margin-top:8px}.capacity-picker{height:34px;margin-top:5px}.join-row{margin-top:7px}.join-row input{height:44px}.room-screen{width:100dvw;max-width:none;height:100dvh;min-height:0;padding:max(18px, env(safe-area-inset-top)) max(22px, env(safe-area-inset-right)) 76px max(22px, env(safe-area-inset-left));grid-template-rows:auto auto 1fr;grid-template-columns:minmax(210px,.8fr) minmax(360px,1.45fr);column-gap:28px;display:grid;overflow:hidden}.room-header{grid-row:1/2}.room-code{font-size:clamp(42px,10vh,62px)}.room-header p{margin:8px 0 12px}.player-list{grid-area:1/2/4;min-height:0;overflow-y:auto}.player-row{min-height:46px}.player-seal{width:32px;height:32px}.add-bot,.rule-notice,.room-screen>.status-error{grid-column:1}.add-bot{margin-top:4px}.rule-notice{margin-top:8px;padding:8px 0}.room-actions{width:100%;padding:8px max(22px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom));grid-template-columns:52px minmax(150px,240px) minmax(150px,260px);justify-content:end}.room-actions button{height:48px}.game-screen:before,.game-screen:after{display:none}.opponent{-webkit-backdrop-filter:none;backdrop-filter:none}.my-zone.is-current:before,.my-zone.is-current .my-status{animation:none}}@media (orientation:landscape) and (max-height:390px){.game-screen{grid-template-rows:36px 48px minmax(0, 1fr) calc(134px + env(safe-area-inset-bottom))}.game-topbar{padding-top:0}.opponents{padding-top:2px}.opponent{width:116px;min-height:43px;padding:3px 5px}.opponent-avatar{width:28px;height:28px}.opponent-info{grid-template-rows:13px 22px}.table-center{grid-template-rows:20px minmax(0,1fr)}.turn-callout{font-size:10px}.table-resources{top:26px;bottom:3px}.score-pile-stack,.draw-pile-stack{width:35px;height:46px}.my-zone{grid-template-rows:22px minmax(0,1fr);grid-template-columns:minmax(0,1fr) 204px}.hand-scroller{padding-top:14px}.turn-actions button{height:44px}.game-screen .xiyou-card,.hand-order-item{flex-basis:54px;width:54px}.pile-stack>div:last-child{flex-basis:54px}.card-flight,.stage-card{width:54px;margin-top:-40px;margin-left:-27px}.winner-overlay{padding-top:10px;padding-bottom:10px}.winner-sheet{width:min(680px,88vw);padding:12px 18px}.winner-sheet h2{margin-bottom:9px;font-size:28px}.winner-sheet>p{margin-bottom:8px}.winner-sheet button{height:40px}.result-board{margin-bottom:9px}.result-head,.result-row{min-height:27px}}@media (orientation:landscape) and (max-height:380px){.entry-panel{width:min(46vw,350px);top:max(5px, env(safe-area-inset-top));bottom:max(5px, env(safe-area-inset-bottom))}.brand{padding-bottom:3px}.brand>span{font-size:8px}.brand h1{margin:1px 0 0;font-size:30px}.brand p{display:none}.entry-actions{padding:4px 12px 5px}.entry-form-title{margin-bottom:3px}.entry-form-title span{font-size:7px}.entry-form-title h2{font-size:18px}.field-label{margin-bottom:4px;font-size:10px}.text-field{height:40px}.capacity-picker{height:30px;margin-top:3px}.capacity-picker button{height:28px}.primary-button{height:42px;margin-top:5px}.join-row{margin-top:5px}.join-row input{height:40px}.game-screen{grid-template-rows:30px 40px minmax(0, 1fr) calc(112px + env(safe-area-inset-bottom))}.game-topbar{padding-top:0}.audio-controls button{width:29px;height:27px}.opponent{gap:5px;width:104px;min-height:38px;padding:2px 4px}.opponent-avatar{width:24px;height:24px;font-size:10px}.opponent-info{grid-template-rows:12px 19px}.opponent-info>b{font-size:8px}.mini-pile{width:22px;height:18px}.opponent-count-4 .seat-0,.opponent-count-5 .seat-0,.opponent-count-4 .seat-3,.opponent-count-5 .seat-4{top:58px}.table-center{grid-template-rows:18px minmax(0,1fr)}.turn-callout{font-size:8px}.table-resources{top:20px;right:var(--safe-right);bottom:2px}.score-pile-stack,.draw-pile-stack{width:29px;height:38px}.score-pile-widget,.draw-pile-widget{width:48px}.my-zone{grid-template-rows:20px minmax(0,1fr);grid-template-columns:minmax(0,1fr) 190px}.my-status{left:calc(var(--safe-left) + 4px);min-width:98px;height:21px;padding:0 9px;top:0;transform:none}.my-status span{font-size:9px}.my-zone.is-current .my-status{animation:none}.my-zone.is-current .my-status span{font-size:10px}.hand-scroller{padding-top:11px}.game-screen .xiyou-card,.hand-order-item{flex-basis:46px;width:46px}.game-screen .card-face{font-size:10px;top:3px;left:4px}.game-screen .card-art{inset:16px 4px 18px}.game-screen .card-art b,.game-screen .card-art i{font-size:23px}.game-screen .card-name{max-width:38px;font-size:6px;bottom:4px;left:4px}.stage-card{width:46px;margin-top:-34px;margin-left:-23px}.turn-actions{grid-template-columns:.7fr 1fr 1.08fr;gap:4px;padding-bottom:5px}.turn-actions button{height:36px;font-size:9px}.sort-button svg{width:11px}.my-score-pile{top:calc(50% + 10px);bottom:auto}.ceremony{width:92px;height:92px;margin:-46px 0 0 -46px;top:39%}.ceremony>span{font-size:38px}}@media (orientation:portrait) and (max-width:900px){.game-screen>:not(.portrait-guard){visibility:hidden}.portrait-guard{z-index:100;color:var(--paper-bright);text-align:center;background:radial-gradient(circle at 50% 35%,#4f4531,#141510 62%);align-content:center;place-items:center;gap:9px;display:grid;position:fixed;inset:0}.portrait-guard svg{width:44px;height:44px;color:var(--gold);margin-bottom:8px;animation:1.8s ease-in-out infinite alternate rotate-phone}.portrait-guard strong{font-family:ZCOOL XiaoWei,serif;font-size:28px;font-weight:400}.portrait-guard span{color:#ffffff8c;letter-spacing:.12em;font-size:12px}}@keyframes rotate-phone{to{transform:rotate(90deg)}}@media (min-width:761px) and (min-height:601px){body{background:#0d0e0c}.entry-screen,.room-screen,.game-screen{box-shadow:0 0 80px #000000b3}.brand h1{font-size:88px}.entry-actions{max-width:520px;margin:0 auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
