/* AYS Admin console. Dark by default, light via prefers-color-scheme or toggle. */
:root{
  color-scheme:dark;
  --bg:#0c0b10;
  --surface:#17161d;
  --surface-2:#1f1d27;
  --surface-3:#282631;
  --line:rgba(255,255,255,.09);
  --line-strong:rgba(255,255,255,.16);
  --ink:#f6f3f7;
  --ink-2:#c3bcc6;
  --muted:#958e9a;
  --accent:#ff5864;
  --accent-ink:#ffffff;
  --gradient:linear-gradient(120deg,#fd267a 0%,#ff5864 45%,#ff9a3c 100%);
  --gradient-soft:linear-gradient(120deg,rgba(253,38,122,.16),rgba(255,154,60,.14));
  --good:#3ccf7a; --good-bg:rgba(60,207,122,.13);
  --warn:#f5b642; --warn-bg:rgba(245,182,66,.14);
  --bad:#ff6b6b;  --bad-bg:rgba(255,107,107,.14);
  --info:#7fb2ff; --info-bg:rgba(127,178,255,.13);
  --neutral-bg:rgba(255,255,255,.07);
  --focus:#ffb37a;
  /* charts (validated steps for the dark surface) */
  --series-1:#ff5864;
  --spark:#6f6877;
  --grid:#2a2831;
  --axis:#3b3842;
  --c-jobs:#d95926; --c-pros:#3987e5; --c-cust:#199e70;
  --radius:16px; --radius-sm:10px;
  --shadow:0 1px 0 rgba(255,255,255,.03) inset, 0 8px 24px rgba(0,0,0,.28);
  --sidebar-w:252px;
  --z-map:1; --z-top:1500; --z-nav:1600; --z-scrim:1590; --z-sidebar:1700; --z-modal:2000; --z-toast:2100;
  font-size:16px;
}
@media (prefers-color-scheme: light){
  :root:not([data-theme="dark"]){
    color-scheme:light;
    --bg:#f6f3f5; --surface:#ffffff; --surface-2:#faf7f9; --surface-3:#f1ecef;
    --line:#ece5e8; --line-strong:#ddd3d8;
    --ink:#181117; --ink-2:#4f444d; --muted:#6f646d;
    --accent:#c9244b;
    --good:#0f7d3c; --good-bg:#e5f5eb; --warn:#9a5b00; --warn-bg:#fdf1dc; --bad:#c42b2b; --bad-bg:#fde8e8;
    --info:#2463b8; --info-bg:#e6effc; --neutral-bg:#f1ecef; --focus:#e0335a;
    --series-1:#e0335a; --spark:#b7adb5; --grid:#eee8eb; --axis:#d6cdd2;
    --c-jobs:#eb6834; --c-pros:#2a78d6; --c-cust:#159a6b;
    --shadow:0 1px 2px rgba(24,17,23,.05), 0 8px 24px rgba(24,17,23,.06);
  }
}
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#f6f3f5; --surface:#ffffff; --surface-2:#faf7f9; --surface-3:#f1ecef;
  --line:#ece5e8; --line-strong:#ddd3d8;
  --ink:#181117; --ink-2:#4f444d; --muted:#6f646d;
  --accent:#c9244b;
  --good:#0f7d3c; --good-bg:#e5f5eb; --warn:#9a5b00; --warn-bg:#fdf1dc; --bad:#c42b2b; --bad-bg:#fde8e8;
  --info:#2463b8; --info-bg:#e6effc; --neutral-bg:#f1ecef; --focus:#e0335a;
  --series-1:#e0335a; --spark:#b7adb5; --grid:#eee8eb; --axis:#d6cdd2;
  --c-jobs:#eb6834; --c-pros:#2a78d6; --c-cust:#159a6b;
  --shadow:0 1px 2px rgba(24,17,23,.05), 0 8px 24px rgba(24,17,23,.06);
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg);color:var(--ink);
  font-family:'Plus Jakarta Sans',system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  -webkit-font-smoothing:antialiased;line-height:1.45;min-height:100vh;
}
body.modal-open{overflow:hidden;}
a{color:inherit;}
a:not(.btn):not(.nav-link):not(.tab):not(.brand):not(.me-chip):not(.bottom-nav a){color:var(--accent);text-decoration:none;}
.bottom-nav a{text-decoration:none;}
a:not(.btn):hover{text-decoration:underline;}
h1,h2,h3,h4{margin:0 0 .35em;line-height:1.2;font-weight:800;letter-spacing:-.01em;}
h1{font-size:1.5rem;} h2{font-size:1.12rem;} h3{font-size:1rem;}
p{margin:0 0 .6em;}
img{max-width:100%;}
code,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em;}
button,input,select,textarea{font:inherit;color:inherit;}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:6px;}
.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;}
.skip-link{position:absolute;left:-9999px;top:8px;z-index:3000;background:var(--surface);padding:8px 12px;border-radius:8px;}
.skip-link:focus{left:8px;}
.muted{color:var(--muted);} .small{font-size:.84rem;} .tiny{font-size:.75rem;}
.grad-text{background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent;}
.row{display:flex;align-items:center;flex-wrap:wrap;} .gap{gap:10px;} .gap-sm{gap:6px;}
.spacer{flex:1;}
.stack>*+*{margin-top:12px;}
.ico{display:inline-block;width:1.1em;height:1.1em;vertical-align:-.18em;flex:none;}
.nowrap{white-space:nowrap;}
.tone-good{color:var(--good);} .tone-bad{color:var(--bad);} .tone-warn{color:var(--warn);}
[hidden]{display:none !important;}

