/* Hallmark · pre-emit critique: P4 H4 E4 S5 R5 V3
   MPL: one restrained Lotz dark system, precise workbench, paper report preview.
   Variety is intentionally limited across routes of the same application. */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--color-paper-2);color:var(--color-ink);font:15px/1.5 var(--font-body);border-top:3px solid var(--color-brand-surface)}
button,input,select,textarea{font:inherit;color:inherit}
button,a,input,select,textarea,summary{touch-action:manipulation}
h1,h2,h3,p{margin:0}
p{max-width:75ch}
a{color:var(--color-accent)}
::selection{background:var(--color-accent);color:var(--color-accent-ink)}
:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Type */
h1{font-size:28px;line-height:1.2;letter-spacing:-.02em}
h2{font-size:18px;line-height:1.3;margin:32px 0 12px}
[role=tabpanel]>h2:first-child,.report-controls h2{margin-top:4px}
h3{font-size:16px;line-height:1.35}
.subtitle,.quiet,.breadcrumb,.field-help,.section-help,.demo-note{color:var(--color-muted)}
.breadcrumb{font-size:13px;margin-bottom:6px}
.subtitle{font-size:14px;margin-top:6px}
.quiet,.field-help,.demo-note{font-size:14px}
.field-help{display:block;font-weight:400;margin-top:6px}
.section-help{margin-bottom:16px}
.error,#save-status.error{color:var(--color-error)}
.error{font-size:14px;margin:8px 0}

/* Controls */
button{cursor:pointer;min-height:44px;padding:9px 16px;border:1px solid var(--color-rule-2);border-radius:var(--radius-control);background:var(--color-paper);color:var(--color-ink);font-size:15px;line-height:1.2;transition:background-color var(--dur-micro),border-color var(--dur-micro)}
button:hover{background:var(--color-paper-2);border-color:var(--color-neutral)}
button:active{background:var(--color-paper-3)}
button:disabled{cursor:default;opacity:.5}
button:disabled:hover{background:var(--color-paper);border-color:var(--color-rule-2)}
.primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink);font-weight:600}
.primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}
.text-button{min-height:44px;padding:0;border:0;background:transparent;color:var(--color-accent);font-size:14px}
.text-button:hover{background:transparent;text-decoration:underline;text-underline-offset:3px}
label{display:block;font-size:14px;font-weight:600;color:var(--color-ink)}
label input,label select,label textarea{display:block;margin-top:6px;font-weight:400}
input,select,textarea{width:100%;min-height:44px;padding:9px 12px;border:1px solid var(--color-rule-2);border-radius:var(--radius-control);background:var(--color-paper);caret-color:var(--color-accent);font-size:16px}
input:hover,select:hover,textarea:hover{border-color:var(--color-neutral)}
input::placeholder,textarea::placeholder{color:var(--color-muted)}
textarea{min-height:88px;resize:vertical}
input[type=checkbox]{width:20px;min-height:20px;margin:0;flex-shrink:0;accent-color:var(--color-accent)}
input[type=range]{min-height:44px;padding:0;border:0;background:transparent;accent-color:var(--color-accent)}
input[type=file]{min-height:56px;padding:9px 10px;border:1px dashed var(--color-rule-2);background:var(--color-paper-2);font-size:14px}
input[type=file]::file-selector-button{min-height:36px;margin-right:12px;padding:6px 14px;border:1px solid var(--color-rule-2);border-radius:var(--radius-control);background:var(--color-paper);color:var(--color-ink);font:inherit;cursor:pointer}
details{margin-top:24px;border-top:1px solid var(--color-rule);padding-top:4px}
summary{display:list-item;min-height:44px;padding:11px 0;cursor:pointer;color:var(--color-accent);font-size:15px;font-weight:600}
details[open]>summary{margin-bottom:12px}

/* Header */
.app-header{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:72px;padding:10px 32px;background:var(--color-paper);border-bottom:1px solid var(--color-rule)}
.brand{display:flex;align-items:center;gap:18px;color:var(--color-ink);text-decoration:none}
.brand img{display:block;width:88px;height:46px;object-fit:contain}
.brand span{padding-left:18px;border-left:1px solid var(--color-rule);font-size:15px;font-weight:700;letter-spacing:.01em;color:var(--color-neutral)}
.demo,.environment-label{padding:4px 10px;border:1px solid var(--color-rule);border-radius:var(--radius-control);font-size:12px;color:var(--color-muted);white-space:nowrap}
.account-area{display:flex;align-items:center;gap:16px}
.profile-menu{position:relative;margin:0;padding:0;border:0}
.profile-menu>summary{display:flex;align-items:center;gap:10px;margin:0;padding:4px 10px 4px 4px;border-radius:var(--radius-control);list-style:none;color:var(--color-ink);font-size:14px}
.profile-menu>summary::-webkit-details-marker{display:none}
.profile-menu>summary:hover,.profile-menu[open]>summary{background:var(--color-paper-2)}
.profile-menu>summary:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}
.profile-avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--color-brand-surface);color:var(--color-accent-ink);font-size:13px;font-weight:700}
.profile-actions{position:absolute;top:calc(100% + 6px);right:0;z-index:var(--z-dropdown);min-width:220px;padding:6px;border:1px solid var(--color-rule);border-radius:var(--radius-surface);background:var(--color-paper);box-shadow:0 8px 24px var(--color-shadow)}
.profile-actions button{display:block;width:100%;border:0;background:transparent;text-align:left;font-size:14px}
.profile-actions button:hover{background:var(--color-paper-2)}
.profile-actions button:nth-child(n+3){color:var(--color-error)}

/* Shell and navigation */
.shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:calc(100vh - 120px)}
.navigation{position:sticky;top:0;align-self:start;display:flex;flex-direction:column;gap:2px;padding:24px 12px;border-right:1px solid var(--color-rule)}
.navigation>button{display:flex;align-items:center;width:100%;padding:10px 14px;border:0;border-left:3px solid transparent;border-radius:0 var(--radius-control) var(--radius-control) 0;background:transparent;color:var(--color-neutral);text-align:left;font-weight:600}
.navigation>button:hover{background:var(--color-paper-3)}
.navigation>button[aria-current=page]{border-left-color:var(--color-accent);background:var(--color-paper);color:var(--color-accent);box-shadow:0 1px 2px var(--color-shadow)}
.nav-context{display:flex;flex-direction:column;gap:4px;margin:24px 2px 0;padding:16px 14px 0;border-top:1px solid var(--color-rule);font-size:13px;color:var(--color-muted)}
.nav-context strong{color:var(--color-ink);font-size:14px}
main{min-width:0;max-width:1320px;padding:24px 32px 48px}
#local-persistence{display:inline-block;margin:0 0 12px;padding:6px 12px;border:1px solid var(--color-rule);border-radius:var(--radius-control);background:var(--color-paper);font-size:13px}
.view{padding:28px 32px 32px;border:1px solid var(--color-rule);border-radius:var(--radius-surface);background:var(--color-paper);box-shadow:0 1px 3px var(--color-shadow)}
.heading-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}
.heading-row>button{flex-shrink:0}
.heading-row.small{align-items:center;margin:28px 0 12px}
footer,.app-version{padding:10px 32px;border-top:1px solid var(--color-rule);font-size:12px;color:var(--color-muted);text-align:right;font-variant-numeric:tabular-nums}

