:root{--brand-grad: linear-gradient(135deg, #00c875 0%, #00b4d8 100%);--brand-green: #00c875;--brand-aqua: #00b4d8;--brand-green-deep: #008f53;--brand-aqua-deep: #0086a3;--aurora-mint: #b8f3d7;--aurora-sky: #c5e9ff;--aurora-lavender: #dcd2ff;--aurora-peach: #ffe2ee;--bg-base: #fafbff;--bg-tint-a: #f4f1ff;--bg-tint-b: #ecf7ff;--bg-tint-c: #effdf6;--surface: rgba(255, 255, 255, .74);--surface-strong: rgba(255, 255, 255, .86);--surface-elevated: rgba(255, 255, 255, .94);--surface-quiet: rgba(255, 255, 255, .55);--border-soft: rgba(15, 23, 42, .06);--border-strong: rgba(15, 23, 42, .12);--border-glass: rgba(255, 255, 255, .85);--text: #0b1f15;--text-strong: #061a10;--text-soft: #3f5568;--text-muted: #4a5b6e;--text-faint: #6b7c8d;--shadow-card: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 24px -8px rgba(0, 107, 63, .08), 0 24px 60px -22px rgba(0, 180, 216, .12), inset 0 1px 0 rgba(255, 255, 255, .95);--shadow-lg: 0 1px 2px rgba(15, 23, 42, .05), 0 12px 32px -10px rgba(0, 107, 63, .12), 0 30px 80px -24px rgba(0, 180, 216, .18), inset 0 1px 0 rgba(255, 255, 255, 1);--shadow-orb: 0 24px 60px -16px rgba(0, 200, 117, .28), 0 12px 32px -10px rgba(122, 92, 255, .18), 0 4px 16px -4px rgba(15, 23, 42, .08);--radius-card: 24px;--radius-pill: 999px;--radius-md: 14px;--ease: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Inter,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color-scheme:light}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;padding:0;height:100%;color:var(--text);background:var(--bg-base);-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;overscroll-behavior:none}body{background:linear-gradient(160deg,var(--bg-base) 0%,var(--bg-tint-a) 35%,var(--bg-tint-b) 70%,var(--bg-tint-c) 100%)}#app{min-height:100dvh;height:100dvh;display:flex;flex-direction:column;position:relative;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit;font-family:inherit}.aurora-bg{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}.aurora{position:absolute;border-radius:50%;filter:blur(90px) saturate(140%);opacity:.55;will-change:transform,opacity}.aurora-a{width:70vmax;height:70vmax;left:-20vmax;top:-25vmax;background:radial-gradient(closest-side,var(--aurora-lavender) 0%,transparent 70%);opacity:.65;animation:aurora-drift-a 22s ease-in-out infinite alternate}.aurora-b{width:60vmax;height:60vmax;right:-15vmax;top:10vmax;background:radial-gradient(closest-side,var(--aurora-sky) 0%,transparent 70%);opacity:.7;animation:aurora-drift-b 26s ease-in-out infinite alternate}.aurora-c{width:50vmax;height:50vmax;left:20vmax;bottom:-20vmax;background:radial-gradient(closest-side,var(--aurora-peach) 0%,transparent 70%);opacity:.55;animation:aurora-drift-c 30s ease-in-out infinite alternate}.aurora-d{width:55vmax;height:55vmax;right:-10vmax;bottom:-20vmax;background:radial-gradient(closest-side,var(--aurora-mint) 0%,transparent 70%);opacity:.55;animation:aurora-drift-d 28s ease-in-out infinite alternate}.grain{position:absolute;inset:0;background-image:radial-gradient(circle,rgba(0,107,63,.08) 1px,transparent 1px);background-size:24px 24px;opacity:.45;-webkit-mask-image:radial-gradient(ellipse at center,black 0%,transparent 80%);mask-image:radial-gradient(ellipse at center,black 0%,transparent 80%);pointer-events:none}@keyframes aurora-drift-a{0%{transform:translate(0) scale(1)}to{transform:translate(8vmax,4vmax) scale(1.08)}}@keyframes aurora-drift-b{0%{transform:translate(0) scale(1)}to{transform:translate(-6vmax,6vmax) scale(1.1)}}@keyframes aurora-drift-c{0%{transform:translate(0) scale(1)}to{transform:translate(6vmax,-8vmax) scale(1.06)}}@keyframes aurora-drift-d{0%{transform:translate(0) scale(1)}to{transform:translate(-8vmax,-4vmax) scale(1.12)}}.glass{background:var(--surface);backdrop-filter:blur(40px) saturate(180%);-webkit-backdrop-filter:blur(40px) saturate(180%);border:1px solid var(--border-glass);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}.login-stage{position:relative;flex:1;display:grid;place-items:center;padding:24px;padding-top:max(24px,env(safe-area-inset-top));padding-bottom:max(24px,env(safe-area-inset-bottom))}.login-card{position:relative;z-index:1;width:min(420px,100%);padding:36px 30px 28px;display:flex;flex-direction:column;gap:18px;background:var(--surface-elevated);box-shadow:var(--shadow-lg);animation:card-in .7s var(--ease) both}.card-glow{position:absolute;inset:-2px;border-radius:calc(var(--radius-card) + 2px);background:var(--brand-grad);opacity:.22;filter:blur(22px);z-index:-1;animation:card-glow-pulse 6s ease-in-out infinite;pointer-events:none}@keyframes card-glow-pulse{0%,to{opacity:.16}50%{opacity:.32}}@keyframes card-in{0%{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.brand{display:flex;flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:6px}.brand-mark{font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--text-faint)}.brand-title{margin:0;font-size:32px;font-weight:700;letter-spacing:-.02em;line-height:1.1;background:var(--brand-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.brand-sub{margin:0;font-size:13px;color:var(--text-soft)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft)}.field input,.field .select{height:46px;padding:0 14px;border-radius:12px;background:#f8fafccc;border:1.5px solid rgba(226,232,240,.9);color:var(--text-strong);font-size:15px;outline:none;transition:border-color .22s var(--ease),box-shadow .22s var(--ease),background .22s var(--ease)}.field input::placeholder{color:var(--text-faint)}.field input:focus,.field .select:focus{border-color:var(--brand-green);background:#fff;box-shadow:0 0 0 4px #00c87524}.select-wrap{position:relative}.select{width:100%;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--text-soft) 50%),linear-gradient(135deg,var(--text-soft) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:36px}.submit{position:relative;margin-top:6px;height:50px;border-radius:14px;border:0;background:var(--brand-grad);color:#fff;font-weight:700;font-size:15px;letter-spacing:.01em;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;overflow:hidden;box-shadow:0 12px 36px -10px #00c8758c,0 6px 16px -6px #00b4d873,inset 0 1px #fff6;transition:transform .22s var(--ease),box-shadow .22s var(--ease)}.submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 16px 40px -10px #00c87599,0 8px 20px -6px #00b4d880,inset 0 1px #ffffff73}.submit:active:not(:disabled){transform:translateY(0) scale(.98)}.submit:focus-visible{outline:none;box-shadow:0 0 0 4px #00c87547,0 12px 36px -10px #00c8758c,inset 0 1px #fff6}.submit:disabled{cursor:progress;opacity:.7}.submit.is-busy .submit-label{opacity:.6}.submit-arrow{transition:transform .3s var(--ease)}.submit:hover:not(:disabled) .submit-arrow{transform:translate(4px)}.submit-shimmer{position:absolute;top:0;left:-100%;width:60%;height:100%;background:linear-gradient(100deg,transparent 0%,rgba(255,255,255,.55) 50%,transparent 100%);transform:skew(-20deg);transition:left .7s var(--ease);pointer-events:none}.submit:hover:not(:disabled) .submit-shimmer{left:130%}.err-toast{padding:10px 14px;border-radius:12px;background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fca5a5;color:#b91c1c;font-size:13px;font-weight:500;animation:card-in .35s var(--ease) both}.login-footer{margin:4px 0 0;font-size:11px;letter-spacing:.05em;color:var(--text-faint);text-align:center}.stage{position:relative;z-index:0;flex:1;display:grid;grid-template-rows:auto 1fr auto auto;min-height:100dvh;padding-top:max(12px,env(safe-area-inset-top));padding-bottom:max(8px,env(safe-area-inset-bottom))}.top{position:relative;z-index:2;padding:14px 22px 6px;display:flex;align-items:center;justify-content:space-between}.top-brand{display:flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--text-soft)}.brand-sep{color:var(--text-faint)}.brand-title-sm{font-weight:700;color:var(--text-strong);letter-spacing:.22em}.top-actions{display:flex;gap:8px;align-items:center}.icon-btn{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 14px;border-radius:var(--radius-pill);background:#ffffffb3;border:1px solid var(--border-soft);color:var(--text-strong);font-size:13px;font-weight:500;cursor:pointer;transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease),box-shadow .2s var(--ease);backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%);box-shadow:0 1px 2px #0f172a0a,0 4px 12px -4px #0f172a0f;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.icon-btn:hover{background:#ffffffeb;border-color:var(--border-strong);box-shadow:0 1px 2px #0f172a0d,0 8px 20px -6px #006b3f1f}.icon-btn:focus-visible{outline:none;border-color:var(--brand-green);box-shadow:0 0 0 4px #00c8752e,0 4px 12px -4px #0f172a14}.icon-btn:active{transform:scale(.96)}.icon-btn.ghost{background:transparent;border-color:transparent;box-shadow:none}.icon-btn.ghost:hover{background:#0f172a0d;border-color:transparent;box-shadow:none}.icon-btn-square{width:44px;padding:0;justify-content:center}.stop-square{display:inline-block;width:10px;height:10px;border-radius:2px;background:#ef4444;box-shadow:0 0 12px #ef444480}#muteBtn.is-muted{background:#ef44441f;border-color:#ef44444d;color:#b91c1c}#muteBtn.is-muted svg{stroke:#b91c1c}.hero{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;padding:10px 20px 18px;min-height:clamp(260px,36vh,420px)}.orb-wrap{position:relative;display:flex;flex-direction:column;align-items:center;gap:14px;width:100%}.orb-stage{position:relative;width:clamp(230px,min(66vw,66vh),420px);height:clamp(230px,min(66vw,66vh),420px);display:flex;align-items:center;justify-content:center}.orb{position:relative;z-index:2;width:100%;height:100%;border-radius:50%;border:1px solid rgba(255,255,255,.5);background:radial-gradient(circle at 22% 22%,#ffffffb3,#ffffff14 42%,#ffffff05 70%),radial-gradient(circle at 70% 80%,#00c87529,#00b4d814 36%,#0000 62%);padding:0;cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;box-shadow:inset 0 1px #ffffffd9,inset 0 -18px 30px #0f172a0f,0 18px 34px -20px #0f172a38,0 42px 70px -46px #00b4d866;transition:transform .12s var(--ease),filter .22s var(--ease),box-shadow .22s var(--ease);will-change:transform;isolation:isolate;overflow:hidden}.orb:hover{transform:translateY(-2px) scale(1.005)}.orb:focus-visible{outline:2px solid rgba(0,200,117,.5);outline-offset:6px}.orb.is-pressing{transform:scale(.975);filter:drop-shadow(0 0 24px rgba(0,200,117,.32))}.orb[data-mode=ptt]{touch-action:none;-webkit-user-select:none;user-select:none}.orb-wave-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;display:block;border-radius:50%}.orb-wave-canvas>canvas{width:100%;height:100%;display:block}.orb[data-state=idle]{filter:drop-shadow(0 6px 24px rgba(0,200,117,.18)) drop-shadow(0 0 38px rgba(0,180,216,.14))}.orb[data-state=listening]{filter:drop-shadow(0 8px 28px rgba(0,180,216,.3)) drop-shadow(0 0 46px rgba(0,200,117,.24))}.orb[data-state=thinking]{filter:drop-shadow(0 8px 28px rgba(122,92,255,.32)) drop-shadow(0 0 42px rgba(130,180,255,.25))}.orb[data-state=speaking]{filter:drop-shadow(0 12px 34px rgba(245,158,11,.28)) drop-shadow(0 0 54px rgba(0,200,117,.3))}.orb[data-state=error]{filter:drop-shadow(0 8px 26px rgba(239,68,68,.4));animation:orb-shake .5s ease-in-out}@keyframes orb-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.orb-status{margin:0;font-size:13px;letter-spacing:.02em;color:var(--text-soft);min-height:18px;text-align:center;transition:color .2s var(--ease);animation:status-fade .24s var(--ease) both}@keyframes status-fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.image-drop{position:relative;z-index:1;margin:0 16px 8px;padding:12px 14px;border-radius:16px;border:1px dashed rgba(0,180,216,.3);background:linear-gradient(135deg,#ffffffc7,#ebf8ffbd);text-align:center;transition:border-color .18s var(--ease),background .18s var(--ease),box-shadow .18s var(--ease),transform .18s var(--ease)}.image-drop-title{margin:0;font-size:13px;font-weight:600;color:var(--text-strong)}.image-drop-hint{margin:2px 0 0;font-size:12px;color:var(--text-soft)}.image-drop.is-dragover{border-color:#00c87580;background:linear-gradient(135deg,#f0fff7e6,#e4f9ffdb);box-shadow:0 0 0 3px #00c87524,0 10px 26px -14px #00b4d84d;transform:translateY(-1px)}.transcript-shell{position:relative;z-index:1;margin:0 16px 6px;padding:14px;max-height:min(40vh,420px);display:flex;overflow:hidden}.transcript{flex:1;display:flex;flex-direction:column;min-height:0}.transcript-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:6px 6px 10px;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(15,23,42,.18) transparent;mask-image:linear-gradient(to bottom,transparent 0,black 14px,black calc(100% - 4px),transparent 100%)}.transcript-list::-webkit-scrollbar{width:6px}.transcript-list::-webkit-scrollbar-thumb{background:#0f172a2e;border-radius:3px}.bubble{max-width:88%;padding:10px 14px;border-radius:18px;line-height:1.45;font-size:14.5px;display:flex;flex-direction:column;gap:3px;word-wrap:break-word;white-space:pre-wrap;animation:bubble-in .36s var(--ease) both;transition:opacity .22s var(--ease),transform .22s var(--ease)}.bubble.is-discarding{opacity:0;transform:translateY(-4px) scale(.98);pointer-events:none}.bubble-image{display:block;width:100%;max-width:320px;height:auto;margin-top:8px;border-radius:12px;border:1px solid var(--border-soft);box-shadow:0 1px 2px #0f172a0f,0 8px 24px -10px #0f172a2e;background:#fff9;cursor:zoom-in}.bubble-tool-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.bubble-tool-row .tool-badge{align-self:flex-start}@keyframes bubble-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.bubble-role{font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint)}.bubble-body{color:var(--text-strong)}.bubble-body.is-streaming:after{content:"▍";margin-left:2px;color:var(--brand-green);animation:cursor-blink .9s ease-in-out infinite}@keyframes cursor-blink{0%,to{opacity:.2}50%{opacity:1}}.bubble-you{align-self:flex-end;background:linear-gradient(135deg,#f4faf7eb,#e8f4fbd9);border:1px solid rgba(15,23,42,.06);border-bottom-right-radius:6px;box-shadow:0 1px 2px #0f172a0a,0 4px 14px -8px #00c87514}.bubble-you .bubble-role{color:var(--text-soft);text-align:right}.bubble-jarvis{align-self:flex-start;position:relative;background:linear-gradient(135deg,#dcd2ff8c,#b8f3d78c);border:1px solid rgba(0,180,216,.22);border-bottom-left-radius:6px;padding-left:16px;box-shadow:0 1px 2px #0f172a0a,0 8px 24px -10px #00b4d838}.bubble-jarvis:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:2.5px;border-radius:2px;background:var(--brand-grad);opacity:.85}.bubble-jarvis .bubble-role{color:var(--brand-aqua-deep)}.bubble-jarvis .bubble-body{color:var(--text-strong)}.bubble-system{align-self:center;background:#ffffff8c;border:1px solid var(--border-soft);color:var(--text-muted);font-size:12px}.bubble-system .bubble-body{color:var(--text-muted)}.bubble-error,.bubble-error.bubble-jarvis{align-self:flex-start;background:linear-gradient(135deg,#fef2f2,#fee2e2);border:1px solid #fca5a5;box-shadow:0 6px 20px -10px #ef44444d}.tool-badge{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 9px;border-radius:999px;font-size:12px;font-weight:500;letter-spacing:.01em;background:#00b4d814;border:1px solid rgba(0,180,216,.22);color:var(--brand-aqua-deep);animation:bubble-in .28s var(--ease) both;transition:background .22s var(--ease),border-color .22s var(--ease),color .22s var(--ease)}.tool-badge .tool-icon{font-size:13px;line-height:1}.tool-badge .tool-name{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:11.5px}.tool-badge .tool-spinner{width:10px;height:10px;border-radius:50%;border:1.5px solid rgba(0,180,216,.35);border-top-color:var(--brand-aqua);animation:tool-spin .8s linear infinite}@keyframes tool-spin{to{transform:rotate(360deg)}}.tool-badge.is-ok{background:#00c8751a;border-color:#00c8754d;color:var(--brand-green-deep)}.tool-badge.is-fail{background:#ef444414;border-color:#ef44444d;color:#b91c1c}.tool-badge .tool-mark{font-size:12px;font-weight:700;line-height:1}.bubble-error .bubble-role{color:#b91c1c}.bubble-error .bubble-body{color:#991b1b}.composer{position:relative;z-index:2;margin:0 14px 6px;padding:8px 8px 8px 16px;display:flex;align-items:flex-end;gap:10px;border-radius:22px;background:var(--surface-strong);box-shadow:0 1px 2px #0f172a0a,0 16px 40px -18px #00b4d838;transition:box-shadow .22s var(--ease),border-color .22s var(--ease),transform .18s var(--ease)}.composer:focus-within{border-color:#00c8756b;box-shadow:0 0 0 4px #00c87524,0 1px 2px #0f172a0a,0 18px 44px -16px #00b4d847}.composer-glow{position:absolute;inset:-1px;border-radius:inherit;background:linear-gradient(100deg,#00c87500,#00c87547 30%,#00b4d847,#7a5cff38);opacity:0;filter:blur(10px);z-index:-1;transition:opacity .28s var(--ease);pointer-events:none}.composer:focus-within .composer-glow{opacity:.7}.composer-input{flex:1;border:0;outline:none;resize:none;background:transparent;font-size:16px;line-height:1.45;color:var(--text-strong);padding:10px 2px;max-height:132px;min-height:24px;font-family:inherit}.composer-input::placeholder{color:var(--text-faint)}.composer-send{flex-shrink:0;width:40px;height:40px;border-radius:50%;border:0;background:var(--brand-grad);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 8px 22px -8px #00c8758c,0 4px 10px -4px #00b4d866,inset 0 1px #ffffff73;transition:transform .18s var(--ease-spring),box-shadow .2s var(--ease),opacity .2s var(--ease);-webkit-tap-highlight-color:transparent;touch-action:manipulation}.composer-send:hover:not(:disabled){transform:scale(1.06)}.composer-send:active:not(:disabled){transform:scale(.94)}.composer-send:disabled{opacity:.4;cursor:not-allowed;box-shadow:none;background:#0f172a2e}.composer-send svg{transition:transform .18s var(--ease)}.composer-send:hover:not(:disabled) svg{transform:translate(2px)}.composer-send:focus-visible{outline:none;box-shadow:0 0 0 4px #00c8754d,0 8px 22px -8px #00c8758c,inset 0 1px #ffffff73}.settings-panel{position:fixed;inset:0;z-index:100;background:#0f172a2e;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:flex-end;justify-content:center;padding:18px;padding-bottom:max(18px,env(safe-area-inset-bottom));opacity:0;transition:opacity .22s var(--ease)}@media (min-width: 600px){.settings-panel{align-items:center}}.settings-panel.is-open{opacity:1}.settings-card{width:min(420px,100%);max-height:calc(100vh - 36px);max-height:calc(100dvh - 36px);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:22px;padding-bottom:max(22px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px;background:var(--surface-elevated);box-shadow:var(--shadow-lg);transform:translateY(20px);transition:transform .24s var(--ease-spring)}.settings-panel.is-open .settings-card{transform:translateY(0)}.settings-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}.settings-head h3{margin:0;font-size:18px;font-weight:700;letter-spacing:-.01em;color:var(--text-strong)}.settings-divider{height:1px;background:var(--border-soft);margin:4px 0}.settings-section{display:flex;flex-direction:column;gap:12px}.settings-section.settings-actions{gap:8px}.settings-section-title{margin:0;font-size:10px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted)}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:14px}.toggle-row-body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.toggle-row-body .field-label{color:var(--text-strong);text-transform:none;letter-spacing:0;font-size:14px;font-weight:500}.field-hint{font-size:12px;color:var(--text-muted);letter-spacing:0;text-transform:none;font-weight:400;line-height:1.4}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.toggle{position:relative;display:inline-block;flex-shrink:0}.toggle input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1}.toggle-track{display:block;width:44px;height:26px;border-radius:999px;background:#0f172a1f;border:1px solid transparent;position:relative;transition:background .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease)}.toggle-thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0f172a1a,0 2px 4px #0f172a14;transition:transform .22s var(--ease-spring),background .2s var(--ease)}.toggle input:checked+.toggle-track{background:var(--brand-grad);border-color:transparent;box-shadow:0 4px 12px -4px #00c87566,inset 0 1px #ffffff4d}.toggle input:checked+.toggle-track .toggle-thumb{transform:translate(18px)}.toggle input:focus-visible+.toggle-track{outline:none;box-shadow:0 0 0 4px #00c8752e,0 4px 12px -4px #00c8754d}.ghost-btn{height:42px;border-radius:12px;background:#f8fafcd9;border:1px solid var(--border-soft);color:var(--text-strong);cursor:pointer;font-size:14px;font-weight:500;transition:background .2s var(--ease),border-color .2s var(--ease),transform .2s var(--ease),box-shadow .2s var(--ease)}.ghost-btn:hover{background:#fff;border-color:var(--border-strong);box-shadow:0 4px 12px -4px #0f172a1a}.ghost-btn:focus-visible{outline:none;border-color:var(--brand-green);box-shadow:0 0 0 4px #00c8752e}.ghost-btn:active{transform:scale(.98)}.ghost-btn.danger{color:#b91c1c;background:#fef2f2b3;border-color:#f8717166}.ghost-btn.danger:hover{background:#fee2e2e6;border-color:#f87171b3;box-shadow:0 4px 12px -4px #ef444433}.ghost-btn.danger:focus-visible{border-color:#ef4444;box-shadow:0 0 0 4px #ef44442e}.password-form{display:flex;flex-direction:column;gap:12px}.password-form .field input{font-size:16px}.password-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.password-row .ghost-btn{flex:0 0 auto;padding:0 18px}.password-status{font-size:12px;line-height:1.4;color:var(--text-muted);min-height:16px;flex:1 1 auto}.password-status.is-ok{color:var(--brand-green)}.password-status.is-err{color:#b91c1c}@media (prefers-reduced-motion: reduce){.aurora,.card-glow{animation:none!important}.orb{transition:transform .12s linear;animation:none!important}}.toast{position:fixed;left:50%;bottom:max(70px,calc(env(safe-area-inset-bottom) + 56px));transform:translate(-50%,16px);z-index:90;max-width:min(420px,calc(100vw - 32px));padding:12px 18px;border-radius:14px;background:#ffffffeb;backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);border:1px solid var(--border-glass);color:var(--text-strong);font-size:13px;line-height:1.4;text-align:center;box-shadow:0 1px 2px #0f172a0a,0 14px 40px -16px #006b3f2e;opacity:0;transition:opacity .22s var(--ease),transform .24s var(--ease-spring);pointer-events:none}.toast.is-visible{opacity:1;transform:translate(-50%)}.build-tag{position:fixed;bottom:max(6px,env(safe-area-inset-bottom));right:10px;font-size:10px;letter-spacing:.06em;color:var(--text-faint);pointer-events:none;z-index:1;font-variant-numeric:tabular-nums}@media (max-width: 480px){.stage{grid-template-rows:auto auto auto 1fr auto}.top{padding:10px 14px 4px}.hero{min-height:180px;max-height:220px;padding:4px 16px 6px}.image-drop{display:none}.transcript-shell{margin:0 12px 6px;padding:10px;max-height:none;min-height:200px}.bubble{max-width:94%;font-size:14px}.composer{margin:0 10px 6px;padding:6px 8px 6px 12px;gap:8px}.login-card{padding:28px 22px 22px}}@media (orientation: portrait) and (max-width: 640px){.stage{grid-template-rows:auto auto auto 1fr auto}.image-drop{display:none}}.sidebar{position:fixed;top:0;bottom:0;left:0;width:300px;max-width:86vw;z-index:80;display:flex;flex-direction:column;gap:12px;padding:14px 12px 14px 14px;padding-top:max(14px,env(safe-area-inset-top));padding-bottom:max(14px,env(safe-area-inset-bottom));background:var(--surface-elevated);box-shadow:var(--shadow-lg);border-radius:0 var(--radius-card) var(--radius-card) 0;border-right:1px solid var(--border-soft);transform:translate(-104%);transition:transform .28s var(--ease-spring);-webkit-overflow-scrolling:touch;backdrop-filter:none;-webkit-backdrop-filter:none}.sidebar.is-open{transform:translate(0)}.sidebar-backdrop{position:fixed;inset:0;z-index:79;background:#0f172a29;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .22s var(--ease)}.sidebar-backdrop.is-open{opacity:1;pointer-events:auto}.sidebar-head{display:flex;gap:8px;align-items:center}.sidebar-new{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;border-radius:var(--radius-pill);border:1px solid var(--border-strong);background:var(--brand-grad);color:#fff;font-size:13px;font-weight:600;letter-spacing:.01em;cursor:pointer;box-shadow:0 6px 18px -8px #00c8758c,inset 0 1px #ffffff73;transition:transform .18s var(--ease-spring),box-shadow .2s var(--ease);-webkit-tap-highlight-color:transparent}.sidebar-new:hover{transform:translateY(-1px)}.sidebar-new:active{transform:scale(.97)}.sidebar-close{flex-shrink:0;width:36px;height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center}.sidebar-search{position:relative;display:flex;align-items:center;gap:6px;padding:0 10px;height:36px;border-radius:var(--radius-pill);background:#ffffffb3;border:1px solid var(--border-soft);color:var(--text-faint)}.sidebar-search input{flex:1;border:0;outline:none;background:transparent;font-size:13px;color:var(--text-strong)}.sidebar-search input::placeholder{color:var(--text-faint)}.sidebar-list{flex:1;overflow-y:auto;padding-right:4px;display:flex;flex-direction:column;gap:14px;scrollbar-width:thin;scrollbar-color:rgba(15,23,42,.18) transparent}.sidebar-list::-webkit-scrollbar{width:6px}.sidebar-list::-webkit-scrollbar-thumb{background:#0f172a2e;border-radius:3px}.sidebar-group{display:flex;flex-direction:column;gap:2px}.sidebar-group-label{margin:0 0 4px 8px;font-size:10px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--text-faint)}.sidebar-item{width:100%;text-align:left;display:flex;flex-direction:column;gap:2px;padding:9px 10px;border-radius:12px;border:1px solid transparent;background:transparent;cursor:pointer;transition:background .18s var(--ease),border-color .18s var(--ease);-webkit-tap-highlight-color:transparent}.sidebar-item:hover{background:#0f172a0a}.sidebar-item.is-active{background:linear-gradient(135deg,#00c8751a,#00b4d81a);border-color:#00b4d847}.sidebar-item-title{font-size:13px;color:var(--text-strong);line-height:1.35;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.sidebar-item-meta{font-size:11px;color:var(--text-faint);font-variant-numeric:tabular-nums}.sidebar-empty{margin:0;padding:12px;text-align:center;font-size:12px;color:var(--text-faint)}.sidebar-err{margin:0;padding:10px;font-size:12px;color:#b91c1c;background:#ef444414;border-radius:10px}@media (min-width: 900px){.sidebar{width:320px}}.replay-container{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.replay-container[hidden]{display:none!important}.replay-transcript{flex:1;display:flex;flex-direction:column;min-height:0;gap:8px}.replay-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;padding:4px 6px 6px;border-bottom:1px dashed var(--border-soft)}.replay-pill{font-size:9.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--brand-aqua-deep);padding:2px 8px;border-radius:var(--radius-pill);background:#00b4d81f;border:1px solid rgba(0,180,216,.28)}.replay-title{font-size:13px;font-weight:600;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60%}.replay-meta{margin-left:auto;font-size:11px;color:var(--text-faint);font-variant-numeric:tabular-nums}.replay-empty{text-align:center;font-size:12px;color:var(--text-faint);padding:20px}body.is-replay .composer,body.is-replay .image-drop{opacity:.4;pointer-events:none;filter:saturate(.7)}.composer-mode{display:inline-flex;flex-shrink:0;align-self:stretch;align-items:center;padding:4px;gap:2px;border-radius:var(--radius-pill);background:#0f172a0a;border:1px solid var(--border-soft)}.composer-mode-btn{appearance:none;border:0;background:transparent;color:var(--text-soft);font-size:11px;font-weight:600;letter-spacing:.04em;padding:6px 10px;border-radius:var(--radius-pill);cursor:pointer;transition:background .16s var(--ease),color .16s var(--ease);-webkit-tap-highlight-color:transparent}.composer-mode-btn:hover{color:var(--text-strong)}.composer-mode-btn.is-active{background:var(--brand-grad);color:#fff;box-shadow:0 4px 10px -4px #00c8758c}.composer-mode-btn:focus-visible{outline:none;box-shadow:0 0 0 3px #00c8754d}@media (max-width: 480px){.composer-mode{padding:3px}.composer-mode-btn{padding:5px 8px;font-size:10.5px}}.uploads-panel{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:#0f172a57;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;transition:opacity .2s var(--ease);padding:16px}.uploads-panel.is-open{opacity:1}.uploads-card{width:min(680px,100%);max-height:min(82vh,720px);display:flex;flex-direction:column;gap:14px;padding:18px 18px 20px;border-radius:var(--radius-card);box-shadow:var(--shadow-lg);transform:translateY(8px);transition:transform .22s var(--ease)}.uploads-panel.is-open .uploads-card{transform:translateY(0)}.uploads-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.uploads-title{font-size:16px;font-weight:700;margin:0 0 4px;color:var(--text-strong)}.uploads-sub{margin:0;font-size:12.5px;color:var(--text-soft);line-height:1.4}.uploads-close{flex-shrink:0}.uploads-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.uploads-action-btn{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--surface-strong);border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:12px 14px;font-size:13px;font-weight:600;color:var(--text-strong);cursor:pointer;transition:transform .14s var(--ease),border-color .14s var(--ease),background .14s var(--ease)}.uploads-action-btn:hover{border-color:var(--brand-green);transform:translateY(-1px)}.uploads-action-btn:active{transform:translateY(0)}.uploads-action-icon{font-size:16px}.uploads-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;overflow-y:auto;-webkit-overflow-scrolling:touch;min-height:0}.uploads-empty{text-align:center;padding:18px 8px;color:var(--text-soft);font-size:13px;line-height:1.45}.uploads-empty[hidden]{display:none}.uploads-empty-hint{font-size:11.5px;color:var(--text-faint);margin:4px 0 0}.upload-row{display:flex;gap:12px;padding:10px;border-radius:14px;background:var(--surface);border:1px solid var(--border-soft);align-items:center;transition:border-color .2s var(--ease),background .2s var(--ease)}.upload-row.is-done{border-color:#00c87566}.upload-row.is-failed{border-color:#dc3c3c73;background:#ffe6e699}.upload-thumb{flex-shrink:0;width:56px;height:56px;border-radius:12px;overflow:hidden;background:var(--bg-tint-b);display:flex;align-items:center;justify-content:center;text-decoration:none}.upload-thumb-img{width:100%;height:100%;object-fit:cover}.upload-thumb-placeholder{font-size:18px;color:var(--text-soft)}.upload-meta{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:6px}.upload-meta-row{display:flex;align-items:center;gap:8px;justify-content:space-between;min-width:0}.upload-meta-row-secondary{font-size:11px;color:var(--text-faint);gap:10px;flex-wrap:wrap}.upload-filename{font-size:13px;font-weight:600;color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 auto}.upload-status{flex-shrink:0;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;padding:3px 8px;border-radius:var(--radius-pill);background:var(--bg-tint-b);color:var(--text-soft)}.upload-status-uploading{background:#00b4d82e;color:var(--brand-aqua-deep)}.upload-status-processing{background:#dcd2ff99;color:#4d39a3}.upload-status-done{background:#00c8752e;color:var(--brand-green-deep)}.upload-status-failed{background:#dc3c3c2e;color:#a02020}.upload-progress-track{position:relative;height:4px;background:var(--border-soft);border-radius:999px;overflow:hidden}.upload-progress-fill{position:absolute;inset:0 auto 0 0;width:0;background:var(--brand-grad);border-radius:999px;transition:width .2s var(--ease)}.upload-row.is-failed .upload-progress-fill{background:linear-gradient(135deg,#f88,#c22)}.upload-bytes{font-variant-numeric:tabular-nums}.upload-error{color:#a02020;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-delete{margin-left:auto}@media (max-width: 480px){.uploads-actions{grid-template-columns:1fr}.uploads-card{padding:14px 14px 18px}.upload-thumb{width:48px;height:48px}}
