:root{
  --bg:#040907;--bg-soft:#07110d;--panel:#08150f;--panel-2:#0b1b14;--panel-3:#0e231a;
  --ink:#f3f1ea;--muted:#98a39c;--muted-2:#6f7b74;--green:#0f3528;--green-2:#18543d;
  --gold:#c8a75d;--gold-2:#e4ca82;--line:rgba(255,255,255,.08);--line-gold:rgba(200,167,93,.26);
  --ok:#7fbd98;--warn:#d8b86d;--danger:#d98578;--shadow:0 24px 70px rgba(0,0,0,.28);
  --sidebar:264px;--topbar:74px;--radius:14px;--ease:180ms ease;
  font-family:Geist,Arial,sans-serif;color-scheme:dark;background:var(--bg);color:var(--ink)
}
body[data-theme="light"]{
  --bg:#eeeee8;--bg-soft:#f5f4ee;--panel:#fffefa;--panel-2:#f7f6f0;--panel-3:#edefe9;
  --ink:#142019;--muted:#657068;--muted-2:#818a83;--green:#123c2d;--green-2:#1b5a41;
  --gold:#9d7937;--gold-2:#74551f;--line:rgba(13,35,25,.10);--line-gold:rgba(157,121,55,.25);
  --ok:#347b55;--warn:#97711e;--danger:#a54c43;--shadow:0 20px 55px rgba(20,35,27,.10);color-scheme:light
}
*{box-sizing:border-box}html{background:var(--bg);scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--bg);color:var(--ink);overflow-x:hidden;transition:background var(--ease),color var(--ease)}
body[data-theme="dark"]{background:radial-gradient(circle at 90% 0,rgba(17,58,43,.18),transparent 34%),linear-gradient(135deg,#020604,#07110d 55%,#020604)}
a{color:inherit}button,input,select,textarea{font:inherit}.hidden{display:none!important}button{touch-action:manipulation}.lab-noise{position:fixed;inset:0;pointer-events:none;opacity:.06;background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.03) 0 1px,transparent 1px 8px);z-index:0}
body[data-theme="light"] .lab-noise{opacity:.025;mix-blend-mode:multiply}

/* PUBLIC AUTH */
.lab-public-header{position:relative;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 32px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(18px)}
.lab-brand{display:flex;align-items:center;gap:13px;text-decoration:none}.lab-brand img{width:46px;height:46px;object-fit:contain}.lab-brand span{display:grid;gap:3px;letter-spacing:.09em}.lab-brand strong{font-size:13px}.lab-brand small{font:9px "Geist Mono",monospace;color:var(--gold);letter-spacing:.22em}.lab-back{font-size:12px;text-decoration:none;border-bottom:1px solid var(--line-gold);padding-bottom:3px}
.auth-stage{position:relative;z-index:1;min-height:calc(100vh - 88px);display:grid;grid-template-columns:minmax(0,1.25fr) minmax(360px,.75fr);gap:clamp(30px,5vw,76px);padding:clamp(34px,5vw,74px);align-items:center}.auth-intro{max-width:850px}.eyebrow,.section-kicker{font:9px "Geist Mono",monospace;letter-spacing:.18em;color:var(--gold);text-transform:uppercase}.auth-intro h1{font-size:clamp(54px,7.7vw,112px);line-height:.86;letter-spacing:-.065em;margin:0;text-transform:uppercase;font-weight:650}.auth-lead{font-size:clamp(18px,2vw,27px);line-height:1.45;max-width:680px;color:var(--muted);margin:28px 0}.identity-line{display:flex;align-items:center;gap:13px;font:9px "Geist Mono",monospace;letter-spacing:.18em;color:var(--muted-2)}.identity-line i{width:42px;height:1px;background:var(--gold)}.signal-plot{margin-top:44px;border-top:1px solid var(--line-gold);padding-top:14px}.signal-plot svg{width:100%;height:165px}.signal-plot .grid{fill:none;stroke:var(--line);stroke-width:1}.signal-plot .trace{fill:none;stroke:var(--gold);stroke-width:2}.plot-caption{display:flex;justify-content:space-between;font:8px "Geist Mono",monospace;letter-spacing:.16em;color:var(--muted-2)}
.auth-panel{border:1px solid var(--line-gold);background:color-mix(in srgb,var(--panel) 96%,transparent);box-shadow:var(--shadow);padding:clamp(26px,4vw,44px);position:relative}.auth-panel:before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:2px;background:linear-gradient(var(--gold),transparent 70%)}.auth-status{display:flex;align-items:center;gap:8px;color:var(--muted);font:9px "Geist Mono",monospace;letter-spacing:.14em;text-transform:uppercase;margin-bottom:28px}.status-dot,.sync-pill i,.device-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 4px color-mix(in srgb,var(--ok) 12%,transparent)}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);margin-bottom:28px}.auth-tabs button{border:0;background:none;color:var(--muted-2);padding:0 0 14px;text-align:left;cursor:pointer;font-weight:650}.auth-tabs button.active{color:var(--ink);border-bottom:1px solid var(--gold)}.auth-form{display:grid;gap:17px}.auth-form label,.field{display:grid;gap:7px;font-size:11px;color:var(--muted);letter-spacing:.02em}.auth-form input,.auth-form select,.auth-form textarea,.field input,.field select,.field textarea{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--ink);padding:12px 13px;outline:none;transition:border-color var(--ease),box-shadow var(--ease),background var(--ease)}.auth-form input:focus,.auth-form select:focus,.auth-form textarea:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 10%,transparent)}.password-field{display:grid;grid-template-columns:1fr auto;border:1px solid var(--line);background:var(--bg)}.password-field input{border:0}.show-password,.text-button{border:0;background:none;color:var(--gold-2);padding:0;cursor:pointer;font-size:11px}.form-meta{display:flex;align-items:center;justify-content:space-between;gap:14px}.check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:flex-start;gap:9px!important}.check input{width:16px!important;height:16px;margin:0;accent-color:var(--gold)}.primary-action,.primary,.secondary,.small-button,.danger-button{border:1px solid var(--line);background:var(--panel-2);color:var(--ink);padding:11px 14px;cursor:pointer;transition:transform var(--ease),background var(--ease),border-color var(--ease);font-weight:650}.primary-action,.primary{background:var(--gold);border-color:var(--gold);color:#09110d}.primary-action{display:flex;align-items:center;justify-content:space-between}.secondary:hover,.small-button:hover{border-color:var(--gold)}.primary:hover{background:var(--gold-2)}button:disabled{opacity:.45;cursor:not-allowed}.danger-button{border-color:color-mix(in srgb,var(--danger) 45%,var(--line));color:var(--danger)}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-note{font-size:12px;color:var(--muted-2);line-height:1.55;margin:0}.auth-legal{display:flex;gap:18px;padding-top:25px;margin-top:26px;border-top:1px solid var(--line);font-size:12px}.auth-legal a{color:var(--muted);text-decoration:none}.message{margin-top:12px;font-size:11px;line-height:1.5}.message.error{color:var(--danger)}.message.success{color:var(--ok)}.form-heading{display:flex;justify-content:space-between;align-items:center}.form-heading h2,.auth-form h2{font-size:19px;margin:0}

/* APP SHELL */
.lab-app{position:relative;z-index:2;min-height:100vh;display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);grid-template-rows:minmax(100vh,auto);background:var(--bg)}.lab-sidebar{grid-column:1;grid-row:1;position:sticky;top:0;height:100vh;border-right:1px solid var(--line);background:var(--bg-soft);display:flex;flex-direction:column;padding:18px 14px;z-index:30}.sidebar-brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;padding:5px 7px 16px;border-bottom:1px solid var(--line)}.sidebar-brand img{width:40px;height:40px}.sidebar-brand span{font:11px "Geist Mono",monospace;letter-spacing:.1em;line-height:1.3}.sidebar-brand small{color:var(--gold);font-size:11px}.athlete-chip{display:flex;gap:10px;align-items:center;margin:18px 6px}.athlete-chip>span{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line-gold);color:var(--gold-2);font:10px "Geist Mono",monospace;background:var(--panel)}.athlete-chip div{display:grid;gap:2px;min-width:0}.athlete-chip strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.athlete-chip small{font-size:11px;color:var(--muted-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sport-nav{display:grid;gap:3px;overflow:auto;padding-right:2px}.sport-nav button{display:grid;grid-template-columns:26px minmax(0,1fr);text-align:left;align-items:center;border:0;background:none;color:var(--muted);padding:10px 9px;cursor:pointer;font-size:11px;border-left:2px solid transparent}.sport-nav button i{font-style:normal;font:10px "Geist Mono",monospace;color:var(--muted-2)}.sport-nav button b{font-weight:560}.sport-nav button:hover,.sport-nav button.active{background:color-mix(in srgb,var(--gold) 7%,transparent);color:var(--ink)}.sport-nav button.active{border-left-color:var(--gold)}.sport-nav button.active i{color:var(--gold)}.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding:14px 7px 0;display:flex;justify-content:space-between;align-items:center}.sidebar-foot button{border:0;background:none;color:var(--muted);cursor:pointer;padding:0}.sidebar-foot span{font:8px "Geist Mono",monospace;color:var(--gold);letter-spacing:.11em}.lab-main{grid-column:2;grid-row:1;min-width:0;width:100%}.mobile-overlay{display:none}
.lab-topbar{position:sticky;top:0;z-index:20;min-height:var(--topbar);display:grid;grid-template-columns:minmax(190px,1fr) auto auto;align-items:center;gap:24px;padding:13px 24px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(18px)}.topbar-title p{margin:0 0 3px;font:8px "Geist Mono",monospace;letter-spacing:.16em;color:var(--gold)}.topbar-title h2{margin:0;font-size:21px;letter-spacing:-.03em}.topbar-context{display:flex;align-items:center;gap:16px;color:var(--muted);font-size:12px}.sync-pill{display:grid;grid-template-columns:auto auto;column-gap:7px;align-items:center}.sync-pill i{grid-row:1/3}.sync-pill b{font:8px "Geist Mono",monospace;letter-spacing:.1em;color:var(--ok)}.sync-pill small{font-size:11px;color:var(--muted-2)}.topbar-actions{display:flex;align-items:center;gap:6px}.icon-button{min-width:36px;height:36px;border:1px solid var(--line);background:var(--panel);color:var(--ink);display:grid;place-items:center;text-decoration:none;cursor:pointer;font:10px "Geist Mono",monospace}.icon-button:hover{border-color:var(--line-gold)}#mobile-nav-toggle{display:none}.page-content{width:100%;max-width:1560px;margin:0 auto;padding:26px clamp(18px,2.4vw,36px) 70px;outline:none}

/* GLOBAL DASHBOARD */
.dashboard-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}.span-12{grid-column:span 12}.span-9{grid-column:span 9}.span-8{grid-column:span 8}.span-7{grid-column:span 7}.span-6{grid-column:span 6}.span-5{grid-column:span 5}.span-4{grid-column:span 4}.span-3{grid-column:span 3}.panel,.kpi-card,.protocol-card,.athlete-admin-card{border:1px solid var(--line);background:var(--panel);box-shadow:none}.panel{padding:20px}.section-row{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:28px 0 12px}.section-row h3{margin:5px 0 0;font-size:22px;letter-spacing:-.035em}.section-row p{margin:0;color:var(--muted);font-size:12px;max-width:450px;text-align:right}.intelligence-header{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;padding:24px 26px;border:1px solid var(--line);background:linear-gradient(135deg,var(--panel),var(--panel-2));margin-bottom:14px}.intelligence-header h3{font-size:clamp(28px,3.8vw,48px);letter-spacing:-.055em;margin:8px 0 3px}.intelligence-header p{margin:0;color:var(--muted);font-size:11px}.intelligence-status{display:grid;gap:8px;min-width:260px}.status-line{display:flex;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);padding:7px 0;font-size:12px}.status-line span{color:var(--muted)}.status-line strong{font:9px "Geist Mono",monospace}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.kpi-card{padding:17px;min-width:0;cursor:pointer;position:relative;transition:border-color var(--ease),transform var(--ease)}.kpi-card:hover{border-color:var(--line-gold);transform:translateY(-1px)}.kpi-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.kpi-head span:first-child{font:8px "Geist Mono",monospace;letter-spacing:.12em;color:var(--muted-2)}.class-badge,.pill{display:inline-flex;align-items:center;border:1px solid var(--line);padding:4px 6px;font:7px "Geist Mono",monospace;letter-spacing:.08em;color:var(--muted);white-space:nowrap}.class-badge.measured{color:var(--ok)}.class-badge.modelled,.class-badge.calculated{color:var(--gold-2)}.class-badge.estimated,.class-badge.predicted{color:var(--warn)}.kpi-value{display:flex;align-items:baseline;gap:6px;margin:13px 0 6px}.kpi-value strong{font-size:clamp(27px,3vw,38px);letter-spacing:-.055em;font-variant-numeric:tabular-nums}.kpi-value small{font-size:12px;color:var(--muted)}.kpi-change{font-size:11px;color:var(--muted)}.kpi-change.up{color:var(--ok)}.kpi-change.down{color:var(--warn)}.kpi-footer{display:flex;align-items:end;justify-content:space-between;gap:10px;margin-top:12px}.kpi-footer span{font-size:11px;color:var(--muted-2)}.sparkline{width:74px;height:26px}.sparkline path{fill:none;stroke:var(--gold);stroke-width:1.5}.empty-kpi .kpi-value strong{font-size:18px;letter-spacing:-.02em}.empty-kpi p{margin:8px 0 12px;font-size:12px;color:var(--muted);line-height:1.45}.inline-link{border:0;background:none;padding:0;color:var(--gold-2);cursor:pointer;font-size:11px;text-decoration:underline;text-underline-offset:3px}
.chart-panel{min-height:390px}.chart-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.segmented{display:flex;gap:4px;flex-wrap:wrap}.segmented button{border:1px solid var(--line);background:transparent;color:var(--muted);padding:7px 9px;font-size:11px;cursor:pointer}.segmented button.active{border-color:var(--gold);color:var(--ink);background:color-mix(in srgb,var(--gold) 8%,transparent)}.chart-wrap{min-height:285px;display:flex;align-items:center}.chart-wrap svg{width:100%;height:auto;overflow:visible}.chart-grid{stroke:var(--line);stroke-width:1}.chart-axis{fill:var(--muted-2);font:8px "Geist Mono",monospace}.chart-line-primary{fill:none;stroke:var(--gold);stroke-width:2}.chart-line-history{fill:none;stroke:var(--muted-2);stroke-width:1.25;stroke-dasharray:5 5}.chart-point{fill:var(--panel);stroke:var(--gold);stroke-width:2}.chart-band{fill:color-mix(in srgb,var(--gold) 7%,transparent);stroke:none}.chart-empty{display:grid;place-items:center;min-height:280px;border:1px dashed var(--line);text-align:center;color:var(--muted);padding:30px}.chart-empty strong{color:var(--ink);display:block;margin-bottom:8px}.panel-title{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:14px}.panel-title h4{margin:4px 0 0;font-size:15px}.panel-title p{margin:4px 0 0;color:var(--muted);font-size:11px}.status-list{display:grid}.status-item{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:11px 0;border-top:1px solid var(--line);cursor:pointer}.status-item:first-child{border-top:0}.status-dot-small{width:7px;height:7px;border-radius:50%;background:var(--muted-2)}.status-dot-small.current{background:var(--ok)}.status-dot-small.attention{background:var(--gold)}.status-item strong{font-size:12px}.status-item span:last-child{font-size:11px;color:var(--muted)}.quality-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.quality-item{border:1px solid var(--line);padding:12px}.quality-item span{display:block;font:8px "Geist Mono",monospace;color:var(--muted-2)}.quality-item strong{display:block;font-size:24px;margin-top:7px}.next-test{display:grid;gap:8px}.next-test strong{font-size:22px}.next-test p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.action-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}

/* SPORT PAGES */
.sport-header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:14px;padding:22px 24px;border:1px solid var(--line);background:var(--panel)}.sport-header h3{font-size:34px;letter-spacing:-.05em;margin:7px 0 4px}.sport-header p{margin:0;color:var(--muted);font-size:12px;max-width:660px}.sport-actions{display:flex;gap:8px;flex-wrap:wrap}.metric-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.metric-tile{border:1px solid var(--line);background:var(--panel);padding:15px;min-width:0}.metric-tile span{font:8px "Geist Mono",monospace;color:var(--muted-2);letter-spacing:.1em}.metric-tile strong{display:block;font-size:27px;letter-spacing:-.045em;margin:9px 0 4px}.metric-tile small{color:var(--muted);font-size:11px}.sport-main-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.75fr);gap:14px}.history-list{display:grid}.history-row{display:grid;grid-template-columns:92px 1fr auto auto;gap:12px;align-items:center;padding:11px 0;border-top:1px solid var(--line);font-size:12px}.history-row:first-child{border-top:0}.history-row .history-date{color:var(--muted)}.history-row strong{font-size:11px}.history-row .history-result{font:10px "Geist Mono",monospace}.protocol-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.protocol-card{padding:16px;position:relative}.protocol-card .num{position:absolute;right:12px;top:12px;font:8px "Geist Mono",monospace;color:var(--muted-2)}.protocol-card h4{margin:18px 0 7px;font-size:14px}.protocol-card p{font-size:11px;color:var(--muted);line-height:1.5;margin:0}.tag-row{display:flex;gap:5px;flex-wrap:wrap;margin-top:12px}.tag{font:7px "Geist Mono",monospace;color:var(--gold-2);border:1px solid var(--line-gold);padding:4px 5px}.explain-card{display:grid;gap:10px}.definition-row{padding:9px 0;border-top:1px solid var(--line)}.definition-row:first-child{border-top:0}.definition-row strong{font-size:12px}.definition-row p{font-size:11px;color:var(--muted);margin:4px 0 0;line-height:1.45}

/* STRUCTURED DATA ENTRY */
.data-entry-card{border:1px solid var(--line);background:var(--panel);padding:20px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.field.full{grid-column:1/-1}.field small{font-size:11px;color:var(--muted-2)}.input-shell{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;border:1px solid var(--line);background:var(--bg)}.input-shell:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 9%,transparent)}.input-shell input,.input-shell select{border:0!important;box-shadow:none!important;background:transparent!important}.input-unit{padding:0 11px;font:9px "Geist Mono",monospace;color:var(--muted);white-space:nowrap}.time-input{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.time-input.two{grid-template-columns:repeat(2,minmax(0,1fr))}.time-cell{display:grid;grid-template-columns:1fr auto;align-items:center;border:1px solid var(--line);background:var(--bg)}.time-cell input{border:0!important;background:transparent!important;min-width:0}.time-cell span{padding-right:8px;font:8px "Geist Mono",monospace;color:var(--muted)}.duration-custom{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:7px}.entry-context{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.repeat-table{width:100%;border-collapse:collapse;margin-top:12px}.repeat-table th{font:7px "Geist Mono",monospace;color:var(--muted-2);letter-spacing:.08em;text-align:left;padding:0 6px 8px}.repeat-table td{padding:6px;vertical-align:top;border-top:1px solid var(--line)}.repeat-table input,.repeat-table select{width:100%;min-width:74px;background:var(--bg);border:1px solid var(--line);color:var(--ink);padding:9px}.row-actions{display:flex;gap:4px}.row-actions button{width:30px;height:30px;border:1px solid var(--line);background:transparent;color:var(--muted);cursor:pointer}.validation{font-size:11px;margin-top:4px}.validation.invalid{color:var(--danger)}.validation.unusual{color:var(--warn)}.validation.review-ready{color:var(--ok);margin-top:9px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--ok) 35%,var(--line));background:color-mix(in srgb,var(--ok) 5%,transparent)}.preview-card{border:1px solid var(--line-gold);background:color-mix(in srgb,var(--gold) 5%,var(--panel));padding:16px;margin-top:14px}.preview-list{display:grid;gap:7px}.preview-list div{display:flex;justify-content:space-between;gap:12px;font-size:12px}.preview-list span{color:var(--muted)}.preview-list strong{font-family:"Geist Mono",monospace}.empty-state{border:1px dashed var(--line);padding:24px;text-align:center;color:var(--muted);font-size:12px}.empty-state strong{display:block;color:var(--ink);font-size:13px;margin-bottom:6px}.empty-state .action-row{justify-content:center}.banner{border:1px solid var(--line);background:var(--panel-2);padding:13px 14px;color:var(--muted);font-size:12px;line-height:1.5}.danger-banner{border-color:color-mix(in srgb,var(--danger) 40%,var(--line));color:var(--danger)}.warning-banner{border-color:color-mix(in srgb,var(--warn) 40%,var(--line));color:var(--warn)}.success-banner{border-color:color-mix(in srgb,var(--ok) 40%,var(--line));color:var(--ok)}