/* Test day list */
.day-context{display:flex;flex-wrap:wrap;gap:12px 40px;padding:14px 18px;border-radius:var(--radius-surface);background:var(--color-paper-2);font-size:15px}
.day-context strong{display:block;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted)}
.toolbar{display:flex;gap:12px;margin:20px 0 12px}
.toolbar input{max-width:420px}
.toolbar select{max-width:220px}
.table-scroll{overflow-x:auto;border:1px solid var(--color-rule);border-radius:var(--radius-surface);-webkit-overflow-scrolling:touch}
table{width:100%;min-width:760px;border-collapse:collapse;text-align:left;font-size:14px}
th{padding:10px 12px;background:var(--color-paper-2);border-bottom:1px solid var(--color-rule);color:var(--color-muted);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
td{padding:14px 12px;border-top:1px solid var(--color-rule);vertical-align:top}
tbody tr:first-child td{border-top:0}
tbody tr:hover td{background:var(--color-paper-2)}
td strong{display:block;font-size:15px}
td .quiet{display:block;margin-top:2px;font-size:13px}
td:first-child{width:72px;font-variant-numeric:tabular-nums}
td:nth-child(4){white-space:nowrap;font-variant-numeric:tabular-nums}
td:last-child{width:110px;text-align:right}
.status{display:inline-block;padding:3px 8px;border-radius:var(--radius-control);background:var(--color-paper-3);color:var(--color-neutral);font-size:12px;font-weight:600;white-space:nowrap}
.status-ready{background:var(--color-success-surface);color:var(--color-success)}
.status-problem{background:var(--color-warning-surface);color:var(--color-warning)}
#test-count{margin-top:12px;font-size:13px}
.empty{padding:28px 12px;color:var(--color-muted);text-align:center}

/* Test form */
.tabs{display:flex;gap:4px;margin-bottom:24px;border-bottom:1px solid var(--color-rule);overflow-x:auto;counter-reset:step}
.tabs button{display:flex;align-items:center;gap:8px;padding:12px 16px 11px;border:0;border-bottom:3px solid transparent;border-radius:0;background:transparent;color:var(--color-neutral);white-space:nowrap}
.tabs button::before{counter-increment:step;content:counter(step);content:counter(step)/"";display:inline-grid;place-items:center;width:22px;height:22px;border:1px solid currentColor;border-radius:var(--radius-control);font-size:12px;font-weight:700}
.tabs button:hover{background:var(--color-paper-2);color:var(--color-ink)}
.tabs button[aria-selected=true]{border-bottom-color:var(--color-accent);color:var(--color-accent);font-weight:600}
.tabs button[aria-selected=true]::before{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink)}
.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 24px;margin:16px 0 20px}
.inline-actions{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 12px}
.product-row{display:flex;align-items:flex-end;gap:12px;margin-bottom:12px}
.product-row label{flex:1}
.product-row button{flex-shrink:0}
.details-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;margin:0 0 16px}
.details-list dt{font-size:12px;color:var(--color-muted)}
.details-list dd{margin:0;font-size:15px}
.file-field{margin-bottom:8px}
#recording-preview{display:block;width:100%;max-height:380px;margin:16px 0;border-radius:var(--radius-surface);background:var(--color-ink)}
#upload-status{margin:8px 0 16px}
.fps-field{max-width:240px;margin:12px 0 20px}
.frame-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.frame-slot{min-width:0;padding:14px;border:1px solid var(--color-rule);border-radius:var(--radius-surface);background:var(--color-paper)}
.frame-slot h3{margin-bottom:10px;font-size:15px}
.frame-preview{position:relative;display:grid;place-items:center;aspect-ratio:4/3;margin-bottom:10px;overflow:hidden;border-radius:var(--radius-control);background:var(--color-ink)}
.frame-preview video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.frame-preview span{padding:20px;color:var(--color-paper-3);font-size:13px;text-align:center}
.frame-slot>label{font-size:13px;font-variant-numeric:tabular-nums}
.frame-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.frame-actions button{flex:1 1 auto;padding:8px 10px;font-size:13px}
.frame-actions button[data-confirm]:not(:disabled){border-color:var(--color-accent);color:var(--color-accent);font-weight:600}
.frame-confirm{margin-top:8px;font-size:13px;color:var(--color-muted)}
.save-row{position:sticky;bottom:0;z-index:var(--z-raised);display:flex;align-items:center;justify-content:flex-end;gap:12px;margin:32px -32px 0;padding:12px 32px;border-top:1px solid var(--color-rule);background:var(--color-paper);box-shadow:0 -8px 16px -12px var(--color-shadow)}
.save-row>span{margin-right:auto;font-size:13px;color:var(--color-muted)}
/* Guided Auswertung steps (scoped to #panel-frames and the analysis workstation). */
.step-nav ol{display:flex;gap:4px;margin:0 0 20px;padding:0;list-style:none;overflow-x:auto}
.step-nav li{flex:1 0 130px;min-width:0}
.step-nav button{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 10px;align-items:center;width:100%;min-height:56px;padding:8px 12px;border:1px solid var(--color-rule);border-radius:var(--radius-control);background:var(--color-paper-2);color:var(--color-neutral);text-align:left}
.step-nav button:hover{background:var(--color-paper-3);color:var(--color-ink)}
.step-nav button[aria-current=step]{border-color:var(--color-accent);background:var(--color-paper);color:var(--color-accent);box-shadow:inset 0 -3px 0 var(--color-accent)}
.step-index{display:inline-grid;place-items:center;grid-row:1/3;width:24px;height:24px;border:1px solid currentColor;border-radius:var(--radius-control);font-size:12px;font-weight:700}
.step-nav button[aria-current=step] .step-index{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink)}
.step-label{font-size:14px;font-weight:600;line-height:1.2;overflow-wrap:break-word}
.step-status{font-size:12px;color:var(--color-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.frames-step>h2,.frames-step .heading-row h2{margin-top:0}
.frames-step .fps-field{max-width:220px;margin:0}
.step-footer{display:flex;justify-content:space-between;gap:12px;margin-top:24px;padding-top:16px;border-top:1px solid var(--color-rule)}
.frame-roles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 14px}
.frame-role{display:flex;align-items:center;gap:10px;min-height:56px;padding:6px 10px;text-align:left}
.frame-role[aria-selected=true]{border-color:var(--color-accent);color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}
.frame-role.is-confirmed .frame-role-state{color:var(--color-success)}
.frame-role img,.frame-role-blank{flex-shrink:0;width:56px;height:42px;border-radius:2px;background:var(--color-paper-3);object-fit:cover}
.frame-role-text{display:grid;min-width:0}
.frame-role-name{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.frame-role-state{font-size:12px;color:var(--color-muted)}
#frame-selectors .frame-slot{padding:0;border:0}
#frame-selectors .frame-preview{aspect-ratio:16/9;max-height:min(60vh,520px)}
.frame-suggest{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px;font-size:13px;color:var(--color-muted)}
.frame-suggest button{min-height:36px;padding:6px 12px;font-size:13px}
.video-analysis{margin:0 0 8px;padding:0}
.video-analysis h3{margin:0 0 10px;font-size:15px}
.video-analysis h4{margin:16px 0 8px;font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted)}
.analysis-head .heading-row{margin-bottom:6px}
.analysis-head h2{font-size:18px}
.analysis-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:8px 0 16px;padding:8px 14px;border:1px solid var(--color-rule);border-radius:var(--radius-control);background:var(--color-paper-2)}
.analysis-toolbar>p{margin:0;font-size:14px}
.analysis-toolbar>button{margin-left:auto}
.analysis-toolbar .analysis-dirty{color:var(--color-warning);font-weight:600}
.analysis-open{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.analysis-chip{min-height:32px;padding:4px 10px;border-color:var(--color-warning);background:var(--color-warning-surface);color:var(--color-warning);font-size:13px;font-weight:600}
.analysis-chip:hover{background:var(--color-paper);border-color:var(--color-warning)}
.video-analysis{display:flex;flex-direction:column;align-items:stretch}
.analysis-workspace,.analysis-side{display:contents}
.video-analysis>.analysis-workspace .analysis-head{order:0}.video-analysis>.analysis-workspace .analysis-toolbar{order:1}.analysis-main{order:2}.analysis-panel{order:3}.video-analysis>.analysis-curve{order:4}.video-analysis>.analysis-result{order:5}
.video-analysis:not(.is-workspace) .analysis-panel{margin-top:12px}
.analysis-main,.analysis-tools,.analysis-more{min-width:0}
.analysis-tools .fields{margin:12px 0}
.analysis-state{margin:0 0 12px;font-size:14px;font-weight:600}
.analysis-issue{margin:0 0 12px;padding:10px 14px;border:1px solid var(--color-warning);border-left-width:1px;border-radius:var(--radius-control);background:var(--color-warning-surface);font-size:14px}
.analysis-issue p{margin:0 0 8px}
.analysis-frame-rows{display:grid;gap:10px}
.analysis-frame-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:end}
.analysis-frame-row>p{margin:0;align-self:center}
.analysis-frame-row label{min-width:0}
.analysis-use-frame,.analysis-show-frame{display:inline-flex;align-items:center;gap:4px;padding:9px 10px;font-size:13px;white-space:nowrap}
.analysis-show-frame{width:44px;justify-content:center;padding:0}
.analysis-icon{flex-shrink:0}
.analysis-fold{margin-top:12px;border-top:1px solid var(--color-rule);padding-top:0}
.analysis-fold>summary{font-size:14px;padding:9px 0}
.analysis-details{margin-top:20px}
.analysis-details .analysis-fold{margin-top:0}
.analysis-result{display:grid;gap:8px}
.analysis-result h3{margin-top:16px}
.analysis-transport{align-items:center}
.analysis-transport>button{flex:0 0 44px;width:44px;padding:0;display:inline-grid;place-items:center}
.analysis-readout{margin:0;font-size:13px;font-variant-numeric:tabular-nums}
.analysis-legend{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:12px;color:var(--color-muted)}
.analysis-legend span::before{content:"";display:inline-block;width:10px;height:10px;margin-right:5px;border:2px solid var(--color-accent);border-radius:50%;vertical-align:-1px}
.analysis-legend .legend-manual::before{border-color:var(--color-warning)}
.analysis-legend .legend-estimate::before{border-style:dashed;border-color:var(--color-accent)}
.analysis-legend .legend-cal::before{border-color:var(--color-neutral)}
.analysis-curve-head{display:flex;flex-wrap:wrap;gap:4px 16px;margin:14px 0 6px;font-size:13px}
.analysis-curve-head .warning{margin:0;font-size:13px}
.analysis-curve-axis{font-size:12px;color:var(--color-muted);font-variant-numeric:tabular-nums}
.analysis-curve-x{display:flex;justify-content:space-between;gap:12px;margin-top:4px}
.curve-initial{stroke:var(--color-success);stroke-width:1.5;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}
.analysis-label{padding:3px 8px;border-radius:var(--radius-control);background:var(--color-warning-surface);color:var(--color-warning);font-size:12px;font-weight:600;white-space:nowrap}
.warning{color:var(--color-warning);font-size:14px;margin:8px 0}
.analysis-facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px 16px;margin:0;font-size:13px}
.analysis-facts dt{color:var(--color-muted)}
.analysis-facts dd{margin:0;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.analysis-stage{--viewer-height:clamp(320px,calc(100vh - 430px),72vh);position:relative;width:min(100%,calc(var(--viewer-height) * var(--frame-ratio)));margin-inline:auto;overflow:hidden;border-radius:var(--radius-control);background:var(--color-ink)}
.analysis-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.analysis-overlay{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair;touch-action:none}
.analysis-overlay .marker{fill:none;stroke:var(--color-accent);stroke-width:3;vector-effect:non-scaling-stroke}
.analysis-overlay .marker-manual{stroke:var(--color-warning)}
.analysis-overlay .marker-estimate{stroke-dasharray:4 3}
.analysis-overlay .marker-start{stroke:var(--color-success)}
.analysis-overlay .marker-cal{stroke:var(--color-paper)}
.analysis-overlay .selected{stroke-width:5}
.analysis-overlay .marker:focus-visible{outline:none;stroke:var(--color-focus);stroke-width:6}
.analysis-overlay .base-line,.analysis-overlay .cal-line{stroke:var(--color-paper);stroke-width:1.5;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}
.analysis-frame-number input{width:96px}
.analysis-frame-number,.analysis-viewer .frame-actions input[type=range]{flex:1 1 200px}
.analysis-points,.analysis-prerequisites{display:flex;flex-wrap:wrap;gap:8px 20px;margin:12px 0;padding:10px 14px;border:1px solid var(--color-rule);border-radius:var(--radius-control)}
.video-analysis .check{display:flex;align-items:center;gap:8px;min-height:44px;margin:0;font-size:14px;font-weight:400}
.xy-pair{display:grid;grid-template-columns:repeat(2,minmax(0,160px));gap:12px;margin:8px 0}
svg.analysis-curve{display:block;width:100%;height:120px;cursor:pointer;background:var(--color-paper-3);border-radius:var(--radius-control)}
.curve-line{fill:none;stroke:var(--color-accent);stroke-width:2;vector-effect:non-scaling-stroke}
.curve-zero{stroke:var(--color-rule);vector-effect:non-scaling-stroke}
.curve-window{fill:var(--color-success-surface)}
.curve-gap{fill:var(--color-warning-surface)}
.curve-estimate{fill:var(--color-warning)}
.curve-peak{fill:var(--color-accent)}
.curve-cursor{stroke:var(--color-ink);stroke-width:1;vector-effect:non-scaling-stroke}
.analysis-values{border-collapse:collapse;font-variant-numeric:tabular-nums;font-size:14px}
.analysis-values th,.analysis-values td{padding:6px 12px;border-bottom:1px solid var(--color-rule);text-align:left}
.analysis-values th span{display:block;font-weight:400}
.analysis-blockers{color:var(--color-warning);font-size:14px}
.analysis-candidates{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.analysis-conflict{padding:10px 14px;border:1px solid var(--color-error);border-radius:var(--radius-control)}
.audit{margin-top:0;border-top:0;font-size:14px}
.audit li{margin-top:6px}

/* Customer and wrapper */
#wrapper-list{margin-top:20px}
.wrapper-row{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:18px 0;border-top:1px solid var(--color-rule)}
.wrapper-row h2{margin:0;font-size:17px}
.wrapper-row p{margin-top:4px;font-size:14px;color:var(--color-muted)}
#wrapper-form>button{margin:0 10px 8px 0}

/* Report */
#report-issues:empty{display:none}
#report-issues{margin-bottom:24px;padding:14px 18px;border:1px solid var(--color-rule);border-left:1px solid var(--color-warning);border-radius:var(--radius-surface);background:var(--color-warning-surface)}
#report-issues h2{margin:0 0 4px;font-size:15px}
.issue-links{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0}
.issue-links button{font-size:14px;text-align:left}
.report-layout{display:grid;grid-template-columns:248px minmax(0,1fr);gap:32px;align-items:start}
.report-controls{position:sticky;top:16px;min-width:0}
.report-controls h2{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--color-muted)}
.report-controls>label{margin-top:16px}
.report-controls .check{display:flex;align-items:center;gap:12px;min-height:44px;margin:0;font-weight:400;font-size:15px}
.report-controls>.check{font-weight:600;border-bottom:1px solid var(--color-rule)}
.report-controls form label{margin:14px 0}
#release-status{margin-top:12px;font-size:14px}
.print-report{min-width:0;max-width:880px;padding:40px 44px;border:1px solid var(--color-rule);border-radius:var(--radius-surface);background:var(--color-paper);box-shadow:0 2px 8px var(--color-shadow)}
.print-report>h2{margin:20px 0 6px;font-size:24px}
.print-report>p{font-size:15px}
.report-brand{padding-bottom:16px;border-bottom:2px solid var(--color-accent);color:var(--color-accent);font-size:24px;font-weight:700}
.report-brand img{display:block;width:100px;height:50px;object-fit:contain}
.report-page{margin-top:28px;padding-top:24px;border-top:1px solid var(--color-rule);break-inside:avoid}
.report-page h3{font-size:18px}
.report-page p{margin-top:8px;font-size:14px}
.report-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:16px 0;border:1px solid var(--color-rule);border-radius:var(--radius-surface);font-size:13px;color:var(--color-muted)}
.report-values>div{padding:10px 14px}
.report-values>div+div{border-left:1px solid var(--color-rule)}
.report-values strong{display:block;margin-top:2px;color:var(--color-ink);font-size:20px;font-variant-numeric:tabular-nums}
.report-frames{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}
.report-frames figure{margin:0}
.report-frames img,.report-frames .blank-frame{width:100%;aspect-ratio:4/3;border:1px solid var(--color-rule);background:var(--color-paper-2)}
.report-frames img{display:block;object-fit:contain}
.report-frames .blank-frame{display:grid;place-items:center;padding:10px;color:var(--color-muted);font-size:12px;text-align:center}
.report-frames figcaption{margin-top:6px;font-size:12px;color:var(--color-neutral)}
.safepack .report-brand{color:var(--safepack-blue);border-bottom-color:var(--safepack-blue)}
.safepack .report-brand span{display:inline-block;border-bottom:3px solid var(--safepack-red)}

/* Laptop / tablet */
@media (max-width:1100px){
  main{padding:20px 24px 40px}
  .shell{grid-template-columns:196px minmax(0,1fr)}
  .view{padding:24px 24px 28px}
  .save-row{margin-inline:-24px;padding-inline:24px}
  .frame-grid{grid-template-columns:1fr}
  .report-layout{grid-template-columns:1fr;gap:24px}
  .report-controls{position:static}
  #report-selection{display:flex;flex-wrap:wrap;gap:0 20px}
  .print-report{padding:32px}
}

/* Mobile, 390px */
@media (max-width:700px){
  .app-header{flex-wrap:wrap;gap:8px 12px;min-height:64px;padding:8px 16px}
  .brand{gap:12px}
  .brand img{width:72px;height:38px}
  .brand span{padding-left:12px;font-size:13px}
  .account-area{gap:8px;margin-left:auto}
  .demo,.environment-label{max-width:132px;padding:2px 6px;font-size:10px;white-space:normal;line-height:1.3}
  .profile-menu>summary{padding:4px}
  .profile-menu>summary>span:last-child{max-width:90px;font-size:12px}
  .profile-avatar{width:34px;height:34px}
  .shell{display:block;min-height:0}
  .navigation{position:static;flex-direction:row;gap:0;padding:0 8px;border-right:0;border-bottom:1px solid var(--color-rule);background:var(--color-paper);overflow-x:auto}
  .navigation>button{width:auto;min-width:0;flex:1 1 0;justify-content:center;padding:10px 8px;border-left:0;border-bottom:3px solid transparent;border-radius:0;font-size:12px;text-align:center}
  .navigation>button[aria-current=page]{border-bottom-color:var(--color-accent);box-shadow:none}
  .nav-context{display:none}
  main{padding:12px 12px 32px}
  .view{padding:20px 16px 24px}
  h1{font-size:24px}
  .heading-row{flex-wrap:wrap;align-items:flex-start;gap:14px}
  .heading-row>button{width:100%}
  .heading-row.small>button{width:auto}
  .day-context{gap:10px 24px;padding:12px 14px}
  .toolbar{flex-wrap:wrap}
  .toolbar input,.toolbar select{max-width:none}
  .tabs{margin-inline:-16px;padding-inline:8px;gap:0}
  .tabs button{padding:12px 10px 11px;font-size:14px}
  .fields,.details-list{grid-template-columns:1fr;gap:16px}
  .product-row button{padding:8px 12px;font-size:14px}
  .frame-slot{display:block}
  .frame-preview{max-height:320px}
  .frame-roles{grid-template-columns:1fr;gap:6px}
  .frame-role{min-height:44px}
  .frame-role img,.frame-role-blank{width:40px;height:30px}
  .step-nav ol{gap:2px}
  .step-nav li{flex:1 0 164px}
  .step-nav button{min-height:56px;padding:6px 8px}
  .step-nav .step-label{display:block;font-size:12px}
  .step-nav .step-status{display:block;font-size:11px}
  .step-footer{flex-wrap:wrap}
  .step-footer button{flex:1 1 140px}
  .frames-step .heading-row{display:block}
  .frames-step .fps-field{max-width:none;margin-top:12px}
  .analysis-toolbar>button{margin-left:0;width:100%}
  .analysis-frame-row{grid-template-columns:minmax(0,1fr) auto}
  .analysis-frame-row .analysis-show-frame{grid-column:2}
  .save-row{flex-wrap:wrap;margin-inline:-16px;padding:10px 16px}
  .save-row>span{width:100%;margin:0}
  .save-row button{flex:1}
  .wrapper-row{display:block}
  .wrapper-row button{width:100%;margin-top:12px}
  .print-report{padding:20px 16px}
  .report-values{grid-template-columns:1fr}
  .report-values>div+div{border-left:0;border-top:1px solid var(--color-rule)}
  .report-frames{grid-template-columns:1fr}
  footer,.app-version{padding:10px 16px}
}

/* Print: A4 report only */
@media print{
  @page{size:A4;margin:16mm}
  body{border:0;background:white;color:black}
  .app-header,.navigation,footer,.app-version,.account-area,.demo,.report-controls,.heading-row,.view:not(#view-report),#local-persistence,#report-issues,.demo-note{display:none!important}
  .shell,main,.report-layout{display:block;min-height:0;max-width:none;padding:0}
  #view-report,.print-report{max-width:none;padding:0;border:0;border-radius:0;background:white;box-shadow:none}
  .report-page{break-inside:avoid;page-break-inside:avoid}
  .report-frames{grid-template-columns:repeat(3,minmax(0,1fr))}
  .report-values{grid-template-columns:repeat(3,minmax(0,1fr))}
}

@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto;transition:none!important}}

