:root{--color-bg: #000000;--color-fg: #ffffff;--color-primary: #2dd4bf;--color-primary-hover: #14b8a6;--color-warning: #f59e0b;--color-error: #ef4444;--color-success: #22c55e;--color-muted: #6b7280;--space-xs: .5rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2rem;--space-xl: 3rem;--radius-sm: .5rem;--radius-md: 1rem;--font-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden;background:var(--color-bg);color:var(--color-fg);font-family:var(--font-base);-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}#app{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center}.screen{display:none;width:100%;height:100%;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-lg);padding-bottom:calc(var(--space-xl) + 2rem);text-align:center}.screen.active{display:flex}.btn-primary{background:var(--color-primary);color:#000;border:none;padding:var(--space-md) var(--space-xl);font-size:1.5rem;font-weight:600;border-radius:var(--radius-md);cursor:pointer;min-width:240px;min-height:64px;margin-top:var(--space-lg);transition:background .15s ease}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-primary:not(:disabled):hover,.btn-primary:not(:disabled):active{background:var(--color-primary-hover)}#rotate-overlay{position:fixed;inset:0;z-index:9999;background:#000;display:flex;align-items:center;justify-content:center;text-align:center}#rotate-overlay[hidden]{display:none}.rotate-content{padding:var(--space-xl)}.rotate-icon{font-size:5rem;color:var(--color-primary);display:block;margin-bottom:var(--space-md);animation:rotate-hint 2s ease-in-out infinite}.rotate-msg{font-size:1.4rem;color:var(--color-fg);line-height:1.5}@keyframes rotate-hint{0%,to{transform:rotate(0)}50%{transform:rotate(90deg)}}.footer-note{position:fixed;bottom:var(--space-md);font-size:.85rem;color:var(--color-muted)}.btn-secondary{background:transparent;color:var(--color-muted);border:2px solid var(--color-muted);padding:var(--space-sm) var(--space-lg);font-size:1.25rem;font-weight:500;border-radius:var(--radius-md);cursor:pointer;min-width:160px;min-height:56px;margin-top:var(--space-sm)}.btn-secondary:hover,.btn-secondary:active{border-color:var(--color-fg);color:var(--color-fg)}#patient-list-wrap{width:100%;max-width:560px;max-height:45vh;overflow-y:auto;margin-bottom:var(--space-lg)}#patient-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.patient-item{display:flex;align-items:center;justify-content:space-between;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);gap:var(--space-md)}.patient-item:hover{background:#ffffff17}.patient-alias{font-size:1.25rem;font-weight:600}.patient-meta{font-size:.9rem;color:var(--color-muted)}.patient-select{background:var(--color-primary);color:#000;border:none;border-radius:var(--radius-sm);padding:.5rem 1.25rem;font-size:1rem;font-weight:600;cursor:pointer;white-space:nowrap}.patient-select:hover{background:var(--color-primary-hover)}.muted-hint{font-size:1.1rem;color:var(--color-muted);margin:var(--space-md) 0}#new-patient-form{width:100%;max-width:440px;background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-md);padding:var(--space-lg);margin-bottom:var(--space-lg);text-align:left}.form-field{margin-bottom:var(--space-md)}.form-label{display:block;font-size:1.1rem;color:var(--color-muted);margin-bottom:var(--space-xs)}.form-hint{font-size:.85rem}.form-input{width:100%;background:#ffffff12;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);color:var(--color-fg);font-size:1.25rem;padding:.6rem .9rem;outline:none}.form-input:focus{border-color:var(--color-primary)}.form-actions,.form-row{display:flex;gap:var(--space-md);flex-wrap:wrap}.form-row .form-field{flex:1 1 140px;min-width:0}.checkbox-label{display:flex;align-items:center;gap:.7rem;font-size:1.1rem;color:var(--color-fg);cursor:pointer;padding:.4rem 0}.checkbox-label input[type=checkbox]{width:1.4rem;height:1.4rem;accent-color:var(--color-primary);cursor:pointer}select.form-input{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path fill='%23aaa' d='M6 8L0 0h12z'/></svg>");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem}select.form-input option{background:#fff;color:#111}textarea.form-input{resize:vertical;min-height:60px;font-family:inherit}.warning-box{padding:var(--space-md);background:#ef44441a;border:1px solid #ef4444;border-radius:var(--radius-sm);color:#fca5a5;font-size:1.05rem;margin:var(--space-md) 0;line-height:1.5}.reliability-banner{padding:var(--space-md) var(--space-lg);border-radius:var(--radius-sm);text-align:center;margin-bottom:var(--space-lg);border:2px solid}.reliability-banner .rb-label{font-size:1.25rem;font-weight:700;letter-spacing:.02em}.reliability-banner .rb-detail{font-size:.95rem;margin-top:.25rem;opacity:.85}.reliability-banner.reliable{background:#10b9811f;border-color:#10b981;color:#34d399}.reliability-banner.reduced{background:#eab3081f;border-color:#eab308;color:#facc15}.reliability-banner.unreliable{background:#ef44441f;border-color:#ef4444;color:#fca5a5}.btn-compact{font-size:1.1rem;min-width:140px;min-height:52px;padding:var(--space-sm) var(--space-md);margin-top:0}#patient-main-actions{display:flex;gap:var(--space-md);flex-wrap:wrap;justify-content:center}h2{font-size:2rem;font-weight:700;color:var(--color-primary);margin-bottom:var(--space-xl)}.setup-group{width:100%;max-width:500px;margin-bottom:var(--space-sm);text-align:left}.setup-label{display:block;font-size:1.1rem;color:var(--color-muted);margin-bottom:4px}.setup-label strong{color:var(--color-fg)}.eye-selector{display:flex;gap:var(--space-md)}.eye-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:transparent;border:2px solid var(--color-muted);color:var(--color-muted);border-radius:var(--radius-sm);font-size:1.5rem;font-weight:700;padding:var(--space-sm);min-height:64px;cursor:pointer;transition:border-color .15s,color .15s,background .15s}.eye-btn.active{border-color:var(--color-primary);color:var(--color-primary);background:#2dd4bf14}.eye-sub{font-size:.9rem;font-weight:400}#dist-slider{-webkit-appearance:none;width:100%;height:6px;border-radius:3px;background:var(--color-muted);outline:none;margin:4px 0}#dist-slider::-webkit-slider-thumb{-webkit-appearance:none;width:32px;height:32px;border-radius:50%;background:var(--color-primary);cursor:pointer}.camera-status{display:flex;align-items:center;gap:var(--space-sm);padding:8px var(--space-sm);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);background:#ffffff0a}.camera-status.ready{border-color:var(--color-success)}.camera-status.denied{border-color:var(--color-error)}#camera-status-text{flex:1;font-size:1rem;text-align:left}.setup-hint{font-size:.85rem;color:var(--color-muted);margin-top:2px}.screen-test{padding:0;position:relative}#test-progress-bar{position:absolute;top:0;left:0;right:0;height:3px;background:#ffffff14;z-index:10}#test-progress-fill{height:100%;background:var(--color-primary);width:0%;transition:width .6s ease}#perimetry-canvas{display:block;width:100%;height:100%;touch-action:none;cursor:none}#gaze-cal-canvas{display:block;width:100%;height:100%;position:absolute;top:0;left:0}.gaze-cal-overlay{position:absolute;bottom:var(--space-xl);left:50%;transform:translate(-50%);text-align:center;background:#000000b3;padding:var(--space-md) var(--space-lg);border-radius:var(--radius-sm);z-index:20;pointer-events:auto}.gaze-cal-message{color:var(--color-fg);font-size:1.15rem;margin-bottom:var(--space-sm)}.gaze-cal-progress{color:var(--color-muted);font-size:.95rem;margin-bottom:var(--space-md)}.gaze-cal-result{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#141414f2;padding:var(--space-xl);border-radius:var(--radius-md);text-align:center;max-width:500px;z-index:30;border:1px solid rgba(255,255,255,.15)}.gaze-cal-result h3{color:var(--color-primary);margin-bottom:var(--space-md);font-size:1.5rem}.gaze-cal-result p{color:var(--color-fg);margin-bottom:var(--space-lg);line-height:1.6}#setup{padding-top:var(--space-sm);padding-bottom:var(--space-md);justify-content:flex-start;overflow-y:auto}#setup h2{font-size:1.3rem;margin-bottom:var(--space-xs)}#advanced-config{margin-top:4px;margin-bottom:var(--space-sm);text-align:center}.btn-text{background:none;border:none;color:var(--color-muted);font-size:.95rem;cursor:pointer;padding:var(--space-xs) var(--space-sm);text-decoration:underline;text-decoration-color:#ffffff40}.btn-text:hover{color:var(--color-fg)}.calibration-status{margin-top:4px;font-size:.85rem}.calibration-status.calibrated{color:var(--color-success)}.login-form{width:100%;max-width:400px;margin:var(--space-xl) auto 0;text-align:left}.login-form .btn-primary{width:100%;margin-top:var(--space-md)}#user-bar{position:absolute;top:var(--space-md);right:var(--space-lg);display:flex;align-items:center;gap:var(--space-md);font-size:.9rem;z-index:50}.user-email{color:var(--color-muted);font-size:.9rem;padding:.3rem .7rem;background:#ffffff0d;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.1)}.idle-warning{display:none;position:fixed;inset:0;background:#000000bf;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(3px)}.idle-warning.visible{display:flex}.idle-warning-card{background:#1a1a1a;border:2px solid var(--color-warning);border-radius:var(--radius-md);padding:var(--space-xl) var(--space-xl);max-width:480px;text-align:center}.idle-warning-card h3{color:var(--color-warning);font-size:1.5rem;margin-bottom:var(--space-md)}.idle-warning-card p{color:var(--color-fg);font-size:1.1rem;margin-bottom:var(--space-sm);line-height:1.5}.idle-warning-card .idle-warning-hint{color:var(--color-muted);font-size:.95rem;margin-bottom:var(--space-lg)}#idle-countdown{color:var(--color-warning);font-size:1.4rem;font-weight:700}.consent-patient-info{display:flex;gap:var(--space-md);flex-wrap:wrap;padding:var(--space-sm) var(--space-md);background:#2dd4bf14;border:1px solid rgba(45,212,191,.3);border-radius:var(--radius-sm);margin-bottom:var(--space-md);font-size:1rem}.consent-patient-info strong{color:var(--color-primary)}.consent-text-wrap{max-height:40vh;overflow-y:auto;padding:var(--space-md) var(--space-lg);background:#ffffff08;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);margin-bottom:var(--space-md);text-align:left;line-height:1.6}.consent-text-wrap:focus{outline:2px solid var(--color-primary);outline-offset:2px}.consent-section-heading{font-size:1.05rem;color:var(--color-primary);margin:var(--space-md) 0 var(--space-xs);font-weight:700}.consent-section-heading:first-child{margin-top:0}.consent-section-body{font-size:.95rem;color:var(--color-fg);margin-bottom:var(--space-sm)}.consent-form{text-align:left;margin-bottom:var(--space-md)}.ght-banner{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);text-align:center;margin-bottom:var(--space-md);border:1px solid}.ght-banner .ght-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted);margin-bottom:2px}.ght-banner .ght-label{font-size:1.1rem;font-weight:700}.ght-banner .ght-detail{font-size:.85rem;margin-top:2px;opacity:.85}.ght-banner.ght-normal{background:#10b9811a;border-color:#10b981;color:#34d399}.ght-banner.ght-warning{background:#eab3081a;border-color:#eab308;color:#facc15}.ght-banner.ght-alert{background:#ef44441a;border-color:#ef4444;color:#fca5a5}.vfi-banner{padding:var(--space-xs) var(--space-md);border-radius:var(--radius-sm);text-align:center;margin-bottom:var(--space-md);border:1px solid;display:flex;align-items:center;justify-content:center;gap:var(--space-sm)}.vfi-banner .vfi-value{font-size:1.6rem;font-weight:700}.vfi-banner .vfi-label{font-size:.95rem}.vfi-banner.vfi-normal{background:#10b9811a;border-color:#10b981;color:#34d399}.vfi-banner.vfi-warning{background:#eab3081a;border-color:#eab308;color:#facc15}.vfi-banner.vfi-alert{background:#ef44441a;border-color:#ef4444;color:#fca5a5}.map-toggle{display:inline-flex;gap:2px;margin:0 auto var(--space-sm);padding:3px;background:#ffffff0d;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.1)}.map-toggle-btn{background:transparent;border:none;color:var(--color-muted);font-size:1rem;padding:.5rem 1.2rem;border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;font-family:inherit;font-weight:600;letter-spacing:.02em;transition:background .12s ease,color .12s ease}.map-toggle-btn:hover{color:var(--color-fg)}.map-toggle-btn.active{background:var(--color-primary);color:#000}.map-mode-note{font-size:.85rem;color:var(--color-muted);text-align:center;margin-top:var(--space-xs);margin-bottom:var(--space-md)}.age-warning{margin:0 auto var(--space-md);max-width:700px;font-size:.95rem;line-height:1.4}.patient-no-consent{display:inline-block;margin-left:var(--space-xs);padding:1px 6px;background:#eab30826;border:1px solid rgba(234,179,8,.4);border-radius:3px;color:#facc15;font-size:.7rem;text-transform:uppercase;letter-spacing:.5px;vertical-align:middle}.btn-abort{position:absolute;top:var(--space-sm);right:var(--space-sm);background:#ffffff14;border:none;color:var(--color-muted);font-size:1.25rem;width:44px;height:44px;border-radius:50%;cursor:pointer;z-index:20;display:flex;align-items:center;justify-content:center}.btn-abort:hover{color:var(--color-fg);background:#ffffff29}.tracking-badge{position:absolute;top:var(--space-sm);left:var(--space-sm);font-size:.75rem;padding:4px 10px;border-radius:12px;z-index:20;opacity:.8}.tracking-badge.active{background:var(--color-success);color:#000}.tracking-badge.no-cam{background:var(--color-error);color:#fff}.tracking-badge.no-cal{background:var(--color-warning);color:#000}.position-alert{position:absolute;top:var(--space-lg);left:50%;transform:translate(-50%);background:#ef4444e6;color:#fff;font-size:1.2rem;font-weight:600;padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);z-index:30;text-align:center;animation:alert-pulse 1s ease-in-out infinite}.position-alert[hidden]{display:none}@keyframes alert-pulse{0%,to{opacity:1}50%{opacity:.6}}.stats-row{display:flex;flex-wrap:wrap;gap:var(--space-md) var(--space-lg);justify-content:center;margin-bottom:var(--space-lg);width:100%;box-sizing:border-box;padding:0 var(--space-sm)}.stat{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:72px}.stat-val{font-size:1.8rem;font-weight:700;color:var(--color-primary)}.stat-lbl{font-size:.85rem;color:var(--color-muted);text-transform:uppercase;letter-spacing:.08em}.stat-val.stat-warn{color:var(--color-warning)}.stat-val.stat-alert{color:var(--color-error)}.vf-map{border-radius:var(--radius-sm);display:block}.action-row{display:flex;gap:var(--space-md);margin-top:var(--space-lg);justify-content:center;flex-wrap:wrap}#history{justify-content:flex-start;padding:var(--space-md) var(--space-xl);gap:var(--space-md)}.history-header{display:flex;justify-content:space-between;align-items:flex-start;width:100%;max-width:900px;flex-shrink:0}.history-header h2{margin-bottom:0;font-size:1.75rem}#history-list-wrap{width:100%;max-width:900px;flex:1;overflow-y:auto}#history-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-sm)}.hist-card{display:flex;align-items:center;gap:var(--space-md);background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-md);padding:var(--space-md)}.hist-thumb{flex-shrink:0;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.1)}.hist-body{flex:1;display:flex;flex-direction:column;gap:var(--space-xs)}.hist-header{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.hist-eye-badge{font-size:1.1rem;font-weight:700;padding:2px 10px;border-radius:var(--radius-sm)}.hist-eye-badge.od{background:#2dd4bf26;color:var(--color-primary)}.hist-eye-badge.os{background:#f59e0b26;color:var(--color-warning)}.hist-pending-badge{font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:var(--radius-sm);background:#f59e0b33;color:var(--color-warning);border:1px solid rgba(245,158,11,.4)}.hist-date{font-size:1rem;font-weight:500}.hist-meta{font-size:.9rem;color:var(--color-muted)}.hist-stats{display:flex;gap:var(--space-lg)}.hist-stat{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.hist-val{font-size:1.4rem;font-weight:700;color:var(--color-fg)}.hv-ok{color:#22c55e}.hv-mo{color:var(--color-warning)}.hv-sv{color:var(--color-error)}.hist-lbl{font-size:.75rem;color:var(--color-muted);text-transform:uppercase;letter-spacing:.08em}.hist-report-btn{flex-shrink:0;background:transparent;border:2px solid var(--color-primary);color:var(--color-primary);border-radius:var(--radius-sm);padding:.5rem 1.25rem;font-size:1rem;font-weight:600;cursor:pointer;white-space:nowrap}.hist-report-btn:hover{background:#2dd4bf1a}.hist-comparator{flex-basis:100%;width:100%;margin-top:var(--space-sm)}.hist-comparator-toggle{background:transparent;border:1px dashed rgba(255,255,255,.25);color:var(--color-text, #e8e8e8);border-radius:var(--radius-sm);padding:.4rem .9rem;font-size:.9rem;cursor:pointer}.hist-comparator-toggle:hover{background:#ffffff0d}.hist-comparator-form{margin-top:var(--space-sm);padding:var(--space-sm);background:#ffffff08;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm)}.cmp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.6rem}.cmp-grid label{display:flex;flex-direction:column;font-size:.8rem;gap:.2rem}.cmp-grid input,.cmp-grid select{padding:.4rem;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.2);background:#0003;color:inherit}.cmp-hint{font-size:.7rem;opacity:.6}.cmp-actions{margin-top:.6rem;display:flex;align-items:center;gap:.8rem}.cmp-status{font-size:.85rem;opacity:.8}#progression-panel{background:#ffffff08;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md)}.prog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm)}.prog-header h3{font-size:1.1rem;font-weight:600;color:var(--color-fg)}.prog-toggle{display:flex;gap:4px;background:#ffffff0d;border-radius:var(--radius-sm);padding:2px}.prog-btn{background:transparent;color:var(--color-muted);border:none;padding:.3rem .8rem;border-radius:calc(var(--radius-sm) - 2px);font-size:.9rem;font-weight:600;cursor:pointer}.prog-btn.active{background:var(--color-primary);color:#000}.prog-btn:hover:not(.active){color:var(--color-fg)}.prog-canvas{width:100%;height:220px;border-radius:var(--radius-sm)}.prog-summary{margin-top:var(--space-xs);display:flex;flex-wrap:wrap;gap:var(--space-sm)}.prog-rate{font-size:.9rem;padding:.25rem .6rem;border-radius:var(--radius-sm)}.prog-stable{color:var(--color-success);background:#22c55e1a}.prog-alert{color:var(--color-error);background:#ef44441a;font-weight:600}.prog-hint{color:var(--color-muted);font-size:.85rem}.prog-actions{margin-top:var(--space-xs);text-align:right}.dash-stats-bar{display:flex;gap:var(--space-sm);flex-wrap:wrap;margin-bottom:var(--space-md)}.dash-stat{font-size:.9rem;padding:.25rem .6rem;border-radius:var(--radius-sm);background:#ffffff0d;color:var(--color-fg)}.dash-stat-alert{background:#ef444426;color:var(--color-error);font-weight:600}.dash-stat-pending{background:#f59e0b26;color:var(--color-warning)}.dash-list{display:flex;flex-direction:column;gap:var(--space-xs)}.dash-card{background:#ffffff08;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);padding:var(--space-sm);cursor:pointer;transition:border-color .15s}.dash-card:hover{border-color:var(--color-primary)}.dash-card.dash-alert{border-color:#ef444466}.dash-card-header{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.dash-alias{font-weight:600;font-size:1rem}.dash-test-count{font-size:.85rem;color:var(--color-muted)}.dash-last-date{font-size:.85rem;color:var(--color-muted);margin-left:auto}.dash-pending-badge{font-size:.75rem;padding:.15rem .5rem;border-radius:10px;background:#f59e0b26;color:var(--color-warning)}.dash-alerts{margin-top:var(--space-xs);display:flex;flex-wrap:wrap;gap:4px}.dash-alert-badge{font-size:.8rem;padding:.2rem .5rem;border-radius:var(--radius-sm);background:#ef44441a;color:var(--color-error);font-weight:600}.dash-eyes{display:flex;gap:var(--space-md);margin-top:var(--space-xs)}.dash-eye{display:flex;align-items:center;gap:var(--space-xs);font-size:.9rem}.dash-eye-badge{font-size:.8rem;font-weight:700;padding:.15rem .5rem;border-radius:4px}.dash-eye-badge.od{background:#2dd4bf26;color:var(--color-primary)}.dash-eye-badge.os{background:#f59e0b26;color:var(--color-warning)}.dash-eye-md{color:var(--color-fg)}.dash-eye-vfi{color:var(--color-muted)}.dash-eye-rate{font-size:.8rem;color:var(--color-muted);font-style:italic}.patient-actions{display:flex;flex-direction:column;gap:var(--space-xs)}.patient-history{background:transparent;color:var(--color-muted);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);padding:.35rem 1rem;font-size:.95rem;cursor:pointer;white-space:nowrap}.patient-history:hover{color:var(--color-fg);border-color:var(--color-fg)}#instructions{justify-content:flex-start;padding:var(--space-md) var(--space-xl);padding-bottom:var(--space-md)}#instr-heading{margin-bottom:var(--space-md);flex-shrink:0}.instr-body{flex:1;width:100%;max-width:860px;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-md);padding-right:var(--space-xs);padding-bottom:8rem}.instr-highlight{display:flex;align-items:center;gap:var(--space-md);background:#2dd4bf1a;border:2px solid var(--color-primary);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);font-size:1.2rem;line-height:1.5;text-align:left;flex-shrink:0}.instr-icon{font-size:2.5rem;flex-shrink:0}.instr-steps{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm)}.instr-steps li{display:flex;align-items:flex-start;gap:var(--space-sm);background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);font-size:1.1rem;line-height:1.5;text-align:left}.instr-step-num{flex-shrink:0;width:2rem;height:2rem;border-radius:50%;background:var(--color-primary);color:#000;font-weight:700;font-size:1rem;display:flex;align-items:center;justify-content:center;margin-top:2px}.instr-meta{display:flex;gap:var(--space-sm);flex-shrink:0}.instr-meta-item{flex:1;display:flex;align-items:flex-start;gap:var(--space-xs);background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm);font-size:.85rem;line-height:1.35;text-align:left}.instr-meta-icon{font-size:1.25rem;flex-shrink:0;margin-top:2px}.instr-actions{flex-shrink:0;display:flex;gap:var(--space-md);justify-content:center;padding:var(--space-md) 0 var(--space-sm);flex-wrap:wrap;position:sticky;bottom:0;background:var(--color-bg)}.btn-large{font-size:1.6rem;padding:var(--space-md) var(--space-xl);min-height:72px;min-width:300px}.photometric-cal-status{display:flex;align-items:center;gap:var(--space-sm);padding:8px var(--space-sm);border:1px solid var(--color-muted);border-radius:var(--radius-sm)}.photometric-cal-status.status-valid{border-color:var(--color-success)}.photometric-cal-status.status-expired,.photometric-cal-status.status-missing{border-color:var(--color-warning)}.photometric-cal-status.status-device-changed{border-color:var(--color-error)}#photometric-cal-text{flex:1;font-size:.95rem}.modal-overlay[hidden]{display:none}.modal-overlay{position:fixed;inset:0;z-index:9000;background:#000000eb;display:flex;align-items:center;justify-content:center;padding:var(--space-md)}.modal-content{background:#1a1a2e;border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);max-width:480px;width:100%;max-height:85vh;overflow-y:auto}.modal-content h3{color:var(--color-primary);margin-bottom:4px;font-size:1.1rem}.modal-desc{color:var(--color-muted);font-size:.8rem;margin-bottom:var(--space-xs)}#photometric-canvas{width:100%;max-height:280px;border:1px solid #333;border-radius:var(--radius-sm);margin-bottom:4px}.photometric-info{color:var(--color-fg);font-size:.8rem;font-family:monospace;margin-bottom:var(--space-xs);min-height:1.2rem}.modal-actions{display:flex;gap:var(--space-xs);flex-wrap:wrap}#results{justify-content:flex-start;overflow-y:auto}.risk-score-banner{width:100%;max-width:500px;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);margin-bottom:var(--space-sm);border-left:4px solid}.risk-score-banner.risk-high{background:#ef44441f;border-color:var(--color-error)}.risk-score-banner.risk-medium{background:#f59e0b1f;border-color:var(--color-warning)}.risk-score-banner.risk-low{background:#22c55e1f;border-color:var(--color-success)}.risk-header{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.risk-score-value{font-size:1.6rem;font-weight:700;line-height:1}.risk-high .risk-score-value{color:var(--color-error)}.risk-medium .risk-score-value{color:var(--color-warning)}.risk-low .risk-score-value{color:var(--color-success)}.risk-label{font-size:1rem;font-weight:600;color:var(--color-fg)}.risk-hpa{font-size:.8rem;color:var(--color-muted);margin-left:auto}.risk-flags{margin-top:6px;display:flex;flex-direction:column;gap:2px}.risk-flag{font-size:.8rem;color:var(--color-muted);line-height:1.3}.dash-risk-badge{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;font-size:.8rem;font-weight:700;flex-shrink:0}.dash-risk-badge.risk-high{background:var(--color-error);color:#fff}.dash-risk-badge.risk-medium{background:var(--color-warning);color:#000}.dash-risk-badge.risk-low{background:var(--color-success);color:#000}.device-selector{margin:var(--space-md) auto;max-width:420px;text-align:center}.device-selector-label{display:block;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted);margin-bottom:.5rem}.device-options{display:flex;gap:.6rem;justify-content:center}.device-option{flex:1;max-width:180px;padding:.6rem 1rem;border:2px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);background:transparent;color:var(--color-text, #e8e8e8);font-size:1rem;font-weight:600;cursor:pointer}.device-option.active{border-color:var(--color-primary);background:#2dd4bf1f;color:var(--color-primary)}.device-selector-desc{font-size:.8rem;color:var(--color-muted);margin-top:.5rem;min-height:2.4em}.add-recommendation{font-size:.82rem;color:var(--color-muted);margin:.35rem 0 0;line-height:1.35}.add-recommendation--required{color:var(--color-warning, #d6a700)}:root{--font-size-base: 1.5rem;--font-size-h1: 3rem;--font-size-subtitle: 1.75rem;--line-height: 1.5}h1{font-size:var(--font-size-h1);font-weight:700;letter-spacing:.05em;margin-bottom:var(--space-md);color:var(--color-primary)}.subtitle{font-size:var(--font-size-subtitle);color:var(--color-muted);margin-bottom:var(--space-sm)}p,li{font-size:var(--font-size-base);line-height:var(--line-height)}#system-check{width:100%;max-width:600px;margin-top:var(--space-sm)}#capability-list{list-style:none;margin:var(--space-sm) 0;text-align:left}#capability-list li{padding:.15rem 0;display:flex;align-items:center;gap:var(--space-xs);font-size:1rem}.status{font-size:1rem;color:var(--color-muted);margin:var(--space-xs) 0}.check-pass:before{content:"✓";color:var(--color-success);font-weight:700;font-size:1.2rem;min-width:1.2rem}.check-fail:before{content:"✗";color:var(--color-error);font-weight:700;font-size:1.2rem;min-width:1.2rem}.check-warn:before{content:"!";color:var(--color-warning);font-weight:700;font-size:1.2rem;min-width:1.2rem}#light-confirm-wrap{margin:var(--space-sm) 0;padding:var(--space-sm) var(--space-md);border:2px solid var(--color-warning);border-radius:var(--radius-sm);background:#eab30814}.light-confirm-label{display:flex;align-items:flex-start;gap:var(--space-sm);font-size:1rem;line-height:1.4;cursor:pointer}.light-confirm-label input[type=checkbox]{width:1.3rem;height:1.3rem;min-width:1.3rem;margin-top:.1rem;accent-color:var(--color-primary);cursor:pointer}.voice-toggle{display:flex;align-items:center;gap:var(--space-sm);font-size:1.1rem;cursor:pointer;margin-bottom:var(--space-md)}.voice-toggle input[type=checkbox]{width:1.5rem;height:1.5rem;accent-color:var(--color-primary);cursor:pointer}