/* RESULTS */
.results-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:720px}.data-table th{padding:10px;text-align:left;font:7px "Geist Mono",monospace;color:var(--muted-2);letter-spacing:.09em;border-bottom:1px solid var(--line)}.data-table td{padding:12px 10px;font-size:12px;border-bottom:1px solid var(--line)}.data-table tbody tr{cursor:pointer}.data-table tbody tr:hover{background:color-mix(in srgb,var(--gold) 4%,transparent)}.pill.ok{color:var(--ok)}.pill.warn{color:var(--warn)}.pill.bad{color:var(--danger)}

/* PROFILE */
.profile-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:14px}.profile-section{border-top:1px solid var(--line);padding-top:16px;margin-top:18px}.profile-section:first-child{border-top:0;padding-top:0;margin-top:0}.profile-section h4{font-size:13px;margin:0 0 13px}.completion-meter{height:7px;background:var(--bg);border:1px solid var(--line);overflow:hidden}.completion-meter i{display:block;height:100%;background:var(--gold)}

/* LIVE LAB */
.live-home{display:grid;gap:14px}.lab-workflow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-bottom:14px}.workflow-step{border:1px solid var(--line);padding:10px;background:var(--panel);min-width:0}.workflow-step span{display:block;font:7px "Geist Mono",monospace;color:var(--muted-2)}.workflow-step strong{display:block;font-size:11px;margin-top:5px}.workflow-step.active{border-color:var(--gold);background:color-mix(in srgb,var(--gold) 6%,var(--panel))}.live-setup-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:14px}.wizard-card{padding:21px;border:1px solid var(--line);background:var(--panel)}.wizard-step{padding:16px 0;border-top:1px solid var(--line)}.wizard-step:first-child{padding-top:0;border-top:0}.wizard-step-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.wizard-step-head i{display:grid;place-items:center;width:25px;height:25px;border:1px solid var(--line-gold);color:var(--gold);font:8px "Geist Mono",monospace;font-style:normal}.wizard-step-head strong{font-size:11px}.device-centre{display:grid;gap:10px}.device-group h4{font:8px "Geist Mono",monospace;letter-spacing:.12em;color:var(--muted-2);margin:0 0 7px}.device-card{border:1px solid var(--line);background:var(--panel);padding:13px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.device-card.connected{border-color:color-mix(in srgb,var(--ok) 35%,var(--line))}.device-card .device-name{font-size:11px;font-weight:650}.device-card .device-meta{font-size:11px;color:var(--muted);margin-top:4px}.device-status{font:7px "Geist Mono",monospace;color:var(--muted);white-space:nowrap}.device-status.ok{color:var(--ok)}.device-status.warn{color:var(--warn)}.signal-check{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.signal-card{border:1px solid var(--line);padding:12px}.signal-card span{font:7px "Geist Mono",monospace;color:var(--muted-2)}.signal-card strong{display:block;font-size:24px;margin-top:7px}.signal-card small{font-size:11px;color:var(--ok)}.ready-panel{border:1px solid var(--line-gold);padding:17px;background:color-mix(in srgb,var(--gold) 5%,var(--panel));display:flex;align-items:center;justify-content:space-between;gap:14px}.ready-panel strong{font-size:16px}.live-test{display:grid;gap:12px}.live-test-status{display:flex;align-items:center;justify-content:space-between;gap:20px;border:1px solid var(--line);padding:13px 16px;background:var(--panel)}.live-test-status h3{margin:0;font-size:16px}.live-status-meta{display:flex;gap:20px;font:8px "Geist Mono",monospace;color:var(--muted)}.recording-dot{color:var(--ok)}.current-stage-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr 1fr;gap:10px}.stage-hero{border:1px solid var(--line-gold);background:color-mix(in srgb,var(--gold) 5%,var(--panel));padding:22px}.stage-hero span,.live-metric span{font:8px "Geist Mono",monospace;color:var(--muted-2)}.stage-hero strong{display:block;font-size:clamp(46px,6vw,72px);line-height:.9;margin:13px 0 3px;letter-spacing:-.06em}.stage-hero small{font-size:13px}.stage-card{border:1px solid var(--line);background:var(--panel);padding:18px}.stage-card strong{display:block;font-size:30px;letter-spacing:-.045em;margin:11px 0 3px}.stage-card small{color:var(--muted);font-size:11px}.live-metrics-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.live-metric{border:1px solid var(--line);background:var(--panel);padding:13px;min-width:0}.live-metric strong{display:block;font-size:25px;font-variant-numeric:tabular-nums;margin:8px 0 2px}.live-metric small{font-size:11px;color:var(--muted)}.live-chart-card{min-height:330px}.live-chart-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.live-quick-actions{display:flex;gap:7px;flex-wrap:wrap}.protocol-timeline{display:flex;gap:6px;overflow:auto;padding-bottom:5px}.timeline-stage{min-width:100px;border:1px solid var(--line);padding:10px;background:var(--panel)}.timeline-stage span{font:7px "Geist Mono",monospace;color:var(--muted-2)}.timeline-stage strong{display:block;font-size:12px;margin-top:5px}.timeline-stage.done{border-color:color-mix(in srgb,var(--ok) 30%,var(--line))}.timeline-stage.active{border-color:var(--gold);background:color-mix(in srgb,var(--gold) 6%,var(--panel))}.connection-alert{border:1px solid color-mix(in srgb,var(--danger) 35%,var(--line));padding:12px;color:var(--danger);background:color-mix(in srgb,var(--danger) 5%,var(--panel));display:flex;justify-content:space-between;gap:12px;align-items:center}.lab-mode .lab-sidebar,.lab-mode .lab-topbar{display:none}.lab-mode .lab-app{grid-template-columns:1fr}.lab-mode .lab-main{grid-column:1}.lab-mode .page-content{max-width:none;padding:18px}.lab-mode .stage-hero strong{font-size:90px}.lab-mode .live-metric strong{font-size:34px}

/* DEVELOPER */
.developer-hero{display:flex;align-items:center;justify-content:space-between;gap:26px;padding:24px;border:1px solid var(--line);background:linear-gradient(135deg,var(--panel),var(--panel-2));margin-bottom:14px}.developer-hero h3{font-size:34px;letter-spacing:-.05em;margin:8px 0}.developer-hero p{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.coach-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.developer-tabs{display:flex;gap:5px;margin:22px 0 8px;border-bottom:1px solid var(--line);overflow-x:auto}.developer-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);padding:11px 13px;cursor:pointer;white-space:nowrap;font-size:12px}.developer-tabs button span{font:7px "Geist Mono",monospace;color:var(--muted-2);margin-right:7px}.developer-tabs button.active{color:var(--gold-2);border-bottom-color:var(--gold)}.athlete-toolbar{display:flex;align-items:end;justify-content:space-between;gap:14px;margin-bottom:12px;padding:15px}.athlete-toolbar .field{width:min(440px,100%)}.athlete-filter-buttons{display:flex;gap:6px;flex-wrap:wrap}.athlete-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.athlete-admin-card{padding:17px}.athlete-admin-head{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;padding-bottom:13px;border-bottom:1px solid var(--line)}.athlete-admin-avatar{width:42px;height:42px;border:1px solid var(--line-gold);display:grid;place-items:center;font:10px "Geist Mono",monospace;color:var(--gold-2)}.athlete-admin-head h4{margin:4px 0 2px;font-size:15px}.athlete-admin-head p{margin:0;color:var(--muted);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.athlete-login-primary{padding:15px 0}.athlete-login-primary>span,.athlete-admin-meta span{display:block;font:7px "Geist Mono",monospace;letter-spacing:.1em;color:var(--muted-2)}.athlete-login-primary strong{display:block;font-size:25px;letter-spacing:-.04em;margin:7px 0 2px}.athlete-login-primary small{color:var(--muted);font-size:11px}.athlete-admin-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.athlete-admin-meta>div{border:1px solid var(--line);padding:10px}.athlete-admin-meta strong{display:block;margin-top:5px;font-size:11px;font-family:"Geist Mono",monospace}.athlete-activity{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.athlete-activity summary{cursor:pointer;color:var(--gold-2);font:8px "Geist Mono",monospace}.login-history{display:grid;margin-top:9px}.login-history div{display:flex;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding:8px 0;font-size:11px}.code-generator-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.65fr);gap:12px}.code-generator-panel{padding:22px}.generator-intro{padding-bottom:17px;margin-bottom:17px;border-bottom:1px solid var(--line)}.generator-intro h3{font-size:23px;letter-spacing:-.035em;margin:7px 0}.generator-intro p{margin:0;color:var(--muted);font-size:12px}.code-help-panel{position:sticky;top:90px}.code-help-panel ol{margin:16px 0 0;padding-left:18px;color:var(--muted);font-size:12px;line-height:1.65}.code-link-box{margin-top:17px;padding:12px;border:1px solid var(--line);background:var(--bg)}.code-link-box span{display:block;font:7px "Geist Mono",monospace;color:var(--muted-2)}.code-link-box strong{display:block;margin:7px 0 10px;font-size:11px;overflow-wrap:anywhere}.generated-code-card{margin-top:18px;border:1px solid var(--line-gold);background:color-mix(in srgb,var(--gold) 6%,var(--panel));padding:20px}.generated-code-card>span{display:block;font:8px "Geist Mono",monospace;color:var(--gold)}.generated-code-card>strong{display:block;font:clamp(28px,4vw,44px) "Geist Mono",monospace;letter-spacing:.06em;margin:13px 0 7px;color:var(--gold-2);overflow-wrap:anywhere}.generated-code-card>p{margin:0;color:var(--muted);font-size:12px}

/* MODALS / TOASTS */
.modal-layer{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.58);backdrop-filter:blur(4px);display:grid;place-items:center;padding:20px}.modal{width:min(900px,100%);max-height:min(88vh,920px);overflow:auto;border:1px solid var(--line-gold);background:var(--panel);box-shadow:var(--shadow)}.modal.compact{width:min(520px,100%)}.modal-head{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;gap:16px;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line);background:var(--panel)}.modal-head h3{font-size:18px;margin:0}.modal-close{width:34px;height:34px;border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer}.modal-body{padding:18px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:17px;border-top:1px solid var(--line);margin-top:18px}.toast-region{position:fixed;right:18px;bottom:18px;z-index:120;display:grid;gap:8px}.toast{min-width:260px;max-width:380px;border:1px solid var(--line-gold);background:var(--panel);box-shadow:var(--shadow);padding:12px 14px;font-size:12px;animation:toast-in 180ms ease}.toast.success{border-color:color-mix(in srgb,var(--ok) 45%,var(--line))}.toast.error{border-color:color-mix(in srgb,var(--danger) 45%,var(--line))}.tooltip-target{position:relative}.tooltip-target:hover:after{content:attr(data-tooltip);position:absolute;z-index:50;left:12px;bottom:calc(100% + 8px);width:240px;padding:9px 10px;border:1px solid var(--line);background:var(--panel-2);color:var(--ink);font-size:11px;line-height:1.45;box-shadow:var(--shadow)}
@keyframes toast-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes panel-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.page-content>*{animation:panel-in 180ms ease both}

/* RESPONSIVE */
@media(max-width:1320px){:root{--sidebar:242px}.kpi-grid,.metric-strip,.coach-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.protocol-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.athlete-admin-grid{grid-template-columns:1fr}.code-generator-layout{grid-template-columns:1fr}.code-help-panel{position:static}.live-metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.current-stage-grid{grid-template-columns:1.2fr 1fr 1fr}.current-stage-grid .stage-card:last-child{grid-column:span 3}.entry-context{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1120px){.lab-app{display:block}.lab-sidebar{position:fixed;left:0;top:0;width:280px;transform:translateX(-105%);transition:transform 200ms ease;box-shadow:var(--shadow)}.lab-sidebar.open{transform:none}.lab-main{width:100%}.mobile-overlay{display:block;position:fixed;inset:0;z-index:25;border:0;background:rgba(0,0,0,.56);opacity:0;pointer-events:none;transition:opacity var(--ease)}body.nav-open .mobile-overlay{opacity:1;pointer-events:auto}#mobile-nav-toggle{display:grid}.lab-topbar{grid-template-columns:minmax(170px,1fr) auto}.topbar-context{display:none}.sport-main-grid,.profile-grid,.live-setup-grid{grid-template-columns:1fr}.dashboard-grid .span-9,.dashboard-grid .span-8,.dashboard-grid .span-7,.dashboard-grid .span-6,.dashboard-grid .span-5,.dashboard-grid .span-4,.dashboard-grid .span-3{grid-column:span 12}.lab-workflow{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.lab-public-header{padding:15px 18px}.lab-brand span{display:none}.auth-stage{grid-template-columns:1fr;padding:26px 18px}.auth-intro{display:none}.auth-panel{padding:24px 19px}.field-pair,.form-grid,.form-grid.three,.entry-context{grid-template-columns:1fr}.lab-topbar{padding:11px 14px;min-height:64px}.topbar-title h2{font-size:18px}.topbar-actions .website-button,#alerts-button{display:none}.page-content{padding:18px 12px 60px}.intelligence-header,.sport-header,.developer-hero{display:grid;align-items:start;padding:18px}.intelligence-status{min-width:0}.kpi-grid,.metric-strip,.coach-stats{grid-template-columns:1fr 1fr}.sport-actions{width:100%}.sport-actions button{flex:1}.protocol-grid{grid-template-columns:1fr}.section-row{align-items:start;display:grid;gap:5px}.section-row p{text-align:left}.chart-toolbar,.results-toolbar{display:grid;align-items:start}.current-stage-grid{grid-template-columns:1fr 1fr}.stage-hero{grid-column:1/-1}.current-stage-grid .stage-card:last-child{grid-column:auto}.live-metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.lab-workflow{grid-template-columns:repeat(2,minmax(0,1fr))}.signal-check{grid-template-columns:1fr 1fr}.ready-panel{display:grid}.athlete-toolbar{display:grid;align-items:stretch}.athlete-toolbar .field{width:100%}.athlete-filter-buttons{display:grid;grid-template-columns:repeat(3,1fr)}.athlete-admin-head{grid-template-columns:42px minmax(0,1fr)}.athlete-admin-head>.pill{grid-column:1/-1;justify-self:start}.athlete-admin-meta{grid-template-columns:1fr}.modal-layer{padding:8px}.modal{max-height:94vh}.repeat-table{min-width:720px}.data-entry-table-wrap{overflow:auto}.time-input{grid-template-columns:repeat(3,minmax(70px,1fr))}}
@media(max-width:480px){.kpi-grid,.metric-strip,.coach-stats{grid-template-columns:1fr}.live-metrics-grid,.signal-check{grid-template-columns:1fr 1fr}.current-stage-grid{grid-template-columns:1fr}.stage-hero,.current-stage-grid .stage-card:last-child{grid-column:auto}.lab-workflow{grid-template-columns:1fr 1fr}.athlete-filter-buttons{grid-template-columns:1fr}.topbar-actions{gap:4px}.icon-button{min-width:34px;height:34px}.intelligence-header h3{font-size:30px}.sport-header h3{font-size:29px}.modal-actions{display:grid}.modal-actions button{width:100%}.duration-custom{grid-template-columns:1fr 1fr 1fr}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.chart-line-best{fill:none;stroke:var(--ok);stroke-width:1.35;stroke-dasharray:2 4}.comparison-head{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center}.comparison-head .preview-card{margin:0}.comparison-head .preview-card span,.comparison-head .preview-card small{display:block;color:var(--muted);font-size:11px}.comparison-head .preview-card strong{display:block;margin:6px 0;font-size:14px}.comparison-vs{font:10px "Geist Mono",monospace;color:var(--gold)}
@media(max-width:640px){.comparison-head{grid-template-columns:1fr}.comparison-vs{text-align:center}}
.saved-protocol-list{display:grid;gap:7px;margin-bottom:12px}.saved-protocol{display:grid;gap:3px;text-align:left;border:1px solid var(--line);background:var(--bg);color:var(--ink);padding:10px 11px;cursor:pointer}.saved-protocol:hover,.saved-protocol:focus-visible{border-color:var(--gold)}.saved-protocol strong{font-size:12px}.saved-protocol span{font:8px "Geist Mono",monospace;color:var(--muted)}
.coach-notes{display:grid;gap:8px}.coach-note{border:1px solid var(--line);background:var(--bg);padding:12px}.coach-note>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.coach-note>div>span:first-child{font:8px "Geist Mono",monospace;color:var(--muted)}.coach-note p{margin:8px 0 0;font-size:12px;line-height:1.55;color:var(--ink)}.coach-note-entry{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.device-health-row{display:grid;grid-template-columns:minmax(170px,1.5fr) repeat(5,minmax(70px,1fr));gap:8px;align-items:center;border-top:1px solid var(--line);padding:10px 0}.device-health-row:first-child{border-top:0}.device-health-row>div:first-child{display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:center}.device-health-row>div:first-child small{grid-column:2;font:7px "Geist Mono",monospace;color:var(--muted)}.device-health-row>div:not(:first-child) span{display:block;font:7px "Geist Mono",monospace;color:var(--muted-2)}.device-health-row>div:not(:first-child) b{display:block;margin-top:3px;font-size:11px;color:var(--ink)}
@media(max-width:900px){.device-health-row{grid-template-columns:1fr 1fr}.device-health-row>div:first-child{grid-column:1/-1}}
.threshold-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(220px,.8fr);gap:14px;align-items:start}.threshold-cards{display:grid;gap:8px}.threshold-cards .metric-tile{min-height:0}@media(max-width:900px){.threshold-layout{grid-template-columns:1fr}}

/* =========================================================
   v10 — RUNTIME, PROTOCOLS, ATHLETE INTELLIGENCE & PROVENANCE
   ========================================================= */
.route-skeleton,.route-error{border:1px solid var(--line);background:var(--panel);padding:26px;min-height:220px}.route-skeleton h3,.route-error h3{font-size:26px;margin:8px 0 18px}.route-skeleton p,.route-error p{color:var(--muted);font-size:12px}.skeleton-line{height:12px;background:linear-gradient(90deg,var(--panel-2),color-mix(in srgb,var(--ink) 6%,var(--panel-2)),var(--panel-2));background-size:220% 100%;animation:skeleton-shift 1.3s linear infinite}.skeleton-line.wide{width:min(680px,90%)}.skeleton-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:22px}.skeleton-grid i{display:block;height:100px;border:1px solid var(--line);background:var(--panel-2)}@keyframes skeleton-shift{to{background-position:-220% 0}}

.athlete-intelligence{border:1px solid var(--line-gold);background:linear-gradient(135deg,color-mix(in srgb,var(--gold) 5%,var(--panel)),var(--panel));padding:18px;margin:0 0 14px}.intelligence-title{display:flex;justify-content:space-between;gap:14px;align-items:end;border-bottom:1px solid var(--line);padding-bottom:11px;margin-bottom:11px}.intelligence-title h4{margin:0;font-size:17px}.intelligence-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line)}.intelligence-grid>div{background:var(--panel);padding:12px;min-height:88px}.intelligence-grid span,.provenance-grid span{display:block;font:7px "Geist Mono",monospace;letter-spacing:.13em;color:var(--muted-2)}.intelligence-grid strong{display:block;margin-top:7px;font-size:11px;line-height:1.42}.intelligence-grid small{display:block;margin-top:5px;color:var(--muted);font-size:11px;line-height:1.45}.intelligence-action{display:flex;align-items:end}.confidence.high-confidence{color:var(--ok)}.confidence.moderate-confidence{color:var(--gold-2)}.confidence.low-confidence{color:var(--muted)}.confidence.insufficient-data{color:var(--muted-2)}
.kpi-confidence{display:flex;justify-content:space-between;gap:8px;margin:8px 0 0;font:7px "Geist Mono",monospace;color:var(--muted-2)}.metric-evidence{border:0;background:transparent;color:var(--gold);font:7px "Geist Mono",monospace;text-transform:uppercase;cursor:pointer;padding:0 0 0 8px}.metric-evidence:hover{text-decoration:underline}.metric-meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:8px}.metric-meta .confidence-mini{font:7px "Geist Mono",monospace;color:var(--muted)}
.provenance-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);margin-bottom:16px}.provenance-grid>div{background:var(--bg);padding:12px;min-height:68px}.provenance-grid>div.span-2{grid-column:span 2}.provenance-grid strong{display:block;margin-top:6px;font-size:12px;line-height:1.45;overflow-wrap:anywhere}.evidence-section{border-top:1px solid var(--line);padding:15px 0}.evidence-section ul{margin:8px 0 0;padding-left:18px;color:var(--muted);font-size:11px;line-height:1.55}