/* ------------------------------------------------ buttons & fields */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  min-height:40px;padding:8px 16px;border-radius:999px;border:1px solid var(--line-strong);
  background:var(--surface-2);color:var(--ink);font-weight:700;font-size:.92rem;cursor:pointer;text-decoration:none;
  transition:background .15s, transform .05s;white-space:nowrap;
}
.btn:hover{background:var(--surface-3);text-decoration:none;}
.btn:active{transform:translateY(1px);}
.btn:disabled{opacity:.55;cursor:not-allowed;}
.btn-primary{background:var(--gradient);border-color:transparent;color:#fff;}
.btn-primary:hover{background:var(--gradient);filter:brightness(1.06);}
.btn-danger{background:#c42b2b;border-color:transparent;color:#fff;}
.btn-danger:hover{background:#c42b2b;filter:brightness(1.08);}
.btn-ghost{background:transparent;}
.btn-sm{min-height:34px;padding:5px 12px;font-size:.84rem;}
.btn-block{width:100%;}
.btn.is-busy{position:relative;color:transparent !important;}
.btn.is-busy::after{content:"";position:absolute;width:16px;height:16px;border:2px solid currentColor;border-color:var(--ink) transparent var(--ink) transparent;border-radius:50%;animation:spin .8s linear infinite;}
.btn-primary.is-busy::after,.btn-danger.is-busy::after{border-color:#fff transparent #fff transparent;}
@keyframes spin{to{transform:rotate(360deg)}}
.icon-btn{background:transparent;border:0;color:var(--ink);cursor:pointer;min-width:40px;min-height:40px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;}
.icon-btn:hover{background:var(--neutral-bg);}
.linklike{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;font-weight:600;}
.field{display:flex;flex-direction:column;gap:5px;font-size:.88rem;min-width:0;}
.field>span{font-weight:700;color:var(--ink-2);}
.field.inline{flex-direction:row;align-items:center;gap:6px;}
input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea{
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:10px;
  padding:9px 12px;min-height:40px;font-size:16px;width:100%;color:var(--ink);
}
textarea{resize:vertical;min-height:80px;}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:30px;}
input:focus,select:focus,textarea:focus{outline:2px solid var(--focus);outline-offset:0;border-color:transparent;}
.check{display:inline-flex;align-items:center;gap:8px;font-size:.9rem;cursor:pointer;min-height:32px;}
.check input{width:18px;height:18px;accent-color:var(--accent);}
.form-error,.field-error{color:var(--bad);font-size:.88rem;font-weight:600;margin:0;}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;}
.form-grid .span-all{grid-column:1/-1;}
.notice{background:var(--info-bg);color:var(--ink);border-radius:12px;padding:10px 12px;font-size:.9rem;display:flex;gap:8px;align-items:flex-start;}
.notice.warn{background:var(--warn-bg);} .notice.bad{background:var(--bad-bg);} .notice.good{background:var(--good-bg);}
.notice .ico{margin-top:2px;}

/* ------------------------------------------------ auth */
.auth-root{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;
  background:radial-gradient(1000px 500px at 50% -10%,rgba(253,38,122,.18),transparent 60%),var(--bg);}
.auth-card{width:100%;max-width:420px;padding:28px 24px;}
.auth-card h1{font-size:1.35rem;margin-top:6px;}
.auth-brand{display:flex;gap:12px;align-items:center;margin-bottom:18px;}
.auth-brand strong{display:block;font-size:1.1rem;}
.auth-brand span{display:block;}
.auth-links{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;margin-top:16px;font-size:.9rem;}
.auth-foot{margin-top:14px;}
.code-input{font-size:1.6rem !important;letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums;}
.qr{display:flex;justify-content:center;margin:12px 0;}
.qr img{background:#fff;padding:10px;border-radius:12px;}
.secret-row{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap;margin-bottom:12px;}
.secret{background:var(--surface-2);padding:8px 10px;border-radius:8px;word-break:break-all;user-select:all;}
.steps{padding-left:20px;margin:0 0 8px;font-size:.92rem;color:var(--ink-2);}
.pw-hint{margin:-4px 0 0;color:var(--muted);}
.codes{columns:2;padding-left:22px;font-size:1rem;margin:12px 0;}
.codes li{margin:4px 0;}

/* ------------------------------------------------ shell */
.app-root{min-height:100vh;}
.sidebar{
  position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);background:var(--surface);
  border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:var(--z-sidebar);
}
.sidebar-head{display:flex;align-items:center;justify-content:space-between;padding:16px 14px 8px;}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;}
.brand span{display:flex;flex-direction:column;line-height:1.1;}
.brand small{color:var(--muted);font-weight:700;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;}
.nav{flex:1;overflow-y:auto;padding:4px 10px 12px;}
.nav-group{margin-top:10px;}
.nav-group-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:800;margin:10px 10px 4px;}
.nav-link{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;color:var(--ink-2);font-weight:600;font-size:.93rem;text-decoration:none;min-height:40px;}
.nav-link:hover{background:var(--neutral-bg);color:var(--ink);text-decoration:none;}
.nav-link.active{background:var(--gradient-soft);color:var(--ink);box-shadow:inset 3px 0 0 var(--accent);}
.nav-link .ico{width:1.15em;height:1.15em;}
.nav-badge{margin-left:auto;background:var(--accent);color:#fff;border-radius:999px;font-size:.7rem;font-weight:800;padding:1px 7px;min-width:20px;text-align:center;}
.sidebar-foot{border-top:1px solid var(--line);padding:10px 12px;display:flex;align-items:center;gap:6px;}
.me-chip{display:flex;align-items:center;gap:8px;flex:1;min-width:0;text-decoration:none;}
.me-text{display:flex;flex-direction:column;min-width:0;}
.me-text strong{font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--gradient);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:.8rem;flex:none;}
.main-col{margin-left:var(--sidebar-w);min-height:100vh;}
.topbar-m{display:none;}
.view{max-width:1280px;margin:0 auto;padding:24px 28px 48px;outline:none;transition:opacity .15s;}
.view.refreshing{opacity:.55;pointer-events:none;}
.bottom-nav{display:none;}
.scrim{display:none;}
.only-mobile{display:none;}

