/* CTH64 is deliberately track-scoped. Other courses keep their normal renderer. */
.cth64-select{margin:12px 0 4px;padding:12px;border:2px solid #ffbd43;background:#120818;box-shadow:0 7px 0 #07030c,0 0 26px rgba(255,74,40,.22);font-family:"Courier New",monospace;text-transform:uppercase}
.cth64-heading{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;margin-bottom:10px}.cth64-heading span{font-size:8px;letter-spacing:2px;color:#ffcc58}.cth64-heading h2{font-size:17px;line-height:1.05;margin:4px 0 0;letter-spacing:-.5px}.cth64-heading>b{max-width:220px;text-align:right;font-size:7px;line-height:1.45;color:#87e9ff}
.cth64-roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.cth64-roster button{min-height:70px;padding:7px;display:flex;align-items:center;gap:7px;text-align:left;background:#261230;border:2px solid #5e365f;color:#fff;box-shadow:inset -3px -3px 0 rgba(0,0,0,.34);font-family:inherit}.cth64-roster button:hover{border-color:#ffd45c;transform:translateY(-1px)}.cth64-roster button.selected{background:#ffe068;color:#160b19;border-color:#fff4b4;box-shadow:0 0 0 2px #ff4c3d,0 5px 0 #7e271f}.cth64-roster button span:last-child{min-width:0}.cth64-roster strong{display:block;font-size:8px;line-height:1.1}.cth64-roster small{display:block;margin-top:4px;font-size:6px;line-height:1.2;opacity:.74}
.cth64-pixel-avatar{position:relative;display:block;flex:0 0 35px;width:35px;height:42px;background:#303947;border:2px solid currentColor;image-rendering:pixelated;box-shadow:inset -6px -6px 0 rgba(0,0,0,.22)}.cth64-pixel-avatar:before{content:"";position:absolute;left:8px;top:5px;width:17px;height:15px;background:#d4a47a;border:2px solid #171018}.cth64-pixel-avatar:after{content:"";position:absolute;left:5px;bottom:3px;width:23px;height:16px;background:#161921;border:2px solid #171018}.cth64-pixel-avatar i{position:absolute;z-index:2;left:11px;top:11px;width:3px;height:3px;background:#171018;box-shadow:9px 0 #171018}.cth64-pixel-avatar b{position:absolute;z-index:3;right:1px;bottom:0;font-size:8px;color:#ffdc5d;text-shadow:1px 1px #000}.cth64-wolf:before{background:#666d78;clip-path:polygon(0 25%,20% 0,38% 24%,63% 24%,80% 0,100% 25%,100% 100%,0 100%)}.cth64-wolf:after{background:#ece9df}.cth64-guardian:after{background:#17416c}.cth64-guardian b{color:#fff1a3}.cth64-empty-suit:before{background:#09070d;border-color:#e9e7ec}.cth64-empty-suit:after{background:#252036}.cth64-clerk:after{background:#4b7182}.cth64-angry-parent:after{background:#a51e31}.cth64-process-server:after{background:#456d4f}.cth64-billable-hour:after{background:#6d501d}.cth64-character-copy{display:grid;grid-template-columns:minmax(170px,.65fr) minmax(210px,1fr);gap:6px 14px;margin-top:10px;padding:9px;background:#07030c;border:1px solid #ffffff26}.cth64-character-copy p{margin:0}.cth64-character-copy strong{display:block;font-size:13px;color:#ffe06c}.cth64-character-copy span{display:block;font-size:7px;color:#8ee6ff;margin-top:3px}.cth64-character-copy #cth64-line{font-size:9px;line-height:1.35}.cth64-character-copy small{grid-column:1/-1;font-size:7px;color:#e6c9ef}.cth64-note{margin:8px 0 0;font-size:7px;line-height:1.35;color:#aeb6c9}
body.cth64-preview .fl-car{display:none}body.cth64-preview #fl-kicker{color:#ffd55f}body.cth64-preview .fl-copy>h1 em{font-family:"Courier New",monospace;letter-spacing:-2px;text-shadow:3px 3px 0 #561930}
body.cth64-active #world,body.cth64-active #weather-fx{image-rendering:pixelated;image-rendering:crisp-edges;filter:saturate(1.14) contrast(1.07)}body.cth64-active #app:after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.095;background-image:repeating-linear-gradient(0deg,transparent 0 3px,rgba(8,0,18,.34) 3px 4px),repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0 1px,transparent 1px 4px);mix-blend-mode:overlay}body.cth64-active #hud,body.cth64-active #course-alert,body.cth64-active #race-telemetry{font-family:"Courier New",monospace}body.cth64-active .mission h2,body.cth64-active #map-label,body.cth64-active #region{text-shadow:2px 2px 0 #2d071d,0 0 9px #ff713e}body.cth64-active .vignette{background:radial-gradient(circle at 50% 54%,transparent 26%,rgba(22,0,29,.23) 67%,rgba(4,0,8,.75) 100%)}
body.cth64-active:before{content:"CTH64";position:fixed;z-index:4;right:max(12px,env(safe-area-inset-right));bottom:max(8px,env(safe-area-inset-bottom));font:900 9px/1 "Courier New",monospace;letter-spacing:2px;color:#ffe064;text-shadow:2px 2px 0 #731e28;pointer-events:none;opacity:.78}
.gp21-modal .same-wifi-quick{margin:10px 0;padding:10px;background:#071d37;border:1px solid #68d9ff55}.same-wifi-quick b{display:block;color:#8de8ff;font-size:10px;letter-spacing:1px}.same-wifi-quick p{margin:5px 0 0;font-size:8px;line-height:1.5;color:#cbd9e8}.party-quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}.party-quick-actions button{min-height:48px}.party-quick-actions #party-host{background:#c62839;color:#fff}.party-quick-actions #party-scan{background:#1f6d85;color:#fff}.party-code-tools{display:grid;grid-template-columns:1fr auto;gap:7px;align-items:end}.party-code-tools input{width:100%}.party-scanner{position:fixed;inset:0;z-index:120;background:#05070de8;display:grid;place-items:center;padding:18px}.party-scanner>div{width:min(520px,96vw);background:#0d2038;border:2px solid #78defd;padding:14px}.party-scanner video{display:block;width:100%;max-height:62vh;object-fit:cover;background:#000;image-rendering:auto}.party-scanner p{font-size:9px;line-height:1.5}.party-scanner .scan-frame{position:relative}.party-scanner .scan-frame:after{content:"";position:absolute;inset:14%;border:4px solid #ffe064;box-shadow:0 0 0 999px rgba(0,0,0,.15),0 0 22px #ff613d;pointer-events:none}
@media(max-width:720px){.cth64-roster{grid-template-columns:repeat(2,minmax(0,1fr))}.cth64-heading{align-items:flex-start;flex-direction:column}.cth64-heading>b{text-align:left}.cth64-character-copy{grid-template-columns:1fr}.cth64-character-copy small{grid-column:auto}.cth64-select{padding:9px}.party-quick-actions{grid-template-columns:1fr}}
@media(max-height:430px) and (orientation:landscape){.cth64-roster{display:flex;overflow-x:auto;gap:6px;padding-bottom:5px}.cth64-roster button{flex:0 0 165px;min-height:58px}.cth64-heading h2{font-size:14px}.cth64-character-copy{grid-template-columns:150px 1fr;padding:6px}.cth64-note{display:none}}
@media(prefers-reduced-motion:reduce){.cth64-roster button:hover{transform:none}}