.chart-event rect{fill:color-mix(in srgb,var(--gold) 7%,transparent);stroke:none}.chart-event line{stroke:color-mix(in srgb,var(--gold) 55%,transparent);stroke-width:1;stroke-dasharray:3 3}.chart-event text{fill:var(--gold-2);font:7px "Geist Mono",monospace}.comparison-warning{border:1px solid color-mix(in srgb,var(--gold) 48%,var(--line));background:color-mix(in srgb,var(--gold) 7%,var(--panel));padding:12px;margin-bottom:14px}.comparison-warning strong{font:8px "Geist Mono",monospace;color:var(--gold)}.comparison-warning p{margin:6px 0 0;font-size:11px;line-height:1.5;color:var(--muted)}.result-source{display:grid;gap:4px;justify-items:start}.result-source small{font:7px "Geist Mono",monospace;color:var(--muted)}

.command-palette{display:grid;gap:12px}.command-results{display:grid;max-height:58vh;overflow:auto;border:1px solid var(--line)}.command-result{display:grid;grid-template-columns:110px minmax(0,1fr) minmax(110px,.7fr);gap:10px;text-align:left;align-items:center;border:0;border-top:1px solid var(--line);background:var(--panel);color:var(--ink);padding:11px 12px;cursor:pointer}.command-result:first-child{border-top:0}.command-result:hover,.command-result:focus-visible{background:color-mix(in srgb,var(--gold) 7%,var(--panel));outline:none}.command-result span{font:7px "Geist Mono",monospace;color:var(--gold)}.command-result strong{font-size:12px}.command-result small{font-size:11px;color:var(--muted);text-align:right}.command-help{display:flex;justify-content:space-between;color:var(--muted-2);font:7px "Geist Mono",monospace}

.protocol-library-toolbar{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;align-items:end;margin-bottom:14px}.protocol-library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.protocol-library-card{border:1px solid var(--line);background:var(--panel);padding:16px;display:flex;flex-direction:column;min-height:330px}.protocol-library-card:hover{border-color:var(--line-gold)}.protocol-card-head{display:flex;justify-content:space-between;gap:8px;align-items:center}.protocol-library-card h4{font-size:17px;margin:12px 0 7px}.protocol-library-card>p{font-size:11px;line-height:1.55;color:var(--muted);margin:0 0 14px}.protocol-card-meta{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);margin-bottom:12px}.protocol-card-meta>div{background:var(--bg);padding:9px}.protocol-card-meta span{display:block;font:7px "Geist Mono",monospace;color:var(--muted-2)}.protocol-card-meta strong{display:block;margin-top:5px;font-size:11px;line-height:1.4}.protocol-library-card .action-row{margin-top:auto;padding-top:14px}
.protocol-detail{max-width:1260px;margin:0 auto}.protocol-detail-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:start;border:1px solid var(--line-gold);background:var(--panel);padding:24px;margin-bottom:14px}.protocol-detail-head h3{font-size:clamp(28px,4vw,46px);letter-spacing:-.045em;margin:8px 0 8px}.protocol-detail-head p{max-width:780px;color:var(--muted);font-size:12px;line-height:1.6}.protocol-detail-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px;max-width:330px}.protocol-schematic-panel{border:1px solid var(--line);background:var(--panel);padding:16px;margin-bottom:14px}.protocol-schematic-svg{width:100%;min-height:220px}.schematic-stage{fill:color-mix(in srgb,var(--gold) 22%,var(--green));stroke:var(--gold);stroke-width:1}.protocol-schematic-empty{padding:38px 18px;border:1px dashed var(--line);text-align:center}.protocol-schematic-empty strong{font:8px "Geist Mono",monospace;color:var(--gold)}.protocol-schematic-empty p{font-size:11px;color:var(--muted)}.sop-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sop-section{border:1px solid var(--line);background:var(--panel);padding:17px}.sop-section p,.sop-section li{font-size:11px;line-height:1.62;color:var(--muted)}.sop-section ul{padding-left:18px;margin:10px 0 0}.protocol-precheck{margin-top:14px}.checklist-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}
body.protocol-lab-mode .lab-sidebar,body.protocol-lab-mode .lab-topbar{display:none!important}body.protocol-lab-mode .lab-app{display:block!important}body.protocol-lab-mode .lab-main{width:100%!important}body.protocol-lab-mode .page-content{max-width:1320px;margin:0 auto;padding-top:28px}body.protocol-lab-mode .protocol-detail-head{position:sticky;top:0;z-index:4;box-shadow:var(--shadow)}

.review-queue-list{display:grid;gap:10px}.review-queue-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;border:1px solid var(--line);background:var(--panel);padding:15px}.review-queue-item h4{margin:5px 0;font-size:15px}.review-queue-item p{margin:0;color:var(--muted);font-size:11px}.review-queue-item small{display:block;margin-top:6px;color:var(--muted-2);font:7px "Geist Mono",monospace}.review-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.tab-count{display:inline-grid;place-items:center;min-width:18px;height:18px;border-radius:20px;background:var(--gold);color:var(--bg);font:7px "Geist Mono",monospace;margin-left:5px}.diagnostic-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}

@media(max-width:1120px){.protocol-library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.protocol-library-toolbar{grid-template-columns:1fr 1fr}.sop-grid{grid-template-columns:1fr}.diagnostic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.intelligence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.protocol-detail-head{grid-template-columns:1fr}.protocol-detail-actions{justify-content:flex-start;max-width:none}}
@media(max-width:700px){.protocol-library-grid,.protocol-library-toolbar,.intelligence-grid,.provenance-grid,.diagnostic-grid{grid-template-columns:1fr}.provenance-grid>div.span-2{grid-column:auto}.protocol-detail-head{padding:18px}.protocol-detail-actions{display:grid}.protocol-detail-actions button{width:100%}.checklist-grid{grid-template-columns:1fr}.review-queue-item{grid-template-columns:1fr}.review-actions{justify-content:flex-start}.command-result{grid-template-columns:1fr}.command-result small{text-align:left}.skeleton-grid{grid-template-columns:1fr}.protocol-card-meta{grid-template-columns:1fr}}
@media print{.lab-sidebar,.lab-topbar,.lab-public-header,.topbar-actions,.protocol-detail-actions,.modal-close,.toast-region{display:none!important}.lab-app,.lab-main{display:block!important;width:100%!important}.page-content{padding:0!important;max-width:none!important}.protocol-detail,.modal{max-height:none!important;overflow:visible!important;width:100%!important;box-shadow:none!important}.protocol-detail-head,.protocol-schematic-panel,.sop-section{break-inside:avoid;background:#fff!important;color:#111!important;border-color:#bbb!important}.sop-grid{display:block}.sop-section{margin:8px 0}.sop-section p,.sop-section li{color:#333!important}}
.athlete-documents{margin-top:14px}.document-upload-grid{display:grid;grid-template-columns:minmax(180px,1.2fr) minmax(150px,.8fr) minmax(135px,.6fr) minmax(190px,1fr) auto;gap:9px;align-items:end;border-top:1px solid var(--line);padding-top:14px}.document-list{display:grid;margin-top:14px}.document-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;border-top:1px solid var(--line);padding:12px 0}.document-row>div:first-child span{display:block;font:7px "Geist Mono",monospace;color:var(--gold)}.document-row>div:first-child strong{display:block;margin:4px 0;font-size:12px}.document-row>div:first-child small{display:block;color:var(--muted);font-size:11px}.chart-error{display:grid;place-items:start;gap:7px;min-height:160px;padding:24px;border:1px dashed color-mix(in srgb,var(--danger) 45%,var(--line));background:color-mix(in srgb,var(--danger) 3%,var(--panel))}.chart-error strong{font-size:13px}.chart-error span{color:var(--muted);font-size:11px}
@media(max-width:1120px){.document-upload-grid{grid-template-columns:1fr 1fr}.document-upload-grid>button{align-self:end}}@media(max-width:650px){.document-upload-grid,.document-row{grid-template-columns:1fr}.document-row .action-row{justify-content:flex-start}}
.metric-tile{position:relative}.metric-pin{position:absolute;right:8px;top:7px;border:0;background:transparent;color:var(--muted-2);cursor:pointer;font-size:16px;line-height:1}.metric-pin.active,.metric-pin:hover{color:var(--gold)}.pinned-section{margin:14px 0}.pinned-section .metric-strip{margin-top:10px}
.notification-list{display:grid}.notification-item{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:10px;align-items:center;text-align:left;border:0;border-top:1px solid var(--line);background:var(--panel);color:var(--ink);padding:12px;cursor:pointer}.notification-item:first-child{border-top:0}.notification-item:hover{background:var(--panel-2)}.notification-item>i{width:7px;height:7px;border-radius:50%;background:var(--muted)}.notification-item.attention>i{background:var(--gold)}.notification-item.error>i{background:var(--danger)}.notification-item strong{display:block;font-size:12px}.notification-item small{display:block;margin-top:4px;color:var(--muted);font-size:11px;line-height:1.4}.notification-item>b{font:7px "Geist Mono",monospace;color:var(--gold)}
.chart-panel{position:relative}.chart-panel-actions{display:flex;justify-content:flex-end;margin:-2px 0 8px}.chart-modal{width:min(96vw,1500px);height:min(92vh,980px)}.chart-modal .modal-body{height:calc(100% - 66px);display:flex;flex-direction:column}.full-chart-toolbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px;color:var(--muted);font:8px "Geist Mono",monospace}.full-chart-wrap{flex:1;min-height:0}.full-chart-wrap svg{height:100%;min-height:520px}.report-builder-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0}.report-builder-options .check{border:1px solid var(--line);padding:11px;background:var(--bg)}
@media(max-width:650px){.report-builder-options{grid-template-columns:1fr}.full-chart-wrap svg{min-height:360px}}
/* V10 evidence-coverage performance map */
.performance-map-panel{margin:14px 0}.performance-map-summary{display:flex;align-items:baseline;gap:10px;margin:12px 0 14px}.performance-map-summary strong{font-size:20px;letter-spacing:-.03em}.performance-map-summary span{font-size:11px;color:var(--muted)}.performance-map-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.performance-map-item{border:1px solid var(--line);background:var(--bg);padding:11px;min-height:88px;display:grid;align-content:start;gap:5px}.performance-map-item span{font-size:11px;color:var(--muted)}.performance-map-item strong{font:8px "Geist Mono",monospace;letter-spacing:.1em}.performance-map-item small{font-size:11px;color:var(--muted-2)}.performance-map-item.complete{border-color:color-mix(in srgb,var(--ok) 38%,var(--line))}.performance-map-item.complete strong{color:var(--ok)}.performance-map-item.partial{border-color:color-mix(in srgb,var(--gold) 45%,var(--line))}.performance-map-item.partial strong{color:var(--gold)}.performance-map-item.missing strong{color:var(--muted-2)}
@media(max-width:980px){.performance-map-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.performance-map-grid{grid-template-columns:1fr}}
.comparison-selector{display:grid;gap:7px;max-height:55vh;overflow:auto;border:1px solid var(--line);padding:8px}.comparison-choice{border:1px solid var(--line);background:var(--panel);padding:10px!important;grid-template-columns:auto minmax(0,1fr)!important}.comparison-choice strong{display:block;font-size:12px}.comparison-choice small{display:block;margin-top:4px;color:var(--muted);font-size:11px}.comparison-choice:has(input:checked){border-color:var(--gold);background:color-mix(in srgb,var(--gold) 6%,var(--panel))}.comparison-choice:has(input:disabled){opacity:.45}.comparison-head.multi{display:flex;gap:8px;align-items:stretch;overflow-x:auto}.comparison-head.multi .preview-card{min-width:220px;flex:1}
.icon-button.active{border-color:var(--gold);color:var(--gold);background:color-mix(in srgb,var(--gold) 8%,var(--panel))}


