:root{font-family:"Segoe UI","Microsoft JhengHei",sans-serif;background:#15372e;color:#f4ecd7;--accent:#e7bc77;--muted:#b4c4ad;--line:#c1ae713e;--surface:#1c4134;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 70% 0,#517c4b3b,transparent 65%),#15372e}button,select{font:inherit;touch-action:manipulation}button,a,summary,input,select{-webkit-tap-highlight-color:transparent}button{border:1px solid var(--line);border-radius:6px;background:#203f32;color:inherit;padding:11px 18px;cursor:pointer;min-height:44px}button:hover{background:#36543c}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #f8cf85;outline-offset:3px}.primary{background:var(--accent);color:#23382c;border-color:var(--accent);font-weight:700}.primary:hover{background:#f1d299}a{color:inherit;text-decoration:none}.topbar{max-width:1180px;margin:auto;padding:21px 24px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.brand{font-size:22px;letter-spacing:1px;font-weight:750}.topbar button{background:transparent;border-radius:24px;padding:9px 22px;font-size:12px}main{max-width:1180px;margin:auto;padding:22px 24px 32px}h1,h2,h3,p{margin-top:0}.lobby-hero{height:420px;position:relative;display:flex;align-items:center}.lobby-hero h1{font-size:clamp(35px,4.4vw,59px);line-height:1.45;letter-spacing:2px;margin:0 0 25px 22px;z-index:1}.cast-stage{position:absolute;right:0;top:10px;width:57%;height:395px;border:1px solid var(--line);border-radius:50% 50% 3% 3%;background:radial-gradient(ellipse,#b6ad6b22,transparent 70%)}.cast-stage:before{content:"";position:absolute;inset:13px;border:1px solid #c1ae711c;border-radius:inherit}.cast{position:absolute;bottom:0;object-fit:contain;object-position:bottom;width:50%;height:100%;filter:drop-shadow(0 10px 8px #0003)}.cast-0{left:-3%;height:88%;z-index:1}.cast-1{left:25%;z-index:3}.cast-2{right:-3%;height:91%;z-index:2}.games{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:12px 0 22px}.game-card{min-height:93px;background:#eee2c4;color:#244031;display:flex;align-items:center;gap:23px;padding:20px 28px;box-shadow:0 6px 0 #0b241b50}.game-card:hover{background:#fcf2d7;transform:translateY(-2px)}.game-card>span{font:700 35px Georgia}.game-card strong{font-size:25px}.game-card>b{font:25px sans-serif;margin-left:auto}.lobby-controls{display:flex;gap:15px;align-items:center;justify-content:center;margin:27px 0}.lobby-controls label{display:flex;gap:10px;align-items:center;font-size:13px}.lobby-controls button{font-size:13px}.lobby-controls button span{font-size:11px;color:var(--muted);margin-left:15px}select{background:#1c382c;color:#f1ead7;border:1px solid #97a68168;border-radius:5px;padding:10px;min-height:44px}#resume-area{text-align:center;padding:8px}.settings{border-top:1px solid var(--line);padding:18px 0;color:var(--muted);font-size:12px}.settings summary,.history-panel summary{cursor:pointer;min-height:30px}.setting-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;padding:20px 0}.setting-grid label{display:flex;align-items:center;gap:10px;font-size:14px;min-height:44px}.setting-grid input{width:20px;height:20px;accent-color:var(--accent)}.game-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:10px}.game-toolbar h1{font-size:25px;margin:0 0 6px}.game-toolbar p{font-size:12px;color:var(--muted);margin:0}.toolbar-buttons{display:flex;gap:8px}.toolbar-buttons button{font-size:12px;padding:9px 16px}.opponents{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin:0 30px -16px;position:relative;z-index:2}.opponent{border:1px solid var(--line);border-radius:10px;background:#182f25;display:flex;gap:14px;padding:10px;align-items:center;min-width:0;box-shadow:0 6px 20px #0002}.opponent.active{border-color:var(--accent);box-shadow:0 0 0 2px #d6b57666}.opponent.finished{border-style:dashed}.opponent img{width:76px;height:76px;object-fit:contain;border-radius:7px;background:#a5a77d18}.opponent>div{flex:1;min-width:0}.opponent h3{font-size:15px;margin:0 0 6px}.opponent small{font-size:10px;color:var(--muted)}.opponent p{display:flex;justify-content:space-between;font-size:12px;margin:8px 0 0;color:var(--accent)}.opponent p>span{color:#d1d8bc}.table{position:relative;border:8px solid #796041;outline:1px solid #ae9664;border-radius:130px;background:radial-gradient(ellipse,#32664c,#204734);min-height:255px;padding:35px 50px 22px;box-shadow:inset 0 0 50px #0e302a55,0 10px 20px #0002}.table:before{content:"";position:absolute;inset:10px;border:1px solid #c2b7763b;border-radius:inherit;pointer-events:none}.table-top{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;position:relative;z-index:1}#center-cards{min-height:120px;display:flex;align-items:center;justify-content:center;gap:10px;margin-top:9px;color:#d5cda54a;font-size:24px}.trick-slot{display:flex;flex-direction:column;align-items:center;gap:6px}.trick-slot small{font-size:10px;color:#cbdbc8}#table-caption{text-align:center;font-size:12px;color:#d4debf;margin:10px 0 0;min-height:18px}.speech{position:absolute;bottom:9px;left:50%;transform:translateX(-50%);border:1px solid var(--line);border-radius:20px;padding:8px 20px;background:#18382cf2;color:#f3e7ca;font-size:12px;text-align:center;max-width:90%;width:max-content;z-index:4}.status-line{text-align:center;padding:19px 5px;font-size:14px;color:var(--accent);min-height:55px}.hand-panel{padding:16px 22px 20px;background:#132d247a;border:1px solid #d3bd7c20;border-radius:12px}.hand-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.hand-title h2{font-size:14px;margin:0}.hand-title small{font-size:11px;color:var(--accent);margin-left:8px}#your-score{font:17px Georgia;color:var(--accent)}.hand{display:flex;justify-content:center;gap:6px;padding-top:13px;min-height:123px;flex-wrap:wrap}.card{width:70px;height:100px;flex:none;background:linear-gradient(135deg,#fffffb,#ece8d9);color:#1f2e2a;border:1px solid #d6d5c2;border-radius:6px;padding:7px;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-start;font:700 26px/1 Georgia;box-shadow:0 4px 5px #0004;min-height:0}.card .suit{align-self:flex-end;font-size:31px}.card.red{color:#b32f38}.card:hover{background:#fffdf7}.card:disabled{opacity:.65}.hand .card{width:calc((100% - 72px)/13);max-width:73px;height:105px}.card.selected,.card.hovered{transform:translateY(-13px);border-color:#e6bc70;box-shadow:0 0 0 2px #e6bc70,0 9px 12px #0004}.card.hovered:not(.selected){box-shadow:0 0 0 2px #b2c998,0 9px 12px #0004}.actions{display:flex;gap:8px;align-items:center;margin-top:19px}.actions button,.actions select{font-size:12px;padding:10px 14px}.actions .primary{min-width:100px}.actions #selection-label{margin-right:auto;font-size:11px;color:var(--muted)}.hint-text{margin:12px 0 0;font-size:12px;color:var(--muted);line-height:1.6}.hint-text:empty{display:none}.history-panel{padding:21px 0 0;font-size:12px;color:var(--muted)}.history-panel ol{max-height:240px;overflow:auto;font-size:12px;line-height:1.9}.review-actions{display:flex;gap:10px;margin:12px 0}.review-actions button{font-size:11px}.result{position:relative;margin-top:16px;border:1px solid var(--line);background:#244636;border-radius:12px;padding:26px;display:flex;gap:30px;align-items:center}.result-character{width:32%;height:330px;object-fit:contain;align-self:flex-end}.result-content{flex:1;min-width:0}.result h2{font-size:23px;color:#f3d9a6}.score-table{border-collapse:collapse;width:100%;margin:15px 0 22px;font-size:14px}.score-table th,.score-table td{text-align:right;padding:12px 5px;border-bottom:1px solid var(--line)}.score-table th{font-size:11px;color:var(--muted);font-weight:400}.score-table th:nth-child(2),.score-table td:nth-child(2){text-align:left}.score-table td:first-child{text-align:center;width:50px;color:var(--accent)}dialog{background:#1a372b;color:#f5eed8;border:1px solid #b9a26a7d;border-radius:12px;width:min(720px,94vw);max-height:90dvh;padding:25px}dialog::backdrop{background:#071a14bb;backdrop-filter:blur(4px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.dialog-head h2{font-size:22px;margin:0}.dialog-head button{border:0;background:transparent;font-size:18px}#character-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}#character-grid button{padding:8px 5px 12px;display:flex;flex-direction:column;align-items:center;gap:8px;position:relative}#character-grid button[aria-pressed=true]{border-color:var(--accent);background:#b6a26022}#character-grid button[aria-pressed=true]:after{content:'✓';position:absolute;top:6px;right:9px;color:var(--accent)}#character-grid img{width:90px;height:85px;object-fit:contain}#character-grid strong{font-size:13px}#character-grid small{font-size:10px;color:var(--muted)}#character-status{font-size:12px;color:var(--accent);margin:18px 0}#rules-body li{line-height:1.9;font-size:14px;margin-bottom:14px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:700px){.topbar{padding:14px 17px}.brand{font-size:18px}.topbar button{padding:8px 17px}main{padding:16px 12px 24px}.lobby-hero{height:425px;display:block}.lobby-hero h1{font-size:34px;margin:12px 0 0 12px;line-height:1.4}.cast-stage{top:147px;width:100%;height:263px}.games{gap:10px;grid-template-columns:1fr;margin:4px 0 20px}.game-card{min-height:70px;padding:15px 23px;gap:22px}.game-card strong{font-size:22px}.game-card>span{font-size:30px}.lobby-controls{gap:9px;justify-content:space-between;margin:23px 0}.lobby-controls button{padding:10px;font-size:12px}.lobby-controls button span{font-size:10px;margin-left:7px}.lobby-controls label{font-size:11px;gap:5px}.lobby-controls select{padding:8px;font-size:12px}.setting-grid{grid-template-columns:1fr;gap:9px}.setting-grid label{font-size:13px}.game-toolbar{margin-bottom:15px}.game-toolbar h1{font-size:22px}.game-toolbar p{font-size:10px}.toolbar-buttons{gap:5px}.toolbar-buttons button{padding:8px 12px;font-size:11px}.opponents{gap:7px;margin:0 0 -5px}.opponent{flex-direction:column;padding:8px 5px;gap:4px;border-radius:7px;text-align:center}.opponent img{width:57px;height:57px}.opponent>div{width:100%}.opponent h3{font-size:12px;margin:4px 0 3px}.opponent small{display:none}.opponent p{font-size:10px;margin-top:6px;padding:0 4px}.table{border-width:5px;border-radius:70px;min-height:228px;padding:26px 13px 20px}.table:before{inset:7px}.table-top{font-size:10px;padding:0 10px}#center-cards{gap:6px;min-height:105px}.card{width:48px;height:73px;padding:5px;font-size:21px}.card .suit{font-size:25px}.trick-slot small{font-size:9px}#table-caption{font-size:11px;margin-top:6px}.speech{font-size:10px;padding:6px 12px;bottom:5px;line-height:1.5}.status-line{font-size:12px;padding:16px 5px;min-height:48px}.hand-panel{padding:13px 10px 16px}.hand-title{margin-bottom:12px}.hand-title h2{font-size:12px}.hand{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:15px 4px;padding-top:12px;min-height:180px}.hand .card{width:100%;max-width:none;height:80px;padding:5px 3px;font-size:23px}.hand .card .suit{font-size:23px}.card.selected,.card.hovered{transform:translateY(-10px)}.actions{flex-wrap:wrap;gap:6px;margin-top:17px}.actions select{max-width:105px;padding:8px 5px;font-size:11px}.actions button{padding:9px 10px;font-size:12px}.actions .primary{min-width:68px;flex:1}.actions #selection-label{font-size:10px;min-width:0}.hint-text{font-size:11px}.result{padding:17px 13px;gap:9px;display:block;overflow:hidden;min-height:360px}.result-character{position:absolute;right:-8px;top:0;width:115px;height:145px;opacity:.9}.result-content{position:relative;z-index:1}.result h2{font-size:21px;min-height:105px;margin:0;padding:15px 98px 0 0;line-height:1.6}.score-table{font-size:12px;margin:0 0 19px}.score-table th,.score-table td{padding:12px 4px}.score-table th{font-size:10px}.score-table td:first-child{width:38px}dialog{padding:18px}.dialog-head h2{font-size:20px}#character-grid{gap:7px}#character-grid img{width:60px;height:66px}#character-grid strong{font-size:11px}#character-grid small{font-size:8px}#rules-body li{font-size:13px}.review-actions button{font-size:10px}}
@media(hover:none){.pc-only{display:none!important}}
@media(prefers-reduced-motion:no-preference){.card{transition:transform .12s,box-shadow .12s}.opponent{transition:border-color .2s}.game-card{transition:transform .15s}}

@media (hover: none), (pointer: coarse){.setting-grid .pc-only{display:none}}
#hand .card.selected::after,#hand .card.hovered::after{content:"";position:absolute;left:0;right:0;top:100%;height:16px}
