.swim-hero{padding-top:30px}.hero-eyebrow{color:var(--accent);letter-spacing:.18em;text-transform:uppercase;margin-bottom:6px;font-size:12px;font-weight:500}.swim-hero h1{font-family:var(--font-display);color:var(--ink-0);font-size:clamp(26px,4vw,38px);font-weight:800;line-height:1.1}.swim-hero .hero-sub{color:var(--ink-1);margin-top:6px;font-size:13.5px}.swim-controls{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:12px;padding:16px 18px;transition:border-color .15s,background .15s;display:flex}.swim-controls.dragover{background:var(--accent-dim);border-color:#1cb4958c}#fitFileInput{display:none}.file-upload-btn,.strava-btn{cursor:pointer;height:38px;font-family:var(--font-body);border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:13px;font-weight:500;line-height:1;transition:all .15s;display:inline-flex}.file-upload-btn{background:var(--accent-dim);color:var(--accent);border-color:#1cb49566}.file-upload-btn:hover{background:var(--accent);color:#06231c}.strava-btn{color:#fc4c02;background:#fc4c021f;border-color:#fc4c0273}.strava-btn:hover{color:#fff;background:#fc4c02}.upload-status-wrapper{background:var(--bg-2);border:1px solid var(--line);border-radius:8px;align-items:center;gap:10px;min-width:0;height:38px;margin-left:auto;padding:0 14px;display:flex}#fileNameDisplay{color:var(--ink-1);white-space:nowrap;text-overflow:ellipsis;max-width:260px;font-family:monospace;font-size:12px;overflow:hidden}#sessionHeader{text-align:center;margin:20px 0 4px}.session-title{font-family:var(--font-display);color:var(--ink-0);text-transform:uppercase;letter-spacing:.02em;text-wrap:balance;margin-bottom:6px;font-size:22px;font-weight:800;line-height:1.25}.session-date{color:var(--ink-2);font-size:12.5px}.telemetry-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:18px;display:grid}.telemetry-card{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);text-align:left;flex-direction:column;align-items:flex-start;padding:16px 16px 14px;display:flex;position:relative;overflow:hidden}.telemetry-card:before{content:"";height:3px;position:absolute;top:0;left:0;right:0}.telemetry-card.type-dist:before{background:var(--accent)}.telemetry-card.type-time:before{background:var(--th-low)}.telemetry-card.type-pace:before{background:var(--warn)}.telemetry-card.type-swolf:before{background:var(--th-vhigh)}.telemetry-card h4{font-family:var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-1);margin-bottom:10px;font-size:11.5px;font-weight:500}.telemetry-card .value{font-family:var(--font-display);color:var(--ink-0);font-size:30px;font-weight:800;line-height:1}.telemetry-card .unit{color:var(--ink-2);margin-left:4px;font-size:.45em;font-weight:600}.telemetry-card .sub-value{color:var(--ink-2);margin-top:8px;font-size:12px}.telemetry-card .sub-value b{color:var(--ink-1);font-weight:500}.telemetry-card i.bg-icon{opacity:.05;pointer-events:none;font-size:64px;position:absolute;bottom:-14px;right:-12px}.chart-wrapper,.table-wrapper{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.table-wrapper{margin-top:14px}.chart-wrapper h3,.table-wrapper h3{font-family:var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin-bottom:12px;font-size:11px;font-weight:500}.chart-wrapper h3 i,.table-wrapper h3 i{color:var(--accent);margin-right:5px}.table-scroll{max-height:440px;overflow:auto}#lapsTable{border-collapse:collapse;width:100%;font-size:12.5px}#lapsTable th{text-align:left;background:var(--bg-1);border-bottom:1px solid var(--line);color:var(--ink-2);letter-spacing:.1em;text-transform:uppercase;padding:9px 10px;font-size:11px;font-weight:500;position:sticky;top:0}#lapsTable td{border-bottom:1px solid var(--line);color:var(--ink-1);padding:8px 10px}#lapsTable tr:hover td{color:var(--ink-0);background:#ffffff05}#lapsTable td.idx{color:var(--accent);font-family:monospace}.fade-in-up{opacity:0;animation:.6s ease-out forwards fadeInUp}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (width<=720px){.upload-status-wrapper{width:100%;margin-left:0}#fileNameDisplay{max-width:none}}