/* ==========================================================================\n   V11 — TYPOGRAPHY, DARK-MODE CONTRAST & WHOLE-ATHLETE DASHBOARD\n   ========================================================================== */
body{font-size:15px;line-height:1.5}
body[data-theme="dark"]{
  --bg:#050b08;--bg-soft:#0b1410;--panel:#101a15;--panel-2:#15221b;--panel-3:#1a2a21;
  --ink:#fffdf8;--muted:#c6cec9;--muted-2:#a8b4ac;--green:#174936;--green-2:#23654b;
  --gold:#d6b86d;--gold-2:#f0d58d;--line:rgba(255,255,255,.15);--line-gold:rgba(214,184,109,.42);
  --ok:#91d3aa;--warn:#e4c56f;--danger:#ee9a8f;--shadow:0 24px 70px rgba(0,0,0,.38);
  background:radial-gradient(circle at 88% 0,rgba(28,83,60,.28),transparent 38%),linear-gradient(135deg,#040907,#0a1510 55%,#050a08)
}
body[data-theme="dark"] .lab-sidebar{background:#0b1410}
body[data-theme="dark"] .lab-topbar{background:rgba(5,11,8,.95);border-bottom-color:rgba(255,255,255,.17)}
body[data-theme="dark"] .panel,body[data-theme="dark"] .kpi-card,body[data-theme="dark"] .protocol-card,body[data-theme="dark"] .athlete-admin-card,body[data-theme="dark"] .dashboard-sport-card,body[data-theme="dark"] .zone-card{box-shadow:inset 0 1px rgba(255,255,255,.025)}
body[data-theme="dark"] input,body[data-theme="dark"] select,body[data-theme="dark"] textarea{background:#09120e!important;border-color:rgba(255,255,255,.18)!important}
body[data-theme="dark"] input::placeholder,body[data-theme="dark"] textarea::placeholder{color:#87938c;opacity:1}
body[data-theme="dark"] .chart-axis{fill:#c2cbc5!important}
body[data-theme="dark"] .chart-grid{stroke:rgba(255,255,255,.12)!important}
body[data-theme="dark"] .chart-line-history,body[data-theme="dark"] .chart-line-best{opacity:.78}
body[data-theme="dark"] .data-table th{color:#e5e8e5}
body[data-theme="dark"] .data-table td{color:#cbd2ce}
body[data-theme="dark"] .empty-state,body[data-theme="dark"] .banner{color:#c2cbc5}

/* Readability floor: no critical app text should render as tiny 7–10 px copy. */
.section-kicker,.eyebrow{font-size:10.5px!important;line-height:1.3}
.sidebar-brand span{font-size:13px}.sidebar-brand small{font-size:12px}.athlete-chip strong{font-size:13px}.athlete-chip small{font-size:11px}
.sport-nav button{font-size:14px;padding:12px 10px}.sport-nav button i{font-size:12px}.sidebar-foot button{font-size:13px}.sidebar-foot span{font-size:12px}
.topbar-title p{font-size:12px}.topbar-title h2{font-size:24px}.topbar-context{font-size:12px}.sync-pill b,.sync-pill small{font-size:12px}.icon-button{font-size:12px;min-width:40px;height:40px}
.section-row h3{font-size:25px}.section-row p{font-size:12.5px;line-height:1.5}.panel{padding:22px}.panel p,.panel li{font-size:13px;line-height:1.55}
.auth-form label,.field{font-size:13px}.auth-form input,.auth-form select,.auth-form textarea,.field input,.field select,.field textarea{font-size:14px;padding:13px 14px}.show-password,.text-button{font-size:13px}.form-note,.message{font-size:12px}.auth-status{font-size:10.5px}.auth-tabs button{font-size:14px}
.primary-action,.primary,.secondary,.small-button,.danger-button{font-size:13px;min-height:40px}.small-button{padding:9px 12px}.inline-link{font-size:12px}
.kpi-head span,.kpi-confidence span,.kpi-footer span,.class-badge,.pill{font-size:10.5px!important}.kpi-value small{font-size:13px}.kpi-change{font-size:12px}.kpi-card p{font-size:12px}
.metric-tile span,.quality-item span,.status-line span,.status-item span,.preview-list span,.history-date,.result-source small{font-size:11px!important}.metric-tile strong,.status-item strong,.preview-list strong{font-size:14px!important}
.data-table{font-size:13px}.data-table th{font-size:10.5px}.data-table td{font-size:12.5px}.history-row{font-size:12.5px}.history-row strong{font-size:13px}
.protocol-library-card p,.protocol-detail-head p,.sop-section p,.sop-section li,.protocol-schematic-empty p{font-size:12.5px!important}.protocol-card-meta span{font-size:12px}.protocol-card-meta strong{font-size:11.5px}.protocol-schematic-empty strong{font-size:11px}.review-queue-item p{font-size:12px}.review-queue-item small{font-size:12px}
.notification-item strong{font-size:12px}.notification-item small{font-size:11px}.notification-item>b{font-size:12px}.full-chart-toolbar{font-size:10.5px}.performance-map-item span{font-size:11.5px}.performance-map-item strong{font-size:10.5px}.performance-map-item small{font-size:10.5px}.performance-map-summary span{font-size:11px}
.document-row>div:first-child span{font-size:12px}.document-row>div:first-child strong{font-size:13px}.document-row>div:first-child small{font-size:11px}.chart-error span{font-size:12px}

/* Whole-athlete dashboard */
.dashboard-hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(330px,.65fr);gap:16px;margin-bottom:22px;border:1px solid var(--line-gold);background:linear-gradient(135deg,var(--panel),var(--panel-2));padding:26px}
.dashboard-hero-copy h3{font-size:clamp(34px,4vw,56px);letter-spacing:-.055em;margin:8px 0 6px}.dashboard-hero-copy>p{font-size:14px;color:var(--muted);margin:0}.dashboard-hero-status{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}.dashboard-hero-status span{border:1px solid var(--line);background:var(--bg-soft);padding:9px 11px;font-size:11px;color:var(--muted)}.dashboard-hero-status b{color:var(--ink);margin-right:4px}
.dashboard-coverage{display:grid;grid-template-columns:145px minmax(0,1fr);gap:18px;align-items:center;border-left:1px solid var(--line);padding-left:22px}.dashboard-ring{--coverage-angle:0deg;width:138px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--gold) var(--coverage-angle),var(--panel-3) 0);position:relative}.dashboard-ring:after{content:"";position:absolute;inset:12px;border-radius:50%;background:var(--panel)}.dashboard-ring>div{position:relative;z-index:1;text-align:center}.dashboard-ring strong{display:block;font-size:28px;letter-spacing:-.05em}.dashboard-ring span{display:block;font:9px "Geist Mono",monospace;color:var(--muted);letter-spacing:.08em}.dashboard-ring-meta{display:grid;gap:9px}.dashboard-ring-meta div{border-bottom:1px solid var(--line);padding-bottom:8px}.dashboard-ring-meta span{display:block;font-size:10.5px;color:var(--muted)}.dashboard-ring-meta strong{display:block;margin-top:3px;font-size:15px}
.dashboard-sport-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:24px}.dashboard-sport-card{border:1px solid var(--line);background:var(--panel);padding:18px;cursor:pointer;min-height:204px;display:flex;flex-direction:column;transition:transform var(--ease),border-color var(--ease),background var(--ease)}.dashboard-sport-card:hover{transform:translateY(-2px);border-color:var(--line-gold);background:var(--panel-2)}.dashboard-sport-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.dashboard-sport-head>span{font:10px "Geist Mono",monospace;color:var(--gold);letter-spacing:.12em}.dashboard-sport-head>b{font:9px "Geist Mono",monospace;color:var(--muted-2)}.dashboard-sport-head>b.current{color:var(--ok)}.dashboard-sport-head>b.attention{color:var(--gold)}.dashboard-sport-head>b.stale{color:var(--warn)}.dashboard-sport-card h4{font-size:14px;margin:16px 0 4px;color:var(--muted);font-weight:560}.dashboard-sport-value{font-size:clamp(25px,2.4vw,36px);font-weight:700;letter-spacing:-.045em;line-height:1.05}.dashboard-sport-trend{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}.dashboard-sport-trend strong{font-size:12px}.dashboard-sport-trend .sparkline{width:88px;height:30px}.dashboard-sport-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:14px}.dashboard-sport-meta span{border:1px solid var(--line);padding:4px 6px;font:9px "Geist Mono",monospace;color:var(--muted)}.dashboard-sport-card.missing{border-style:dashed}.dashboard-sport-card.missing p{font-size:12px;color:var(--muted)}
.dashboard-visual-grid{margin-bottom:24px}.dashboard-status-list{display:grid}.dashboard-status-list button{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:10px;align-items:center;border:0;border-top:1px solid var(--line);background:none;color:var(--ink);text-align:left;padding:12px 2px;cursor:pointer}.dashboard-status-list button:first-child{border-top:0}.dashboard-status-list button:hover{background:color-mix(in srgb,var(--gold) 5%,transparent)}.dashboard-status-list i{width:8px;height:8px;border-radius:50%;background:var(--muted-2)}.dashboard-status-list i.current{background:var(--ok)}.dashboard-status-list i.attention{background:var(--gold)}.dashboard-status-list span strong{display:block;font-size:13px}.dashboard-status-list span small{display:block;margin-top:3px;font-size:11px;color:var(--muted)}.dashboard-status-list>b{font:9px "Geist Mono",monospace;color:var(--muted)}
.zone-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:24px}.zone-card{border:1px solid var(--line);background:var(--panel);padding:18px;cursor:pointer}.zone-card-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.zone-card-head span{font:10px "Geist Mono",monospace;letter-spacing:.12em;color:var(--gold)}.zone-card-head strong{font:9px "Geist Mono",monospace;color:var(--muted)}.zone-domain-strip{display:grid;grid-template-columns:1fr 1fr 1fr;margin:17px 0 14px;height:50px;border:1px solid var(--line);overflow:hidden}.zone-domain-strip span{display:grid;place-items:center;font:9px "Geist Mono",monospace;letter-spacing:.06em;border-left:1px solid var(--line)}.zone-domain-strip span:first-child{border-left:0;background:color-mix(in srgb,var(--ok) 18%,var(--panel-2))}.zone-domain-strip span:nth-child(2){background:color-mix(in srgb,var(--gold) 18%,var(--panel-2))}.zone-domain-strip span:nth-child(3){background:color-mix(in srgb,var(--danger) 13%,var(--panel-2))}.zone-boundaries{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.zone-boundaries div{background:var(--bg-soft);border:1px solid var(--line);padding:9px;min-width:0}.zone-boundaries span{display:block;font-size:10.5px;color:var(--muted)}.zone-boundaries strong{display:block;font-size:12px;margin-top:4px;overflow-wrap:anywhere}.zone-card p{font-size:11px!important;color:var(--muted);margin:13px 0 0}
.dashboard-recent-tests{display:grid}.dashboard-recent-tests button{display:grid;grid-template-columns:112px minmax(0,1fr) minmax(180px,.8fr);gap:12px;align-items:center;border:0;border-top:1px solid var(--line);background:none;color:var(--ink);text-align:left;padding:12px 2px;cursor:pointer}.dashboard-recent-tests button:first-child{border-top:0}.dashboard-recent-tests button:hover{background:color-mix(in srgb,var(--gold) 5%,transparent)}.dashboard-recent-tests span{font:10px "Geist Mono",monospace;color:var(--gold)}.dashboard-recent-tests strong{font-size:13px}.dashboard-recent-tests small{font-size:11px;color:var(--muted)}.dashboard-explainer{display:grid;gap:9px}.dashboard-explainer p{margin:0;border-bottom:1px solid var(--line);padding-bottom:9px;font-size:12.5px!important;color:var(--muted)}.dashboard-explainer strong{color:var(--ink)}
@media(max-width:1200px){.dashboard-sport-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-hero{grid-template-columns:1fr}.dashboard-coverage{border-left:0;border-top:1px solid var(--line);padding:18px 0 0}.zone-grid{grid-template-columns:1fr}.dashboard-recent-tests button{grid-template-columns:95px minmax(0,1fr)}}
@media(max-width:760px){body{font-size:16px}.dashboard-sport-grid{grid-template-columns:1fr}.dashboard-coverage{grid-template-columns:112px minmax(0,1fr)}.dashboard-ring{width:108px}.zone-boundaries{grid-template-columns:1fr}.dashboard-recent-tests button{grid-template-columns:1fr;gap:4px}.dashboard-hero{padding:20px}.topbar-title h2{font-size:21px}.sport-nav button{font-size:15px}}


/* V11 readability hardening for technical microcopy */
.identity-line,.plot-caption{font-size:10.5px!important}.status-line strong{font-size:11px!important}.chart-axis{font-size:12px!important}.tag{font-size:12px!important}.input-unit{font-size:11px!important}.time-cell span{font-size:10.5px!important}.repeat-table th{font-size:12px!important}.workflow-step span{font-size:12px!important}.workflow-step strong{font-size:12px!important}.wizard-step-head i{font-size:12px!important}.device-group h4{font-size:10.5px!important}.device-status{font-size:12px!important}.signal-card span{font-size:10.5px!important}.live-status-meta{font-size:10.5px!important}.stage-hero span,.live-metric span{font-size:10.5px!important}.timeline-stage span{font-size:12px!important}.developer-tabs button span{font-size:12px!important}.athlete-login-primary>span,.athlete-admin-meta span{font-size:12px!important}.athlete-activity summary{font-size:10.5px!important}.code-link-box span{font-size:12px!important}.generated-code-card>span{font-size:10.5px!important}.coach-note>div>span:first-child{font-size:10.5px!important}.coach-note p{font-size:12.5px!important}.device-health-row>div:first-child small,.device-health-row>div:not(:first-child) span{font-size:12px!important}.intelligence-grid span,.provenance-grid span{font-size:12px!important}.metric-meta{font-size:12px!important}.metric-evidence,.metric-meta .confidence-mini{font-size:12px!important}.chart-event text{font-size:9.5px!important}.comparison-warning strong{font-size:10.5px!important}.comparison-warning p{font-size:12px!important}.command-result span,.command-meta{font-size:12px!important}.command-result strong{font-size:12.5px!important}.tab-count{font-size:12px!important}.dashboard-ring span,.dashboard-sport-head>b,.dashboard-sport-meta span,.dashboard-status-list>b,.zone-card-head strong,.zone-domain-strip span{font-size:12px!important}


/* ==========================================================================
   V12 — SCHEMATIC ACCURACY & LAYOUT-INTEGRITY HARDENING
   ========================================================================== */
html,body,.lab-app,.lab-main,.page-content{min-width:0;max-width:100%}
.page-content{overflow-x:clip}
.page-content>*,.dashboard-grid>*,.sport-main-grid>*,.live-setup-grid>*,.device-centre>*,.protocol-detail>*,.protocol-detail-head>*,.sop-grid>*,.form-grid>*,.metric-strip>*,.kpi-grid>*,.protocol-grid>*,.panel-title>*,.panel-title>div{min-width:0}
.panel,.wizard-card,.protocol-detail,.protocol-schematic-panel,.data-entry-card,.chart-panel,.device-centre{max-width:100%}
.panel-title{width:100%;max-width:100%;align-items:flex-start}
.panel-title>div{width:100%}
.panel-title p,.panel-title h4,.section-row p,.sport-header p,.protocol-detail-head p,.sop-section p,.sop-section li,.device-card .device-meta,.history-row>*,.saved-protocol>*,.banner,.form-note,.metric-tile small,.kpi-card p{white-space:normal;overflow-wrap:anywhere;word-break:normal}
.table-wrap,.data-entry-table-wrap{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.data-table{max-width:100%}
img,canvas,video,svg{max-width:100%}

/* Live Lab: container-safe device and history layouts. */
.live-setup-grid{grid-template-columns:minmax(0,1.18fr) minmax(300px,.82fr)}
.device-centre{min-width:0;align-content:start}
.device-centre .panel{min-width:0;overflow:visible}
.device-health-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px}
.device-health-row>div{min-width:0}
.device-health-row>div:first-child{grid-column:1/-1;min-width:0}
.device-health-row>div:first-child strong,.device-health-row>div:first-child small,.device-health-row>div:not(:first-child) b,.device-health-row>div:not(:first-child) span{white-space:normal;overflow-wrap:anywhere;word-break:normal}
.device-centre .history-row{grid-template-columns:minmax(82px,.7fr) minmax(0,1.3fr);gap:7px 12px}
.device-centre .history-row>*{min-width:0;white-space:normal;overflow-wrap:anywhere}
.device-centre .history-row .history-result{font-family:"Geist Mono",monospace}
.saved-protocol{max-width:100%;min-width:0;text-align:left}
.saved-protocol strong,.saved-protocol span{white-space:normal;overflow-wrap:anywhere}

/* Protocol schematics encode the protocol shape rather than arbitrary bar height. */
.protocol-schematic-panel{overflow:hidden}
.protocol-schematic-panel .panel-title>span{flex:0 1 auto;max-width:42%;text-align:right;white-space:normal;overflow-wrap:anywhere}
.protocol-schematic-svg{display:block;width:100%;height:auto;min-height:240px;overflow:hidden}
.protocol-schematic-svg .schematic-ramp-line,.protocol-schematic-svg .schematic-step-line,.protocol-schematic-svg .schematic-fv-line{fill:none;stroke:var(--gold);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.protocol-schematic-svg .schematic-area{fill:color-mix(in srgb,var(--gold) 10%,transparent);stroke:none}
.protocol-schematic-svg .schematic-point{fill:var(--panel);stroke:var(--gold);stroke-width:3;vector-effect:non-scaling-stroke}
.protocol-schematic-svg .schematic-guide{stroke:var(--muted-2);stroke-width:2;stroke-dasharray:7 7;vector-effect:non-scaling-stroke}
.protocol-schematic-svg .schematic-arrow{fill:var(--muted-2)}
.protocol-schematic-svg .schematic-trial{fill:color-mix(in srgb,var(--gold) 22%,var(--green));stroke:var(--gold);stroke-width:1.5;vector-effect:non-scaling-stroke}
.protocol-schematic-svg .schematic-recovery{fill:color-mix(in srgb,var(--muted-2) 22%,var(--panel));stroke:var(--muted-2);stroke-width:1;vector-effect:non-scaling-stroke}
.protocol-schematic-svg .schematic-endurance{fill:color-mix(in srgb,var(--green-2) 45%,var(--panel));stroke:var(--green-2);stroke-width:1.5;vector-effect:non-scaling-stroke}
.protocol-schematic-svg .schematic-axis-label{font-weight:650;letter-spacing:.08em}
.protocol-schematic-svg .schematic-label{font-size:10.5px!important;fill:var(--muted)}
.protocol-schematic-svg .schematic-note{font-size:11px!important;fill:var(--ink)}
.protocol-schematic-svg .schematic-footnote{font-size:9.5px!important;fill:var(--muted-2);letter-spacing:.04em}

@media(max-width:1320px){
  .live-setup-grid{grid-template-columns:1fr}
  .device-centre{grid-template-columns:repeat(2,minmax(0,1fr))}
  .device-centre>article:first-child{grid-column:1/-1}
}
@media(max-width:820px){
  .device-centre{grid-template-columns:1fr}
  .device-centre>article:first-child{grid-column:auto}
  .protocol-schematic-panel .panel-title{display:grid;gap:8px}
  .protocol-schematic-panel .panel-title>span{max-width:none;text-align:left}
  .protocol-schematic-svg{min-height:205px}
}
@media(max-width:560px){
  .device-health-row{grid-template-columns:1fr 1fr}
  .device-centre .history-row{grid-template-columns:1fr}
  .protocol-schematic-svg{min-height:185px}
}
/* Final v12 overflow guard: preserve content instead of clipping it. */
.page-content{overflow-x:visible}
.pill,.class-badge,.device-status{white-space:normal;max-width:100%;overflow-wrap:anywhere}

/* ========================================================================
   V13 — VERSIONED PERFORMANCE PROTOCOL EDITOR
   ======================================================================== */
.protocol-detail-actions{align-items:flex-start;flex-wrap:wrap}
.protocol-version-control{display:grid;gap:5px;min-width:205px}
.protocol-version-control>span{font:10px "Geist Mono",monospace;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.protocol-version-control select{min-height:42px;width:100%;border:1px solid var(--line);background:var(--field);color:var(--ink);padding:0 34px 0 11px;font:12px "Geist",sans-serif}
.protocol-editor-modal{width:min(1180px,96vw);max-height:94vh}
.protocol-editor{display:grid;gap:18px;min-width:0}
.protocol-editor-banner{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;border:1px solid var(--line-gold);background:linear-gradient(135deg,var(--panel-2),var(--panel));padding:18px}
.protocol-editor-banner h4{font-size:24px;margin:5px 0 5px}.protocol-editor-banner p{margin:0;color:var(--muted);font-size:13px;max-width:760px}
.protocol-editor-section{border:1px solid var(--line);background:var(--bg-soft);padding:18px;min-width:0}
.protocol-editor-section-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;margin-bottom:14px}
.protocol-editor-section-head h4{font-size:18px;margin:3px 0 0}.protocol-editor-section-head>span,.protocol-editor-help{font-size:11.5px;color:var(--muted);margin:0;max-width:460px;text-align:right}
.protocol-editor-field{margin-top:12px}.protocol-editor-field textarea,.protocol-editor-copy-grid textarea{resize:vertical;min-height:92px;line-height:1.55}
.protocol-editor-field small,.protocol-change-note small{display:block;color:var(--muted);font-size:10.5px;line-height:1.45;margin-top:6px}
.protocol-parameter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.protocol-editor-copy-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
.protocol-editor-copy-grid .field{min-width:0}.protocol-editor-copy-grid textarea{width:100%;max-width:100%}
.protocol-stage-editor{display:grid;gap:11px;margin-top:13px}
.protocol-stage-edit-row{border:1px solid var(--line);background:var(--panel);padding:13px;min-width:0}
.protocol-stage-edit-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:11px}.protocol-stage-edit-head strong{font:11px "Geist Mono",monospace;color:var(--gold);letter-spacing:.08em;text-transform:uppercase}.protocol-stage-edit-head>div{display:flex;gap:5px;flex-wrap:wrap}
.protocol-stage-edit-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.protocol-stage-edit-grid .span-2{grid-column:span 2}
.mini-button{min-height:30px;border:1px solid var(--line);background:var(--bg-soft);color:var(--ink);padding:5px 9px;cursor:pointer;font-size:11px}.mini-button:hover{border-color:var(--line-gold)}.danger-text{color:var(--danger)}
.protocol-editor-preview{border:1px solid var(--line);background:var(--panel);padding:12px;overflow:hidden}.protocol-editor-preview .protocol-schematic-svg{min-height:190px}
.protocol-change-note{border-color:var(--line-gold);background:color-mix(in srgb,var(--gold) 5%,var(--panel))}.protocol-editor-actions{position:sticky;bottom:-18px;background:var(--panel);padding:14px 0 2px;z-index:3}
.protocol-editor-actions .primary{min-width:190px}
@media(max-width:900px){.protocol-parameter-grid,.protocol-editor-copy-grid{grid-template-columns:1fr 1fr}.protocol-stage-edit-grid{grid-template-columns:1fr 1fr}.protocol-editor-section-head{align-items:flex-start}.protocol-editor-section-head>span,.protocol-editor-help{text-align:left}.protocol-editor-banner{display:grid}}
@media(max-width:620px){.protocol-parameter-grid,.protocol-editor-copy-grid,.protocol-stage-edit-grid{grid-template-columns:1fr}.protocol-stage-edit-grid .span-2{grid-column:auto}.protocol-version-control{width:100%}.protocol-detail-actions>*{width:100%}.protocol-editor-section{padding:14px}.protocol-editor-section-head{display:grid}.protocol-editor-actions{position:static}.protocol-stage-edit-head{align-items:flex-start}.protocol-stage-edit-head>div{justify-content:flex-end}}


/* =========================================================
   V14 — layout containment, athlete protocol view, Live Lab
   ========================================================= */
.lab-main,.page-content,.dashboard-grid,.panel,.kpi-card,.metric-tile,.protocol-card,.protocol-library-card,.protocol-detail,.sop-section,.athlete-protocol-card,.live-home,.wizard-card,.device-card,.history-row,.next-test{min-width:0;max-width:100%}
.lab-app :is(h1,h2,h3,h4,h5,p,strong,small,span,li,button,label,td,th){word-break:normal;overflow-wrap:break-word}
.lab-app :is(h1,h2,h3,h4,.panel-title h4,.next-test strong,.protocol-card h4,.protocol-library-card h4){hyphens:auto;text-wrap:balance}
.panel-title h4{font-size:clamp(15px,1.15vw,18px);line-height:1.2;max-width:100%}
.next-test{display:grid;gap:10px}.next-test strong{font-size:clamp(18px,1.6vw,24px);line-height:1.05}.next-test p{font-size:12px!important;line-height:1.45;margin:0}.next-test .small-button{width:100%;white-space:normal}
.dashboard-grid>.span-3,.dashboard-grid>.span-6{min-width:0}
.chart-toolbar,.chart-panel-actions,.sport-actions,.action-row{flex-wrap:wrap}

/* clickable sport protocol cards */
.protocol-card-button{appearance:none;width:100%;text-align:left;color:var(--ink);font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:stretch}
.protocol-card-button:hover,.protocol-card-button:focus-visible{border-color:var(--line-gold);background:var(--panel-2);outline:none}
.protocol-open-label{display:block;margin-top:auto;padding-top:18px;color:var(--gold-2);font:11px "Geist Mono",monospace;letter-spacing:.04em}

/* explicit time entry */
.time-input{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.time-input.two{grid-template-columns:repeat(3,minmax(0,1fr))}
.time-cell{display:flex;flex-direction:column;align-items:stretch;border:0;background:transparent;gap:6px;min-width:0}
.time-cell span{order:0;padding:0!important;font:10px "Geist Mono",monospace!important;letter-spacing:.06em;color:var(--muted)!important}
.time-cell input{order:1;border:1px solid var(--line)!important;background:var(--bg)!important;width:100%;min-width:0;padding:12px!important}

/* athlete-facing protocols */
.athlete-protocol-detail .protocol-detail-head>div:first-child>p{max-width:800px;font-size:14px!important;line-height:1.65}
.athlete-protocol-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:16px 0}
.athlete-protocol-card{border:1px solid var(--line);background:var(--panel);padding:20px}
.athlete-protocol-card ul{margin:14px 0 0;padding-left:20px;display:grid;gap:9px}
.athlete-protocol-card li,.athlete-protocol-card p{font-size:14px!important;line-height:1.58;color:var(--muted)}
.athlete-protocol-card li::marker{color:var(--gold)}
.athlete-stage-table{margin-top:14px}
.protocol-technical-details{border:1px solid var(--line);background:var(--panel);margin-top:16px}
.protocol-technical-details>summary{cursor:pointer;padding:16px 18px;font-weight:650;font-size:13px;color:var(--ink)}
.protocol-technical-details[open]>summary{border-bottom:1px solid var(--line)}
.protocol-technical-details .sop-grid{padding:14px}
.protocol-expanded-mode .lab-sidebar,.protocol-expanded-mode .lab-topbar{display:none!important}
.protocol-expanded-mode .lab-shell{grid-template-columns:1fr!important}
.protocol-expanded-mode .lab-main{grid-column:1!important;width:min(1540px,100%);margin:0 auto;padding:24px 32px}
.protocol-expanded-mode .protocol-detail-actions{position:sticky;top:10px;z-index:20;background:color-mix(in srgb,var(--panel) 94%,transparent);padding:8px;border:1px solid var(--line)}
.protocol-library-card .action-row button{flex:1;min-width:120px}

/* Live Lab v14 — patterns carried over from SIP Physiology Lab desktop package */
.live-performance-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.live-performance-summary article{border:1px solid var(--line);background:var(--panel);padding:14px;min-width:0}
.live-performance-summary span{display:block;font:10px "Geist Mono",monospace;letter-spacing:.08em;color:var(--muted-2)}
.live-performance-summary strong{display:block;margin-top:8px;font-size:18px;line-height:1.1}
.live-performance-summary small{display:block;margin-top:6px;font-size:11px;line-height:1.4;color:var(--muted)}
.live-feedback{border:1px solid var(--line-gold);background:color-mix(in srgb,var(--gold) 6%,var(--panel));padding:12px 14px;font-size:13px;line-height:1.45}
.live-target-gauge{height:34px;margin-top:18px;border:1px solid var(--line);background:linear-gradient(90deg,color-mix(in srgb,var(--warn) 10%,var(--bg)),color-mix(in srgb,var(--ok) 12%,var(--bg)) 40%,color-mix(in srgb,var(--ok) 12%,var(--bg)) 60%,color-mix(in srgb,var(--warn) 10%,var(--bg)));position:relative}
.live-target-gauge>i{position:absolute;top:8px;font:8px "Geist Mono",monospace;color:var(--muted);font-style:normal}.live-target-gauge .target-low{left:7px}.live-target-gauge .target-center{left:50%;transform:translateX(-50%)}.live-target-gauge .target-high{right:7px}
.live-target-gauge>b{position:absolute;top:3px;left:50%;width:3px;height:26px;background:var(--gold);box-shadow:0 0 0 2px color-mix(in srgb,var(--gold) 20%,transparent);transform:translateX(-50%);transition:left .18s linear}
.live-trace-pane{width:100%;border-top:1px solid var(--line);padding-top:12px}.live-trace-pane:first-child{border-top:0;padding-top:0}.live-trace-label{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:6px}.live-trace-label strong{font-size:12px}.live-trace-label span{font-size:12px;color:var(--muted)}
.device-card,.device-health-row{overflow:visible}.device-card>div,.device-health-row>div{min-width:0}.device-card .action-row{justify-content:flex-end}.device-meta{white-space:normal!important;overflow-wrap:break-word}
body.lab-mode .live-performance-summary{grid-template-columns:repeat(4,minmax(0,1fr))}
body.lab-mode .stage-hero strong{font-size:clamp(58px,8vw,110px)}
body.lab-mode .live-metric strong{font-size:clamp(28px,4vw,54px)}
body.lab-mode .live-feedback{font-size:16px}

/* wider-screen safeguards */
@media(max-width:1180px){
  .dashboard-grid>.span-6{grid-column:span 12}
  .dashboard-grid>.span-3{grid-column:span 6}
  .live-performance-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .athlete-protocol-grid{grid-template-columns:1fr}
}
@media(max-width:760px){
  .dashboard-grid>.span-3{grid-column:span 12}
  .time-input{grid-template-columns:repeat(3,minmax(0,1fr))}
  .live-performance-summary{grid-template-columns:1fr}
  .protocol-expanded-mode .lab-main{padding:14px}
}
body.lab-mode .premium-live-svg-v31 .chart-axis,body.lab-mode .premium-live-svg-v31 .live-time-tick{font-size:17px!important}
body.lab-mode .premium-live-svg-v31 .live-axis-heading{font-size:16px!important}
@media(max-width:760px){
  body.lab-mode .premium-live-svg-v31 .chart-axis,body.lab-mode .premium-live-svg-v31 .live-time-tick{font-size:21px!important}
  body.lab-mode .premium-live-svg-v31 .live-axis-heading{font-size:19px!important}
}

/* V14.1 — Overview organisation and universal card containment */
.overview-chart-panel{min-height:330px}
.overview-chart-panel .chart-wrap{min-height:210px}
.overview-chart-panel .empty-state{width:min(100%,520px);min-height:165px;margin-top:6px}
.overview-chart-panel .chart-toolbar{justify-content:flex-start;align-items:flex-start;gap:10px}
.overview-chart-panel .chart-toolbar .segmented{flex-wrap:wrap}
.dashboard-grid>.panel{overflow:hidden}
.dashboard-grid>.panel :is(h3,h4,strong,p,span,small,button){max-width:100%}
.protocol-grid>*{min-width:0}
@media(max-width:1180px){.overview-chart-panel{grid-column:span 12}.overview-chart-panel .chart-wrap{min-height:190px}}

/* =========================================================
   V15 — legal visual alignment, SIP branding, tutorial
   ========================================================= */
.auth-intro{position:relative;isolation:isolate}
.auth-brand-roundel{width:clamp(86px,10vw,142px);height:auto;object-fit:contain;margin:0 0 22px;filter:drop-shadow(0 14px 34px rgba(0,0,0,.32));position:relative;z-index:1}
body[data-theme="light"] .auth-brand-roundel{filter:drop-shadow(0 12px 28px rgba(15,53,40,.16))}
.dashboard-hero-copy{position:relative;overflow:hidden;isolation:isolate;padding-right:clamp(0px,12vw,150px)}
.dashboard-brand-emblem{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:clamp(96px,10vw,148px);height:auto;object-fit:contain;opacity:.23;filter:saturate(.9) contrast(1.05);pointer-events:none;z-index:-1}
body[data-theme="light"] .dashboard-brand-emblem{opacity:.14}
.tutorial-button{font-weight:800}
.tutorial-welcome{display:grid;grid-template-columns:96px minmax(0,1fr);gap:20px;align-items:center}.tutorial-welcome img{width:96px;height:96px;object-fit:contain}.tutorial-welcome h4{font-size:22px;margin:10px 0 8px}.tutorial-welcome p{font-size:13px;line-height:1.55;color:var(--muted);margin:0}.tutorial-welcome .banner{color:var(--gold-2);font:10px "Geist Mono",monospace;letter-spacing:.08em}
.tutorial-walkthrough-layer{position:fixed;inset:0;z-index:1000;pointer-events:none}
.tutorial-spotlight{position:fixed;border:2px solid var(--gold);box-shadow:0 0 0 4px color-mix(in srgb,var(--gold) 18%,transparent),0 12px 40px rgba(0,0,0,.34);border-radius:7px;transition:left .16s ease,top .16s ease,width .16s ease,height .16s ease;pointer-events:none;background:color-mix(in srgb,var(--gold) 4%,transparent)}
.tutorial-card{position:fixed;background:var(--panel);border:1px solid var(--line-gold);box-shadow:var(--shadow);padding:20px;pointer-events:auto;color:var(--ink);max-width:calc(100vw - 28px)}
.tutorial-progress{display:flex;justify-content:space-between;gap:12px;align-items:center;color:var(--gold);font:9px "Geist Mono",monospace;letter-spacing:.1em}.tutorial-progress b{color:var(--muted);font-weight:500}.tutorial-card h3{margin:16px 0 8px;font-size:22px;letter-spacing:-.035em}.tutorial-card p{margin:0;color:var(--muted);font-size:13px;line-height:1.58}.tutorial-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:20px}.tutorial-actions .primary,.tutorial-actions .secondary{min-width:92px}.tutorial-route{margin-top:10px;padding:7px 9px;border:1px solid var(--line);background:var(--surface-soft);color:var(--muted);font:9px "Geist Mono",monospace;letter-spacing:.1em}.tutorial-menu-head small{color:var(--muted);font-size:11px;line-height:1.45}
@media(max-width:760px){.auth-brand-roundel{width:86px;margin-bottom:18px}.dashboard-hero-copy{padding-right:0;padding-top:82px}.dashboard-brand-emblem{top:8px;right:0;transform:none;width:84px;opacity:.2}.tutorial-welcome{grid-template-columns:72px minmax(0,1fr)}.tutorial-welcome img{width:72px;height:72px}.tutorial-card{left:14px!important;right:14px!important;width:auto!important}.tutorial-actions>*{flex:1}}

/* V16 — FUNCTIONAL QA, CALCULATORS, EXERCISE LIBRARY */
.lab-app button,.lab-app a,.lab-app input,.lab-app select,.lab-app textarea{max-width:100%;box-sizing:border-box}.lab-app button{white-space:normal;overflow-wrap:anywhere}
.action-row,.sport-actions,.protocol-detail-actions,.modal-actions,.live-quick-actions{max-width:100%}.action-row>*{flex:0 1 auto}
.profile-grid aside .action-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.profile-grid aside .action-row .danger-button{grid-column:1/-1}
.blank-chart{width:100%;min-height:270px}.blank-chart svg{width:100%;height:auto;display:block}.blank-chart-bg{fill:color-mix(in srgb,var(--panel) 96%,var(--bg));stroke:var(--line)}.blank-axis{stroke:var(--muted-2)}.blank-ghost-line{fill:none;stroke:color-mix(in srgb,var(--gold) 30%,transparent);stroke-width:2;stroke-dasharray:7 8}.blank-chart-title{fill:var(--ink);font:600 14px "Geist",sans-serif}.blank-chart-note{fill:var(--muted);font:10px "Geist",sans-serif}
.calculator-hero{border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in srgb,var(--green) 8%,var(--panel)),var(--panel));padding:24px;margin-bottom:14px}.calculator-hero h3{font-size:30px;margin:6px 0}.calculator-hero p{max-width:860px;color:var(--muted);line-height:1.6}
.calculator-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.calculator-card{overflow:hidden}.calculator-card>h3{font-size:23px;margin:7px 0 18px}.calc-rows{display:grid;gap:7px;margin:12px 0}.calc-row{display:grid;grid-template-columns:minmax(100px,1fr) minmax(100px,1fr) auto;gap:7px;align-items:end}.calc-row:has(.calc-h){grid-template-columns:minmax(110px,1.2fr) repeat(3,minmax(70px,.7fr)) auto}.calc-row label{font-size:12px;color:var(--muted);display:grid;gap:5px}.calc-row input{min-height:40px;border:1px solid var(--line);background:var(--field);color:var(--ink);padding:8px}
.calculator-output{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0}.calculator-output>div,.prediction-grid>div{border:1px solid var(--line);padding:12px;background:color-mix(in srgb,var(--gold) 3%,var(--panel))}.calculator-output span,.prediction-grid span{display:block;font:9px "Geist Mono",monospace;color:var(--muted-2)}.calculator-output strong,.prediction-grid strong{display:block;font-size:22px;margin-top:6px}.calculator-output small,.prediction-grid small{color:var(--muted)}.calculator-graph{width:100%;height:auto;min-height:260px;background:linear-gradient(180deg,color-mix(in srgb,var(--gold) 2%,var(--panel)),var(--panel));border:1px solid var(--line)}
.time-labelled,.race-time-grid{display:grid;grid-template-columns:1.2fr repeat(3,1fr);gap:7px;align-items:center}.time-labelled span{font:9px "Geist Mono",monospace;color:var(--muted-2)}.race-time-grid input{min-height:42px;border:1px solid var(--line);background:var(--field);color:var(--ink);padding:8px}.prediction-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0}
.exercise-library-section{margin-top:18px;border:1px solid var(--line);background:var(--panel);padding:20px}.exercise-library-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end}.exercise-library-head h3{font-size:28px;margin:6px 0}.exercise-library-head p{max-width:760px;color:var(--muted);line-height:1.6}.exercise-count{font:11px "Geist Mono",monospace;color:var(--gold)}.exercise-toolbar{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:8px;margin:14px 0}.exercise-toolbar input,.exercise-toolbar select{min-height:44px;border:1px solid var(--line);background:var(--field);color:var(--ink);padding:9px 11px}.exercise-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;max-height:720px;overflow:auto}.exercise-card{border:1px solid var(--line);padding:13px;display:grid;gap:7px}.exercise-card>span{font:8px "Geist Mono",monospace;color:var(--gold)}.exercise-card h4{margin:0;font-size:15px}.exercise-card p{margin:0;color:var(--muted);font-size:11px}.exercise-card small{color:var(--muted-2)}.exercise-source{font-size:12px;color:var(--muted);margin:14px 0 0}.exercise-source a{color:var(--gold)}
html.protocol-expanded-root,html.protocol-expanded-root body{overflow:hidden!important}body.protocol-expanded-mode .lab-sidebar,body.protocol-expanded-mode .lab-topbar,body.protocol-expanded-mode .mobile-overlay{display:none!important}body.protocol-expanded-mode .lab-app{display:block!important;position:fixed!important;inset:0!important;z-index:900!important;background:var(--bg)!important;overflow:hidden!important}body.protocol-expanded-mode .lab-main{display:block!important;width:100%!important;height:100vh!important;max-width:none!important;margin:0!important;padding:0!important;overflow:hidden!important}body.protocol-expanded-mode .page-content{width:100%!important;max-width:none!important;height:100vh!important;overflow:auto!important;padding:24px!important;margin:0!important}body.protocol-expanded-mode .protocol-detail{max-width:1500px!important;width:100%!important;margin:0 auto!important}body.protocol-expanded-mode .protocol-detail-head{position:sticky;top:0;z-index:30}
.protocol-schematic-svg .schematic-note{paint-order:stroke;stroke:var(--panel);stroke-width:4px;stroke-linejoin:round}.protocol-schematic-svg .schematic-termination{font-size:11px}
.live-chart-card{background:linear-gradient(180deg,color-mix(in srgb,var(--green) 5%,var(--panel)),var(--panel));border-color:color-mix(in srgb,var(--gold) 22%,var(--line));box-shadow:0 12px 32px rgba(0,0,0,.08)}.live-trace-pane{border:1px solid var(--line);background:linear-gradient(180deg,color-mix(in srgb,var(--gold) 2%,var(--panel)),var(--panel));padding:12px;margin:8px 0}.live-trace-label{display:flex;justify-content:space-between;gap:12px;align-items:center}.live-trace-label strong{font-size:13px}.live-trace-label span{font-size:12px;color:var(--muted)}.live-trace-pane svg{filter:drop-shadow(0 5px 9px rgba(0,0,0,.06))}
body.lab-mode{overflow:hidden!important}body.lab-mode .page-content{height:100vh!important;overflow:hidden!important;padding:10px!important}body.lab-mode .live-test{height:calc(100vh - 20px);display:grid;grid-template-rows:auto auto auto minmax(0,1fr) auto;gap:7px;overflow:hidden}body.lab-mode .live-test-status{padding:8px 12px}body.lab-mode .current-stage-grid{gap:7px}body.lab-mode .stage-hero,body.lab-mode .stage-card{padding:10px 12px}body.lab-mode .stage-hero strong{font-size:clamp(46px,6vh,72px)!important;margin:6px 0}body.lab-mode .stage-card strong{font-size:clamp(24px,3vh,38px);margin:6px 0}body.lab-mode .live-metrics-grid{gap:6px}body.lab-mode .live-metric{padding:8px}body.lab-mode .live-metric strong{font-size:clamp(22px,3vh,34px)!important;margin:4px 0}body.lab-mode .live-performance-summary{display:none!important}body.lab-mode .live-chart-card{min-height:0!important;overflow:hidden;padding:8px}body.lab-mode .live-chart-card .panel-title{display:none}body.lab-mode .live-chart-controls{margin:0 0 4px}body.lab-mode #live-trace{min-height:0!important;height:100%;overflow:hidden;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}body.lab-mode .live-trace-pane{margin:0;padding:6px;min-height:0;overflow:hidden}body.lab-mode .live-trace-pane svg{height:min(24vh,210px);width:100%;display:block}body.lab-mode .live-trace-label span{display:none}body.lab-mode .live-test>article.panel:not(.live-chart-card){display:none!important}body.lab-mode .live-quick-actions{justify-content:center;gap:5px;overflow:hidden}body.lab-mode .live-quick-actions button{padding:7px 9px;font-size:12px}
@media(max-width:1200px){.calculator-grid{grid-template-columns:1fr}.exercise-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:800px){.exercise-toolbar,.exercise-grid{grid-template-columns:1fr 1fr}.calc-row,.calc-row:has(.calc-h){grid-template-columns:1fr 1fr}.calculator-output{grid-template-columns:1fr}}@media(max-width:560px){.exercise-grid,.exercise-toolbar,.prediction-grid{grid-template-columns:1fr}.calc-row,.calc-row:has(.calc-h){grid-template-columns:1fr}.profile-grid aside .action-row{grid-template-columns:1fr}}