/* Video replacement keeps the decision beside the current test. */
dialog{max-width:min(440px,calc(100vw - 32px));padding:24px;border:1px solid var(--color-rule);border-radius:var(--radius-surface);background:var(--color-paper);color:var(--color-ink);box-shadow:0 8px 24px var(--color-shadow)}dialog::backdrop{background:var(--color-shadow)}dialog h2{margin:0 0 12px}dialog form{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}@media print{dialog{display:none!important}}

/* Persisted day navigation in the local development adapter. */
#new-day-dialog{width:640px;max-width:calc(100vw - 32px)}
#new-day-dialog form{display:block;margin-top:20px}
#new-day-dialog .fields{grid-template-columns:1fr}
.dialog-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}

@media print{#new-day-dialog{display:none}}

/* Test-day overview: title with live count, one filter toolbar, open list with quiet rules. */
.days-heading{margin-bottom:20px}
#days-count{min-height:21px;margin-top:4px;font-size:14px;font-variant-numeric:tabular-nums}
.days-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin:0 0 20px;padding:16px;border-radius:var(--radius-surface);background:var(--color-paper-2)}
.days-filters label{flex:2 1 240px;min-width:0;margin:0;font-size:13px;color:var(--color-neutral)}
.days-filters .filter-date{flex:1 1 160px}
.days-filters input{min-width:0;margin-top:4px}
.days-filters input[type=date]::-webkit-date-and-time-value{text-align:left}
.filter-actions{display:flex;flex:0 0 auto;gap:8px}
.filter-actions button[type=submit]{border-color:var(--color-accent);color:var(--color-accent);font-weight:600}
.filter-actions button[type=submit]:hover{border-color:var(--color-accent-hover);background:var(--color-paper);color:var(--color-accent-hover)}
#days-reset{border-color:transparent;background:transparent;color:var(--color-neutral)}
#days-reset:hover{border-color:transparent;background:var(--color-paper-3);color:var(--color-ink)}
#days-error{max-width:none;margin:0 0 16px;padding:10px 14px;border:1px solid var(--color-error);border-radius:var(--radius-control);background:var(--color-error-surface)}
#view-days .table-scroll{margin-inline:-12px;overflow:visible;border:0;border-radius:0}
#view-days table{min-width:0;table-layout:fixed;font-size:15px}
#view-days th{padding:10px 12px;border-bottom:1px solid var(--color-rule);background:transparent}
#view-days .col-date{width:8rem}
#view-days .col-tests{width:5.5rem;text-align:right}
#view-days .col-action{width:7.5rem}
#view-days td{width:auto;padding:10px 12px;border-top:1px solid var(--color-paper-3);vertical-align:middle;overflow-wrap:anywhere}
#view-days tbody tr:first-child td{border-top:0}
#view-days td:nth-child(1){white-space:nowrap;color:var(--color-neutral);font-variant-numeric:tabular-nums}
#view-days td:nth-child(2){font-weight:600}
#view-days td:nth-child(3){color:var(--color-neutral)}
#view-days td:nth-child(4){text-align:right;font-variant-numeric:tabular-nums}
#view-days td:nth-child(5){padding-block:4px;text-align:right}
#view-days td.empty{padding:40px 12px;color:var(--color-muted);font-weight:400;white-space:normal;text-align:center}
#view-days tbody tr:hover td.empty{background:transparent}
.day-open{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border:1px solid transparent;border-radius:var(--radius-control);color:var(--color-ink);font-weight:500;text-decoration:none;white-space:nowrap;background:var(--studio-fill);transition:background-color var(--dur-micro),border-color var(--dur-micro)}
#view-days .day-open:hover{background:var(--studio-fill-hover)}
.days-pagination{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:0 -12px;padding:12px 12px 0;border-top:1px solid var(--color-rule)}
.days-pagination button{border-color:var(--color-rule)}
#days-page{min-width:8rem;font-size:14px;color:var(--color-muted);text-align:center;font-variant-numeric:tabular-nums}

/* Keep the period fields together when the full toolbar no longer fits. */
@media (max-width:1100px){
  .days-filters .filter-customer{flex-basis:100%}
  .days-filters .filter-date{flex:1 1 calc(50% - 8px)}
  .filter-actions{flex:1 1 100%;justify-content:flex-end}
}

/* Narrow workspace: each test day becomes a two-column row card, all fields kept. */
@media (max-width:900px){
  .step-nav .step-status{display:none}
  #view-days .table-scroll{margin-inline:0}
  #view-days table,#view-days tbody{display:block}
  #view-days thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  #view-days tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2px 16px;padding:14px 0;border-top:1px solid var(--color-paper-3)}
  #view-days tbody tr:first-child{border-top:0}
  #view-days tbody tr:hover td{background:transparent}
  #view-days td{padding:0;border:0}
  #view-days td:nth-child(1){grid-area:1/1;font-size:13px;color:var(--color-muted)}
  #view-days td:nth-child(2){grid-area:2/1;font-size:16px}
  #view-days td:nth-child(3){grid-area:3/1;font-size:14px}
  #view-days td:nth-child(4){grid-area:1/2;font-size:13px;color:var(--color-muted)}
  #view-days td:nth-child(4)::before{content:"Tests "}
  #view-days td:nth-child(5){grid-area:2/2/4/3;padding:0}
  #view-days .day-open{border-color:var(--color-rule-2)}
  #view-days td.empty{grid-area:auto;grid-column:1/-1;padding:32px 0;font-size:15px;color:var(--color-muted)}
  .days-pagination{margin-inline:0;padding-inline:0}
}
@media (max-width:700px){
  .days-filters{gap:12px;padding:12px}
  .days-filters .filter-customer{flex-basis:100%}
  .days-filters .filter-date{flex:1 1 calc(50% - 6px)}
  .filter-actions{flex:1 1 100%}
  .filter-actions button[type=submit]{flex:1 1 auto}
  .days-pagination{justify-content:space-between}
  #days-page{flex:1;min-width:0}
}
@media (max-width:380px){.days-filters .filter-date{flex-basis:100%}}

/* Keep the image, transport and curve together at laptop height. */
#view-test.is-evaluating>.heading-row{margin-bottom:10px;align-items:center}
#view-test.is-evaluating>.heading-row h1{display:inline;margin:0 12px 0 0;font-size:24px}
#view-test.is-evaluating>.heading-row .text-button{display:inline;padding:4px 0;margin-right:16px}
#view-test.is-evaluating>.heading-row .subtitle{margin:4px 0 0;font-size:13px}
#view-test.is-evaluating>.tabs{margin-bottom:14px}
.analysis-head .heading-row.small{margin:0 0 6px}
.analysis-head p:empty{display:none}
.analysis-values{min-width:0}
.analysis-tools input{padding:8px 10px;min-height:40px}
.analysis-frame-number{display:flex;align-items:center;gap:10px;font-size:13px}
.analysis-transport .analysis-frame-number{flex:0 0 auto}
@media (max-width:700px){
  #view-test.is-evaluating>.heading-row>button{width:auto;font-size:12px;padding:6px 10px;min-height:36px}
  #view-test.is-evaluating>.heading-row{gap:8px}
  .analysis-stage{--viewer-height:clamp(240px,calc(100vh - 360px),56vh)}
  .analysis-values th,.analysis-values td{padding:6px 4px;white-space:normal;font-size:12px}
  .analysis-label{white-space:normal}
}

/* Zoom and pan inside the fixed stage: the canvas carries the transform, the overlay keeps original coordinates. */
.analysis-canvas{position:absolute;inset:0;transform-origin:0 0;will-change:transform}
.analysis-stage.is-zoomed .analysis-overlay{cursor:grab}
.analysis-stage.is-zoomed .analysis-overlay:active{cursor:grabbing}
.analysis-overlay .marker-hit{fill:transparent;stroke:none;cursor:move}
.analysis-overlay .marker-candidate{stroke:var(--color-success);stroke-dasharray:3 3;cursor:pointer}
.analysis-zoom{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.analysis-zoom>button{min-height:36px;padding:6px 10px;font-size:13px;display:inline-flex;align-items:center;gap:4px}
.analysis-zoom-level{min-width:44px;text-align:center;font-size:13px;font-variant-numeric:tabular-nums;color:var(--color-neutral)}
.analysis-zoom-hint{margin:0;font-size:12px}
.analysis-next{white-space:nowrap}
.analysis-toolbar .analysis-next{margin-left:auto}
.analysis-toolbar>button+.analysis-next{margin-left:0}
.analysis-tools .field-help{font-size:12px}
.analysis-summary{margin:0 0 8px;font-size:15px;font-weight:600;max-width:none}
.frame-preview img.frame-image{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
@media (max-width:700px){.analysis-zoom>button{flex:1 1 auto}.analysis-toolbar .analysis-next{margin-left:0;width:100%;white-space:normal}}

/* Image-first analysis workspace: task bar above the image, one control row below it, folds last. */
.analysis-tools{padding:10px 14px;border:1px solid var(--color-rule);border-left:1px solid var(--color-accent);border-radius:var(--radius-control);background:var(--color-paper)}
.analysis-tools button{min-height:40px;padding:6px 12px;font-size:14px}
.analysis-tools .text-button{min-height:36px;padding:0}
.analysis-task{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
.analysis-task-text{flex:1 1 320px;min-width:0}
.analysis-instruction{margin:0;max-width:none;font-size:15px;font-weight:600;line-height:1.35}
.analysis-confirm{margin:2px 0 0;font-size:13px;color:var(--color-neutral)}
.analysis-task-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.analysis-task-actions .check{min-height:40px}
.analysis-job{font-size:14px}
.analysis-job>p{margin:8px 0 0}
.analysis-blocks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 24px;margin-top:10px;padding-top:10px;border-top:1px solid var(--color-rule)}
.video-analysis .analysis-block h4{margin:0 0 4px}
.analysis-block .analysis-state{margin:0 0 6px}
.analysis-block>p{margin:0 0 6px}
.analysis-length-row{display:flex;flex-wrap:wrap;align-items:end;gap:8px}
.analysis-length,.analysis-height{flex:0 1 240px}
.analysis-picks{display:flex;gap:6px}
.analysis-pick[aria-pressed=true]{border-color:var(--color-accent);color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}
.analysis-block-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0}
.analysis-block-actions:not(:has(>:not([hidden]))){display:none}
.analysis-checks{margin:10px 0 0;padding-top:8px;border-top:1px solid var(--color-rule)}
p.analysis-checks{font-size:13px}
.analysis-checks-title{margin:0 0 6px;font-size:13px;font-weight:600}
.analysis-checks ul{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}
.analysis-tools .analysis-check{min-height:32px;padding:4px 10px;font-size:13px;font-variant-numeric:tabular-nums}
.analysis-check[aria-current=true]{border-color:var(--color-accent);color:var(--color-accent);font-weight:600;box-shadow:inset 0 0 0 1px var(--color-accent)}
.analysis-prompt{position:absolute;top:10px;left:50%;z-index:1;max-width:calc(100% - 20px);padding:6px 12px;border-radius:var(--radius-control);background:var(--color-ink);color:var(--color-paper);font-size:14px;font-weight:600;line-height:1.3;text-align:center;pointer-events:none;transform:translateX(-50%)}
.analysis-prompt.is-empty{visibility:hidden}
.analysis-controls{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin-top:8px}
.analysis-controls .analysis-transport{flex:1 1 420px;min-width:0;margin:0}
.analysis-transport .analysis-readout{flex:0 1 auto;min-width:0;margin:0;font-size:13px}
.analysis-controls .analysis-zoom{flex:0 0 auto}
.analysis-more{border-top:1px solid var(--color-rule)}
.analysis-more>div:not(.analysis-legend-row){display:flex;flex-wrap:wrap;align-items:flex-start;column-gap:24px}
.analysis-more .analysis-fold{margin-top:0;border-top:0}
.analysis-more>div>.analysis-fold[open]{flex:1 1 100%}
.analysis-legend-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;padding:6px 0}
.analysis-overlay .marker-foreign{opacity:.6}
.curve-check{stroke:var(--color-warning);stroke-width:3;vector-effect:non-scaling-stroke}
@media (max-width:700px){
  .analysis-tools{padding:10px 12px}
  .analysis-blocks{grid-template-columns:1fr}
  .analysis-task-actions{width:100%}
  .analysis-task-actions>button{flex:1 1 auto}
  .analysis-controls .analysis-transport{flex-basis:100%}
  .analysis-controls .analysis-transport{flex-wrap:wrap;min-width:0}
  .analysis-controls .analysis-transport input[type=range]{flex:1 1 120px;min-width:0}
  .analysis-controls .analysis-frame-number input{width:72px}
  .analysis-controls .analysis-transport .analysis-readout{flex:1 1 100%}
  .analysis-controls .analysis-zoom{flex:1 1 100%;min-width:0;justify-content:space-between}
  .analysis-controls .analysis-zoom>button{flex:1 1 0;min-width:0;padding:6px 6px;font-size:12px;white-space:normal;line-height:1.15;text-align:center;justify-content:center}
  .analysis-controls .analysis-zoom-level{min-width:36px}
  .analysis-length,.analysis-height{flex-basis:100%}
  .analysis-prompt{top:6px;font-size:13px}
}

