:root{--bg:#0b1220;--bg-surface:#131b2c;--bg-graphite:#1a2336;--bg-input:#0f1825;--border:#2a3447e6;--border-soft:#2a34478c;--accent:#2f80ff;--accent-dim:#1f5fd9;--accent-soft:#5aa0ff;--accent-glow:#2f80ff38;--success:#22c58a;--danger:#ef4444;--warning:#f59e0b;--ink-strong:#e8edf5;--ink-muted:#8a96ab;--ink-soft:#5a6478;--shadow-sm:0 4px 12px #0003;--shadow-md:0 12px 30px #00000057;--shadow-lg:0 20px 48px #00000073;--radius-sm:.5rem;--radius-md:.75rem;--radius-lg:1rem;--radius-xl:1.25rem;--title-font:"Bebas Neue", "Oswald", "Avenir Next Condensed", "Arial Narrow", sans-serif;--body-font:"Inter", "Avenir Next", "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{color:var(--ink-strong);font-family:var(--body-font);background:radial-gradient(circle at bottom right, #0ea5e92e, transparent 44%), radial-gradient(circle at top left, #2f80ff1f, transparent 50%), var(--bg);background-attachment:fixed;margin:0;line-height:1.5}h1,h2,h3{font-family:var(--title-font);letter-spacing:.03em;color:var(--ink-strong)}button,input,textarea,select{font:inherit}button,select,input[type=range]{cursor:pointer}input:focus-visible,textarea:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:var(--accent-soft)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#2f80ff59;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#2f80ff8c}.app-shell{gap:1rem;width:min(100%,70rem);margin:0 auto;padding:1.25rem 1rem 4rem;animation:.32s shell-in;display:grid}.hero-panel,.place-card,.review-form,.recent-reviews,.state-picker,.detail-hero{border-radius:var(--radius-xl);box-shadow:var(--shadow-md);background:repeating-linear-gradient(135deg,#ffffff08 0 1px,#0000 1px 24px),radial-gradient(at 100% 100%,#0ea5e947 0%,#0000 65%),#0d1525;border:1px solid #ffffff12}.hero-panel{padding:1.3rem;position:relative;overflow:hidden}.hero-panel>*{z-index:1;position:relative}.hero-panel h1{text-transform:uppercase;color:var(--ink-strong);margin:.3rem 0 .65rem;font-size:clamp(2rem,8vw,3.2rem);line-height:1}.hero-panel>p{color:var(--ink-muted);margin:0;font-size:.9rem}.eyebrow{text-transform:uppercase;letter-spacing:.18rem;color:var(--accent-soft);margin:0;font-size:.65rem;font-weight:700}.hero-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-top:1rem;display:grid}.hero-stats article{border-radius:var(--radius-md);background:#2f80ff14;border:1px solid #2f80ff33;padding:.5rem .65rem;display:grid}.hero-stats strong{font-family:var(--title-font);color:var(--accent-soft);letter-spacing:.04rem;font-size:1.35rem}.hero-stats span{text-transform:uppercase;letter-spacing:.07rem;color:var(--ink-muted);font-size:.65rem}.state-picker{gap:.85rem;padding:1rem;display:grid}.state-search{border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--bg-input);width:100%;color:var(--ink-strong);box-sizing:border-box;padding:.7rem .9rem;font-size:.95rem;transition:border-color .14s}.state-search:focus{border-color:var(--accent);outline:none}.state-search::placeholder{color:var(--ink-soft)}.state-grid{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.5rem;display:grid}.state-btn{text-align:center;border-radius:var(--radius-md);box-shadow:var(--shadow-md);color:var(--ink-strong);background:repeating-linear-gradient(135deg,#ffffff08 0 1px,#0000 1px 24px),radial-gradient(at 100% 100%,#0ea5e947 0%,#0000 65%),#0d1525;border:1px solid #ffffff12;gap:.1rem;padding:.8rem .5rem;transition:border-color .14s,transform .14s,box-shadow .14s;display:grid}.state-btn:hover{box-shadow:0 6px 20px var(--accent-glow);border-color:#2f80ff99;transform:translateY(-2px)}.state-abbr{font-family:var(--title-font);letter-spacing:.04rem;font-size:1.25rem}.state-name{text-transform:uppercase;letter-spacing:.05rem;color:var(--ink-muted);font-size:.65rem;transition:color .14s}.state-count{color:var(--ink-soft);font-size:.6rem;transition:color .14s}.state-btn:hover .state-name,.state-btn:hover .state-count{color:#fffc}.list-nav{gap:.5rem;display:flex}.place-list{gap:.6rem;display:grid}.place-card{text-align:left;color:var(--ink-strong);padding:.9rem 1rem;transition:border-color .16s,transform .16s,box-shadow .16s}.place-card:hover{box-shadow:var(--shadow-lg);border-color:#2f80ff80;transform:translateY(-1px)}.place-card h2{color:var(--ink-strong);margin:.3rem 0 .2rem;font-size:1.1rem}.place-card p{color:var(--ink-muted);margin:.2rem 0;font-size:.84rem}.place-card .surface{color:var(--ink-soft);font-size:.8rem}.track-desc-preview{color:var(--ink-soft);margin:.25rem 0;font-size:.79rem;line-height:1.45}.card-top-row{flex-wrap:wrap;gap:.3rem;margin-bottom:.15rem;display:flex}.detail-link{color:var(--accent-soft);text-transform:uppercase;letter-spacing:.06rem;margin-top:.4rem;font-size:.66rem;font-weight:700;display:inline-flex}.badge{border:1px solid var(--border-soft);text-transform:uppercase;letter-spacing:.06rem;color:var(--ink-muted);background:#ffffff0d;border-radius:999px;padding:.1rem .55rem;font-size:.62rem;display:inline-flex}.status-badge{text-transform:uppercase;letter-spacing:.06rem;border-radius:999px;padding:.1rem .55rem;font-size:.62rem;font-weight:700;display:inline-flex}.status-open{color:#22c58a;background:#22c58a26;border:1px solid #22c58a59}.status-closed{color:#ef4444;background:#ef444426;border:1px solid #ef444459}.status-unknown{color:var(--ink-muted);border:1px solid var(--border-soft);background:#8a96ab1f}.avg-badge{background:var(--accent);color:#fff;letter-spacing:.02rem;border-radius:999px;padding:.1rem .6rem;font-size:.68rem;font-weight:700;display:inline-flex}.track-detail-page{gap:.9rem;display:grid}.detail-hero{padding:1.15rem;position:relative;overflow:hidden}.detail-hero>*{z-index:1;position:relative}.detail-hero h1{margin:.2rem 0 .4rem;font-size:clamp(1.8rem,7vw,2.6rem)}.detail-hero>p{color:var(--ink-muted);margin:.15rem 0;font-size:.87rem}.detail-meta-row{flex-wrap:wrap;gap:.4rem;margin:.55rem 0;display:flex}.track-desc{color:var(--ink-muted);margin:.5rem 0 0;font-size:.87rem;line-height:1.6}.track-info-row{color:var(--ink-soft);flex-wrap:wrap;gap:.5rem 1.2rem;margin-top:.7rem;font-size:.8rem;display:flex}.track-info-row a{color:var(--accent-soft);text-decoration:none}.track-info-row a:hover{text-decoration:underline}.detail-grid{gap:.75rem;display:grid}.review-form{gap:.75rem;padding:1rem;display:grid}.review-form.detailed{align-content:start}.review-form h3{text-transform:uppercase;margin:0 0 .2rem;font-size:1.05rem}.review-form label{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.07rem;gap:.3rem;font-size:.72rem;display:grid}.review-form input,.review-form textarea,.review-form select{border:1px solid var(--border-soft);border-radius:var(--radius-sm);background:var(--bg-input);width:100%;color:var(--ink-strong);box-sizing:border-box;padding:.6rem .75rem;transition:border-color .14s}.review-form input:focus,.review-form textarea:focus,.review-form select:focus{border-color:var(--accent);outline:none}.review-form input::placeholder,.review-form textarea::placeholder{color:var(--ink-soft)}.review-form select option{background:var(--bg-graphite)}.review-form button{background:var(--accent);color:#fff;border-radius:var(--radius-md);text-transform:uppercase;letter-spacing:.07rem;border:none;padding:.7rem .9rem;font-weight:700;transition:background .14s,box-shadow .14s}.review-form button:hover:not(:disabled){background:var(--accent-dim);box-shadow:0 0 20px var(--accent-glow)}.review-form button:disabled{opacity:.45;cursor:not-allowed}.score-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;display:grid}.score-grid span{font-family:var(--title-font);color:var(--accent-soft)}input[type=range]{accent-color:var(--accent)}.recent-reviews{padding:1rem}.recent-reviews h3{text-transform:uppercase;margin:0 0 .6rem;font-size:1.05rem}.recent-reviews section{border-top:1px solid var(--border-soft);margin-top:.65rem;padding-top:.65rem}.recent-reviews section:first-of-type{border-top:none;margin-top:0;padding-top:0}.recent-reviews p{color:var(--ink-muted);margin:.2rem 0;font-size:.84rem}.recent-reviews strong{color:var(--ink-strong)}.recent-reviews a{color:var(--accent-soft);font-size:.82rem}.no-reviews{color:var(--ink-soft);margin:.25rem 0;font-size:.84rem}.inline-form{gap:.5rem;margin-bottom:.8rem;display:grid}.inline-form input,.inline-form textarea{border:1px solid var(--border-soft);border-radius:var(--radius-sm);background:var(--bg-input);width:100%;color:var(--ink-strong);box-sizing:border-box;padding:.6rem .75rem;transition:border-color .14s}.inline-form input:focus,.inline-form textarea:focus{border-color:var(--accent);outline:none}.inline-form input::placeholder,.inline-form textarea::placeholder{color:var(--ink-soft)}.inline-form button{background:var(--accent);color:#fff;border-radius:var(--radius-md);text-transform:uppercase;letter-spacing:.06rem;border:none;padding:.65rem .8rem;font-weight:700;transition:background .14s,box-shadow .14s}.inline-form button:hover:not(:disabled){background:var(--accent-dim);box-shadow:0 0 18px var(--accent-glow)}.inline-form button:disabled{opacity:.45;cursor:not-allowed}.ghost-button{border:1px solid var(--border);color:var(--ink-muted);border-radius:var(--radius-md);text-transform:uppercase;letter-spacing:.06rem;background:0 0;padding:.55rem .85rem;font-size:.78rem;font-weight:700;transition:border-color .14s,color .14s}.ghost-button:hover{border-color:var(--accent-soft);color:var(--accent-soft)}.loading-msg{text-align:center;color:var(--ink-soft);border:1px dashed var(--border-soft);border-radius:var(--radius-lg);background:var(--bg-surface);padding:1.5rem}.empty-state{border:1px dashed var(--border-soft);border-radius:var(--radius-lg);color:var(--ink-muted);background:var(--bg-surface);margin:0;padding:1.2rem}.rating{color:var(--accent-soft);font-family:var(--title-font);text-transform:uppercase;letter-spacing:.04rem}.rating.no-rating{color:var(--ink-soft);text-transform:none;letter-spacing:0;font-family:inherit}@keyframes shell-in{0%{opacity:0;transform:translateY(.4rem)}to{opacity:1;transform:translateY(0)}}@media (width>=860px){.app-shell{padding:1.75rem 1.5rem 5rem}.detail-grid{grid-template-columns:1.15fr .85fr;align-items:start}.state-grid{grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr))}}