/* v16 Live Lab visual depth + one-screen Arena */
.live-dual-pane{grid-column:1/-1;background:linear-gradient(145deg,color-mix(in srgb,var(--green) 5%,var(--panel)),color-mix(in srgb,var(--gold) 3%,var(--panel)));border:1px solid color-mix(in srgb,var(--gold) 34%,var(--line));box-shadow:0 14px 34px rgba(5,24,17,.08),inset 0 1px 0 color-mix(in srgb,var(--panel) 82%,white)}
.premium-live-svg{width:100%;height:auto;display:block;filter:drop-shadow(0 5px 8px rgba(0,0,0,.03))}.live-target-band{fill:color-mix(in srgb,var(--green) 11%,transparent)}.live-target-line{stroke:var(--gold);stroke-width:1.7;stroke-dasharray:7 6}.live-hr-line{fill:none;stroke:#4f8fd6;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round}.live-chart-title{fill:var(--ink);font:650 14px "Geist",sans-serif}.live-hr-label{fill:#4f8fd6}.live-primary-line{stroke-width:3.2}
body.lab-mode #live-trace{grid-template-columns:repeat(3,minmax(0,1fr))!important}body.lab-mode .live-dual-pane{grid-column:span 2}body.lab-mode .live-trace-pane svg{height:min(21vh,185px)!important}body.lab-mode .live-chart-controls{max-height:42px;overflow:auto}body.lab-mode .segmented button{padding:6px 8px;font-size:11px}body.lab-mode .live-test-status h3{font-size:14px}body.lab-mode .live-status-meta{gap:10px}body.lab-mode .live-target-gauge{margin-top:4px}
@media(max-height:760px){body.lab-mode .live-test{grid-template-rows:auto auto auto minmax(0,1fr) auto}body.lab-mode .current-stage-grid{grid-template-columns:1.1fr repeat(3,.8fr)}body.lab-mode .stage-hero strong{font-size:44px!important}body.lab-mode .stage-card strong{font-size:24px!important}body.lab-mode .live-metrics-grid{grid-template-columns:repeat(6,minmax(0,1fr))}body.lab-mode .live-metric strong{font-size:21px!important}body.lab-mode .live-trace-pane svg{height:min(18vh,150px)!important}}
/* Avoid disappearing/cropped actions at all desktop widths */
.action-row,.sport-actions,.protocol-detail-actions,.modal-actions,.live-quick-actions{max-width:100%;min-width:0}.action-row>*,.sport-actions>*,.protocol-detail-actions>*,.modal-actions>*{min-width:0;overflow-wrap:anywhere}.modal{max-width:min(1180px,calc(100vw - 28px));max-height:calc(100vh - 28px)}


/* =========================================================
   V17 — compact empty states, clearer positioning, no oversized blanks
   ========================================================= */
.dashboard-grid,.sport-main-grid,.profile-grid,.code-generator-layout{align-items:start}
.dashboard-grid>.panel,.sport-main-grid>.panel,.profile-grid>.panel{align-self:start}
.chart-panel{min-height:0}
.chart-wrap{min-height:190px;align-items:stretch}
.chart-empty{min-height:170px;padding:20px 22px}
.empty-state{padding:18px 20px;min-height:0}
.empty-state .action-row{margin-top:10px}
.overview-chart-panel{min-height:0!important}
.overview-chart-panel .chart-wrap{min-height:175px!important}
.overview-chart-panel .empty-state{min-height:118px!important;margin-top:4px!important}
.blank-chart{min-height:200px}
.panel{min-width:0}
.panel-title{margin-bottom:10px}
.panel-title p{max-width:760px}
.status-list,.quality-grid,.next-test{align-content:start}
.code-generator-layout{grid-template-columns:minmax(0,1.55fr) minmax(290px,.75fr);gap:14px}
.code-generator-panel,.code-help-panel{height:auto;min-height:0}
.code-help-panel{position:sticky;top:86px}
@media(max-width:1100px){.code-generator-layout{grid-template-columns:1fr}.code-help-panel{position:static}}

/* V19 hardening, onboarding and readability */
:root{--text-xs:11px;--text-sm:12px;--text-body:14px;--text-body-lg:16px;--text-heading-sm:18px}
body{font-size:var(--text-body)}
.sidebar-nav-group-label{padding:15px 18px 5px;font-size:10px;letter-spacing:.16em;color:var(--muted);font-family:var(--mono);text-transform:uppercase}
.onboarding-checklist{margin:0 0 18px}.onboarding-progress{height:4px;background:var(--line);overflow:hidden;margin:4px 0 12px}.onboarding-progress i{display:block;height:100%;background:var(--gold)}
.onboarding-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border:1px solid var(--line)}.onboarding-steps button{min-width:0;min-height:92px;padding:14px;text-align:left;background:transparent;border:0;border-right:1px solid var(--line);display:grid;grid-template-columns:auto 1fr;gap:8px;align-content:start;color:var(--ink)}.onboarding-steps button:last-child{border-right:0}.onboarding-steps button:hover{background:var(--panel-2)}.onboarding-steps b{font-family:var(--mono);color:var(--gold)}.onboarding-steps span{font-weight:650;line-height:1.35}.onboarding-steps small{font-size:9px;color:var(--muted)}.onboarding-steps em{grid-column:2;font-style:normal;font-size:11px;color:var(--muted)}.onboarding-steps .done{opacity:.72}
@media(max-width:980px){.onboarding-steps{grid-template-columns:1fr 1fr}.onboarding-steps button{border-bottom:1px solid var(--line)}}
@media(max-width:600px){.onboarding-steps{grid-template-columns:1fr}.onboarding-steps button{min-height:68px;border-right:0}}

