@font-face{font-family:Satoshi;src:url(/fonts/Satoshi-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Satoshi;src:url(/fonts/Satoshi-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:SfDarkSans;src:url(/fonts/Geist-Variable.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap;ascent-override:101%;descent-override:24%;line-gap-override:0%}:root{--sf-bg-start: #0a1628;--sf-bg-end: #0d1f35;--sf-glass-bg: rgba(15, 28, 48, .85);--sf-glass-opaque: #0e1b2f;--sf-surface: #152238;--sf-surface-2: #1b2c46;--sf-panel-bg: rgba(255, 255, 255, .03);--sf-input-well-bg: rgba(255, 255, 255, .04);--sf-btn-bg: rgba(255, 255, 255, .04);--sf-btn-bg-hover: #152238;--sf-popup-bg: rgb(15, 28, 48);--sf-hover-bg: rgba(91, 156, 255, .1);--sf-top-highlight: rgba(255, 255, 255, .08);--sf-row-border: rgba(255, 255, 255, .04);--sf-glass-border: rgba(255, 255, 255, .04);--sf-text: #e8f0ff;--sf-muted: #93a4c0;--sf-outline: #2a3f5f;--sf-brand: #284372;--sf-accent-text: #cfe0ff;--sf-primary: #5b9cff;--sf-primary-pressed: #4080e6;--sf-accent-rgb: 91 156 255;--sf-accent-contrast: #ffffff;--sf-success: #4ade80;--sf-danger: #f87171;--sf-danger-strong: #ef4444;--sf-warning: #fb923c;--sf-info-green-text: #bbf7d0;--sf-info-red-text: #fecaca;--sf-info-yellow-text: #fef08a;--sf-info-blue-text: #bfdbfe;--sf-shadow-card: 0 4px 20px rgba(0, 0, 0, .2);--sf-shadow-soft: 0 2px 12px rgba(0, 0, 0, .08);--sf-shadow-soft-hover: 0 4px 20px rgba(0, 0, 0, .12);--sf-shadow-raised: 0 2px 8px rgba(0, 0, 0, .15);--sf-shadow-raised-hover: 0 4px 12px rgba(0, 0, 0, .2);--sf-shadow-overlay: 0 25px 50px -12px rgba(0, 0, 0, .5);--sf-focus-glow: 0 0 14px rgb(91 156 255 / .3), 0 4px 20px rgba(0, 0, 0, .12);--sf-scrim: rgba(0, 0, 0, .4);--sf-scrim-strong: rgba(0, 0, 0, .7);--sf-ease: cubic-bezier(0, 0, 0, 1);--sf-duration: .6s;--z-overlay: 1200;--z-modal: 1300;--z-toast: 1400;--z-tooltip: 1500;--font-face: "Satoshi";--fw-bold: 700;--font: var(--font-face), -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: var(--font);--bg: var(--sf-bg-start);--bg-grad: linear-gradient(180deg, var(--sf-bg-start), var(--sf-bg-end));--surface: var(--sf-glass-opaque);--surface-2: var(--sf-surface);--surface-3: var(--sf-surface-2);--border: var(--sf-glass-border);--text: var(--sf-text);--text-2: color-mix(in srgb, var(--sf-text) 85%, transparent);--text-3: var(--sf-muted);--text-4: color-mix(in srgb, var(--sf-text) 45%, transparent);--accent: var(--sf-primary);--accent-2: var(--sf-primary-pressed);--accent-soft: color-mix(in srgb, var(--sf-primary) 16%, var(--sf-glass-opaque));--accent-text: var(--sf-accent-contrast);--danger: var(--sf-danger-strong);--danger-2: #dc2626;--danger-text: var(--sf-danger);--ok: var(--sf-success);--warn: var(--sf-warning);--speaking: var(--sf-primary);--tile-bg: var(--sf-glass-opaque);--stage-bg: var(--sf-bg-start);--ctl-bg: var(--sf-surface);--ctl-bg-hover: var(--sf-surface-2);--ctl-fg: var(--sf-text);--ctl-off-bg: color-mix(in srgb, var(--sf-danger) 16%, var(--sf-glass-opaque));--ctl-off-fg: var(--sf-danger);--shadow: var(--sf-shadow-raised);--panel-border: color-mix(in srgb, var(--sf-outline) 70%, transparent);--nav-active-bg: var(--sf-brand);--nav-active-fg: var(--sf-accent-text);--skel-base: color-mix(in srgb, var(--sf-text) 9%, transparent);--skel-hi: color-mix(in srgb, var(--sf-text) 20%, transparent);--shadow-lg: var(--sf-shadow-overlay);--focus: var(--sf-focus-glow);--radius-sm: 6px;--radius: 12px;--radius-lg: 16px;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px);color-scheme:dark}:root[data-theme=dark]{--sf-bg-start: #000000;--sf-bg-end: #000000;--sf-glass-bg: #0a0a0a;--sf-glass-opaque: #0a0a0a;--sf-surface: #373737;--sf-surface-2: #373737;--sf-panel-bg: #202020;--sf-input-well-bg: #202020;--sf-btn-bg: #373737;--sf-btn-bg-hover: #444444;--sf-popup-bg: #0a0a0a;--sf-hover-bg: #151515;--sf-top-highlight: rgba(255, 255, 255, .12);--sf-row-border: rgba(255, 255, 255, .08);--sf-glass-border: rgba(255, 255, 255, .08);--sf-text: #eef1f4;--sf-muted: #8b93a0;--sf-primary: #a7c6dc;--sf-primary-pressed: #79a7c2;--sf-accent-rgb: 167 198 220;--sf-accent-contrast: #08161d;--sf-focus-glow: 0 0 14px rgb(167 198 220 / .3), 0 4px 20px rgba(0, 0, 0, .12);--font-face: "SfDarkSans";--fw-bold: 600;--surface-2: #202020;--surface-3: #373737;--accent-soft: #202020;--tile-bg: #0a0a0a;--ctl-bg: #373737;--ctl-bg-hover: #444444;--ctl-off-bg: #3a1d1d;--text-3: color-mix(in srgb, var(--sf-text) 62%, transparent);--sf-outline: #2b2b2b;--sf-accent-text: #d6e6f2;--panel-border: rgba(255, 255, 255, .08);--nav-active-bg: #202020;--nav-active-fg: var(--sf-primary)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--font);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;text-size-adjust:100%;-webkit-text-size-adjust:100%}#app{min-height:100%;min-height:100dvh}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}[hidden]{display:none!important}:focus,:focus-visible{outline:0 solid transparent}:focus-visible{outline:2px solid transparent;box-shadow:var(--focus)}[tabindex="-1"]:focus{box-shadow:none}h1,h2,h3{margin:0;line-height:1.2;letter-spacing:-.01em}p{margin:0}a{color:var(--accent)}.muted{color:var(--text-2)}.mono{font-family:var(--mono);letter-spacing:-.01em}.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.ic{width:20px;height:20px;flex:none;display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 18px;border-radius:12px;border:0;font-size:14px;font-weight:var(--fw-bold);white-space:nowrap;transition:background var(--sf-duration) var(--sf-ease),box-shadow .2s var(--sf-ease),color var(--sf-duration) var(--sf-ease),opacity .2s;-webkit-user-select:none;user-select:none}.btn:hover{transition:none}.btn-lg{height:52px;padding:0 24px;font-size:16px;border-radius:12px}.btn-sm{height:44px;padding:0 14px;font-size:14px;border-radius:12px}.btn-block{width:100%}.btn-primary{background:linear-gradient(135deg,var(--sf-primary),var(--sf-primary-pressed));color:var(--accent-text);font-size:16px;letter-spacing:.01em;box-shadow:0 0 12px -1.3px #0006}.btn-primary:hover:not(:disabled){box-shadow:0 0 16px -1px #00000080,0 0 14px rgb(var(--sf-accent-rgb) / .25)}.btn-primary:disabled{opacity:.5}.btn-secondary{background:var(--sf-btn-bg);color:var(--text);box-shadow:0 2px 8px #0000001f}.btn-secondary:hover:not(:disabled){background:var(--sf-btn-bg-hover);box-shadow:0 4px 12px #0000002e}.btn-secondary:disabled{color:var(--text-3)}.btn-plain{background:transparent;color:var(--text-2)}.btn-plain:hover{background:var(--surface-2);color:var(--text)}.btn-icon{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:12px;border:0;background:transparent;color:var(--text-3);transition:background var(--sf-duration) var(--sf-ease),color var(--sf-duration) var(--sf-ease)}.btn-icon:hover{background:var(--sf-hover-bg);color:var(--text);transition:none}.btn-chip{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:999px;border:0;border-top:1px solid var(--sf-top-highlight);background:var(--surface);color:var(--text-2);font-size:14px;font-weight:400}.btn-chip:hover{color:var(--text);background:var(--surface-2)}.btn-chip .ic{width:18px;height:18px}.input,.select{width:100%;height:46px;padding:0 14px;border-radius:12px;border:0;background:var(--sf-input-well-bg);color:var(--text);font-size:16px;box-shadow:var(--sf-shadow-soft);transition:box-shadow .2s var(--sf-ease);min-width:0;text-overflow:ellipsis}.input::placeholder{color:var(--text-4)}.input:hover,.select:hover{box-shadow:var(--sf-shadow-soft-hover)}.input:focus,.select:focus{box-shadow:var(--focus);transition:none}.input[aria-invalid=true]{box-shadow:0 0 14px #f8717159,0 4px 20px #0000001f}.select{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:36px;background-image:linear-gradient(45deg,transparent 50%,var(--text-3) 50%),linear-gradient(135deg,var(--text-3) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px;background-repeat:no-repeat;text-overflow:ellipsis}.field{display:grid;gap:6px}.field-label{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:var(--fw-bold);color:var(--text-2)}.field-label .ic{width:16px;height:16px}.field-error{min-height:0;color:var(--danger);font-size:14px}.field-error:empty{display:none}.screen{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--bg-grad),var(--bg)}.site-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(14px + var(--safe-t)) 24px 14px;max-width:1200px;width:100%;margin:0 auto}.header-actions{display:flex;align-items:center;gap:6px}.brand{display:inline-flex;align-items:center;gap:10px;min-width:0;color:var(--text);text-decoration:none;border-radius:6px;min-height:44px}.screen-center main{flex:1}.message-card{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;padding:32px 20px 80px;max-width:460px;margin:0 auto}.message-card h1{font-size:24px}.message-icon{display:grid;place-items:center;width:64px;height:64px;border-radius:16px;background:var(--accent-soft);color:var(--accent)}.message-icon .ic{width:30px;height:30px}.message-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:10px}.avatar{--h: 210;display:grid;place-items:center;width:72px;height:72px;border-radius:50%;background:linear-gradient(140deg,hsl(var(--h) 60% 55%),hsl(calc(var(--h) + 35) 55% 42%));color:#fff;font-weight:var(--fw-bold);font-size:24px;letter-spacing:.02em;-webkit-user-select:none;user-select:none}.avatar-xl{width:104px;height:104px;font-size:38px}.avatar-sm{width:34px;height:34px;font-size:14px;flex:none}.ctl{position:relative;display:inline-grid;place-items:center;width:52px;height:52px;border-radius:50%;border:0;background:var(--ctl-bg);color:var(--ctl-fg);box-shadow:var(--sf-shadow-raised);transition:background var(--sf-duration) var(--sf-ease),color var(--sf-duration) var(--sf-ease),box-shadow .2s var(--sf-ease)}.ctl .ic{width:22px;height:22px}.ctl:hover:not(:disabled){background:var(--ctl-bg-hover);box-shadow:var(--sf-shadow-raised-hover);transition:none}.ctl:disabled{opacity:.45}.ctl.off{background:var(--ctl-off-bg);color:var(--ctl-off-fg)}.ctl.active{background:var(--accent);color:var(--accent-text)}.ctl-round,.ctl-round:hover:not(:disabled){background:var(--sf-scrim-strong);color:#fff;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.ctl-round.off,.ctl-round.off:hover:not(:disabled){background:var(--danger);color:#fff}.ctl-leave{width:64px;border-radius:999px;display:inline-flex;gap:8px;background:var(--danger);color:#fff;font-weight:var(--fw-bold)}.ctl.ctl-leave:hover:not(:disabled){background:var(--danger-2)}.ctl.off:hover:not(:disabled){background:var(--ctl-off-bg);color:var(--ctl-off-fg)}.ctl.active:hover:not(:disabled){background:var(--accent);color:var(--accent-text)}.badge{position:absolute;top:-2px;right:-2px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--danger);color:#fff;font-size:12px;font-weight:var(--fw-bold);line-height:18px;text-align:center}.badge-count{background:var(--surface-3);color:var(--text)}.quality-wrap{position:relative}.quality{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;border:0;border-top:1px solid var(--sf-top-highlight);background:var(--surface);color:var(--ok);box-shadow:var(--sf-shadow-raised)}.quality .bars{display:flex;align-items:flex-end;gap:2px;height:14px}.quality .bars i{width:3px;border-radius:1px;background:currentColor;opacity:.25}.quality .bars i:nth-child(1){height:25%}.quality .bars i:nth-child(2){height:50%}.quality .bars i:nth-child(3){height:75%}.quality .bars i:nth-child(4){height:100%}.quality[data-q="0"]{color:var(--danger)}.quality[data-q="1"]{color:var(--warn)}.quality[data-q="0"] .bars i:nth-child(1),.quality[data-q="1"] .bars i:nth-child(-n+2),.quality[data-q="2"] .bars i:nth-child(-n+3),.quality[data-q="3"] .bars i{opacity:1}.quality-pop{position:absolute;right:0;top:calc(100% + 8px);min-width:200px;padding:12px 14px;border-radius:12px;background:var(--surface);border:0;border-top:1px solid var(--sf-top-highlight);box-shadow:var(--shadow-lg);font-size:14px;z-index:20}.quality-pop dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:8px 0 0}.quality-pop dt{color:var(--text-3)}.quality-edge{display:block;margin-top:8px;font-size:10px;color:var(--text-4);letter-spacing:.04em}.quality-pop dd{margin:0;text-align:right;font-family:var(--mono)}.toasts{position:fixed;z-index:100;left:50%;top:calc(12px + var(--safe-t));transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;width:min(92vw,420px)}.toast{pointer-events:auto;max-width:100%;padding:10px 16px;border-radius:12px;border-top:1px solid var(--sf-top-highlight);background:var(--sf-glass-opaque);color:var(--text-2);font-size:14px;font-weight:400;box-shadow:var(--shadow-lg);animation:toast-in .32s cubic-bezier(.16,1,.3,1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast.clickable{cursor:pointer}.toast-join{background:color-mix(in srgb,var(--sf-success) 16%,var(--sf-glass-opaque));color:var(--sf-info-green-text)}.toast-leave{color:var(--text-2)}.toast-error{background:color-mix(in srgb,var(--sf-danger) 16%,var(--sf-glass-opaque));color:var(--sf-info-red-text)}.toast-warn{background:color-mix(in srgb,var(--sf-warning) 16%,var(--sf-glass-opaque));color:var(--sf-info-yellow-text)}.toast-ok{background:color-mix(in srgb,var(--sf-primary) 16%,var(--sf-glass-opaque));color:var(--sf-info-blue-text)}.toast.out{opacity:0;transform:translateY(-6px);transition:opacity .25s,transform .25s}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}}.spinner{width:32px;height:32px;border-radius:50%;border:3px solid rgb(255 255 255 / 25%);border-top-color:var(--accent);animation:spin .8s linear infinite}.spinner-sm{width:16px;height:16px;border-width:2px;border-color:var(--surface-3);border-top-color:var(--accent)}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@media(forced-colors:active){.ctl,.btn,.tile{border:1px solid CanvasText}}.btn-copy{width:44px;height:44px;padding:0;flex:none}:root{--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in: cubic-bezier(.7, 0, .84, 0);--ok-strong: #22c55e;--ok-strong-2: #16a34a;--nav-h: 60px;--top-h: 60px;--key: clamp(52px, min(19vw, 8.6vh), 76px)}body.in-call{overflow:hidden}.screen-splash{align-items:center;justify-content:center}.brand-mark{display:block;width:30px;height:30px;flex:none}.brand-mark .mark{display:block;width:100%;height:100%}.wordmark{font-weight:700;font-size:18px;letter-spacing:.14em;color:var(--text);line-height:1;white-space:nowrap;padding-left:.14em}.wordmark-lg{font-size:30px;letter-spacing:.22em;padding-left:.22em}.brand{gap:10px}.login-main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:380px;margin:0 auto;padding:16px 16px calc(12vh + var(--safe-b))}.login-hero{display:grid;justify-items:center;gap:18px;margin:0 0 28px}.sigil-wrap{width:clamp(120px,34vw,168px);aspect-ratio:1;filter:drop-shadow(0 10px 30px rgb(91 156 255 / .18));animation:sigil-in .7s var(--sf-ease) both}.sigil-wrap svg{display:block;width:100%;height:100%}.sigil-wrap .sweep{transform-origin:100px 100px;animation:sweep 24s linear infinite}@keyframes sweep{to{transform:rotate(360deg)}}@keyframes sigil-in{0%{opacity:0;transform:scale(.92)}}.deeplink-chip{display:inline-flex;align-items:center;gap:8px;max-width:100%;margin:-12px 0 20px;padding:8px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--panel-border);color:var(--text);font-size:16px;font-variant-numeric:tabular-nums}.deeplink-chip .ic{width:18px;height:18px;color:var(--accent)}.deeplink-num{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-height:640px){.sigil-wrap{width:108px}.login-hero{gap:12px;margin-bottom:20px}}.login-form{display:grid;gap:12px;width:100%}.login-field{position:relative;display:block}.login-field .input{height:52px;padding-left:44px}.input-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none}.login-form .btn-primary{margin-top:4px}.spinner-on-accent{border-color:#ffffff59;border-top-color:var(--accent-text)}.shell{height:100vh;height:100dvh;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"top" "content" "nav";background:var(--bg-grad),var(--bg);overflow:hidden}.topbar{grid-area:top;display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding:calc(8px + var(--safe-t)) 12px 8px 16px}.topbar-brand{min-width:0;display:flex}.topbar .header-actions{gap:2px;flex:none}.status-chip{display:inline-flex;align-items:center;gap:8px;height:44px;max-width:132px;padding:0 12px;border-radius:12px;color:var(--text-2);text-decoration:none;font-size:14px;font-variant-numeric:tabular-nums}.status-chip:hover{background:var(--sf-hover-bg);color:var(--text)}.status-ext{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--danger-text)}.status-dot.s-registered{background:var(--ok);box-shadow:0 0 8px #4ade8080}.status-dot.s-connecting,.status-dot.s-reconnecting{background:var(--warn);animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{50%{opacity:.35}}.theme-toggle[aria-pressed=true]{color:var(--accent)}.content{grid-area:content;min-height:0;min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.nav{grid-area:nav;display:flex;justify-content:space-around;align-items:stretch;gap:2px;padding:4px 8px calc(4px + var(--safe-b));background:var(--sf-glass-opaque);border-top:1px solid var(--sf-row-border)}.nav-item{position:relative;flex:1;max-width:96px;display:grid;place-items:center;min-height:52px;border-radius:12px;color:var(--text-3);text-decoration:none;transition:color var(--sf-duration) var(--sf-ease),background var(--sf-duration) var(--sf-ease)}.nav-item:hover{color:var(--text);background:var(--sf-hover-bg);transition:none}.nav-item[aria-current=page]{color:var(--accent)}.nav-item[aria-current=page]{color:var(--nav-active-fg)}.nav-item[aria-current=page] .nav-icon{background:var(--nav-active-bg)}.nav-icon{display:grid;place-items:center;width:56px;height:32px;border-radius:999px;transition:background .26s var(--ease-out),transform .16s var(--ease-out)}.nav-icon .ic{width:22px;height:22px}.nav-badge{top:4px;right:calc(50% - 26px)}@media(min-width:900px){.shell{grid-template-columns:88px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"top top" "nav content"}.topbar{padding:calc(12px + var(--safe-t)) 20px 12px 24px}.nav{flex-direction:column;justify-content:flex-start;align-items:center;gap:6px;padding:8px 12px 16px;background:transparent;border-top:0}.nav-item{flex:none;width:64px;min-height:52px}}.view-list{max-width:720px;margin:0 auto;padding:0 12px 24px}.view-head{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:8px;min-height:56px;padding:6px 4px 6px 8px;background:var(--bg)}.view-head h1{flex:1;min-width:0;font-size:22px;font-weight:var(--fw-bold);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.view-head-actions{display:flex;gap:2px;margin-left:auto;flex:none}.list{list-style:none;margin:0;padding:0}.row{display:flex;align-items:center;gap:2px;min-width:0;border-radius:12px}.row:hover,.row.row-active{background:var(--sf-hover-bg)}.row-main{flex:1;min-width:0;display:flex;align-items:center;gap:12px;min-height:64px;padding:8px;border:0;border-radius:12px;background:transparent;color:inherit;text-align:left;text-decoration:none}.row-text{flex:1;min-width:0;display:grid;gap:2px}.row-title{font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-missed .row-title{color:var(--danger-text)}.row-unread .row-title{font-weight:var(--fw-bold)}.row-sub{display:flex;align-items:center;gap:6px;min-width:0;color:var(--text-3);font-size:14px}.row-unread .row-snippet{color:var(--text)}.row-meta,.row-snippet{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.row-meta:empty{display:none}.row-dur{flex:none;font-variant-numeric:tabular-nums}.row-dir{display:inline-grid;flex:none;color:var(--ok)}.row-dir .ic{width:16px;height:16px}.row-dir.missed{color:var(--danger-text)}.row-dir.failed{color:var(--text-4)}.row-time{flex:none;color:var(--text-3);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.row-end{display:grid;justify-items:end;gap:4px;flex:none}.badge-inline{position:static;background:var(--accent);color:var(--accent-text)}.row-act{flex:none}.row-act:hover{color:var(--accent)}.avatar{flex:none}.avatar .ic{width:55%;height:55%}.avatar-sm{width:40px;height:40px;font-size:15px}.avatar-lg{width:80px;height:80px;font-size:28px}.empty{display:grid;justify-items:center;gap:12px;padding:64px 16px;text-align:center;color:var(--text-3)}.empty-sm{padding:32px 16px}.empty-icon{display:grid;place-items:center;width:64px;height:64px;border-radius:16px;background:var(--accent-soft);color:var(--accent)}.empty-icon .ic{width:28px;height:28px}.search{position:relative;margin:0 4px 8px}.search .input{padding-left:44px}.btn-danger{color:var(--danger-text)}.btn-danger:hover{color:var(--danger-text);background:var(--ctl-off-bg)}.view-dialer{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%;max-width:400px;margin:0 auto;padding:8px 16px 16px}.dial-display{width:100%;display:grid;justify-items:center;gap:2px;min-height:102px;align-content:end}.dial-input{width:100%;height:56px;border:0;background:transparent;color:var(--text);text-align:center;font-size:32px;font-weight:400;letter-spacing:.02em;font-variant-numeric:tabular-nums;text-overflow:ellipsis;caret-color:var(--accent);border-radius:12px}.dial-input.long{font-size:26px}.dial-input.xlong{font-size:21px}.dial-input:focus-visible{box-shadow:none}.dial-match{max-width:100%;min-height:44px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:var(--accent);font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.keypad{display:grid;grid-template-columns:repeat(3,var(--key));justify-content:center;gap:clamp(8px,1.6vh,16px) clamp(16px,7vw,28px)}.key{display:grid;place-items:center;align-content:center;width:var(--key);height:var(--key);border:0;border-radius:50%;background:var(--sf-btn-bg);color:var(--text);box-shadow:0 2px 8px #0000001f;border-top:1px solid var(--sf-top-highlight);user-select:none;-webkit-user-select:none;touch-action:manipulation;transition:background var(--sf-duration) var(--sf-ease)}.key:hover{background:var(--sf-btn-bg-hover);transition:none}.key:active{background:var(--accent-soft);transition:none}.key-main{font-size:calc(var(--key) * .4);line-height:1;font-variant-numeric:tabular-nums}.key-sub{font-size:10px;letter-spacing:.14em;line-height:1.2;color:var(--text-3);margin-top:2px}.dial-actions{display:grid;grid-template-columns:repeat(3,var(--key));justify-content:center;align-items:center;column-gap:clamp(16px,7vw,28px);margin-top:4px}.dial-slot{display:grid;place-items:center}.dial-side{width:48px;height:48px}.call-btn,.ctl-answer{display:grid;place-items:center;width:var(--key);height:var(--key);border:0;border-radius:50%;background:linear-gradient(135deg,var(--ok-strong),var(--ok-strong-2));color:#fff;box-shadow:0 4px 14px #22c55e4d}.call-btn .ic{width:30px;height:30px}.call-btn:hover{box-shadow:0 4px 20px #22c55e73}.view-messages{height:100%;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}.pane-list{min-height:0;overflow-y:auto;padding:0 12px 24px}.view-messages.has-thread .pane-list,.view-messages:not(.has-thread) .pane-thread{display:none}.pane-thread{min-height:0;display:flex;flex-direction:column}.pane-placeholder{display:grid;place-items:center;color:var(--text-4)}.pane-placeholder .ic{width:48px;height:48px}.thread-head{padding:6px 8px;border-bottom:1px solid var(--sf-row-border);background:transparent;position:static}.thread-title{flex:1;min-width:0;display:grid;font-size:16px;font-weight:var(--fw-bold);line-height:1.25}.thread-name,.thread-number{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.thread-number{font-size:12px;font-weight:400;color:var(--text-3)}.to-input{flex:1;height:44px}.bubbles{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;list-style:none;margin:0;padding:8px 12px 12px;display:flex;flex-direction:column}.suggest{width:100%}.day{align-self:center;margin:14px 0 6px;font-size:12px;color:var(--text-3)}.day span{padding:2px 10px;border-radius:999px;background:var(--surface)}.bubble{display:flex;flex-direction:column;max-width:min(78%,520px);margin-top:10px;align-self:flex-start;min-width:0}.bubble.grouped{margin-top:3px}.bubble.out{align-self:flex-end;align-items:flex-end}.bubble-text{padding:9px 13px;border-radius:18px 18px 18px 6px;background:var(--surface-3);font-size:15px;line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;max-width:100%}.bubble.out .bubble-text{border-radius:18px 18px 6px;background:var(--accent);color:var(--accent-text)}.bubble.failed .bubble-text{opacity:.6}.bubble.failed{cursor:pointer}.bubble-meta{display:inline-flex;align-items:center;gap:4px;margin:3px 6px 0;font-size:11px;color:var(--text-4)}.bubble.grouped:not(:last-child) .bubble-meta{display:none}.bubble.failed .bubble-meta{display:inline-flex;color:var(--danger-text);font-size:12px}.bubble-fail .ic{width:14px;height:14px}.spinner-xs{width:10px;height:10px;border-width:1.5px;border-color:var(--surface-3);border-top-color:var(--accent)}.compose{display:flex;align-items:flex-end;gap:8px;padding:8px 12px calc(10px + var(--safe-b));border-top:1px solid var(--sf-row-border)}.compose-input{flex:1;height:auto;min-height:46px;max-height:132px;padding:11px 14px;line-height:1.5;resize:none;overflow-y:auto}.btn-send{width:46px;height:46px;flex:none;background:var(--accent);color:var(--accent-text)}.btn-send:hover:not(:disabled){background:var(--accent-2);color:var(--accent-text)}.btn-send:disabled{background:var(--surface-2);color:var(--text-4)}@media(min-width:900px){.view-messages{grid-template-columns:340px minmax(0,1fr);gap:0}.view-messages.has-thread .pane-list,.view-messages:not(.has-thread) .pane-thread{display:block}.view-messages:not(.has-thread) .pane-thread{display:grid}.view-messages.has-thread .pane-thread{display:flex}.pane-thread{margin:0 16px 16px 0;border-radius:var(--radius-lg);background:var(--surface);border-top:1px solid var(--sf-top-highlight);box-shadow:var(--shadow);overflow:hidden}.thread-back{display:none}.compose{padding-bottom:12px}}.view-settings{max-width:600px}.card{margin:0 4px 12px;padding:4px 16px;border-radius:var(--radius-lg);background:var(--surface);border-top:1px solid var(--sf-top-highlight);box-shadow:var(--sf-shadow-card)}.set-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;min-height:60px;padding:8px 0}.set-row+.set-row{border-top:1px solid var(--sf-row-border)}.set-label{display:inline-flex;align-items:center;gap:10px;min-width:0;color:var(--text-2);font-size:15px}.set-label .ic{color:var(--text-3)}.set-control{flex:1 1 150px;min-width:0;display:flex;justify-content:flex-end}.set-control .select{max-width:280px}.set-inline{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0;width:100%}.set-inline .select{flex:1}.set-value{display:inline-flex;align-items:center;gap:6px;font-size:14px;text-align:right}.set-value.ok{color:var(--ok)}.set-value .ic{width:18px;height:18px}.set-account{display:grid;justify-items:end;gap:2px;min-width:0;max-width:100%;text-align:right}.acct-ext{font-size:22px;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums}.acct-did{color:var(--text-2);font-variant-numeric:tabular-nums}.acct-status{display:inline-flex;align-items:center;gap:8px;color:var(--text-3);font-size:13px}.edge-chip{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;background:var(--surface-2);color:var(--text-2);font-size:12px;letter-spacing:.04em;font-variant-numeric:tabular-nums;white-space:nowrap}.btn-signout{width:calc(100% - 8px);margin:8px 4px 0;color:var(--danger-text)}.btn-signout:hover:not(:disabled){color:var(--danger-text)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);display:grid;place-items:center;padding:16px;background:var(--sf-scrim-strong);animation:fade-in .16s ease-out}@keyframes fade-in{0%{opacity:0}}.modal{width:min(100%,420px);max-height:calc(100dvh - 32px);overflow-y:auto;border-radius:var(--radius-lg);background:var(--sf-popup-bg);border-top:1px solid var(--sf-top-highlight);box-shadow:var(--shadow-lg)}.modal-form{display:grid;gap:14px;padding:12px 20px 20px}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-right:-10px}.modal-head h2{font-size:18px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-avatar{justify-self:center}.modal-actions{display:flex;justify-content:space-between;gap:10px;margin-top:4px}.modal-actions .btn-primary{min-width:120px}.callscreen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);display:flex;flex-direction:column;background:radial-gradient(120% 70% at 50% 25%,color-mix(in srgb,var(--accent) 10%,var(--sf-bg-start)),var(--sf-bg-start) 70%);overflow:hidden;animation:cs-in .32s var(--ease-out) both}.callscreen.cs-leave{animation:cs-out .24s var(--ease-in) both;pointer-events:none}:root[data-theme=dark] .callscreen{background:#000}.cs-top{display:flex;align-items:center;gap:10px;min-height:60px;padding:calc(8px + var(--safe-t)) 16px 8px}.callscreen .quality-pop{left:0;right:auto}.callscreen[data-state=incoming] .cs-top>*,.callscreen[data-state=dialing] .quality-wrap,.callscreen[data-state=ringing] .quality-wrap{visibility:hidden}.cs-main{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:0 16px}.cs-id{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;max-width:560px;text-align:center}.cs-ring{--lvl: 0;border-radius:50%;margin-bottom:14px;box-shadow:0 0 0 calc(4px + var(--lvl) * 14px) rgb(var(--sf-accent-rgb) / calc(.12 + var(--lvl) * .2));transition:box-shadow 90ms linear}.callscreen[data-state=incoming] .cs-ring,.callscreen[data-state=ringing] .cs-ring,.callscreen[data-state=dialing] .cs-ring{animation:ring-pulse 1.6s ease-out infinite}@keyframes ring-pulse{0%{box-shadow:0 0 rgb(var(--sf-accent-rgb) / .45)}to{box-shadow:0 0 0 28px rgb(var(--sf-accent-rgb) / 0)}}.cs-name{max-width:100%;font-size:28px;font-weight:var(--fw-bold);line-height:1.25;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.cs-number{color:var(--text-2);font-size:16px;font-variant-numeric:tabular-nums;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cs-status{color:var(--text-3);font-size:16px;font-variant-numeric:tabular-nums;min-height:24px}.callscreen[data-state=ended] .cs-status{color:var(--danger-text)}.cs-main.kp-open .cs-ring{display:none}.cs-main.kp-open .cs-name{font-size:20px;-webkit-line-clamp:1}.cs-main.kp-open .cs-number{display:none}.cs-dtmf{display:grid;justify-items:center;gap:10px}.cs-digits{min-height:34px;max-width:90vw;font-size:26px;letter-spacing:.08em;font-variant-numeric:tabular-nums;overflow:hidden;white-space:nowrap;direction:rtl;text-align:center}.keypad-call{--key: clamp(52px, min(17vw, 7.6vh), 68px)}.cs-meters{display:flex;justify-content:center;gap:20px;padding:4px 16px 10px;color:var(--text-3)}.callscreen:not([data-state=active]):not([data-state=held]) .cs-meters{visibility:hidden}.lvl{display:inline-flex;align-items:center;gap:8px}.lvl .ic{width:16px;height:16px}.lvl-track{position:relative;width:64px;height:4px;border-radius:2px;background:var(--surface-2);overflow:hidden}.lvl-fill{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--accent);transform-origin:left;transform:scaleX(0);transition:transform 90ms linear}.cs-controls{display:grid;justify-items:center;gap:18px;padding:8px 16px calc(28px + var(--safe-b))}.cs-row{display:flex;justify-content:center;gap:clamp(16px,8vw,36px)}.cs-controls .ctl{width:64px;height:64px}.cs-controls .ctl .ic{width:26px;height:26px}.ctl-end{background:linear-gradient(135deg,var(--danger),var(--danger-2));color:#fff;box-shadow:0 4px 14px #ef44444d}.ctl.ctl-end:hover:not(:disabled){background:var(--danger-2);color:#fff}.ctl.ctl-answer:hover:not(:disabled){background:var(--ok-strong-2);color:#fff}.cs-controls .ctl-end,.cs-controls .ctl-answer{width:72px;height:72px}.cs-row-in{gap:clamp(64px,30vw,140px)}.ctl-answer .ic{animation:wiggle 1.2s ease-in-out infinite}@keyframes wiggle{0%,60%,to{transform:rotate(0)}70%,90%{transform:rotate(-14deg)}80%{transform:rotate(14deg)}}.callscreen[data-state=incoming] .cs-controls-call,.callscreen:not([data-state=incoming]) .cs-controls-in{display:none}.callscreen[data-state=ended] .cs-controls{opacity:.4}@media(max-height:620px){.cs-controls{gap:12px;padding-bottom:calc(16px + var(--safe-b))}.cs-controls .ctl{width:56px;height:56px}.cs-controls .ctl-end,.cs-controls .ctl-answer{width:64px;height:64px}.cs-ring .avatar-xl{width:84px;height:84px;font-size:30px}.cs-name{font-size:24px}.keypad-call{--key: 48px}.kp-open~.cs-meters{display:none}.cs-main.kp-open{gap:8px}}.toast{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}.toast-info{color:var(--text)}.card,.modal{border:1px solid var(--panel-border)}@media(min-width:900px){.pane-thread{border:1px solid var(--panel-border)}}.skel{display:block;flex:none;max-width:100%;border-radius:6px;background:linear-gradient(90deg,var(--skel-base) 25%,var(--skel-hi) 50%,var(--skel-base) 75%);background-size:200% 100%;animation:skel-shimmer 1.6s ease-in-out infinite}.skel-round{border-radius:50%}.skel-pill{border-radius:18px}@keyframes skel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skel-list{list-style:none}.row-skel{animation:rise .42s var(--ease-out) both;animation-delay:calc(var(--i, 0) * 45ms)}.row-skel:hover{background:transparent}.row-skel .row-text{gap:8px}.skel-thread{display:flex;flex-direction:column;gap:12px;padding-top:12px}.skel-bubble{display:flex;width:100%}.skel-bubble.out{justify-content:flex-end}.status-chip .skel{margin:0 2px}.edge-chip-skel{padding:0 8px}.shell-skel .nav-item{pointer-events:none}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}@keyframes cs-in{0%{opacity:0;transform:scale(1.03)}}@keyframes cs-out{to{opacity:0;transform:scale(.98)}}.view-enter{animation:rise .28s var(--ease-out) both}.screen.login .login-hero,.screen.login .login-form>*{animation:rise .52s var(--ease-out) both}.screen.login .login-form>:nth-child(1){animation-delay:80ms}.screen.login .login-form>:nth-child(2){animation-delay:.13s}.screen.login .login-form>:nth-child(n+3){animation-delay:.18s}.btn,.btn-icon,.ctl,.key,.call-btn,.nav-item .nav-icon,.row-main{transition-property:background,box-shadow,color,transform,opacity}.btn:active:not(:disabled),.btn-icon:active:not(:disabled),.ctl:active:not(:disabled),.call-btn:active,.key:active{transform:scale(.94);transition:transform 60ms ease-out}.nav-item:active .nav-icon{transform:scale(.9)}.row-main:active{transform:scale(.99)}.modal-backdrop .modal{animation:sheet-up .3s var(--ease-out) both}.modal-backdrop.leaving{animation:fade-out .17s ease-in both}.modal-backdrop.leaving .modal{animation:sheet-down .17s var(--ease-in) both}@keyframes sheet-up{0%{opacity:0;transform:translateY(16px) scale(.98)}}@keyframes sheet-down{to{opacity:0;transform:translateY(10px) scale(.98)}}@keyframes fade-out{to{opacity:0}}.bubble-new{animation:bubble-in .32s var(--ease-out) both}.bubble-new.out{transform-origin:bottom right}.bubble-new.in{transform-origin:bottom left}@keyframes bubble-in{0%{opacity:0;transform:translateY(10px) scale(.92)}}.badge.pop{animation:pop .36s var(--ease-out)}@keyframes pop{0%{transform:scale(.4)}60%{transform:scale(1.18)}}.cs-ring{position:relative}.callscreen[data-state=incoming] .cs-ring:before,.callscreen[data-state=incoming] .cs-ring:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:2px solid rgb(var(--sf-accent-rgb) / .5);animation:ripple 2s var(--ease-out) infinite;pointer-events:none}.callscreen[data-state=incoming] .cs-ring:after{animation-delay:1s}@keyframes ripple{0%{transform:scale(1);opacity:.9}to{transform:scale(1.9);opacity:0}}.callscreen[data-state=active] .cs-ring{animation:none}.cs-controls-call,.cs-controls-in{animation:rise .36s var(--ease-out) both;animation-delay:80ms}.cs-dtmf:not([hidden]){animation:rise .24s var(--ease-out) both}.callscreen[data-state=ended] .cs-ring{filter:grayscale(.7);opacity:.7;transition:filter .3s,opacity .3s}@media(prefers-reduced-motion:reduce){.skel{animation:none;background:var(--skel-hi)}.sigil-wrap .sweep,.callscreen[data-state=incoming] .cs-ring:before,.callscreen[data-state=incoming] .cs-ring:after{animation:none;display:none}.btn:active:not(:disabled),.btn-icon:active:not(:disabled),.ctl:active:not(:disabled),.call-btn:active,.key:active,.row-main:active{transform:none}}
