:root{--bg:#98ec84;--shell:#f6f4ef;--card:#ffffff;--text-main:#171717;--text-sub:#4e4e4e;--line:#2a2a2a;--line-soft:#c9c9c9;--mint:#baf59f;--lavender:#d8b8ff;--sky:#b7ebff;--peach:#ffd7b5}*{box-sizing:border-box}body,html{margin:0;min-height:100%;overflow-x:hidden}body{color:var(--text-main);font-family:Trebuchet MS,Noto Sans SC,PingFang SC,sans-serif;background:var(--bg)}.container{max-width:1400px;margin:0 auto;padding:24px 20px 40px}body.admin-page .container{max-width:min(2200px,calc(100vw - 16px));padding-left:8px;padding-right:8px}.poster-title{margin:0 0 10px;text-align:center;font-family:Impact,Haettenschweiler,Arial Narrow Bold,sans-serif;text-transform:uppercase;letter-spacing:.03em;line-height:1}.poster-title span{display:block;font-size:clamp(2.1rem,4.2vw,3.6rem)}.app-shell{border:2px solid var(--line);border-radius:34px;background:var(--shell);padding:20px;width:100%}.page-head{margin:8px 0 14px}.athlete-layout{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:12px;gap:12px;align-items:start}.athlete-side{position:static;padding:8px;max-width:none;width:100%}.athlete-side-section+.athlete-side-section{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line-soft)}.athlete-nav-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;width:100%;min-width:0}.athlete-side-title{font-size:12px;font-weight:800;color:var(--text-sub);margin-bottom:8px;text-transform:uppercase;letter-spacing:.04em}.athlete-range-list{display:flex;flex-direction:column;align-items:stretch;gap:6px}.athlete-range-list .chip-btn{width:100%;justify-content:center;text-align:center}.season-year-picker{display:inline-block;max-width:140px}.season-year-picker select{min-width:180px;width:100%}.season-summary-panel{border-radius:10px}.season-summary-filter{margin-top:.9rem;padding:10px;border:1px solid #d6e5d1;border-radius:10px;background:linear-gradient(180deg,#f3faef,#ecf7e7)}.season-summary-metrics{margin-top:.9rem;padding:10px;border:1px solid #d5e3ee;border-radius:10px;background:linear-gradient(180deg,#f3f9ff,#edf6ff)}.season-summary-metrics .metric{background:#ffffff}.season-summary-table-wrap{margin-top:.9rem;padding:10px;border:1px solid #e6ddcf;border-radius:10px;background:linear-gradient(180deg,#fffdf7,#fff2dc 55%,#ffe7c6)}.season-summary-table-wrap table{margin-top:0}.season-summary-table-wrap tbody tr:nth-child(2n){background:#fffcf6}.season-summary-table{table-layout:fixed}.season-summary-table thead tr{background:#fffdf7}.season-summary-table td,.season-summary-table th{vertical-align:middle}.season-summary-table td:first-child,.season-summary-table th:first-child{width:24%;font-weight:800}.season-summary-table td:not(:first-child),.season-summary-table th:not(:first-child){width:15.2%;text-align:center}.season-summary-table tbody tr:hover{background:#fff8ea}.season-summary-table tbody td{background:#ffffff;transition:background-color .12s ease}.season-summary-table tbody tr:nth-child(2n) td{background:#fffaf0}.season-summary-table tbody tr:hover td{background:#ffeecf}.history-table-wrap{margin-top:.9rem;padding:10px}.history-table-wrap table{margin-top:0}.history-table thead tr{background:#fffdf7}.history-table td,.history-table th{vertical-align:middle}.history-table tbody td{background:#ffffff;transition:background-color .12s ease}.history-table tbody tr:nth-child(2n) td{background:#fffaf0}.history-table tbody tr:hover td{background:#ffeecf}.boxplot-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin-top:.75rem}.boxplot-card{background:#fffdf7;border:1px solid var(--border,#e5e7eb);border-radius:10px;padding:8px 4px 4px}.boxplot-card-title{text-align:center;font-size:13px;font-weight:600;color:var(--text-main);margin-bottom:2px}@media (max-width:900px){.boxplot-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:520px){.boxplot-grid{grid-template-columns:1fr}}.athlete-search-form{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:1rem}.athlete-search-form input{padding:7px 12px;border:1px solid var(--border,#e5e7eb);border-radius:8px;font-size:13px;outline:none;transition:border-color .15s}.athlete-search-form input:focus{border-color:#0ea5e9}.btn-reset,.btn-search{padding:7px 18px;border:none;border-radius:8px;font-size:13px;cursor:pointer;transition:background .15s}.btn-search{background:#0ea5e9;color:#fff}.btn-search:hover{background:#0284c7}.btn-reset{background:#f1f5f9;color:#334155}.btn-reset:hover{background:#e2e8f0}.athlete-list-table-wrap{padding:10px}.athlete-list-table{width:100%}.athlete-list-table thead tr{background:#fffdf7}.athlete-list-table td,.athlete-list-table th{vertical-align:middle}.athlete-list-table tbody td{background:#ffffff;transition:background-color .12s ease}.athlete-list-table tbody tr:nth-child(2n) td{background:#fffaf0}.athlete-list-table tbody tr:hover td{background:#ffeecf}.ladder-toolbar{display:flex;align-items:center;gap:8px;margin-top:12px;margin-bottom:16px}.ladder-toolbar .multi-select-trigger,.ladder-toolbar select{background:var(--mint)}.ladder-toolbar-label{font-size:16px;font-weight:800;letter-spacing:.02em}.ladder-filters{display:flex;align-items:center;gap:8px}.ladder-year-select{min-width:120px;font-weight:700}.multi-select{position:relative;display:inline-block}.multi-select-trigger{display:inline-flex;align-items:center;gap:6px;min-width:110px;padding:6px 10px;border:1.5px solid var(--line);border-radius:6px;background:var(--bg,#fff);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.multi-select-trigger:hover{border-color:var(--accent,#3b82f6)}.multi-select-arrow{font-size:10px;color:var(--text-sub)}.multi-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:auto;z-index:20;min-width:140px;max-width:calc(100vw - 32px);max-height:240px;overflow-y:auto;overflow-x:hidden;margin:0;padding:4px 0;list-style:none;border:1.5px solid var(--line);border-radius:8px;background:var(--bg,#fff);box-shadow:0 4px 12px rgba(0,0,0,.1)}.multi-select-option{display:flex;align-items:center;gap:6px;padding:6px 12px;font-size:13px;cursor:pointer;word-break:break-word;background:none;border:none;width:100%;text-align:left;font-family:inherit;color:inherit}.multi-select-option.selected,.multi-select-option:hover{background:var(--hover,#f3f4f6)}.multi-select-option.selected{font-weight:700}.ladder-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:10px;gap:10px;transition:opacity .2s}.ladder-card{border:2px solid var(--line);border-radius:14px;background:linear-gradient(170deg,#ffffff,#f7fbff 40%,#fffdf7);padding:0;overflow:hidden}.ladder-card-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:linear-gradient(90deg,var(--sky) 0,var(--mint) 100%);border-bottom:2px solid var(--line)}.ladder-event-title{font-size:13px;font-weight:800;letter-spacing:.01em}.ladder-entry-count{font-size:11px;font-weight:700;color:var(--text-sub);background:rgba(255,255,255,.7);border-radius:999px;padding:1px 8px}.ladder-list{list-style:none;margin:0;padding:6px 8px 8px;counter-reset:ladder}.ladder-item{display:flex;align-items:center;gap:6px;padding:4px;border-radius:8px;transition:background .12s;animation:ranking-rise .25s ease both}.ladder-item:hover{background:rgba(186,245,159,.3)}.ladder-item+.ladder-item{border-top:1px solid #f0f0f0}.ladder-rank{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:11px;font-weight:900;color:#2f2f2f;background:#f1f5f9;border:1px solid rgba(0,0,0,.1);flex-shrink:0}.ladder-top-1 .ladder-rank{background:linear-gradient(180deg,#ffe182,#ffc93f);box-shadow:0 1px 4px rgba(255,193,7,.4)}.ladder-top-2 .ladder-rank{background:linear-gradient(180deg,#f3f6fb,#d9e1ee);box-shadow:0 1px 4px rgba(0,0,0,.1)}.ladder-top-3 .ladder-rank{background:linear-gradient(180deg,#f2be97,#de9968);box-shadow:0 1px 4px rgba(205,127,50,.3)}.ladder-top-1{background:linear-gradient(90deg,rgba(255,225,130,.2),transparent)}.ladder-name{flex:1 1;font-size:12px;font-weight:700;color:var(--text-main);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ladder-name:hover{color:#0ea5e9}.ladder-time{font-size:11px;font-weight:800;color:var(--text-sub);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;flex-shrink:0}@media (max-width:1200px){.ladder-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (max-width:900px){.ladder-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:640px){.ladder-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:420px){.ladder-grid{grid-template-columns:1fr}}.admin-nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;padding:8px;border:2px solid var(--line);border-radius:14px;background:linear-gradient(180deg,#fff,#f9f3ff);align-items:center}.admin-nav-link{text-decoration:none;color:var(--text-main);border:2px solid var(--line);border-radius:12px;background:#fff;padding:6px 12px;font-weight:700;font-size:13px}.admin-nav-link:hover{background:var(--lavender)}.admin-nav-logout{margin-left:auto;padding:6px 12px;font-size:12px;background:#f1f5f9;color:#64748b;border:1px solid var(--line-soft)}.admin-nav-logout:hover{background:#fee2e2;color:#dc2626}.admin-login-form{display:flex;gap:8px}.admin-login-form input{flex:1 1}.admin-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px;gap:10px}.admin-form-grid label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:700;color:var(--text-sub)}.admin-form-grid label input,.admin-form-grid label select{width:100%}.admin-form-wide{grid-column:1/-1}.admin-form-actions{grid-column:1/-1;display:flex;gap:8px}.admin-actions-cell{display:flex;gap:4px}.btn-danger{background:#fee2e2;color:#dc2626;border-color:#fca5a5}.btn-danger:hover{background:#fecaca}.admin-table-card{padding:10px;border:1px solid #e6ddcf;border-radius:10px;background:linear-gradient(180deg,#fffdf7,#fff2dc 55%,#ffe7c6);overflow-x:auto;-webkit-overflow-scrolling:touch}.admin-table-card table{margin-top:0;width:max-content;min-width:100%}.admin-table-card thead tr{background:#fffdf7}.admin-table-card tbody td{background:#ffffff;transition:background-color .12s ease}.admin-table-card tbody tr:nth-child(2n) td{background:#fffaf0}.admin-table-card tbody tr:hover td{background:#ffeecf}.admin-table-card tbody tr.admin-row-editing td{background:#e0f2fe}@media (max-width:640px){.admin-form-grid{grid-template-columns:1fr}}.home-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.home-metrics .metric{min-height:84px;border-color:var(--line-soft);position:relative;overflow:hidden}.home-metrics .metric:first-child{background:linear-gradient(135deg,#e0f7fa,#b7ebff)}.home-metrics .metric:nth-child(2){background:linear-gradient(135deg,#f3e8ff,#d8b8ff)}.home-metrics .metric:nth-child(3){background:linear-gradient(135deg,#fff3e0,#ffd7b5)}.home-metrics .metric:nth-child(4){background:linear-gradient(135deg,#e8f5e9,#baf59f)}.home-metrics .metric .value{font-size:28px}.home-section-title{margin:0 0 10px;font-size:15px;font-weight:800}.home-season-filter,.popular-events{display:flex;flex-direction:column;gap:6px}.popular-event-item{display:flex;align-items:center;gap:8px}.popular-event-name{flex-shrink:0;width:120px;font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.popular-event-bar{height:18px;border-radius:4px;background:var(--sky);border:1px solid var(--line-soft);min-width:4px;transition:width .3s ease}.popular-event-count{flex-shrink:0;font-size:12px;font-weight:700;color:var(--text-sub)}.pagination{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:12px}.pagination-btn{display:inline-block;padding:6px 16px;border:2px solid var(--line);border-radius:10px;background:var(--lavender);font-size:13px;font-weight:700;text-decoration:none;color:var(--text-main);cursor:pointer;transition:filter .15s}.pagination-btn:hover{filter:brightness(.95)}.pagination-btn.disabled{opacity:.4;cursor:default;pointer-events:none}.pagination-info{font-size:13px;font-weight:700;min-width:60px;text-align:center}.athlete-row{display:flex;align-items:center;padding:8px 10px;border:1px solid var(--line-soft);border-radius:8px;background:var(--card,#fff);margin-bottom:6px;text-decoration:none;color:inherit}.athlete-row-name{flex:1 1;font-weight:700;font-size:14px;color:var(--text-main)}.athlete-row-gender{width:32px;text-align:center;font-size:12px;color:var(--text-sub)}.athlete-row-team{width:90px;text-align:right;color:var(--text-sub);overflow:hidden;text-overflow:ellipsis}.athlete-row-team,.btn-view{font-size:12px;white-space:nowrap}.btn-view{display:inline-block;padding:4px 14px;background:#0ea5e9;color:#fff;border-radius:6px;text-decoration:none;transition:background .15s}.btn-view:hover{background:#0284c7}.pbsb-panel{margin-top:.2rem}.pbsb-table-wrap{padding:10px;border:1px solid #e6ddcf;border-radius:10px;background:linear-gradient(180deg,#fffdf7,#fff3dd 55%,#ffe9c8)}.pbsb-table{table-layout:fixed}.pbsb-table thead tr{background:#fffdf7}.pbsb-table td:first-child,.pbsb-table th:first-child{width:44%;font-weight:800}.pbsb-table td:not(:first-child),.pbsb-table th:not(:first-child){width:28%;text-align:center}.pbsb-table tbody td{background:#ffffff;transition:background-color .12s ease}.pbsb-table tbody tr:nth-child(2n) td{background:#fffaf0}.pbsb-table tbody tr:hover td{background:#ffeecf}.pbsb-pager{display:flex;align-items:center;gap:8px;margin-top:10px}.pbsb-page-indicator{display:inline-flex;align-items:center;justify-content:center;min-width:68px;border:1px solid #d7d7d7;border-radius:999px;background:#f8f8f8;padding:4px 10px;font-size:12px;font-weight:700}.athlete-side-nav{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px;flex:1 1;min-width:0}.athlete-side-nav a{text-decoration:none;color:var(--text-main);border:2px solid var(--line-soft);border-radius:9px;background:#fff;font-size:13px;font-weight:700;padding:7px 9px;width:auto;text-align:center;white-space:nowrap}.athlete-side-nav a:hover{background:var(--mint)}.athlete-main{min-width:0}.meet-layout{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:12px;gap:12px;align-items:start}.meet-side{position:static;padding:8px;max-width:none;width:100%}.meet-main{min-width:0}.meet-overview-card{padding:18px;background:radial-gradient(circle at 10% 18%,rgba(183,235,255,.62) 0,rgba(183,235,255,0) 34%),radial-gradient(circle at 88% 80%,rgba(255,215,181,.58) 0,rgba(255,215,181,0) 38%),linear-gradient(160deg,#f7fbff,#fff6e9 55%,#fffdf7)}.meet-overview-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.meet-overview-head h2{margin:0;font-size:clamp(1.3rem,2.2vw,1.9rem)}.meet-overview-head p{margin:6px 0 0;color:var(--text-sub);font-weight:700}.meet-summary-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.meet-summary-metrics .metric{min-height:84px;background:linear-gradient(180deg,#ffffff,#fffaf1)}.meet-filter-form{margin-top:10px;margin-bottom:0}.meet-filter-form select{min-width:140px;font-weight:700}.meet-insight-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.meet-mini-card{margin-bottom:0;background:linear-gradient(180deg,#fff,#f8fcff)}.meet-mini-card h4{margin:0 0 8px;font-size:14px}.meet-age-breakdown{margin-top:12px;padding:10px;border:1px solid var(--line-soft);border-radius:10px;background:#fff}.meet-age-breakdown h4{margin:0 0 8px;font-size:14px}.meet-podium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px;gap:10px}.meet-podium-card{border:2px solid var(--line);border-radius:12px;padding:10px;background:linear-gradient(180deg,#fffdf7,#f7fbff)}.meet-podium-card.rank-1{background:linear-gradient(180deg,#fff8dc,#ffefbf)}.meet-podium-card.rank-2{background:linear-gradient(180deg,#f8fafc,#e8edf5)}.meet-podium-card.rank-3{background:linear-gradient(180deg,#fff3e8,#f6dac7)}.meet-podium-rank{display:inline-flex;border:2px solid var(--line);border-radius:999px;padding:2px 10px;font-size:11px;font-weight:800;background:#fff}.meet-podium-card h4{margin:10px 0 4px;font-size:18px}.meet-podium-card p{margin:0;color:var(--text-sub);font-size:13px}.meet-podium-time{margin-top:8px;font-size:20px;font-weight:900}.meet-podium-meta{margin-top:6px;color:var(--text-sub);font-size:12px}.meet-champion-grid{margin-top:12px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px}.meet-champion-card{border:2px solid var(--line-soft);border-radius:10px;background:#fff;padding:8px}.meet-champion-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;font-size:12px;font-weight:700;color:var(--text-sub)}.meet-champion-body{display:grid;grid-template-columns:1.6fr 1fr auto;grid-gap:8px;gap:8px;align-items:center;font-size:13px}.meet-athlete-link{color:var(--text-main);font-weight:800;text-decoration:none}.meet-athlete-link:hover{color:#0ea5e9}.section-toc{margin:0 0 12px;border:2px solid var(--line-soft);border-radius:12px;background:#fff;padding:8px 10px}.section-toc>summary{cursor:pointer;font-weight:800;font-size:13px;color:var(--text-main)}.section-toc-grid{margin-top:8px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:6px;gap:6px}.section-toc-grid a{text-decoration:none;color:var(--text-main);border:1px solid var(--line-soft);border-radius:8px;background:#fff;font-size:12px;font-weight:700;padding:5px 8px}.section-toc-grid a:hover{background:var(--mint)}.card-summary{font-weight:800;font-size:1.05rem;cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px}.card-summary::-webkit-details-marker{display:none}.card-summary:before{content:"▶";display:inline-block;font-size:11px;line-height:1;color:var(--text-sub);transform:rotate(0deg);transition:transform .16s ease,color .16s ease}details[open]>.card-summary:before{transform:rotate(90deg);color:var(--text-main)}.page-head h1{margin:0;font-family:Impact,Haettenschweiler,Arial Narrow Bold,sans-serif;letter-spacing:.02em;font-size:clamp(1.8rem,4.5vw,2.5rem);text-transform:uppercase}.snapshot-btn{background:var(--sky);border-color:var(--line);white-space:nowrap}.athlete-side-actions{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;margin-left:8px}.snapshot-btn:disabled{opacity:.7;cursor:not-allowed}.lead{margin:6px 0 0;font-size:14px;display:flex;gap:6px}.info-tip,.lead{color:var(--text-sub);align-items:center}.info-tip{position:relative;display:inline-flex;justify-content:center;width:16px;height:16px;border-radius:50%;border:1.5px solid var(--text-sub);font-size:11px;cursor:default;flex-shrink:0;line-height:1}.info-tip-content{display:none;position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);background:var(--card-bg,#fff);border:1px solid var(--border,#e5e7eb);border-radius:8px;padding:8px 12px;font-size:12px;color:var(--text-main);white-space:nowrap;box-shadow:0 4px 12px rgba(0,0,0,.1);z-index:10;pointer-events:none}.info-tip:hover .info-tip-content{display:block}.nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;padding:8px;border:2px solid var(--line-soft);border-radius:14px}.nav,.nav a{background:#fff}.nav a{text-decoration:none;color:var(--text-main);border:2px solid var(--line);border-radius:12px;padding:6px 10px;font-weight:700;font-size:13px}.nav a:hover{background:var(--mint)}.card{border:2px solid var(--line);border-radius:14px;background:var(--card);padding:14px;margin-bottom:14px}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.metric-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px;margin-top:10px}.recent-trend-by-event .metric-strip{grid-template-columns:repeat(4,minmax(0,1fr))}.opponent-event-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px}.opponent-event-card{border:1px solid #d6dce6;border-radius:12px;background:linear-gradient(180deg,#ffffff,#f7fbff);padding:10px}.opponent-event-title{margin:0 0 6px;font-size:15px}.opponent-panel-wide{margin-bottom:14px}.opponent-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:8px;margin-bottom:10px}.opponent-toolbar label{font-weight:700}.opponent-legend{display:inline-flex;align-items:center;gap:10px;margin-left:4px;font-size:12px;color:var(--text-sub)}.opponent-legend span{display:inline-flex;align-items:center;gap:4px}.opponent-legend i{width:10px;height:10px;border-radius:50%;display:inline-block}.opponent-legend .dot-fast{background:#2ebf79}.opponent-legend .dot-athlete{background:#2d7ff9}.opponent-legend .dot-slow{background:#f45d5d}.opponent-event-card .metric-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.opponent-event-card .metric .value{font-size:18px}.opponent-range-chart{margin:8px 0 10px}.opponent-range-label-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:center;font-size:12px;color:var(--text-sub);margin-bottom:6px;grid-gap:8px;gap:8px}.opponent-range-label-row .athlete-label,.opponent-range-label-row .fastest,.opponent-range-label-row .gap,.opponent-range-label-row .slowest{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.opponent-range-label-row .slowest{text-align:left}.opponent-range-label-row .athlete-label{text-align:center}.opponent-range-label-row .gap{text-align:center;font-weight:700;color:#2d3748;display:inline-flex;align-items:center;justify-content:center;gap:6px}.opponent-range-label-row .gap .gap-text{display:inline-block}.opponent-range-label-row .gap .gap-deco{color:#6b7280;font-size:13px;line-height:1;transform:translateY(-.5px)}.opponent-range-label-row .fastest{text-align:right}.opponent-range-track{position:relative;height:44px;border-radius:999px;background:linear-gradient(90deg,#ffd8d8,#fff3c4 50%,#d9f5e4);border:1px solid #d5dbe4}.opponent-range-line{position:absolute;left:10px;right:10px;top:50%;height:2px;transform:translateY(-50%);background:rgba(30,30,30,.22)}.opponent-range-dot{position:absolute;top:50%;width:12px;height:12px;border-radius:50%;transform:translate(-50%,-50%);border:2px solid #fff;box-shadow:0 0 0 1px rgba(20,20,20,.2);z-index:2}.opponent-range-dot.fastest{background:#2ebf79}.opponent-range-dot.athlete{width:14px;height:14px;background:#2d7ff9;z-index:3}.opponent-range-dot.slowest{background:#f45d5d}.opponent-range-dot.athlete.overlap-fastest{box-shadow:0 0 0 1px rgba(20,20,20,.2),0 0 0 3px #2ebf79}.opponent-range-dot.athlete.overlap-slowest{box-shadow:0 0 0 1px rgba(20,20,20,.2),0 0 0 3px #f45d5d}.athlete-profile-card{padding:18px;background:radial-gradient(circle at 14% 18%,rgba(183,235,255,.65) 0,rgba(183,235,255,0) 34%),radial-gradient(circle at 86% 82%,rgba(255,230,194,.6) 0,rgba(255,230,194,0) 38%),linear-gradient(160deg,#f7fbff,#fff7ec 52%,#fffdf7);border-color:#3b3b3b}.pbsb-card{align-self:start}.athlete-profile-head{display:flex;align-items:center;gap:14px;margin-bottom:12px;padding:8px 10px;border-radius:12px;background:rgba(255,255,255,.74);border:1px solid #d9e2ea}.athlete-avatar{width:128px;height:128px;border-radius:50%;object-fit:cover;border:3px solid var(--line);box-shadow:0 6px 0 rgba(23,23,23,.08);flex-shrink:0}.athlete-profile-meta h2{margin:0;font-size:1.8rem;line-height:1.1}.athlete-profile-meta p{margin:6px 0 0;color:var(--text-sub);font-weight:700}.athlete-metrics .metric{min-height:84px;background:linear-gradient(180deg,#ffffff,#fffaf1);border-color:#4a4a4a}.athlete-metrics .value{font-size:1.25rem}.podium-panel{margin-top:10px;border:2px solid var(--line);border-radius:12px;background:linear-gradient(180deg,#ffffff,#f7fbff);padding:10px}.podium-medals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px}.podium-medal{border:1px solid #d9e2ea;border-radius:10px;background:#fff;padding:8px 6px;display:flex;gap:6px}.podium-icon,.podium-medal{align-items:center;justify-content:center}.podium-icon{width:28px;height:28px;border-radius:999px;display:inline-flex;font-size:11px;font-weight:900;color:#2f2f2f;border:1px solid rgba(0,0,0,.18)}.podium-icon.gold{background:linear-gradient(180deg,#ffe182,#ffc93f)}.podium-icon.silver{background:linear-gradient(180deg,#f3f6fb,#d9e1ee)}.podium-icon.bronze{background:linear-gradient(180deg,#f2be97,#de9968)}.podium-name{font-size:12px;color:var(--text-sub)}.podium-count{font-weight:800;font-size:18px}.podium-bars{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px;margin-top:10px;align-items:end}.podium-step{border-radius:8px 8px 0 0;border:1px solid rgba(0,0,0,.22);display:flex;align-items:center;justify-content:center;font-weight:900;color:#2f2f2f}.podium-step.silver{height:34px;background:linear-gradient(180deg,#f3f6fb,#d9e1ee)}.podium-step.gold{height:48px;background:linear-gradient(180deg,#ffe182,#ffc93f)}.podium-step.bronze{height:28px;background:linear-gradient(180deg,#f2be97,#de9968)}.metric{border:2px solid var(--line);border-radius:10px;background:#fff;padding:8px}.metric .label{color:var(--text-sub);font-size:12px}.metric .value{margin-top:4px;font-weight:800;font-size:20px}table{width:100%;border-collapse:separate;border-spacing:0 6px}td,th{padding:8px;text-align:left;font-size:13px}th{font-size:12px;color:#555;text-transform:uppercase}tbody tr{background:#fff}tbody td{border-top:2px solid var(--line-soft);border-bottom:2px solid var(--line-soft)}tbody td:first-child{border-left:2px solid var(--line-soft);border-radius:8px 0 0 8px}tbody td:last-child{border-right:2px solid var(--line-soft);border-radius:0 8px 8px 0}.table-scroll-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}button,input,select{border:2px solid var(--line);border-radius:10px;background:#fff;padding:8px 10px;color:var(--text-main);font-size:13px}button{font-weight:700;background:var(--lavender);cursor:pointer}button:hover{filter:brightness(.97)}form.row{gap:8px;margin-bottom:10px}.chip-row,form.row{display:flex;flex-wrap:wrap}.chip-row{gap:6px}.chip-btn{display:inline-flex;align-items:center;border-radius:999px;border:2px solid var(--line);padding:6px 10px;text-decoration:none;color:var(--text-main);background:#fff;font-weight:700;font-size:13px}.chip-btn.active{background:var(--sky)}.chip-btn:visited{color:var(--text-main)}.badge{display:inline-block;border:2px solid var(--line);border-radius:999px;background:var(--mint);font-size:11px;padding:2px 8px}.rank-top td:first-child{font-weight:800}.rank-champion{background:linear-gradient(90deg,var(--peach),#fff)}.rank-badge{display:inline-block;min-width:56px;text-align:center;border:2px solid var(--line);border-radius:999px;font-size:11px;font-weight:800;padding:1px 6px;background:var(--lavender)}.board-loading{opacity:.8}.board-ready{opacity:1}.ranking-shell tbody tr{animation:ranking-rise .25s ease both}@keyframes ranking-rise{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){.container{padding:14px 10px 24px}body.admin-page .container{max-width:100%;padding:12px 6px 20px}.app-shell{border-radius:22px;padding:12px}.ladder-toolbar{flex-direction:column;align-items:stretch}.ladder-filters{flex-wrap:wrap;gap:8px}.ladder-filters .multi-select,.ladder-filters select{flex:1 1 auto;min-width:0}.ladder-filters .multi-select-trigger{width:100%;justify-content:space-between}.home-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2,.metric-strip{grid-template-columns:1fr}.recent-trend-by-event .metric-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.opponent-event-grid{grid-template-columns:1fr}.opponent-event-card .metric-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.athlete-layout,.meet-layout{grid-template-columns:1fr}.athlete-side,.meet-side{max-width:none;width:100%}.athlete-nav-toolbar{flex-wrap:wrap}.athlete-side-actions{width:100%;justify-content:flex-end;margin-left:0}.section-toc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.athlete-profile-head{align-items:flex-start}.athlete-avatar{width:96px;height:96px}.athlete-profile-meta h2{font-size:1.35rem}.meet-insight-metrics,.meet-summary-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.meet-champion-body,.meet-champion-grid,.meet-podium{grid-template-columns:1fr}.meet-champion-body{gap:2px}.podium-medals{grid-template-columns:1fr}.nav{border-radius:12px}.season-year-picker{max-width:100%}.pbsb-table td:first-child,.pbsb-table td:not(:first-child),.pbsb-table th:first-child,.pbsb-table th:not(:first-child),.season-summary-table td:first-child,.season-summary-table td:not(:first-child),.season-summary-table th:first-child,.season-summary-table th:not(:first-child){width:auto}}@media (max-width:480px){.app-shell{border-radius:14px;padding:10px 8px}.container{padding:10px 6px 20px}.card{padding:10px}.poster-title span{font-size:clamp(1.6rem,8vw,2.1rem)}.nav{gap:6px;padding:6px}.nav a{flex:1 1;text-align:center;min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:8px 6px;font-size:13px}.ladder-toolbar{align-items:stretch}.ladder-filters,.ladder-toolbar{flex-direction:column}.ladder-filters .multi-select,.ladder-filters select{width:100%}.ladder-filters .multi-select-trigger{width:100%;justify-content:space-between}.athlete-search-form,.meet-search-form{flex-direction:column}.athlete-search-form button,.athlete-search-form input,.athlete-search-form select,.meet-search-form button,.meet-search-form input,.meet-search-form select{width:100%}.athlete-search-form button,.meet-search-form button{min-height:44px}.meet-insight-metrics,.meet-summary-metrics,.metric-strip,.recent-trend-by-event .metric-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.athlete-profile-head{flex-direction:column;align-items:center;text-align:center}.athlete-avatar{width:80px;height:80px}.athlete-profile-meta h2,.athlete-profile-meta p{text-align:center}.opponent-range-label-row{grid-template-columns:repeat(2,minmax(0,1fr))}.opponent-event-grid{grid-template-columns:1fr}.multi-select-dropdown{max-width:calc(100vw - 24px);max-height:50vh}.multi-select-option{min-height:44px;padding:10px 12px}.admin-nav{flex-direction:column}.admin-nav-link,.admin-nav-logout{width:100%;text-align:center}.admin-nav-logout{margin-left:0}.admin-login-form{flex-direction:column}.admin-login-form input{width:100%}td,th{padding:6px;font-size:11px}th{font-size:10px}.page-head h1{font-size:clamp(1.4rem,6vw,1.8rem)}.btn-reset,.btn-search,.btn-view,.pagination-btn,button,select{min-height:44px}.recent-trend-by-event>[_echarts_instance_],.recent-trend-by-event>div[class*=echarts]{height:200px!important}.boxplot-card>[_echarts_instance_],.boxplot-card>div[class*=echarts]{height:180px!important}.table-scroll-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.season-summary-table{min-width:640px}table{font-size:11px}td:first-child,th:first-child{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}@media (max-width:380px){.app-shell{border-radius:10px;padding:8px 6px}.poster-title span{font-size:clamp(1.3rem,7vw,1.6rem)}.metric .value{font-size:16px}}.hot-wall-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:14px;gap:14px}.hot-wall-card{display:flex;align-items:center;justify-content:center;min-height:160px;text-decoration:none;color:inherit;cursor:pointer;transition:box-shadow .15s,transform .15s;background:linear-gradient(165deg,#ffffff,#f7fbff 40%,#fffdf7)}.hot-wall-card:hover{box-shadow:0 4px 16px rgba(0,0,0,.1);transform:translateY(-2px)}.hot-wall-card-title{font-size:15px;font-weight:800;text-align:center;line-height:1.6}@media (max-width:900px){.hot-wall-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:640px){.hot-wall-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.finals-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:14px}.finals-toolbar .multi-select-trigger{background:var(--mint)}.finals-all-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:14px;gap:14px}@media (max-width:1100px){.finals-all-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.finals-all-grid{grid-template-columns:1fr}}.finals-group-card{padding:0;overflow:hidden;background:linear-gradient(170deg,#ffffff,#f7fbff 40%,#fffdf7)}.finals-group-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:linear-gradient(90deg,var(--sky) 0,var(--mint) 100%);border-bottom:2px solid var(--line)}.finals-group-title{font-size:13px;font-weight:800}.finals-group-count{font-size:11px;font-weight:700;color:var(--text-sub);background:rgba(255,255,255,.7);border-radius:999px;padding:1px 8px}.finals-group-list{padding:6px 10px 10px}.finals-group-item{display:flex;align-items:center;gap:8px;padding:5px 4px;border-radius:8px;transition:background .12s}.finals-group-item:hover{background:rgba(186,245,159,.2)}.finals-group-item+.finals-group-item{border-top:1px solid #f0f0f0}.finals-group-top{background:linear-gradient(90deg,rgba(255,225,130,.12),transparent)}.finals-group-name{flex:1 1;min-width:0;font-size:13px;font-weight:700;color:var(--text-main);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.finals-group-name:hover{color:#0ea5e9}.finals-group-team{width:70px;font-size:11px;color:var(--text-sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.finals-group-time{font-size:12px;font-weight:800;color:var(--text-main);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.finals-group-pb,.finals-group-time{width:68px;text-align:right;flex-shrink:0}.finals-group-pb{font-size:11px;color:var(--text-sub);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.finals-rank-badge{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;font-size:11px;font-weight:900;background:#f1f5f9;color:#2f2f2f;border:1px solid rgba(0,0,0,.08);flex-shrink:0}.finals-rank-1{background:linear-gradient(180deg,#ffe182,#ffc93f);box-shadow:0 1px 4px rgba(255,193,7,.4)}.finals-rank-2{background:linear-gradient(180deg,#f3f6fb,#d9e1ee);box-shadow:0 1px 4px rgba(0,0,0,.12)}.finals-rank-3{background:linear-gradient(180deg,#f2be97,#de9968);box-shadow:0 1px 4px rgba(205,127,50,.35)}