:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#18212b;background:#eef1f4;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:1000px;min-height:100vh}button,input,select{font:inherit}a{text-decoration:none}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.app-shell{min-height:100vh}.topbar{height:68px;padding:0 28px;background:#fff;border-bottom:1px solid #d8dee5;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}.brand,.session-summary{display:flex;align-items:center;gap:12px}.brand svg{color:#176b5b}.brand div{display:flex;flex-direction:column}.brand strong{font-size:15px}.brand span{color:#687583;font-size:12px}.session-summary{font-size:13px}.split-badge,.tag{border:1px solid #c9d3dc;background:#f6f8fa;border-radius:4px;color:#465564;font-size:11px;padding:4px 7px;text-transform:uppercase}.tag.pair{border-color:#98c3b9;background:#edf8f5;color:#176b5b}.main-content{min-height:calc(100vh - 68px)}.setup-layout,.record-layout,.review-layout{display:grid;grid-template-columns:minmax(430px,.85fr) minmax(560px,1.15fr);gap:24px;padding:28px;min-height:calc(100vh - 68px)}.admin-layout{display:flex;justify-content:center;min-height:calc(100vh - 68px);padding:28px}.admin-main{max-width:1120px;width:100%}.admin-panel{background:#fff;border:1px solid #d8dee5;border-radius:8px;margin-top:18px;padding:24px}.login-panel{align-self:flex-start;max-width:460px;width:100%}.admin-actions{display:flex;gap:10px;justify-content:flex-end;margin:-4px 0 18px}.session-link-result{align-items:center;background:#f7f9fa;border:1px solid #d8dee5;border-radius:6px;display:grid;gap:10px;grid-template-columns:1fr 42px;margin-top:14px;padding:8px 8px 8px 12px}.session-link-result span{color:#465564;font-size:12px;overflow-wrap:anywhere}.admin-links{margin-top:18px}.session-link-row{align-items:center;background:#fff;border-bottom:1px solid #e0e5ea;color:inherit;display:flex;gap:12px;min-height:72px;padding:12px 15px}.session-link-row:last-child{border-bottom:0}.setup-form,.instruction-panel,.review-panel,.review-video{background:#fff;border:1px solid #d8dee5;border-radius:8px;padding:28px}.page-heading{margin-bottom:26px}.page-heading h1{margin:5px 0 8px;font-size:30px;line-height:1.15;letter-spacing:0}.page-heading p,.instruction-panel>p{margin:0;color:#64717e;line-height:1.55}.compact-heading{margin-bottom:20px}.compact-heading h1{font-size:25px}.eyebrow{color:#176b5b;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field,.calibration-fields label,.interval-row label{color:#3b4855;display:flex;flex-direction:column;font-size:12px;font-weight:650;gap:7px}.field.wide{grid-column:1 / -1}input,select{width:100%;height:40px;border:1px solid #bdc8d1;border-radius:5px;background:#fff;color:#18212b;padding:0 11px;outline:none}input:focus,select:focus{border-color:#176b5b;box-shadow:0 0 0 2px #176b5b1f}.input-action{display:grid;grid-template-columns:1fr 42px;gap:7px}.field-help{color:#74808d;font-size:11px;font-weight:450}.checkbox-field{align-items:center;align-self:end;border:1px solid #d8dee5;border-radius:6px;display:grid;grid-template-columns:18px 1fr;min-height:61px;padding:10px 12px;font-size:13px;font-weight:650}.checkbox-field input{height:17px;margin:0}.checkbox-field span{grid-column:2;color:#73808d;font-size:11px;font-weight:400}.calibration-block{border-top:1px solid #e0e5ea;margin-top:24px;padding-top:22px}.split-explainer{border:1px solid #d8dee5;border-radius:6px;display:grid;grid-template-columns:1fr 1fr;margin-top:20px}.split-explainer div{border-bottom:1px solid #e0e5ea;display:flex;flex-direction:column;gap:2px;padding:11px 12px}.split-explainer div:nth-child(odd){border-right:1px solid #e0e5ea}.split-explainer div:nth-last-child(-n+2){border-bottom:0}.split-explainer strong{color:#176b5b;font-size:12px}.split-explainer span{color:#64717e;font-size:11px;line-height:1.35}.calibration-block h2,.preparation-list h2,.section-heading-row h3{font-size:15px;margin:0 0 5px}.calibration-block p,.section-heading-row p{color:#73808d;font-size:12px;margin:0}.calibration-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:15px}.button{align-items:center;border:1px solid transparent;border-radius:5px;display:inline-flex;gap:8px;justify-content:center;min-height:40px;padding:0 15px;font-size:13px;font-weight:700}.button.primary{background:#176b5b;color:#fff}.button.primary:hover{background:#11594c}.button.secondary{background:#fff;border-color:#bdc8d1;color:#263441}.button.ghost{background:transparent;color:#465564}.button.danger{background:#a83434;color:#fff}.button.large{min-height:46px;margin-top:22px;padding:0 20px}.button.compact{min-height:32px;padding:0 10px;font-size:12px}.button.full{width:100%;margin-top:13px}.icon-button{align-items:center;background:transparent;border:0;border-radius:5px;color:#53616e;display:inline-flex;height:34px;justify-content:center;width:34px}.icon-button:hover{background:#eef2f5}.icon-button.bordered{border:1px solid #bdc8d1;height:40px;width:42px}.notice{border:1px solid;border-radius:6px;font-size:12px;line-height:1.45;margin-top:16px;padding:10px 12px}.notice.warning{background:#fff8e8;border-color:#e3c471;color:#715514}.notice.error{background:#fff0f0;border-color:#dc9696;color:#852929}.notice.success{background:#edf8f5;border-color:#98c3b9;color:#155d50}.camera-stage{aspect-ratio:16 / 9;align-self:start;background:#12181f;border:1px solid #2b3742;border-radius:8px;max-height:calc(100vh - 125px);min-height:420px;overflow:hidden;position:sticky;top:96px}.camera-video{width:100%;height:100%;object-fit:cover}.camera-video.mirrored{transform:scaleX(-1)}.camera-empty{align-items:center;color:#8794a1;display:flex;flex-direction:column;gap:10px;height:100%;justify-content:center}.setup-camera-label{background:#0f161dd1;border-radius:4px;bottom:16px;color:#fff;font-size:12px;left:16px;padding:7px 10px;position:absolute}.library-layout{display:grid;grid-template-columns:240px minmax(700px,1fr);min-height:calc(100vh - 68px)}.category-sidebar{background:#fff;border-right:1px solid #d8dee5;padding:24px 16px}.sidebar-heading{color:#7a8793;font-size:11px;font-weight:700;margin:0 10px 12px;text-transform:uppercase}.sidebar-heading.spaced{border-top:1px solid #e0e5ea;margin-top:18px;padding-top:18px}.plan-list{display:grid;gap:8px}.plan-option{background:#fff;border:1px solid #d8dee5;border-radius:6px;color:#465564;display:flex;flex-direction:column;gap:3px;padding:10px;text-align:left;width:100%}.plan-option:hover{background:#f7f9fa}.plan-option.active{background:#e8f3f0;border-color:#98c3b9;color:#155d50}.plan-option strong{font-size:12px}.plan-option span{color:#6d7a86;font-size:11px;line-height:1.35}.custom-groups{background:#f7f9fa;border:1px solid #d8dee5;border-radius:6px;display:grid;gap:9px;margin-top:10px;padding:10px}.custom-group{align-items:flex-start;display:grid;gap:8px;grid-template-columns:16px 1fr}.custom-group input{height:16px;margin:1px 0 0;width:16px}.custom-group span{display:flex;flex-direction:column;gap:2px}.custom-group strong{color:#33414e;font-size:11px}.custom-group small{color:#71808c;font-size:10px;line-height:1.35}.category{align-items:center;background:transparent;border:0;border-radius:5px;color:#465564;display:flex;justify-content:space-between;padding:10px;text-align:left;width:100%}.category:hover{background:#f1f4f6}.category.active{background:#e8f3f0;color:#155d50;font-weight:700}.category small{color:#7b8792;font-size:11px}.overall-progress{border-top:1px solid #e0e5ea;display:flex;flex-direction:column;margin-top:20px;padding:18px 10px}.overall-progress.subtle{border-top:0;margin-top:0;padding-top:4px}.overall-progress strong{font-size:21px}.overall-progress span{color:#73808d;font-size:11px}.scenario-library{padding:28px 34px}.library-notice{margin:-8px 0 18px}.collection-summary{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:16px}.collection-summary div{background:#fff;border:1px solid #d8dee5;border-radius:6px;display:flex;flex-direction:column;padding:12px}.collection-summary strong{color:#263441;font-size:20px}.collection-summary span{color:#73808d;font-size:11px}.scenario-list{background:#fff;border:1px solid #d8dee5;border-radius:8px;overflow:hidden}.scenario-row{align-items:center;background:#fff;border:0;border-bottom:1px solid #e0e5ea;color:inherit;display:flex;gap:12px;min-height:72px;padding:12px 15px;text-align:left;width:100%}.scenario-row:last-child{border-bottom:0}.scenario-row:hover{background:#f7f9fa}.scenario-state{align-items:center;border:1px solid #c7d0d8;border-radius:50%;color:#6e7c88;display:flex;height:34px;justify-content:center;min-width:34px}.scenario-state.complete{background:#176b5b;border-color:#176b5b;color:#fff}.scenario-copy{display:flex;flex:1;flex-direction:column;gap:4px}.scenario-copy strong{font-size:14px}.scenario-copy small{color:#6f7c88;font-size:12px}.duration{color:#62707c;font-size:12px;min-width:42px;text-align:right}.instruction-panel h1{font-size:29px;margin:6px 0 8px}.back-button{margin:-8px 0 24px -10px}.preparation-list{border-top:1px solid #e0e5ea;margin-top:22px;padding-top:20px}.success-criteria{background:#edf8f5;border:1px solid #98c3b9;border-radius:6px;margin-top:20px;padding:14px 15px}.success-criteria h2{color:#155d50;font-size:14px;margin:0 0 9px}.success-criteria-item{align-items:flex-start;color:#365c54;display:flex;font-size:12px;gap:8px;line-height:1.45;margin-top:7px}.success-criteria-item svg{color:#176b5b;margin-top:1px;min-width:16px}.preparation-item{align-items:flex-start;color:#465564;display:flex;font-size:13px;gap:9px;line-height:1.45;margin:10px 0}.preparation-item svg{color:#176b5b;margin-top:2px;min-width:16px}.scenario-facts{background:#f4f7f8;border:1px solid #d8e0e4;border-radius:6px;display:grid;grid-template-columns:repeat(3,1fr);margin-top:22px}.scenario-facts span{border-right:1px solid #d8e0e4;color:#74808c;display:flex;flex-direction:column;font-size:11px;padding:12px}.scenario-facts span:last-child{border-right:0}.scenario-facts strong{color:#263441;font-size:15px}.countdown-overlay{align-items:center;background:#0c1218b8;color:#fff;display:flex;font-size:96px;font-weight:800;top:0;right:0;bottom:0;left:0;justify-content:center;position:absolute}.face-guide{border:3px solid rgba(84,206,180,.9);border-radius:50%;height:54%;left:50%;position:absolute;top:48%;width:31%}.face-guide span{background:#0c1218cc;border-radius:4px;bottom:-34px;color:#fff;font-size:11px;left:50%;padding:5px 8px;position:absolute;transform:translate(-50%);white-space:nowrap}.target-circle{align-items:center;background:#e24444;border:5px solid rgba(255,255,255,.88);border-radius:50%;box-shadow:0 0 0 4px #e2444459;color:#fff;display:flex;height:62px;justify-content:center;position:absolute;transform:translate(-50%,-50%);width:62px}.target-circle span{font-size:13px;font-weight:800}.target-mode,.physical-marker-warning{background:#0c1218db;border-radius:4px;color:#fff;font-size:12px;left:50%;padding:7px 10px;position:absolute;top:18px;transform:translate(-50%)}.physical-marker-warning{background:#955312f0;top:52px}.direction-arrow{color:#ff6363;position:absolute}.direction-left{left:8%;top:45%}.direction-right{right:8%;top:45%}.direction-up{left:48%;top:8%}.direction-down{bottom:8%;left:48%}.object-prompt{background:#e24444;border:4px solid #ffffff;border-radius:6px;bottom:18%;color:#fff;font-size:23px;font-weight:800;left:50%;padding:16px 24px;position:absolute;transform:translate(-50%)}.moving-text-target{animation:movingText 5s ease-in-out infinite alternate;background:#fff;border:3px solid #176b5b;border-radius:5px;color:#102e28;font-size:18px;font-weight:750;padding:11px 18px;position:absolute;top:52%;white-space:nowrap}@keyframes movingText{0%{left:8%}to{left:66%}}.active-recording{padding:24px 28px}.active-recording .camera-stage{aspect-ratio:16 / 8.6;margin:0 auto;max-width:1320px;position:relative;top:auto}.recording-instruction{border-left:5px solid;bottom:20px;color:#fff;display:flex;flex-direction:column;gap:4px;left:20px;max-width:calc(100% - 180px);padding:12px 15px;position:absolute}.recording-instruction span{font-size:11px;font-weight:800;text-transform:uppercase}.recording-instruction strong{font-size:18px;line-height:1.35}.tone-neutral{background:#145449eb;border-color:#72d7c1}.tone-positive{background:#892727ed;border-color:#f77}.tone-return{background:#835b16ed;border-color:#f0bd58}.tone-prepare{background:#264970ed;border-color:#75ace9}.recording-status{align-items:center;background:#0c1218d9;border-radius:4px;color:#fff;display:flex;font-size:12px;gap:7px;left:18px;padding:7px 10px;position:absolute;top:18px}.recording-status strong{margin-left:5px}.record-dot{animation:blink 1s infinite;background:#ff4c4c;border-radius:50%;height:9px;width:9px}@keyframes blink{50%{opacity:.35}}.prompt-timer{align-items:center;background:#0c1218bf;border:2px solid #ffffff;border-radius:50%;color:#fff;display:flex;font-size:22px;font-weight:800;height:58px;justify-content:center;position:absolute;right:18px;top:18px;width:58px}.recording-footer{align-items:center;background:#fff;border:1px solid #d8dee5;border-radius:6px;display:flex;justify-content:space-between;margin:12px auto 0;max-width:1320px;padding:12px 14px}.recording-footer div{display:flex;flex-direction:column}.recording-footer span{color:#74808d;font-size:11px}.review-layout{grid-template-columns:minmax(560px,1.2fr) minmax(410px,.8fr)}.review-video,.review-panel{align-self:start}.playback-video{aspect-ratio:16 / 9;background:#111820;border-radius:6px;width:100%}.review-checks{display:flex;flex-wrap:wrap;gap:12px 18px;margin-top:14px}.review-checks span{align-items:center;color:#5d6a77;display:flex;font-size:11px;gap:5px}.review-checks svg{color:#176b5b}.section-heading-row{align-items:flex-start;display:flex;justify-content:space-between}.interval-list{border:1px solid #d8dee5;border-radius:6px;margin-top:14px}.interval-row{align-items:end;border-bottom:1px solid #e0e5ea;display:grid;gap:9px;grid-template-columns:24px 82px 82px 1fr 34px;padding:10px}.interval-row:last-child{border-bottom:0}.interval-row input{height:34px}.interval-index{align-items:center;background:#eef2f5;border-radius:50%;display:flex;font-size:11px;height:24px;justify-content:center;margin-bottom:5px}.interval-label{align-self:center;color:#52606d;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-note{background:#f4f7f8;border:1px solid #d8e0e4;border-radius:6px;color:#5e6c78;font-size:12px;margin-top:14px;padding:14px}.review-actions{display:grid;gap:10px;grid-template-columns:1fr 1fr;margin-top:18px}.save-result{align-items:flex-start;background:#edf8f5;border:1px solid #98c3b9;border-radius:6px;display:grid;gap:10px;grid-template-columns:28px 1fr auto;margin-top:16px;padding:13px}.save-result>svg{color:#176b5b}.save-result div{display:flex;flex-direction:column;min-width:0}.save-result span{color:#4d655f;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:1180px){.setup-layout,.record-layout,.review-layout{grid-template-columns:420px minmax(520px,1fr);padding:20px}.scenario-library{padding:24px}}