@media (max-width: 900px){
  .sidebar{transform:translateX(-102%);transition:transform .2s ease;width:min(86vw,300px);box-shadow:0 0 40px rgba(0,0,0,.4);}
  .nav-open .sidebar{transform:none;}
  .scrim{display:block;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:var(--z-scrim);}
  .only-mobile{display:inline-flex;}
  .main-col{margin-left:0;}
  .topbar-m{display:flex;align-items:center;gap:8px;position:sticky;top:0;z-index:var(--z-top);
    background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);padding:6px 8px;padding-top:max(6px,env(safe-area-inset-top));}
  .topbar-m .brand{flex:1;}
  .view{padding:16px 16px calc(92px + env(safe-area-inset-bottom));}
  .bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:var(--z-nav);background:var(--surface);
    border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom));}
  .bottom-nav a,.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;
    font-size:.68rem;font-weight:700;color:var(--muted);text-decoration:none;background:none;border:0;cursor:pointer;min-height:52px;position:relative;border-radius:10px;}
  .bottom-nav .ico{width:22px;height:22px;}
  .bottom-nav a.active{color:var(--accent);}
  .bottom-nav .nav-badge{position:absolute;top:2px;left:calc(50% + 6px);margin:0;}
  h1{font-size:1.3rem;}
}

