:root{--md-surface: #fffbfe;--md-surface-dim: #f3edf7;--md-on-surface: #1c1b1f;--md-on-surface-variant: #49454f;--md-outline: #79747e;--md-outline-variant: #cac4d0;--md-primary: #0b57d0;--md-on-primary: #ffffff;--md-error: #b3261e;--md-on-error: #ffffff;--md-call: #146c2e;--md-on-call: #ffffff;--md-end: #b3261e;--gap: .5rem;--radius-full: 999px;--font: "Figtree", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);font-size:.9375rem;line-height:1.4;color:var(--md-on-surface);background:var(--md-surface);-webkit-font-smoothing:antialiased}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}hr.divider{border:none;border-top:1px solid var(--md-outline-variant);margin:0}.v-divider{width:1px;align-self:stretch;background:var(--md-outline-variant);flex-shrink:0}.gate{min-height:100%;display:grid;place-items:center;padding:var(--gap);background:var(--md-surface)}.gate__panel{width:min(360px,100%);display:flex;flex-direction:column;gap:var(--gap);padding:calc(var(--gap) * 2);border:1px solid var(--md-outline-variant);border-radius:16px;background:var(--md-surface)}.gate__icon{width:48px;height:48px;border-radius:var(--radius-full);background:var(--md-surface-dim);color:var(--md-primary);display:grid;place-items:center}.gate__panel h1{margin:0;font-size:1.5rem;font-weight:600;letter-spacing:-.02em}.gate__sub{margin:0;color:var(--md-on-surface-variant);font-size:.875rem}.gate__hint{margin:0;font-size:.75rem;color:var(--md-on-surface-variant)}.gate__hint code{font-family:var(--mono);font-size:.7rem}.app{height:100%;display:flex;flex-direction:column;background:var(--md-surface)}.topbar{display:flex;align-items:center;gap:var(--gap);padding:var(--gap) calc(var(--gap) * 2);min-height:56px}.topbar__brand{display:flex;align-items:center;gap:var(--gap);font-weight:600;font-size:1.125rem;letter-spacing:-.01em}.topbar__logo{color:var(--md-primary)}.topbar__actions{display:flex;gap:var(--gap);margin-inline-start:auto}.dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--md-outline);flex-shrink:0}.dot--on{background:var(--md-call)}.device-bar{display:flex;align-items:center;gap:var(--gap);padding:0 calc(var(--gap) * 2) var(--gap);min-height:44px}.device-pill{flex:1;min-width:0;display:flex;align-items:center;gap:var(--gap);min-height:40px;padding:0 calc(var(--gap) * 1.5);border-radius:var(--radius-full);background:var(--md-surface-dim);border:1px solid transparent;transition:border-color .12s ease-out,background .12s ease-out}.device-pill:focus-within{border-color:var(--md-primary);background:var(--md-surface)}.device-pill select{flex:1;min-width:0;border:none;outline:none;background:transparent;font-weight:500;font-size:.875rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.device-bar__pair{flex-shrink:0}.pair-banner{display:flex;align-items:center;gap:var(--gap);margin:0 calc(var(--gap) * 2) var(--gap);padding:var(--gap) calc(var(--gap) * 1.5);border-radius:16px;background:color-mix(in srgb,var(--md-primary) 8%,var(--md-surface));border:1px solid color-mix(in srgb,var(--md-primary) 22%,transparent);animation:pair-in .22s cubic-bezier(.2,.8,.2,1)}@keyframes pair-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.pair-banner__copy{flex:1;min-width:0}.pair-banner__label{margin:0;font-size:.75rem;font-weight:500;color:var(--md-on-surface-variant)}.pair-banner__code{margin:2px 0 0;font-family:var(--mono);font-size:1.5rem;font-weight:600;letter-spacing:.18em;color:var(--md-primary)}.shell{flex:1;display:flex;min-height:0}.dialer{width:min(360px,100%);flex-shrink:0;display:flex;flex-direction:column;gap:var(--gap);padding:var(--gap);background:var(--md-surface)}.dialer__display{display:flex;align-items:center;gap:var(--gap);min-height:56px;padding-inline:var(--gap)}.dialer__number{flex:1;border:none;outline:none;background:transparent;font-family:var(--mono);font-size:1.75rem;font-weight:500;letter-spacing:.02em;text-align:center;min-width:0}.dialer__number::placeholder{color:var(--md-outline);font-family:var(--font);font-size:1.125rem;font-weight:400}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);padding:var(--gap)}.key{aspect-ratio:1;max-height:72px;border-radius:var(--radius-full);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;color:var(--md-on-surface);transition:background .12s ease-out}.key:hover{background:var(--md-surface-dim)}.key:active{background:var(--md-outline-variant)}.key__digit{font-size:1.5rem;font-weight:400;line-height:1.2}.key__letters{font-size:.625rem;font-weight:500;letter-spacing:.12em;color:var(--md-on-surface-variant);line-height:1;min-height:.75rem}.dialer__actions{display:flex;justify-content:center;padding:var(--gap)}.fab{width:64px;height:64px;border-radius:var(--radius-full);display:grid;place-items:center;transition:opacity .12s ease-out,transform .12s ease-out}.fab:disabled{opacity:.38;cursor:not-allowed}.fab--call{background:var(--md-call);color:var(--md-on-call)}.fab--end{background:var(--md-end);color:var(--md-on-error)}.fab--sms{width:48px;height:48px;background:var(--md-primary);color:var(--md-on-primary)}.fab:not(:disabled):hover{filter:brightness(1.05)}.fab:not(:disabled):active{transform:scale(.96)}.dialer__status{margin:0;text-align:center;font-size:.875rem;color:var(--md-primary);font-weight:500}.recents{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--md-surface)}.recents__head{display:flex;align-items:center;gap:var(--gap);padding:var(--gap) calc(var(--gap) * 2);min-height:48px}.recents__head h2{margin:0;font-size:1rem;font-weight:600}.recents__icon{color:var(--md-on-surface-variant)}.recents__count{margin-inline-start:auto;font-size:.8125rem;color:var(--md-on-surface-variant)}.recents__list{list-style:none;margin:0;padding:0;overflow:auto;flex:1}.recent{width:100%;display:flex;align-items:center;gap:var(--gap);padding:var(--gap) calc(var(--gap) * 2);text-align:start;transition:background .12s ease-out}.recent:hover{background:var(--md-surface-dim)}.recent--active{background:color-mix(in srgb,var(--md-primary) 8%,transparent)}.recent__avatar{width:40px;height:40px;border-radius:var(--radius-full);background:var(--md-surface-dim);color:var(--md-on-surface-variant);display:grid;place-items:center;flex-shrink:0}.recent__avatar--completed{color:var(--md-call)}.recent__avatar--failed,.recent__avatar--cancelled{color:var(--md-error)}.recent__avatar--active,.recent__avatar--ringing,.recent__avatar--dialing,.recent__avatar--dispatching,.recent__avatar--queued{color:var(--md-primary)}.recent__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.recent__to{font-family:var(--mono);font-size:.9375rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent__meta{display:flex;align-items:center;gap:4px;font-size:.75rem;color:var(--md-on-surface-variant);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent__dir{flex-shrink:0;opacity:.8}.recent__when{font-size:.75rem;color:var(--md-on-surface-variant);flex-shrink:0}.recent__call{width:40px;height:40px;border-radius:var(--radius-full);color:var(--md-call);display:grid;place-items:center;flex-shrink:0;opacity:0;transition:opacity .12s ease-out}.recent:hover .recent__call{opacity:1}.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--gap);color:var(--md-on-surface-variant);padding:calc(var(--gap) * 2)}.empty__icon{opacity:.4;width:48px;height:48px}.empty p{margin:0;font-size:.875rem}.icon-btn{width:40px;height:40px;border-radius:var(--radius-full);display:grid;place-items:center;color:var(--md-on-surface-variant);transition:background .12s ease-out}.icon-btn:hover{background:var(--md-surface-dim);color:var(--md-on-surface)}.field{display:flex;flex-direction:column;gap:var(--gap)}.field>span{font-size:.75rem;font-weight:500;color:var(--md-on-surface-variant)}.field input,.field select{width:100%;padding:.75rem var(--gap);border:1px solid var(--md-outline);border-radius:4px;background:var(--md-surface);outline:none}.field input:focus,.field select:focus{border-color:var(--md-primary);outline:2px solid color-mix(in srgb,var(--md-primary) 30%,transparent);outline-offset:0}.field--inline{flex:1;flex-direction:row;align-items:center;gap:var(--gap);min-width:0}.field--inline select{border:none;padding:var(--gap) 0;background:transparent;min-width:0;flex:1}.field__icon{color:var(--md-on-surface-variant);flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--gap);min-height:40px;padding:0 calc(var(--gap) * 2);border-radius:20px;font-weight:500;font-size:.875rem;letter-spacing:.01em;transition:background .12s ease-out,opacity .12s ease-out}.btn:disabled{opacity:.38;cursor:not-allowed}.btn--filled{background:var(--md-primary);color:var(--md-on-primary)}.btn--filled:not(:disabled):hover{filter:brightness(1.06)}.btn--tonal{background:var(--md-surface-dim);color:var(--md-primary)}.btn--tonal:not(:disabled):hover{background:color-mix(in srgb,var(--md-primary) 12%,var(--md-surface-dim))}.btn--text{color:var(--md-primary);padding-inline:var(--gap)}.btn--text:hover{background:color-mix(in srgb,var(--md-primary) 8%,transparent)}.banner{margin:0;padding:var(--gap);border-radius:4px;font-size:.8125rem}.banner--error{background:color-mix(in srgb,var(--md-error) 12%,transparent);color:var(--md-error);border:1px solid color-mix(in srgb,var(--md-error) 30%,transparent)}.banner--bar{border-radius:0;border-inline:none}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--md-on-surface) 32%,transparent);display:grid;place-items:center;padding:var(--gap);z-index:20}.sheet__panel{width:min(400px,100%);background:var(--md-surface);border:1px solid var(--md-outline-variant);border-radius:16px;padding:var(--gap);display:flex;flex-direction:column;gap:var(--gap)}.sheet__head{display:flex;align-items:center;gap:var(--gap);padding-inline:var(--gap)}.sheet__head h2{margin:0;flex:1;font-size:1.125rem;font-weight:600}@media(max-width:720px){.shell{flex-direction:column}.v-divider{width:100%;height:1px}.dialer{width:100%;max-width:none}.recent__call{opacity:1}}.tabs{display:flex;gap:var(--gap);padding:var(--gap) calc(var(--gap) * 2)}.tabs__btn{display:inline-flex;align-items:center;gap:var(--gap);min-height:40px;padding:0 calc(var(--gap) * 1.5);border-radius:20px;color:var(--md-on-surface-variant);font-weight:500;font-size:.875rem}.tabs__btn--on{background:var(--md-surface-dim);color:var(--md-primary)}.tabs__btn svg{width:18px;height:18px}.sms{display:flex;flex-direction:column;flex:1;min-height:0;overflow:auto}.sms__thread{display:flex;flex-direction:column;background:var(--md-surface)}.sms__to-row{display:flex;align-items:flex-start;gap:var(--gap);padding:var(--gap) calc(var(--gap) * 2);min-height:48px}.sms__to-label{padding-top:.55rem;font-size:.875rem;font-weight:500;color:var(--md-on-surface-variant);flex-shrink:0}.sms__chips{flex:1;min-width:0;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;min-height:28px;padding:0 8px 0 10px;border-radius:var(--radius-full);background:color-mix(in srgb,var(--md-primary) 12%,transparent);color:var(--md-primary);font-family:var(--mono);font-size:.8125rem;font-weight:500;transition:background .12s ease-out}.chip:hover{background:color-mix(in srgb,var(--md-primary) 20%,transparent)}.chip__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip__x{width:14px;height:14px;opacity:.7;flex-shrink:0}.sms__to-input{flex:1;min-width:8rem;border:none;outline:none;background:transparent;font-family:var(--mono);font-size:.875rem;padding:.4rem 0}.sms__to-input::placeholder{font-family:var(--font);color:var(--md-outline)}.sms__compose-area{display:flex;flex-direction:column;gap:var(--gap);padding:var(--gap) calc(var(--gap) * 2) calc(var(--gap) * 1.5)}.sms__body{width:100%;min-height:7rem;padding:.875rem 1rem;border:none;border-radius:18px;background:var(--md-surface-dim);outline:none;resize:vertical;font:inherit;line-height:1.45;transition:background .12s ease-out,box-shadow .12s ease-out}.sms__body:focus{background:var(--md-surface);box-shadow:inset 0 0 0 1.5px var(--md-primary)}.sms__compose-foot{display:flex;align-items:center;gap:var(--gap)}.sms__meta{flex:1;font-size:.75rem;color:var(--md-on-surface-variant)}.sms__live{margin:0 calc(var(--gap) * 2) calc(var(--gap) * 2);padding:calc(var(--gap) * 1.5);border-radius:16px;border:1px solid var(--md-outline-variant);background:var(--md-surface);display:flex;flex-direction:column;gap:var(--gap)}.sms__live--active{border-color:color-mix(in srgb,var(--md-primary) 35%,var(--md-outline-variant));background:color-mix(in srgb,var(--md-primary) 4%,var(--md-surface))}.sms__live-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--gap)}.sms__live-title{margin:0;font-size:1rem;font-weight:600;letter-spacing:-.01em}.sms__live-sub{margin:2px 0 0;font-size:.8125rem;color:var(--md-on-surface-variant)}.sms__live-actions{display:flex;flex-wrap:wrap;gap:2px}.sms__bar{height:6px;background:var(--md-surface-dim);border-radius:var(--radius-full);overflow:hidden}.sms__bar-fill{height:100%;width:100%;transform-origin:left center;transform:scaleX(0);background:var(--md-primary);border-radius:inherit;transition:transform .28s cubic-bezier(.2,.8,.2,1)}.sms__turn{margin:0;display:flex;align-items:baseline;justify-content:space-between;gap:var(--gap);font-size:.8125rem;font-family:var(--mono);color:var(--md-on-surface)}.sms__turn-count{color:var(--md-on-surface-variant);font-size:.75rem}.sms__feed{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;max-height:240px;overflow:auto}.sms__row{display:grid;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:var(--gap);min-height:36px;padding:4px 0;border-top:1px solid var(--md-outline-variant);font-size:.8125rem}.sms__row:first-child{border-top:none}.sms__status-dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--md-outline)}.sms__status-dot--sent{background:var(--md-call)}.sms__status-dot--failed{background:var(--md-error)}.sms__status-dot--sending,.sms__status-dot--dispatching{background:var(--md-primary)}.sms__row-to{font-family:var(--mono);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sms__row-status{color:var(--md-on-surface-variant);font-size:.75rem;text-align:end}.sms__row--sent .sms__row-status{color:var(--md-call)}.sms__row--failed .sms__row-status{color:var(--md-error)}.sms__empty-hint{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--gap);padding:calc(var(--gap) * 3) calc(var(--gap) * 2);color:var(--md-on-surface-variant);text-align:center}.sms__empty-hint p{margin:0;font-size:.875rem}.sms__empty-sub{font-size:.75rem!important;max-width:28ch}.nav{display:flex;flex-wrap:wrap;gap:var(--gap);padding:var(--gap) calc(var(--gap) * 2)}.nav__btn{min-height:36px;padding:0 calc(var(--gap) * 1.25);border-radius:20px;font-weight:500;font-size:.8125rem;color:var(--md-on-surface-variant)}.nav__btn--on{background:var(--md-surface-dim);color:var(--md-primary)}.overview{flex:1;min-height:0;overflow:auto;padding:var(--gap) calc(var(--gap) * 2) calc(var(--gap) * 2);display:flex;flex-direction:column;gap:var(--gap)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--gap)}.stat{display:flex;flex-direction:column;gap:2px;padding:var(--gap);border:1px solid var(--md-outline-variant);border-radius:12px}.stat strong{font-size:1.25rem;font-weight:600;letter-spacing:-.02em}.device-live{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.device-live li{display:flex;align-items:center;gap:var(--gap);min-height:44px;padding:4px 0;border-top:1px solid var(--md-outline-variant);font-size:.875rem}.device-live li:first-child{border-top:none}.section-title{margin:var(--gap) 0 0;font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--md-on-surface-variant)}.banner--ok{background:color-mix(in srgb,var(--md-call) 12%,transparent);color:var(--md-call);border:1px solid color-mix(in srgb,var(--md-call) 30%,transparent);word-break:break-all}.banner--ok code{font-family:var(--mono);font-size:.8125rem;color:var(--md-on-surface)}.shell--hidden{display:none}.tabs--gate{padding:0}.muted{color:var(--md-on-surface-variant);font-size:.8125rem}.grow{flex:1;min-width:0}.devices-head{display:flex;align-items:center;gap:var(--gap)}.btn--danger{color:var(--md-error)}.btn--danger:hover{background:color-mix(in srgb,var(--md-error) 8%,transparent)}
