:root{--va-navy:#0f2e4b;--va-navy-deep:#0a2138;--va-teal:#25a9ae;--va-mid:#217989;--va-deep:#175469;--va-bg:#f3f6f9;--va-surface:#fff;--va-surface-2:#f8fafc;--va-border:#e2e8f0;--va-text:#1e293b;--va-text-dim:#64748b;--va-accent:var(--va-navy);--va-accent-soft:#25a9ae1f;color:var(--va-text);background:var(--va-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-height:100vh;margin:0}body{background:var(--va-bg)}h1,h2,p{margin:0}h1,h2{color:var(--va-navy)}input,button{font:inherit}.vecta-logo{justify-content:center;align-items:center;gap:.75rem;display:flex}.vecta-logo img{width:auto;height:56px}.vecta-logo-compact{gap:.5rem;width:100%}.vecta-logo-compact img{object-fit:contain;width:100%;height:72px}.vecta-logo-word{letter-spacing:.02em;color:var(--va-navy);font-size:1.6rem;font-weight:800}.app-shell{background:var(--va-bg);min-height:100vh;color:var(--va-text);grid-template-columns:280px 1fr;display:grid}.login-shell{grid-template-columns:2fr 1fr}.sidebar,.panel{padding:2rem}.sidebar{background:var(--va-surface);border-right:1px solid var(--va-border);flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar .sidebar-calibration{margin-top:auto}.sidebar-user{align-items:center;gap:.75rem;margin-top:1.25rem;display:flex}.sidebar-avatar{background:var(--va-accent-soft);width:2.5rem;height:2.5rem;color:var(--va-deep);border:1px solid #25a9ae59;border-radius:50%;flex-shrink:0;place-items:center;font-size:.9rem;font-weight:700;display:grid}.sidebar-user-names{flex:1;min-width:0}.sidebar-user-names p{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.sidebar p{color:var(--va-text-dim);margin-top:.25rem;font-size:.9rem}.sidebar .sidebar-signout{background:var(--va-surface);border:1px solid var(--va-border);width:2.25rem;height:2.25rem;color:var(--va-navy);flex-shrink:0;place-items:center;margin:0;padding:0;display:grid}.sidebar .sidebar-signout:hover:not(:disabled){background:var(--va-surface-2);border-color:var(--va-teal)}.sidebar-username{color:var(--va-text);font-weight:700}.login-hero{background:var(--va-surface-2);border-right:1px solid var(--va-border);align-items:flex-start;padding:2.5rem;display:flex}.login-hero .vecta-logo img{height:72px}.login-hero .vecta-logo-word{font-size:2rem}.login-panel{background:var(--va-bg);justify-content:center;align-items:center;padding:2rem;display:flex}.login-card{background:var(--va-surface);border:1px solid var(--va-border);border-radius:1rem;width:min(100%,360px);padding:2rem;box-shadow:0 10px 30px #0f2e4b14}.login-card h2{margin-bottom:1rem;font-size:1.35rem}.calibration-steps{gap:1.25rem;display:grid}.dashboard{gap:1rem;width:100%;display:grid}.subnav{background:var(--va-surface);border:1px solid var(--va-border);border-radius:.75rem;justify-content:space-between;gap:2rem;padding:.6rem 1rem;display:flex}.subnav-group{justify-items:start;gap:.3rem;display:grid}.subnav-heading{text-transform:uppercase;letter-spacing:.08em;color:var(--va-text-dim);padding-left:.2rem;font-size:.68rem;font-weight:700}.subnav-options{background:var(--va-surface-2);border:1px solid var(--va-border);border-radius:.6rem;flex-wrap:wrap;gap:.2rem;padding:.2rem;display:flex}.subnav button{color:var(--va-text);background:0 0;border:1px solid #0000;margin-top:0;padding:.45rem .8rem;font-size:.9rem;font-weight:500}.subnav button:hover{background:var(--va-accent-soft);color:var(--va-navy)}.subnav button.active{background:var(--va-navy);border-color:var(--va-navy);color:#fff}.dashboard-body{grid-template-columns:minmax(0,1fr) minmax(260px,300px);align-items:stretch;gap:1rem;display:grid}.mirror-panel{background:linear-gradient(160deg, color-mix(in srgb, var(--va-mid) 28%, var(--va-bg)), color-mix(in srgb, var(--va-deep) 38%, var(--va-bg)));border:1px solid color-mix(in srgb, var(--va-mid) 30%, transparent);border-radius:.75rem;place-items:center;height:calc(100dvh - 220px);min-height:480px;padding:1rem;display:grid;overflow:hidden}.mirror-chart{background:#fff;border-radius:.5rem;place-items:center;width:100%;height:100%;display:grid;overflow:hidden;box-shadow:0 1px 2px #0f2e4b14,0 8px 24px #0f2e4b1f;container-type:size}.chart-preview{--gap:.6;--cell:min((100cqw - 15rem) / (var(--columns,5) * (1 + var(--gap))), (100cqh - 4rem) / (var(--preview-rows) * (1 + var(--gap))));--track:calc(var(--cell) * (1 + var(--gap)));grid-template-columns:2.5rem 4rem repeat(var(--tracks,5), var(--track)) 4rem;grid-template-rows:2.5rem;grid-auto-rows:var(--track);color:#000;place-items:center;column-gap:.5rem;display:grid}.chart-preview-split{--cell:min((100cqw - 18rem) / (var(--tracks,10) * (1 + var(--gap))), (100cqh - 4rem) / (var(--preview-rows) * (1 + var(--gap))));grid-template-columns:2.5rem 4rem repeat(var(--tracks,10), var(--track)) 4rem 2.5rem}.chart-preview-row{display:contents}.chart-preview-label{font-size:clamp(.75rem, calc(var(--cell) * .17), 1.1rem);color:#475569;font-weight:600}.chart-preview .chart-preview-label,.astigmatism-preview .chart-preview-label{color:var(--va-deep);white-space:nowrap;background:#ffffffeb;border:1px solid #0f2e4b1f;border-radius:.45rem;justify-self:center;padding:.1rem .45rem;box-shadow:0 1px 2px #0f2e4b1f}.chart-preview-letter{width:var(--cell);height:var(--cell)}.chart-preview-letter[data-masked=true]{opacity:.3}.mirror-split{grid-template-columns:1fr 1fr;place-items:stretch stretch;display:grid}.mirror-half{place-items:center;display:grid;overflow:hidden;container-type:size}.duochrome-swatch{border:1px solid var(--va-border);border-radius:.5rem;height:3rem;margin:.75rem 0;display:flex;overflow:hidden}.duochrome-swatch span{flex:50%}.step-actions{flex-wrap:wrap;gap:.5rem;display:flex}.duochrome-preview{color:#000;width:calc(100cqw - 4rem);height:calc(100cqh - 4rem)}.astigmatism-preview{color:#000;justify-items:center;gap:1rem;display:grid}.astigmatism-preview svg{width:min(100cqw - 4rem,100cqh - 6rem);height:min(100cqw - 4rem,100cqh - 6rem)}.astigmatism-preview[data-unrenderable=true] .chart-preview-label,.chart-preview-row[data-unrenderable=true] .chart-preview-label{color:#b45309;text-decoration:line-through}.eye-toggle{color:var(--va-deep);background:#ffffffeb;border:1px solid #0f2e4b1f;border-radius:.45rem;place-items:center;margin:0;padding:.2rem .3rem;font-weight:600;display:grid;box-shadow:0 1px 2px #0f2e4b1f}.eye-toggle:hover:not(:disabled){border-color:var(--va-teal);background:#fff}.eye-toggle[aria-pressed=false]{color:#8a9bb0}.eye-toggle svg{width:clamp(18px, calc(var(--cell) * .26), 26px);height:auto}.eye-toggle kbd{font-family:inherit;font-size:.65rem;line-height:1}.mirror-placeholder{color:#9db4c8;text-align:center}.tool-rail{flex-direction:column;gap:.75rem;display:flex}.tool-rail-title,.tool-panel{background:var(--va-surface);border:1px solid var(--va-border);border-radius:.75rem}.tool-rail-title{gap:.75rem;padding:1rem 1.25rem;display:grid}.tool-rail-title .warning-banner{margin:0;padding:.6rem .75rem;font-size:.8rem;line-height:1.4}.tool-rail-header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.tool-rail h3{color:var(--va-navy);margin:0}.icon-button{flex-shrink:0;place-items:center;width:2.5rem;height:2.5rem;margin-top:0;padding:0;display:grid}.tool-panel{gap:.75rem;padding:1rem 1.25rem 1.25rem;display:grid}.tool-panel header{justify-content:space-between;align-items:center;display:flex}.tool-panel h4{letter-spacing:.06em;text-transform:uppercase;color:var(--va-text-dim);margin:0;font-size:.72rem;font-weight:600}.tool-panel header kbd{color:var(--va-text-dim);font-family:inherit;font-size:.72rem;font-weight:600}.tool-panel .control-pad,.tool-panel .warning-banner,.tool-panel .field-help,.tool-rail>.warning-banner{margin:0}.tool-panel .warning-banner{padding:.6rem .75rem;font-size:.8rem;line-height:1.4}.tool-select{border:1px solid var(--va-border);background:var(--va-surface);color:var(--va-text);font:inherit;border-radius:.6rem;padding:.6rem .7rem;font-size:.95rem}.tool-select:focus{border-color:var(--va-teal);box-shadow:0 0 0 3px var(--va-accent-soft);outline:none}.control-pad.control-pad-3{grid-template-columns:repeat(3,1fr)}.control-pad.control-pad-1{grid-template-columns:1fr}.control-pad button.pad-glyph,.line-stepper button.pad-glyph{font-size:1.2rem;line-height:1}.control-pad button.pad-icon{place-items:center;padding:.6rem .5rem;display:grid}.control-pad button.pad-icon[aria-pressed=true] svg{color:#fff}.line-stepper{grid-template-columns:1fr auto 1fr;align-items:center;gap:.75rem;display:grid}.line-stepper button{margin-top:0;padding:.9rem .5rem}.line-stepper output{text-align:center;min-width:2ch;color:var(--va-navy);font-size:1.25rem;font-weight:600}.flip-swatch{border:1px solid #0f2e4b40;border-radius:.25rem;display:inline-flex;overflow:hidden}.flip-swatch i{width:1.1rem;height:1.1rem;display:block}.tool-group{gap:.35rem;margin-top:1rem;display:grid}.tool-group strong{color:var(--va-navy)}@media (width<=1100px){.dashboard-body{grid-template-columns:1fr}.subnav{flex-direction:column}}.step-card{background:var(--va-surface);border:1px solid var(--va-border);border-radius:.75rem;padding:1.25rem 1.5rem}.step-title{align-items:center;gap:.6rem;margin-bottom:.75rem;font-size:1.05rem;display:flex}.step-number{background:var(--va-navy);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:1.7rem;height:1.7rem;font-size:.95rem;display:inline-flex}.step-card button{margin-top:1rem}.step-done{color:var(--va-deep);margin-top:.75rem;font-weight:600}.welcome-title{color:var(--va-navy);margin-bottom:.25rem;font-size:1.6rem;font-weight:800}.card,.status-bar,label,button{margin-top:1rem;display:block}.card{background:var(--va-surface);border:1px solid var(--va-border);border-radius:.75rem;padding:.75rem 1rem}.card strong{color:var(--va-navy)}.panel{place-content:start center;gap:1rem;display:grid}.workspace-panel{gap:1.25rem;width:100%;margin:0 auto;padding:1.5rem 2rem}.workspace-panel-wide{grid-template-columns:minmax(0,1fr);justify-content:stretch}.workspace-panel>form{margin-top:.5rem}.app-nav{gap:.25rem;display:grid}.app-nav button{text-align:left;width:100%}.settings-menu{display:grid}.settings-menu button+button{background:var(--va-mid);border-color:var(--va-mid);width:calc(100% - .75rem);margin-left:.75rem}.settings-menu button+button:hover:not(:disabled),.settings-menu button+button[aria-current=page]{background:var(--va-deep);border-color:var(--va-deep)}form{width:min(420px,100%)}label{color:var(--va-text);gap:.4rem;font-size:.9rem;font-weight:500;display:grid}.field-help{color:var(--va-text-dim);font-size:.8rem;font-weight:400;line-height:1.4}.field-help p{margin-top:.5rem}input,button{border:1px solid var(--va-border);background:var(--va-surface);color:var(--va-text);border-radius:.6rem;padding:.8rem .9rem;transition:border-color .15s,box-shadow .15s}input:focus{border-color:var(--va-teal);box-shadow:0 0 0 3px var(--va-accent-soft);outline:none}button{cursor:pointer;background:var(--va-navy);border:1px solid var(--va-navy);color:#fff;font-weight:600}button:hover:not(:disabled){background:var(--va-deep);border-color:var(--va-deep)}button:disabled{opacity:.6;cursor:not-allowed}button:focus-visible{outline:2px solid var(--va-teal);outline-offset:1px}.status-bar{color:var(--va-text-dim);background:var(--va-surface-2);border:1px solid var(--va-border);border-radius:.6rem;margin-top:1.25rem;padding:.8rem 1rem;font-size:.85rem}.status-panel,.warning-banner,.notice-banner,.error-banner{border-radius:.6rem;margin-top:1rem;padding:.8rem 1rem}.status-panel{background:var(--va-surface-2);border:1px solid var(--va-border)}.acuity-stepper{grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.75rem;display:grid}.acuity-stepper button{margin-top:0}.acuity-grid{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-top:.75rem;display:grid}.acuity-grid button{margin-top:0}.control-pad{grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.75rem;display:grid}.control-pad button{margin-top:0;padding:.9rem .5rem;font-size:.95rem}.control-pad button[aria-pressed=false]{border:1px solid var(--va-border);color:var(--va-navy);background:#fff}.control-pad button[aria-pressed=false] kbd{color:#64748b}.control-pad button kbd{color:#ffffffbf;margin-top:.25rem;font-family:inherit;font-size:.7rem;font-weight:600;display:block}.field-label{gap:.35rem;margin-top:.75rem;font-size:.85rem;font-weight:500;display:grid}.field-label select{border:1px solid var(--va-border);background:var(--va-surface);color:var(--va-text);font:inherit;border-radius:.6rem;padding:.6rem .7rem}.field-label select:focus{border-color:var(--va-teal);box-shadow:0 0 0 3px var(--va-accent-soft);outline:none}.warning-banner{color:#92400e;background:#fef3c7;border:1px solid #fde68a}.notice-banner{background:var(--va-accent-soft);color:var(--va-deep);border:1px solid #25a9ae59}.error-banner{color:#991b1b;background:#fee2e2;border:1px solid #fecaca}@media (width<=900px){.login-shell{grid-template-columns:1fr}.login-hero{border-right:none;border-bottom:1px solid var(--va-border);padding:1.5rem}.login-panel{padding:1.25rem}}@media (width<=760px){.app-shell{grid-template-columns:1fr}.sidebar,.panel{padding:1.25rem}}.open-display-button{white-space:nowrap;justify-content:center;align-items:center;gap:.6rem;width:100%;display:flex}.test-suite{gap:1rem;display:grid}.test-suite-header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.test-suite-header h2{color:var(--va-navy);margin:0 0 .25rem}.test-suite-header p{max-width:60ch;margin:0}.test-suite button{margin-top:0}.secondary-button,.test-suite .control-pad button[aria-pressed=false],.segmented button[aria-pressed=false]{background:var(--va-surface);border:1px solid var(--va-border);color:var(--va-navy)}.secondary-button:hover:not(:disabled),.segmented button[aria-pressed=false]:hover:not(:disabled){background:var(--va-surface-2);border-color:var(--va-teal)}.danger-button{color:#991b1b;background:#fff;border:1px solid #fecaca}.danger-button:hover:not(:disabled){background:#fee2e2;border-color:#fca5a5}.test-suite-tabs{border-bottom:1px solid var(--va-border);flex-wrap:wrap;gap:.25rem;display:flex}.test-suite-tabs button{color:var(--va-text-dim);background:0 0;border:none;border-bottom:3px solid #0000;border-radius:0;padding:.6rem .9rem}.test-suite-tabs button:hover:not(:disabled){color:var(--va-navy);background:0 0}.test-suite-tabs button.active{color:var(--va-navy);border-bottom-color:var(--va-teal)}.test-suite-body{grid-template-columns:minmax(200px,260px) minmax(0,1fr);align-items:start;gap:1rem;display:grid}.test-suite-list{gap:.5rem;display:grid}.test-suite-list>button{text-align:left;background:var(--va-surface);border:1px solid var(--va-border);color:var(--va-text);gap:.35rem;font-weight:600;display:grid}.test-suite-list>button.secondary-button{text-align:center}.test-suite-list>button:hover:not(:disabled){background:var(--va-surface-2);border-color:var(--va-teal)}.test-suite-list>button.active{border-color:var(--va-teal);box-shadow:0 0 0 3px var(--va-accent-soft);background:var(--va-surface)}.test-suite-badges{gap:.35rem;display:flex}.badge{background:var(--va-surface-2);border:1px solid var(--va-border);color:var(--va-text-dim);border-radius:999px;padding:.1rem .45rem;font-size:.7rem;font-weight:600}.badge-default{background:var(--va-accent-soft);color:var(--va-deep);border-color:#25a9ae59}.test-suite-editor{background:var(--va-surface);border:1px solid var(--va-border);border-radius:.75rem;gap:1rem;padding:1.25rem 1.5rem;display:grid}.test-suite-editor-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;display:flex}.test-suite-editor-head h3{color:var(--va-navy);margin:0}.test-suite-editor-head .field-label{min-width:min(320px,100%);margin-top:0}.test-suite-editor-head p{margin:.25rem 0 0}.test-suite-actions{gap:.5rem;display:flex}.test-suite-fields{border:none;min-width:0;margin:0;padding:0}.test-suite-fields:disabled .layout-editor-main{opacity:.75}.test-suite-save{justify-items:start;gap:.5rem;display:grid}.test-suite-save .warning-banner,.test-suite-save .error-banner{margin:0}.layout-editor{grid-template-columns:minmax(0,1fr) minmax(220px,.8fr);align-items:start;gap:1.5rem;display:grid}.layout-editor-main{align-content:start;gap:.75rem;display:grid}.layout-editor-main .field-label{margin-top:0}.layout-editor-main .field-help{margin:0}.segmented{gap:.35rem;display:inline-flex}.segmented button{padding:.55rem .9rem}.layout-lines{border-collapse:collapse;width:100%;font-size:.9rem}.layout-lines th,.layout-lines td{text-align:left;border-bottom:1px solid var(--va-border);vertical-align:top;padding:.35rem .5rem}.layout-lines thead th{letter-spacing:.06em;text-transform:uppercase;color:var(--va-text-dim);font-size:.72rem;font-weight:600}.layout-lines tbody th{color:var(--va-navy);white-space:nowrap;font-weight:600}.layout-lines input[type=number]{width:5rem}.layout-lines input,.layout-start input{padding:.4rem .6rem}.layout-letters-input{letter-spacing:.35em;text-transform:uppercase;width:12rem;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.layout-lines tr[data-invalid=true] th{color:#b45309}.layout-line-issue{color:#92400e;margin:.3rem 0 0;font-size:.78rem}.layout-start{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.layout-preview{border:1px solid var(--va-border);background:#fff;border-radius:.6rem;gap:.4rem;margin:0;padding:1rem;display:grid}.layout-preview-row{grid-template-columns:3rem 1fr;align-items:center;display:grid}.layout-preview-letters{color:#000;justify-content:center;gap:1rem;display:flex}.layout-preview-letters svg{width:1rem;height:1rem}.layout-preview figcaption{margin-top:.5rem}@media (width<=1100px){.test-suite-body,.layout-editor{grid-template-columns:1fr}}.share-panel{background:var(--va-surface-2);border:1px solid var(--va-border);border-radius:.6rem;gap:.5rem;padding:1rem;display:grid}.share-panel .field-help,.share-panel .field-label,.share-panel .error-banner{margin:0}.share-option{align-items:center;gap:.6rem;margin:0;font-weight:500;display:flex}.share-option input{width:auto}.sloan-chart{color:#000;flex-direction:column;justify-content:center;align-items:center;width:100%;display:flex}.sloan-chart-stack{flex-direction:column;justify-content:flex-start;width:100%;display:flex}.sloan-row{grid-template-columns:var(--va-label-column,4rem) 1fr var(--va-label-column,4rem);align-items:center;width:100%;display:grid}.sloan-letters{grid-column:2;justify-content:center;align-items:center;min-width:0;display:flex;overflow:hidden}.va-side-label{color:#1e293b;-webkit-user-select:none;user-select:none;z-index:2;font-family:Arial,Helvetica,sans-serif;font-weight:700;position:relative}.va-side-label-left{grid-column:1;justify-self:start;padding-left:24px}.va-side-label-right{grid-column:3;justify-self:end;padding-right:24px}.sloan-letter{color:#000;flex:none;display:block}.sloan-row-marker{border-left:2px solid #dc2626b3;height:100%;position:absolute;left:-.75rem}.patient-display{color:#fff;background:#000;justify-content:center;align-items:center;width:100vw;height:100dvh;display:flex;position:relative;overflow:hidden}.calibration-target{background:#fff;width:100mm;height:100mm}.display-waiting{color:#fff;font-size:1.25rem}.optotype-preview,.optotype-chart{color:#000;background:#fff;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute;overflow:hidden}.optotype-chart{padding:2vh 2vw}.duochrome-split{height:100%;display:flex;position:absolute;inset:0}.duochrome-half{flex:50%;width:50%;position:relative}.duochrome-sample{display:flex;position:absolute;inset:0}.duochrome-sample span{flex:50%}.fullscreen-control{color:#64748b;cursor:pointer;opacity:.5;z-index:10;background:#0000000f;border:none;border-radius:.4rem;justify-content:center;align-items:center;width:2rem;height:2rem;padding:0;transition:opacity .15s,background .15s;display:flex;position:absolute;bottom:.75rem;right:.75rem}.fullscreen-control:hover{opacity:1;background:#0000001f}.fullscreen-control:focus-visible{outline-offset:2px;opacity:1;outline:2px solid #1d9bf0}
