#top-bar{position:fixed;top:0;left:0;right:0;height:56px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:var(--space-3) var(--space-3) 0;z-index:var(--z-topbar);pointer-events:none}#top-bar .bar-slot{display:flex;align-items:center;gap:var(--space-2)}#top-bar .bar-slot>*{pointer-events:auto}#top-bar .bar-slot.left{justify-content:flex-start}#top-bar .bar-slot.center{justify-content:center;flex-direction:column;gap:4px}#top-bar .bar-slot.right{justify-content:flex-end}.rail-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid var(--hairline);border-radius:var(--radius-m);background:var(--surface-2);backdrop-filter:var(--blur-pill);color:var(--text-1);font-size:15px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:border-color .15s ease,background .15s ease}.rail-btn:hover{border-color:var(--hairline-strong);background:var(--surface-hover)}.rail-btn[aria-pressed=true]{border-color:var(--accent-border);background:var(--accent-soft)}#connection-indicator{background:var(--surface-2);backdrop-filter:var(--blur-pill);border:1px solid var(--hairline);border-radius:var(--radius-pill);padding:5px 14px;display:flex;align-items:center;gap:6px;font-size:var(--fs-s);font-weight:500;color:var(--text-3)}#connection-dot{width:8px;height:8px;border-radius:50%;background:#666}#connection-dot.connected{background:var(--ok)}#connection-dot.connecting{background:var(--warn)}#connection-dot.disconnected{background:var(--err)}#variant-badge-slot:empty{display:none}#variant-badge-slot{padding:4px 14px;background:var(--surface-2);backdrop-filter:var(--blur-pill);border:1px solid var(--hairline);border-radius:var(--radius-m);color:#ccc;font-size:var(--fs-m);text-align:center;pointer-events:none}.app-panel{position:fixed;top:56px;width:320px;max-height:calc(100dvh - 128px);display:flex;flex-direction:column;background:var(--surface-1);backdrop-filter:var(--blur-panel);border:1px solid var(--hairline);border-radius:var(--radius-l);color:var(--text-2);font-size:var(--fs-m);box-shadow:var(--shadow-1);z-index:var(--z-chrome);transition:transform .3s ease,opacity .3s ease;overflow:hidden}.app-panel[data-side=left]{left:var(--space-3)}.app-panel[data-side=right]{right:var(--space-3);width:320px}.app-panel[data-side=left].desktop-hidden{transform:translate(calc(-100% - 24px));opacity:0;pointer-events:none}.app-panel[data-side=right].desktop-hidden{transform:translate(calc(100% + 24px));opacity:0;pointer-events:none}.panel-grabber{display:none}.panel-header{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-3) var(--space-2);border-bottom:1px solid var(--hairline);flex-shrink:0}.panel-header h2{margin:0;font-family:var(--font-display);font-size:var(--fs-xl);font-weight:600;letter-spacing:.02em;color:var(--text-1);flex:1}.panel-actions{display:flex;align-items:center;gap:var(--space-1)}.panel-actions a{color:var(--text-dim);font-size:var(--fs-xs);text-decoration:none}.panel-actions a:hover{color:var(--text-2)}.panel-close{width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:var(--radius-s);color:var(--text-3);font-size:14px;cursor:pointer}.panel-close:hover{color:var(--text-1);background:var(--surface-hover)}.panel-body{flex:1;overflow-y:auto;padding:var(--space-2) var(--space-3) var(--space-3);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;min-height:0}#chat-panel .panel-body{display:flex;flex-direction:column}#bottom-bar{position:fixed;bottom:var(--space-3);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--space-3);z-index:var(--z-topbar)}#bottom-bar .bar-overflow{display:flex;gap:var(--space-1)}#bottom-bar .bar-overflow button{background:none;border:none;color:var(--text-dim);font-size:var(--fs-xs);font-family:var(--font-ui);cursor:pointer;padding:4px 6px}#bottom-bar .bar-overflow button:hover{color:var(--text-2)}#spacebar-hint{padding:10px 24px;background:var(--surface-2);backdrop-filter:var(--blur-panel);border:1px solid var(--hairline-strong);border-radius:var(--radius-l);color:#ccc;font-size:var(--fs-l);font-weight:500;text-align:center;transition:all .2s ease;position:relative}#spacebar-hint:before{content:"";display:inline-block;width:8px;height:8px;margin-right:8px;border-radius:50%;background:var(--text-dim);vertical-align:middle;transition:background .2s ease}@keyframes state-pulse{0%,to{opacity:1}50%{opacity:.35}}#spacebar-hint.recording{border-color:var(--err);color:var(--err-soft)}#spacebar-hint.recording:before{background:var(--err);animation:state-pulse 1s ease-in-out infinite}#spacebar-hint.processing{border-color:var(--warn);color:var(--warn-soft)}#spacebar-hint.processing:before{background:var(--warn);animation:state-pulse 1.4s ease-in-out infinite}#spacebar-hint.speaking{border-color:var(--ok);color:var(--ok-soft)}#spacebar-hint.speaking:before{background:var(--ok);animation:state-pulse .7s ease-in-out infinite}#spacebar-hint.realtime{border-color:var(--err);color:var(--err-soft);box-shadow:0 0 8px #ef44444d}#spacebar-hint.realtime:before{background:var(--err);animation:state-pulse 1s ease-in-out infinite}#spacebar-hint.realtime.muted{border-color:#666;color:var(--text-3);box-shadow:none}#spacebar-hint.realtime.muted:before{background:var(--text-dim);animation:none}#mute-btn,#reset-view-btn,#map-btn{background:var(--surface-2);backdrop-filter:var(--blur-pill);border:1px solid var(--hairline-strong);border-radius:var(--radius-m);color:#aaa;font-size:16px;padding:6px 10px;cursor:pointer;transition:all .2s}#mute-btn:hover,#reset-view-btn:hover,#map-btn:hover{border-color:#ffffff40;color:var(--text-1)}#mute-btn.muted{color:var(--err-soft);border-color:var(--err-soft)}#mobile-text-input{display:none}#status{position:fixed;bottom:var(--space-3);left:var(--space-3);max-width:300px;padding:4px 10px;background:var(--surface-2);backdrop-filter:var(--blur-pill);border:1px solid var(--hairline);border-radius:var(--radius-m);color:var(--text-3);font-size:var(--fs-s);font-family:var(--font-mono);z-index:var(--z-chrome)}#status:empty{display:none}#transcript{position:fixed;bottom:90px;left:50%;transform:translate(-50%);width:500px;max-width:calc(100vw - 700px);max-height:200px;overflow-y:auto;background:var(--surface-1);backdrop-filter:var(--blur-panel);border:1px solid var(--hairline);border-radius:var(--radius-l);padding:10px 14px;color:var(--text-2);font-size:var(--fs-l);z-index:var(--z-chrome);display:flex;flex-direction:column;gap:6px}#transcript:empty{display:none}#transcript .transcript-toggle{position:absolute;top:4px;right:6px;background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:14px;padding:2px 4px;line-height:1;z-index:1}#transcript .transcript-toggle:hover{color:var(--text-2)}#transcript.minimized{min-height:28px;max-height:28px;overflow:hidden;padding:4px 14px;cursor:pointer}#transcript.minimized:after{content:"Transcript";font-size:var(--fs-s);color:var(--text-dim)}#transcript.minimized .msg{display:none}#transcript.minimized .transcript-toggle{top:4px}#transcript .msg{padding:4px 0;line-height:1.4}#transcript .msg.user{color:var(--role-user)}#transcript .msg.user:before{content:"You: ";font-weight:600}#transcript .msg.assistant{color:var(--role-assistant)}#transcript .msg.assistant:before{content:"Assistant: ";font-weight:600}#drop-zone{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);padding:40px 60px;border:2px dashed var(--hairline-strong);border-radius:16px;color:var(--text-3);font-size:16px;font-weight:500;text-align:center;z-index:5;pointer-events:none;background:#0a0a1480;backdrop-filter:var(--blur-pill)}#drop-zone.hidden{display:none}#sheet-backdrop{position:fixed;inset:0;background:#00000080;z-index:var(--z-backdrop)}#sheet-backdrop[hidden]{display:none}@media(max-width:768px)and (min-height:501px){.app-panel,.app-panel[data-side=left],.app-panel[data-side=right]{inset:auto 0 0;width:auto;height:calc(100dvh - 56px);max-height:none;border-radius:var(--radius-l) var(--radius-l) 0 0;border-bottom:none;transform:translateY(100%);opacity:1;pointer-events:auto;z-index:var(--z-sheet);padding-bottom:env(safe-area-inset-bottom)}.app-panel.desktop-hidden{transform:translateY(100%);opacity:1;pointer-events:auto}.app-panel.open.half{transform:translateY(45%)}.app-panel.open.full{transform:translateY(0)}.app-panel.dragging{transition:none}.panel-grabber{display:block;flex-shrink:0;padding:10px 0 4px;touch-action:none;cursor:grab}.panel-grabber:before{content:"";display:block;width:44px;height:4px;margin:0 auto;border-radius:2px;background:var(--hairline-strong)}#bottom-bar{flex-wrap:wrap;justify-content:center;gap:var(--space-2);bottom:calc(16px + env(safe-area-inset-bottom));width:calc(100% - 24px)}#bottom-bar #mobile-text-input{order:10}#bottom-bar .bar-overflow{display:none}#spacebar-hint{padding:0;width:72px;height:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px}#spacebar-hint kbd{display:none}#spacebar-hint:before{display:none}@keyframes mic-ring{0%{box-shadow:0 0 0 0 var(--ring-color, rgba(255,255,255,.25))}70%{box-shadow:0 0 0 14px transparent}to{box-shadow:0 0 0 0 transparent}}#spacebar-hint.recording{--ring-color: rgba(239, 68, 68, .5);animation:mic-ring 1.1s ease-out infinite}#spacebar-hint.processing{--ring-color: rgba(234, 179, 8, .45);animation:mic-ring 1.5s ease-out infinite}#spacebar-hint.speaking{--ring-color: rgba(34, 197, 94, .45);animation:mic-ring .9s ease-out infinite}#spacebar-hint.realtime{--ring-color: rgba(239, 68, 68, .5);animation:mic-ring 1.1s ease-out infinite}#spacebar-hint.realtime.muted{animation:none}@keyframes mic-pulse{0%,to{box-shadow:0 0 #fff3}50%{box-shadow:0 0 0 10px #fff0}}#spacebar-hint:not(.recording):not(.processing):not(.speaking):not(.realtime){animation:mic-pulse 2.5s ease-in-out infinite}#spacebar-hint:not(.recording):not(.processing):not(.speaking):not(.realtime):after{content:"Hold to talk";position:absolute;bottom:-20px;left:50%;transform:translate(-50%);font-size:var(--fs-xs);color:var(--text-dim);white-space:nowrap;pointer-events:none}#mobile-text-input{display:block!important;width:100%;max-width:280px;padding:10px 14px;background:var(--surface-2);backdrop-filter:var(--blur-panel);border:1px solid var(--hairline-strong);border-radius:var(--radius-l);color:#ccc;font-size:var(--fs-xl);font-family:var(--font-ui);outline:none}#mobile-text-input:focus{border-color:#ffffff40}#mobile-text-input::placeholder{color:var(--text-dim)}}@media(max-width:768px){#map-btn,#reset-view-btn{display:none!important}#status{display:none}#transcript{width:auto;left:var(--space-3);right:var(--space-3);transform:none;max-width:calc(100vw - 24px);bottom:160px;max-height:120px;font-size:var(--fs-m)}#top-bar{padding-top:calc(var(--space-3) + env(safe-area-inset-top));height:auto}.rail-btn{width:var(--tap-min);height:var(--tap-min);font-size:20px}}@media(max-width:950px)and (max-height:500px){.app-panel{width:min(360px,70vw)}}.app-panel .section{margin-bottom:var(--space-3)}.app-panel .section-header{cursor:pointer;padding:6px 0;font-weight:600;font-family:var(--font-display);font-size:var(--fs-m);letter-spacing:.03em;user-select:none;display:flex;justify-content:space-between;align-items:center;color:#ccc;transition:color .15s ease}.app-panel .section-header:hover{color:var(--text-1)}.app-panel .section-header:after{content:"▼";font-size:9px;color:#666}.app-panel .section-header.collapsed:after{content:"▶"}.app-panel .section-body{padding-top:var(--space-1)}.app-panel .section-body.hidden{display:none}.app-panel .group-label{margin:var(--space-4) 0 var(--space-1);padding-bottom:3px;border-bottom:1px solid var(--hairline);font-family:var(--font-display);font-size:var(--fs-xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim)}.btn{padding:6px 14px;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-s);background:#ffffff14;color:var(--text-1);cursor:pointer;font-size:var(--fs-m);font-family:var(--font-ui);margin-right:4px;transition:all .15s ease}.btn:hover{background:var(--surface-hover);border-color:#fff3}.btn.active{background:var(--accent-soft);border-color:var(--accent-border)}.slider-row{display:flex;align-items:center;gap:6px;margin-bottom:2px}.slider-row label{width:150px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;flex-shrink:0}.slider-row input[type=range]{flex:1;height:14px;accent-color:var(--accent-bright)}.slider-row .val{width:32px;text-align:right;font-variant-numeric:tabular-nums}.panel-body::-webkit-scrollbar,#transcript::-webkit-scrollbar{width:5px}.panel-body::-webkit-scrollbar-track,#transcript::-webkit-scrollbar-track{background:transparent}.panel-body::-webkit-scrollbar-thumb,#transcript::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}.panel-body::-webkit-scrollbar-thumb:hover{background:#ffffff40}kbd{display:inline-block;padding:2px 8px;background:#ffffff1a;border:1px solid rgba(255,255,255,.15);border-radius:5px;font-family:var(--font-display);font-size:var(--fs-m);color:var(--text-1)}@media(max-width:768px){.btn{min-height:var(--tap-min);padding:10px 14px}.slider-row input[type=range]{height:24px;padding:6px 0}.slider-row{margin-bottom:6px}*{-webkit-tap-highlight-color:transparent}}
