:root{--brand-purple: #6b3fe0;--brand-blue: #1fa0ff;--brand-navy: #1b1f4a;--paper: #f5f4fb;--paper-line: #1b1f4a;--bg: var(--paper);--radius-xs: 4px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--ink: var(--brand-navy);--accent: var(--brand-purple);--danger: #c92a2a;--danger-soft: #f5d7d7;--font-sans: "Nunito", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--ease-squash: cubic-bezier(.5, 1.6, .4, 1);font-family:var(--font-sans)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--ink)}.app{display:grid;grid-template-rows:auto 1fr auto;height:100vh}.app.is-idle{display:block}.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 24px;background:var(--paper);border-bottom:2px solid var(--brand-navy)}.topbar h1{margin:0;font-size:22px;letter-spacing:-.02em}.brand-wordmark{font-weight:800;text-transform:lowercase;display:inline-flex;align-items:baseline}.brand-talk{color:var(--brand-navy)}.brand-a{color:var(--brand-purple)}.brand-doo{color:var(--brand-blue)}.topbar-actions{display:flex;align-items:center;gap:12px}.coach-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid var(--brand-navy);background:transparent;padding:6px 14px;border-radius:var(--radius-sm);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:lowercase;color:var(--brand-navy);cursor:pointer;transition:background .12s ease,color .12s ease}.coach-toggle:hover,.coach-toggle.is-open{background:var(--brand-navy);color:var(--paper)}.status-pill{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:var(--radius-sm);border:1.5px solid currentColor;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:lowercase;background:transparent;color:var(--brand-navy);transition:color .2s ease,border-color .2s ease}.status-dot{width:7px;height:7px;border-radius:50%;background:currentColor;flex-shrink:0}.status-idle{color:#6c6f86}.status-connecting{color:#b48400}.status-connecting .status-dot{animation:status-pulse 1.2s ease-in-out infinite}.status-live{color:#1f6f33}.status-live .status-dot{box-shadow:0 0 #2e7d3299;animation:status-glow 1.8s ease-out infinite}.status-error{color:var(--danger)}@keyframes status-pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}@keyframes status-glow{0%{box-shadow:0 0 #2e7d328c}70%{box-shadow:0 0 0 6px #2e7d3200}to{box-shadow:0 0 #2e7d3200}}.start-button.stop{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1.5px solid var(--brand-navy);background:transparent;color:var(--brand-navy);padding:10px 22px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:lowercase;cursor:pointer;transition:background .12s ease,color .12s ease}.start-button.stop:hover{background:var(--brand-navy);color:var(--paper)}.scene{position:relative;overflow:hidden;background:var(--paper)}.scene-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.scene-bg svg{width:100%;height:100%}.entity{position:absolute;width:18%;aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none;transition:left .6s var(--ease-squash),top .6s var(--ease-squash)}.entity-art{width:100%;height:100%;transform:translateY(0) scale(var(--scale, 1)) scaleX(var(--flip, 1));animation:entity-bob 2.4s ease-in-out infinite;animation-delay:var(--bob-delay, 0ms);will-change:transform}.entity-art svg{width:100%;height:100%;filter:drop-shadow(0 4px 8px rgba(0,0,0,.15))}@keyframes entity-bob{0%,to{transform:translateY(0) scale(var(--scale, 1)) scaleX(var(--flip, 1))}50%{transform:translateY(-3%) scale(var(--scale, 1)) scaleX(var(--flip, 1))}}@media (prefers-reduced-motion: reduce){.entity-art{animation:none}}.entity-enter{position:relative;width:100%;height:100%;animation-duration:.6s;animation-timing-function:var(--ease-squash);animation-fill-mode:both}.entity-enter.enter-from_left{animation-name:entity-enter-from-left}.entity-enter.enter-from_right{animation-name:entity-enter-from-right}.entity-enter.enter-from_sky{animation-name:entity-enter-from-sky;animation-timing-function:cubic-bezier(.34,1.56,.64,1);animation-duration:.7s}.entity-enter.enter-fade{animation-name:entity-enter-fade;animation-duration:.7s}.entity-enter.enter-pop{animation-name:entity-enter-pop;animation-timing-function:var(--ease-squash);animation-duration:.5s}.entity-enter.enter-none{animation:none}@keyframes entity-enter-from-left{0%{transform:translate(-160%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes entity-enter-from-right{0%{transform:translate(160%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes entity-enter-from-sky{0%{transform:translateY(-180%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes entity-enter-fade{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes entity-enter-pop{0%{opacity:0;transform:scale(.3)}60%{opacity:1;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion: reduce){.entity-enter{animation:none}}.entity-label{position:absolute;top:-28px;left:50%;transform:translate(-50%);background:#fff;border-radius:12px;padding:4px 12px;font-size:14px;font-weight:600;color:var(--ink);box-shadow:0 2px 8px #0000001f;white-space:nowrap}.entity-label.style-groot{top:-42px;font-size:28px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:6px 18px;border-radius:14px;box-shadow:0 6px 18px #0000002e}.entity-label.style-klein{top:-20px;font-size:10px;font-weight:500;letter-spacing:.02em;padding:2px 8px;background:#ffffffd9;color:#777;box-shadow:0 1px 4px #00000014}.entity-label.style-bang{top:-32px;font-size:18px;font-weight:800;color:var(--danger);background:var(--danger-soft);border:2px solid var(--danger);padding:4px 14px;animation:label-wobble .48s ease-in-out 6}@keyframes label-wobble{0%{transform:translate(-50%) rotate(-3deg)}50%{transform:translate(-50%) rotate(3deg)}to{transform:translate(-50%) rotate(-3deg)}}.scene-caption{position:absolute;left:50%;bottom:36px;transform:translate(-50%);max-width:min(92%,760px);padding:14px 26px;background:var(--brand-navy);color:var(--paper);border-radius:24px;font-size:22px;line-height:1.35;font-weight:700;letter-spacing:.005em;text-align:center;text-wrap:balance;pointer-events:none;animation:scene-caption-in .22s var(--ease-squash)}.scene-caption:after{content:"";position:absolute;left:50%;bottom:-14px;transform:translate(-50%);width:30px;height:18px;background:inherit;clip-path:polygon(0 0,100% 0,50% 100%)}@keyframes scene-caption-in{0%{opacity:0;transform:translate(-50%,8px) scale(.94)}to{opacity:1;transform:translate(-50%) scale(1)}}.sticky-chip{position:absolute;left:50%;bottom:10px;transform:translate(-50%);display:flex;align-items:baseline;gap:10px;padding:6px 14px;background:#ffffffeb;border:1px solid rgba(94,60,197,.35);border-radius:999px;max-width:min(88%,520px);text-align:center;pointer-events:none;box-shadow:0 2px 6px #00000014}.sticky-chip-nl{font-size:14px;font-weight:700;color:var(--brand-purple);letter-spacing:.005em;white-space:nowrap}.sticky-chip-en{font-size:11px;font-weight:500;color:#888;font-style:italic;white-space:nowrap}.scene.has-sticky .scene-caption{bottom:64px}.margin-chip-stack{position:absolute;top:16px;right:16px;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none;z-index:5;max-width:min(320px,36vw)}.margin-chip{display:flex;flex-direction:column;align-items:flex-end;gap:2px;padding:10px 16px;background:#fffffff0;border:1px solid #e6e6e6;border-radius:14px;box-shadow:0 4px 14px #1b1f4a1a;max-width:100%;font-size:16px;line-height:1.25;transform-origin:top right;animation:margin-chip-enter .28s var(--ease-squash) both}.margin-chip.is-exiting{animation:margin-chip-exit .26s ease-in both}.margin-chip-nl{font-weight:700;color:var(--ink);font-size:17px}.margin-chip-en{color:#6b6b78;font-style:italic;font-size:13px}@keyframes margin-chip-enter{0%{opacity:0;transform:translate(16px) scale(.92)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes margin-chip-exit{0%{opacity:1;transform:translateY(0) scale(1);max-height:120px;margin-bottom:0;padding-top:10px;padding-bottom:10px}to{opacity:0;transform:translateY(-12px) scale(.92);max-height:0;margin-bottom:-8px;padding-top:0;padding-bottom:0}}@media (prefers-reduced-motion: reduce){.margin-chip,.margin-chip.is-exiting{animation-duration:1ms}}.live-footer{padding:14px 24px;background:var(--paper);border-top:2px solid var(--brand-navy);display:flex;align-items:center;justify-content:flex-start}.idle-hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;padding:clamp(40px,7vh,88px) clamp(24px,5vw,72px);background:var(--paper);overflow:hidden}.idle-hero-blob{position:absolute;pointer-events:none;z-index:0}.idle-hero-blob--navy{width:clamp(280px,38vw,460px);aspect-ratio:1.05 / 1;top:8%;right:4%;background:var(--brand-navy);border-radius:58% 42% 60% 40%/52% 50% 50% 48%;transform:rotate(-6deg);opacity:.16;animation:blob-drift-a 18s ease-in-out infinite alternate}.idle-hero-blob--blue{width:clamp(140px,18vw,220px);aspect-ratio:1.4 / 1;top:6%;right:-40px;background:var(--brand-blue);border-radius:50% 50% 48% 52%/60% 60% 40% 40%;transform:rotate(22deg);animation:blob-drift-b 16s ease-in-out infinite alternate}.idle-hero-blob--purple{width:clamp(220px,28vw,340px);aspect-ratio:1.15 / 1;bottom:-40px;right:10%;background:var(--brand-purple);border-radius:70% 30% 60% 40%/60% 65% 35% 40%;transform:rotate(-8deg);opacity:.85}.idle-hero-dot{position:absolute;pointer-events:none;z-index:0;border-radius:50%}.idle-hero-dot--a{width:36px;height:36px;bottom:14%;left:8%;background:var(--brand-blue);opacity:.85}.idle-hero-dot--b{width:22px;height:22px;top:20%;left:44%;background:var(--brand-purple);opacity:.7}@keyframes blob-drift-a{0%{transform:rotate(-6deg) translate(0)}to{transform:rotate(-2deg) translate(14px,-10px)}}@keyframes blob-drift-b{0%{transform:rotate(22deg) translate(0)}to{transform:rotate(26deg) translate(-12px,10px)}}@media (prefers-reduced-motion: reduce){.idle-hero-blob--navy,.idle-hero-blob--blue{animation:none}}.idle-hero-content{position:relative;z-index:1;width:100%;max-width:1180px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);align-items:center;gap:clamp(32px,5vw,72px)}.idle-hero-text{display:flex;flex-direction:column;align-items:flex-start;gap:22px;text-align:left}.idle-hero-logo{width:168px;height:auto;margin-bottom:4px;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.idle-hero-headline{margin:0;font-family:var(--font-sans);font-size:clamp(34px,5.2vw,56px);line-height:1.02;font-weight:900;letter-spacing:-.03em;color:var(--brand-navy)}.idle-hero-headline-accent{color:var(--brand-purple)}.idle-hero-subline{margin:0;font-size:17px;line-height:1.5;font-weight:600;color:var(--brand-navy);max-width:42ch}.idle-hero-start{align-self:flex-start;margin-top:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:var(--brand-navy);color:var(--paper);padding:16px 32px;border-radius:var(--radius-md);font-family:var(--font-sans);font-size:17px;font-weight:800;letter-spacing:.01em;cursor:pointer;transition:background .14s ease,transform .14s ease}.idle-hero-start:hover:not(:disabled){background:var(--brand-purple);transform:translateY(-1px)}.idle-hero-start:active:not(:disabled){background:var(--brand-blue);transform:translateY(0)}.idle-hero-start:disabled{opacity:.5;cursor:progress}.idle-hero-stage{position:relative;width:100%;aspect-ratio:1 / .92;max-width:600px;justify-self:center}.idle-hero-clip-defs{position:absolute;width:0;height:0;pointer-events:none}.idle-hero-photo{width:100%;height:100%;display:block;object-fit:cover;clip-path:url(#idle-hero-cloud);filter:drop-shadow(0 18px 40px rgba(27,31,74,.12))}.idle-hero-badge{position:absolute;top:-2%;left:-4%;width:clamp(160px,22vw,220px);aspect-ratio:1;display:grid;place-items:center;--tilt: -10deg;--tilt-text: 10deg;--badge-fill: var(--brand-purple);rotate:var(--tilt);animation:badge-pop-in .32s var(--ease-squash);filter:drop-shadow(0 6px 14px rgba(27,31,74,.18))}.idle-hero-badge--purple{--badge-fill: var(--brand-purple)}.idle-hero-badge--blue{--badge-fill: var(--brand-blue)}.idle-hero-badge--navy{--badge-fill: var(--brand-navy)}.idle-hero-badge--star{--tilt: -10deg;--tilt-text: 10deg;--text-width: 62%}.idle-hero-badge--blob{--tilt: 7deg;--tilt-text: -7deg;--text-width: 72%}.idle-hero-badge--bubble{--tilt: -3deg;--tilt-text: 3deg;--text-width: 76%;top:-6%;left:-6%}.idle-hero-badge-shape{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.idle-hero-badge-shape--star>polygon{fill:var(--badge-fill)}.idle-hero-badge-shape--blob{background:var(--badge-fill);border-radius:62% 38% 58% 42%/55% 50% 50% 45%}.idle-hero-badge-shape--bubble{background:var(--badge-fill);border-radius:28%}.idle-hero-badge-shape--bubble:after{content:"";position:absolute;bottom:-10%;left:18%;width:22%;height:18%;background:inherit;clip-path:polygon(0 0,100% 0,25% 100%)}.idle-hero-badge-text{position:relative;z-index:1;width:var(--text-width, 68%);text-align:center;color:var(--paper);font-family:var(--font-sans);font-weight:900;font-size:clamp(13px,1.6vw,17px);line-height:1.15;letter-spacing:-.01em;rotate:var(--tilt-text)}@keyframes badge-pop-in{0%{scale:.7;opacity:0}60%{scale:1.08;opacity:1}to{scale:1;opacity:1}}@media (prefers-reduced-motion: reduce){.idle-hero-badge{animation:none}}@media (max-width: 860px){.idle-hero-content{grid-template-columns:minmax(0,1fr);gap:32px}.idle-hero-text{order:2;align-items:center;text-align:center}.idle-hero-stage{order:1;max-width:480px}.idle-hero-subline{margin-inline:auto}.idle-hero-start{align-self:center}}.bubble{position:relative;display:inline-block;padding:14px 24px;border-radius:22px;font-family:var(--font-sans);font-size:19px;font-weight:700;line-height:1.3;max-width:100%;animation:bubble-pop-in .28s var(--ease-squash)}.bubble--purple{background:var(--brand-purple);color:var(--paper)}.bubble--blue{background:var(--brand-blue);color:var(--paper)}.bubble--navy{background:var(--brand-navy);color:var(--paper)}.bubble--paper{background:var(--paper);color:var(--brand-navy);box-shadow:0 0 0 1.5px var(--brand-navy) inset}.bubble--tail-bl:after,.bubble--tail-bc:after,.bubble--tail-br:after{content:"";position:absolute;bottom:-12px;width:26px;height:16px;background:inherit}.bubble--tail-bl:after{left:26px;clip-path:polygon(0 0,100% 0,30% 100%)}.bubble--tail-bc:after{left:50%;transform:translate(-50%);clip-path:polygon(0 0,100% 0,50% 100%)}.bubble--tail-br:after{right:26px;clip-path:polygon(0 0,100% 0,70% 100%)}@keyframes bubble-pop-in{0%{transform:scale(.92);opacity:0}60%{transform:scale(1.02)}to{transform:scale(1);opacity:1}}@media (prefers-reduced-motion: reduce){.bubble{animation:none}}.coach-panel{position:fixed;top:0;right:0;width:min(360px,92vw);height:100vh;background:#fafafa;border-left:1px solid #e5e5e5;box-shadow:-10px 0 30px #0000000f;display:flex;flex-direction:column;z-index:20;animation:coach-slide-in .22s cubic-bezier(.2,.8,.2,1)}@keyframes coach-slide-in{0%{transform:translate(8%);opacity:0}to{transform:translate(0);opacity:1}}.coach-panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:#fff;border-bottom:1px solid #ececec;font-size:14px;letter-spacing:.04em;text-transform:uppercase;color:#444}.coach-panel-close{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;font-size:22px;line-height:1;color:#888;cursor:pointer;padding:4px 10px;border-radius:6px}.coach-panel-close:hover{background:#f0f0f0;color:#333}.coach-panel-section{padding:14px 16px;border-bottom:1px solid #ececec}.coach-panel-section h3{margin:0 0 10px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#888;font-weight:600}.coach-panel-transcript-section{flex:1;display:flex;flex-direction:column;min-height:0;border-bottom:none}.coach-empty{margin:0;font-size:13px;color:#999;font-style:italic}.lesson-stats{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;margin:0;font-size:13px}.lesson-stats dt{color:#888;font-weight:500}.lesson-stats dd{margin:0;color:var(--ink);font-weight:600;word-break:break-word}.lesson-stats-empty{color:#bbb;font-style:italic;font-weight:400}.word-chips{display:flex;flex-wrap:wrap;gap:4px}.word-chip{padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.01em}.word-chip-warmed{background:#fff4d6;color:#8a6d00}.word-chip-earned{background:#e3f6e7;color:#1f6f33}.transcript-log{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:8px;font-size:13px;line-height:1.4}.transcript-line{display:flex;flex-direction:column;gap:2px;padding:8px 10px;border-radius:8px;background:#fff;border:1px solid #ececec}.transcript-line-speaker{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.transcript-line.speaker-user .transcript-line-speaker{color:#1e6fbf}.transcript-line.speaker-ai .transcript-line-speaker{color:#b8385a}.transcript-line-text{color:#222}.error-banner{position:fixed;left:50%;bottom:80px;transform:translate(-50%);width:min(560px,calc(100% - 32px));display:flex;gap:16px;align-items:flex-start;padding:16px 18px;background:#fff;border:1px solid #f5c2c2;border-left:4px solid var(--danger);border-radius:12px;box-shadow:0 12px 32px #0000001f;z-index:10;animation:error-banner-in .22s ease-out}@keyframes error-banner-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.error-banner-body{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.error-banner-headline{color:var(--danger);font-size:15px}.error-banner-hint{color:#444;font-size:13px;line-height:1.4}.error-banner-details{margin-top:4px;font-size:12px;color:#888}.error-banner-details summary{cursor:pointer;-webkit-user-select:none;user-select:none}.error-banner-details code{display:block;margin-top:4px;padding:6px 8px;background:#faf3f3;border-radius:6px;word-break:break-word;white-space:pre-wrap}.error-banner-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.error-banner-retry{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:var(--danger);color:#fff;padding:8px 16px;border-radius:999px;font-size:13px;font-weight:600;cursor:pointer}.error-banner-retry:hover{filter:brightness(1.05)}.error-banner-dismiss{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:#999;font-size:22px;line-height:1;padding:4px 8px;cursor:pointer;border-radius:6px}.error-banner-dismiss:hover{background:#f5f5f5;color:#444}.access-gate{position:relative;min-height:100vh;display:grid;place-items:center;padding:32px 20px;background:var(--bg);overflow:hidden}.access-gate-blob{position:absolute;border-radius:50%;filter:blur(0px);opacity:.18;pointer-events:none}.access-gate-blob--purple{width:520px;height:520px;background:var(--brand-purple);top:-180px;left:-160px}.access-gate-blob--blue{width:460px;height:460px;background:var(--brand-blue);bottom:-160px;right:-140px}.access-gate-blob--navy{width:280px;height:280px;background:var(--brand-navy);top:60%;left:8%;opacity:.08}.access-gate-content{position:relative;width:100%;max-width:440px}.access-gate-loading{display:block;text-align:center;color:var(--ink);opacity:.6}.access-gate-error{text-align:center;color:var(--danger);background:var(--danger-soft);padding:14px 18px;border-radius:var(--radius-md);border:2px solid var(--danger)}.access-gate-card{background:#fff;border:2px solid var(--brand-navy);border-radius:var(--radius-lg);padding:32px 28px;display:flex;flex-direction:column;gap:12px;box-shadow:0 14px 0 -8px #1b1f4a2e}.access-gate-eyebrow{margin:0;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--brand-purple);font-weight:800}.access-gate-title{margin:0;font-size:24px;line-height:1.2;letter-spacing:-.01em;color:var(--brand-navy)}.access-gate-subtitle{margin:0 0 8px;color:var(--brand-navy);opacity:.75;font-size:15px;line-height:1.4}.access-gate-label{font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:lowercase;color:var(--brand-navy)}.access-gate-input{font:inherit;font-size:18px;padding:12px 14px;border:2px solid var(--brand-navy);border-radius:var(--radius-md);background:var(--paper);color:var(--brand-navy);outline:none;transition:border-color .12s ease,box-shadow .12s ease}.access-gate-input:focus{border-color:var(--brand-purple);box-shadow:0 0 0 3px #6b3fe033}.access-gate-input:disabled{opacity:.6;cursor:not-allowed}.access-gate-formerror{margin:0;color:var(--danger);font-size:14px;font-weight:700}.access-gate-submit{margin-top:8px;font:inherit;font-size:16px;font-weight:800;letter-spacing:.01em;padding:14px 18px;border:2px solid var(--brand-navy);border-radius:var(--radius-md);background:var(--brand-purple);color:#fff;cursor:pointer;transition:transform .12s var(--ease-squash),background .12s ease}.access-gate-submit:hover:not(:disabled){background:#5a32c9;transform:translateY(-1px)}.access-gate-submit:disabled{opacity:.55;cursor:not-allowed}