/* ---- Fullscreen analysis workspace (steps 1–3 with a probed original, ≥ 1100 px wide) ---- */
.analysis-panel{min-width:0;display:flex;flex-direction:column;gap:10px}
.analysis-curve-host{min-width:0}
.analysis-transport{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:0}
.analysis-transport>button.analysis-jump,.analysis-transport>button.analysis-play{flex:0 0 auto;width:auto;min-height:36px;padding:6px 10px;font-size:13px;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.analysis-transport .analysis-play{border-color:var(--color-accent);color:var(--color-accent);font-weight:600}
.analysis-transport .analysis-play[aria-pressed=true]{background:var(--color-accent);color:var(--color-accent-ink)}
.analysis-spacer{flex:1 1 12px}
.analysis-range{font-size:12px;font-variant-numeric:tabular-nums}
.analysis-scrub{padding:0 2px}
.analysis-scrub input[type=range]{width:100%;min-height:28px}
.analysis-curve-x{position:relative;height:30px;margin-top:2px}
.analysis-curve-x .analysis-tick{position:absolute;top:0;transform:translateX(-50%);display:grid;justify-items:center;font-size:11px;line-height:1.15;color:var(--color-neutral);font-variant-numeric:tabular-nums;white-space:nowrap}
.analysis-curve-x .analysis-tick:first-child{transform:none}
.analysis-curve-x .analysis-tick:last-child{transform:translateX(-100%)}
.analysis-curve-x .analysis-tick b{font-weight:600}
.analysis-curve-x .analysis-tick i{font-style:normal;color:var(--color-muted)}
.analysis-curve-hint{margin-left:auto}
.analysis-keys{margin:0;font-size:12px}
.analysis-chips{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.analysis-chip-label{position:absolute;padding:2px 7px;border-radius:var(--radius-control);background:var(--marker-label-fill);color:var(--studio-on-blue);font-size:11px;font-weight:600;line-height:1.3;white-space:nowrap;pointer-events:none}
.analysis-chip-label.is-selected{background:var(--color-accent)}
.analysis-chip-label.is-confirmed{background:var(--color-success)}
.analysis-overlay .marker-confirmed{stroke:var(--color-success)}
.analysis-overlay .marker{stroke-width:2.2}
.analysis-overlay .selected{stroke-width:3.2}
/* ---- Analysis studio: restrained dark appearance (accepted design 05-apple-dark-restrained) ----
   Lotz tokens are remapped inside the analysis area, so existing components follow without copies.
   Matte charcoal surfaces, thin separators, system typography. Glass only on the small zoom control,
   which sits beside the image and never over the original pixels. */
#panel-frames,body.is-workspace #view-test,body.is-workspace #leave-analysis-dialog{
  --ws-accent-text:var(--studio-blue-text);--ws-fill:var(--studio-fill);--ws-fill-hover:var(--studio-fill-hover);--ws-fill-active:var(--studio-fill-active);
  --ws-surface:var(--studio-panel);--ws-image:var(--studio-image);--ws-radius:var(--studio-radius-surface);--ws-font:var(--font-body);
  color-scheme:var(--studio-scheme);color:var(--color-ink);font-family:var(--ws-font);-webkit-font-smoothing:antialiased;
}
#panel-frames button,body.is-workspace #view-test button,body.is-workspace #leave-analysis-dialog button{background:var(--ws-fill);border-color:transparent;color:var(--color-ink);border-radius:8px}
#panel-frames button:hover,body.is-workspace #view-test button:hover,body.is-workspace #leave-analysis-dialog button:hover{background:var(--ws-fill-hover);border-color:transparent}
#panel-frames button:active,body.is-workspace #view-test button:active{background:var(--ws-fill-active)}
#panel-frames button:disabled:hover,body.is-workspace #view-test button:disabled:hover{background:var(--ws-fill)}
#panel-frames button.primary,body.is-workspace #view-test button.primary,body.is-workspace #leave-analysis-dialog button.primary{background:var(--color-accent);color:var(--studio-on-accent);font-weight:600}
#panel-frames button.primary:hover,body.is-workspace #view-test button.primary:hover{background:var(--color-accent-hover)}
#panel-frames input,#panel-frames select,#panel-frames textarea,body.is-workspace #view-test input,body.is-workspace #view-test select,body.is-workspace #view-test textarea{background:var(--studio-fill);border-color:var(--studio-fill-hover);color:var(--color-ink)}
#panel-frames :focus-visible,body.is-workspace #view-test :focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}
#panel-frames summary{color:var(--color-neutral)}
#panel-frames .text-button,#panel-frames a{color:var(--ws-accent-text)}
#panel-frames .status{background:var(--ws-fill);color:var(--color-neutral);border-color:transparent}
#panel-frames .analysis-toolbar .analysis-status{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--color-neutral)}
#panel-frames .analysis-saved{color:var(--color-muted)}
#panel-frames .status-ready{background:var(--color-success-surface);color:var(--color-success)}
#panel-frames .status-problem{background:var(--color-error-surface);color:var(--color-error)}
/* Narrow screens: the analysis tab follows the shared dark portal and scrolls normally. */
#panel-frames{background:var(--color-paper-2);color:var(--color-ink);border-radius:var(--ws-radius);padding:12px}
/* Result step in the normal page flow: the test decision comes first, the geometry with its details after it. */
#panel-frames[data-step=result]{display:flex;flex-direction:column}
#panel-frames[data-step=result]>.step-nav{order:0}
#panel-frames[data-step=result]>#frames-result{order:1}
#panel-frames[data-step=result]>#video-analysis{order:2;margin-top:16px}
#panel-frames[data-step=result]>.step-footer{order:3}
#panel-frames .analysis-curve-fold .analysis-curve{margin:8px 0 0}
#panel-frames .step-nav button{background:var(--ws-surface)}
#panel-frames .step-nav button[aria-current=step]{background:var(--color-paper-3);color:var(--color-ink);box-shadow:inset 0 -2px 0 var(--ws-accent-text)}
#panel-frames .step-nav button[aria-current=step] .step-index{background:var(--color-accent);border-color:var(--color-accent);color:var(--studio-on-blue)}
#panel-frames .step-nav button[data-done=true]:not([aria-current=step]) .step-index{color:transparent;border-color:var(--color-success);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.3 2.3 4.7-5' fill='none' stroke='%2363da82' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/14px no-repeat}
.step-short{display:none}
@media (max-width:1099px){#panel-frames .step-nav .step-label{display:none}#panel-frames .step-nav .step-short{display:block;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis}}

/* Report images: one selected original, dominant and fitted on the left, its controls in a compact column on the right. */
#panel-frames #frame-selectors{display:block}
@media (min-width:900px){
  #panel-frames #frame-selectors .frame-slot:not([hidden]){display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,300px);grid-template-rows:auto auto auto auto auto auto minmax(0,1fr);grid-template-areas:"preview title" "preview time" "preview range" "preview actions" "preview confirm" "preview suggest" "preview rest";column-gap:20px;row-gap:8px;align-items:start}
  #panel-frames #frame-selectors .frame-slot>h3{grid-area:title;margin:0;font-size:17px}
  #panel-frames #frame-selectors .frame-preview{grid-area:preview;aspect-ratio:auto;height:clamp(240px,calc(100vh - 360px),620px);max-height:none;margin:0;background:var(--ws-image)}
  #panel-frames #frame-selectors .frame-slot>label{grid-area:time;font-size:13px;color:var(--color-neutral)}
  #panel-frames #frame-selectors .frame-slot>input[type=range]{grid-area:range;width:100%;accent-color:var(--studio-blue-text)}
  #panel-frames #frame-selectors .frame-actions{grid-area:actions;display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0}
  #panel-frames #frame-selectors .frame-actions [data-confirm]{grid-column:1 / -1;background:var(--color-accent);color:var(--studio-on-accent);font-weight:600}
  #panel-frames #frame-selectors .frame-actions [data-confirm]:disabled{background:var(--ws-fill);color:var(--color-muted)}
  #panel-frames #frame-selectors .frame-confirm{grid-area:confirm;margin:0;font-size:13px;color:var(--color-muted)}
  #panel-frames #frame-selectors .frame-suggest{grid-area:suggest;margin:0}
}
/* Image overlay keeps bright, functional colours on the original (blue automatic, amber by hand, green checked, white scale). */
#panel-frames .analysis-overlay .marker{stroke:var(--studio-blue-text)}
#panel-frames .analysis-overlay .marker-manual{stroke:var(--marker-warning)}
#panel-frames .analysis-overlay .marker-start,#panel-frames .analysis-overlay .marker-confirmed,#panel-frames .analysis-overlay .marker-candidate{stroke:var(--marker-success)}
#panel-frames .analysis-overlay .marker-cal,#panel-frames .analysis-overlay .base-line,#panel-frames .analysis-overlay .cal-line{stroke:var(--studio-on-blue)}
#panel-frames .analysis-overlay .marker:focus-visible{stroke:var(--marker-link)}
#panel-frames .analysis-chip-label{background:var(--marker-dark-fill);color:var(--studio-ink);box-shadow:0 0 0 1px var(--studio-fill-hover);border-radius:6px;font-family:var(--ws-font);font-weight:500}
#panel-frames .analysis-chip-label.is-selected{background:var(--marker-blue)}
#panel-frames .analysis-chip-label.is-confirmed{background:var(--marker-confirm-fill)}
#panel-frames .analysis-stage{background:var(--ws-image);border-radius:6px}
#panel-frames .analysis-prompt{background:var(--detail-dark-fill);color:var(--studio-ink);box-shadow:0 0 0 1px var(--studio-fill-hover);border-radius:8px}
#panel-frames .frame-preview,#panel-frames #recording-preview{background:var(--ws-image)}
#panel-frames .frame-preview span{color:var(--color-muted)}

/* Step surface: title row, the step's tasks with honest states, then one tool. */
#panel-frames .analysis-step-title,#panel-frames .analysis-task-head h3{margin:0;font-size:17px;font-weight:600;letter-spacing:-.01em;line-height:1.25}
#panel-frames .analysis-tasks{display:grid;gap:2px;margin:10px 0 0;padding:0;list-style:none}
#panel-frames .analysis-tasks>li{min-width:0}
#panel-frames .analysis-task-item{display:grid;grid-template-columns:18px minmax(0,1fr);column-gap:10px;align-items:start;width:100%;min-height:36px;margin:0;padding:6px 8px 6px 6px;border:0;border-radius:8px;background:transparent;color:var(--color-ink);text-align:left;font:inherit;line-height:1.3;white-space:normal}
#panel-frames button.analysis-task-item{cursor:pointer}
#panel-frames button.analysis-task-item:hover{background:var(--ws-fill)}
#panel-frames .analysis-task-body{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px;min-width:0}
#panel-frames .analysis-task-label{font-size:14px;font-weight:500}
#panel-frames .analysis-task-detail{font-size:12.5px;color:var(--color-muted);overflow-wrap:anywhere}
#panel-frames .analysis-task-mark{width:16px;height:16px;margin-top:2px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--color-rule-2)}
#panel-frames .analysis-tasks>li[data-state=current] .analysis-task-mark{box-shadow:inset 0 0 0 1.5px var(--ws-accent-text),inset 0 0 0 4.5px var(--color-paper),inset 0 0 0 8px var(--ws-accent-text)}
#panel-frames .analysis-tasks>li[data-state=current] .analysis-task-label{color:var(--ws-accent-text)}
#panel-frames .analysis-tasks>li[data-state=done] .analysis-task-mark{box-shadow:none;background:var(--color-success-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.3 2.3 4.7-5' fill='none' stroke='%2363da82' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat}
#panel-frames .analysis-tasks>li[data-state=done] .analysis-task-detail{color:var(--color-success)}
#panel-frames .analysis-tasks>li[data-state=info] .analysis-task-mark{box-shadow:none;background:var(--color-warning-surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 4.2v4.6M8 11.3v.4' fill='none' stroke='%23ffc16a' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E") center/16px no-repeat}
#panel-frames .analysis-tasks>li[data-state=info] .analysis-task-detail{color:var(--color-warning)}
/* A clean automatic result: neutral mark and muted detail; warning colour stays reserved for real findings and gaps. */
#panel-frames .analysis-tasks>li[data-state=none] .analysis-task-mark{box-shadow:inset 0 0 0 1.5px var(--color-rule-2);background:none}
#panel-frames .analysis-tasks>li[data-state=none] .analysis-task-mark::after{content:"";position:absolute;left:5px;top:7px;width:6px;height:2px;border-radius:1px;background:var(--color-muted)}
#panel-frames .analysis-task-mark{position:relative}
#panel-frames .analysis-tasks>li[data-state=none] .analysis-task-detail{color:var(--color-muted)}
#panel-frames .analysis-tasks>li[data-state=open] .analysis-task-detail{color:var(--color-neutral)}
#panel-frames .analysis-task+.analysis-blocks,#panel-frames .analysis-tasks+.analysis-task{margin-top:10px}
#panel-frames .analysis-instruction:empty{display:none}
#panel-frames .analysis-task:has(>.analysis-task-text>.analysis-instruction:empty):not(:has(.analysis-task-actions)){display:none}
/* Keyboard and zoom help: one labelled disclosure under the image instead of a permanent instruction line. */
#panel-frames .analysis-keys-help{margin:0;padding:0;border:0;min-width:0;flex:1 1 0}
#panel-frames .analysis-keys-help>summary{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:0 8px;border-radius:8px;color:var(--color-muted);font-size:12px;font-weight:500;list-style:none;cursor:pointer}
/* One disclosure sign everywhere in the analysis area: the same chevron as "Technik und Einstellungen". */
#panel-frames details:not(.result-why):not(.profile-menu)>summary{display:flex;align-items:center;gap:8px;list-style:none}
#panel-frames details:not(.result-why):not(.profile-menu)>summary::-webkit-details-marker{display:none}
#panel-frames details:not(.result-why):not(.profile-menu):not(.analysis-tech)>summary::before{content:"";flex:0 0 auto;width:7px;height:7px;margin:0 2px 1px 2px;border:solid var(--color-muted);border-width:0 1.5px 1.5px 0;transform:rotate(-45deg);transition:transform var(--dur-micro)}
#panel-frames details[open]:not(.result-why):not(.profile-menu):not(.analysis-tech)>summary::before{transform:rotate(45deg)}
#panel-frames .analysis-keys-help>summary::-webkit-details-marker{display:none}
#panel-frames .analysis-keys-help>summary:hover{background:var(--ws-fill);color:var(--color-ink)}
#panel-frames .analysis-keys-help[open]>summary{color:var(--color-ink)}
#panel-frames .analysis-keys-help>p{margin:4px 0 0 8px;font-size:12px;white-space:normal;overflow:visible;text-overflow:clip}
/* The scale confirmation stays a live region for screen readers; visually the chips on the image and the task list carry it. */
body.is-workspace #video-analysis.is-workspace .analysis-scale .analysis-confirm{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
/* Result: the rule behind "Warum", the missing field marked with its prompt. */
.result-hint .result-why{display:inline;margin:0;padding:0;border:0}
.result-hint .result-why>summary{display:inline;min-height:0;padding:0;font-size:inherit;font-weight:600;color:var(--studio-blue-text);text-decoration:underline;text-underline-offset:3px;cursor:pointer;list-style:none}
.result-hint .result-why>summary::-webkit-details-marker{display:none}
.result-hint .result-why[open]>summary::after{content:": "}
label[data-missing]>input,label[data-missing]>textarea,label[data-missing]>select{border-color:var(--color-warning)}
.result-field-help{color:var(--color-warning)}
#panel-frames .analysis-block[data-state=done]{opacity:.78}
#panel-frames .analysis-block[data-state=waiting]{opacity:.6}
#panel-frames .analysis-block[data-state=active]{padding:10px;margin:0 -10px;border-radius:10px;background:var(--detail-highlight);box-shadow:inset 0 0 0 1px var(--color-rule)}
/* Technical folds behind one disclosure. */
#panel-frames .analysis-tech{margin:0;padding:0;border:0}
#panel-frames .analysis-tech>summary{display:flex;align-items:center;gap:10px;min-height:40px;padding:9px 6px;border-radius:8px;color:var(--color-neutral);font-size:13px;font-weight:500;list-style:none;white-space:nowrap}
#panel-frames .analysis-tech>summary::-webkit-details-marker{display:none}
#panel-frames .analysis-tech>summary::before{content:"";display:inline-block;width:7px;height:7px;margin:0 6px 1px 2px;border:solid var(--color-muted);border-width:0 1.5px 1.5px 0;transform:rotate(-45deg);transition:transform var(--dur-micro)}
#panel-frames .analysis-tech[open]>summary::before{transform:rotate(45deg)}
#panel-frames .analysis-tech>summary:hover{background:var(--ws-fill)}
#panel-frames .analysis-tech-title{display:inline-flex;align-items:center}
#panel-frames .analysis-tech-hint{flex:1 1 auto;min-width:0;font-size:12px;font-weight:400;color:var(--color-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#panel-frames .analysis-tasks .analysis-checks{margin:0;padding:0 0 2px 34px;border:0}
#panel-frames .analysis-tasks .analysis-checks-title{display:none}
#panel-frames .analysis-task-extra{min-width:0}
#panel-frames .analysis-tech[open]>summary{margin-bottom:4px}
#panel-frames .analysis-tech[open] .analysis-tech-hint{display:none}
#panel-frames .analysis-tech>.analysis-more,#panel-frames .analysis-tech>.analysis-details{padding:0 6px}
/* Result step: caption, plain summary, open prerequisites with consequence. */
#panel-frames .analysis-result-caption{margin:2px 0 10px;font-size:13px}
#panel-frames .analysis-result-caption::before{content:"";display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:var(--color-warning);vertical-align:1px}
#panel-frames .analysis-open-wrap{margin:12px 0 4px}
#panel-frames .analysis-open-wrap:has(>ul[hidden]){display:none}
#panel-frames .analysis-open-wrap h4{margin:0 0 6px}
#panel-frames .analysis-open-wrap .analysis-open{display:grid;gap:6px;margin:0;padding:0}
#panel-frames .analysis-open-wrap .analysis-open li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;list-style:none}
#panel-frames .analysis-open-why{font-size:13px;color:var(--color-neutral)}
#panel-frames .analysis-checks li[data-seen=true] .analysis-check{border-color:transparent;color:var(--color-neutral)}
#panel-frames .analysis-checks li[data-seen=true] .analysis-check::after{content:"✓";margin-left:6px;color:var(--color-success)}
/* Marker check: three-way switch, one detail view, nudges, confirmation. */
#panel-frames .analysis-task-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
#panel-frames .analysis-task-title{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;min-width:0}
#panel-frames .analysis-task-head h3{margin:0;font-size:19px;font-weight:600;letter-spacing:-.01em}
#panel-frames .analysis-count{margin:0;font-size:13px;color:var(--color-muted);white-space:nowrap}
#panel-frames .analysis-review .analysis-selected{margin:2px 0 0;font-size:13px;color:var(--color-neutral)}
#panel-frames .analysis-marker-switch{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:10px}
#panel-frames .analysis-tools .analysis-marker-pick{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:4px 10px;font-size:14px;border:1px solid transparent}
#panel-frames .analysis-tools .analysis-marker-pick[aria-pressed=true]{border-color:var(--ws-accent-text,var(--color-accent));background:var(--selection-translucent)}
#panel-frames .analysis-marker-state{width:16px;height:16px;flex:0 0 16px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--color-muted)}
#panel-frames .analysis-marker-pick[aria-pressed=true] .analysis-marker-state{box-shadow:inset 0 0 0 1.5px var(--ws-accent-text,var(--color-accent)),inset 0 0 0 4.5px var(--color-paper),inset 0 0 0 8px var(--ws-accent-text,var(--color-accent))}
#panel-frames .analysis-marker-pick.is-confirmed .analysis-marker-state{box-shadow:none;background:var(--color-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.3 2.3 4.7-5' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat}
#panel-frames .analysis-marker-pick.is-missing{color:var(--color-muted)}
#panel-frames .analysis-detail{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin-top:10px;padding:10px;border-radius:10px;background:var(--detail-highlight);box-shadow:inset 0 0 0 1px var(--color-rule)}
#panel-frames .analysis-loupe{position:relative;align-self:center;flex:0 1 clamp(150px,calc(100vh - 600px),240px);width:100%;max-width:300px;height:auto;min-height:96px;border-radius:6px;background:var(--color-paper-3) center/cover no-repeat;image-rendering:pixelated;overflow:hidden}
#panel-frames .analysis-detail.is-missing .analysis-loupe{opacity:.35}
#panel-frames .analysis-loupe-cross::before,#panel-frames .analysis-loupe-cross::after{content:"";position:absolute;left:50%;top:50%;background:var(--studio-blue-text);opacity:.55}
#panel-frames .analysis-loupe-ring{position:absolute;left:50%;top:50%;z-index:1;width:var(--loupe-ring,56px);height:var(--loupe-ring,56px);border:1.5px solid var(--studio-blue-text);border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1px rgb(0 0 0 / 35%);pointer-events:none}
#panel-frames .analysis-detail.is-confirmed .analysis-loupe-ring{border-color:var(--marker-success)}
#panel-frames .analysis-detail.is-missing .analysis-loupe-ring{display:none}
#panel-frames .analysis-loupe-cross::before{width:1px;height:100%;transform:translate(-50%,-50%)}
#panel-frames .analysis-loupe-cross::after{height:1px;width:100%;transform:translate(-50%,-50%)}
#panel-frames .analysis-loupe-name{position:absolute;top:6px;left:8px;z-index:1;font-size:13px;font-weight:600;color:var(--studio-on-blue);text-shadow:0 1px 2px var(--loupe-shadow)}
#panel-frames .analysis-loupe-zoom{position:absolute;top:6px;right:8px;z-index:1;font-size:13px;color:var(--studio-on-blue);text-shadow:0 1px 2px var(--loupe-shade)}
#panel-frames .analysis-detail-state{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:13px}
#panel-frames .analysis-loupe-state{font-weight:600;color:var(--color-ink)}
#panel-frames .analysis-loupe-state.is-ok{color:var(--color-success)}
#panel-frames .analysis-loupe-where{color:var(--color-muted)}
#panel-frames .analysis-nudges{display:flex;align-items:center;gap:6px}
#panel-frames .analysis-tools .analysis-nudges .analysis-nudge{flex:0 0 40px;width:40px;min-height:34px;padding:0;display:inline-grid;place-items:center}
#panel-frames .analysis-tools .analysis-nudges .analysis-gap{margin-left:auto;display:inline-flex;align-items:center;gap:6px;min-height:34px;padding:4px 10px;font-size:13px}
#panel-frames .analysis-gap-short{display:none}
#panel-frames .analysis-detail-actions{display:flex;justify-content:flex-end}
#panel-frames .analysis-detail-actions .analysis-quiet-action{min-height:26px;padding:0 4px;font-size:12px}
#panel-frames .analysis-tools .analysis-loupe-confirm{width:100%;min-height:42px;margin-top:10px;font-size:16px;font-weight:600}
#panel-frames .analysis-tools .analysis-loupe-confirm.is-ok{background:transparent;color:var(--color-success);box-shadow:inset 0 0 0 1px var(--color-rule);font-weight:500;cursor:default}
#panel-frames .analysis-tools .analysis-loupe-confirm.is-ok::before{content:"";display:inline-block;width:14px;height:14px;margin-right:8px;vertical-align:-2px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4l3 3 6-6.5' fill='none' stroke='%2363da82' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/14px no-repeat}
#panel-frames .analysis-tools .analysis-loupe-confirm:disabled{opacity:.55}
#panel-frames .analysis-tools .analysis-loupe-confirm.is-ok:disabled{opacity:1}
#panel-frames .analysis-tools .analysis-quiet-action{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 8px;background:transparent;font-size:13px;color:var(--ws-accent-text,var(--color-accent))}
#panel-frames .analysis-tools .analysis-quiet-action:disabled{color:var(--color-muted)}

/* Timeline */
#panel-frames .analysis-transport-buttons{display:flex;align-items:center;gap:4px}
#panel-frames .analysis-transport .analysis-transport-buttons>button{flex:0 0 auto;width:36px;min-height:34px;padding:0;display:inline-grid;place-items:center}
#panel-frames .analysis-transport .analysis-transport-buttons>.analysis-play{width:40px;min-height:40px;border-radius:50%}
#panel-frames .analysis-play .analysis-icon path{fill:currentColor}
#panel-frames .analysis-play[aria-pressed=true] .analysis-icon path{fill:none}
#panel-frames .analysis-transport .analysis-readout{flex:0 0 auto;min-width:11.5em;font-size:14px;font-weight:600;color:var(--color-ink);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#panel-frames .analysis-curve-plot{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:start}
#panel-frames .analysis-curve-area{min-width:0}
#panel-frames .analysis-curve-y{position:relative;height:120px;font-size:11px;color:var(--color-muted);font-variant-numeric:tabular-nums}
#panel-frames .analysis-ytick{position:absolute;right:8px;transform:translateY(-50%);white-space:nowrap}
#panel-frames .analysis-yunit{position:absolute;left:0;top:-2px;font-size:10px;letter-spacing:.02em}
#panel-frames svg.analysis-curve{background:var(--studio-panel);border-radius:6px}
#panel-frames .curve-line{stroke:var(--studio-blue-text)}
#panel-frames .curve-cursor{stroke:var(--studio-ink)}
#panel-frames .curve-zero{stroke:var(--studio-rule)}
#panel-frames .curve-window{fill:var(--studio-success-fill)}
#panel-frames .curve-peak{fill:var(--studio-blue-text)}
#panel-frames .analysis-curve>.analysis-curve-head{display:flex;flex-wrap:wrap;gap:4px 16px;margin:8px 0 0;font-size:12px;color:var(--color-muted)}
#panel-frames .analysis-curve>.analysis-curve-head .analysis-curve-hint{display:none}
#panel-frames .analysis-transport .analysis-frame-number{margin-left:auto}
#panel-frames .analysis-strip{display:flex;gap:3px;height:42px;margin:0 0 6px}
#panel-frames .analysis-strip.is-unavailable{display:none}
#panel-frames .analysis-strip>.analysis-thumb{position:relative;flex:1 1 0;min-width:0;min-height:0;height:100%;padding:0;border:0;border-radius:4px;overflow:hidden;background:var(--thumbnail-fill)}
#panel-frames .analysis-strip>.analysis-thumb:hover{background:var(--thumbnail-hover)}
#panel-frames .analysis-strip>.analysis-thumb[aria-current=true]::after{content:"";position:absolute;inset:0;border:2px solid var(--ws-accent-text);border-radius:4px;pointer-events:none}
#panel-frames .analysis-thumb-image{display:block;width:100%;height:100%}
#panel-frames .analysis-scrub{padding-left:44px}
#panel-frames .analysis-scrub input[type=range]{accent-color:var(--studio-blue-text)}

/* Zoom: compact floating control beside the image (subtle glass, solid when transparency is reduced). */
.analysis-zoom-sep{width:1px;align-self:stretch;margin:4px 2px;background:var(--color-rule-2)}
#panel-frames .analysis-zoom{order:2;flex:0 0 auto;display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:10px;background:var(--zoom-glass);box-shadow:inset 0 0 0 1px var(--glass-rule),0 4px 14px var(--glass-shadow);-webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%)}
#panel-frames .analysis-zoom>button[data-zoom]{width:32px;min-height:30px;padding:0;display:inline-grid;place-items:center;background:transparent}
#panel-frames .analysis-zoom>button[data-zoom]:hover{background:var(--ws-fill-hover)}
#panel-frames .analysis-zoom-level{min-width:48px;text-align:center;font-size:13px;color:var(--color-ink);font-variant-numeric:tabular-nums}
@media (prefers-reduced-transparency:reduce){#panel-frames .analysis-zoom{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--studio-fill)}}
@media (prefers-reduced-motion:reduce){#panel-frames *,body.is-workspace #view-test *{transition:none!important;animation:none!important}}

/* ---- Fullscreen shell (≥ 1100 px): bar with steps on top, content below, no page scrolling ---- */
#workspace-bar{display:none}
body.is-workspace{overflow:hidden}
@media (min-width:1100px){
  body.is-workspace #view-test{position:fixed;inset:0;z-index:40;display:grid;grid-template-rows:52px minmax(0,1fr);margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:var(--color-paper-2);overflow:hidden}
  body.is-workspace #view-test>:not(#workspace-bar):not(#test-form){display:none}
  body.is-workspace #workspace-bar{display:grid;grid-template-columns:auto minmax(260px,1fr) auto auto;align-items:center;gap:14px;padding:0 16px 0 18px;background:var(--color-paper-2);border-bottom:1px solid var(--color-rule)}
  #workspace-bar .brand{display:flex;align-items:center;gap:12px;color:var(--color-ink);text-decoration:none}
  #workspace-bar .brand img{width:46px;height:40px;padding:4px;border-radius:var(--radius-control);background:var(--studio-ink);object-fit:contain}
  #workspace-bar .brand span{padding:0 0 0 12px;border-left:1px solid var(--color-rule-2);font-size:15px;font-weight:600;letter-spacing:-.01em;color:var(--color-ink)}
  #workspace-bar .ws-env{font-size:11px;white-space:nowrap}
  #workspace-bar .ws-env-short{display:none}
  #workspace-bar .profile-menu>summary{padding:2px 8px 2px 2px;font-size:13px}
  #workspace-bar .profile-avatar{width:30px;height:30px;font-size:12px}
  #workspace-bar .profile-actions{top:calc(100% + 6px)}
  #workspace-bar .ws-env[hidden]{display:none}
  #workspace-bar .ws-context{display:flex;align-items:center;gap:8px;min-width:0;padding-left:16px;border-left:1px solid var(--color-rule-2);font-size:14px;color:var(--color-neutral);white-space:nowrap;overflow:hidden}
  #workspace-bar .ws-context strong{flex:0 1 auto;min-width:8em;font-weight:500;color:var(--color-ink);overflow:hidden;text-overflow:ellipsis}
  #workspace-bar .ws-context>span{flex:0 0 auto;white-space:nowrap}
  #workspace-bar .ws-context>span::before{content:"·";margin-right:8px;color:var(--color-muted)}
  #workspace-bar .ws-steps{align-self:stretch;display:flex;justify-content:center}
  #workspace-bar .step-nav,#workspace-bar .step-nav ol{display:flex;align-items:stretch;height:100%;margin:0;padding:0;gap:2px;list-style:none}
  #workspace-bar .step-nav li{display:flex;flex:0 0 auto}
  body.is-workspace #workspace-bar .step-nav button{display:inline-flex;align-items:center;gap:7px;height:100%;min-height:0;width:auto;padding:0 10px;border:0;border-radius:0;background:transparent;color:var(--color-neutral);font-size:14px;box-shadow:none}
  body.is-workspace #workspace-bar .step-nav button:hover{background:transparent;color:var(--color-ink)}
  body.is-workspace #workspace-bar .step-nav button[aria-current=step]{color:var(--color-ink);box-shadow:inset 0 -2px 0 var(--ws-accent-text)}
  #workspace-bar .step-nav .step-index{width:18px;height:18px;min-width:18px;display:inline-grid;place-items:center;border-radius:50%;border:1px solid var(--color-rule-2);font-size:11px;line-height:1;background:transparent;color:inherit}
  #workspace-bar .step-nav button[aria-current=step] .step-index{background:var(--color-accent);border-color:var(--color-accent);color:var(--studio-on-blue)}
  #workspace-bar .step-nav button[data-done=true]:not([aria-current=step]) .step-index{color:transparent;border-color:var(--color-success);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.3 2.3 4.7-5' fill='none' stroke='%2363da82' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/13px no-repeat}
  #workspace-bar .step-nav .step-label,#workspace-bar .step-nav .step-status{display:none}
  #workspace-bar .step-nav .step-short{display:inline;white-space:nowrap}
  #workspace-bar .ws-end{display:flex;flex-wrap:nowrap;align-items:center;gap:14px;min-width:0}
  #workspace-bar .profile-menu>summary>span:last-child{white-space:nowrap}
  #workspace-bar .ws-note{padding:2px 8px;border-radius:999px;background:var(--color-warning-surface);font-size:12px;font-weight:500;color:var(--color-warning);white-space:nowrap;cursor:help}
  #workspace-bar .ws-note::before{content:"";display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:var(--color-warning);vertical-align:1px}
  #workspace-bar .ws-note[hidden]{display:none}
  body.is-workspace #video-analysis.is-workspace .analysis-head .analysis-label{display:none}
  body.is-workspace #video-analysis.is-workspace .analysis-head:not(:has(p:not(:empty):not([hidden]))){display:none}
  #workspace-bar .ws-status{max-width:180px;font-size:12px;color:var(--color-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #workspace-bar .ws-user{font-size:14px;color:var(--color-neutral);white-space:nowrap}
  #workspace-bar .ws-close{min-height:32px;padding:4px 12px;font-size:14px}
  body.is-workspace #test-form{display:grid;grid-template-rows:minmax(0,1fr);min-height:0}
  body.is-workspace #test-form>.save-row,body.is-workspace #test-form>section:not(#panel-frames){display:none}
  body.is-workspace #panel-frames{display:grid;grid-template-rows:minmax(0,1fr);min-height:0;margin:0;padding:0;border-radius:0;background:var(--color-paper-2)}
  body.is-workspace #panel-frames>.step-footer{display:none}
  /* Steps 4–5: the same shell; the step content scrolls inside it, the step buttons stay at the bottom. */
  body.is-workspace[data-ws-step=images] #panel-frames,body.is-workspace[data-ws-step=result] #panel-frames{display:block;overflow:auto;padding:20px max(24px,calc((100% - 1080px)/2)) 0}
  body.is-workspace[data-ws-step=images] #panel-frames>.step-footer,body.is-workspace[data-ws-step=result] #panel-frames>.step-footer{display:flex;position:sticky;bottom:0;margin:16px 0 0;padding:12px 0 16px;background:var(--color-paper-2);border-top:1px solid var(--color-rule)}
  body.is-workspace[data-ws-step=images] #frames-images,body.is-workspace[data-ws-step=result] #frames-result,body.is-workspace[data-ws-step=result] #video-analysis{padding:16px 20px;border-radius:var(--ws-radius);background:var(--ws-surface)}
  /* Result: a two-column review. The examiner's decision (test result) is the main column; the geometry is a compact summary beside it with its details behind folds. */
  body.is-workspace[data-ws-step=result] #panel-frames{display:grid;grid-template-columns:minmax(300px,400px) minmax(0,1fr);grid-template-rows:auto auto;column-gap:16px;align-content:start;align-items:start;padding:20px max(24px,calc((100% - 1280px)/2)) 0}
  body.is-workspace[data-ws-step=result] #panel-frames>.step-nav{display:none}
  body.is-workspace[data-ws-step=result] #video-analysis{grid-area:1/1/2/2;margin:0;max-width:none}
  body.is-workspace[data-ws-step=result] #frames-result{grid-area:1/2/2/3;margin:0;max-width:none}
  body.is-workspace[data-ws-step=result] #panel-frames>.step-footer{grid-column:1/-1}
  body.is-workspace[data-ws-step=result] #frames-result>h2{margin:0 0 6px;font-size:19px;font-weight:600;letter-spacing:-.01em}
  body.is-workspace[data-ws-step=result] #frames-result .fields{grid-template-columns:repeat(2,minmax(0,1fr))}
  body.is-workspace[data-ws-step=result] #frames-result .result-status{grid-template-columns:minmax(0,420px)}
  body.is-workspace[data-ws-step=result] #frames-result .result-status+.result-values{margin-top:0}
  body.is-workspace[data-ws-step=result] #frames-result .result-wide{display:block;margin:0 0 var(--space-lg)}
  body.is-workspace[data-ws-step=result] #frames-result .result-wide textarea{width:100%}
  body.is-workspace[data-ws-step=result] .analysis-step-title{font-size:16px}
  body.is-workspace[data-ws-step=result] .analysis-summary-line:first-child{font-size:15px}
  body.is-workspace[data-ws-step=result] .analysis-fold{margin-top:0;border-top:1px solid var(--color-rule)}
  body.is-workspace[data-ws-step=result] .analysis-fold>summary{font-size:13px;padding:9px 0;margin:0}
  body.is-workspace[data-ws-step=result] .analysis-fold[open]>summary{margin-bottom:6px}
  body.is-workspace[data-ws-step=result] .analysis-result>.analysis-actions{margin-top:0;padding-top:0;border-top:0}
  body.is-workspace[data-ws-step=result] .analysis-adopt-unavailable{padding:9px 0 0;border-top:1px solid var(--color-rule)}
  body.is-workspace[data-ws-step=result] .analysis-adopt-unavailable>p{margin:0 0 2px;font-size:13px}
  body.is-workspace[data-ws-step=result] .analysis-adopt-unavailable .analysis-fold{border-top:0}
  body.is-workspace[data-ws-step=result] .analysis-blockers{margin:0 0 8px;padding-left:18px;font-size:13px;color:var(--color-neutral)}
  body.is-workspace[data-ws-step=result] .analysis-curve-fold .analysis-curve{margin:4px 0 8px;padding:0}
  body.is-workspace[data-ws-step=result] svg.analysis-curve,body.is-workspace[data-ws-step=result] .analysis-curve-y{height:96px}
  body.is-workspace[data-ws-step=result] .analysis-signoff-line{margin:0;flex-wrap:wrap}
  body.is-workspace[data-ws-step=result] #frames-result .result-hint{margin-bottom:12px}
  @media (max-width:1300px){body.is-workspace[data-ws-step=result] #panel-frames{grid-template-columns:minmax(280px,340px) minmax(0,1fr)}body.is-workspace[data-ws-step=result] #frames-result .result-values{grid-template-columns:1fr}}
  body.is-workspace[data-ws-step=result] #panel-frames .analysis-transport,body.is-workspace[data-ws-step=result] #panel-frames .analysis-strip,body.is-workspace[data-ws-step=result] #panel-frames .analysis-scrub,body.is-workspace[data-ws-step=result] #panel-frames .analysis-strip-gutter{display:none}
  body.is-workspace[data-ws-step=result] #video-analysis>.analysis-curve{margin:14px 0 0;padding:0}
  body.is-workspace[data-ws-step=result] #video-analysis .analysis-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:0 0 12px;padding:0;border:0;background:transparent}
  body.is-workspace[data-ws-step=result] #video-analysis .analysis-toolbar .analysis-status{margin-right:auto}
  body.is-workspace[data-ws-step=result] #video-analysis .analysis-toolbar .analysis-next:not(.primary){background:var(--ws-fill);color:var(--ws-accent-text);font-weight:500}
  body.is-workspace[data-ws-step=result] .analysis-result{gap:4px;margin-top:4px}
  body.is-workspace[data-ws-step=result] .analysis-result h3{margin-top:0}
  body.is-workspace[data-ws-step=result] .analysis-result>.analysis-actions{margin-top:0;padding-top:0;border-top:0}
  body.is-workspace[data-ws-step=result] .analysis-actions>.analysis-task-head{margin-top:6px;padding-top:12px;border-top:1px solid var(--color-rule)}
  body.is-workspace[data-ws-step=result] .analysis-actions>.analysis-fold:first-child{margin-top:0}
  body.is-workspace[data-ws-step=result] .analysis-actions{margin-top:10px}
  body.is-workspace[data-ws-step=result] .step-footer{justify-content:space-between}
  #panel-frames .analysis-summary{display:grid;gap:2px;font-weight:500}
  #panel-frames .analysis-summary-line{display:block}
  #panel-frames .analysis-summary-line:first-child{font-size:16px;font-weight:600}
  #panel-frames .analysis-signoff-help{margin:0 0 8px;font-size:13px}
  #panel-frames .analysis-status-label{color:var(--color-muted);margin-right:2px}
  #panel-frames .analysis-actions .frame-actions{margin-top:8px}
  #panel-frames .analysis-actions .frame-actions button{flex:0 1 auto}
  #panel-frames .curve-gap{fill:var(--studio-warning);fill-opacity:.07}
#panel-frames .curve-gap-stripe{fill:var(--studio-warning);fill-opacity:.22}
#panel-frames .analysis-curve-gap-legend::before{content:"";display:inline-block;width:14px;height:10px;margin-right:6px;vertical-align:-1px;background:repeating-linear-gradient(90deg,rgb(255 193 106 / 40%) 0 1px,rgb(255 193 106 / 8%) 1px 9px);border-radius:2px}
  /* Steps 1–3: image left, contextual tools right with their actions at the foot, one shared timeline below. */
  body.is-workspace #video-analysis.is-workspace{display:grid;grid-template-columns:auto minmax(300px,1fr);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"main side" "curve side";column-gap:12px;min-height:0;margin:0;padding:12px}
  body.is-workspace #video-analysis.is-workspace>.analysis-workspace:not([hidden]){display:contents}
  /* The side column is one surface from the step title to the action bar; its width is set by fitStage (what the fitted image does not need). */
  body.is-workspace #video-analysis.is-workspace .analysis-side{grid-area:side;display:flex;flex-direction:column;min-height:0;min-width:0;border-radius:var(--ws-radius);background:var(--ws-surface);box-shadow:inset 0 0 0 1px var(--color-rule);container:side / size}
  body.is-workspace #video-analysis.is-workspace .analysis-side>.analysis-panel{order:0}
  body.is-workspace #video-analysis.is-workspace .analysis-side>.analysis-head{order:1}
  body.is-workspace #video-analysis.is-workspace .analysis-side>.analysis-toolbar{order:2}
  body.is-workspace #video-analysis.is-workspace .analysis-main{grid-area:main;display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:0;min-width:0;padding:10px;border-radius:var(--ws-radius);background:var(--ws-image)}
  body.is-workspace #video-analysis.is-workspace .analysis-main .analysis-stage{margin:0 auto;max-width:100%}
  body.is-workspace #video-analysis.is-workspace .analysis-main .analysis-controls{display:flex;flex-wrap:nowrap;align-items:center;justify-content:space-between;gap:12px;min-width:0;margin-top:8px}
  body.is-workspace #video-analysis.is-workspace .analysis-main .analysis-keys-help[open]>p{white-space:normal}
  body.is-workspace #video-analysis.is-workspace .analysis-panel{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:0;margin:0;overflow:auto;overscroll-behavior:contain;padding:16px 16px 0;scrollbar-width:thin}
  /* In the check step the detail view takes the height the column has: tools → review → detail → loupe grow, folds keep a small scroll area.
     In the other steps the tools keep their natural height and the folds take the rest. */
  body.is-workspace #video-analysis.is-workspace .analysis-tools{flex:0 0 auto;display:flex;flex-direction:column;min-height:0;padding:0;border:0;background:transparent}
  body.is-workspace #video-analysis.is-workspace .analysis-tools:has(>.analysis-review:not([hidden])){flex:1 1 auto}
  body.is-workspace #video-analysis.is-workspace .analysis-tools>:not([hidden]){flex:0 0 auto}
  body.is-workspace #video-analysis.is-workspace .analysis-tools>.analysis-review:not([hidden]){flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:auto}
  body.is-workspace #video-analysis.is-workspace .analysis-review>*,body.is-workspace #video-analysis.is-workspace .analysis-detail>*{flex:0 0 auto}
  body.is-workspace #video-analysis.is-workspace .analysis-review>.analysis-detail{flex:1 1 auto;min-height:242px}
  body.is-workspace #video-analysis.is-workspace .analysis-detail>.analysis-loupe{flex:1 1 160px;align-self:stretch;width:100%;max-width:none;min-height:120px;max-height:min(560px,calc(100cqw - 52px))}
  @container side (min-height:760px){body.is-workspace #video-analysis.is-workspace .analysis-detail>.analysis-loupe{min-height:160px}}
  body.is-workspace #video-analysis.is-workspace .analysis-detail-actions:not(:has(button:not([hidden]))){display:none}
  /* The review list of frames to check scrolls inside its own box instead of painting over the folds below. */
  body.is-workspace #video-analysis.is-workspace .analysis-review>.analysis-checks{flex:0 1 auto;min-height:30px;max-height:112px;overflow:auto}
  body.is-workspace #video-analysis.is-workspace .analysis-secondary{flex:1 1 0;min-height:32px;overflow:auto;margin-top:10px;padding-bottom:8px;border-top:1px solid var(--color-rule);scrollbar-width:thin}
  body.is-workspace #video-analysis.is-workspace .analysis-secondary{flex:0 0 auto;max-height:40cqh;min-height:44px;margin-top:8px;padding-bottom:6px}
  body.is-workspace #video-analysis.is-workspace .analysis-secondary:has(>.analysis-tech:not([open])){overflow:hidden}
  body.is-workspace #video-analysis.is-workspace .analysis-tech .analysis-fold>summary{min-height:32px;padding:6px 0;font-size:13px}
  body.is-workspace #video-analysis.is-workspace .analysis-more:has(>.analysis-review-more:not([hidden])) .analysis-legend-row{display:none}
  body.is-workspace #video-analysis.is-workspace .analysis-more{border-top:0}
  body.is-workspace #video-analysis.is-workspace .analysis-details{margin-top:0}
  /* Scale step: the same fields, set tighter for the narrower panel. */
  body.is-workspace #video-analysis.is-workspace .analysis-scale .analysis-instruction{font-size:15px;line-height:1.35}
  body.is-workspace #video-analysis.is-workspace .analysis-blocks{grid-template-columns:1fr;gap:10px;margin-top:8px;padding-top:8px}
  body.is-workspace #video-analysis.is-workspace .analysis-block{min-width:0}
  body.is-workspace #video-analysis.is-workspace .analysis-block-actions button,body.is-workspace #video-analysis.is-workspace .analysis-picks button{white-space:normal;max-width:100%;text-align:left;line-height:1.25}
  body.is-workspace #video-analysis.is-workspace .analysis-picks{flex-wrap:wrap}
  body.is-workspace #video-analysis.is-workspace .analysis-length,body.is-workspace #video-analysis.is-workspace .analysis-height{flex:1 1 200px;min-width:0}
  body.is-workspace #video-analysis.is-workspace .analysis-panel{overflow-x:hidden}
  body.is-workspace #video-analysis.is-workspace .analysis-block[data-state=active]{margin:0;padding:10px}
  body.is-workspace #video-analysis.is-workspace .analysis-block label{font-size:13px}
  body.is-workspace #video-analysis.is-workspace .analysis-tools input{min-height:34px;padding:4px 8px}
  body.is-workspace #video-analysis.is-workspace .analysis-block h4{font-size:12px}
  body.is-workspace #video-analysis.is-workspace .analysis-tools .analysis-pick{min-height:32px;padding:4px 8px;font-size:13px}
  body.is-workspace #video-analysis.is-workspace .analysis-checks[data-checks="0"],body.is-workspace #video-analysis.is-workspace .analysis-review .analysis-selected{display:none}
  body.is-workspace #video-analysis.is-workspace .analysis-head{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;min-height:0;padding:8px 16px 0}
  body.is-workspace #video-analysis.is-workspace .analysis-head .heading-row{margin:0}
  body.is-workspace #video-analysis.is-workspace .analysis-head p{margin:0;font-size:12px}
  body.is-workspace #video-analysis.is-workspace .analysis-label{padding:0;background:transparent;color:var(--color-warning);font-size:12px;font-weight:500}
  body.is-workspace #video-analysis.is-workspace .analysis-label::before{content:"";display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:var(--color-warning);vertical-align:1px}
  /* Toolbar in two short rows: status with the open-item chips, then Speichern and the one next action. */
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar{flex:0 0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;margin:0;padding:10px 16px 12px;border:0;border-top:1px solid var(--color-rule);border-radius:0;background:transparent}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar .analysis-status{order:1;flex:0 1 auto;min-width:0;margin:0;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar .analysis-open{display:contents}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar .analysis-open li{order:1;flex:0 0 auto;margin:0;list-style:none}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar [data-action=save-draft]{margin-left:auto}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar .analysis-chip{min-height:26px;padding:2px 10px;font-size:12px;white-space:nowrap}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar button{min-height:36px;padding:6px 14px;font-size:14px}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar [data-action=save-draft]{order:2;flex:0 0 auto;padding:6px 12px}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar .analysis-next{order:2;flex:1 1 60%;min-width:0;margin-left:0;background:var(--studio-selected);color:var(--ws-accent-text);font-weight:600;white-space:normal;line-height:1.2}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar .analysis-next:hover{background:var(--studio-fill-active)}
  body.is-workspace #video-analysis.is-workspace>.analysis-curve{grid-area:curve;margin:12px 0 0;padding:10px 14px 8px;border-radius:var(--ws-radius);background:var(--ws-surface);box-shadow:inset 0 0 0 1px var(--color-rule);container:timeline / inline-size}
  body.is-workspace #video-analysis.is-workspace .analysis-transport{flex-wrap:nowrap;gap:6px 10px}
  body.is-workspace #video-analysis.is-workspace>.analysis-curve>.analysis-curve-head{display:none}
  body.is-workspace #video-analysis.is-workspace .analysis-transport .analysis-curve-head{flex-wrap:nowrap;min-width:0;cursor:default}
  body.is-workspace #video-analysis.is-workspace .analysis-transport .analysis-curve-head>span{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
  body.is-workspace #video-analysis.is-workspace .analysis-transport .analysis-frame-number{flex:0 0 auto;margin-left:auto}
  @container timeline (max-width:1040px){#panel-frames .analysis-transport .analysis-range{display:none}}
  @container timeline (max-width:960px){#panel-frames .analysis-transport .analysis-curve-head>span:nth-child(3){display:none}#panel-frames .analysis-transport .analysis-readout{min-width:0}#panel-frames .analysis-transport .analysis-frame-number input{width:72px}}
  @container timeline (max-width:760px){#panel-frames .analysis-transport .analysis-curve-head{display:none}}
  body.is-workspace #video-analysis.is-workspace>.analysis-curve svg.analysis-curve{height:88px}
  body.is-workspace #video-analysis.is-workspace .analysis-curve-y{height:88px}
  body.is-workspace #video-analysis.is-workspace .analysis-result{display:none}
}
/* Narrow bar (viewports up to 1439 px): keep customer and test readable, drop the date and the MPL word. */
@media (min-width:1100px) and (max-width:1439px){
  body.is-workspace #workspace-bar{gap:10px;padding:0 12px 0 14px}
  #workspace-bar .brand span{display:none}
  #workspace-bar .ws-context{padding-left:0;border-left:0}
  #workspace-bar .ws-date{display:none}
  #workspace-bar .ws-user{display:none}
  #workspace-bar .profile-menu>summary>span:last-child{display:none}
}
/* Up to 1899 px the bar compresses gracefully (date and examiner name go, the avatar stays); up to 1599 px also the brand word, and the environment indicator keeps its short form (full text in title/aria-label). */
@media (min-width:1100px) and (max-width:1899px){
  #workspace-bar .ws-date{display:none}
  #workspace-bar .profile-menu>summary>span:last-child{display:none}
}
@media (min-width:1100px) and (max-width:1599px){
  #workspace-bar .brand span{display:none}
  #workspace-bar .ws-context{padding-left:0;border-left:0}
  #workspace-bar .ws-env-full{display:none}
  #workspace-bar .ws-env-short{display:inline}
}
/* Laptop widths up to 1365 px: tighter steps and context so the bar never overflows (steps, avatar and exit stay). */
@media (min-width:1100px) and (max-width:1365px){
  body.is-workspace #workspace-bar{grid-template-columns:auto minmax(200px,1fr) auto auto;gap:8px;padding:0 10px 0 12px}
  body.is-workspace #workspace-bar .step-nav button{padding:0 7px;font-size:13px}
  #workspace-bar .step-nav li+li{margin-left:0}
  #workspace-bar .ws-end{gap:10px}
  #workspace-bar .ws-close{padding:4px 10px}
}
/* Narrow side column (its own width, not the viewport): stacked status, short "Fehlt" label, one column in the scale step. */
@container side (max-width:430px){
  body.is-workspace #video-analysis.is-workspace .analysis-tech-hint{display:none}
  body.is-workspace #video-analysis.is-workspace .analysis-task-body{display:grid;gap:1px}
}
@container side (max-width:400px){
  body.is-workspace #video-analysis.is-workspace .analysis-detail-state{flex-direction:column;align-items:flex-start;gap:2px}
  body.is-workspace #video-analysis.is-workspace .analysis-nudges .analysis-gap .analysis-gap-full{display:none}
  body.is-workspace #video-analysis.is-workspace .analysis-nudges .analysis-gap .analysis-gap-short{display:inline}
  body.is-workspace #video-analysis.is-workspace .analysis-blocks{grid-template-columns:1fr}
  body.is-workspace #video-analysis.is-workspace .analysis-task-head h3{font-size:17px}
}
/* Laptop heights (1366×768): chrome shrinks first so the image, the detail view with its actions and the timeline stay visible. */
@media (min-width:1100px) and (max-height:830px){
  body.is-workspace #view-test{grid-template-rows:46px minmax(0,1fr)}
  body.is-workspace #video-analysis.is-workspace{padding:10px 10px 0;column-gap:10px}
  body.is-workspace #video-analysis.is-workspace .analysis-main{padding:8px}
  body.is-workspace #video-analysis.is-workspace .analysis-main .analysis-controls{margin-top:6px}
  body.is-workspace #video-analysis.is-workspace .analysis-panel{padding:12px 14px 0}
  body.is-workspace #video-analysis.is-workspace .analysis-task-head h3{font-size:17px}
  body.is-workspace #video-analysis.is-workspace .analysis-marker-switch,body.is-workspace #video-analysis.is-workspace .analysis-detail{margin-top:8px}
  body.is-workspace #video-analysis.is-workspace .analysis-detail{padding:8px;gap:6px}
  body.is-workspace #video-analysis.is-workspace .analysis-loupe-confirm{min-height:38px;margin-top:8px;font-size:15px}
  body.is-workspace #video-analysis.is-workspace .analysis-marker-pick{min-height:34px}
  body.is-workspace #video-analysis.is-workspace .analysis-secondary{max-height:36cqh}
  body.is-workspace #video-analysis.is-workspace .analysis-review>.analysis-checks{max-height:76px}
  body.is-workspace #video-analysis.is-workspace .analysis-tasks .analysis-checks ul{max-height:64px;overflow:auto}
  body.is-workspace #video-analysis.is-workspace .analysis-task-item{min-height:30px;padding:3px 8px 3px 6px}
  body.is-workspace #video-analysis.is-workspace .analysis-tasks{margin-top:4px}
  /* Long task details (gaps) stay on one line at laptop height; the full text is in the tooltip. */
  body.is-workspace #video-analysis.is-workspace .analysis-tasks>li[data-state=info] .analysis-task-detail{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
  body.is-workspace #video-analysis.is-workspace .analysis-tasks .analysis-checks{padding-bottom:0}
  body.is-workspace #video-analysis.is-workspace .analysis-detail{gap:4px}
  body.is-workspace #video-analysis.is-workspace .analysis-secondary{padding-bottom:2px}
  body.is-workspace #video-analysis.is-workspace .analysis-tech>summary{min-height:32px;padding:5px 6px}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar{padding:8px 14px 10px}
  body.is-workspace #video-analysis.is-workspace .analysis-marker-switch{margin-top:6px}
  body.is-workspace #video-analysis.is-workspace .analysis-head{padding-top:6px}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar{padding:8px 14px 10px;gap:6px}
  body.is-workspace #video-analysis.is-workspace .analysis-toolbar button{min-height:34px}
  body.is-workspace #video-analysis.is-workspace>.analysis-curve{margin:10px 0;padding:6px 12px 4px}
  body.is-workspace #video-analysis.is-workspace>.analysis-curve svg.analysis-curve,body.is-workspace #video-analysis.is-workspace .analysis-curve-y{height:38px}
  body.is-workspace #video-analysis.is-workspace .analysis-strip{height:26px;margin-bottom:3px}
  body.is-workspace #video-analysis.is-workspace .analysis-curve-x{height:24px;margin-top:1px}
  body.is-workspace #video-analysis.is-workspace .analysis-transport .analysis-transport-buttons>button{min-height:30px;width:34px}
  body.is-workspace #video-analysis.is-workspace .analysis-transport .analysis-transport-buttons>.analysis-play{width:34px;min-height:34px}
  body.is-workspace #video-analysis.is-workspace .analysis-transport input{min-height:30px;padding:2px 8px}
  body.is-workspace #video-analysis.is-workspace .analysis-scrub input[type=range]{min-height:16px}
}
@media (max-width:700px){.analysis-transport .analysis-readout{min-width:0;flex:1 1 100%}}

/* Navigation preview only; point edits always wait for the decoded original. */
.analysis-preview{opacity:0;position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}
.analysis-preview[hidden],.analysis-loupe-preview[hidden]{display:none}
.analysis-loupe-preview{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.analysis-loupe-cross{z-index:1}

.analysis-preview-image{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.analysis-preview-image[hidden]{display:none}

/* Hallmark · genre: modern-minimal · macrostructure: Workbench · design-system: design.md · designed-as-app
   Internal portal: the same palette and control vocabulary on every route. */
body {
  --color-paper:var(--studio-surface);--color-paper-2:var(--studio-canvas);--color-paper-3:var(--studio-raised);
  --color-ink:var(--studio-ink);--color-neutral:var(--studio-secondary);--color-muted:var(--studio-muted);
  --color-rule:var(--studio-rule);--color-rule-2:var(--studio-rule-strong);
  --color-accent:var(--studio-blue);--color-accent-hover:var(--studio-blue-hover);--color-accent-ink:var(--studio-on-accent);--color-focus:var(--studio-blue-text);
  --color-brand-surface:var(--studio-blue);--color-brand-surface-2:var(--studio-blue-hover);
  --color-success:var(--studio-success);--color-success-surface:var(--studio-success-fill);
  --color-warning:var(--studio-warning);--color-warning-surface:var(--studio-warning-fill);
  --color-error:var(--studio-error);--color-error-surface:var(--studio-error-fill);
  --color-shadow:var(--studio-shadow);--color-overlay:var(--studio-overlay);
  --radius-control:var(--studio-radius-control);--radius-surface:var(--studio-radius-surface);
  color-scheme:var(--studio-scheme);border-top:0;font-family:var(--font-body);-webkit-font-smoothing:antialiased;
}
html,body{overflow-x:clip}
h1,h2,h3,h4{font-family:var(--font-display);font-style:normal;min-width:0;overflow-wrap:anywhere}
h1{font-size:clamp(24px,2vw,32px);font-weight:650;letter-spacing:-.035em}
h2{font-weight:600;letter-spacing:-.015em}
a,.text-button,summary{color:var(--studio-blue-text)}
button{background:var(--studio-fill);border-color:transparent;border-radius:var(--radius-control);white-space:nowrap;font-weight:500}
button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.55}
button:disabled:hover{background:var(--studio-fill);border-color:transparent}
button:active{background:var(--studio-fill-active)}
button.primary{background:var(--color-accent);border-color:transparent;color:var(--color-accent-ink)}
input,select,textarea{background:var(--studio-panel);border-color:var(--studio-rule-strong);outline:2px solid transparent;outline-offset:2px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline-color:var(--color-focus)}
input[aria-invalid=true],textarea[aria-invalid=true],select[aria-invalid=true]{border-color:var(--color-error)}
button[aria-busy=true]{cursor:progress}
.field-help{min-height:1lh}
:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}
.app-header{position:sticky;top:0;z-index:var(--z-raised);min-height:var(--studio-header-height);padding-inline:var(--space-xl);background:var(--studio-glass);backdrop-filter:blur(18px)}
.brand{gap:var(--space-md)}
.app-header .brand img{width:52px;height:44px;padding:4px;border-radius:var(--radius-control);background:var(--studio-ink)}
.brand span{font-size:15px;letter-spacing:-.01em;color:var(--color-ink);font-weight:600}
.environment-label{border:0;background:var(--studio-fill);color:var(--color-muted);font-size:11px}
.profile-avatar{background:var(--studio-selected);color:var(--studio-blue-text)}
.profile-actions{background:var(--studio-surface);border-color:var(--studio-rule-strong);border-radius:var(--radius-surface)}
.shell{grid-template-columns:224px minmax(0,1fr);min-height:calc(100dvh - 110px)}
.navigation{top:var(--studio-header-height);padding:var(--space-lg) var(--space-sm);min-height:calc(100dvh - 110px);background:var(--studio-panel)}
.navigation>button{padding:12px 14px;border:0;border-radius:var(--radius-control);font-size:14px;font-weight:500;white-space:nowrap}
.navigation>button[aria-current=page]{background:var(--studio-selected);color:var(--studio-blue-text);box-shadow:none}
.nav-context{gap:6px;margin-top:var(--space-xl);padding:var(--space-lg) var(--space-md) 0;line-height:1.6}
main{width:100%;max-width:none;padding:var(--space-xl) clamp(20px,3vw,48px) var(--space-2xl)}
/* Lists use the available screen; individual data-entry panels stay readable. */
#panel-assignment,#panel-load,#panel-result,#wrapper-form,#frames-result{max-width:1100px}
.view{padding:0;border:0;border-radius:0;box-shadow:none;background:transparent}
.heading-row{align-items:center;margin-bottom:var(--space-lg)}
.breadcrumb{margin-bottom:var(--space-xs);color:var(--color-muted)}
.day-context{padding:var(--space-md) var(--space-lg);border:1px solid var(--color-rule);background:var(--studio-panel)}
.day-context strong{font-size:11px;letter-spacing:.07em}
.toolbar{margin-block:var(--space-lg) var(--space-md)}
.table-scroll{background:var(--studio-panel);border-color:var(--color-rule)}
th{background:var(--studio-surface);font-size:11px;letter-spacing:.06em;color:var(--color-muted)}
td{padding:var(--space-md) var(--space-sm)}
td strong{font-weight:600}
tbody tr:hover td{background:var(--studio-surface)}
.status{padding:4px 8px;font-weight:500;background:var(--studio-fill);border-radius:6px}
.status-ready{background:var(--color-success-surface);color:var(--color-success)}
.status-problem{background:var(--color-warning-surface);color:var(--color-warning)}
.days-filters{padding:var(--space-lg);background:var(--studio-panel);border:1px solid var(--color-rule)}
.filter-actions button[type=submit]{color:var(--studio-blue-text)}
#view-days .table-scroll{margin-inline:0;border:1px solid var(--color-rule);border-radius:var(--radius-surface);overflow:clip}
#view-days th{padding:12px 16px;background:var(--studio-surface)}
#view-days td{padding:16px;border-color:var(--color-rule)}
.days-pagination{margin:0;padding:var(--space-md) 0 0;border:0}
.tabs{margin-block:var(--space-lg);gap:var(--space-xs)}
.tabs button{font-size:14px;color:var(--color-neutral)}
.tabs button[aria-selected=true]{color:var(--studio-blue-text);border-bottom-color:var(--studio-blue-text)}
.fields{gap:var(--space-lg);margin-block:var(--space-lg)}
.save-row{margin-inline:0;border-radius:var(--radius-surface);padding:var(--space-sm) var(--space-md);background:var(--studio-surface)}
.wrapper-row{padding-block:var(--space-lg)}
.frame-slot{background:var(--studio-panel)}
.frame-preview,#recording-preview{background:var(--studio-image)}
dialog{position:fixed;inset:0;margin:auto;height:fit-content;max-height:85dvh;overflow:auto;padding:var(--space-lg);border-color:var(--color-rule);border-radius:var(--radius-surface)}
dialog::backdrop{background:var(--color-overlay);backdrop-filter:blur(4px)}
#local-persistence{padding:0;border:0;background:transparent;color:var(--color-muted)}
footer,.app-version{background:var(--studio-canvas);border-color:var(--color-rule)}
/* Paper is an intentional report preview, matching the eventual customer document. */
.print-report{--color-paper:var(--report-paper);--color-paper-2:var(--report-subtle);--color-ink:var(--report-ink);--color-muted:var(--report-muted);--color-neutral:var(--report-secondary);--color-rule:var(--report-rule);--color-accent:var(--report-blue);color-scheme:light;color:var(--color-ink);background:var(--color-paper)}
/* The canvas clips only at the viewer boundary, never at the source's aspect-ratio box. */
.analysis-canvas{inset:auto;left:0;top:0}
.analysis-stage{background:var(--studio-image)}
.analysis-chip-label.is-confirmed,#panel-frames .analysis-chip-label.is-confirmed{background:var(--studio-success-fill);color:var(--studio-success)}
@media (hover:hover) and (pointer:fine){
  button:hover{background:var(--studio-fill-hover);border-color:transparent}
  button.primary:hover{background:var(--color-accent-hover)}
  input:hover,select:hover,textarea:hover{background:var(--studio-surface);border-color:var(--studio-rule-strong)}
  .text-button:hover{background:transparent;color:var(--studio-blue-text)}
}
@media (max-width:1099px){body.is-workspace{overflow-y:auto}.analysis-stage{width:100%;height:clamp(240px,50dvh,620px);aspect-ratio:auto!important}}
@media (max-width:900px){
  #view-days tbody tr{padding:var(--space-md)}
  #view-days td{padding:0}
}
@media (max-width:900px){
  .app-header{position:relative;padding:var(--space-sm) var(--space-md);gap:var(--space-sm)}
  .app-header .brand img{width:40px;height:36px}
  .app-header .brand span{font-size:13px;padding-left:var(--space-sm)}
  .environment-label{display:none}
  .shell{display:block}
  .navigation{top:auto;min-height:0;padding:var(--space-xs);gap:4px;flex-direction:row;flex-wrap:wrap;overflow:visible;border-right:0}
  .navigation>button{flex:1 1 45%;min-height:44px;font-size:13px;padding:8px}
  .nav-context{display:none}
  main{padding:var(--space-lg) var(--space-md) var(--space-xl)}
  .view{padding:0}
  .heading-row{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-md)}
  .heading-row.small{flex-direction:row;flex-wrap:wrap}
  .fields,.details-list,.report-layout{grid-template-columns:minmax(0,1fr)}
  .day-context{padding:var(--space-md)}
  .days-filters{padding:var(--space-md)}
  .tabs{margin-inline:0;padding:0;flex-wrap:wrap;border:0}
  .tabs button{flex:1 1 45%;border-radius:var(--radius-control);border-bottom:0;min-height:44px;justify-content:flex-start}
  .tabs button[aria-selected=true]{background:var(--studio-selected)}
  #panel-frames .step-nav ol{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}
  #panel-frames .step-nav li:last-child{grid-column:1/-1}
  #panel-frames .step-nav button{min-height:44px;padding:8px;column-gap:6px}
  #panel-frames .step-nav .step-index{width:20px;min-width:20px;height:20px}
  #panel-frames .step-nav .step-short{font-size:12px;font-weight:500}
  .product-row{flex-wrap:wrap}
  .product-row label{flex-basis:100%}
  .analysis-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .analysis-transport{gap:8px}
  .analysis-transport .analysis-readout{flex-basis:100%}
  .analysis-controls{flex-wrap:wrap}
  .analysis-keys{display:none}
  .step-footer{gap:8px}
  .analysis-toolbar .analysis-next{white-space:nowrap;font-size:12px;padding-inline:8px}
  .print-report{padding:var(--space-md)}
  .dialog-actions{flex-wrap:wrap}
}
@media (prefers-reduced-transparency:reduce){.app-header{background:var(--studio-surface);backdrop-filter:none}dialog::backdrop{backdrop-filter:none}}
@media print{body{color-scheme:light}.print-report{border-radius:0;box-shadow:none}}

.table-scroll{position:relative}
#report-issues{border-left-width:1px}
.issue-links{display:grid;gap:var(--space-sm)}
.issue-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);min-width:0}
.issue-item>span{min-width:0;font-size:14px;overflow-wrap:anywhere}
.issue-item>span>small{display:block;margin-top:2px;font-size:13px;color:var(--color-neutral)}
.issue-item .issue-actions{display:flex;flex-shrink:0;gap:8px}
.issue-item .issue-actions button{min-height:36px;padding:6px 12px;font-size:14px}
#report-issues>p{margin:0 0 10px;font-size:14px}
.result-hint{margin:0 0 4px;padding:10px 14px;border-radius:var(--radius-control);background:var(--studio-fill);font-size:14px;line-height:1.45;color:var(--color-neutral);max-width:none}
.result-hint .result-hint-link{display:inline;min-height:0;padding:0;font-size:inherit;font-weight:600;color:var(--studio-blue-text);text-decoration:underline;text-underline-offset:3px;white-space:normal}
.result-hint.is-open{background:var(--color-warning-surface);color:var(--color-ink)}
.result-hint.is-open strong{color:var(--color-warning)}
.result-hint.is-ok{background:var(--color-success-surface);color:var(--color-success)}
@media(max-width:700px){.issue-item{align-items:flex-start;flex-direction:column;gap:var(--space-xs)}}

/* Application destinations and a selected day's tools are separate navigation levels. */
.nav-global,.nav-local{display:grid;gap:4px;min-width:0}
.navigation nav>button{display:flex;align-items:center;width:100%;min-width:0;min-height:44px;padding:12px 14px;border:0;border-radius:var(--radius-control);background:transparent;color:var(--color-neutral);text-align:left;font-size:14px;font-weight:500}
.navigation nav>button:hover{background:var(--studio-fill-hover)}
.navigation nav>button[aria-current]{background:var(--studio-selected);color:var(--studio-blue-text)}
.day-navigation{margin-top:var(--space-lg);border-top:1px solid var(--color-rule);min-width:0}
.day-navigation .nav-context{margin:0;padding:var(--space-lg) var(--space-md) var(--space-md);border:0;gap:4px}
.nav-context .nav-day-date{color:var(--color-ink);font-variant-numeric:tabular-nums}
.nav-context .nav-project{font-size:12px;overflow-wrap:anywhere}
@media(max-width:900px){
  .navigation{display:block}
  .nav-global{display:block}
  .nav-global>button{width:auto}
  .day-navigation{margin-top:4px}
  .day-navigation .nav-context{display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:12px 10px 8px}
  .nav-context .nav-project{display:none}
  .nav-local{grid-template-columns:repeat(3,minmax(0,1fr))}
  .navigation .nav-local>button{justify-content:center;padding:10px 6px;font-size:13px}
}

/* Report and release surfaces (internal): three columns, paper preview, protected access. */
.breadcrumb{font-size:13px;letter-spacing:0}
.step-nav .step-index{display:none!important}
.report-layout{grid-template-columns:190px minmax(0,1fr) 260px;gap:24px}
.report-controls,.release-controls{min-width:0}
.release-controls{padding-left:24px;border-left:1px solid var(--color-rule)}
.release-controls h2{margin-top:4px}
.release-controls p{font-size:14px;color:var(--color-muted);margin:0 0 20px}
.release-controls label{margin-top:20px}
.release-controls .check{display:flex;gap:10px;align-items:flex-start}
.release-controls button[type=submit]{width:100%;white-space:normal;margin-top:24px}
#release-link{margin-top:24px;border-top:1px solid var(--color-rule);padding-top:8px}
#release-url{font-size:13px}
#release-status{overflow-wrap:anywhere;color:var(--color-ink);margin:16px 0}
.release-version{padding:14px 0;border-bottom:1px solid var(--color-rule)}
.release-version button{padding:8px 10px;width:100%;text-align:left;font-size:14px;white-space:normal}
.release-version p{font-size:12px;color:var(--color-muted);margin-top:8px}
.release-version .text-button{padding:0;min-height:40px}
.report-preview-tabs{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;font-size:13px}
.report-preview-tabs button{font-size:13px;min-height:40px;padding:8px}
#report-saved-preview{background:var(--report-paper);color:var(--report-blue)}
#report-saved-preview p{padding:16px;margin:0;font-size:14px}
#report-saved-preview a{color:var(--report-blue)}
#saved-report-frame{display:block;border:0;width:100%;height:75vh;min-height:520px;background:var(--report-paper)}
.print-report{background:var(--report-paper);border:0;border-radius:0;color:var(--report-ink);box-shadow:0 8px 28px rgb(0 0 0 / 15%)}
.print-report h2,.print-report h3{color:var(--report-blue)}
.print-report .report-brand img{width:125px}
html{scrollbar-color:var(--studio-rule-strong) var(--studio-canvas);scrollbar-width:thin}
::selection{background:var(--studio-accent);color:var(--studio-on-accent)}
@media(max-width:1399px){.report-layout{grid-template-columns:170px minmax(0,1fr)}.release-controls{grid-column:1/-1;border-left:0;border-top:1px solid var(--color-rule);padding:24px 0;max-width:600px}.release-controls form{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.release-controls .check,.release-controls .field-help,.release-controls button,.release-controls #release-status,.release-controls #release-link{grid-column:1/-1}}
@media(max-width:900px){.shell{grid-template-columns:1fr}.navigation{position:static;min-height:0;flex-direction:row;padding:12px 16px;border-right:0;border-bottom:1px solid var(--color-rule)}.navigation .nav-global{flex-shrink:0}.navigation .day-navigation{margin:0}.nav-context{display:none}.navigation .nav-local{display:flex;flex-wrap:wrap}.navigation .nav-local button{font-size:13px;padding:10px}.report-layout{grid-template-columns:1fr}.report-controls{display:grid;gap:16px}.release-controls{grid-column:auto}.app-header{padding-inline:16px}.app-header .brand span{font-size:14px}.report-preview-tabs{flex-wrap:wrap}}
@media(max-width:600px){.release-controls form{display:block}.navigation{display:block}.navigation .nav-local{margin-top:8px}.app-header .brand img{width:72px}.app-header .brand{gap:8px}.app-header .brand span{padding-left:8px;max-width:135px}.app-header .environment-label{display:none}.account-area{gap:6px}.app-header .profile-menu>summary>span:last-child{display:none}}
@media print{.release-controls,.report-controls,.report-preview-tabs,#report-saved-preview{display:none!important}.report-layout{display:block}.print-report{box-shadow:none}}
/* The loupe tether is drawn by script over the image column; hidden until a marker is selected in the check step. */
.analysis-loupe-link{display:none;position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none;overflow:hidden;color:var(--studio-accent)}