/* ------------------------------------------------ page chrome */
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;}
.page-head h1{margin:0;}
.page-head p{margin:2px 0 0;}
.page-actions{display:flex;gap:8px;flex-wrap:wrap;}
.back-link{display:inline-flex;align-items:center;gap:4px;font-weight:700;font-size:.9rem;margin-bottom:8px;color:var(--muted) !important;}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);}
.panel{padding:16px 18px;margin-bottom:16px;min-width:0;}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.panel-head h2{margin:0;}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;}
.grid-2>.panel,.grid-3>.panel{margin-bottom:0;}
.section-gap{margin-top:16px;}
@media (max-width: 1100px){ .grid-3{grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width: 760px){ .grid-2,.grid-3{grid-template-columns:minmax(0,1fr);} .panel{padding:14px;} }

/* tabs */
.tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--line);margin-bottom:16px;}
.tabs::-webkit-scrollbar{display:none;}
.tab{padding:10px 14px;font-weight:700;font-size:.9rem;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap;display:inline-flex;gap:6px;align-items:center;}
.tab:hover{color:var(--ink);text-decoration:none;}
.tab.active{color:var(--ink);border-bottom-color:var(--accent);}
.tab-count{background:var(--neutral-bg);border-radius:999px;padding:0 7px;font-size:.75rem;}
.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px;overflow-x:auto;max-width:100%;scrollbar-width:none;}
.seg::-webkit-scrollbar{display:none;}
.seg-btn{border:0;background:transparent;padding:6px 12px;border-radius:999px;font-weight:700;font-size:.84rem;color:var(--muted);cursor:pointer;white-space:nowrap;min-height:34px;}
.seg-btn.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.2);}

/* filter bar */
.filter-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:16px;}
.filter-selects{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.filter-selects select{min-width:140px;width:auto;}
.custom-range{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.custom-range input{width:auto;}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end;margin-bottom:12px;}
.toolbar .field{min-width:130px;flex:0 1 auto;}
.toolbar .field.grow{flex:1 1 200px;}
.toolbar select,.toolbar input{width:100%;}
.more-filters summary{cursor:pointer;font-weight:700;font-size:.9rem;color:var(--muted);padding:6px 0;}
@media (max-width: 760px){
  .seg{flex-wrap:wrap;border-radius:14px;}
  .filter-bar{gap:8px;}
  .filter-bar .seg{width:100%;}
  .filter-selects{width:100%;display:grid;grid-template-columns:1fr 1fr;}
  .filter-selects .field{width:100%;}
  .filter-selects select{min-width:0;width:100%;}
  .toolbar .field{flex:1 1 calc(50% - 8px);min-width:0;}
}

/* ------------------------------------------------ KPIs */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin-bottom:16px;}
.kpi{padding:14px 16px;display:flex;flex-direction:column;gap:4px;min-width:0;}
.kpi-label{font-size:.82rem;font-weight:700;color:var(--ink-2);}
.kpi-value{font-size:1.6rem;font-weight:800;letter-spacing:-.02em;line-height:1.1;}
.kpi-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:6px;min-height:28px;}
.delta{display:inline-flex;align-items:center;gap:2px;font-size:.8rem;font-weight:700;border-radius:999px;padding:1px 7px 1px 4px;}
.delta.good{color:var(--good);background:var(--good-bg);}
.delta.bad{color:var(--bad);background:var(--bad-bg);}
.delta.flat{color:var(--muted);background:var(--neutral-bg);padding-left:7px;}
.delta .ico{width:.95em;height:.95em;}
.kpi-prev{font-size:.74rem;color:var(--muted);}
@media (max-width: 480px){
  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
  .kpi{padding:12px;}
  .kpi-value{font-size:1.3rem;}
  .kpi .spark{display:none;}
}
.stat-row{display:flex;flex-wrap:wrap;gap:8px 22px;}
.stat{display:flex;flex-direction:column;}
.stat strong{font-size:1.2rem;}
.stat span{font-size:.8rem;color:var(--muted);}

/* action needed */
.queue-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px;}
.queue-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line);text-decoration:none !important;color:var(--ink) !important;min-height:52px;}
.queue-item:hover{border-color:var(--line-strong);}
.queue-item .q-num{font-size:1.25rem;font-weight:800;min-width:32px;text-align:center;}
.queue-item.hot{border-color:color-mix(in srgb,var(--bad) 45%,transparent);background:var(--bad-bg);}
.queue-item.hot .q-num{color:var(--bad);}
.queue-item .ico:last-child{margin-left:auto;color:var(--muted);}

