:root {
  --navy: #0b1b2b;
  --navy-deep: #0a1622;
  --panel: #102638;
  --panel-strong: #132e43;
  --brand: #90b33e;
  --brand-deep: #7fa036;
  --white: #f7fafb;
  --mist: #c9d3da;
  --muted: #7f919e;
  --line: rgba(190, 215, 222, 0.16);
  --line-strong: rgba(144, 179, 62, 0.52);
  --danger: #e98b85;
  --font-body: -apple-system, "Segoe UI", Roboto, sans-serif;
  --text-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
  --text-sm: clamp(0.875rem, 0.8rem + 0.35vw, 1rem);
  --text-base: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
  --text-lg: clamp(1.125rem, 1rem + 0.75vw, 1.5rem);
  --text-xl: clamp(1.5rem, 1.2rem + 1.25vw, 2.25rem);
  --text-2xl: clamp(2rem, 1.2rem + 2.5vw, 3.5rem);
  --text-3xl: clamp(2.5rem, 1rem + 4vw, 5rem);
  --space-1: .25rem; --space-2: .5rem; --space-3: .75rem; --space-4: 1rem; --space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem; --space-12: 3rem; --space-16: 4rem; --space-20: 5rem;
  --radius-sm: .375rem; --radius-md: .75rem; --radius-lg: 1.25rem; --radius-xl: 1.75rem;
  --ease-out: cubic-bezier(.16,1,.3,1); --ease-in: cubic-bezier(.4,0,1,1); --transition: 300ms var(--ease-out);
}
*{box-sizing:border-box;margin:0} html,body{height:100%;overflow:hidden;background:var(--navy-deep)} body{font-family:var(--font-body);color:var(--white);font-size:var(--text-base);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility} button,input,select{font:inherit} button{border:0;cursor:pointer} video,canvas,svg{display:block;max-width:100%}.skip-link{position:absolute;left:-10000px;top:auto}.skip-link:focus{left:1rem;top:1rem;z-index:20;background:var(--white);color:var(--navy);padding:.75rem}.kiosk-shell{position:relative;isolation:isolate;width:100%;height:100dvh;background:linear-gradient(125deg,var(--navy-deep),var(--navy));overflow:hidden}.kiosk-shell::before{content:"";position:absolute;inset:0;z-index:-1;opacity:.34;background-image:linear-gradient(rgba(165,199,207,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(165,199,207,.045) 1px,transparent 1px);background-size:4.5rem 4.5rem;mask-image:linear-gradient(to bottom,black,transparent 74%)}
.brand-bar{height:clamp(4.5rem,7.2vh,6.5rem);display:flex;justify-content:space-between;align-items:center;padding:0 clamp(1.5rem,4vw,5rem);border-bottom:1px solid var(--line);position:relative;z-index:4}/* The real wordmark from introid.com, served from here rather than hotlinked:
   conference wifi should not be able to take the brand off the screen. It is
   the full colour mark on transparency, so it sits straight on the navy. */
.wordmark{display:flex;align-items:center;text-decoration:none}.wordmark img{height:clamp(1.7rem,3.4vh,2.6rem);width:auto}.brand-meta{font-size:var(--text-xs);letter-spacing:.15em;font-weight:700;color:var(--mist)}.brand-meta span{color:var(--brand);margin-left:.45rem}.view{position:absolute;inset:clamp(4.5rem,7.2vh,6.5rem) 0 0;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--transition),visibility var(--transition)}.view.is-active{opacity:1;visibility:visible;pointer-events:auto}.eyebrow{font-size:var(--text-xs);font-weight:700;letter-spacing:.18em;color:var(--brand)}
.view-idle{display:grid;grid-template-columns:1.15fr .85fr;grid-template-rows:1fr auto;align-items:center;gap:var(--space-8);padding:clamp(2rem,6vh,5rem) clamp(1.5rem,8vw,11rem);}.idle-copy{align-self:center}.idle-copy h1{font-size:var(--text-3xl);line-height:1.03;letter-spacing:-.055em;font-weight:700;margin:var(--space-4) 0 var(--space-6);max-width:22ch;text-wrap:balance}.idle-subline{color:var(--mist);font-size:var(--text-lg);max-width:42ch;text-wrap:balance}.scan-station{justify-self:center;align-self:center;text-align:center}.scan-target{width:clamp(14rem,23vw,23rem);aspect-ratio:1;position:relative;border:1px solid rgba(144,179,62,.25);display:grid;place-items:center;animation:target-pulse 2.3s ease-in-out infinite}.scan-target::before,.scan-target::after{content:"";position:absolute;width:36%;height:36%;border-color:var(--brand);border-style:solid}.scan-target::before{left:-1px;top:-1px;border-width:3px 0 0 3px}.scan-target::after{right:-1px;bottom:-1px;border-width:0 3px 3px 0}.scan-target span{height:38%;width:38%;border:1px solid rgba(144,179,62,.7);border-radius:50%;box-shadow:0 0 2.4rem rgba(144,179,62,.25);animation:scan-core 2.3s ease-in-out infinite}.scan-target i{position:absolute;left:14%;right:14%;height:2px;background:var(--brand);box-shadow:0 0 1rem var(--brand);animation:scan-line 2.3s ease-in-out infinite}.scan-target b,.scan-target em{position:absolute;width:.4rem;height:.4rem;background:var(--brand)}.scan-target b{top:24%;right:24%}.scan-target em{bottom:24%;left:24%}.scan-label{font-size:var(--text-xs);letter-spacing:.2em;font-weight:700;color:var(--mist);margin-top:var(--space-6)}.camera-preview{grid-column:1;align-self:end;width:clamp(13.5rem,20vw,20rem);background:rgba(10,22,34,.82);border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden;box-shadow:0 1rem 3rem rgba(0,0,0,.16)}.camera-head{height:2.15rem;padding:0 var(--space-3);display:flex;align-items:center;gap:.5rem;font-size:var(--text-xs);font-weight:700;letter-spacing:.13em;color:var(--mist);border-bottom:1px solid var(--line)}.status-dot{width:.5rem;height:.5rem;border-radius:50%;background:var(--brand);box-shadow:0 0 .75rem var(--brand)}#badge-camera{width:100%;height:clamp(7rem,10vw,10rem);object-fit:cover;transform:scaleX(-1);background:#07111a}.camera-canvas{display:none}.camera-status{min-height:1.95rem;padding:.35rem var(--space-3);font-size:var(--text-xs);color:var(--muted)}.text-action{grid-column:2;justify-self:center;align-self:end;background:transparent;color:var(--white);font-size:var(--text-sm);padding:var(--space-3) var(--space-4);border-bottom:1px solid rgba(255,255,255,.4);letter-spacing:.02em}.text-action span{color:var(--brand);font-size:1.45em;vertical-align:-.07em;margin-left:.3rem}.text-action:hover{border-color:var(--brand);color:var(--brand)}
.view-scanning,.view-fallback{display:grid;place-items:center;padding:var(--space-8)}.resolve-card,.fallback-card{width:min(34rem,92vw);padding:clamp(2rem,5vw,4.5rem);background:rgba(17,38,56,.95);border:1px solid var(--line);border-radius:var(--radius-lg);text-align:center;box-shadow:0 1.5rem 5rem rgba(0,0,0,.22)}.resolve-card h2,.fallback-card h2{font-size:var(--text-2xl);letter-spacing:-.04em;margin:var(--space-4) 0 var(--space-3)}.resolve-card>p:last-child,.fallback-card>p:not(.eyebrow){color:var(--mist)}.spinner{width:2.5rem;height:2.5rem;margin:0 auto var(--space-5);border:2px solid rgba(144,179,62,.2);border-top-color:var(--brand);border-radius:50%;animation:spin .85s linear infinite}
/* The row has to be capped at the height of the view. Left as an implicit auto
   row it grew to fit the transcript instead, so the transcript never scrolled,
   the row got taller with every exchange, and the avatar stage grew with it and
   slid down out of the frame. min-height 0 on both columns is what lets them
   shrink below their content and hand the constraint down to the scroller. */
