/* Ranking: the car is the main visual, with readable identity and score above. */
.league-table{gap:12px}
.street-v3 button.league-card{display:block;padding:12px 12px 4px;border:1px solid #394740;border-radius:12px;overflow:hidden;background:radial-gradient(ellipse at 32% 76%,#33473e66,transparent 65%),linear-gradient(145deg,#202d2d,#142024);color:#edf0e8;text-align:left;box-shadow:0 5px 18px #0002}
.league-card .league-card-head{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:9px;align-items:center;padding-bottom:7px;border-bottom:1px solid #b4c1b21b}
.league-card .league-place{font:500 24px/1 Oswald,sans-serif;color:#8faaa1;font-variant-numeric:tabular-nums}
.league-driver{min-width:0}.league-driver>b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.6}
.league-card .league-driver>small{font-size:8px;letter-spacing:1.1px;color:#c2dda4}
.league-card .league-fans .fan-count{gap:5px;font-size:18px;color:#d1e9ae;white-space:nowrap}
.league-card .league-fans .fan-icon{width:21px;height:21px;flex-shrink:0}
.league-card .league-card-body{display:grid;grid-template-columns:minmax(0,64fr) minmax(0,36fr);align-items:center;gap:8px;min-height:120px}
.league-car-stage{position:relative;display:grid;align-items:center;min-width:0;height:120px;margin-left:-6px}
.league-car-stage::before{content:'';position:absolute;left:3%;right:0;bottom:20px;height:16px;background:#0009;border-radius:50%;filter:blur(6px)}
.league-card .league-car-stage img{position:relative;width:100%;height:118px;max-width:none;object-fit:contain;filter:drop-shadow(0 5px 4px #0005)}
.league-car-spec{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:10px 0}
.league-car-spec>b{font-size:12px;line-height:1.45;overflow-wrap:anywhere}
.league-horsepower{display:flex;align-items:baseline;gap:4px;font:500 23px/1 Oswald,sans-serif;color:#dce3d4}
.league-card .league-horsepower small{display:inline;font:500 10px Manrope,sans-serif;color:#9cafa6}
.league-card .visit-hint{font-size:10px;color:#b7d591;padding:0;display:flex;gap:7px;align-items:center}
.league-card .visit-hint>span{font-size:17px}
.street-v3 button.league-card.self{border-color:#98b773;box-shadow:inset 3px 0 #a9cc7d,0 5px 18px #0002}
.league-card.podium .league-place{color:#e9cb87}.league-card.podium-2 .league-place{color:#cbd9e0}.league-card.podium-3 .league-place{color:#cf9c7b}
.street-v3 button.league-card:hover{background-color:#253830;border-color:#97ad88}.league-card:focus-visible{outline:2px solid #d2e99f;outline-offset:3px}
.community-map{aspect-ratio:430/600}.community-map .town-place{min-height:60px}
.town-list [data-page=globalchat]{grid-column:1/-1;justify-content:center;background:#2c4033}
.community-map [data-page=globalchat] span{border-color:#b8d89480;background:#253c30}
/* City chat stays within the same mobile surface. */
.global-chat-page{min-width:0}.global-chat-heading{display:flex;align-items:center;gap:10px}.global-chat-heading>div{flex:1;min-width:0}.global-chat-heading h1{font-size:25px;margin:4px 0}.global-chat-heading .eyebrow{font-size:8px;letter-spacing:1.4px}.global-chat-heading>button{min-width:44px;min-height:44px;font-size:22px;padding:0}
.global-chat-caption{font-size:10px;line-height:1.6;color:#a5b7ac;margin:9px 0 14px}
.global-messages{height:clamp(250px,52dvh,560px);overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:12px;padding:14px 8px;border-block:1px solid #354a40;background:radial-gradient(ellipse at top,#20382b55,transparent 60%);scrollbar-width:thin;scrollbar-color:#536b53 transparent}
.global-message{align-self:flex-start;max-width:92%;min-width:115px;background:#243330;border:1px solid #3b4d42;border-radius:12px 12px 12px 3px;padding:4px 12px 9px;flex-shrink:0}
.global-message.mine{align-self:flex-end;background:#314632;border-color:#5b734b;border-radius:12px 12px 3px 12px}
.global-message header{display:flex;align-items:center;gap:8px;min-width:0}.global-author{background:none;border:0;color:#cce3ad;font-size:12px;font-weight:800;padding:0;min-height:44px;min-width:44px;text-align:left;overflow-wrap:anywhere;cursor:pointer}.global-message header>span{color:#a8be97;font-size:8px;letter-spacing:1px;flex-shrink:0}
.global-message p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:1.6;margin:0 0 7px;color:#e0e8da}.global-message time{display:block;text-align:right;font-size:9px;color:#acbfa9}
.global-compose{display:grid;grid-template-columns:minmax(0,1fr) 48px;gap:6px 8px;margin:12px 0 0}.global-compose textarea{width:100%;min-width:0;resize:vertical;max-height:140px;min-height:54px;background:#15231e;border:1px solid #4f674e;border-radius:9px;color:#e3eddc;padding:11px;font:inherit;font-size:16px;line-height:1.5}.global-compose button{min-height:48px;align-self:center;padding:0;font-size:28px;border-radius:9px}.global-compose small{grid-column:1/-1;color:#9eaf9c;text-align:right;font-size:10px}
.global-empty{margin:auto;text-align:center;color:#a4b9a8}.global-empty>span{display:inline-grid;place-items:center;border:1px solid #62785566;border-radius:50%;width:54px;height:54px;font-size:28px;color:#c5df9d}.global-empty h2{font-size:18px;color:#dce8d0}.global-empty p{font-size:12px;line-height:1.7}.global-chat-page button:focus-visible,.global-compose textarea:focus-visible{outline:2px solid #c5df9d;outline-offset:2px}
@media(max-width:350px){.street-v3 button.league-card{padding:10px 10px 3px}.league-card .league-card-head{gap:6px;grid-template-columns:27px minmax(0,1fr) auto}.league-card .league-fans .fan-count{font-size:16px}.league-card .league-card-body{gap:5px}.league-card .league-car-stage img{height:105px}.league-car-stage{height:108px}.league-card .league-card-body{min-height:108px}.league-car-spec>b{font-size:11px}.league-driver>b{font-size:12px}.global-chat-heading h1{font-size:22px}}
@media(prefers-reduced-motion:reduce){.league-card,.global-chat-page *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* The tournament shares the large garage cards used in the fan ranking. */
.tour-ranking.league-table{display:grid;gap:12px}.tour-score{display:flex;flex-direction:column;align-items:center;color:#e8d091;font-variant-numeric:tabular-nums}.tour-score>b{font:500 25px/1.2 Oswald,sans-serif}.tour-score>small{font-size:8px;letter-spacing:1px}.tour-finishes{font-size:10px;color:#a0b4a8}
.town-place{position:relative}.community-map .town-place{position:absolute}
.city-unread-badge{display:grid;place-items:center;min-width:23px;min-height:23px;padding:2px 5px;border:2px solid #14221c;border-radius:20px;background:#d9b45e;color:#172018;font:800 11px/1.1 Manrope,sans-serif;box-shadow:0 3px 10px #0006}
.community-map .city-unread-badge{position:absolute;top:0;right:10px}.town-list .city-unread-badge{margin-left:6px}
.city-chat-preview{display:flex;width:100%;flex-direction:column;align-items:flex-start;gap:7px;text-align:left;margin:12px 0;padding:15px;border:1px solid #6f8558;border-radius:12px;background:linear-gradient(130deg,#2c4031,#192724);color:#e1ecd5;min-height:44px}
.city-chat-preview .eyebrow{font-size:8px;letter-spacing:1px;color:#e2c981}.city-chat-preview>b{font-size:13px}.city-chat-preview>span:not(.eyebrow){display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;font-size:12px;line-height:1.5}.city-chat-preview>small{color:#b9d898;font-size:10px}

/* Screenshot attachments stay compact; full image opens on demand. */
.global-attachment{display:block;margin:8px 0;max-width:360px;border-radius:8px;overflow:hidden;background:#0c1719}
.global-attachment img{display:block;width:auto;max-width:100%;height:auto;max-height:300px;object-fit:contain;margin:auto}
.global-attachment-preview{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid #344442}
.global-attachment-preview img{width:56px;height:64px;object-fit:cover;border-radius:5px}
.global-attachment-preview span{flex:1;font-size:14px}.global-attachment-preview small{display:block;color:#9cafaa;margin-top:5px;font-size:12px}
.global-attachment-preview button{min-width:44px;min-height:44px;font-size:24px}
.global-compose{grid-template-columns:44px minmax(0,1fr) 48px;align-items:center}
.global-compose textarea{grid-column:2;grid-row:1}.global-compose [data-global-submit]{grid-column:3;grid-row:1}
.global-compose .global-attach{grid-column:1;grid-row:1;position:relative;display:grid;place-items:center;width:44px;height:48px;border:1px solid #40564d;border-radius:7px;color:#b4cc94;font-size:26px;cursor:pointer;overflow:hidden}
.global-attach:focus-visible{outline:2px solid #b4cc94;outline-offset:2px}.global-attach:disabled{opacity:.4;cursor:default}
.global-compose small{grid-column:2 / 4}
/* Scroll position is restored once by the chat, including older-page inserts. */
.global-messages{overflow-anchor:none}

/* Reserve attachment geometry before decoding, including lazy-loaded history. */
.global-message.has-image{width:92%;max-width:360px}
.global-message .global-attachment{width:min(100%,var(--chat-image-width,360px));max-width:100%;aspect-ratio:var(--chat-image-ratio,4 / 3)}
.global-message .global-attachment img{width:100%;height:100%;max-height:none;object-fit:contain}
