/* Yeastar PBX (yeastar.js): the client page tab, the PBX page, the launchpad card mark and the extension drawer. Foundation language: hairline rules, mono for values, status as words. Both themes use the app's variables. */
.ys-chip{--chip:22px;position:relative;vertical-align:-5px;margin-right:8px}
.lp-chip.ys-chip{vertical-align:baseline;margin-right:0}
.ys-page .ph h1,.ys-sec .sh h2{display:flex;align-items:center}
.ys-cards{margin:8px 0 12px}
.ys-status{margin:6px 0 8px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ys-actions{margin:0 0 8px;display:flex;gap:8px;flex-wrap:wrap}
.ys-actions a.btn{text-decoration:none}
.ys-msg{margin:0 0 8px;min-height:1px;max-width:78ch}
.ys-empty{margin:4px 0 0}
.ys-hintrow{display:grid;gap:4px;max-width:360px;margin:0 0 10px}
.ys-link{border:1px solid var(--bd2);border-radius:var(--r);background:var(--bg);padding:10px 12px;margin:0 0 10px;max-width:90ch}
.ys-url{display:block;overflow-wrap:anywhere;word-break:break-all;font-size:11.5px}
.ys-setup{max-width:90ch}
.ys-help{margin-top:8px}
.ys-helpbody{display:grid;gap:8px;max-width:84ch;margin-top:6px}
.ys-helpbody p,.ys-helpbody ol{margin:0}
.ys-helpbody ol{padding-left:20px;display:grid;gap:6px}
.ys-filter{margin:6px 0 8px;max-width:100%;overflow-x:auto}
.ys-q{min-width:220px}
.ys-count{margin:0 0 6px}
.ys-none{margin:8px 0}
.ys-foot{margin-top:10px;max-width:90ch}
.ys-tw.ys-scroll{max-height:560px;overflow:auto}
.ys-t td.c-host .host{font-weight:500}
.ys-t td.c-host .role{display:block;text-transform:none;letter-spacing:0;font-size:11px;color:var(--ink3);overflow-wrap:anywhere}
.ys-t td.n{text-align:right}
.ys-t td.act{text-align:right;white-space:nowrap}
.ys-t tr.ys-go{cursor:pointer}
.ys-t tr.ys-go:hover td{background:var(--sel)}
.ys-t tr.ys-go:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}
.ys-t tr.ys-xr>td{white-space:normal;background:var(--bg)}
/* the drawer: a panel from the right, a bottom sheet on phones */
.ys-drawer{position:fixed;inset:0;z-index:40}
.ys-drawer[hidden]{display:none}
.ys-dr-bg{position:absolute;inset:0;background:var(--scrim,rgba(0,0,0,.45))}
.ys-dr-panel{position:absolute;top:0;right:0;bottom:0;width:min(460px,100%);background:var(--sf);border-left:1px solid var(--bd2);overflow:auto;padding:14px 18px 24px;display:grid;gap:12px;align-content:start}
.ys-dr-h{display:flex;gap:10px;align-items:center;justify-content:space-between}
.ys-dr-t{display:flex;gap:10px;align-items:center;min-width:0;font-size:15px;flex-wrap:wrap}
.ys-dr-kv{display:grid;grid-template-columns:110px minmax(0,1fr);gap:6px 12px;margin:0;font-size:12.5px}
.ys-dr-kv dt{color:var(--ink3)}
.ys-dr-kv dd{margin:0;overflow-wrap:anywhere}
.ys-dr-s{border-top:1px solid var(--bd);padding-top:10px;display:grid;gap:8px}
.ys-dr-s h3{margin:0;font:600 10.5px var(--font);letter-spacing:.08em;text-transform:uppercase;color:var(--ink3)}
.ys-lic{list-style:none;margin:0;padding:0;display:grid;gap:4px;font-size:12.5px}
body.ys-dr-open{overflow:hidden}
@media (max-width:719px){
  .ys-q{min-width:0;width:100%}
  .ys-dr-panel{top:auto;left:0;width:100%;max-height:88vh;border-left:0;border-top:1px solid var(--bd2);border-radius:14px 14px 0 0}
  .ys-dr-kv{grid-template-columns:96px minmax(0,1fr)}
  .ys-tw.ys-scroll{max-height:none;overflow:visible}
  .ys-t,.ys-t tbody,.ys-t tr,.ys-t td{display:block;width:auto!important;max-width:none!important;box-sizing:border-box}
  .ys-t colgroup,.ys-t thead,.ys-t .rz-handle,.ys-t .ua-grip{display:none!important}
  .ys-t tr{border:1px solid var(--bd);border-radius:var(--r);background:var(--sf);margin:0 0 10px;padding:6px 12px}
  .ys-t td{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border:0;padding:5px 0;text-align:right;white-space:normal;min-width:0!important}
  .ys-t td::before{content:attr(data-l);color:var(--ink3);font:600 10.5px var(--font);letter-spacing:.06em;text-transform:uppercase;text-align:left;flex:none}
  .ys-t td[data-l=""]::before{content:none}
  .ys-t td.c-host{display:block;text-align:left;padding-bottom:6px}
  .ys-t td.c-host::before{content:none}
  .ys-t td.act{justify-content:stretch;flex-wrap:wrap}
  .ys-t td.act .btn{flex:1 1 auto}
  .ys-t tr.ys-go:hover td{background:none}
  .ys-t tr.ys-xr{border:0;background:none;padding:0;margin:0}
  .ys-t tr.ys-xr>td{display:block;padding:6px 0;background:none}
  .ys-t tr.ys-xr>td::before{content:none}
}
.ys-mono{font:700 10px/1 var(--mono);letter-spacing:.02em;color:#3b434d}
.ys-trunks{margin:0 0 4px}
.ys-calls{margin:0 0 8px}
.ys-fix{max-width:84ch;margin:6px 0 8px}
.ys-form{display:grid;gap:10px;max-width:520px;margin:8px 0}
.ys-form .row2{display:grid;grid-template-columns:minmax(0,1fr) 110px;gap:10px}
.ys-form label{display:grid;gap:4px}
.ys-cf{border:1px solid var(--bd2);border-radius:var(--r);background:var(--bg);padding:12px 14px;margin:0 0 12px;max-width:620px}
@media (max-width:719px){.ys-form .row2{grid-template-columns:minmax(0,1fr) 90px}}
.ys-sec .sr,.ys-page .sr,.ys-drawer .sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
