:root{--paper:#f5eedc;--paper-deep:#e9dfc6;--ink:#252d29;--muted:#6e7161;--red:#b93625;--red-dark:#91291e;--orange:#d78632;--line:#d2c8b1;--green:#3c6252;--display:Impact,'Arial Narrow','Helvetica Neue',sans-serif;--body:'Avenir Next',Avenir,'Segoe UI',sans-serif}
*{box-sizing:border-box} [hidden]{display:none!important}
body{margin:0;background:#e3dcc9;background-image:repeating-linear-gradient(0deg,#6a624206 0 1px,transparent 1px 4px);color:var(--ink);font:14px/1.5 var(--body)}
button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--line);background:var(--paper);min-height:42px;padding:10px 15px;font-weight:700;font-size:12px;letter-spacing:.3px;border-radius:3px;transition:background .15s,transform .15s}button:hover:not(:disabled){background:var(--paper-deep)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.42;cursor:not-allowed}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--orange);outline-offset:3px}button.primary{background:var(--red);border-color:var(--red-dark);color:#fff6e5;box-shadow:0 3px 0 var(--red-dark)}button.primary:hover:not(:disabled){background:var(--red-dark)}button.primary span{font-size:20px;line-height:1}.wide{width:100%;display:flex;align-items:center;justify-content:center;gap:20px;min-height:48px}.ghost{background:transparent;border-color:transparent}.outline{border-color:var(--ink)}
h1,h2,h3,p{margin-top:0}h2{font:38px/1.05 var(--display);font-weight:800;letter-spacing:-.5px;margin-bottom:20px}h3{font:19px/1.1 var(--display);text-transform:uppercase;font-weight:700;letter-spacing:.5px;margin:0}a{color:inherit}input[type=text],select{display:block;width:100%;background:#fffaf0;border:1px solid var(--line);border-radius:3px;padding:10px 11px;min-height:43px}input[type=checkbox]{accent-color:var(--red);width:17px;height:17px;flex:none}label{display:block;font-size:12px;font-weight:600;letter-spacing:.2px}label>select,label>input[type=text]{margin-top:5px}select{padding-right:20px}input[type=text]::placeholder{color:#92917f}label.check-label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:400;margin:15px 0 18px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:800;line-height:1.5}.red{color:var(--red)}.hint{color:var(--muted);font-size:13px;line-height:1.6}.small{font-size:11px}.err{color:var(--red);font-size:13px;margin:12px 0;min-height:1em}.paper{background:var(--paper);border:1px solid #cec4ad;box-shadow:0 4px 12px #33290f08}.muted{color:var(--muted)}
.top{display:flex;align-items:center;gap:25px;margin:0 auto;padding:16px 32px;border-bottom:1px solid #b8ae98;max-width:1600px}.wordmark{font:italic 40px/.9 var(--display);font-weight:900;letter-spacing:-2px;text-decoration:none;color:var(--red);flex:none}.wordmark-lines{font-size:34px;letter-spacing:-6px;margin-left:5px}.masthead{display:flex;flex-direction:column;font-size:9px;font-weight:800;letter-spacing:2px;border-left:1px solid #b8ae98;padding-left:22px;gap:3px}.masthead>span{font-size:9px;letter-spacing:1.2px;color:var(--muted)}.hdr-actions{display:flex;gap:5px;align-items:center;margin-left:auto}.hdr-actions button{font-size:11px;padding:8px 10px;min-height:36px}#conn{font-size:11px;color:var(--red);max-width:120px}.site-footer{display:flex;justify-content:space-between;gap:15px;max-width:1480px;margin:20px auto;padding:0 28px 12px;font-size:9px;font-weight:700;letter-spacing:1.7px;color:var(--muted)}
.setup{max-width:1100px;margin:36px auto;display:grid;grid-template-columns:1.04fr 1fr;min-height:650px}.poster{position:relative;background:#eee4ca;overflow:hidden;padding:36px 38px 45px;border-right:1px solid var(--line);display:flex;flex-direction:column}.poster:after{content:'';position:absolute;inset:12px;border:1px solid #d1c4a5;pointer-events:none}.poster .eyebrow{margin-bottom:24px;color:#767461}.poster h1{font:800 79px/.92 var(--display);letter-spacing:-1px;margin:0;position:relative;z-index:1}.poster h1 em{font:italic 68px/.99 Georgia,serif;font-weight:700;color:var(--red);letter-spacing:-4px;white-space:nowrap}.poster-copy{margin:20px 0 0;font:italic 17px/1.55 Georgia,serif;max-width:300px;color:#6c6b56}.poster-art{display:block;width:calc(100% + 80px);margin:15px -40px 0;min-height:220px;flex:1}.poster-footer{display:flex;justify-content:space-between;gap:8px;font-size:8px;font-weight:800;letter-spacing:1.2px;position:absolute;bottom:27px;left:30px;right:30px}.entry{padding:35px 34px 24px}.entry>.eyebrow{margin-bottom:10px}.entry h2{font-size:36px;line-height:1.02;margin-bottom:24px}.tabs{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line);margin-bottom:20px}.tab{border:0;border-radius:0;background:none;color:var(--muted);font-size:11px;padding:11px 8px;border-bottom:3px solid transparent;margin-bottom:-1px;white-space:nowrap}.tab.active{color:var(--red);border-color:var(--red)}.tabpane>.hint{margin:0 0 15px}.inline-label{display:flex;align-items:center;justify-content:space-between}.inline-label select{width:74px;margin:0;min-height:36px;padding:5px 10px}#player-names{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;margin:12px 0 15px}.name-row{display:flex;align-items:center;gap:8px}.name-row input{min-width:0;min-height:36px;padding:6px 8px;font-size:12px}.driver-badge{--team:var(--red);width:25px;height:25px;border:1px solid #252d2930;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--team);color:white;font-size:12px;font-weight:800;flex:none;text-shadow:0 1px 2px #000b}.form-grid{display:grid;grid-template-columns:minmax(0,1fr) 76px;gap:12px}.form-grid select{font-size:12px}#track-description{margin:8px 0 0}.entry-fine{font-size:10px;line-height:1.5;color:#82816f;margin:23px 0 0;border-top:1px solid var(--line);padding-top:13px}#tab-create>label,#tab-join>label{margin:18px 0}#tab-create>.primary,#tab-join>.primary{margin-top:25px}#join-code{text-transform:uppercase;font-size:24px;letter-spacing:6px;font-weight:700}.entry-note{padding:20px 16px;border:1px solid var(--line);margin-top:30px;color:var(--muted)}.entry-note p{margin:9px 0 0;font-size:12px}
#game{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(350px,1fr);gap:20px;max-width:1480px;margin:24px auto;padding:0 26px;align-items:start}#race-board{min-width:0;display:grid;gap:18px}#track-wrap{overflow:hidden}.circuit-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:22px 24px 0}.circuit-heading .eyebrow{color:var(--muted)}.circuit-heading h2{font-size:28px;margin:3px 0 0;letter-spacing:0}.race-counter{text-align:right;font:700 23px/1.1 var(--display)}.race-counter small{display:block;font:9px/1.5 var(--body);font-weight:700;letter-spacing:1.3px;color:var(--muted);margin-top:3px}.canvas-wrap{width:100%;aspect-ratio:1.48;position:relative}canvas{display:block;width:100%;height:100%}.corner-legend{display:flex;justify-content:center;gap:8px 16px;flex-wrap:wrap;margin:0 16px 17px;font-size:10px;color:var(--muted)}.corner-legend span{display:flex;align-items:center;gap:6px}.limit-sign{display:inline-flex;align-items:center;justify-content:center;font-weight:800;color:var(--ink);border:2px solid var(--red);border-radius:50%;width:23px;height:23px;background:#fffaf0}.track-footer{display:flex;justify-content:space-between;gap:8px;font-size:8px;letter-spacing:1px;font-weight:700;color:var(--muted);padding:12px 20px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.section-heading>.eyebrow{font-size:8px;color:var(--muted)}#standings-wrap{padding:19px 22px}#standings{margin-top:13px}.standing{display:grid;grid-template-columns:20px 25px minmax(50px,1fr) 49px 51px 45px;align-items:center;gap:9px;border-top:1px solid var(--line);padding:9px 0;font-size:11px}.standing.current{background:#e4dbc455;box-shadow:-7px 0 0 #e4dbc455,7px 0 0 #e4dbc455}.standing .rank{color:var(--muted);font-weight:700}.standing-name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.standing-name small{display:block;font-weight:400;font-size:9px;color:var(--muted)}.standing-stat{text-align:right;font-weight:700}.standing-stat small{font-size:8px;font-weight:400;color:var(--muted);display:block}.standing-stat.heat{color:var(--red)}
#panel{padding:22px;min-width:0;border-top:4px solid var(--ink)}#room-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:15px;margin-bottom:17px;border-bottom:1px solid var(--line);font-size:11px}#room-bar strong{letter-spacing:2px;font-size:14px}#room-bar button{font-size:10px;min-height:32px;padding:6px 9px}.phase-label{font-size:10px;font-weight:800;letter-spacing:1.7px;color:var(--red);display:block;margin-bottom:9px}#status h2{font-size:29px;line-height:1.15;overflow-wrap:anywhere;margin:0 0 9px}#status h2 .driver-badge{vertical-align:4px;margin-right:6px}#status p{margin:0 0 18px;color:var(--muted);font-size:12px}.driver-meta{display:flex;gap:12px;justify-content:space-between;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:11px 0;margin-bottom:18px}.driver-meta>div{font:700 22px/1.1 var(--display)}.driver-meta small{display:block;font:8px/1.4 var(--body);font-weight:700;color:var(--muted);letter-spacing:1px;margin-top:3px}.driver-meta .heat{color:var(--red)}.control-label{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:18px 0 9px;font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase}.control-label span{font-size:9px;color:var(--muted);font-weight:500;letter-spacing:0;text-transform:none}.gears{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.gear{min-height:66px;padding:8px 4px;position:relative}.gear b{font:26px/1 var(--display)}.gear small{display:block;font-size:8px;font-weight:500;margin-top:3px}.gear.selected{border-color:var(--ink);background:var(--ink);color:var(--paper)}.gear .shift-cost{position:absolute;top:4px;right:5px;font-size:8px;color:var(--red)}.gear.selected .shift-cost{color:#f3bd85}.hand{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 7px;margin:16px 0}.cardbtn{padding:0;min-width:0;border:1px solid #bdb19b;background:#fffaf0;overflow:hidden;position:relative;border-radius:4px;box-shadow:0 2px 2px #252d2912;min-height:110px;display:flex;flex-direction:column;align-items:center;transition:transform .14s,box-shadow .14s}.cardbtn:disabled{opacity:.55}.cardbtn.sel{transform:translateY(-5px);box-shadow:0 0 0 2px var(--red),0 6px 0 #b936251b;border-color:var(--red)}.card-top{font-size:8px;letter-spacing:1px;width:100%;padding:5px 0;background:#e7deca;color:var(--muted);text-transform:uppercase}.card-value{font:39px/1.1 var(--display);display:block;margin-top:4px}.card-art{width:42px;height:22px;margin:1px auto;color:var(--red)}.card-foot{font-size:8px;font-weight:500;color:var(--muted);margin:0 0 6px}.cardbtn.stress{background:#efe3c1;border-color:#bc9a51}.cardbtn.stress .card-top{background:#ddc591;color:#6c4d24}.cardbtn.stress .card-value{color:#9b651e}.cardbtn.heat{background:#eed2bd;border-color:#c77e56}.cardbtn.heat .card-top{background:#bd593d;color:#fff2de}.cardbtn.heat .card-value{color:var(--red)}.cardbtn.sel:after{content:'✓';position:absolute;bottom:4px;right:5px;color:var(--red);font-size:12px}.corner-preview{display:flex;align-items:center;gap:10px;font-size:10px;color:var(--muted);padding:9px 11px;background:#eae2ce}.corner-preview .limit-sign{width:28px;height:28px;flex:none;font-size:13px}.corner-preview strong{display:block;color:var(--ink);font-size:11px}.estimate{border:1px solid var(--line);background:#ece3ce;padding:11px 12px;margin:15px 0;display:flex;align-items:center;justify-content:space-between;gap:12px}.estimate strong{font:31px/1 var(--display);white-space:nowrap}.estimate small{font-size:9px;font-weight:700;color:var(--muted);display:block;letter-spacing:1px}.estimate p{font-size:10px;line-height:1.5;margin:0;text-align:right;max-width:200px}.action-hint{font-size:11px;color:var(--muted);line-height:1.6;margin:10px 0 16px}.action-hint.warning{color:var(--red)}.reaction-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:16px 0}.reaction-grid button{display:flex;align-items:center;flex-direction:column;gap:6px;padding:12px 3px;font-size:11px}.reaction-grid b{font:24px/1 var(--display)}.reaction-grid small{font-size:9px;font-weight:400}.reaction-grid .cool{color:var(--green)}.reaction-grid .boost{color:var(--red)}.corner-cost{padding:14px;background:#e9dfc8;border-left:3px solid var(--orange);margin:16px 0;font-size:12px}.corner-cost.danger{border-color:var(--red);background:#edddc8}.corner-cost p{margin:6px 0 0;font-size:11px;line-height:1.6;color:var(--muted)}.corner-cost.danger strong{color:var(--red)}.played{display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-size:10px;color:var(--muted);margin:12px 0}.played b{display:inline-flex;justify-content:center;align-items:center;min-width:25px;height:30px;border:1px solid var(--line);background:#fffaf0;color:var(--ink);font-size:13px}.waiting{background:#eae1cd;border:1px dashed #c0b79f;padding:20px 16px;margin:18px 0;text-align:center;font-size:12px;color:var(--muted)}.waiting strong{display:block;color:var(--ink);font-size:14px;margin-bottom:7px}.plan-progress{display:grid;gap:8px;margin:18px 0}.plan-progress>div{display:flex;align-items:center;gap:8px;font-size:11px}.plan-progress small{margin-left:auto;color:var(--muted);font-size:10px}#log-wrap{border-top:1px solid var(--line);margin-top:22px;padding-top:13px}#log-wrap summary{display:flex;justify-content:space-between;cursor:pointer;font-size:10px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;list-style:none}#log{max-height:170px;overflow:auto;margin-top:12px;font-size:11px;color:var(--muted)}#log div{padding:6px 0;border-top:1px dashed #d4cab4;line-height:1.5}#log .hl{color:var(--ink);font-weight:600}.code{font:60px/1 var(--display);letter-spacing:10px;padding:20px 0;text-align:center;background:var(--ink);color:var(--paper);margin:15px 0}.invite-link{width:100%;font-size:11px!important;padding:9px!important;margin-bottom:12px}.player-list{list-style:none;padding:0;margin:22px 0}.player-list li{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);font-size:13px}.player-list .driver-name{overflow-wrap:anywhere;min-width:0}.player-list small{margin-left:auto;font-size:10px;color:var(--muted);white-space:nowrap}.player-list .offline{color:var(--red)}.lobby-note{padding:18px;margin:18px 0;font-size:12px;background:#e8dfc9}.lobby-note p{margin:6px 0 0}.lobby-game{grid-template-columns:minmax(0,700px)!important;justify-content:center}.lobby-game #panel{padding:30px 38px}.podium{list-style:none;padding:0;margin:18px 0}.podium li{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.podium .place{font:26px var(--display);color:var(--muted);width:22px}.podium li:first-child{color:var(--red)}.podium li:first-child .place{color:var(--red)}
#overlay{position:fixed;inset:0;z-index:50;background:var(--ink);background-image:repeating-linear-gradient(-35deg,transparent 0 40px,#ffffff03 40px 80px);display:flex;justify-content:center;align-items:center;padding:24px}.privacy-card{width:420px;max-width:100%;text-align:center;padding:35px}.privacy-number{font:105px/1 var(--display);color:var(--red);margin:23px 0 12px}.privacy-card h2{font-size:32px;overflow-wrap:anywhere}.privacy-card p{font:italic 16px/1.6 Georgia,serif;color:var(--muted);margin:16px 0 26px}.privacy-card .ghost{margin-top:12px;font-size:11px}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:14px 22px;box-shadow:0 5px 25px #0003;z-index:100;max-width:min(92vw,560px);font-size:13px;border-left:4px solid var(--orange);border-radius:3px}dialog{width:610px;max-width:calc(100% - 28px);max-height:90dvh;overflow:auto;background:var(--paper);color:var(--ink);border:1px solid var(--line);padding:28px 34px;box-shadow:0 20px 80px #0005}dialog::backdrop{background:#18251dcc;backdrop-filter:blur(3px)}dialog h2{font-size:40px;margin:14px 0 22px}dialog>p{font-size:13px;line-height:1.75}.rules-steps{padding-left:23px;counter-reset:rule}.rules-steps li{padding:8px 0 8px 7px}.rules-steps li::marker{font-weight:800;color:var(--red)}.rules-steps h3{font-size:18px;margin-bottom:8px}.rules-steps p{font-size:12px;line-height:1.8;margin-bottom:7px}.rules-tip{border-left:3px solid var(--red);padding:14px 17px;background:#e9dfc6;margin:15px 0}.rules-tip p{margin:5px 0 0;font-size:12px}.rules-tip b{font-size:11px;text-transform:uppercase;letter-spacing:1px}
@media(min-width:1500px){.setup{margin-top:55px}.canvas-wrap{aspect-ratio:1.6}}
@media(max-width:1100px){.setup{margin:25px;grid-template-columns:.95fr 1fr}.poster{padding:30px}.poster h1{font-size:68px}.poster h1 em{font-size:57px}.entry{padding:30px 26px}#game{gap:14px;padding:0 16px;grid-template-columns:minmax(0,1.4fr) minmax(335px,1fr)}#panel{padding:18px}.circuit-heading{padding:18px 18px 0}.circuit-heading h2{font-size:24px}.track-footer{padding:10px;font-size:7px}.standing{gap:6px;grid-template-columns:16px 25px minmax(45px,1fr) 40px 38px 40px}#standings-wrap{padding:18px}.canvas-wrap{aspect-ratio:1.28}}
@media(max-width:800px){.top{padding:15px 20px;gap:20px}.masthead{display:none}.setup{max-width:620px;margin:24px auto;grid-template-columns:1fr}.poster{min-height:235px;padding:25px 28px;border-right:0;border-bottom:1px solid var(--line)}.poster .eyebrow{font-size:8px;margin-bottom:13px}.poster h1{font-size:43px;line-height:.97;max-width:270px}.poster h1 br:nth-child(2){display:none}.poster h1 em{display:block;font-size:39px;letter-spacing:-2px}.poster-copy{font-size:13px;margin:11px 0 12px}.poster-art{position:absolute;right:-10px;bottom:18px;width:340px;min-height:0;margin:0;opacity:.9}.poster-footer{font-size:7px;bottom:20px}.poster-footer span:last-child{display:none}.entry{padding:28px 30px}.entry h2 br{display:none}.entry h2{font-size:31px;margin-bottom:18px}#game{grid-template-columns:1fr;max-width:700px;margin:18px auto}.canvas-wrap{aspect-ratio:1.7}#race-board{gap:12px}#panel{padding:22px}.hand{grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.cardbtn{min-height:108px}.card-top{font-size:7px;letter-spacing:.4px}.card-value{font-size:37px}.card-art{width:34px}.standing{grid-template-columns:20px 25px minmax(50px,1fr) 60px 55px 60px}#standings{display:grid;grid-template-columns:1fr}.driver-meta{justify-content:space-around}.corner-legend{font-size:9px}.site-footer{font-size:8px;letter-spacing:1px}.gear{min-height:65px}.reaction-grid button{padding:16px 5px}.estimate p{max-width:none}#track-wrap{order:0}}
@media(max-width:480px){.top{padding:14px 13px;gap:10px;flex-wrap:wrap}.wordmark{font-size:35px}.wordmark-lines{font-size:28px}.hdr-actions{gap:0}.hdr-actions button{padding:8px;font-size:10px}#conn{position:fixed;top:0;left:0;right:0;max-width:none;text-align:center;background:var(--red);color:white;z-index:40;font-size:10px}.setup{margin:14px 12px}.poster{padding:25px 23px;min-height:245px}.poster h1{font-size:42px}.poster-art{right:-93px;bottom:15px;width:338px}.poster-copy{max-width:195px;position:relative;z-index:1}.poster-footer{left:24px;right:24px}.poster-footer span:nth-child(2){display:none}.entry{padding:25px 20px}.entry>.eyebrow{font-size:9px}.entry h2{font-size:29px}.tab{font-size:10px;padding:10px 5px}.hint{font-size:12px}#player-names{gap:8px}#game{padding:0 10px;gap:13px}.circuit-heading{padding:17px 15px 0}.circuit-heading h2{font-size:23px}.circuit-heading .eyebrow{font-size:8px}.race-counter{font-size:20px}.canvas-wrap{aspect-ratio:1.23}.track-footer{font-size:6px;letter-spacing:.6px}.corner-legend{gap:6px 10px;font-size:8px;margin:0 8px 12px}.limit-sign{width:21px;height:21px}#standings-wrap{padding:16px}.section-heading>.eyebrow{font-size:7px}.standing{grid-template-columns:14px 25px minmax(45px,1fr) 40px 38px 40px;gap:7px;padding:8px 0}#panel{padding:20px 16px}.hand{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px 8px}.cardbtn{min-height:111px}.card-art{width:39px}.card-top{font-size:8px}.control-label{font-size:9px}.site-footer{justify-content:center}.site-footer>span:last-child{display:none}.lobby-game #panel{padding:24px 20px}.privacy-card{padding:28px 22px}.privacy-card h2{font-size:29px}dialog{padding:22px}dialog h2{font-size:34px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
