:root{--bg: #0b0f17;--surface: #151b26;--surface-2: #1e2533;--text: #e6edf7;--text-muted: #8b96a8;--accent: #3b82f6;--accent-hover: #60a5fa;--success: #22c55e;--danger: #ef4444;--border: #2a3142;--radius: 12px;--radius-lg: 16px;--radius-xl: 24px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--font-stack: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-size-sm: 13px;--font-size-md: 15px;--font-size-lg: 17px;--font-size-xl: 22px;--font-size-2xl: 28px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box}html,body,#app{height:100%;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-stack);font-size:var(--font-size-md);line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:contain}#app{display:flex;flex-direction:column;max-width:480px;margin:0 auto;background:var(--bg);min-height:100vh;min-height:100dvh}button{font-family:inherit;cursor:pointer}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}.welcome{display:flex;flex-direction:column;flex:1;padding:calc(var(--space-8) + var(--safe-top)) var(--space-6) calc(var(--space-6) + var(--safe-bottom));text-align:center;min-height:100vh;min-height:100dvh}.welcome__brand{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--space-3)}.logo{width:88px;height:88px;border-radius:22px;background:linear-gradient(135deg,var(--accent),#6366f1);color:#fff;display:grid;place-items:center;font-weight:700;font-size:32px;letter-spacing:-.02em;margin-bottom:var(--space-3);box-shadow:0 12px 32px #3b82f640}.welcome__title{font-size:var(--font-size-2xl);font-weight:700;margin:0;letter-spacing:-.02em}.welcome__subtitle{color:var(--text-muted);margin:0;font-size:var(--font-size-md);max-width:28ch}.welcome__actions{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-6)}.welcome__legal{text-align:center;font-size:var(--font-size-sm);color:var(--text-muted)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;background:var(--surface);color:var(--text);padding:var(--space-4) var(--space-6);font-size:var(--font-size-lg);border-radius:var(--radius);font-weight:600;transition:background .12s ease,transform 80ms ease;min-height:56px}.btn:active{transform:scale(.98)}.btn--primary{background:var(--accent);color:#fff}.btn--primary:hover{background:var(--accent-hover)}.btn--secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.btn--secondary:hover{background:var(--surface-2)}.inbox{display:flex;flex-direction:column;height:100vh;height:100dvh}.inbox__header{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--space-3);padding:calc(var(--space-3) + var(--safe-top)) var(--space-4) var(--space-3);background:#0b0f17d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.inbox__title{flex:1;margin:0;font-size:var(--font-size-lg);font-weight:600;letter-spacing:-.01em}.presence{width:10px;height:10px;border-radius:50%;background:var(--text-muted);display:inline-block}.presence--online{background:var(--success);box-shadow:0 0 0 3px #22c55e2e}.icon-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:var(--text-muted);width:40px;height:40px;border-radius:50%;font-size:20px;display:grid;place-items:center}.icon-btn:hover{background:var(--surface);color:var(--text)}.banner{background:var(--surface);border-bottom:1px solid var(--border);padding:var(--space-3) var(--space-4);display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3)}.banner--ask{flex-direction:row;justify-content:space-between}.banner--info{flex-direction:column;align-items:stretch}.banner--error{background:#ef44441f;border-bottom-color:var(--danger)}.banner__text{margin:0;font-size:var(--font-size-sm);color:var(--text);flex:1}.banner__hint{margin:0;font-size:var(--font-size-sm);color:var(--text-muted)}.banner__actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.banner__cta{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--accent);color:#fff;border:none;padding:var(--space-2) var(--space-4);border-radius:var(--radius);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;font-family:inherit;min-height:36px}.banner__cta:hover{background:var(--accent-hover)}.banner__dismiss{align-self:flex-end}.messages{flex:1;list-style:none;margin:0;padding:var(--space-4);overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-3);-webkit-overflow-scrolling:touch}.messages__empty{margin:auto;padding:var(--space-8) var(--space-6);text-align:center;color:var(--text-muted);list-style:none}.messages__empty p{margin:0 0 var(--space-2)}.messages__empty-hint{font-size:var(--font-size-sm)}.msg{display:flex;max-width:78%}.msg--sent{align-self:flex-end}.msg--received{align-self:flex-start}.bubble{padding:10px 14px;border-radius:var(--radius-lg);font-size:var(--font-size-md);word-wrap:break-word}.msg--sent .bubble{background:var(--accent);color:#fff;border-bottom-right-radius:6px}.msg--received .bubble{background:var(--surface-2);color:var(--text);border-bottom-left-radius:6px}.bubble__text{margin:0;white-space:pre-wrap}.bubble__meta{display:flex;align-items:center;gap:var(--space-1);justify-content:flex-end;margin-top:4px;font-size:var(--font-size-sm);opacity:.8}.msg--received .bubble__meta{color:var(--text-muted);opacity:1}.bubble__status[data-status=pending]{opacity:.7}.bubble__status[data-status=failed]{color:var(--danger);opacity:1;font-weight:700}.composer{position:sticky;bottom:0;display:flex;justify-content:center;padding:var(--space-3) var(--space-4) calc(var(--space-3) + var(--safe-bottom));background:#0b0f17d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--border)}.mic-btn{width:80px;height:80px;border-radius:50%;background:var(--accent);border:none;color:#fff;display:grid;place-items:center;box-shadow:0 8px 24px #3b82f659;transition:transform .1s ease,background .12s ease}.mic-btn:hover{background:var(--accent-hover)}.mic-btn:active{transform:scale(.94)}.mic-btn svg{display:block}.composer--editing,.composer--recording{padding:var(--space-3) var(--space-4) calc(var(--space-3) + var(--safe-bottom))}.composer-sheet{display:flex;flex-direction:column;gap:var(--space-3);width:100%}.composer-sheet__title{margin:0;text-align:center;font-size:var(--font-size-sm);color:var(--text-muted);letter-spacing:.02em}.composer-sheet__hint{margin:0;text-align:center;font-size:var(--font-size-sm);color:var(--text-muted);font-style:italic}.composer-sheet__textarea{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3);font-family:inherit;font-size:var(--font-size-md);line-height:1.4;resize:vertical;min-height:80px;outline:none;width:100%}.composer-sheet__textarea:focus{border-color:var(--accent)}.composer-sheet__actions{display:flex;gap:var(--space-2)}.composer-sheet__actions .btn{flex:1;min-height:48px;padding:var(--space-3)}.recorder{display:flex;flex-direction:column;gap:var(--space-3);width:100%}.recorder__viz{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2);background:var(--surface-2);border-radius:var(--radius)}.recorder__dot{width:12px;height:12px;border-radius:50%;background:var(--danger);animation:recordPulse 1.2s ease-in-out infinite;flex-shrink:0}@keyframes recordPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.3)}}.recorder__waveform{flex:1;display:flex;align-items:center;gap:3px;height:28px}.recorder__waveform i{flex:1;height:100%;background:var(--accent);border-radius:2px;transform-origin:center;animation:waveBar 1.3s ease-in-out infinite}.recorder__waveform i:nth-child(1){animation-delay:0s}.recorder__waveform i:nth-child(2){animation-delay:.1s}.recorder__waveform i:nth-child(3){animation-delay:.2s}.recorder__waveform i:nth-child(4){animation-delay:.3s}.recorder__waveform i:nth-child(5){animation-delay:.4s}.recorder__waveform i:nth-child(6){animation-delay:.5s}.recorder__waveform i:nth-child(7){animation-delay:.6s}.recorder__waveform i:nth-child(8){animation-delay:.7s}@keyframes waveBar{0%,to{transform:scaleY(.2)}50%{transform:scaleY(1)}}.recorder__timer{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--font-size-md);color:var(--text);min-width:52px;text-align:right;font-variant-numeric:tabular-nums}.recorder__actions{display:flex;gap:var(--space-2)}.recorder__actions .btn{flex:1;min-height:48px;padding:var(--space-3)}.btn--danger{background:var(--danger);color:#fff}.btn--danger:hover{background:#f87171}.recorder__error{text-align:center;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.recorder__error-title{margin:0;font-size:var(--font-size-md);font-weight:600}.recorder__error-detail{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--font-size-sm);color:var(--text-muted)}.recorder__error-hint{margin:0;font-size:var(--font-size-sm);color:var(--text-muted)}.recorder__error .btn{min-height:44px}.recorder__transcribing{display:flex;align-items:center;justify-content:center;gap:var(--space-2);color:var(--text-muted);padding:var(--space-4) 0;font-size:var(--font-size-md)}.pairing{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.pairing__header{padding:calc(var(--space-3) + var(--safe-top)) var(--space-4) var(--space-3);display:flex;align-items:center}.pairing__header--floating{position:absolute;top:0;left:0;right:0;z-index:10}.pairing__body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-6);padding:var(--space-6);text-align:center}.pairing__hint{margin:0;color:var(--text-muted);font-size:var(--font-size-md);max-width:32ch}.pairing__hint--overlay{position:absolute;bottom:calc(var(--space-8) + var(--safe-bottom));left:50%;transform:translate(-50%);color:#fff;background:#0b0f17b3;padding:var(--space-2) var(--space-4);border-radius:var(--radius);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.pairing__status{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--text-muted);font-size:var(--font-size-md)}.pairing__status-text{display:inline-block}.link-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:none;color:var(--text-muted);font-size:var(--font-size-md);padding:var(--space-2) var(--space-3);font-family:inherit}.link-btn:hover{color:var(--text)}.link-btn--light{color:#fff}.qr-frame{width:240px;height:240px;background:#fff;border-radius:var(--radius-lg);box-shadow:0 12px 32px #0006;overflow:hidden;display:grid;place-items:center}.qr-frame__canvas{display:block}.dots{display:inline-flex;gap:4px}.dots i{width:6px;height:6px;border-radius:50%;background:var(--text-muted);animation:dotPulse 1.2s ease-in-out infinite}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes dotPulse{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.pairing--scanner{position:relative;background:#000}.scanner__viewport{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at center,#1a1f2c,#000 70%);display:grid;place-items:center;overflow:hidden}.scanner__video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.scanner__frame{position:absolute;width:240px;height:240px;border:2px solid rgba(255,255,255,.85);border-radius:var(--radius-lg);box-shadow:0 0 0 9999px #00000073,0 0 0 3px #3b82f666 inset;pointer-events:none}.scanner__error{position:relative;z-index:1;text-align:center;color:#fff;padding:var(--space-6);max-width:320px}.scanner__error-title{font-size:var(--font-size-lg);font-weight:600;margin:0 0 var(--space-2)}.scanner__error-detail{color:var(--text-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:var(--font-size-sm);margin:0 0 var(--space-3)}.scanner__error-hint{color:var(--text-muted);font-size:var(--font-size-md);margin:0}