/* ------------------------------------------------ charts */
.chart{position:relative;width:100%;min-height:120px;}
.chart-svg{display:block;overflow:visible;touch-action:pan-y;}
.chart-svg .grid{stroke:var(--grid);stroke-width:1;}
.chart-svg .axis{stroke:var(--axis);stroke-width:1;}
.chart-svg .tick{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums;}
.chart-svg .line{fill:none;stroke:var(--series-1);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;}
.chart-svg .area{fill:var(--series-1);opacity:.1;}
.chart-svg .dot,.chart-svg .hover-dot{fill:var(--series-1);stroke:var(--surface);stroke-width:2;}
.chart-svg .xhair{stroke:var(--muted);stroke-width:1;}
.chart-tip{position:absolute;pointer-events:none;background:var(--surface-3);border:1px solid var(--line-strong);border-radius:10px;padding:6px 10px;font-size:.8rem;box-shadow:var(--shadow);white-space:nowrap;display:flex;flex-direction:column;z-index:5;}
.chart-tip strong{font-size:.95rem;}
.chart-tip span{color:var(--muted);}
.spark{display:block;}
.bars{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;}
.bar-row{display:grid;grid-template-columns:minmax(90px,38%) 1fr;gap:10px;align-items:center;font-size:.86rem;border-radius:6px;}
.bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2);}
.bar-track{position:relative;height:18px;display:flex;align-items:center;gap:8px;}
.bar-fill{height:14px;background:var(--series-1);border-radius:0 4px 4px 0;min-width:0;flex:none;max-width:calc(100% - 64px);}
.bar-row:hover .bar-fill,.bar-row:focus .bar-fill,.funnel-step:hover .bar-fill{filter:brightness(1.15);}
.bar-val{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.84rem;}
.funnel{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;}
.funnel-top{display:flex;justify-content:space-between;gap:8px;font-size:.86rem;margin-bottom:4px;flex-wrap:wrap;}
.funnel-name{font-weight:600;color:var(--ink-2);}
.funnel-track .bar-fill{max-width:100%;height:16px;}
.meter{height:12px;border-radius:999px;background:color-mix(in srgb,var(--info) 18%,transparent);overflow:hidden;margin:6px 0;}
.meter-fill{height:100%;background:var(--info);border-radius:999px;}
.meter-warn .meter-fill{background:var(--warn);} .meter-bad .meter-fill{background:var(--bad);}
.table-view{margin-top:10px;font-size:.86rem;}
.table-view summary{cursor:pointer;color:var(--muted);font-weight:700;}
.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:.84rem;color:var(--ink-2);}
.legend-item{display:inline-flex;align-items:center;gap:6px;}
.legend-swatch{width:12px;height:12px;border-radius:50%;display:inline-block;border:2px solid var(--surface);box-shadow:0 0 0 1px var(--line-strong);}

/* ------------------------------------------------ tables */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:12px;border:1px solid var(--line);}
.tbl{width:100%;border-collapse:collapse;font-size:.88rem;}
.tbl th{text-align:left;font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800;padding:10px 12px;background:var(--surface-2);border-bottom:1px solid var(--line);white-space:nowrap;}
.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top;}
.tbl tr:last-child td{border-bottom:0;}
.tbl tbody tr[data-href]{cursor:pointer;}
.tbl tbody tr[data-href]:hover{background:var(--neutral-bg);}
.tbl .wide{min-width:220px;}
.tbl .num,.tbl td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
.tbl th.num{text-align:right;}
.tbl-compact td,.tbl-compact th{padding:6px 10px;}
.tbl tr.hot td{background:var(--bad-bg);}
.tbl tr.warm td{background:var(--warn-bg);}
.td-primary strong{display:block;}
.cell-sub{display:block;font-size:.78rem;color:var(--muted);}
@media (max-width: 760px){
  .cards-on-mobile.table-wrap{border:0;overflow:visible;}
  .cards-on-mobile .tbl thead{display:none;}
  .cards-on-mobile .tbl,.cards-on-mobile .tbl tbody,.cards-on-mobile .tbl tr,.cards-on-mobile .tbl td{display:block;width:100%;}
  .cards-on-mobile .tbl tr{background:var(--surface);border:1px solid var(--line);border-radius:14px;margin-bottom:10px;padding:8px 12px;}
  .cards-on-mobile .tbl td{border:0;padding:4px 0;display:flex;justify-content:space-between;gap:12px;text-align:right;}
  .cards-on-mobile .tbl td::before{content:attr(data-label);font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:left;flex:none;padding-top:2px;}
  .cards-on-mobile .tbl td.td-primary{display:block;text-align:left;font-size:1rem;padding-bottom:6px;border-bottom:1px solid var(--line);margin-bottom:4px;}
  .cards-on-mobile .tbl td.td-primary::before{display:none;}
  .cards-on-mobile .tbl td .td-in{min-width:0;overflow-wrap:anywhere;}
  .cards-on-mobile .tbl td.td-primary .td-in{text-align:left;}
  .cards-on-mobile .tbl td:has(.td-in:empty){display:none;}
  .cards-on-mobile .tbl tr.hot{border-color:color-mix(in srgb,var(--bad) 50%,transparent);}
  .cards-on-mobile .tbl tr.hot td{background:transparent;}
}
.pager{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap;}
.pager-info{margin-top:10px;}

