:root{font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif;color:#293b35;background:#f6f5ef;font-synthesis:none;font-weight:400;font-size:14px;--green: #174e43;--ink: #293b35;--muted: #849087;--line: #e0e4da;--gold: #e6b953}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;background:none;color:inherit;transition:background .16s,transform .16s,box-shadow .16s}button:disabled{cursor:not-allowed;opacity:.45}button:not(:disabled):active{transform:translateY(1px)}button:focus-visible,a:focus-visible,[role=button]:focus-visible{outline:3px solid #e2a936;outline-offset:3px}input:focus,select:focus{outline:2px solid #699487;outline-offset:1px}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1,h2{letter-spacing:-.04em}svg{flex-shrink:0}button svg{vertical-align:middle}.primary,.outline,.subtle{padding:11px 18px;border-radius:7px;font-weight:600;white-space:nowrap}.primary{background:var(--green);color:#fff;box-shadow:0 2px #092c2220}.primary:hover:not(:disabled){background:#246759}.primary.gold{background:var(--gold);color:#3e3d29}.outline{border:1px solid #c9d3c8;background:#ffffff7a}.outline:hover:not(:disabled){background:#ebf0e6}.subtle{padding:8px 10px;font-size:13px;color:#597264}.subtle:hover{background:#e9eee5}.danger{color:#ad5548}.wide{width:100%;margin-top:16px;padding:14px}.icon-button{border-radius:6px;padding:7px}.icon-button:hover{background:#193e3810}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2px;color:#859488;line-height:1.8}.muted{color:#7b897f}.small{font-size:12px;line-height:1.8}.tag{font-size:11px;border:1px solid #dbe1d5;border-radius:4px;padding:5px 8px;color:#6c7e6e}.logo{display:flex;align-items:center;gap:10px;flex-shrink:0}.logo>span{font-size:21px;font-weight:750;letter-spacing:3px;line-height:1.2}.logo small{display:block;font-size:8px;letter-spacing:1.8px;margin-top:4px}.topbar{height:78px;display:flex;align-items:center;gap:56px;padding:0 max(28px,calc((100vw - 1320px)/2));background:#fcfcf8;border-bottom:1px solid var(--line)}nav{display:flex;align-items:center;gap:30px;align-self:stretch;flex:1;font-size:13px}.nav-active{display:flex;align-items:center;border-bottom:3px solid var(--green);font-weight:600}.nav-caption{align-self:center;color:#a0a89d;font-size:12px}.header-right{display:flex;align-items:center;gap:10px}.connection{display:flex;gap:5px;align-items:center;font-size:11px;color:#628a73;margin-right:5px}.offline{color:#b4813b}.avatar{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:#d8e6ce;color:#346747;font-weight:600;font-size:13px;flex-shrink:0}.username{font-size:12px}.lobby{max-width:1240px;margin:auto;padding:47px 32px 24px}.welcome{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px}.welcome h1{font-size:42px;font-family:Songti SC,"Noto Serif CJK SC",serif;font-weight:700;margin:8px 0 13px;letter-spacing:1px}.welcome h1>span{color:#cc785a}.welcome p{font-size:13px;color:#879186;letter-spacing:.5px}.welcome-stamp{border-left:1px solid var(--line);padding:0 30px;text-align:center;transform:rotate(-5deg)}.welcome-stamp>span{font-size:10px;letter-spacing:3px;color:#6d8072}.welcome-stamp>div{display:flex;gap:7px;justify-content:center;margin:7px}.welcome-stamp small{font-size:8px;letter-spacing:1.5px;color:#929c8c}.game-selection{display:grid;grid-template-columns:1fr 1fr;gap:24px}.game-feature{border:1px solid #dbe1d4;border-radius:12px;overflow:hidden;background:#fffef9;box-shadow:0 4px 12px #203b2810}.cover{line-height:0;overflow:hidden}.cover svg{width:100%;height:100%;object-fit:cover;display:block}.game-feature>.cover{height:205px}.feature-info{padding:23px 26px 22px}.feature-kicker{font-size:8px;letter-spacing:1.4px;color:#829580;display:flex;justify-content:space-between;align-items:center;font-weight:600}.feature-kicker>span{letter-spacing:0;background:#eff2e9;padding:4px 7px;border-radius:3px;font-size:10px}.feature-info h2{font-size:26px;margin:7px 0 9px;font-family:Songti SC,serif;letter-spacing:2px;display:flex;align-items:baseline;gap:12px}.feature-info h2 small{font-family:Georgia,serif;font-weight:400;font-style:italic;letter-spacing:0;color:#8b9789;font-size:16px}.feature-info p{color:#7f8b7e;font-size:12px}.feature-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #edf0e6;margin-top:22px;padding-top:17px;gap:12px}.feature-bottom>span{display:flex;align-items:center;gap:7px;font-size:11px;color:#7f8c7e}.feature-bottom>span>svg:nth-child(2){margin-left:10px}.feature-bottom .primary{font-size:12px;padding:10px 14px}.room-list{margin-top:39px}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.section-heading h2{font-size:21px;letter-spacing:0}.section-heading h2 span{display:inline-block;font-size:11px;font-weight:500;border-radius:20px;background:#e7ecdf;padding:3px 7px;margin-left:5px;vertical-align:middle}.section-heading p{font-size:12px;color:#8b9689;margin-top:6px}.section-heading .outline{font-size:12px}.filter-tabs{display:flex;border-bottom:1px solid var(--line);gap:26px;align-items:center}.filter-tabs button{padding:11px 0;font-size:12px;color:#8a9586;border-bottom:2px solid transparent}.filter-tabs button.active{border-color:var(--green);color:var(--green);font-weight:600}.live-dot{margin-left:auto;font-size:10px;color:#8e9d87;display:flex;align-items:center;gap:6px}.live-dot:before{content:"";width:5px;height:5px;border-radius:50%;background:#87ac79}.room-table{background:#fffefa;border:1px solid var(--line);border-top:0;border-radius:0 0 9px 9px;overflow:hidden}.table-label,.room-row{display:grid;grid-template-columns:2.4fr 1.4fr .8fr 1fr;align-items:center;gap:20px;padding:18px 22px}.table-label{background:#f0f2e9;font-size:10px;color:#8b9686;padding-top:11px;padding-bottom:11px}.room-row{border-top:1px solid #edf0e8}.room-row.invited{background:#f5f2dc}.room-title{display:flex;align-items:center;gap:13px}.game-icon{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:#e4ece0;color:#416650}.game-icon.rail{background:#f5e9d4;color:#a37c4c}.room-title h3{font-size:13px;display:flex;align-items:center;gap:6px}.room-title small{display:block;font-size:10px;color:#98a08f;margin-top:5px}.seat-preview{display:flex;align-items:center}.seat-preview .avatar{color:#fff;border:2px solid #fffefa;margin-left:-6px;width:28px;height:28px;font-size:10px}.seat-preview .avatar:first-child{margin-left:0}.seat-preview small{margin-left:9px;color:#909b88;font-size:10px}.status{font-size:10px;color:#8b927f;white-space:nowrap}.status:before{content:"";display:inline-block;width:5px;height:5px;margin-right:5px;border-radius:50%;background:currentColor}.status.waiting{color:#719566}.status.playing{color:#bd9857}.join-button{font-size:12px;border:1px solid #d6dfd0;border-radius:5px;padding:8px 10px;justify-self:end;color:#56714c;background:#f7faf2}.join-button:disabled{background:transparent;border-color:transparent}.empty-room{padding:33px;text-align:center;background:#fbfcf6;border:1px dashed #d8dece;border-top:0;border-radius:0 0 10px 10px}.empty-room h3{font-size:14px;margin:14px 0 8px}.empty-room p{font-size:12px;color:#99a28f}.empty-room .subtle{margin-top:10px;font-size:11px}.empty-chairs{display:flex;gap:8px;justify-content:center}.empty-chairs span{width:21px;height:25px;border:2px solid #c1cbb3;border-radius:6px 6px 3px 3px;transform:rotate(-12deg)}.empty-chairs span:nth-child(2){transform:translateY(-5px);background:#e5eccc}.empty-chairs span:nth-child(3){transform:rotate(12deg)}.lobby-note{display:flex;justify-content:center;gap:42px;margin-top:28px;color:#98a08f;font-size:10px}.lobby-note>span{display:flex;gap:7px;align-items:center}footer{max-width:1176px;margin:12px auto 0;padding:23px 0 26px;border-top:1px solid var(--line);font-size:9px;letter-spacing:1px;color:#9da591;display:flex;gap:30px}footer>span:last-child{margin-left:auto}.auth-page{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.auth-story{background:#174e43;color:#f8f2dc;padding:40px 9% 32px;display:flex;flex-direction:column;overflow:hidden;position:relative}.auth-story:after{content:"";position:absolute;width:640px;height:640px;border:1px solid #eeeac018;transform:rotate(45deg);left:-220px;top:130px;pointer-events:none}.auth-story .logo img{border:1px solid #bfc9a945;border-radius:9px}.auth-copy{margin:auto 0;padding:50px 0;z-index:1}.auth-copy .eyebrow{color:#a6bea2;font-size:9px}.auth-copy h1{font-size:clamp(30px,3.3vw,49px);font-family:Songti SC,serif;line-height:1.5;margin:14px 0 20px;letter-spacing:2px}.auth-copy p{font-size:13px;line-height:2;color:#b6c9af}.auth-covers{display:flex;gap:12px;margin-top:30px;width:112%;transform:rotate(-4deg)}.auth-covers .cover{width:52%;height:auto;border-radius:8px;border:5px solid #fff8e4;box-shadow:0 13px 20px #092c2a66}.auth-covers .cover:nth-child(2){transform:translateY(20px) rotate(9deg)}.auth-caption{display:flex;flex-wrap:wrap;gap:20px;margin-top:51px;color:#c8d4b6;font-size:11px}.auth-caption span{display:flex;align-items:center;gap:5px}.auth-caption span:last-child{font-size:9px;width:100%;letter-spacing:2px;opacity:.6}.auth-story>small{font-size:8px;letter-spacing:2px;color:#99b39b}.auth-form{display:flex;align-items:center;justify-content:center;padding:40px}.auth-form-inner{width:min(360px,100%)}.auth-form h2{font-size:27px;margin:12px 0 10px;font-family:Songti SC,serif;letter-spacing:1px}.auth-form p{font-size:12px;color:#8a9587;line-height:1.8}.auth-tabs{display:flex;gap:25px;margin:32px 0 24px;border-bottom:1px solid var(--line)}.auth-tabs button{font-size:13px;color:#8d9989;padding:12px 3px;border-bottom:2px solid transparent}.auth-tabs .active{color:var(--green);border-color:var(--green);font-weight:600}label{display:block;font-size:12px;font-weight:550;margin-bottom:18px}input,select{width:100%;padding:12px 13px;background:#fffefa;border:1px solid #d9e0d4;border-radius:6px;color:var(--ink);display:block;margin-top:8px;min-height:44px}input::placeholder{color:#a3ac9a;font-size:12px}label small{font-size:10px;color:#a0a993;font-weight:400}.auth-note{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:24px;font-size:10px;color:#9ca68f}.inline-error{color:#b54c3c!important;margin:10px 0}.toast{position:fixed;z-index:100;top:88px;right:20px;max-width:min(500px,90vw);display:flex;gap:18px;align-items:center;background:#fffdf5;border:1px solid #c5d2b9;border-radius:8px;box-shadow:0 6px 25px #26382226;padding:15px 18px;font-size:13px}.toast.error{border-color:#e5b1a4;color:#a74634}.toast button{margin-left:auto}.modal-backdrop{position:fixed;inset:0;background:#16332acc;backdrop-filter:blur(4px);z-index:50;display:flex;align-items:center;justify-content:center;padding:24px}.modal{width:560px;max-width:100%;max-height:90vh;overflow:auto;background:#faf9f1;border-radius:14px;padding:25px 28px;box-shadow:0 25px 80px #07191055;animation:appear .15s ease}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:16px}.modal-head h2{font-size:21px;letter-spacing:0}.modal>p{font-size:13px;line-height:1.8;margin-bottom:20px;color:#7e8a76}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.choose-games{display:flex;gap:14px;margin-bottom:24px}.choose-games>button{display:block;flex:1;overflow:hidden;border:2px solid transparent;border-radius:8px;padding:0;background:#eef0e6}.choose-games>button.selected{border-color:#43785a}.choose-games .cover{height:92px}.choose-games>button>span{display:flex;justify-content:center;gap:12px;padding:10px;font-size:12px}.room-page{max-width:1320px;margin:auto;padding:28px 28px 50px}.room-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:25px}.room-heading .eyebrow{font-size:9px;letter-spacing:1px}.room-heading .eyebrow>span{padding:0 8px}.room-heading h1{font-size:24px;letter-spacing:0;margin-top:3px}.room-tools{display:flex;gap:8px;align-items:center}.room-tools .subtle{font-size:11px}.waiting-layout{background:#fffef9;border:1px solid var(--line);border-radius:14px;overflow:hidden;display:grid;grid-template-columns:.8fr 1.2fr;min-height:500px}.waiting-cover{background:#eef1e6;text-align:center;padding-bottom:40px}.waiting-cover .cover{height:285px}.waiting-cover h2{font-family:Songti SC,serif;font-size:29px;letter-spacing:3px;margin:30px 0 10px}.waiting-cover p{color:#7d8c79;font-size:12px;margin-bottom:24px}.waiting-seats{padding:38px}.waiting-seats h2{font-size:24px;margin-top:10px;letter-spacing:1px}.seats-grid{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}.waiting-seat{width:calc(50% - 7px);border:1px dashed #d3dccb;display:flex;flex-direction:column;align-items:center;border-radius:8px;padding:16px;background:#f9faf4}.waiting-seat.filled{border-style:solid;background:#fffefa}.waiting-seat .avatar{width:40px;height:40px;color:#fff}.waiting-seat:not(.filled) .avatar{color:#9cac91;background:#edf0e4}.waiting-seat h3{font-size:12px;margin:10px 0 5px;display:flex;gap:7px;align-items:center}.waiting-seat>span:last-child{font-size:10px;color:#97a088}.waiting-actions{display:flex;gap:14px;margin-top:26px}.waiting-seats>.small{margin-top:14px}.players-strip{display:flex;gap:12px;margin-bottom:20px}.player-panel{flex:1;min-width:0;position:relative;display:flex;align-items:center;gap:10px;padding:13px 14px;border:1px solid var(--line);border-radius:8px;background:#fffef9}.player-panel.current{border-color:#6a9274;box-shadow:0 0 0 2px #6a927414}.player-panel .avatar{width:30px;height:30px;color:#fff}.player-info{flex:1;min-width:0}.player-info strong{font-size:12px;display:flex;align-items:center;gap:6px;overflow-wrap:anywhere}.player-info strong small{background:#e8eee1;font-size:8px;padding:1px 3px;border-radius:2px;color:#799065;font-weight:400}.player-info>small{display:block;font-size:9px;color:#8f9a83;margin-top:6px}.player-score{font-family:Georgia,serif;font-size:23px}.player-score small{font-family:inherit;display:block;font-size:9px;text-align:right;color:#8b987e}.turn-dot{width:6px;height:6px;border-radius:50%;background:#8cab74;position:absolute;top:8px;right:8px}.mini-resources{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px;font-size:10px}.mini-resources span{display:flex;gap:2px;align-items:center}.mini-resources i{width:9px;height:9px;border-radius:50%;border:1px solid #a4ab9677}.tokens-mini{color:#7f8a73;margin-top:4px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:20px;align-items:start}.game-main{min-width:0}.game-sidebar{position:sticky;top:20px}.turn-card{padding:22px 18px;border:1px solid #d9e0cf;border-radius:9px;background:#edf1e4}.turn-card.mine{background:#174e43;color:#f7f4dd;border-color:#174e43}.turn-card .eyebrow{font-size:9px;color:#93a28b}.turn-card.mine .eyebrow{color:#a2bd9c}.turn-card h3{font-size:19px;margin:8px 0 10px;font-family:Songti SC,serif;line-height:1.5}.turn-card p{font-size:11px;line-height:1.8;opacity:.7}.save-state{border-top:1px solid #85937733;margin-top:22px;padding-top:12px;display:flex;align-items:center;gap:5px;font-size:9px;opacity:.6}.final-round{background:#eecb6433;color:#d39c30;border-radius:4px;padding:8px;font-size:11px;margin-top:12px;display:flex;gap:6px;align-items:center}.journal{border:1px solid var(--line);border-radius:8px;padding:18px;margin-top:16px;background:#fbfcf6}.journal h3{font-size:12px;display:flex;align-items:center;justify-content:space-between}.journal h3 span{font-size:7px;letter-spacing:1px;color:#8ca27a}.journal ol{padding:0 0 0 12px;list-style:none;margin:15px 0 0;border-left:1px solid #dce4d0}.journal li{position:relative;font-size:10px;line-height:1.8;color:#939d85;margin-bottom:13px}.journal li:before{content:"";position:absolute;left:-15px;top:6px;width:5px;height:5px;border-radius:50%;background:#ccd7bb}.journal li:first-child{color:#5a7756}.closed-panel{border:1px solid var(--line);background:#fffef7;padding:80px 20px;text-align:center;border-radius:12px}.closed-panel>svg{color:#97aa84}.closed-panel h2{margin:20px}.closed-panel p{color:#839274;margin-bottom:24px}.splendor-board{border:1px solid #d7dece;border-radius:10px;padding:20px;background:#e9ede0;background-image:radial-gradient(#89977710 .8px,transparent .8px);background-size:6px 6px}.nobles-row{display:flex;gap:18px;align-items:center;padding-bottom:18px;border-bottom:1px solid #d3dcc7}.board-section-label{display:flex;align-items:center;gap:7px;color:#8d784e;font-size:12px}.board-section-label small{display:block;margin-top:6px;font-size:8px;color:#92977f;white-space:nowrap}.nobles{display:flex;gap:10px;flex:1;justify-content:flex-end}.noble{display:block;position:relative;width:82px;height:92px;padding:4px 4px 7px;background:#ebe0bd;border:2px solid #d3c196;border-radius:6px;box-shadow:0 2px #a6967030}.noble svg{width:51px;height:52px;margin-left:12px}.noble-points{position:absolute;top:7px;left:7px;font-family:Georgia,serif;font-size:20px;color:#6d623e}.noble .costs{gap:3px;justify-content:center}.noble .cost{width:19px;height:19px;font-size:11px}.noble.eligible{border-color:#b49236;box-shadow:0 0 0 2px #ddb94844}.market{display:flex;flex-direction:column;gap:14px;padding:20px 0}.market-row{display:grid;grid-template-columns:.75fr repeat(4,1fr);gap:13px}.deck{min-height:126px;border:4px double #d3b879;border-radius:6px;flex-direction:column;background:#4a693e;color:#d8d19c;box-shadow:2px 3px #c2c8b1,4px 5px #8e9d7755;position:relative}.deck.tier-1{background:#ac8d43;border-color:#efe2a5;color:#fff2b6}.deck.tier-2{background:#2f6881;border-color:#aac1b0;color:#dce6c4}.deck-ornament{font-size:38px;line-height:1}.deck strong{font-family:Georgia,serif;font-size:19px}.deck small{font-size:8px;opacity:.8}.dev-card{position:relative;display:block;min-width:0;border:1px solid #baae91;border-radius:6px;background:#f2e9ce;box-shadow:0 3px #c7c6b5;overflow:hidden;aspect-ratio:1.03;padding:0;text-align:left;color:#65725b;transition:transform .15s,box-shadow .15s}.dev-card:hover{transform:translateY(-3px);box-shadow:0 6px 10px #35482929}.dev-card.selected{outline:3px solid #c29a3e}.card-top{display:flex;align-items:center;justify-content:space-between;padding:5px 9px;height:37px;background:linear-gradient(100deg,#fff8debb,transparent);position:relative;z-index:1}.card-top strong{font-size:25px;color:#fff9dd;text-shadow:0 1px 2px #3f483e;font-family:Georgia,serif;font-weight:600}.card-art{position:absolute;inset:0 0 25%;color:var(--card-color);background:linear-gradient(140deg,#e4dab0,#d8d0ad)}.card-art svg{width:100%;height:100%;padding-top:18px}.dev-card>.costs{position:absolute;bottom:10px;left:7px;right:4px;flex-wrap:wrap;z-index:1;gap:3px}.costs{display:flex;align-items:center;gap:5px}.cost{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-family:Georgia,serif;font-weight:700;font-size:15px;box-shadow:inset 0 0 0 2px #ffffff50,0 1px 2px #0003;border:1px solid #675f4733}.cost.color-1{color:#494c40!important}.card-id{position:absolute;bottom:2px;right:5px;font-size:6px;color:#8a886c;letter-spacing:.5px}.gem-bank{background:#f7f6eccc;border:1px solid #d9dfce;border-radius:8px;padding:15px}.section-line{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:13px}.section-line h3{font-size:13px;font-weight:650}.section-line h3>span{font-size:10px;color:#8b987c;margin-left:5px}.section-line>small{font-size:9px;color:#9a9f85}.token-row{display:flex;justify-content:space-around;gap:9px}.token-button{position:relative;display:flex;flex-direction:column;gap:3px;padding:5px 10px}.token{width:56px;height:56px;border-radius:50%;background:var(--gem);border:4px double #fff8d3;box-shadow:0 4px #655e4966,inset 0 0 0 4px #0002;display:flex;align-items:center;justify-content:center}.token>svg{filter:drop-shadow(0 1px 1px #0007)}.token-button>b{font-family:Georgia,serif;font-size:14px;background:#f7f4e5;min-width:22px;border-radius:10px;margin-top:-9px;z-index:1;box-shadow:0 1px 2px #45503122}.token-button>small{font-size:9px;color:#929a7f}.token-picked{position:absolute;right:4px;top:0;background:#e9b544;border:2px solid #fff8dc;border-radius:12px;padding:3px;font-size:10px;color:#fff;font-weight:700}.token-button.chosen .token{outline:3px solid #cba246;outline-offset:2px}.token-button:disabled{opacity:1}.token-button:disabled:not(.chosen)>small{opacity:.8}.bank-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;border-top:1px solid #e0e4d4;margin-top:12px;padding-top:10px}.bank-actions>span{font-size:11px;color:#839078;margin-right:auto}.bank-actions .primary{padding:8px 12px;font-size:11px}.bank-actions .subtle{font-size:11px}.personal-area{background:#fffdf4;border:1px solid #d6dfca;border-radius:8px;padding:17px;margin-top:17px}.personal-gems{display:flex;gap:10px}.personal-gems>div{flex:1;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px;font-size:18px}.personal-gems small{font-size:8px;color:#96a085;grid-column:1 / 3}.personal-gems strong{font-family:Georgia,serif;font-weight:500}.reserved{display:flex;align-items:center;gap:14px;margin-top:18px;padding-top:15px;border-top:1px solid #e6eadb;min-height:61px}.reserved>span{font-size:11px;color:#8b977b}.reserved>span>b{display:block;margin-top:6px;font-size:9px;font-weight:400}.reserved>p{font-size:10px;color:#a1a88f}.reserved>.dev-card{width:95px;flex:none}.collection{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.collection>.dev-card{width:80px}.collection .card-top strong{font-size:18px}.collection .cost{width:16px;height:16px;font-size:10px}.collection .card-top svg{width:19px}.purchase-preview{display:flex;gap:24px;align-items:center;margin-bottom:27px}.purchase-preview>.dev-card{width:156px;flex-shrink:0}.purchase-preview p{font-size:12px;line-height:1.8;margin-bottom:15px}.purchase-preview small{font-size:10px;color:#8b957a}.purchase-preview .costs{margin-top:10px;margin-bottom:10px}.discard-list{margin:18px 0}.discard-list>div{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid #e5e8db;font-size:12px}.discard-list>div>span{flex:1}.pass-button{display:block;font-size:9px;color:#9da58d;margin:15px auto 0;text-decoration:underline}.action-prompt{padding:15px;background:#f0e3ba;border-radius:7px;margin-top:15px;font-size:12px}.results{background:#f2e9cb;border:1px solid #decb98;border-radius:10px;margin-bottom:20px;padding:22px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.results h2{font-size:22px;display:flex;align-items:center;gap:10px;margin:7px 0 12px}.results p{font-size:11px;color:#8e855f}.score-table{width:100%;order:2;background:#faf6e5;border-radius:5px;padding:6px 12px}.score-table>div{display:flex;gap:18px;padding:9px 0;border-bottom:1px solid #e8dfc2;font-size:11px}.score-table>div:last-child{border:0}.score-table strong{min-width:90px}.score-table span{color:#8c8768}.score-table b{margin-left:auto}.rail-board{min-width:0}.map-frame{border:1px solid #c7c6a4;border-radius:9px;overflow:hidden;background:#eee5c8}.map-controls{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid #d3ccad;background:#f6efd6}.map-controls>span{font-family:Georgia,serif;font-size:10px;letter-spacing:2px;color:#8c8666}.map-controls>div{display:flex;align-items:center;gap:4px;font-size:9px;color:#8c9175}.map-scroll{overflow:auto;max-height:none}.rail-map{display:block;min-width:650px;max-width:none}.map-route{cursor:pointer}.map-route:hover{filter:drop-shadow(0 0 3px #ffd355)}.map-route:focus{outline:0;filter:drop-shadow(0 0 4px #e8a000)}.map-city{pointer-events:none}.map-city text{font-family:Georgia,serif;font-size:9px;fill:#504a39;paint-order:stroke;stroke:#f3e7c8;stroke-width:2.5px;stroke-linejoin:round;font-weight:600}.ocean-label{font-family:Georgia,serif;font-size:12px;letter-spacing:4px;fill:#708d82;opacity:.6}.country-label{font-family:Georgia,serif;font-size:12px;letter-spacing:5px;fill:#b1a481}.map-caption{padding:9px 13px;background:#f6efd6;border-top:1px solid #d3ccad;display:flex;justify-content:space-between;font-size:8px;color:#9a9473}.train-market{padding:15px;border:1px solid #d5deca;border-radius:8px;margin-top:16px;background:#edf0e4}.train-market-cards{display:flex;gap:10px}.train-card{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:3px;background:var(--train);border:3px double #faf1d0;box-shadow:0 2px 2px #263b3322;border-radius:6px;color:#fff7de;padding:7px 5px;min-width:0;flex:1;aspect-ratio:.75;max-height:105px;overflow:hidden}.train-card>span{font-size:8px;letter-spacing:1px;z-index:1}.train-card>svg{opacity:.85}.train-card.train-1{color:#726e56}.train-card.train-3{color:#6a6138}.train-card.train-8{background:linear-gradient(135deg,#c9584c,#d4b150 40%,#508a74 70%,#4d78a0)}.train-card>svg,.train-card>b{z-index:1}.train-stripes{position:absolute;inset:0;background:repeating-linear-gradient(40deg,transparent,transparent 7px,#f5ecd415 8px,#f5ecd415 9px);pointer-events:none}.train-card>b{font-size:14px;font-family:Georgia,serif;line-height:1.4;background:#fff8dfdd;color:#434c3a;border-radius:12px;min-width:24px}.train-card:disabled{opacity:.5}.train-card:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 5px 8px #1f403333}.train-deck{display:flex;flex-direction:column;gap:5px;background:#315d58;border:3px double #cfc58f;color:#e9ddb0;border-radius:6px;min-width:90px;flex:1.1;padding:9px 6px;box-shadow:2px 2px #afb89d}.train-deck strong{font-size:9px}.train-deck small{font-size:8px;opacity:.7}.ticket-deck{display:flex;flex-direction:column;gap:5px;background:#ebdfb9;border:3px double #c2ad72;color:#89784d;border-radius:6px;min-width:100px;flex:1.2;padding:9px 6px}.ticket-deck strong{font-size:9px}.ticket-deck small{font-size:7px}.train-hand{display:flex;gap:8px}.train-hand .train-card{max-height:85px}.train-hand .train-card>svg{width:23px;height:23px}.ticket-heading{margin-top:21px;padding-top:15px;border-top:1px solid #e1e6d5}.tickets{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.ticket-card{display:block;text-align:left;padding:10px;background:#f7edce;border:1px solid #d9c995;border-radius:6px;color:#84724a;position:relative;min-width:0;box-shadow:0 2px #ddd6bd55}.ticket-card:before,.ticket-card:after{content:"";position:absolute;top:42%;width:8px;height:16px;background:#fffdf4;border:1px solid #d9c995;left:-1px;border-left:0;border-radius:0 10px 10px 0}.ticket-card:after{left:auto;right:-1px;border-left:1px solid #d9c995;border-right:0;border-radius:10px 0 0 10px}.ticket-card.selected{outline:2px solid #608258;outline-offset:1px}.ticket-label{font-size:6px;letter-spacing:1px;color:#ab9d72;display:flex;justify-content:space-between;gap:4px;align-items:center;border-bottom:1px dashed #ddcea2;padding-bottom:6px}.ticket-label>span{font-size:8px;letter-spacing:0}.ticket-route{display:flex;align-items:center;justify-content:space-between;gap:4px;margin:12px 0 6px}.ticket-route strong{font-size:11px;font-weight:600}.ticket-route svg{width:12px}.ticket-card>small{font-size:7px;display:block;color:#b2a47a}.ticket-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:6px}.ticket-bottom svg{width:65%;height:29px}.ticket-bottom>b{font-family:Georgia,serif;font-size:25px;font-weight:400;color:#7a6840}.ticket-bottom small{font-size:8px;margin-left:3px}.ticket-card.completed{background:#edf0d3;border-color:#a1b27c}.ticket-card.incomplete .ticket-bottom>b{color:#b65c46}.pending-tickets{display:grid;gap:12px;margin-bottom:20px}.pending-tickets .ticket-card{padding:14px 20px}.pending-tickets .ticket-label{font-size:8px}.pending-tickets .ticket-route strong{font-size:17px}.pending-tickets .ticket-card>small{font-size:10px}.pending-tickets .ticket-bottom{position:absolute;right:20px;bottom:9px}.pending-tickets .ticket-bottom svg{display:none}.route-preview{display:flex;align-items:center;gap:15px;padding:20px;background:#eee9d1;border-radius:8px;margin-bottom:22px;color:#8b7952}.route-preview>span{margin-left:auto;font-size:12px}.personal-area details{margin-top:12px;font-size:12px;color:#758563}.personal-area summary{cursor:pointer;padding:8px}.rules{font-size:13px;line-height:1.9;color:#79856d}.rules p{margin-bottom:15px}.rules ol{padding-left:22px}.rules li{margin-bottom:12px}.rules b{color:#435c40}.loading{min-height:200px;display:flex;gap:25px;align-items:center;justify-content:center;flex-direction:column;color:#8b9980}.loading p{font-size:12px}@keyframes appear{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(min-width:1450px){.room-page.playing{max-width:1480px}.market-row{gap:18px}.dev-card{max-height:166px}.rail-map{min-height:510px}.splendor-board{padding:24px}.game-layout{grid-template-columns:minmax(0,1fr) 240px}}@media(max-width:1100px){.topbar{gap:30px;padding:0 25px}.nav-caption{display:none}.game-layout{grid-template-columns:minmax(0,1fr) 185px;gap:13px}.game-sidebar .turn-card{padding:17px 13px}.game-sidebar .journal{padding:14px}.player-panel{padding:12px 8px;gap:7px}.player-panel .avatar{width:25px;height:25px;font-size:11px}.mini-resources{gap:3px;font-size:8px}.mini-resources svg{width:11px;height:11px}.player-score{font-size:20px}.nobles-row{gap:8px}.board-section-label{font-size:10px;flex-direction:column;align-items:start}.board-section-label small{font-size:7px}.nobles{gap:6px}.noble{width:68px;height:85px}.noble svg{width:42px;height:47px}.noble .cost{width:17px;height:17px;font-size:10px}.market-row{gap:8px}.deck{min-height:96px}.deck-ornament{font-size:25px}.deck small{font-size:7px}.dev-card .cost{width:20px;height:20px;font-size:12px}.card-top{padding:4px 6px}.card-top>svg{width:24px}.card-top strong{font-size:22px}.token{width:47px;height:47px}.token-button{padding:4px 5px}.token>svg{width:26px;height:26px}.train-market-cards{gap:6px}.train-deck{min-width:72px}.ticket-deck{min-width:75px}.train-hand{gap:4px}.tickets{grid-template-columns:1fr 1fr}.feature-info{padding:20px}.feature-info h2{font-size:23px}.feature-info h2 small{font-size:13px}footer{margin-left:32px;margin-right:32px}.waiting-seats{padding:27px}}@media(max-width:850px){.game-layout{display:flex;flex-direction:column}.game-main{width:100%;order:2}.game-sidebar{width:100%;position:static;display:flex;order:1}.game-sidebar .turn-card{width:100%;display:flex;align-items:center;gap:15px;padding:12px 17px;flex-wrap:wrap}.turn-card h3{margin:0;font-size:16px}.turn-card p{font-size:10px}.turn-card .save-state{padding:0;border:0;margin:0 0 0 auto}.turn-card .final-round{margin:0}.game-sidebar .journal{display:none}.players-strip{overflow:auto;padding:2px 2px 7px}.player-panel{min-width:180px;flex-shrink:0}.room-heading{align-items:start}.room-tools{flex-wrap:wrap;justify-content:flex-end;max-width:48%;gap:3px}.room-tools .subtle{padding:5px}.room-heading h1{font-size:22px}.waiting-layout{grid-template-columns:1fr}.waiting-cover{display:none}.waiting-seats{padding:30px}.waiting-seat{width:calc(25% - 11px)}.game-feature>.cover{height:170px}.feature-info h2{flex-direction:column;gap:3px}.feature-bottom{gap:8px}.feature-bottom>span{font-size:9px;gap:4px}.feature-bottom>span svg{width:12px}.feature-bottom>span>svg:nth-child(2){margin-left:4px}.feature-bottom .primary{padding:8px 10px}.auth-story{padding:30px 9%}.auth-form{padding:30px}.auth-copy h1{font-size:32px}.auth-copy p{font-size:11px}.header-right{gap:6px}.topbar{gap:24px}.username{display:none}.train-market-cards .train-card{max-height:120px}.nobles-row .board-section-label{flex-direction:row;font-size:12px}.noble{width:84px;height:96px}.noble svg{width:52px;height:56px}.dev-card,.deck{max-height:160px}.market-row{gap:13px}.dev-card .cost{width:23px;height:23px;font-size:15px}}@media(max-width:600px){.topbar{height:65px;padding:0 16px;gap:20px}.logo>span{font-size:18px}.logo img{width:30px;height:30px}.logo small{font-size:6px}.topbar nav{font-size:11px}.connection span{display:none}.header-right>.avatar{display:none}.header-right{gap:2px}.header-right .icon-button{padding:5px}.lobby{padding:27px 17px 20px}.welcome{margin-bottom:24px}.welcome h1{font-size:30px}.welcome p{font-size:11px}.welcome-stamp{display:none}.eyebrow{font-size:8px}.game-selection{grid-template-columns:1fr;gap:18px}.game-feature{display:grid;grid-template-columns:34% 66%;min-height:203px}.game-feature>.cover{height:100%}.game-feature>.cover svg{width:auto;height:100%;transform:translate(-110px)}.feature-info{padding:16px}.feature-info h2{font-size:23px;letter-spacing:1px;gap:4px;margin-top:9px}.feature-info h2 small{font-size:12px}.feature-info p{font-size:10px;line-height:1.8}.feature-kicker{font-size:6px;letter-spacing:.7px}.feature-kicker>span{font-size:8px;padding:2px 4px}.feature-bottom{padding-top:12px;margin-top:12px;flex-wrap:wrap}.feature-bottom>span{font-size:9px}.feature-bottom .primary{font-size:10px;padding:7px 11px}.room-list{margin-top:30px}.section-heading h2{font-size:18px}.section-heading p{font-size:10px}.section-heading .outline{padding:9px 10px;font-size:11px}.filter-tabs{gap:19px}.filter-tabs button{font-size:11px}.live-dot{font-size:8px}.table-label{display:none}.room-row{display:grid;grid-template-columns:1fr auto;gap:12px;padding:15px}.room-title,.seat-preview{grid-column:1}.status{grid-column:2;grid-row:1;justify-self:end}.join-button{grid-column:2;grid-row:2;font-size:10px}.game-icon{width:34px;height:34px}.room-title h3{font-size:12px}.room-title small{font-size:8px}.lobby-note{gap:12px;flex-wrap:wrap;font-size:8px}.lobby-note svg{width:12px}.lobby-note span:last-child{display:none}footer{margin:0 17px;padding:18px 0;gap:10px;font-size:7px}footer>span:last-child{display:none}.auth-page{display:block}.auth-story{padding:22px;min-height:200px}.auth-copy{padding:20px 0 10px}.auth-copy h1{font-size:28px;margin:5px 0 0;line-height:1.4}.auth-copy h1 br{display:none}.auth-copy p,.auth-covers,.auth-caption,.auth-story>small{display:none}.auth-copy .eyebrow{font-size:7px}.auth-form{padding:30px 26px}.auth-form h2{font-size:25px}.auth-tabs{margin-top:22px}.room-page{padding:20px 12px 35px}.room-heading{margin-bottom:17px}.room-heading h1{font-size:19px}.room-heading .eyebrow{font-size:7px}.room-tools .subtle{font-size:9px;gap:4px}.room-tools svg{width:13px}.room-tools{max-width:45%}.waiting-seats{padding:23px}.waiting-seats h2{font-size:22px}.waiting-seat{width:calc(50% - 7px)}.players-strip{gap:8px;margin-bottom:12px}.player-panel{min-width:167px}.game-sidebar .turn-card{gap:8px;padding:12px}.turn-card .save-state{display:none}.turn-card h3{font-size:14px}.turn-card .eyebrow{font-size:8px}.turn-card p{font-size:9px}.game-layout{gap:12px}.splendor-board{padding:11px}.nobles-row{display:block;padding-bottom:12px}.nobles-row .board-section-label{margin-bottom:9px;font-size:10px}.board-section-label>svg{width:14px}.board-section-label>span{display:flex;gap:10px;align-items:center}.board-section-label small{margin:0}.nobles{justify-content:start;gap:7px}.noble{width:60px;height:75px;padding:3px}.noble svg{width:38px;height:42px}.noble .cost{width:15px;height:15px;font-size:9px}.noble .costs{gap:1px}.noble-points{font-size:16px;top:4px;left:5px}.market{gap:10px;padding:13px 0}.market-row{gap:6px;grid-template-columns:.65fr repeat(4,1fr)}.deck{min-height:78px;border-width:3px}.deck strong{font-size:13px}.deck-ornament{font-size:18px}.deck small{font-size:6px;max-width:42px}.dev-card{aspect-ratio:.75}.card-top{height:27px;padding:3px}.card-top strong{font-size:18px}.card-top>svg{width:20px;height:20px}.dev-card>.costs{bottom:9px;left:3px;right:2px;gap:2px}.dev-card .cost{width:16px;height:16px;font-size:10px}.dev-card .card-id{font-size:5px}.gem-bank{padding:12px 9px}.section-line>small{font-size:7px;max-width:65%;text-align:right;line-height:1.5}.section-line h3{font-size:11px}.token-row{gap:4px}.token-button{padding:4px 1px}.token{width:40px;height:40px;border-width:3px}.token>svg{width:23px;height:23px}.token-button>b{font-size:12px}.token-button>small{font-size:7px}.bank-actions .primary{font-size:10px;padding:7px 9px}.personal-area{padding:12px;margin-top:12px}.personal-gems{gap:7px}.personal-gems>div{font-size:16px;gap:3px}.personal-gems svg{width:18px;height:18px}.personal-gems small{font-size:6px}.reserved{gap:8px;margin-top:12px;padding-top:10px}.reserved>.dev-card{width:75px;aspect-ratio:1}.reserved>span{font-size:9px}.reserved>p{font-size:8px}.personal-area .section-line>.subtle{font-size:9px}.modal-backdrop{padding:14px}.modal{padding:21px 19px;max-height:93vh;border-radius:10px}.modal-head{margin-bottom:19px}.modal-head h2{font-size:18px}.purchase-preview{gap:18px}.purchase-preview>.dev-card{width:115px;aspect-ratio:.9}.purchase-preview .dev-card .cost{width:20px;height:20px;font-size:13px}.purchase-preview p{font-size:10px}.purchase-preview small{font-size:9px}.map-controls>span{font-size:8px;letter-spacing:1px}.map-controls{padding:5px 10px}.map-caption{font-size:7px}.map-caption>span:last-child{display:none}.train-market{padding:10px}.train-market-cards{gap:5px;flex-wrap:wrap}.train-market-cards .train-card{min-width:42px;max-height:87px}.train-deck{min-width:58px;max-width:66px;padding:5px}.train-deck strong{font-size:7px}.train-deck small{font-size:6px}.train-deck svg{width:22px}.ticket-deck{width:100%;flex:auto;flex-direction:row;min-height:36px;padding:7px;margin-top:4px}.ticket-deck svg{width:17px;height:17px}.ticket-deck small{margin-left:auto;font-size:8px}.train-card{padding:5px 2px;border-width:2px;border-radius:4px}.train-card>svg{width:21px;height:21px}.train-card>span{font-size:6px;letter-spacing:0}.train-hand{display:grid;grid-template-columns:repeat(9,1fr);gap:4px}.train-hand .train-card{max-height:72px;aspect-ratio:.48}.train-hand .train-card>svg{width:18px;height:18px}.train-card>b{font-size:11px;min-width:17px}.tickets{grid-template-columns:1fr 1fr;gap:8px}.ticket-card{padding:9px}.ticket-label{font-size:5px;letter-spacing:.5px}.ticket-label>span{font-size:6px}.ticket-route{gap:3px}.ticket-route strong{font-size:9px}.ticket-card>small{font-size:6px}.ticket-bottom>b{font-size:22px}.ticket-bottom svg{height:24px}.pending-tickets .ticket-route strong{font-size:16px}.results{padding:17px;gap:15px}.results h2{font-size:19px}.results p{font-size:10px;line-height:1.8}.results .primary{font-size:11px;padding:9px 13px}.score-table{padding:5px 9px}.score-table>div{gap:7px;font-size:8px;flex-wrap:wrap}.score-table strong{min-width:40px}.route-preview{padding:16px;gap:10px}.route-preview strong{font-size:12px}.route-preview>span{font-size:10px}.rules{font-size:12px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media(min-width:851px){.splendor-board{display:grid;grid-template-columns:minmax(0,1fr) 160px;gap:16px}.nobles-row{grid-column:1 / -1}.market{padding:0;gap:12px}.market-row{gap:10px}.market-row .dev-card,.market-row .deck{height:120px;min-height:120px;aspect-ratio:auto}.gem-bank{padding:13px 10px}.gem-bank .section-line{display:block}.gem-bank .section-line small{display:block;margin-top:6px;line-height:1.7}.gem-bank .token-row{display:grid;grid-template-columns:1fr 1fr;gap:10px 3px}.gem-bank .token{width:44px;height:44px}.gem-bank .token-button{padding:3px 1px}.gem-bank .token-button small{font-size:8px}.bank-actions{flex-wrap:wrap;gap:4px}.bank-actions>span{font-size:10px}.bank-actions .primary{width:100%;margin-top:5px}.splendor-board>.personal-area,.splendor-board>.pass-button,.splendor-board>.action-prompt{grid-column:1 / -1;margin-top:0}}.dev-card{align-content:start}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.nav-caption,.eyebrow,.connection,.muted,.section-line>small,.personal-gems small,.reserved>span,.reserved>p,.token-button>small,.bank-actions>span,.pass-button,.player-info>small,.player-score small,.tokens-mini,.journal li,.journal h3 span,.board-section-label small,.tag{color:#64745e}.card-id{color:#6c674f}.deck small{opacity:1;color:#fff8d9}.deck.tier-1,.deck.tier-1 small{color:#352e16}.turn-card.mine .eyebrow{color:#c6d4b3}.turn-card.mine p,.turn-card.mine .save-state{opacity:1;color:#c6d4b3}.ticket-choice{padding:18px;margin-bottom:16px;background:#f3e7c1;border:1px solid #d4bc7f;border-radius:9px}.ticket-choice h3{font-size:17px;margin-bottom:9px}.ticket-choice>p{color:#756541;font-size:11px;line-height:1.8;margin-bottom:15px}.ticket-choice .pending-tickets{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:0}.ticket-choice .ticket-card{padding:12px}.ticket-choice .ticket-route strong{font-size:12px}.ticket-choice .ticket-label{font-size:6px}.ticket-choice .ticket-card>small{font-size:8px}.ticket-choice .ticket-bottom{position:static}.ticket-choice .ticket-bottom svg{display:block}.ticket-choice>.primary{margin-top:12px;padding:10px;font-size:12px}@media(max-width:600px){.ticket-choice{padding:13px}.ticket-choice .pending-tickets{grid-template-columns:1fr}}.map-controls>span,.map-controls>div,.map-caption,.ticket-deck,.ticket-label,.ticket-card>small{color:#70613f}.train-market .section-line>small{color:#5d6c57}.train-deck small{opacity:1}.payment-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:18px}.payment-grid label{margin-bottom:0;font-size:11px}.payment-grid select{font-size:11px;padding:9px}.payment-grid p{grid-column:1 / -1}
