:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;color:#243b32;background:#f7f5ed;font-synthesis:none;line-height:1.55;font-size:15px}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}a{color:#285d49;text-underline-offset:4px}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#285d49;color:#fff;border:1px solid #285d49;border-radius:10px;padding:11px 17px;font-weight:650;cursor:pointer;text-decoration:none;line-height:1.4}button:hover,.button:hover{filter:brightness(.94)}button:disabled{opacity:.48;cursor:not-allowed}button.secondary,.secondary{background:#edf2e9;color:#285d49;border-color:#c8d5c6}.quiet{background:transparent;border-color:transparent;color:#285d49}.danger{color:#9b3a30}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #ae6a20;outline-offset:4px}input,select{width:100%;min-width:0;border:1px solid #b9c6b7;border-radius:9px;padding:11px 13px;background:#fffefa;color:#243b32}input[type=radio]{width:auto;accent-color:#285d49}label{display:block;font-size:13px;font-weight:650;margin:16px 0 6px}fieldset{border:0;padding:0;margin:20px 0}legend{font-size:13px;font-weight:650}fieldset label{font-weight:400;margin:8px 0}h1,h2,h3,p{overflow-wrap:anywhere}h1{font-size:clamp(32px,4.4vw,54px);letter-spacing:-.045em;line-height:1.12;margin:12px 0 20px;font-weight:750}h2{font-size:23px;line-height:1.3;letter-spacing:-.025em;margin:0 0 12px}h3{font-size:17px;margin:20px 0 10px}p{margin:10px 0 18px}small,.muted{color:#637468;font-size:13px}.eyebrow{font-size:10px;letter-spacing:.17em;font-weight:750;color:#65806d;margin:0 0 12px}.app-shell{max-width:1440px;min-height:100vh;display:flex;flex-direction:column;margin:auto;padding:0 42px}header{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:24px 0;border-bottom:1px solid #dce1d4}.brand{color:#243b32;text-decoration:none;font-size:26px;letter-spacing:-.05em;font-weight:800;white-space:nowrap}.brand span{display:block;font-size:10px;letter-spacing:.07em;font-weight:500;color:#788676}nav{display:flex;gap:25px;align-items:center;font-size:13px}nav a{text-decoration:none}nav .router-link-active{font-weight:750}.identity{padding:6px 12px;background:#e6ecdd;border-radius:20px;max-width:160px;overflow-wrap:anywhere}.app-shell>main{flex:1;padding-bottom:48px}footer{display:flex;justify-content:space-between;gap:20px;padding:22px 0;border-top:1px solid #dce1d4;font-size:11px;color:#748070}footer a{color:inherit}.page-heading{padding:42px 0 24px}.page-heading>p:not(.eyebrow){max-width:690px;color:#627267}.panel{background:#fffef9;border:1px solid #dce2d3;border-radius:18px;padding:26px;box-shadow:0 4px 18px #263b3210}.welcome{display:grid;grid-template-columns:1.5fr 1fr;gap:80px;align-items:center;min-height:76vh;padding:55px 0}.welcome h1{font-size:clamp(38px,4.8vw,66px)}.intro{font-size:18px;line-height:1.7;color:#637468}.login-panel{max-width:410px;width:100%;justify-self:end}.login-panel button,.create-panel>button{width:100%;margin-top:20px}.login-panel .muted{margin-top:20px}.hero-city{display:flex;gap:12px;align-items:flex-end;font-size:100px;line-height:1.3;margin-top:30px;color:#84a48a}.hero-city span:nth-child(2){color:#d7a457;font-size:140px}.hero-city span:nth-child(3){color:#6c99ab}.hero-city span:nth-child(4){color:#769569}.hero-city span:nth-child(5){color:#b98571}.directory-layout{display:grid;grid-template-columns:1fr 330px;gap:40px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.section-heading h2{margin:0}.search{display:flex;gap:10px;margin-bottom:24px}.room-list,.members{list-style:none;margin:0;padding:0}.room-row{display:flex;gap:20px;justify-content:space-between;align-items:center;padding:22px 0;border-bottom:1px solid #dce2d3}.room-row h3{margin:0 0 6px}.room-row p{margin:0;color:#637468;font-size:13px}.empty{text-align:center;padding:50px 24px}.empty>span{display:block;font-size:50px;color:#9aad95}.create-panel{align-self:start}.pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:24px;font-size:12px}.notice{background:#fff1dc;border:1px solid #dcc39a;padding:20px;border-radius:12px;margin-top:20px}.narrow{max-width:690px;margin:auto}.connection{display:flex;align-items:center;gap:16px;font-size:11px;color:#5e7862;padding:10px 0;border-bottom:1px solid #e3e8db;flex-wrap:wrap}.connection:before{content:"";width:7px;height:7px;background:#6b9273;border-radius:50%}.connection.problem{color:#8b6028}.connection.problem:before{background:#b4803a}.lobby-layout{display:grid;grid-template-columns:1.2fr 1fr;gap:30px}.members li{display:flex;gap:16px;align-items:center;padding:16px 0;border-bottom:1px solid #e7eadf}.members li>div{flex:1;min-width:0}.members li,.members strong,.members button,.player-summary,.player-summary>span,.room-row>div,.lobby-layout>*,.section-heading>*,.game-heading>*,.invite-list li{min-width:0;overflow-wrap:anywhere}.invite-list{list-style:none;padding:0}.invite-list li{padding:12px 0;border-bottom:1px solid #e7eadf}.invite-list small{display:block}.city .section-heading>span{flex-shrink:0;white-space:nowrap}.members small{display:block}.avatar{width:40px;height:40px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#e6ecdd;color:#3d6249;font-weight:750;flex-shrink:0}.free-seat{color:#8b9789}.free-seat .avatar{background:transparent;border:1px dashed #b9c6b7}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}.lobby>.quiet{margin-top:25px}hr{border:0;border-top:1px solid #e1e5d9;margin:25px 0}.game-heading{display:flex;justify-content:space-between;align-items:center;padding:24px 0}.game-heading h1{font-size:32px;margin:0}.deadline{text-align:right;font-size:27px;font-variant-numeric:tabular-nums;font-weight:750}.deadline small{display:block;font-size:10px;font-weight:500}.deadline.warning{color:#a74627}.turn-panel{display:grid;grid-template-columns:1fr auto;gap:5px 24px;background:#edf2e6;margin-bottom:24px}.turn-panel h2{font-size:20px;max-width:750px}.turn-panel .actions{grid-column:1/-1;margin-top:6px}.dice{display:flex;align-items:center;font-size:65px;line-height:1;color:#285d49;white-space:nowrap}.unrolled{opacity:.25}.exchange{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:12px;align-items:center}.exchange label{margin:0}.exchange select{flex:1;min-width:220px}.players{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:20px}.player-summary{color:#44584a;border-color:#d6dfce;background:#eff1e7;display:flex;justify-content:start;gap:10px;text-align:left;padding:12px}.player-summary.active{border-color:#7d9a6f}.player-summary.selected{background:#fffef9;box-shadow:inset 0 -3px #285d49}.player-summary strong{font-size:13px}.player-summary small{display:block;font-size:10px;font-weight:400}.player-score{margin-left:auto;white-space:nowrap;font-size:18px}.landmark-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.owned-cards{display:flex;gap:12px;flex-wrap:wrap}.owned-cards .card-tile{width:145px}.card-tile{--accent: #215d78;--tint: #d8edf6;position:relative;width:100%;min-height:230px;display:flex;flex-direction:column;justify-content:flex-start;gap:6px;background:var(--tint);border:1px solid var(--accent);border-top:5px solid var(--accent);border-radius:12px;padding:12px;color:#243b32;text-align:center;overflow:hidden;box-shadow:0 2px 4px #283f3210}.card-tile:hover{filter:none;box-shadow:0 5px 18px #263b3220;transform:translateY(-2px)}.card-tile.green{--accent: #3d652c;--tint: #dff0d3}.card-tile.red{--accent: #8c382c;--tint: #f8dacf}.card-tile.purple{--accent: #654081;--tint: #e8ddf4}.card-tile.landmark{--accent: #765816;--tint: #f6e7ba}.card-tile.built{box-shadow:inset 0 0 0 1px var(--accent),0 2px 4px #283f3210}.card-top{display:flex;gap:6px;justify-content:space-between;align-items:center;width:100%;font-size:12px;font-weight:750;color:var(--accent)}.card-activation{display:flex;align-items:center;gap:4px;min-width:0;text-align:left}.activation-die{flex:0 0 17px;width:17px;height:17px}.card-top>.coin{flex-shrink:0;white-space:nowrap}.coin{color:#785f30;background:#f5ecd4;border-radius:12px;padding:1px 7px}.coin small{font-size:9px;color:inherit}.enterprise-type{display:flex;align-items:center;justify-content:center;gap:5px;min-width:0;max-width:100%;color:var(--accent);font-size:11px;font-weight:750;line-height:1.25;overflow-wrap:anywhere}.enterprise-glyph{width:22px;height:22px;flex:0 0 22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.card-tile strong{font-size:14px;line-height:1.25;min-height:35px;display:flex;align-items:center}.card-type{font-size:9px;color:var(--accent);font-weight:700}.card-effect{font-size:11px;line-height:1.4;font-weight:400}.card-count{font-size:10px;margin-top:auto;padding-top:6px;color:#405747}.card-tile.compact{min-height:140px;padding:9px;gap:3px}.card-tile.compact strong{font-size:12px;min-height:30px}.card-tile.compact .card-type{font-size:8px}.market{margin-top:36px}.market-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}.market-item{display:flex;flex-direction:column}.market-item>.card-tile{flex:1}.buy-button{display:flex;width:100%;margin-top:7px;border-radius:8px;padding:8px;font-size:12px}.market-unavailable{display:block;text-align:center;font-size:9px;color:#76816e;padding:12px 0 4px}.journal{margin-top:30px}.journal summary{cursor:pointer;font-weight:700}.journal summary span{font-size:11px;color:#7b8674;margin-left:12px;font-weight:400}.journal ol{padding-left:0;list-style:none;max-height:300px;overflow:auto;font-size:12px}.journal li{padding:7px 0;border-bottom:1px solid #edf0e6}.result{background:#f0f2df;text-align:center;margin-bottom:24px}.result h2{font-size:32px}.card-dialog{width:min(400px,calc(100vw - 36px));border:1px solid #bdcab5;border-radius:20px;padding:24px;color:#243b32;background:#fffef9}.card-dialog::backdrop{background:#1d342bcc;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.dialog-close{display:flex;margin:0 0 16px auto}.card-dialog .card-tile{min-height:330px;pointer-events:none}.card-dialog .enterprise-type{font-size:14px}.card-dialog .enterprise-glyph{width:26px;height:26px;flex-basis:26px}.card-dialog .card-tile strong{font-size:24px}.card-dialog .card-effect{font-size:17px}.card-dialog .card-type{font-size:12px}.prose{max-width:760px;margin:auto}.prose h2{margin-top:35px}.prose li{margin:12px 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:1000px){.app-shell{padding:0 26px}.welcome{gap:35px}.directory-layout{grid-template-columns:1fr 300px;gap:25px}.market-grid{grid-template-columns:repeat(4,1fr)}.lobby-layout{grid-template-columns:1fr 1fr}.players{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.app-shell{padding:0 18px}header{flex-wrap:wrap;gap:15px;padding:18px 0}nav{gap:18px;width:100%;font-size:12px;flex-wrap:wrap}.brand{font-size:23px}.identity{margin-left:auto;max-width:110px}.welcome{display:block;padding:38px 0;min-height:0}.welcome h1{font-size:39px}.intro{font-size:16px}.hero-city{font-size:55px;margin:15px 0}.hero-city span:nth-child(2){font-size:80px}.login-panel{max-width:none;margin-top:24px}.panel{padding:20px;border-radius:14px}.directory-layout,.lobby-layout{grid-template-columns:1fr}.page-heading{padding:30px 0 22px}.page-heading h1{font-size:34px}.create-panel{margin-top:15px}.room-row{gap:12px;align-items:start}.room-row button{font-size:11px;padding:10px;flex-shrink:0}.room-row h3{font-size:15px}.market-grid{grid-template-columns:repeat(2,1fr);gap:12px}.market .section-heading{align-items:end}.section-heading>.muted{font-size:10px;text-align:right}.card-tile{min-height:230px}.players{gap:8px}.player-summary{padding:9px;flex-wrap:wrap;gap:6px}.player-summary .avatar{width:28px;height:28px;font-size:12px}.player-summary strong{font-size:12px}.player-score{font-size:16px}.landmark-grid{grid-template-columns:repeat(2,1fr);gap:10px}.owned-cards .card-tile{width:calc(50% - 6px)}.turn-panel{gap:8px;padding:18px}.turn-panel h2{font-size:17px}.dice{font-size:45px}.turn-panel .actions{gap:8px}.turn-panel .actions button{font-size:12px}.game-heading h1{font-size:27px}.deadline{font-size:23px}.game-heading .eyebrow{font-size:8px}.members li{gap:10px}.members .quiet{font-size:10px;padding:5px;max-width:100px}.exchange{display:block}.exchange select{margin:8px 0;min-width:0}.exchange button{width:100%}footer{flex-direction:column;gap:5px}.prose h1{font-size:34px}.pagination{font-size:10px}.pagination button{font-size:11px;padding:8px}.connection{font-size:10px;gap:8px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.card-art{display:block;width:100%;height:auto;aspect-ratio:4/3;max-height:150px}.art-sky{fill:#e5eee7}.art-ground{fill:#d2ddc8}.art-cloud{fill:none;stroke:#fffdf7;stroke-width:5;stroke-linecap:round}.art-lines{stroke:#344f46;stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}.paint-wall{fill:#f7e7c5}.paint-roof{fill:#6b9ca4}.paint-glass{fill:#b7d4d2}.paint-leaf{fill:#8daa77}.paint-gold{fill:#e8b95d}.paint-cream{fill:#fff8e7}.paint-dark{fill:#536a5d}.paint-rose{fill:#cf8874}.paint-none{fill:none}.card-tile{min-height:290px;gap:7px}.card-tile .card-art{margin:1px auto 4px}.card-tile.compact{min-height:200px}.card-tile.compact .card-art{max-height:110px}.card-tile strong{align-self:center;justify-content:center}.card-tile.landmark:not(.built) .card-art{opacity:.65;filter:saturate(.5)}.card-tile.landmark.built .card-art{filter:none}.card-dialog .card-art{max-height:270px}.coin-icon{width:20px;height:20px;flex-shrink:0;vertical-align:middle}.coin{display:inline-flex;gap:3px;align-items:center}.coin .coin-icon{width:15px;height:15px}.player-score .coin-icon{width:20px;height:20px}.dice{gap:8px;min-width:54px}.dice-face{width:54px;height:56px;flex-shrink:0}.motion-setting{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:12px}.motion-setting button{padding:6px 10px;font-size:11px}.motion-setting small{max-width:180px;font-size:10px}.motion-layer{position:fixed;inset:0;z-index:60;pointer-events:none;overflow:hidden;contain:layout style}.motion-token{position:absolute;top:0;left:0;opacity:0;width:146px;padding:9px;border-radius:16px;background:#fffcf1;border:1px solid #d5c49b;color:#253d33;box-shadow:0 8px 30px #223e3233;text-align:center;pointer-events:none}.motion-token .card-art{max-height:100px}.motion-label{display:block;font-size:11px;line-height:1.3;overflow-wrap:anywhere;font-weight:650}.motion-coin{width:146px;display:grid;grid-template-columns:28px 1fr 40px;align-items:center;gap:3px}.motion-coin .motion-label{grid-column:1 / -1;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font-size:10px}.motion-victory .motion-sparks i{animation-delay:.9s}.motion-coin>.coin-icon{width:28px;height:28px}.motion-coin>strong{font-size:23px;margin-left:5px;color:#74501c}.motion-coin .card-art{height:32px;width:40px;margin:0}.motion-dice{display:flex;justify-content:center;gap:5px}.motion-roll{width:144px}.motion-turn{width:180px;background:#285d49;color:#fffaf0;border-color:#8eac78}.motion-victory{width:220px;background:#fff5d3}.victory-rays,.construction-rays{color:#b78121;display:block;font-size:24px;letter-spacing:6px}.motion-sparks{position:absolute;inset:0;pointer-events:none}.motion-sparks i{position:absolute;width:6px;height:11px;background:#d3a13f;border-radius:2px;animation:city-confetti .9s ease-out both}.motion-sparks i:nth-child(1){left:5%;top:5%}.motion-sparks i:nth-child(2){left:30%;top:0;background:#6b9ca4}.motion-sparks i:nth-child(3){left:60%;top:0;background:#cf8874}.motion-sparks i:nth-child(4){left:95%;top:5%}.motion-sparks i:nth-child(5){left:0;top:50%;background:#8daa77}.motion-sparks i:nth-child(6){left:100%;top:50%;background:#cf8874}.motion-sparks i:nth-child(7){left:20%;top:90%}.motion-sparks i:nth-child(8){left:80%;top:90%;background:#6b9ca4}@keyframes city-confetti{0%{transform:translateY(-20px) rotate(-30deg) scale(.4);opacity:0}30%{opacity:1}to{transform:translateY(35px) rotate(100deg) scale(1);opacity:0}}@media(max-width:600px){.card-tile{min-height:280px}.card-tile.compact{min-height:175px}.card-tile.compact .card-art{max-height:85px}.dice-face{width:43px;height:45px}.motion-setting{justify-content:flex-start}}@media(prefers-reduced-motion:reduce){.motion-layer *,.card-tile{animation:none!important;transition:none!important}.card-tile:hover{transform:none}}.coin-trail{position:absolute;inset:0;pointer-events:none}.coin-trail .coin-icon{position:absolute;left:25%;top:12px;width:19px;height:19px}.coin-piles{display:inline-flex;flex-wrap:wrap;align-items:end;justify-content:end;gap:3px;max-width:165px;min-height:28px;vertical-align:middle}.coin-pile{display:inline-block;position:relative;width:22px;height:28px;flex:0 0 22px}.stacked-coin{position:absolute;left:0;width:21px;height:10px;border:1px solid #a56b20;border-radius:50%;background:linear-gradient(#fff4a9,#f4d36e 40%,#d49a30 49% 70%,#edbe51 72%);box-shadow:0 1px 1px #71471640}.stacked-coin:last-child:after{content:"";position:absolute;inset:1px 3px 3px;border:1px solid #b77d2e80;border-radius:50%}.coin-piles.compact{max-width:82px;gap:2px}.coin-piles.compact .coin-pile{width:22px}.coin-remainder{color:#755019;font-size:11px;align-self:center}.empty-wallet{color:#95846b}.wallet-number{white-space:nowrap}.player-score .coin-piles{display:flex;margin-top:2px}.city-wallet{display:inline-flex;align-items:center;justify-content:end;flex-wrap:wrap;gap:8px;max-width:230px}.die-stage{display:inline-block;position:relative;width:84px;height:100px;perspective:650px}.die-cube{display:block;position:absolute;width:58px;height:58px;left:13px;top:14px;transform-style:preserve-3d}.cube-face{position:absolute;inset:0;border:2px solid #ffedaa;border-radius:10px;background:linear-gradient(135deg,#fff5bb,#f4c85b 60%,#d69b32);box-shadow:inset 0 0 10px #fff9dba0;backface-visibility:hidden;display:grid;grid-template:repeat(3,1fr) / repeat(3,1fr);padding:7px;gap:3px}.cube-face-1{transform:translateZ(29px)}.cube-face-6{transform:rotateY(180deg) translateZ(29px)}.cube-face-3{transform:rotateY(90deg) translateZ(29px)}.cube-face-4{transform:rotateY(-90deg) translateZ(29px)}.cube-face-2{transform:rotateX(90deg) translateZ(29px)}.cube-face-5{transform:rotateX(-90deg) translateZ(29px)}.pip{width:9px;height:9px;border-radius:50%;align-self:center;justify-self:center;background:#8d5b24;box-shadow:inset 0 2px 2px #674319,0 1px 1px #fff6c1}.pip-1{grid-area:1 / 1}.pip-3{grid-area:1 / 3}.pip-4{grid-area:2 / 1}.pip-5{grid-area:2 / 2}.pip-6{grid-area:2 / 3}.pip-7{grid-area:3 / 1}.pip-9{grid-area:3 / 3}.die-shadow{position:absolute;left:14px;bottom:5px;width:60px;height:15px;border-radius:50%;background:#523d2450;filter:blur(5px)}.die-glow{position:absolute;inset:-3px;border-radius:50%;background:radial-gradient(ellipse,#ffe7a177,transparent 65%);opacity:0;pointer-events:none}.motion-roll{width:204px;border:0;padding:10px;box-shadow:none;background:transparent}.motion-roll .motion-label{display:inline-block;max-width:184px;padding:5px 9px;border:1px solid #d5c49b;border-radius:10px;background:#fffcf1;box-shadow:0 3px 14px #463b2920}.motion-roll .motion-dice{gap:8px}.expansion-picker{min-width:0;margin:12px 0;border:1px solid #d0d8c6;border-radius:12px;padding:12px}.expansion-picker label{display:flex;align-items:start;gap:9px;margin:10px 0}.expansion-picker input{width:auto;flex:0 0 auto;margin-top:4px}.expansion-picker strong,.expansion-picker small{display:block}.expansion-picker small{font-size:12px;font-weight:400;line-height:1.4;margin-top:3px}.player-summary.surrendered{opacity:.65;border-style:dashed}.surrender-note{border-left:4px solid #a97642;padding:12px 16px;background:#f6efdf}.game-exit-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.effect-choice{display:grid;gap:8px;flex:1 0 100%}.effect-choice select{width:100%;min-width:0}.roll-total{flex:1 0 100%}.closed-count{color:#7d4d25;background:#f3e2cc;padding:3px 6px;border-radius:5px;font-size:11px}.investment-count{color:#67558b;font-size:11px;font-weight:700}.card-tile.closed .card-art{filter:grayscale(.8);opacity:.65}.coin-heap{width:140px;height:72px;display:block}.coin-piles.compact .coin-heap{width:82px;height:43px}.coin-piles.compact .coin-pile{width:13px;flex-basis:13px;height:26px}.coin-piles.compact .stacked-coin{width:13px;height:8px}.enterprises-heading{scroll-margin-top:24px}