/* badges */
.badge{display:inline-flex;align-items:center;gap:4px;font-size:.74rem;font-weight:800;border-radius:999px;padding:2px 9px;white-space:nowrap;line-height:1.5;}
.badge-good{background:var(--good-bg);color:var(--good);}
.badge-warn{background:var(--warn-bg);color:var(--warn);}
.badge-bad{background:var(--bad-bg);color:var(--bad);}
.badge-info{background:var(--info-bg);color:var(--info);}
.badge-neutral{background:var(--neutral-bg);color:var(--ink-2);}
.badge.role{background:var(--neutral-bg);color:var(--ink-2);}
.badge.role-owner{background:var(--gradient);color:#fff;}
.badge.role-admin{background:var(--bad-bg);color:var(--bad);}
.badge.role-manager{background:var(--warn-bg);color:var(--warn);}
.badge.role-support{background:var(--info-bg);color:var(--info);}
.badge.role-verifier{background:var(--good-bg);color:var(--good);}
.sev-high{background:var(--bad-bg);color:var(--bad);} .sev-medium{background:var(--warn-bg);color:var(--warn);} .sev-low{background:var(--info-bg);color:var(--info);}
.chip{display:inline-flex;align-items:center;gap:4px;background:var(--neutral-bg);border-radius:999px;padding:2px 9px;font-size:.78rem;font-weight:600;margin:2px 4px 2px 0;}
.chip button{background:none;border:0;padding:0;cursor:pointer;color:var(--muted);display:inline-flex;}

/* key-value */
.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px 18px;margin:0;}
.kv dt{font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800;}
.kv dd{margin:2px 0 0;font-weight:600;word-break:break-word;}

/* ------------------------------------------------ states */
.empty{text-align:center;padding:32px 16px;color:var(--ink-2);}
.empty>.ico{width:32px;height:32px;color:var(--muted);margin-bottom:6px;}
.empty-title{font-weight:800;margin-bottom:4px;color:var(--ink);}
.error-state>.ico{color:var(--bad);}
.skeleton-block{display:flex;flex-direction:column;gap:10px;padding:8px 0;}
.sk-line{height:14px;border-radius:8px;background:linear-gradient(90deg,var(--surface-2) 0%,var(--surface-3) 50%,var(--surface-2) 100%);background-size:200% 100%;animation:shimmer 1.2s infinite;}
.sk-line.w30{width:30%;} .sk-line.w40{width:40%;} .sk-line.w60{width:60%;} .sk-line.tall{height:26px;}
.card.sk{min-height:112px;}
@keyframes shimmer{to{background-position:-200% 0}}
@media (prefers-reduced-motion: reduce){ .sk-line{animation:none;} *{transition:none !important;} }

/* ------------------------------------------------ modals & toasts */
.modal-wrap{position:fixed;inset:0;z-index:var(--z-modal);background:rgba(8,6,12,.62);display:flex;align-items:center;justify-content:center;padding:16px;}
.modal{background:var(--surface);border:1px solid var(--line);border-radius:18px;width:100%;max-width:520px;max-height:calc(100vh - 32px);display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.45);}
.modal-wide{max-width:860px;}
.modal-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:16px 18px 6px;}
.modal-head h2{margin:0;}
.modal-body{padding:6px 18px 12px;overflow-y:auto;}
.modal-body .field{margin-top:10px;}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px 16px;border-top:1px solid var(--line);flex-wrap:wrap;}
@media (max-width: 600px){
  .modal-wrap{align-items:flex-end;padding:0;}
  .modal{border-radius:18px 18px 0 0;max-height:92vh;padding-bottom:env(safe-area-inset-bottom);}
  .modal-actions .btn{flex:1;}
}
.lightbox{text-align:center;}
.lightbox img{max-height:70vh;border-radius:10px;}
.toast-root{position:fixed;right:16px;bottom:16px;z-index:var(--z-toast);display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 32px));}
.toast{display:flex;gap:8px;align-items:flex-start;background:var(--surface-3);color:var(--ink);border:1px solid var(--line-strong);border-left:4px solid var(--info);border-radius:12px;padding:10px 10px 10px 12px;box-shadow:var(--shadow);font-size:.9rem;transition:opacity .3s,transform .3s;}
.toast span{flex:1;}
.toast-success{border-left-color:var(--good);} .toast-error{border-left-color:var(--bad);}
.toast-error>.ico{color:var(--bad);} .toast-success>.ico{color:var(--good);}
.toast.out{opacity:0;transform:translateY(8px);}
.toast-x{background:none;border:0;color:var(--muted);cursor:pointer;padding:2px;}
@media (max-width: 900px){ .toast-root{left:16px;right:16px;bottom:calc(76px + env(safe-area-inset-bottom));max-width:none;} }

