:root{font-family:Microsoft YaHei,PingFang SC,sans-serif;color:#f8efd9;background:#081c2d;font-synthesis:none;--gold:#dbb76b;--ink:#102c44;--paper:#fff9ed}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{min-height:40px;border:1px solid #a78a4c;border-radius:5px;background:#153c56;color:#fff0c6;padding:8px 14px;cursor:pointer}button:hover:not(:disabled){background:#255776}button:disabled{opacity:.48;cursor:not-allowed}button.primary{background:linear-gradient(#e8c77d,#cba357);color:#112d43;font-weight:700;border-color:#ffe8a4;box-shadow:inset 0 0 0 2px #e4bd66;min-height:46px}button.primary:hover:not(:disabled){background:#f3d68b}button.danger{background:#8a302d;color:#fff}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible,[role=button]:focus-visible{outline:3px solid #5ecddd;outline-offset:3px}label{display:block;font-size:14px;line-height:1.7;margin:12px 0}input,select,textarea{display:block;width:100%;padding:10px 12px;margin-top:5px;border:1px solid #b5b8b5;border-radius:5px;color:#16354a;background:#fffef8;min-height:42px}textarea{resize:vertical;min-height:100px;line-height:1.65}p{line-height:1.75;margin:12px 0}h1,h2,h3{font-family:STSong,SimSun,serif}h1,h2{margin:0 0 14px}h2{font-size:24px}h3{font-size:18px}small{display:block;font-size:12px;line-height:1.65}summary{cursor:pointer;padding:12px 0}details{border-top:1px solid #a9935d4f;margin-top:16px}.inline{display:flex;align-items:end;flex-wrap:wrap;gap:10px}.inline label{flex:1;min-width:200px}fieldset{border:1px solid #bfa66b;padding:12px 18px;margin:20px 0}legend{font-weight:700;padding:0 10px}.option-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.check{display:flex;align-items:center;gap:8px}.check input{width:18px;min-height:auto;margin:0}.notice{padding:12px 16px;background:#e5d19a30;border-left:3px solid #b99038;white-space:pre-wrap;font-family:inherit}.error{background:#ffe7df;color:#8b2929;padding:12px 16px;border:1px solid #b96851}.error button{margin-left:15px}.connected{color:#8ad9b0}.global-error{position:sticky;top:0;z-index:12}.pause-banner{text-align:center;padding:12px;background:#603e1a;color:#fff0bb}.text-button{background:transparent;border:none;color:#ddc997;font-size:13px;padding-left:0}.landing{min-height:100vh;position:relative;display:flex;align-items:center;justify-content:flex-end;padding:4vh 8vw;overflow:hidden}.landing-art{position:absolute;inset:0;background:linear-gradient(90deg,#081c2d08 25%,#081c2dcc 65%,#081c2d),url(/tax-game/art/board.png) left 18%/auto 130% no-repeat;opacity:.8}.entrance{position:relative;width:440px;max-width:100%;background:#0b253dee;border:1px solid #ab8a4f;padding:32px 38px;box-shadow:0 20px 90px #0008;border-radius:10px}.entrance h1{font-size:46px;color:#f4d489;letter-spacing:4px;margin-bottom:5px}.seal{float:right;border:2px solid #d7b56a;color:#d7b56a;font-family:serif;font-size:30px;padding:3px 8px}.subtitle{color:#dbc591;letter-spacing:3px}.intro{font-size:14px;color:#ced9db}.tabs{display:flex;border-bottom:1px solid #b69652;margin-top:20px}.tabs button{width:50%;border:none;border-radius:0;background:transparent}.tabs button.active{background:#d3ad62;color:#122e43}.entrance .primary{width:100%;margin-top:12px}.game-shell{max-width:2000px;margin:auto;padding:0 16px 20px}.game-header{display:flex;min-height:105px;align-items:center;gap:20px;border-bottom:2px solid var(--gold);padding:14px 6px}.brand{min-width:165px;text-align:center;color:#eccc86}.brand h1{font-size:32px;margin:0;letter-spacing:3px}.brand span{font-family:serif;letter-spacing:6px;font-size:15px}.seats{display:flex;flex:1;gap:8px;flex-wrap:wrap}.seat{display:flex;align-items:center;border:1px solid color-mix(in srgb,var(--seat) 45%,transparent);border-radius:6px;min-width:135px;padding:0 9px 0 0;background:#102f46}.seat.current{box-shadow:0 0 0 2px var(--seat);background:#164967}.seat svg{height:62px;width:45px;flex-shrink:0}.seat b{font-size:14px;color:var(--seat)}.seat small{color:#dae3df;font-size:11px}.room-status{display:flex;flex-direction:column;gap:5px;font-size:14px;min-width:150px}.room-status b{color:#efcb78;font-size:18px}.toolbar{display:flex;align-items:center;gap:10px;padding:10px 0;font-size:12px;flex-wrap:wrap}.toolbar button{min-height:32px;padding:5px 10px;font-size:12px}.toolbar>span:nth-child(2){margin-right:auto}.play-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}.play-left{min-width:0}.board{position:relative;border:1px solid #b4904b;border-radius:8px;overflow:hidden;background:#0a3e59}.map-scroll{max-height:70vh;overflow:auto}.board svg{display:block;min-width:100%;height:auto}.board [role=button]{cursor:pointer}.map-tools{position:absolute;right:12px;bottom:12px;display:flex;gap:3px;z-index:2}.map-tools button{min-height:32px;padding:4px 9px;background:#0e3045e8;font-size:12px}.side-panel{background:var(--paper);color:#18374e;padding:22px;border:3px double #d9b666;border-radius:8px;max-height:calc(100vh - 170px);overflow:auto;position:sticky;top:12px}.city-title{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid #cfa45b;gap:8px;padding-bottom:8px}.city-title h2{font-size:29px;white-space:nowrap;margin:0}.city-title span{font-family:serif;font-size:16px;text-align:right}.scene-fields{display:grid;grid-template-columns:95px 1fr;font-size:14px;line-height:1.8;gap:6px;margin:20px 0}.scene-fields dt{font-weight:700}.scene-fields dd{margin:0}.tax-table{border:1px solid #d4b274;border-radius:5px;padding:0 14px 9px;margin:18px 0 22px}.tax-table h3{text-align:center;margin:8px 0;color:#8b6629}.tax-table>div{display:flex;justify-content:space-between;padding:6px 2px;border-bottom:1px solid #dbcdaa;font-size:14px}.side-panel button{margin:5px 0;max-width:100%}.side-panel .primary{width:100%}.side-panel h2{margin-top:20px}.side-panel p{font-size:13px}.side-panel blockquote{margin:10px 0;padding:14px;background:#eee4ce;border-left:3px solid #b69448;white-space:pre-wrap;word-break:break-word;max-height:250px;overflow:auto;font-size:14px;line-height:1.7}.side-panel .inline{gap:5px}.side-panel .inline button{font-size:12px;padding:6px}.dice-button{min-height:65px!important;font-size:18px}.tax-compare{display:flex;flex-wrap:wrap;gap:8px;font-size:12px}.tax-compare span{flex:1;background:#ede1c7;padding:9px;min-width:90px}.tax-compare b{display:block;font-size:18px;margin-top:8px}.lobby-panel,.hand-zone{margin-top:14px;border:1px solid #a88b4e;border-radius:8px;background:#0e2e45;padding:18px}.lobby-panel label{max-width:250px}.hand-zone{display:flex;gap:20px;min-height:280px}.pile{width:115px;flex-shrink:0;color:#e8c577}.pile h3{margin-top:0}.pile>span{display:block;border:1px solid #a68a4b6b;background:#173d54;padding:9px;margin-bottom:10px;font-size:13px}.pile b{font-family:Georgia,serif;display:block;font-size:30px;line-height:1.3}.pile small{color:#bed0d9}.hand-list{display:flex;overflow-x:auto;gap:18px;align-items:start;flex:1;padding:4px 3px 12px}.hand-item{flex:0 0 162px}.card-select{border:2px solid transparent;padding:0;display:block;border-radius:8px;width:100%;background:none;transition:transform .15s}.card-select:hover:not(:disabled){background:none;transform:translateY(-3px)}.card-select.selected{border-color:#f6dc8b;box-shadow:0 0 0 3px #caa34b}.card-face{position:relative;aspect-ratio:5/7;width:100%;overflow:hidden;border-radius:7px;color:#16374a;container-type:inline-size;background:#fff7e6;text-align:left}.card-face>img{display:block;width:100%;height:100%;object-fit:contain}.card-heading{position:absolute;top:6%;left:9%;right:9%;height:10.8%;background:#15374a;display:flex;align-items:center;gap:4%;padding:0 1%;color:#fff9e7}.card-heading>span{flex:0 0 18%;height:100%;background:#fff6e6;color:#af3632;font-size:6cqw;line-height:1.1;padding:2%;display:flex;align-items:center;justify-content:center;text-align:center}.card-heading strong{font-size:6.1cqw;line-height:1.1;flex:1}.card-heading small{font-size:4cqw}.card-copy{position:absolute;top:71.5%;left:9%;right:9%;height:22%;background:#fff9ee;padding:1%;font-size:3.5cqw;line-height:1.4}.card-copy b{font-size:4cqw;color:#ae3a30}.card-copy p{font-size:3.5cqw;line-height:1.4;margin:3% 0;min-height:45%;max-height:63%;overflow:hidden}.card-copy em{display:block;text-align:center;font-style:normal;font-size:3.3cqw}.card-detail{width:100%;font-size:12px;margin-top:6px;background:transparent;border-color:#bd9a514f;min-height:30px}.card-face.large{width:300px;max-width:100%}.card-modal{display:flex;gap:30px;align-items:center}.card-modal>div{flex:1}.judge-log{flex:1;max-height:300px;overflow:auto}.judge-log h2{font-size:20px}.judge-log article{border-bottom:1px solid #9b865245;padding:8px 0}.judge-log article b,.judge-log article span{font-size:13px;margin-right:10px}.judge-log p{font-size:12px;margin:5px 0;color:#bcd1da}.table-scroll{overflow:auto;max-width:100%}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;padding:10px;border-bottom:1px solid #b9a46b4d;white-space:nowrap}th{background:#b8a87826}dialog{border:2px solid #c7a460;border-radius:10px;background:#fff9ed;color:#17354b;width:min(900px,94vw);max-height:90vh;padding:26px;box-shadow:0 30px 100px #0009}dialog::backdrop{background:#03111fd9}dialog>header{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid #c7a460;padding-bottom:16px;margin-bottom:18px}dialog h2{margin:0}dialog .large{flex:0 0 300px}.rules-list>div{display:flex;justify-content:space-between;padding:10px;border-bottom:1px solid #baa67566;gap:15px}.rules-list dd{font-weight:700;text-align:right}.event-log{max-height:300px;overflow:auto;font-size:13px;line-height:2.2}.admin{max-width:1400px;margin:30px auto;padding:25px}.admin>header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--gold)}.admin-columns{display:grid;grid-template-columns:280px 1fr;gap:30px;margin-top:25px}.admin-columns>section:first-child button{display:block;margin:8px 0;width:100%;text-align:left}.admin-columns section{min-width:0}.config-editor{min-height:480px;font-family:Consolas,monospace;font-size:13px}.room-line{border-bottom:1px solid #d2ad5c55;padding:8px}.room-line button{width:auto!important;font-size:12px}.admin .notice{word-break:break-word}.admin fieldset{background:#12354b}.start-note{padding:20px 0}.waiting{padding:10px 0 25px}.side-panel .table-scroll{font-size:12px}@media(min-width:1700px){.play-layout{grid-template-columns:minmax(0,1fr) 390px}.hand-item{flex-basis:195px}.side-panel{padding:26px}.seat{min-width:150px}.map-scroll{max-height:68vh}}@media(max-width:1150px){.play-layout{grid-template-columns:minmax(0,1fr) 310px}.brand{min-width:130px}.brand h1{font-size:25px}.game-header{gap:10px}.seat{min-width:120px}.seat b{font-size:12px}.hand-zone{gap:10px;padding:10px}.pile{width:80px}.hand-item{flex-basis:145px}.side-panel{padding:15px}.city-title h2{font-size:24px}}@media(max-width:800px){.play-layout{display:flex;flex-direction:column}.play-left,.side-panel{width:100%}.side-panel{position:static;max-height:none}.game-header{flex-wrap:wrap}.room-status{flex-direction:row;flex-wrap:wrap;width:100%;font-size:12px}.brand{width:100%;text-align:left}.seats{width:100%}.seat{flex:1}.game-shell{padding:0 8px 16px}.landing{padding:20px;justify-content:center}.entrance{padding:25px}.landing-art{background-position:center;opacity:.3}.option-grid,.admin-columns{grid-template-columns:1fr}.card-modal{flex-direction:column}.admin{padding:15px}.hand-item{flex-basis:150px}.rules-list>div{display:block}.rules-list dd{margin:8px 0;text-align:left}.toolbar>span:nth-child(2){display:none}.map-scroll{max-height:none}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.rank-summary{display:flex;gap:12px;align-items:center;padding:10px 14px;border:1px solid #b59354;background:#102e43;margin-bottom:12px;border-radius:8px}.rank-summary>span{margin-right:auto}.play-layout.with-rank{grid-template-columns:220px minmax(0,1fr) 340px}.ranking-column{border:1px solid #b59354;border-radius:8px;background:#102e43;overflow:hidden}.rankings header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px}.rankings h2{font-size:22px;margin:0}.rankings table{font-size:13px}.rankings td,.rankings th{padding:10px 8px}.rankings .mine{background:#dcc07a30}.my-score{padding:16px;background:#143b55;color:#fff0c9}.my-score strong{display:block;font:700 32px Georgia;margin:8px 0}.my-score small{color:#d9e5e5}.records .tabs{margin-top:0}.record-filters{display:flex;gap:12px;flex-wrap:wrap}.record-filters label{flex:1;min-width:120px}.history-item{border:1px solid #c5ab76;border-radius:8px;padding:0 16px 16px;background:#fffaf0;color:#14364b}.history-item summary{font-weight:700;line-height:1.8}.history-item summary span{display:block;font-size:13px;font-weight:400}.history-item blockquote{margin:12px 0;padding:15px;background:#efe5d3;white-space:pre-wrap;overflow-wrap:anywhere}.history-item p{overflow-wrap:anywhere}.tax-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:15px 0}.tax-grid>span{background:#afc1ce25;padding:10px;border-radius:4px}.mobile-nav,section.mobile-records,.mobile-fold{display:none}.hand-zone{min-height:280px}.hand-item{flex-basis:162px}.ranking-column .table-scroll{overflow-x:auto}.side-panel .point-detail h2{margin-top:0}@media(max-width:1400px)and (min-width:801px){.play-layout.with-rank{grid-template-columns:190px minmax(0,1fr) 300px}.rankings td,.rankings th{font-size:11px;padding:8px 5px}.rankings header{display:block}.rankings h2{font-size:20px}.hand-zone{gap:8px}.pile{width:75px}}@media(max-width:800px){body{padding-bottom:calc(78px + env(safe-area-inset-bottom))}.game-header{min-height:0;padding:12px 4px}.brand{width:auto;min-width:0}.brand h1{font-size:26px}.brand span{font-size:12px}.room-status{width:auto;margin-left:auto;font-size:12px}.seats{order:3;flex-wrap:nowrap;overflow-x:auto;padding:6px;flex-basis:100%}.seat{min-width:120px;flex:0 0 120px}.seat svg{height:48px}.toolbar{gap:6px}.toolbar button{min-height:44px}.rank-summary,.ranking-column{display:none}.play-layout.with-rank{display:flex}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:#0d2d45;border-top:2px solid #caaa64;z-index:50;padding:8px 6px calc(8px + env(safe-area-inset-bottom));gap:5px}.mobile-nav button{flex:1;min-height:48px;padding:8px 3px;font-size:14px}.mobile-fold{display:block;width:100%;text-align:left;min-height:48px;margin-bottom:8px}.hand-zone{display:block;min-height:0;padding:10px}.hand-zone .pile{width:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12px}.pile h3,.pile small{display:none}.pile>span{padding:5px 10px;margin:0}.pile b{font-size:16px;display:inline;margin-left:8px}.hand-list{margin-top:10px;gap:12px}.hand-item{flex:0 0 108px}.hand-collapsed .hand-list,.hand-collapsed .hand-zone .pile{display:none}.mobile-hand.hand-collapsed .hand-list{display:flex}.side-panel{padding:14px;margin-top:12px;position:static;max-height:none}.side-panel p,.scene-fields,.tax-table>div{font-size:15px}.side-panel input,.side-panel textarea,.side-panel select,.side-panel blockquote{font-size:16px}.point-collapsed .point-detail{display:none}.point-collapsed.mobile-action .point-detail{display:block}.mobile-board .side-panel>div:not(.point-detail),.mobile-board .side-panel>section,.mobile-board .side-panel>.waiting{display:none}.mobile-hand .board,.mobile-hand .side-panel,.mobile-action .board,.mobile-action .hand-zone,.mobile-records .play-layout,.mobile-records .rank-summary{display:none}.game-shell.mobile-records>section.mobile-records{display:block;background:#fff9ed;color:#15354b;padding:12px;border:1px solid #bc9c59;border-radius:8px}.game-shell:not(.mobile-records)>section.mobile-records{display:none}.map-scroll{max-height:60vh;overflow:auto;touch-action:pan-x pan-y}.board svg{min-width:600px}.map-tools button{min-height:44px;min-width:44px}.records .tabs button{min-height:48px}.record-filters label{min-width:100px}.history-item{padding:0 10px 12px}.tax-compare{display:flex;gap:8px;flex-wrap:wrap}.tax-compare span{flex:1;min-width:110px;padding:12px;background:#e8dfcd}.tax-compare b{display:block;font-size:20px}.rankings header{padding:12px 0}.rankings th,.rankings td{padding:10px 6px}dialog{padding:16px;max-height:calc(100dvh - 32px);width:96vw}button{min-height:44px}}