.view-conversation{display:grid;grid-template-columns:60% 40%;grid-template-rows:minmax(0,1fr);background:var(--navy-deep)}.persona-stage{min-width:0;min-height:0;padding:clamp(1rem,2.3vw,2.5rem);display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:var(--space-3);border-right:1px solid var(--line)}.stage-topline,.stage-footer{display:flex;justify-content:space-between;align-items:center;color:var(--mist);font-size:var(--text-xs);font-weight:700;letter-spacing:.14em}.stage-topline i{width:.5rem;height:.5rem;display:inline-block;background:var(--brand);border-radius:50%;margin-right:.42rem;box-shadow:0 0 .75rem var(--brand)}.video-frame{min-height:0;height:100%;position:relative;overflow:hidden;border-radius:var(--radius-lg);background:#06111b;border:1px solid rgba(144,179,62,.24);box-shadow:inset 0 0 0 1px rgba(144,179,62,.1),0 0 3.2rem rgba(144,179,62,.07);transition:border-color var(--transition),box-shadow var(--transition)}.video-frame.is-speaking{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand),0 0 2.2rem rgba(144,179,62,.32)}/* cover fills the stage, which is the look this screen is designed around. It
   crops to do that, so it only behaves while the frame holds still. The avatar
   appearing to zoom in mid answer was this frame growing taller with every
   exchange and re-cropping as it grew, not anything the stream did. The row
   above is capped now, so the frame is fixed and the crop is fixed with it.
   If the framing ever drifts again, read Video size in the operator panel
   first: a stream that changes shape would also re-crop under cover, and that
   is a different fix from this one. */
#persona-video{height:100%;width:100%;object-fit:cover;background:#07111a}.video-empty{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:var(--space-3);background:#091724;color:var(--mist);font-size:var(--text-sm);transition:opacity var(--transition)}.video-frame.has-video .video-empty{opacity:0;pointer-events:none}.video-empty .spinner{width:1.75rem;height:1.75rem;margin:0}.aivat-mark b{color:var(--brand);letter-spacing:.2em}.conversation-panel{padding:clamp(1.25rem,2.6vw,3rem);display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:clamp(.75rem,1.7vh,1.5rem);background:linear-gradient(160deg,#102638,#0c1e2e);min-width:0;min-height:0}.attendee-block{border-bottom:1px solid var(--line);padding-bottom:var(--space-4)}.attendee-block h2{font-size:var(--text-xl);letter-spacing:-.04em;margin:var(--space-2) 0}.attendee-role{font-size:var(--text-sm);color:var(--mist)}.attendee-company{font-size:var(--text-sm);color:var(--brand);font-weight:600}.topics-section h3,.transcript-head h3{font-size:var(--text-sm);font-weight:700;color:var(--mist);letter-spacing:.08em;text-transform:uppercase}.topic-chips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.topic-chip{min-height:2.65rem;padding:.55rem .85rem;color:var(--white);font-weight:600;font-size:var(--text-sm);background:rgba(255,255,255,.035);border:1px solid var(--line);border-radius:var(--radius-sm);text-align:left}.topic-chip:hover,.topic-chip:focus-visible{border-color:var(--brand);color:var(--brand);background:rgba(144,179,62,.09)}.topic-chip.is-selected{border-color:var(--brand);background:rgba(144,179,62,.14);color:var(--brand)}.transcript-section{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:var(--space-2)}.transcript-head{display:flex;align-items:center;justify-content:space-between}.transcript-head span{font-size:var(--text-xs);color:var(--muted)}.live-transcript{overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(144,179,62,.5) transparent;padding-right:var(--space-2);display:flex;flex-direction:column;gap:var(--space-3)}.empty-transcript{font-size:var(--text-sm);color:var(--muted);line-height:1.5;padding-top:var(--space-2)}.transcript-turn{max-width:92%;padding:.75rem .9rem;border-radius:var(--radius-sm);font-size:var(--text-sm);line-height:1.45;border:1px solid var(--line)}.transcript-turn .speaker{display:block;color:var(--brand);font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;margin-bottom:.22rem}.transcript-turn.user{align-self:flex-end;background:rgba(202,219,224,.09);border-top-right-radius:0}.transcript-turn.persona{align-self:flex-start;background:rgba(144,179,62,.1);border-top-left-radius:0}.transcript-turn.is-live{opacity:.78}.transcript-turn.is-speaking-now p{color:var(--muted);font-style:italic}.transcript-turn.is-speaking-now p::after{content:'';display:inline-block;width:.3em;height:.3em;margin-left:.45em;border-radius:50%;background:var(--brand);vertical-align:middle;animation:speaking-pulse 1.1s ease-in-out infinite}@keyframes speaking-pulse{0%,100%{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}.finish-button,.primary-button,.secondary-button{min-height:3rem;padding:.75rem var(--space-4);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:700;letter-spacing:.02em;transition:background 180ms var(--ease-out),color 180ms var(--ease-out),border-color 180ms var(--ease-out),transform 180ms var(--ease-out),box-shadow 180ms var(--ease-out)}.finish-button{background:transparent;border:1px solid rgba(201,211,218,.38);color:var(--white)}.finish-button:hover,.secondary-button:hover{border-color:var(--brand);color:var(--brand)}.primary-button{background:var(--brand);color:#0a1622}.primary-button:hover{background:#a6c95e;box-shadow:0 .5rem 1.5rem rgba(144,179,62,.2);transform:translateY(-1px)}.secondary-button{background:transparent;border:1px solid rgba(201,211,218,.38);color:var(--white)}.primary-button:active,.secondary-button:active,.finish-button:active{transform:translateY(0)}
.view-wrapup{display:grid;place-items:center;padding:var(--space-8)}.wrapup-card{width:min(68rem,94vw);min-height:min(38rem,78vh);display:grid;grid-template-columns:1.2fr .8fr;overflow:hidden;border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--panel);box-shadow:0 1.5rem 5rem rgba(0,0,0,.22)}.wrapup-copy{padding:clamp(2rem,4.3vw,5rem);display:flex;flex-direction:column;justify-content:center}.wrapup-copy h2{font-size:var(--text-2xl);letter-spacing:-.04em;margin:var(--space-3) 0}.wrapup-copy>p:not(.eyebrow){color:var(--mist);max-width:36ch}.topic-summary{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:var(--space-5) 0;margin:var(--space-8) 0}.topic-summary>span{font-size:var(--text-xs);font-weight:700;letter-spacing:.14em;color:var(--muted)}#topics-discussed{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-3)}.topic-pill{font-size:var(--text-sm);color:var(--brand);padding:.35rem .6rem;background:rgba(144,179,62,.09);border:1px solid rgba(144,179,62,.25);border-radius:99px}.wrapup-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.wrapup-actions button{flex:1 1 12rem}.qr-block{display:grid;place-content:center;justify-items:center;text-align:center;gap:var(--space-3);padding:var(--space-8);background:#0b1c2b;border-left:1px solid var(--line)}.qr-code{padding:var(--space-3);background:var(--white);border-radius:var(--radius-sm);width:max-content}.qr-code canvas,.qr-code img{width:clamp(10rem,14vw,13rem)!important;height:clamp(10rem,14vw,13rem)!important}.qr-block p{font-size:var(--text-sm);color:var(--mist)}.qr-block small{font-size:var(--text-xs);font-weight:700;letter-spacing:.14em;color:var(--brand)}.fallback-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-3)}.fallback-card .primary-button{margin-top:var(--space-3)}.qr-code-small canvas,.qr-code-small img{width:9.5rem!important;height:9.5rem!important}
.manual-dialog{width:min(31rem,92vw);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--panel);color:var(--white);padding:clamp(1.75rem,4vw,3.25rem);box-shadow:0 1rem 5rem rgba(0,0,0,.5)}.manual-dialog::backdrop{background:rgba(3,10,16,.72)}.manual-dialog form{display:grid;gap:var(--space-4)}.manual-dialog h2{font-size:var(--text-xl);letter-spacing:-.03em}.manual-dialog label{font-size:var(--text-sm);color:var(--mist)}.manual-dialog input{background:#091724;border:1px solid var(--line);border-radius:var(--radius-sm);min-height:3.2rem;padding:.7rem;color:var(--white)}.manual-dialog input:focus{outline:2px solid var(--brand);border-color:var(--brand)}.dialog-close,.operator-heading button{position:absolute;right:var(--space-4);top:var(--space-3);background:transparent;color:var(--mist);font-size:1.65rem;line-height:1}.operator-panel{position:absolute;right:var(--space-4);bottom:var(--space-4);width:min(23rem,calc(100vw - 2rem));padding:var(--space-5);background:#07131f;border:1px solid var(--line-strong);border-radius:var(--radius-md);box-shadow:0 1rem 4rem rgba(0,0,0,.44);z-index:10;opacity:0;transform:translateY(1rem);visibility:hidden;transition:opacity var(--transition),transform var(--transition),visibility var(--transition)}.operator-panel.is-open{opacity:1;transform:none;visibility:visible}.operator-heading{position:relative;color:var(--brand);font-size:var(--text-xs);font-weight:700;letter-spacing:.16em;padding-bottom:var(--space-4);border-bottom:1px solid var(--line)}.operator-panel dl{display:grid;gap:var(--space-3);margin:var(--space-4) 0}.operator-panel dl div{display:grid;grid-template-columns:6.7rem 1fr;gap:var(--space-3);font-size:var(--text-xs)}.operator-panel dt{color:var(--muted)}.operator-panel dd{margin:0;color:var(--mist);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.operator-panel label{display:block;color:var(--mist);font-size:var(--text-xs);margin-bottom:var(--space-2)}.operator-panel select{width:100%;min-height:2.7rem;background:#0c2030;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--white);font-size:var(--text-sm);padding:0 var(--space-2);margin-bottom:var(--space-3)}.operator-panel .secondary-button{width:100%}.operator-action{width:100%;min-height:2.7rem;margin-bottom:var(--space-3);background:#0c2030;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--mist);font-size:var(--text-xs);letter-spacing:.04em;cursor:pointer}.operator-action:hover{border-color:var(--brand);color:var(--white)}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes target-pulse{0%,100%{box-shadow:0 0 0 0 rgba(144,179,62,.04)}50%{box-shadow:0 0 3rem 1rem rgba(144,179,62,.09)}}@keyframes scan-core{0%,100%{transform:scale(.78);opacity:.5}50%{transform:scale(1.06);opacity:1}}@keyframes scan-line{0%{top:18%;opacity:0}18%{opacity:1}76%{opacity:1}100%{top:80%;opacity:0}}
@media (max-width: 900px),(max-height: 760px){.view-idle{padding:var(--space-6) clamp(1.25rem,5vw,4rem)}.idle-copy h1{font-size:var(--text-2xl)}.scan-target{width:clamp(11.5rem,19vw,16rem)}.camera-preview{width:13.5rem}.persona-stage{padding:var(--space-4)}.conversation-panel{padding:var(--space-4);gap:var(--space-3)}.topic-chip{min-height:2.35rem;padding:.42rem .65rem}.finish-button,.primary-button,.secondary-button{min-height:2.7rem}.wrapup-card{min-height:0}}
@media (max-width: 700px){html,body{overflow:auto}.kiosk-shell{min-height:100dvh;height:auto;overflow:auto}.brand-bar{padding:0 var(--space-4)}.brand-meta{display:none}.view{min-height:calc(100dvh - 4.5rem);position:absolute;overflow:auto}.view-idle{grid-template-columns:1fr;grid-template-rows:auto auto auto auto;text-align:center;padding:var(--space-10) var(--space-5)}.idle-copy{justify-self:center}.idle-copy h1{font-size:var(--text-2xl)}.scan-station{order:2}.camera-preview{grid-column:auto;order:3;justify-self:center}.text-action{grid-column:auto;order:4;align-self:auto}.view-conversation{grid-template-columns:1fr;grid-template-rows:auto auto;overflow:auto}.persona-stage{height:54dvh;min-height:26rem;border-right:0;border-bottom:1px solid var(--line)}.conversation-panel{min-height:34rem}.wrapup-card{grid-template-columns:1fr}.qr-block{border-left:0;border-top:1px solid var(--line);padding:var(--space-8)}.wrapup-copy{padding:var(--space-8)}.wrapup-actions{flex-direction:column}.wrapup-actions button{flex:auto}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}button:focus-visible,a:focus-visible,select:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