/* V19 navigation hierarchy and pre-login orientation */
.sport-nav .sidebar-nav-group-label{display:block;padding:14px 18px 4px;color:var(--muted);font:600 10px/1.2 var(--mono);letter-spacing:.16em;text-transform:uppercase;pointer-events:none}
.auth-benefits{display:grid;gap:8px;margin:22px 0 10px;max-width:620px}.auth-benefits span{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px;line-height:1.4}.auth-benefits b{min-width:28px;color:var(--gold);font-family:var(--mono);font-size:10px}
@media(max-width:760px){.sport-nav .sidebar-nav-group-label{padding-left:14px}.auth-benefits{display:none}}

/* v25 calculator / persistence QA */
.model-qa,.calculator-validation{display:grid;gap:6px;margin-top:12px;padding:12px 14px;border:1px solid var(--line,#d8d3c8);background:var(--panel-soft,#f5f2ea);font-size:13px;line-height:1.45}
.model-qa strong{font-size:12px;letter-spacing:.08em}.model-qa span,.calculator-validation span{display:block}.model-qa.invalid,.calculator-validation .bad{color:#8e3f34}.calculator-validation .warn,.model-qa.warn{color:#78621d}.model-qa small{font-size:12px;color:var(--muted,#6b726d)}
.history-list button.history-row{width:100%;border:0;background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer}.history-list button.history-row:hover{background:rgba(154,126,55,.07)}.history-row.pending{opacity:.9}.history-row .pill{justify-self:end}
/* v26 model-selection usability */
.field-help{display:block;margin-top:5px;font-size:12px;line-height:1.45;color:var(--muted,#697069)}
.banner.compact{min-height:0;margin:8px 0 12px;padding:10px 12px;font-size:13px;line-height:1.5}
.calculator-output small{display:block;margin-top:3px;font-size:11px;line-height:1.35;color:var(--muted,#697069)}

/* v27 model-aware athlete entry guidance */
.validation.incomplete{border-color:color-mix(in srgb,var(--gold) 45%,transparent);background:color-mix(in srgb,var(--gold) 7%,transparent);color:var(--text);}
.model-recommendation{display:block;margin-top:7px;color:var(--gold);line-height:1.45;}


/* V28 — athlete intelligence, tutorial centre, coach contact, guided testing */
.tutorial-menu-popover{position:fixed;z-index:1200;background:var(--panel);border:1px solid var(--line-gold);box-shadow:var(--shadow);max-height:min(72vh,620px);overflow:auto}
.tutorial-menu-head{padding:15px 16px 12px;border-bottom:1px solid var(--line);display:grid;gap:5px}.tutorial-menu-head span{font:9px "Geist Mono",monospace;letter-spacing:.12em;color:var(--gold)}.tutorial-menu-head strong{font-size:18px;color:var(--ink)}
.tutorial-menu-list{display:grid}.tutorial-menu-list button{border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);padding:13px 16px;text-align:left;display:grid;gap:4px;cursor:pointer}.tutorial-menu-list button:hover,.tutorial-menu-list button:focus-visible{background:color-mix(in srgb,var(--gold) 8%,var(--panel))}.tutorial-menu-list button span{font-weight:750;font-size:13px}.tutorial-menu-list button small{color:var(--muted);font-size:11px;line-height:1.4}
.coach-message-intro h4{font-size:24px;margin:8px 0 6px}.coach-message-intro p{margin:0 0 18px;color:var(--muted);line-height:1.55}.coach-contact-details{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.coach-contact-details>div{border:1px solid var(--line);background:var(--bg);padding:12px;display:grid;gap:4px}.coach-contact-details span{font:9px "Geist Mono",monospace;color:var(--gold);letter-spacing:.1em}.coach-contact-details strong{font-size:13px;overflow-wrap:anywhere}.coach-message-note{font-size:11px;color:var(--muted);line-height:1.55;margin:10px 0 0}
.coach-contact-panel{margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-color:var(--line-gold)}.coach-contact-panel h4{font-size:20px;margin:7px 0}.coach-contact-panel p{margin:0;color:var(--muted);max-width:720px;line-height:1.55}.coach-contact-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.coach-contact-actions a{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.guided-test h3{font-size:30px;margin:10px 0}.guided-lead{color:var(--muted);max-width:760px;line-height:1.55}.guided-test-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.guided-test-grid section{border:1px solid var(--line);background:var(--bg);padding:16px;display:grid;gap:7px}.guided-test-grid section>b{font:11px "Geist Mono",monospace;color:var(--gold)}.guided-test-grid section>span{font:9px "Geist Mono",monospace;color:var(--muted);letter-spacing:.1em}.guided-test-grid section>strong{font-size:15px}.guided-test-grid section p,.guided-test-grid section li{font-size:11px;color:var(--muted);line-height:1.55}.guided-test-grid ul{margin:2px 0 0;padding-left:18px}
.entry-quality-card{margin-top:12px;border:1px solid var(--line-gold);background:color-mix(in srgb,var(--gold) 4%,var(--bg));padding:14px}.entry-quality-head{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center}.entry-quality-head span{font:9px "Geist Mono",monospace;color:var(--gold);letter-spacing:.1em}.entry-quality-head strong{font-size:12px}.entry-quality-head b{font:11px "Geist Mono",monospace;color:var(--muted)}.entry-quality-card ul{margin:10px 0 0;padding-left:18px}.entry-quality-card li{font-size:11px;line-height:1.5;color:var(--muted)}.entry-quality-card>small{display:block;margin-top:10px;color:var(--muted);font-size:10px;line-height:1.5}.entry-quality-flags{display:grid;gap:6px;margin-top:10px}.entry-quality-flags span{font-size:11px;padding:7px 9px;border-left:3px solid var(--gold);background:var(--panel);color:var(--ink)}.entry-next-test{display:grid;gap:5px;margin-top:12px;padding:10px;border:1px dashed var(--line-gold)}.entry-next-test span{font:9px "Geist Mono",monospace;color:var(--gold);letter-spacing:.1em}.entry-next-test strong{font-size:12px;line-height:1.45}.entry-quality-head .high-quality{color:var(--ok)}.entry-quality-head .good-quality{color:var(--gold)}.entry-quality-head .limited-quality,.entry-quality-head .insufficient-quality{color:var(--danger)}
.result-athlete-summary{border:1px solid var(--line-gold);background:color-mix(in srgb,var(--gold) 4%,var(--panel));padding:18px;margin-bottom:14px}.result-athlete-summary h4{font-size:23px;margin:8px 0 14px}.result-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.result-summary-grid>div{background:var(--bg);border:1px solid var(--line);padding:12px;display:grid;gap:6px}.result-summary-grid span{font:9px "Geist Mono",monospace;color:var(--gold);letter-spacing:.08em}.result-summary-grid strong{font-size:12px;line-height:1.5;font-weight:650}
#coach-message-nav i{font-style:normal}.topbar-actions #coach-message-button{font-size:14px}
@media(max-width:760px){.tutorial-menu-popover{left:10px!important;right:10px!important;width:auto!important;max-height:70vh}.coach-contact-details,.guided-test-grid,.result-summary-grid{grid-template-columns:1fr}.coach-contact-panel{display:grid;align-items:start}.coach-contact-actions{width:100%}.coach-contact-actions>*{flex:1}.sport-actions{display:grid;grid-template-columns:1fr 1fr}.sport-actions button{width:100%}}


/* ==========================================================================\n   V30 — ANALYTICAL CHART + LIVE LAB VISUAL UPGRADE\n   ========================================================================== */
.performance-chart-svg{width:100%;height:auto;display:block;overflow:visible}.chart-grid{stroke:color-mix(in srgb,var(--muted-2) 24%,transparent);stroke-width:1;vector-effect:non-scaling-stroke}.chart-grid-vertical{stroke:color-mix(in srgb,var(--muted-2) 14%,transparent)}.chart-axis{font-variant-numeric:tabular-nums}.chart-axis-title{font-weight:650;letter-spacing:.06em;fill:var(--muted)}.chart-line-premium{vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.chart-line-primary.chart-line-premium{stroke-width:2.8}.chart-line-history.chart-line-premium{stroke-width:1.8}.chart-line-best.chart-line-premium{stroke-width:1.8}.chart-area-primary{fill:url(#chartAreaFill);pointer-events:none}.chart-fill-stop-a{stop-color:var(--gold);stop-opacity:.12}.chart-fill-stop-b{stop-color:var(--gold);stop-opacity:0}.chart-point{transition:r .15s ease,stroke-width .15s ease;vector-effect:non-scaling-stroke}.chart-point:hover{r:6;stroke-width:3}.chart-legend-line{stroke-width:2.5;vector-effect:non-scaling-stroke}.chart-event text{paint-order:stroke;stroke:var(--panel);stroke-width:4px;stroke-linejoin:round}.chart-wrap{border-radius:10px}.chart-panel .chart-wrap{background:linear-gradient(180deg,color-mix(in srgb,var(--gold) 1.4%,var(--panel)),transparent)}

.coach-contact-email-only{grid-template-columns:minmax(0,1fr)!important}.coach-contact-email-only>div{max-width:520px}

.live-chart-card{padding:22px!important}.live-chart-controls{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;margin:2px 0 14px}.live-chart-controls .segmented{background:color-mix(in srgb,var(--bg) 58%,transparent);padding:4px;border:1px solid var(--line);border-radius:10px}.live-chart-controls .segmented button{border:0;border-radius:7px;min-height:34px}.live-chart-controls .segmented button.active{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--gold) 65%,transparent);background:color-mix(in srgb,var(--gold) 12%,var(--panel))}
#live-trace{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:stretch}.live-dual-pane{grid-column:1/-1!important;padding:16px!important;border-color:color-mix(in srgb,var(--gold) 42%,var(--line))!important;background:linear-gradient(145deg,color-mix(in srgb,var(--green) 8%,var(--panel)),color-mix(in srgb,var(--gold) 3%,var(--panel)))!important;box-shadow:0 18px 44px rgba(0,0,0,.12)!important}.live-secondary-pane{min-width:0;padding:14px!important}.live-trace-label{align-items:flex-start!important;margin-bottom:8px}.live-trace-label>div{display:grid;gap:3px;min-width:0}.live-trace-label strong{font-size:12px!important;letter-spacing:.055em}.live-trace-label small{font-size:10.5px;color:var(--muted);line-height:1.4}.live-trace-label>span{font:650 12px "Geist Mono",monospace;color:var(--gold-2);white-space:nowrap}.live-trace-label-hero strong{font-size:14px!important}.live-trace-label-hero>span{font-size:13px}.premium-live-svg-v31{min-height:330px;background:transparent;overflow:visible}.live-plot-bg{fill:color-mix(in srgb,var(--bg) 34%,transparent);stroke:color-mix(in srgb,var(--line) 90%,transparent);stroke-width:1}.live-primary-area{fill:url(#livePrimaryArea);pointer-events:none}.live-fill-a{stop-color:var(--gold);stop-opacity:.13}.live-fill-b{stop-color:var(--gold);stop-opacity:0}.live-primary-line{stroke-width:3.5!important;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.live-hr-line{stroke-width:2.7!important;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.live-target-band{fill:color-mix(in srgb,var(--ok) 10%,transparent)!important}.live-target-line{stroke-width:1.8!important;vector-effect:non-scaling-stroke}.live-target-label{fill:var(--gold-2);font:650 10px "Geist Mono",monospace;paint-order:stroke;stroke:var(--panel);stroke-width:4px}.live-axis-heading{font-size:10.5px!important;letter-spacing:.03em}.live-axis-primary{fill:var(--gold-2)!important}.live-axis-hr{fill:#73a7e4!important}.live-time-tick{font-size:10px!important}.live-grid-major{stroke:color-mix(in srgb,var(--muted-2) 22%,transparent)!important}.live-grid-minor{stroke:color-mix(in srgb,var(--muted-2) 11%,transparent)!important}.live-stage-mark line{stroke:color-mix(in srgb,var(--gold) 30%,transparent);stroke-width:1;stroke-dasharray:5 6;vector-effect:non-scaling-stroke}.live-stage-mark text{fill:var(--muted-2);font:9px "Geist Mono",monospace;letter-spacing:.06em;paint-order:stroke;stroke:var(--panel);stroke-width:4px}.live-event-mark line{stroke:color-mix(in srgb,var(--danger) 55%,transparent);stroke-width:1;stroke-dasharray:2 4;vector-effect:non-scaling-stroke}.live-event-mark circle{fill:var(--danger);stroke:var(--panel);stroke-width:2}.live-latest-primary{fill:var(--panel);stroke:var(--gold);stroke-width:3;vector-effect:non-scaling-stroke}.live-latest-hr{fill:var(--panel);stroke:#73a7e4;stroke-width:2.5;vector-effect:non-scaling-stroke}

body.lab-mode #live-trace{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}body.lab-mode .live-dual-pane{grid-column:1/-1!important;padding:7px!important}body.lab-mode .live-dual-pane .premium-live-svg-v31{height:min(30vh,265px)!important;min-height:0!important}body.lab-mode .live-secondary-pane{padding:7px!important}body.lab-mode .live-secondary-pane svg{height:min(16vh,145px)!important}body.lab-mode .live-trace-label{margin-bottom:3px}body.lab-mode .live-trace-label small{display:none}body.lab-mode .live-trace-label>span{font-size:10.5px}

@media(max-width:900px){#live-trace{grid-template-columns:1fr}.live-dual-pane{grid-column:auto!important}.premium-live-svg-v31{min-height:285px}.live-chart-controls{display:grid}.live-chart-controls .segmented{max-width:100%;overflow-x:auto;flex-wrap:nowrap}.live-chart-controls .segmented button{white-space:nowrap}}
@media(max-width:560px){.live-chart-card{padding:14px!important}.premium-live-svg-v31{min-height:245px}.live-trace-label{display:grid;gap:5px}.live-trace-label>span{white-space:normal}.live-secondary-pane{overflow:hidden}.performance-chart-svg{width:100%;min-width:0}}

/* ==========================================================================
   V31 — PERFORMANCE INTELLIGENCE + COACH PARTNERSHIP
   ========================================================================== */
.coach-partnership{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(420px,.85fr);gap:22px;align-items:center;border-color:var(--line-gold);background:linear-gradient(135deg,color-mix(in srgb,var(--gold) 4%,var(--panel)),var(--panel))}.coach-partnership h4{font-size:22px;letter-spacing:-.025em;margin:8px 0}.coach-partnership p{margin:0;color:var(--muted);line-height:1.65;max-width:820px}.coach-boundary-grid{display:grid;gap:8px}.coach-boundary-grid>div{display:grid;gap:5px;padding:12px;border:1px solid var(--line);background:var(--bg)}.coach-boundary-grid span,.passport-head>span,.matrix-cell>span,.digital-athlete-rule strong,.quality-evidence-grid span,.technical-kpis span,.projection-grid span,.change-report-grid article>span{font:9px "Geist Mono",monospace;letter-spacing:.1em;color:var(--gold)}.coach-boundary-grid strong{font-size:11px;line-height:1.45}.coach-boundary-note{margin:0 0 14px;padding:11px 13px;border-left:3px solid var(--gold);background:color-mix(in srgb,var(--gold) 5%,var(--panel));display:grid;gap:5px}.coach-boundary-note strong{font:9px "Geist Mono",monospace;letter-spacing:.11em;color:var(--gold)}.coach-boundary-note span{font-size:11px;color:var(--muted);line-height:1.55}

.performance-passport{margin-top:24px}.performance-passport .section-row>p{max-width:720px}.passport-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.passport-card{padding:15px!important}.passport-head{display:flex;justify-content:space-between;gap:10px;align-items:center;padding-bottom:10px;border-bottom:1px solid var(--line)}.passport-list{display:grid}.passport-row{border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);padding:11px 2px;display:grid;grid-template-columns:minmax(110px,.9fr) minmax(90px,.6fr) minmax(180px,1.4fr);align-items:center;gap:10px;text-align:left;cursor:pointer}.passport-row:hover{background:color-mix(in srgb,var(--gold) 4%,transparent)}.passport-row:last-child{border-bottom:0}.passport-row>span{font-size:11px;color:var(--muted)}.passport-row>strong{font-size:13px}.passport-row>small{font:8px "Geist Mono",monospace;letter-spacing:.055em;color:var(--muted-2);line-height:1.4}.passport-row.current>small{color:var(--ok)}.passport-row.attention>small{color:var(--warn)}.passport-row.missing{cursor:default}.passport-row.missing>strong{color:var(--muted-2)}

.dashboard-grid>.digital-athlete-panel,.dashboard-grid>.performance-matrix{min-width:0}.digital-athlete-panel{grid-column:span 6}.performance-matrix{grid-column:span 6}.digital-athlete-list{display:grid}.digital-athlete-list button{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px 0;border:0;border-bottom:1px solid var(--line);background:none;color:var(--ink);text-align:left;cursor:pointer}.digital-athlete-list button:last-child{border-bottom:0}.digital-athlete-list i,.currency-list i{width:8px;height:8px;border-radius:50%;background:var(--muted-2)}.digital-athlete-list i.current,.currency-list i.current{background:var(--ok);box-shadow:0 0 0 4px color-mix(in srgb,var(--ok) 11%,transparent)}.digital-athlete-list i.attention,.currency-list i.attention{background:var(--warn);box-shadow:0 0 0 4px color-mix(in srgb,var(--warn) 10%,transparent)}.digital-athlete-list i.missing,.currency-list i.missing{background:var(--danger)}.digital-athlete-list span{display:grid;gap:3px}.digital-athlete-list strong{font-size:12px}.digital-athlete-list small{font-size:10px;color:var(--muted);line-height:1.35}.digital-athlete-list b{font:8px "Geist Mono",monospace;color:var(--muted-2);letter-spacing:.08em;text-align:right}.digital-athlete-rule{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center;margin-top:12px;padding:11px;border:1px solid var(--line-gold);background:color-mix(in srgb,var(--gold) 4%,var(--bg))}.digital-athlete-rule span{font-size:10px;color:var(--muted);line-height:1.5}
.performance-matrix-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.matrix-cell{padding:11px;border:1px solid var(--line);background:var(--bg);display:grid;gap:5px}.matrix-cell>strong{font:9px "Geist Mono",monospace;letter-spacing:.055em;color:var(--muted)}.matrix-cell.available>strong{color:var(--ok)}.matrix-cell>small{font-size:10px;color:var(--muted);line-height:1.45}

.overview-intelligence-grid{grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr)}.what-changed-panel{grid-column:auto!important}.measurement-currency-panel{grid-column:auto!important}.change-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.change-grid button{display:grid;gap:5px;padding:12px;border:1px solid var(--line);background:var(--bg);color:var(--ink);text-align:left;cursor:pointer}.change-grid button:hover{border-color:var(--line-gold)}.change-grid span{font:9px "Geist Mono",monospace;color:var(--gold);letter-spacing:.08em}.change-grid strong{font-size:14px}.change-grid small{font-size:10px;color:var(--muted);line-height:1.45}.evidence-caveat{font-size:10px!important;color:var(--muted)!important;line-height:1.55!important;margin:10px 0 0!important}.currency-list{display:grid}.currency-list>div{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.currency-list>div:last-child{border-bottom:0}.currency-list span{display:grid;gap:2px}.currency-list strong{font-size:11px}.currency-list small{font-size:9px;color:var(--muted-2)}.currency-list b{font:8px "Geist Mono",monospace;letter-spacing:.07em;color:var(--muted);text-align:right}

.model-projection-panel{margin:14px 0}.projection-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.projection-grid>div{border:1px solid var(--line);background:var(--bg);padding:12px;display:grid;gap:6px}.projection-grid strong{font-size:18px}.projection-grid small{font:8px "Geist Mono",monospace;color:var(--muted-2);letter-spacing:.055em}.projection-grid small:first-letter{color:var(--gold)}
.lactate-laboratory .threshold-layout{align-items:start}.technical-details{margin-top:14px;border:1px solid var(--line);background:var(--bg)}.technical-details>summary{cursor:pointer;padding:12px 14px;font:9px "Geist Mono",monospace;letter-spacing:.1em;color:var(--gold);list-style:none}.technical-details>summary::-webkit-details-marker{display:none}.technical-details>summary:after{content:" +";float:right}.technical-details[open]>summary:after{content:" −"}.technical-details-body{padding:0 14px 14px}.technical-details .table-wrap{border-top:1px solid var(--line)}

.results-search{display:flex;gap:8px;min-width:min(480px,100%)}.results-search input,.results-search select{background:var(--bg);border:1px solid var(--line);color:var(--ink);padding:9px 10px;min-height:38px}.results-search input{min-width:230px;flex:1}.results-toolbar{align-items:center;flex-wrap:wrap}.change-report-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.change-report-grid article{display:grid;gap:6px;padding:13px;border:1px solid var(--line);background:var(--bg)}.change-report-grid article strong{font-size:16px}.change-report-grid article small{font-size:10px;color:var(--muted)}.change-report-grid article em{font-style:normal;font:9px "Geist Mono",monospace;color:var(--muted-2)}.coach-decision-note,.coach-authority-panel{margin:14px 0;padding:13px;border:1px solid var(--line-gold);background:color-mix(in srgb,var(--gold) 4%,var(--panel));display:grid;gap:5px}.coach-decision-note strong,.coach-authority-panel>strong{font:9px "Geist Mono",monospace;color:var(--gold);letter-spacing:.09em}.coach-decision-note span,.coach-authority-panel p{font-size:10px;color:var(--muted);line-height:1.55;margin:0}

.automated-quality-panel{border:1px solid var(--line);background:var(--panel);padding:15px;margin:12px 0}.quality-title h4{font-size:18px;margin:6px 0}.quality-title p{font-size:10px;color:var(--muted);line-height:1.5;margin:0 0 12px}.quality-evidence-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.quality-evidence-grid>div{display:grid;gap:5px;padding:10px;border:1px solid var(--line);background:var(--bg)}.quality-evidence-grid strong{font-size:11px;line-height:1.4}.quality-flag-list{display:grid;gap:6px;margin-top:10px}.quality-flag-list span{font-size:10px;color:var(--warn);padding:7px 9px;border-left:2px solid var(--warn);background:var(--bg)}
.technical-analysis-block{margin:16px 0;padding-top:14px;border-top:1px solid var(--line)}.technical-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}.technical-kpis>div{display:grid;gap:5px;padding:10px;border:1px solid var(--line);background:var(--bg)}.technical-kpis strong{font-size:12px}.respiratory-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.respiratory-chart-grid>div{min-width:0;border:1px solid var(--line);padding:10px;background:var(--bg)}.respiratory-chart-grid>div>span{display:block;margin-bottom:6px;font:9px "Geist Mono",monospace;color:var(--gold);letter-spacing:.08em}

.tp-boundary-card{margin:16px 0;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(340px,.8fr);gap:20px;align-items:center;border-color:var(--line-gold)}.tp-boundary-card h4{font-size:20px;margin:7px 0}.tp-boundary-card p{font-size:11px;color:var(--muted);line-height:1.6;margin:0}.tp-boundary-grid{display:grid;gap:7px}.tp-boundary-grid span{padding:10px;border:1px solid var(--line);background:var(--bg);font-size:10px;line-height:1.45}.tp-boundary-grid b{display:block;color:var(--gold);font:9px "Geist Mono",monospace;letter-spacing:.08em;margin-bottom:3px}.athlete-documents .panel-title p{max-width:850px}

@media(max-width:1100px){.coach-partnership,.tp-boundary-card{grid-template-columns:1fr}.passport-grid{grid-template-columns:1fr}.digital-athlete-panel,.performance-matrix{grid-column:span 12}.overview-intelligence-grid{grid-template-columns:1fr}.projection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.quality-evidence-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.passport-row{grid-template-columns:1fr auto}.passport-row small{grid-column:1/-1}.performance-matrix-grid,.change-grid,.change-report-grid,.respiratory-chart-grid,.technical-kpis,.quality-evidence-grid{grid-template-columns:1fr}.results-search{display:grid;width:100%;min-width:0}.results-search input{min-width:0}.projection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.coach-boundary-grid{grid-template-columns:1fr}.digital-athlete-list button{grid-template-columns:12px minmax(0,1fr)}.digital-athlete-list b{grid-column:2;text-align:left}.tp-boundary-grid{grid-template-columns:1fr}}
.reassessment-planner{grid-column:span 7}.event-context-panel{grid-column:span 5}.reassessment-list{display:grid}.reassessment-list button{display:grid;grid-template-columns:minmax(150px,.55fr) minmax(0,1.45fr);gap:14px;align-items:center;padding:11px 0;border:0;border-bottom:1px solid var(--line);background:none;color:var(--ink);text-align:left;cursor:pointer}.reassessment-list button:last-child{border-bottom:0}.reassessment-list span{display:grid;gap:3px}.reassessment-list strong{font-size:11px}.reassessment-list small{font-size:9px;color:var(--muted-2)}.reassessment-list b{font-size:10px;color:var(--muted);font-weight:600}.event-context-panel h4{font-size:18px;margin:7px 0 12px}.event-context-panel>div{display:grid;gap:4px;padding:10px 0;border-bottom:1px solid var(--line)}.event-context-panel>div span{font:9px "Geist Mono",monospace;color:var(--gold);letter-spacing:.08em}.event-context-panel>div strong{font-size:11px;line-height:1.5}.event-context-panel p{font-size:10px;color:var(--muted);line-height:1.55;margin:12px 0 0}@media(max-width:1100px){.reassessment-planner,.event-context-panel{grid-column:span 12}}@media(max-width:760px){.reassessment-list button{grid-template-columns:1fr}.reassessment-list b{color:var(--gold-2)}}

/* ==========================================================================
   V32 — LIVE LAB CONSOLIDATION
   Current-state command strip + compact key metrics + stage interval summary.
   ========================================================================== */
.live-test-v32{gap:10px}
.live-command-cluster{display:grid;gap:8px;min-width:0}
.live-now-grid{display:grid;grid-template-columns:minmax(220px,1.2fr) repeat(3,minmax(145px,.7fr));gap:8px;min-width:0}
.live-now-primary,.live-now-cell{border:1px solid var(--line);background:var(--panel);padding:12px 14px;min-width:0;box-shadow:inset 0 1px 0 color-mix(in srgb,var(--panel) 85%,white)}
.live-now-primary{border-color:color-mix(in srgb,var(--gold) 42%,var(--line));background:linear-gradient(145deg,color-mix(in srgb,var(--green) 8%,var(--panel)),color-mix(in srgb,var(--gold) 4%,var(--panel)))}
.live-now-primary>span,.live-now-cell>span{display:block;font:9px "Geist Mono",monospace;letter-spacing:.105em;color:var(--gold)}
.live-now-primary>strong,.live-now-cell>strong{display:block;margin:4px 0 1px;font:650 clamp(25px,2.25vw,38px) "Geist",sans-serif;line-height:1;color:var(--ink);letter-spacing:-.035em}
.live-now-primary>small,.live-now-cell>small{font-size:10px;color:var(--muted);line-height:1.35}.live-now-cell small b{color:var(--ink);font-weight:650}
#live-delta-card[data-state="on-target"] strong{color:var(--ok)}#live-delta-card[data-state="high"] strong,#live-delta-card[data-state="low"] strong{color:var(--warn)}
.live-now-grid .live-target-gauge{margin-top:8px;height:18px}.live-now-grid .live-target-gauge i{font-size:7px}.live-now-grid .live-target-gauge b{width:9px;height:9px}
.live-key-metrics-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;min-width:0}
.live-key-metric{display:grid;grid-template-columns:1fr auto;grid-template-areas:"label unit" "value unit";column-gap:7px;align-items:end;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 62%,var(--panel));padding:8px 10px;min-width:0}
.live-key-metric>span{grid-area:label;font:8px "Geist Mono",monospace;letter-spacing:.08em;color:var(--muted-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-key-metric>strong{grid-area:value;font-size:18px;line-height:1.05;letter-spacing:-.02em;white-space:nowrap}.live-key-metric>small{grid-area:unit;font:8px "Geist Mono",monospace;color:var(--muted-2);padding-bottom:1px;white-space:nowrap}
.live-insight-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.live-insight-strip article{padding:8px 10px;background:color-mix(in srgb,var(--panel) 92%,var(--bg))}.live-insight-strip span{font-size:8px}.live-insight-strip strong{font-size:13px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-insight-strip small{font-size:9px;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.live-feedback-compact{padding:7px 10px;font-size:10px;line-height:1.35;border-left:3px solid var(--gold)}
.live-secondary-signals{border:1px solid var(--line);background:var(--panel)}.live-secondary-signals>summary{cursor:pointer;list-style:none;padding:8px 10px;font:8px "Geist Mono",monospace;letter-spacing:.09em;color:var(--muted);user-select:none}.live-secondary-signals>summary::-webkit-details-marker{display:none}.live-secondary-signals>summary:after{content:" +";float:right;color:var(--gold)}.live-secondary-signals[open]>summary:after{content:" −"}.live-secondary-signals>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:0 8px 8px}
.live-main-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(400px,.8fr);gap:10px;align-items:start;min-width:0}
.live-main-grid>.panel{min-width:0}.live-interval-panel{padding:16px!important;overflow:hidden}.live-interval-panel .panel-title{margin-bottom:8px}.live-interval-panel .panel-title h4{font-size:17px}.live-interval-panel .panel-title p{font-size:9.5px;line-height:1.4;margin-top:3px;color:var(--muted)}
.live-interval-summary{display:grid;gap:5px;max-height:620px;overflow:auto;padding-right:2px;scrollbar-width:thin}
.live-interval-row{display:grid;grid-template-columns:72px repeat(4,minmax(0,1fr));gap:0;border:1px solid var(--line);background:var(--bg);min-width:0}
.live-interval-row>div{display:grid;gap:2px;padding:8px 7px;border-left:1px solid var(--line);min-width:0}.live-interval-row>div:first-child{border-left:0}.live-interval-row span{font:7px "Geist Mono",monospace;letter-spacing:.065em;color:var(--muted-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-interval-row strong{font-size:9.5px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-interval-row.active{border-color:color-mix(in srgb,var(--gold) 58%,var(--line));background:color-mix(in srgb,var(--gold) 5%,var(--panel));box-shadow:inset 3px 0 0 var(--gold)}.live-interval-row.active>div:first-child strong{color:var(--gold-2)}.live-interval-row.complete>div:first-child strong{color:var(--ok)}.live-interval-row.queued{opacity:.58}
.live-chart-card{padding:16px!important}.live-chart-card .panel-title{margin-bottom:8px}.live-chart-controls{margin-bottom:8px!important}.live-chart-controls .segmented button{min-height:29px!important;padding:5px 8px!important;font-size:10px!important}

body.lab-mode .live-test-v32{grid-template-rows:auto auto auto minmax(0,1fr) auto!important;gap:6px!important}
body.lab-mode .live-command-cluster{gap:5px}body.lab-mode .live-now-grid{grid-template-columns:1.2fr repeat(3,.7fr);gap:5px}body.lab-mode .live-now-primary,body.lab-mode .live-now-cell{padding:7px 9px}body.lab-mode .live-now-primary>strong,body.lab-mode .live-now-cell>strong{font-size:clamp(22px,3.1vh,32px)!important;margin:2px 0}body.lab-mode .live-now-grid .live-target-gauge{height:13px;margin-top:4px}body.lab-mode .live-key-metrics-grid{gap:4px}body.lab-mode .live-key-metric{padding:5px 7px}body.lab-mode .live-key-metric>strong{font-size:15px}body.lab-mode .live-insight-strip{display:grid!important;gap:4px}body.lab-mode .live-insight-strip article{padding:5px 7px}body.lab-mode .live-insight-strip strong{font-size:11px;margin-top:2px}body.lab-mode .live-insight-strip small{display:none}body.lab-mode .live-feedback-compact,body.lab-mode .live-secondary-signals{display:none!important}
body.lab-mode .live-main-grid{grid-template-columns:minmax(0,1.6fr) minmax(350px,.7fr);gap:6px;height:100%;min-height:0;overflow:hidden}body.lab-mode .live-chart-card,body.lab-mode .live-interval-panel{height:100%;min-height:0;overflow:hidden;padding:7px!important}body.lab-mode .live-interval-panel{display:flex;flex-direction:column}body.lab-mode .live-interval-panel .panel-title{margin-bottom:4px}body.lab-mode .live-interval-panel .panel-title p{display:none}body.lab-mode .live-interval-summary{min-height:0;max-height:none;overflow:auto;gap:3px}body.lab-mode .live-interval-row{grid-template-columns:58px repeat(4,minmax(0,1fr))}body.lab-mode .live-interval-row>div{padding:5px 4px}body.lab-mode .live-interval-row span{font-size:6px}body.lab-mode .live-interval-row strong{font-size:8px}body.lab-mode .live-chart-card .panel-title{display:none}body.lab-mode .live-chart-controls{margin:0 0 3px!important;max-height:34px!important}body.lab-mode #live-trace{height:calc(100% - 38px)!important;min-height:0!important;overflow:hidden!important}body.lab-mode .live-dual-pane .premium-live-svg-v31{height:min(28vh,245px)!important}body.lab-mode .live-secondary-pane svg{height:min(13vh,120px)!important}

@media(max-width:1180px){.live-main-grid{grid-template-columns:1fr}.live-interval-summary{max-height:360px}.live-now-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.live-now-primary{grid-column:span 1}.live-key-metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.live-now-grid{grid-template-columns:1fr 1fr}.live-now-primary{grid-column:1/-1}.live-key-metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.live-insight-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.live-secondary-signals>div{grid-template-columns:repeat(2,minmax(0,1fr))}.live-interval-row{grid-template-columns:72px 1fr 1fr}.live-interval-row>div:nth-child(4),.live-interval-row>div:nth-child(5){border-top:1px solid var(--line)}.live-interval-row>div:nth-child(4){grid-column:2}.live-interval-row>div:nth-child(5){grid-column:3}}
@media(max-width:520px){.live-now-grid{grid-template-columns:1fr}.live-now-primary{grid-column:auto}.live-key-metrics-grid{grid-template-columns:1fr 1fr}.live-insight-strip{grid-template-columns:1fr 1fr}.live-interval-row{grid-template-columns:64px 1fr}.live-interval-row>div:nth-child(n+3){border-top:1px solid var(--line)}.live-interval-row>div:nth-child(odd):not(:first-child){grid-column:1}.live-interval-row>div:nth-child(even){grid-column:2}.live-main-grid{gap:8px}}
.live-review-key-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}.live-review-key-grid>article{border:1px solid var(--line);background:var(--panel);padding:13px;display:grid;gap:5px}.live-review-key-grid span{font:8px "Geist Mono",monospace;letter-spacing:.09em;color:var(--gold)}.live-review-key-grid strong{font-size:22px;letter-spacing:-.025em}.live-review-key-grid small{font-size:9px;color:var(--muted)}.live-review-interval-summary{max-height:none}.live-review-intervals{min-width:0}
@media(max-width:900px){.live-review-key-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.live-review-key-grid{grid-template-columns:1fr 1fr}.live-review-key-grid strong{font-size:17px}}


/* ==========================================================================
   V38 — PERFORMANCE ARENA FIGURE SYSTEM
   Full-canvas plotting, stronger hierarchy and readable interval summaries.
   ========================================================================== */
.live-chart-card{display:flex;flex-direction:column;min-height:500px}
.live-chart-card #live-trace{flex:1;min-height:400px;align-content:stretch}
#live-trace>.live-empty-pane,#live-trace>.blank-chart{grid-column:1/-1;min-width:0}
.live-empty-pane{display:flex;flex-direction:column;min-height:430px}
.live-empty-pane .blank-chart{flex:1;min-height:0}
.blank-chart{width:100%;min-width:0}
.blank-chart svg{display:block;width:100%;height:auto;min-height:360px}
.live-dual-pane{display:flex;flex-direction:column;min-height:440px}
.live-dual-pane .premium-live-svg-v31{flex:1;width:100%;height:auto;min-height:420px}
.premium-live-svg-v31 .chart-axis{font-size:12px!important}
.premium-live-svg-v31 .live-time-tick{font-size:12.5px!important;font-weight:600}
.premium-live-svg-v31 .live-axis-heading{font-size:13px!important;font-weight:600}
.premium-live-svg-v31 .live-target-label{font-size:12px!important}
.premium-live-svg-v31 .live-stage-mark text{font-size:11px!important;font-weight:600}
.premium-live-svg-v31 .live-chart-title{font-size:17px!important}
.premium-live-svg-v31 .live-primary-line{stroke-width:4.4!important}
.premium-live-svg-v31 .live-hr-line{stroke-width:3.2!important}
.premium-live-svg-v31 .live-target-line{stroke-width:2.2!important}
.premium-live-svg-v31 .live-latest-primary{r:6px}
.blank-chart .chart-axis{font-size:13px!important}
.blank-chart-title{font-size:18px!important;font-weight:650}
.blank-chart-note{font-size:12px!important}

.live-interval-panel{display:flex;flex-direction:column}
.live-interval-summary{flex:1;min-height:0}
.live-interval-row span{font-size:7.5px}
.live-interval-row strong{font-size:10.5px}

body.lab-mode .live-main-grid{grid-template-columns:minmax(0,1.72fr) minmax(365px,.68fr)!important;align-items:stretch!important}
body.lab-mode .live-chart-card{display:flex!important;flex-direction:column!important;height:100%!important;min-height:0!important;padding:9px!important}
body.lab-mode .live-chart-controls{flex:0 0 auto;max-height:none!important;margin:0 0 6px!important;gap:8px!important}
body.lab-mode .live-chart-controls .segmented{gap:4px}
body.lab-mode .live-chart-controls .segmented button{min-height:31px!important;padding:6px 9px!important;font-size:10.5px!important}
body.lab-mode #live-trace{flex:1!important;height:auto!important;min-height:0!important;overflow:hidden!important;display:grid!important;grid-template-columns:1fr!important;grid-template-rows:minmax(0,1fr)!important;gap:7px!important;align-content:stretch!important}
body.lab-mode #live-trace.has-secondary-traces{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-template-rows:minmax(0,2.25fr) minmax(135px,.9fr)!important;overflow:auto!important}
body.lab-mode #live-trace>.live-dual-pane{grid-column:1/-1!important;height:100%!important;min-height:0!important;padding:9px!important;overflow:hidden}
body.lab-mode #live-trace>.live-dual-pane .premium-live-svg-v31{width:100%!important;height:100%!important;min-height:0!important;max-height:none!important;display:block!important}
body.lab-mode #live-trace>.live-empty-pane .blank-chart{height:100%!important;min-height:0!important}
body.lab-mode #live-trace>.live-empty-pane .blank-chart svg{width:100%!important;height:100%!important;min-height:0!important;display:block!important}
body.lab-mode #live-trace.has-secondary-traces>.live-dual-pane{min-height:320px!important}
body.lab-mode #live-trace.has-secondary-traces>.live-secondary-pane{min-height:135px!important;height:100%!important;padding:7px!important;overflow:hidden}
body.lab-mode #live-trace.has-secondary-traces>.live-secondary-pane svg{width:100%!important;height:calc(100% - 30px)!important;min-height:100px!important;max-height:none!important}
body.lab-mode .live-trace-label{flex:0 0 auto;margin-bottom:5px!important;gap:12px}
body.lab-mode .live-trace-label strong{font-size:12px!important}
body.lab-mode .live-trace-label-hero strong{font-size:14px!important}
body.lab-mode .live-trace-label small{display:block!important;font-size:9.5px!important;line-height:1.3}
body.lab-mode .live-trace-label>span{font-size:11px!important}

body.lab-mode .live-interval-panel{padding:9px!important}
body.lab-mode .live-interval-panel .panel-title{margin-bottom:7px!important}
body.lab-mode .live-interval-panel .panel-title h4{font-size:18px!important;line-height:1.05}
body.lab-mode .live-interval-panel .section-kicker{font-size:8px!important}
body.lab-mode .live-interval-summary{gap:5px!important;padding-right:3px}
body.lab-mode .live-interval-row{grid-template-columns:66px .82fr 1fr 1.12fr 1.12fr!important;min-height:48px}
body.lab-mode .live-interval-row>div{padding:7px 6px!important;align-content:center}
body.lab-mode .live-interval-row span{font-size:7px!important;line-height:1.2}
body.lab-mode .live-interval-row strong{font-size:9.5px!important;line-height:1.25}
body.lab-mode .live-interval-row.active{box-shadow:inset 4px 0 0 var(--gold)}

@media(max-width:1180px){
  .live-chart-card{min-height:430px}
  .live-chart-card #live-trace{min-height:330px}
  .live-dual-pane{min-height:360px}
}

/* v40 — protocol-to-live guidance + route-safe UI */
.live-loaded-protocol{
  border:1px solid color-mix(in srgb,var(--gold) 55%,var(--line));
  background:linear-gradient(145deg,color-mix(in srgb,var(--panel) 90%,var(--gold) 10%),var(--panel));
  padding:22px;
  margin:0 0 18px;
}
.live-loaded-protocol-head{display:flex;gap:24px;align-items:flex-start;justify-content:space-between;margin-bottom:18px}
.live-loaded-protocol-head h3{margin:5px 0 7px;font-size:28px;line-height:1.05}
.live-loaded-protocol-head p{margin:0;max-width:860px;color:var(--muted);line-height:1.55}
.live-loaded-protocol-head>div:last-child{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.live-protocol-guidance-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.live-protocol-guidance-grid>div{border:1px solid var(--line);padding:14px;background:color-mix(in srgb,var(--panel) 94%,transparent)}
.live-protocol-guidance-grid span,.protocol-plan-total span,.live-stage-guide span{display:block;font:600 10px/1.25 var(--mono);letter-spacing:.13em;color:var(--gold);margin-bottom:8px}
.live-protocol-guidance-grid ul,.live-device-guide ul{margin:0;padding-left:17px;color:var(--text);font-size:12px;line-height:1.5}
.live-protocol-guidance-grid li+li,.live-device-guide li+li{margin-top:5px}
.protocol-locked-step .field-note{margin:10px 0 0;color:var(--muted);font-size:11px;line-height:1.45}
.live-loaded-stage-plan{border:1px solid var(--line);overflow:hidden}
.live-loaded-stage-plan>div{display:grid;grid-template-columns:42px minmax(0,1fr) 78px;gap:12px;align-items:center;padding:11px 13px;border-bottom:1px solid var(--line)}
.live-loaded-stage-plan>div:last-child{border-bottom:0}
.live-loaded-stage-plan b{font:700 11px/1 var(--mono);color:var(--gold)}
.live-loaded-stage-plan span{min-width:0}.live-loaded-stage-plan span strong{display:block;font-size:12px;margin-bottom:3px}.live-loaded-stage-plan span small{display:block;color:var(--muted);font-size:10px;line-height:1.35;white-space:normal}
.live-loaded-stage-plan em{font:600 11px/1 var(--mono);font-style:normal;text-align:right;color:var(--text)}
.protocol-plan-total{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:10px;padding:10px 12px;border:1px solid var(--line);background:color-mix(in srgb,var(--gold) 6%,transparent)}
.protocol-plan-total span{margin:0}.protocol-plan-total strong{font:700 13px/1 var(--mono)}
.live-device-guide{margin:0 0 12px;padding:12px 14px;border:1px solid var(--line);background:color-mix(in srgb,var(--gold) 5%,transparent)}
.live-device-guide>strong{display:block;margin-bottom:8px;font-size:12px}
.start-protocol-preview{display:grid;gap:6px;margin:14px 0 0;max-height:270px;overflow:auto;border:1px solid var(--line);padding:8px}
.start-protocol-preview>div{display:grid;grid-template-columns:28px minmax(0,1fr);gap:4px 10px;padding:7px 8px;border-bottom:1px solid var(--line)}
.start-protocol-preview>div:last-child{border-bottom:0}.start-protocol-preview b{grid-row:1/3;color:var(--gold);font:700 11px/1.4 var(--mono)}.start-protocol-preview span{font-weight:700}.start-protocol-preview small{color:var(--muted)}
.live-stage-guide{display:grid;grid-template-columns:1.15fr .8fr 1.15fr;gap:8px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--gold) 45%,var(--line));background:color-mix(in srgb,var(--panel) 94%,var(--gold) 6%);margin:0 0 8px}
.live-stage-guide>div{padding:8px 10px;border-right:1px solid var(--line);min-width:0}.live-stage-guide>div:last-child{border-right:0}.live-stage-guide span{margin-bottom:4px}.live-stage-guide strong{display:block;font-size:13px;line-height:1.25;white-space:normal}.live-stage-guide small{display:block;margin-top:4px;color:var(--muted);font-size:10px;line-height:1.35;white-space:normal}
.live-now-primary.instruction-target strong{font-size:clamp(20px,2.1vw,34px);line-height:1.05;white-space:normal}.live-now-primary.instruction-target small{max-width:38ch;line-height:1.3}
.live-interval-row>div:first-child small{display:block;margin-top:3px;color:var(--muted);font-size:8px;line-height:1.2}

@media (max-width:1100px){
  .live-protocol-guidance-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .live-stage-guide{grid-template-columns:1fr}
  .live-stage-guide>div{border-right:0;border-bottom:1px solid var(--line)}.live-stage-guide>div:last-child{border-bottom:0}
}
@media (max-width:720px){
  .live-loaded-protocol-head{flex-direction:column}.live-loaded-protocol-head>div:last-child{justify-content:flex-start}
  .live-protocol-guidance-grid{grid-template-columns:1fr}
  .live-loaded-stage-plan>div{grid-template-columns:34px minmax(0,1fr) 64px}
}

/* ========================================================================== 
   V43 — PERFORMANCE ARENA LAYOUT SAFETY
   Guided protocols add a stage-guide row. Give every block an explicit row so
   the command cards can never overflow underneath the chart controls.
   ========================================================================== */
body.lab-mode .live-test-v32.live-test-guided{
  grid-template-rows:auto auto auto auto minmax(0,1fr) auto!important;
}
body.lab-mode .live-test-v32.live-test-guided>.live-stage-guide,
body.lab-mode .live-test-v32.live-test-guided>.live-command-cluster{
  min-height:0;
  position:relative;
  z-index:2;
}
body.lab-mode .live-test-v32.live-test-guided>.live-main-grid{
  min-height:0;
  position:relative;
  z-index:1;
}
body.lab-mode .live-command-cluster{
  overflow:visible;
}
body.lab-mode .live-main-grid{
  grid-template-columns:minmax(0,1fr) minmax(420px,.56fr)!important;
  gap:8px!important;
}
body.lab-mode .live-chart-card{
  isolation:isolate;
}
body.lab-mode .live-chart-controls{
  position:relative;
  z-index:1;
}
body.lab-mode .live-interval-panel{
  min-width:420px;
}
body.lab-mode .live-interval-row{
  grid-template-columns:70px .9fr 1fr 1.08fr 1.08fr!important;
  min-height:54px!important;
}
body.lab-mode .live-interval-row>div{
  padding:7px 7px!important;
}
body.lab-mode .live-interval-row span,
body.lab-mode .live-interval-row strong{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:anywhere;
}
body.lab-mode .live-interval-row span{
  font-size:7.5px!important;
}
body.lab-mode .live-interval-row strong{
  font-size:10px!important;
}

/* Short displays: preserve the command strip and let the graph take the
   remaining height rather than allowing either section to paint over another. */
@media (max-height:820px){
  body.lab-mode .live-test-v32.live-test-guided{gap:5px!important}
  body.lab-mode .live-stage-guide{padding:5px 8px;margin-bottom:4px}
  body.lab-mode .live-stage-guide>div{padding:5px 8px}
  body.lab-mode .live-stage-guide span{font-size:8px;margin-bottom:2px}
  body.lab-mode .live-stage-guide strong{font-size:11px}
  body.lab-mode .live-stage-guide small{font-size:8.5px;margin-top:2px}
  body.lab-mode .live-now-primary,body.lab-mode .live-now-cell{padding:6px 8px}
  body.lab-mode .live-key-metric{padding:4px 6px}
  body.lab-mode .live-interval-row{min-height:48px!important}
}

@media (max-width:1180px){
  body.lab-mode .live-main-grid{
    grid-template-columns:minmax(0,1fr) minmax(360px,.52fr)!important;
  }
  body.lab-mode .live-interval-panel{min-width:360px}
  body.lab-mode .live-interval-row{
    grid-template-columns:64px .85fr 1fr 1fr 1fr!important;
  }
}

/* v45: measured profiles fill the panel; labels remain readable. */
.sport-main-grid>.chart-panel{min-width:0}
.sport-main-grid .chart-wrap{display:block;width:100%;min-height:0}
.profile-figure{margin:0;width:100%;min-width:0}
.profile-chart{display:block;width:100%;height:auto;min-height:330px}
.profile-chart .chart-axis{font-size:19px;fill:var(--muted)}
.profile-chart .chart-axis-title{font-size:20px;fill:var(--ink)}
.profile-current{fill:none;stroke:var(--gold);stroke-width:3;vector-effect:non-scaling-stroke}
.profile-prior{fill:none;stroke:var(--muted-2);stroke-width:2;stroke-dasharray:7 5;vector-effect:non-scaling-stroke}
.profile-model{fill:none;stroke:var(--ok);stroke-width:2.5;stroke-dasharray:3 5;vector-effect:non-scaling-stroke}
.profile-observation.profile-current{fill:var(--gold);stroke:var(--panel);stroke-width:2}
.profile-observation.profile-prior{fill:var(--panel);stroke:var(--muted-2);stroke-width:2;stroke-dasharray:none}
.profile-figure figcaption{display:grid;gap:8px;padding:7px 4px 2px;color:var(--muted);font-size:12px;line-height:1.45}
.profile-figure figcaption p{margin:0;color:var(--ink)}
.profile-figure figcaption small{font-size:11px;color:var(--muted)}
.profile-legend{display:flex;gap:7px 18px;flex-wrap:wrap}
.profile-legend span{display:inline-flex;align-items:center;gap:7px}
.profile-key{display:inline-block;width:20px;border-top:3px solid var(--gold)}
.profile-key-prior{border-top:2px dashed var(--muted-2)}
.profile-key-model{border-top:2px dashed var(--ok)}
.live-interval-row span,.live-interval-row strong{white-space:normal;overflow-wrap:anywhere;text-overflow:clip}
.live-interval-row span{font-size:9px;line-height:1.25}
.live-interval-row strong{font-size:11px;line-height:1.35}
.live-key-metric>span{font-size:9px;color:var(--muted)}
.live-key-metric>strong{overflow:hidden;text-overflow:ellipsis}
.live-trace-pane .chart-axis,.premium-live-svg .chart-axis{font-size:12px}
.live-chart-card #live-trace{width:100%;min-width:0}
.live-chart-card .live-dual-pane .premium-live-svg-v31{width:100%;height:auto;max-height:none}
@media(max-width:760px){
  .profile-chart{min-height:220px}
  .profile-chart .chart-axis{font-size:28px}
  .profile-chart .chart-axis-title{font-size:29px}
  .profile-figure figcaption{font-size:11px}
  body.lab-mode .live-test-v32{height:auto!important;min-height:100vh;overflow:auto!important;grid-template-rows:none!important}
  body.lab-mode .live-main-grid{display:grid;grid-template-columns:minmax(0,1fr)!important;height:auto;overflow:visible}
  body.lab-mode .live-interval-panel{min-width:0;height:auto}
  body.lab-mode .live-chart-card{min-height:0;height:auto;overflow:visible}
  body.lab-mode #live-trace{height:auto!important;min-height:260px!important;overflow:visible!important}
  body.lab-mode .live-interval-row{grid-template-columns:65px repeat(2,minmax(0,1fr))!important}
  body.lab-mode .live-quick-actions{position:sticky;bottom:0;background:var(--bg);z-index:6}
}
@media(max-width:520px){
  .lab-topbar{grid-template-columns:minmax(0,1fr) auto}
  .topbar-title,.topbar-actions{min-width:0}
  .topbar-actions{gap:2px}
  #global-search-button,#profile-button{display:none}
  .topbar-actions .icon-button{min-width:34px;width:34px;height:34px;padding:0;font-size:11px}
}
.section-kicker,.eyebrow{font-size:11px;line-height:1.4}
.chart-axis,.live-time-tick,.live-axis-heading{font-size:13px}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--gold-2);outline-offset:3px}
body[data-contrast="high"]{
  --bg:#fff;--bg-soft:#f4f5f1;--panel:#fff;--panel-2:#f2f4ef;--panel-3:#e9ede6;
  --ink:#0b1910;--muted:#1b3324;--muted-2:#2c4133;--green:#103d2a;--green-2:#175439;
  --gold:#694906;--gold-2:#543600;--line:rgba(0,30,10,.55);--line-gold:rgba(80,49,0,.7);
  --ok:#145b2e;--warn:#654400;--danger:#842017;--shadow:none;
  color-scheme:light;background:#fff!important;color:var(--ink)
}
body[data-contrast="high"] .lab-topbar,body[data-contrast="high"] .lab-sidebar,body[data-contrast="high"] .panel,body[data-contrast="high"] .wizard-card,body[data-contrast="high"] .live-test-v32{background:var(--panel)!important;color:var(--ink);border-color:var(--line)}
body[data-contrast="high"] .lab-noise{display:none}
body[data-contrast="high"] input,body[data-contrast="high"] select,body[data-contrast="high"] textarea{background:#fff!important;color:var(--ink)!important;border:1px solid var(--muted)!important}
body[data-contrast="high"] .chart-axis,body[data-contrast="high"] .chart-axis-title,body[data-contrast="high"] .live-axis-heading{fill:var(--ink)}
body[data-contrast="high"] .chart-grid{stroke:rgba(0,30,10,.25)}
body[data-contrast="high"] .icon-button,body[data-contrast="high"] .secondary{border-color:var(--muted);color:var(--ink)}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
.live-now-primary>span,.live-now-cell>span,.live-key-metric>span,.live-key-metric>small,.live-insight-strip span,.live-secondary-signals>summary{font-size:10px}
.live-now-primary>small,.live-now-cell>small,.live-insight-strip small{font-size:11px}
.live-interval-row span{font-size:10px;white-space:normal;overflow:visible}
.live-interval-row strong{font-size:11px;white-space:normal;overflow:visible;overflow-wrap:anywhere}
body.lab-mode .live-interval-row span{font-size:9px!important}
body.lab-mode .live-interval-row strong{font-size:10px!important}
body.lab-mode .live-stage-guide{min-width:0;max-height:min(18vh,150px);overflow:auto}
body.lab-mode .live-stage-guide small{overflow-wrap:anywhere}
@media(max-height:700px){body.lab-mode .live-stage-guide{max-height:100px}}
body.lab-mode .lab-public-header{display:none!important}
@media(max-width:760px){
  body.lab-mode{overflow:auto!important}
  body.lab-mode .page-content{height:auto!important;min-height:100vh;overflow:visible!important;padding:8px!important}
  body.lab-mode .live-test-v32,body.lab-mode .live-test-v32.live-test-guided{height:auto!important;min-height:100vh;overflow:visible!important;grid-template-rows:none!important}
  body.lab-mode .live-test-status{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
  body.lab-mode .live-status-meta{grid-column:1/-1;grid-row:2;flex-wrap:wrap;font-size:10px}
  body.lab-mode #lab-mode-toggle{max-width:170px;min-width:0;overflow-wrap:normal}
  body.lab-mode .live-stage-guide{grid-template-columns:1fr;max-height:none;overflow:visible}
  body.lab-mode .live-now-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  body.lab-mode .live-now-primary{grid-column:1/-1}
  body.lab-mode .live-now-primary>strong,body.lab-mode .live-now-cell>strong{font-size:clamp(21px,5vw,30px)!important;overflow-wrap:anywhere}
  body.lab-mode .live-key-metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  body.lab-mode .live-insight-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
  body.lab-mode .live-main-grid{display:grid;grid-template-columns:1fr!important;height:auto!important;overflow:visible!important}
  body.lab-mode .live-chart-card{min-height:330px!important;height:auto!important;overflow:visible!important}
  body.lab-mode #live-trace{height:auto!important;min-height:250px!important;overflow:visible!important}
  body.lab-mode #live-trace>.live-dual-pane{min-height:250px!important}
  body.lab-mode .live-interval-panel{min-width:0!important;height:auto!important;overflow:visible!important}
  body.lab-mode .live-interval-summary{max-height:300px;overflow:auto}
  body.lab-mode .live-interval-row{grid-template-columns:72px repeat(2,minmax(0,1fr))!important}
  body.lab-mode .live-quick-actions{position:sticky;bottom:0;z-index:12;background:var(--panel);border-top:1px solid var(--line-gold);padding:8px 2px;overflow-x:auto!important;flex-wrap:nowrap;justify-content:flex-start}
  body.lab-mode .live-quick-actions button{flex:0 0 auto;min-height:40px;white-space:nowrap}
}
/* Final readability pass for compact laptop Arena layouts. */
body.lab-mode .live-interval-row span{font-size:10px!important;line-height:1.3}
body.lab-mode .live-interval-row strong{font-size:11px!important;line-height:1.3}
body.lab-mode .live-stage-guide span{font-size:10px!important}
body.lab-mode .live-stage-guide strong{font-size:12px!important}
body.lab-mode .live-stage-guide small{font-size:10px!important;line-height:1.3}
/* Content-length-safe interval list: each row owns its full text height. */
body.lab-mode .live-interval-summary{display:block!important;overflow-y:auto!important}
body.lab-mode .live-interval-row{height:auto!important;min-height:max-content!important;align-items:stretch}
body.lab-mode .live-interval-row+ .live-interval-row{margin-top:5px}
body.lab-mode .live-interval-row>div{align-content:start!important}