/* ------------------------------------------------ support inbox */
.inbox{display:grid;grid-template-columns:340px minmax(0,1fr);gap:0;height:calc(100vh - 190px);min-height:500px;overflow:hidden;}
.inbox-list{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;}
.inbox-filters{padding:10px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:8px;}
.inbox-filters .row select{flex:1;min-width:0;}
.conv-list{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1;}
.conv-item{display:block;padding:12px 14px;border-bottom:1px solid var(--line);text-decoration:none !important;color:var(--ink) !important;position:relative;}
.conv-item:hover{background:var(--neutral-bg);}
.conv-item.active{background:var(--gradient-soft);}
.conv-item.unread .conv-who::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:6px;vertical-align:1px;}
.conv-top{display:flex;justify-content:space-between;gap:8px;align-items:baseline;}
.conv-who{font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.conv-snip{font-size:.84rem;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:2px 0 4px;}
.conv-meta{display:flex;gap:4px;flex-wrap:wrap;align-items:center;}
.wait{font-size:.74rem;font-weight:800;border-radius:999px;padding:1px 8px;background:var(--warn-bg);color:var(--warn);}
.wait.long{background:var(--bad);color:#fff;}
.conv-pane{display:grid;grid-template-columns:minmax(0,1fr) 300px;min-height:0;}
.conv-main{display:flex;flex-direction:column;min-height:0;}
.conv-head{padding:10px 14px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:8px;}
.conv-controls{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.conv-controls select{width:auto;min-height:34px;padding:4px 28px 4px 10px;font-size:.84rem;}
.msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px;background:var(--bg);}
.msg{max-width:78%;padding:9px 12px;border-radius:14px;font-size:.92rem;word-wrap:break-word;overflow-wrap:anywhere;}
.msg-body{white-space:pre-wrap;display:block;}
.msg-att{margin-top:6px;}
.conv-title{flex:1;min-width:0;display:flex;flex-direction:column;}
.conv-title .small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.tab-count:empty{display:none;}
.inbox-filters .tabs{flex-wrap:wrap;margin-bottom:0;}
.inbox-filters .tab{padding:8px 10px;}
.msg-meta{font-size:.72rem;color:var(--muted);margin-top:4px;display:block;}
.msg-user{align-self:flex-start;background:var(--surface-2);border:1px solid var(--line);border-bottom-left-radius:4px;}
.msg-staff{align-self:flex-end;background:var(--gradient);color:#fff;border-bottom-right-radius:4px;}
.msg-staff .msg-meta{color:rgba(255,255,255,.8);}
.msg-internal{align-self:flex-end;background:var(--warn-bg);color:var(--ink);border:1px dashed var(--warn);border-bottom-right-radius:4px;}
.msg-internal .msg-meta{color:var(--warn);}
.msg-system{align-self:center;background:transparent;color:var(--muted);font-size:.8rem;text-align:center;border:1px dashed var(--line-strong);max-width:92%;}
.msg-label{font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;display:block;margin-bottom:2px;}
.msg img{max-width:220px;border-radius:8px;display:block;margin-top:6px;cursor:zoom-in;}
.composer{border-top:1px solid var(--line);padding:10px 12px;display:flex;flex-direction:column;gap:8px;background:var(--surface);}
.composer textarea{min-height:64px;max-height:200px;}
.composer.internal textarea{background:var(--warn-bg);border-color:var(--warn);}
.composer-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.conv-side{border-left:1px solid var(--line);overflow-y:auto;padding:14px;font-size:.88rem;}
.conv-side h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-top:14px;}
.side-list{list-style:none;margin:0;padding:0;}
.side-list li{padding:6px 0;border-bottom:1px solid var(--line);}
.qr-picker{max-height:260px;overflow-y:auto;border:1px solid var(--line);border-radius:10px;}
.qr-picker button{display:block;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line);padding:8px 10px;cursor:pointer;}
.qr-picker button:hover{background:var(--neutral-bg);}
.mobile-back{display:none;}
@media (max-width: 1439px){ .conv-pane{grid-template-columns:minmax(0,1fr);position:relative;} .conv-side{display:none;} .conv-side.show{display:block;position:absolute;top:0;right:0;bottom:0;width:min(320px,100%);background:var(--surface);box-shadow:-8px 0 24px rgba(0,0,0,.3);z-index:5;} }
@media (min-width: 1440px){ #infoToggle,.side-close{display:none;} }
.side-close{float:right;}
@media (max-width: 900px){
  .inbox{grid-template-columns:minmax(0,1fr);height:auto;min-height:0;overflow:visible;border:0;background:transparent;box-shadow:none;}
  .inbox.has-conv .inbox-list{display:none;}
  .inbox:not(.has-conv) .conv-pane{display:none;}
  .inbox-list{border-right:0;}
  .conv-list{overflow:visible;}
  .conv-item{background:var(--surface);border:1px solid var(--line);border-radius:14px;margin-bottom:8px;}
  .inbox-filters{border:0;padding:0 0 10px;}
  .conv-pane{position:fixed;inset:0;z-index:1650;background:var(--surface);}
  .conv-main{height:100vh;height:100dvh;}
  .mobile-back{display:inline-flex;}
  .msg{max-width:88%;}
  .composer{padding-bottom:calc(10px + env(safe-area-inset-bottom));}
}

/* ------------------------------------------------ map */
.map-box{height:calc(100vh - 260px);min-height:360px;border-radius:14px;overflow:hidden;border:1px solid var(--line);z-index:var(--z-map);position:relative;}
@media (max-width: 760px){ .map-box{height:62vh;} }
.cluster-icon{display:flex;align-items:center;justify-content:center;border-radius:50%;color:#fff;font-weight:800;font-size:12px;border:2px solid rgba(255,255,255,.9);box-shadow:0 1px 4px rgba(0,0,0,.35);}
.leaflet-popup-content{font-family:inherit;}
.leaflet-container{background:var(--surface-2);font-family:inherit;}
.map-legend{display:flex;gap:10px;flex-wrap:wrap;align-items:center;}
.layer-toggle{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-strong);border-radius:999px;padding:5px 12px;font-weight:700;font-size:.86rem;cursor:pointer;min-height:36px;background:var(--surface-2);}
.layer-toggle input{accent-color:var(--accent);}
.shape{width:12px;height:12px;display:inline-block;background:currentColor;}
.shape.circle{border-radius:50%;} .shape.square{border-radius:2px;} .shape.diamond{transform:rotate(45deg) scale(.85);}

/* misc components */
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;}
.photo-grid figure{margin:0;position:relative;}
.photo-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;cursor:zoom-in;background:var(--surface-2);}
.photo-grid figcaption{display:flex;justify-content:flex-end;margin-top:4px;}
.timeline{list-style:none;margin:0;padding:0 0 0 14px;border-left:2px solid var(--line-strong);}
.timeline li{position:relative;padding:0 0 12px 12px;font-size:.88rem;}
.timeline li::before{content:"";position:absolute;left:-21px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--series-1);border:2px solid var(--surface);}
.chat-log{display:flex;flex-direction:column;gap:6px;max-height:360px;overflow-y:auto;padding:10px;background:var(--bg);border-radius:10px;}
.chat-log .msg{max-width:85%;}
.phone-preview{max-width:360px;background:#1b1a20;border-radius:26px;padding:16px;border:6px solid #2c2a33;color:#fff;}
.notif{background:rgba(255,255,255,.12);backdrop-filter:blur(6px);border-radius:16px;padding:10px 12px;display:flex;gap:10px;}
.notif img{width:36px;height:36px;border-radius:9px;background:#fff;padding:3px;}
.notif strong{display:block;font-size:.9rem;}
.notif p{margin:0;font-size:.84rem;opacity:.9;}
.notif .notif-app{font-size:.7rem;opacity:.7;text-transform:uppercase;letter-spacing:.05em;}
.big-warn{border:2px solid var(--bad);background:var(--bad-bg);border-radius:14px;padding:12px 14px;}
.day-toggles{display:flex;gap:6px;flex-wrap:wrap;}
.day-toggles label{display:inline-flex;}
.day-toggles input{position:absolute;opacity:0;pointer-events:none;}
.day-toggles span{display:inline-flex;align-items:center;justify-content:center;min-width:48px;min-height:40px;border-radius:10px;border:1px solid var(--line-strong);font-weight:700;cursor:pointer;background:var(--surface-2);}
.day-toggles input:checked+span{background:var(--gradient);color:#fff;border-color:transparent;}
.day-toggles input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px;}
.code-box{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:1.35rem;font-weight:800;letter-spacing:.06em;background:var(--surface-2);border:1px dashed var(--line-strong);border-radius:12px;padding:12px;text-align:center;user-select:all;word-break:break-all;}
.link-out{word-break:break-all;background:var(--surface-2);padding:8px 10px;border-radius:8px;font-size:.86rem;}
.gap-hint{font-weight:700;}
.json-box{max-height:320px;overflow:auto;background:var(--surface-2);padding:10px;border-radius:10px;font-size:.78rem;white-space:pre-wrap;word-break:break-word;}
