:root{--navy:#0f172a;--blue:#0f4c81;--sky:#dff2ff;--text:#0f172a;--muted:#64748b;--line:#dbe3ef;--bg:#f5f7fb;--card:#fff;--danger:#991b1b;--good:#166534;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}button,input,select,textarea{font:inherit}button{background:var(--navy);color:#fff;cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;gap:.45rem;padding:.8rem 1.1rem;font-weight:800;display:inline-flex}button:hover{filter:brightness(1.05)}button.secondary{color:var(--text);background:#e5ebf5}button.primary{background:var(--navy);color:#fff}button.danger{background:var(--danger)}button.big{margin-top:1rem;font-size:1.05rem}select,input,textarea{border:1px solid var(--line);width:100%;color:var(--text);background:#fff;border-radius:14px;padding:.8rem .95rem;font-weight:700}textarea{resize:vertical;min-height:95px;font-weight:650}label{color:var(--muted);gap:.45rem;font-weight:800;display:grid}h1,h2,h3,p{margin-top:0}.app-shell{max-width:1420px;margin:0 auto;padding:1.25rem}.hero{color:#fff;background:linear-gradient(135deg,#0b1224,#172554);border-radius:32px;padding:clamp(1.4rem,4vw,3.2rem);box-shadow:0 20px 45px #0f172a33}.hero .brand{letter-spacing:.16em;color:#bae6fd;margin-bottom:.75rem;font-weight:900}.hero h1{max-width:1000px;margin-bottom:1rem;font-size:clamp(2.4rem,6vw,5.3rem);line-height:.98}.hero p{color:#dbeafe;font-size:1.15rem}.privacy-banner{background:var(--sky);color:var(--blue);border-radius:14px;margin-top:.7rem;padding:.9rem 1.2rem;font-weight:900;display:inline-block}.top-grid,.results-export-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.25rem;margin-top:1.25rem;display:grid}.top-grid.single{grid-template-columns:minmax(0,1fr)}.card{background:var(--card);border:1px solid var(--line);border-radius:26px;padding:1.35rem;box-shadow:0 10px 30px #0f172a0d}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.section-head p,.card>p,.mini-status{color:var(--muted)}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.notes-label{margin-top:1rem}.protocol-card h2{margin-bottom:.2rem}.joint-select-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.6rem;display:grid}.help-only{width:52px;height:52px;color:var(--text);background:#e5ebf5;padding:0}.inline-help{background:#f8fbff;border:1px dashed #bfd0e7;border-radius:18px;margin-top:1rem;padding:1rem}.protocol-detail.compact{color:var(--muted);margin-top:.75rem;font-weight:650}.protocol-detail.compact p{margin-bottom:.5rem}.protocol-detail.compact ol{margin-top:.5rem}.pill,.quality{color:var(--text);text-transform:lowercase;background:#e5ebf5;border-radius:999px;justify-content:center;align-items:center;padding:.55rem .8rem;font-weight:900;display:inline-flex}.quality.good{color:var(--good);background:#dcfce7}.quality.acceptable{color:#92400e;background:#fef3c7}.quality.poor{color:#991b1b;background:#fee2e2}.protocol-detail{margin-top:1rem}.protocol-grid,.result-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem;display:grid}.protocol-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.metric{border:1px solid var(--line);border-radius:18px;gap:.45rem;min-height:86px;padding:1rem;display:grid}.metric span{color:var(--muted);font-weight:900}.metric strong{font-size:1.15rem}.watchout{color:var(--muted);border:1px dashed #bfd0e7;border-radius:16px;padding:1rem}.capture-card{margin-top:1.25rem}.capture-controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.8rem;min-width:min(100%,520px);display:flex}.capture-controls select{width:220px}.video-wrap{background:#020617;border-radius:24px;min-height:420px;margin-top:1rem;position:relative;overflow:hidden}.video,.overlay{aspect-ratio:16/9;object-fit:contain;width:100%;display:block}.video{background:#020617}.overlay{pointer-events:none;height:100%;position:absolute;inset:0}.video-placeholder{color:#94a3b8;place-items:center;font-weight:900;display:grid;position:absolute;inset:0}.video-pill,.recording-pill{color:#fff;border-radius:999px;padding:.6rem .9rem;font-weight:900;position:absolute;top:18px}.video-pill{background:#0f172abf;left:18px}.recording-pill{background:#991b1be6;right:18px}.status-row{color:var(--muted);flex-wrap:wrap;align-items:center;gap:1rem;margin-top:.9rem;font-weight:700;display:flex}.error-text{color:var(--danger)}.good-text{color:var(--good)}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dominant-result{background:var(--sky);border-radius:20px;justify-content:space-between;align-items:center;margin-bottom:1rem;padding:1.25rem;display:flex}.dominant-result span{color:var(--muted);font-weight:900}.dominant-result strong{font-size:clamp(2rem,5vw,4rem)}.bilateral-card{border:1px solid var(--line);border-radius:20px;margin-top:1rem;padding:1rem;overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid var(--line);text-align:left;padding:.7rem}.button-grid{flex-wrap:wrap;gap:.8rem;display:flex}.review-toggle-card{flex-wrap:wrap;align-items:center;gap:1rem;margin-top:1.25rem;display:flex}.review-panel{margin-top:1.25rem}.endpoint-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;display:grid}.endpoint-card{border:1px solid var(--line);border-radius:18px;padding:1rem}.endpoint-card div{border-bottom:1px dashed var(--line);justify-content:space-between;gap:1rem;padding:.4rem 0;display:flex}.trace-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1rem;display:grid}.trace-card{border:1px solid var(--line);color:#2563eb;border-radius:18px;padding:1rem}.trace-card strong{color:var(--text)}.empty-trace{border:1px dashed var(--line);color:var(--muted);border-radius:18px;margin-top:1rem;padding:1rem}.icon-button{color:var(--text);background:#e5ebf5}@media (width<=900px){.top-grid,.results-export-grid,.form-grid,.protocol-grid,.result-grid,.trace-grid{grid-template-columns:1fr}.endpoint-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.capture-controls{justify-content:stretch}.capture-controls button,.capture-controls select{width:100%}.video-wrap{min-height:260px}}@media (width<=560px){.app-shell{padding:.75rem}.hero{border-radius:22px}.card{border-radius:20px;padding:1rem}.endpoint-grid{grid-template-columns:1fr}}
