/*
 * SmartBTN cabinet skin «Pulse» — tokens + components (docs/skins/CONTRACT.md).
 * Plain CSS, custom properties, no framework. Tokens and base rules live
 * under .pulse (the <html> class set by skins/pulse/layouts/app.blade.php);
 * components use the p- prefix, which no classic stylesheet uses, so a page
 * that mounts a legacy bundle with its own CSS keeps both working.
 *
 * Theme switches: <html data-theme="light|dark|system" data-density="comfortable|compact">.
 * Accent comes from the skin: --p-accent / --p-accent-hover / --p-accent-soft inline on <html>.
 */

/* ---------- Tokens ---------- */
.pulse {
  --p-font: Geist, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --p-mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  --p-bg: #FAFAF9;
  --p-surface: #FFFFFF;
  --p-surface-2: #FAFAF9;
  --p-sidebar: #F4F4F2;
  --p-border: #E6E4E0;
  --p-divider: #EFEDEA;
  --p-seg: #F1F0EE;
  --p-hover: #EFEDEA;
  --p-ink: #111111;
  --p-text: #3F3C37;
  --p-muted: #5B5853;
  --p-faint: #6B6761;
  --p-chip-neutral: #E9E7E3;

  --p-accent: #2F54EB;
  --p-accent-hover: #1F3FC2;
  /* light shades come from the skin accent (inline --p-acc-*), dark theme overrides them */
  --p-accent-soft: var(--p-acc-soft, #EEF2FF);
  --p-accent-soft-2: var(--p-acc-soft-2, #E4EAFF);
  --p-accent-ink: var(--p-acc-ink, #1E2F7A);
  --p-on-accent: #FFFFFF;

  --p-primary: #111111;
  --p-primary-hover: #2A2A2A;
  --p-on-primary: #FFFFFF;

  --p-success: #157F3D; --p-success-soft: #DDF3E5; --p-success-ink: #0F5F2E; --p-success-dot: #1F9D55;
  --p-warning: #B45309; --p-warning-soft: #FFF7EB; --p-warning-border: #F5DDB8; --p-warning-ink: #6B3A06;
  --p-danger: #C0262D;  --p-danger-soft: #FDECEC;  --p-danger-ink: #8E1B21;
  --p-info: #2F54EB;    --p-info-soft: #EEF2FF;    --p-info-ink: #1E2F7A;
  --p-ai: #6D3FD8;      --p-ai-soft: #F1ECFE;      --p-ai-ink: #5A2FC0;

  --p-radius-sm: 6px;
  --p-radius: 8px;
  --p-radius-md: 10px;
  --p-radius-lg: 12px;
  --p-radius-xl: 16px;

  --p-shadow-sm: 0 1px 2px rgba(17, 17, 17, .06);
  --p-shadow: 0 1px 3px rgba(17, 17, 17, .08), 0 1px 2px rgba(17, 17, 17, .04);
  --p-shadow-lg: 0 24px 64px rgba(17, 17, 17, .24), 0 2px 6px rgba(17, 17, 17, .08);
  --p-overlay: rgba(17, 17, 17, .35);

  --p-sidebar-w: 264px;
  --p-sidebar-w-collapsed: 68px;
  --p-content-max: 1180px;

  /* density */
  --p-pad-x: 28px;
  --p-pad-y: 24px;
  --p-gap: 20px;
  --p-card-pad: 16px;
  --p-row-pad: 12px;
  --p-ctl-h: 36px;
  --p-fs: 14px;

  color-scheme: light;
}

.pulse[data-density="compact"] {
  --p-pad-x: 20px;
  --p-pad-y: 16px;
  --p-gap: 14px;
  --p-card-pad: 12px;
  --p-row-pad: 8px;
  --p-ctl-h: 32px;
  --p-fs: 13px;
}

/* Dark: explicit, or "system" following the OS. */
.pulse[data-theme="dark"] {
  --p-bg: #0F0F11;
  --p-surface: #18181B;
  --p-surface-2: #141417;
  --p-sidebar: #131316;
  --p-border: #2A2A30;
  --p-divider: #222227;
  --p-seg: #222227;
  --p-hover: #222227;
  --p-ink: #F4F4F5;
  --p-text: #D4D4D8;
  --p-muted: #A1A1AA;
  --p-faint: #A1A1AA;
  --p-chip-neutral: #2A2A30;
  --p-primary: #F4F4F5;
  --p-primary-hover: #FFFFFF;
  --p-on-primary: #111111;
  --p-accent-soft: rgba(99, 132, 255, .16);
  --p-accent-soft-2: rgba(99, 132, 255, .24);
  --p-accent-ink: #C7D2FE;
  --p-success-soft: rgba(34, 197, 94, .14); --p-success-ink: #86EFAC; --p-success: #4ADE80;
  --p-warning-soft: rgba(245, 158, 11, .12); --p-warning-border: rgba(245, 158, 11, .32); --p-warning-ink: #FCD34D; --p-warning: #FBBF24;
  --p-danger-soft: rgba(239, 68, 68, .14); --p-danger-ink: #FCA5A5; --p-danger: #F87171;
  --p-info-soft: rgba(99, 132, 255, .16); --p-info-ink: #C7D2FE;
  --p-ai-soft: rgba(139, 92, 246, .16); --p-ai-ink: #C4B5FD; --p-ai: #A78BFA;
  --p-shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);
  --p-shadow: 0 1px 3px rgba(0, 0, 0, .5);
  --p-shadow-lg: 0 24px 64px rgba(0, 0, 0, .6);
  --p-overlay: rgba(0, 0, 0, .55);
  color-scheme: dark;
}
@media (prefers-color-scheme: dark) {
  .pulse[data-theme="system"] {
    --p-bg: #0F0F11;
    --p-surface: #18181B;
    --p-surface-2: #141417;
    --p-sidebar: #131316;
    --p-border: #2A2A30;
    --p-divider: #222227;
    --p-seg: #222227;
    --p-hover: #222227;
    --p-ink: #F4F4F5;
    --p-text: #D4D4D8;
    --p-muted: #A1A1AA;
    --p-faint: #A1A1AA;
    --p-chip-neutral: #2A2A30;
    --p-primary: #F4F4F5;
    --p-primary-hover: #FFFFFF;
    --p-on-primary: #111111;
    --p-accent-soft: rgba(99, 132, 255, .16);
    --p-accent-soft-2: rgba(99, 132, 255, .24);
    --p-accent-ink: #C7D2FE;
    --p-success-soft: rgba(34, 197, 94, .14); --p-success-ink: #86EFAC; --p-success: #4ADE80;
    --p-warning-soft: rgba(245, 158, 11, .12); --p-warning-border: rgba(245, 158, 11, .32); --p-warning-ink: #FCD34D; --p-warning: #FBBF24;
    --p-danger-soft: rgba(239, 68, 68, .14); --p-danger-ink: #FCA5A5; --p-danger: #F87171;
    --p-info-soft: rgba(99, 132, 255, .16); --p-info-ink: #C7D2FE;
    --p-ai-soft: rgba(139, 92, 246, .16); --p-ai-ink: #C4B5FD; --p-ai: #A78BFA;
    --p-shadow-lg: 0 24px 64px rgba(0, 0, 0, .6);
    --p-overlay: rgba(0, 0, 0, .55);
    color-scheme: dark;
  }
}

/* ---------- Base ---------- */
html.pulse { -webkit-text-size-adjust: 100%; scroll-padding-top: 76px; }
.pulse body {
  margin: 0;
  background: var(--p-bg);
  color: var(--p-ink);
  font-family: var(--p-font);
  font-size: var(--p-fs);
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}
.pulse *, .pulse *::before, .pulse *::after { box-sizing: border-box; }
.pulse a { color: var(--p-accent); text-decoration: none; }
.pulse a:hover { color: var(--p-accent-hover); }
.pulse :focus-visible { outline: 2px solid var(--p-accent); outline-offset: 2px; border-radius: 4px; }
.pulse button { font: inherit; }
.pulse .p-mono, .pulse code, .pulse kbd { font-family: var(--p-mono); }
.pulse .p-sr { position: absolute !important; left: 0; top: 0; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.pulse .p-muted { color: var(--p-muted); }
.pulse .p-faint { color: var(--p-faint); }
.pulse .p-ink { color: var(--p-ink); }
.pulse [hidden] { display: none !important; }

.p-h1 { margin: 0; font-size: 26px; font-weight: 600; letter-spacing: -0.01em; color: var(--p-ink); }
.p-h2 { margin: 0; font-size: 15px; font-weight: 600; color: var(--p-ink); }
.p-h3 { margin: 0; font-size: 14px; font-weight: 600; color: var(--p-ink); }
.p-lead { margin: 4px 0 0; color: var(--p-muted); font-size: 14px; }
.p-small { font-size: 12px; color: var(--p-muted); }

/* ---------- Shell ---------- */
.p-app { min-height: 100vh; display: flex; }
.p-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.p-content {
  padding: var(--p-pad-y) var(--p-pad-x) 40px;
  display: flex; flex-direction: column; gap: var(--p-gap);
  max-width: var(--p-content-max); width: 100%;
}
.p-content--wide { max-width: none; }
.p-content--flush { padding: 0; max-width: none; gap: 0; flex: 1 1 auto; }
.p-page-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; flex-wrap: wrap; }

/* Sidebar */
.p-sidebar {
  position: sticky; top: 0; height: 100vh; flex: none;
  width: var(--p-sidebar-w);
  background: var(--p-sidebar); border-right: 1px solid var(--p-border);
  display: flex; flex-direction: column; padding: 14px 0 10px; color: var(--p-ink);
  transition: width .18s ease;
  z-index: 30;
}
.p-sidebar__head { display: flex; align-items: center; gap: 8px; padding: 0 14px 12px; min-height: 44px; }
.p-logo {
  width: 32px; height: 32px; flex: none; border-radius: 9px; background: var(--p-primary); color: var(--p-on-primary);
  display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 15px; text-decoration: none;
}
.pulse a.p-logo:hover { color: var(--p-on-primary); }
.p-project {
  position: relative; flex: 1; min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 6px;
  border: 0; background: transparent; padding: 4px 6px; border-radius: 8px; cursor: pointer; color: var(--p-ink); text-align: left;
}
.p-project:hover { background: var(--p-hover); }
.p-project__name { display: block; font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-project__sub { display: block; font-size: 12px; color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-project__text { display: flex; flex-direction: column; min-width: 0; }
.p-project-menu {
  position: absolute; left: 10px; right: 10px; top: 52px; z-index: 40; background: var(--p-surface); border: 1px solid var(--p-border);
  border-radius: var(--p-radius-lg); box-shadow: var(--p-shadow-lg); padding: 6px; max-height: 60vh; overflow: auto;
}
.p-project-menu a { display: flex; flex-direction: column; padding: 8px 10px; border-radius: 8px; color: var(--p-ink); font-size: 14px; }
.p-project-menu a:hover, .p-project-menu a[aria-current="true"] { background: var(--p-seg); color: var(--p-ink); }
.p-project-menu a span { font-size: 12px; color: var(--p-muted); }

.p-search-btn {
  display: flex; align-items: center; gap: 8px; margin: 0 10px 8px; border: 1px solid var(--p-border); background: var(--p-surface);
  border-radius: 9px; padding: 8px 10px; font-size: 13px; color: var(--p-muted); cursor: pointer; text-align: left;
}
.p-search-btn:hover { border-color: #D6D3CD; color: var(--p-text); }
.p-search-btn__label { flex: 1; }
.p-kbd {
  font-family: var(--p-mono); font-size: 11px; color: var(--p-text); background: var(--p-sidebar); border: 1px solid var(--p-border);
  border-radius: 5px; padding: 1px 5px; min-width: 18px; text-align: center; display: inline-block; line-height: 1.5;
}
.p-nav { flex: 1; overflow: auto; display: flex; flex-direction: column; gap: 1px; padding: 0 10px; }
.p-nav__group {
  font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--p-faint); padding: 14px 10px 6px;
}
.p-nav__item {
  position: relative; display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: 8px;
  font-size: 14px; color: var(--p-text); text-decoration: none;
}
/* Home stays put while the rest of the menu scrolls (owner 16.10), expanded and collapsed. */
.p-nav__item[data-section="home"] {
  position: sticky; top: 0; z-index: 4; background: var(--p-sidebar);
}
.pulse .p-nav__item { color: var(--p-text); }
.pulse .p-nav__item:hover { background: var(--p-hover); color: var(--p-ink); }
.pulse .p-nav__item[aria-current="page"] {
  background: var(--p-surface); color: var(--p-ink); font-weight: 500;
  box-shadow: 0 0 0 1px var(--p-border), var(--p-shadow-sm);
}
.p-nav__icon { flex: none; width: 18px; height: 18px; }
.p-nav__label { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-nav__badge {
  font-size: 11px; font-weight: 600; color: var(--p-text); background: var(--p-chip-neutral); border-radius: 999px; padding: 1px 7px; line-height: 1.5;
}
.p-nav__item[aria-current="page"] .p-nav__badge { color: var(--p-accent); background: var(--p-accent-soft-2); }
.p-nav__badge--live { color: var(--p-success-ink); background: var(--p-success-soft); }
/* status dot of a menu item (e.g. «Заявки → Подключения»: Freshdesk on line) — SkinController::counters() 1 / 2 */
.p-nav__dot { margin-left: auto; flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--p-success-dot, #22A06B); box-shadow: 0 0 0 3px var(--p-success-soft, rgba(34, 160, 107, .15)); }
.p-nav__dot[data-state="warn"] { background: var(--p-warning, #D97706); box-shadow: 0 0 0 3px var(--p-warning-soft, rgba(217, 119, 6, .15)); }
.p-nav__dot[hidden] { display: none; }
.p-app[data-sidebar="collapsed"] .p-nav__dot { position: absolute; top: 6px; right: 6px; margin: 0; width: 7px; height: 7px; box-shadow: none; }
.p-nav__badge--alert { color: #fff; background: var(--p-danger); }
.p-nav__item[aria-current="page"] .p-nav__badge--alert { color: #fff; background: var(--p-danger); }
.p-sidebar__foot { display: flex; flex-direction: column; gap: 2px; padding: 8px 10px 0; border-top: 1px solid var(--p-border); margin-top: 8px; }
.p-user {
  display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border: 0; border-radius: 8px; background: transparent;
  font: inherit; color: inherit; text-align: left; text-decoration: none; cursor: pointer;
}
.pulse .p-user:hover { background: var(--p-hover); }
.p-avatar {
  position: relative; width: 32px; height: 32px; flex: none; border-radius: 50%; background: #E9DFCF; color: #3A2E1D;
  display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600;
}
.p-avatar--lg { width: 56px; height: 56px; font-size: 18px; }
.p-avatar__dot { position: absolute; right: -1px; bottom: -1px; width: 10px; height: 10px; border-radius: 50%; background: var(--p-success-dot); border: 2px solid var(--p-sidebar); }
.p-user__text { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.p-user__name { font-size: 13px; font-weight: 500; color: var(--p-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-user__sub { font-size: 12px; color: var(--p-success); }
.p-collapse-btn {
  display: flex; align-items: center; gap: 10px; padding: 7px 10px; border: 0; background: transparent; border-radius: 8px;
  cursor: pointer; font-size: 13px; color: var(--p-muted); text-align: left;
}
.p-collapse-btn:hover { background: var(--p-hover); color: var(--p-ink); }

/* Collapsed icon rail (desktop only; on <900px or when open as a drawer the sidebar is a full-width off-canvas drawer) */
@media (min-width: 900px) {
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-sidebar { width: var(--p-sidebar-w-collapsed); }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-sidebar__head { padding: 0 18px 12px; justify-content: center; }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-project,
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-nav__label,
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-user__text,
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-collapse-btn__label,
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-search-btn__label,
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-search-btn .p-kbd { display: none; }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-search-btn { width: 40px; height: 40px; margin: 0 auto 8px; justify-content: center; padding: 0; border-radius: 10px; }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-nav__group { height: 1px; padding: 0; margin: 10px 8px; background: var(--p-border); font-size: 0; }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-nav__group:first-child { display: none; }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-nav__item,
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-sidebar__foot .p-nav__item {
    width: 44px; height: 40px; margin: 0 auto; justify-content: center; padding: 0; border-radius: 10px;
  }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-nav__badge {
    position: absolute; top: 4px; right: 4px; min-width: 8px; width: 8px; height: 8px; padding: 0; font-size: 0; background: var(--p-accent);
  }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-nav__badge--live { background: var(--p-success-dot); }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-nav__badge--alert { background: var(--p-danger); }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-user { justify-content: center; padding: 8px 0; }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-collapse-btn { width: 44px; height: 36px; margin: 0 auto; justify-content: center; padding: 0; }
  .p-app[data-sidebar="collapsed"]:not([data-drawer="open"]) .p-collapse-btn svg { transform: rotate(180deg); }
}

/* Tooltips on the rail (title is kept for touch/screen readers too) */
.p-tip { position: fixed; z-index: 90; pointer-events: none; background: var(--p-primary); color: var(--p-on-primary); font-size: 12px; padding: 4px 8px; border-radius: 6px; white-space: nowrap; box-shadow: var(--p-shadow); }

/* Topbar */
.p-topbar {
  position: sticky; top: 0; z-index: 20;
  display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px var(--p-pad-x);
  border-bottom: 1px solid var(--p-border); background: var(--p-bg); flex-wrap: wrap; min-height: 61px;
}
.p-topbar__left { display: flex; align-items: center; gap: 10px; min-width: 0; flex: 1 1 auto; }
.p-topbar__right { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.p-menu-btn { display: none; }
/* Wide screens: crumbs shrink (ellipsis) instead of pushing the page actions onto a second row. */
@media (min-width: 1100px) {
  .p-topbar { flex-wrap: nowrap; }
  .p-topbar__left { flex: 1 1 0; }
  .p-topbar__right { flex: 0 1 auto; justify-content: flex-end; }
  .p-crumbs { flex-wrap: nowrap; white-space: nowrap; overflow: hidden; }
  .p-crumbs > * { flex: 0 0 auto; }
  .p-crumbs > :last-child { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
}
.p-crumbs { font-size: 13px; color: var(--p-muted); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; }
/* Shared S3 crumbs (skins/pulse/s3/_crumbs) on pages that do not load s3.css: same spacing and tone. */
.ps3-crumbs { font-size: 13px; color: var(--p-muted); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; }
.ps3-crumbs__here { color: var(--p-ink); font-weight: 500; }
.p-crumbs a { color: var(--p-muted); }
.p-crumbs a:hover { color: var(--p-ink); }
.p-crumbs [aria-current="page"] { color: var(--p-ink); }
.p-crumbs__sep { color: var(--p-faint); }

/* Popover (bell) */
.p-popover {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 50; width: 320px; max-width: calc(100vw - 32px);
  background: var(--p-surface); border: 1px solid var(--p-border); border-radius: var(--p-radius-lg); box-shadow: var(--p-shadow-lg); overflow: hidden;
}
.p-popover__head { padding: 12px 14px; border-bottom: 1px solid var(--p-divider); font-weight: 600; font-size: 14px; }
.p-popover a.p-popover__row { display: flex; gap: 10px; align-items: center; padding: 10px 14px; border-bottom: 1px solid var(--p-divider); color: var(--p-ink); font-size: 13px; }
.p-popover a.p-popover__row:hover { background: var(--p-surface-2); }
.p-popover__empty { padding: 16px 14px; color: var(--p-muted); font-size: 13px; }
.p-relative { position: relative; }

/* ---------- Buttons ---------- */
.p-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  border: 1px solid var(--p-border); background: var(--p-surface); color: var(--p-ink);
  border-radius: var(--p-radius); padding: 8px 12px; font-size: 13px; font-weight: 500; line-height: 1.25;
  cursor: pointer; text-decoration: none; white-space: nowrap; min-height: var(--p-ctl-h);
}
.pulse a.p-btn { color: var(--p-ink); }
.p-btn:hover { background: var(--p-surface-2); border-color: #D6D3CD; }
.pulse a.p-btn:hover { color: var(--p-ink); }
.p-btn:disabled, .p-btn[aria-disabled="true"] { opacity: .5; cursor: not-allowed; }
.p-btn--primary { background: var(--p-primary); border-color: var(--p-primary); color: var(--p-on-primary); padding: 9px 14px; }
.pulse a.p-btn--primary, .pulse a.p-btn--primary:hover { color: var(--p-on-primary); }
.p-btn--primary:hover { background: var(--p-primary-hover); border-color: var(--p-primary-hover); }
.p-btn--accent { background: var(--p-accent); border-color: var(--p-accent); color: var(--p-on-accent); }
.pulse a.p-btn--accent, .pulse a.p-btn--accent:hover { color: var(--p-on-accent); }
.p-btn--accent:hover { background: var(--p-accent-hover); border-color: var(--p-accent-hover); }
.p-btn--ghost { background: transparent; border-color: transparent; color: var(--p-muted); }
.p-btn--ghost:hover { background: var(--p-hover); border-color: transparent; color: var(--p-ink); }
.p-btn--danger { background: var(--p-surface); border-color: var(--p-border); color: var(--p-danger); }
.pulse a.p-btn--danger { color: var(--p-danger); }
.p-btn--danger:hover { background: var(--p-danger-soft); border-color: var(--p-danger-soft); }
.p-btn--sm { padding: 5px 10px; min-height: 30px; font-size: 12px; }
.p-btn--icon { width: var(--p-ctl-h); padding: 0; position: relative; }
.p-btn--block { width: 100%; }
.p-btn__dot { position: absolute; top: 6px; right: 7px; width: 7px; height: 7px; border-radius: 50%; background: var(--p-danger); }

/* ---------- Forms ---------- */
.p-field { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--p-muted); }
.p-field__label { font-size: 13px; color: var(--p-text); font-weight: 500; }
.p-field__hint { font-size: 12px; color: var(--p-muted); }
.p-field__error { font-size: 12px; color: var(--p-danger); }
.p-input, .p-select, .p-textarea {
  font: inherit; font-size: 14px; color: var(--p-ink); background: var(--p-surface);
  border: 1px solid var(--p-border); border-radius: var(--p-radius); padding: 7px 10px; min-height: var(--p-ctl-h); width: 100%;
}
.p-textarea { min-height: 88px; resize: vertical; line-height: 1.45; }
.p-input:hover, .p-select:hover, .p-textarea:hover { border-color: #D6D3CD; }
.p-input:focus, .p-select:focus, .p-textarea:focus { outline: none; border-color: var(--p-accent); box-shadow: 0 0 0 3px var(--p-accent-soft); }
.p-input[aria-invalid="true"] { border-color: var(--p-danger); }
.p-select {
  appearance: none; -webkit-appearance: none; padding-right: 30px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%235B5853' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 10px center;
}
.p-inline-select {
  display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--p-text);
  border: 1px solid var(--p-border); background: var(--p-surface); border-radius: var(--p-radius); padding: 0 4px 0 10px; min-height: var(--p-ctl-h);
}
.p-inline-select select { border: 0; font: inherit; background: transparent; color: var(--p-ink); padding: 6px 4px; max-width: 220px; }
.p-check { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--p-ink); cursor: pointer; }
.p-check input { width: 16px; height: 16px; accent-color: var(--p-primary); margin: 0; }
.p-switch {
  position: relative; width: 38px; height: 22px; flex: none; border-radius: 999px; border: 0; padding: 0; cursor: pointer;
  background: #C9C6C0; transition: background .15s ease;
}
.p-switch::after {
  content: ""; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff;
  box-shadow: 0 1px 2px rgba(17, 17, 17, .25); transition: transform .15s ease;
}
.p-switch[aria-checked="true"] { background: var(--p-success); }
.p-switch[aria-checked="true"]::after { transform: translateX(16px); }
.p-switch:disabled { opacity: .5; cursor: not-allowed; }
.p-form-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--p-divider); flex-wrap: wrap; }
.p-form-row:last-child { border-bottom: 0; }
.p-form-row__title { font-size: 14px; font-weight: 500; color: var(--p-ink); }
.p-form-row__hint { font-size: 12px; color: var(--p-muted); }
.p-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }

/* ---------- Chips / badges ---------- */
.p-chip {
  display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 500; line-height: 1.4;
  border-radius: 999px; padding: 2px 9px; background: var(--p-chip-neutral); color: var(--p-text); white-space: nowrap;
}
.p-chip--square { border-radius: var(--p-radius-sm); }
.p-chip--success { background: var(--p-success-soft); color: var(--p-success-ink); }
.p-chip--info { background: var(--p-info-soft); color: var(--p-info-ink); }
.p-chip--warning { background: var(--p-warning-soft); color: var(--p-warning-ink); box-shadow: inset 0 0 0 1px var(--p-warning-border); }
.p-chip--danger { background: var(--p-danger-soft); color: var(--p-danger-ink); }
.p-chip--ai { background: var(--p-ai-soft); color: var(--p-ai-ink); }
.p-chip--dark { background: var(--p-primary); color: var(--p-on-primary); }
button.p-chip { border: 0; cursor: pointer; font: inherit; font-size: 12px; font-weight: 500; }
button.p-chip[aria-pressed="true"] { background: var(--p-primary); color: var(--p-on-primary); }
/* Network type chips */
.p-net--home { background: var(--p-success-soft); color: var(--p-success-ink); }
.p-net--mobile { background: var(--p-info-soft); color: var(--p-info-ink); }
.p-net--hosting { background: var(--p-warning-soft); color: var(--p-warning-ink); }
.p-net--vpn { background: var(--p-danger-soft); color: var(--p-danger-ink); }
.p-dot { width: 8px; height: 8px; border-radius: 50%; flex: none; display: inline-block; background: var(--p-accent); }
.p-dot--danger { background: var(--p-danger); }
.p-dot--warning { background: var(--p-warning); }
.p-dot--success { background: var(--p-success-dot); }
.p-dot--info { background: var(--p-accent); }

/* ---------- Cards ---------- */
.p-card { background: var(--p-surface); border: 1px solid var(--p-border); border-radius: var(--p-radius-lg); }
.p-card--pad { padding: var(--p-card-pad); }
.p-card__head { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px var(--p-card-pad); border-bottom: 1px solid var(--p-divider); flex-wrap: wrap; }
.p-card__body { padding: var(--p-card-pad); }
.p-card__row { display: flex; gap: 12px; align-items: center; padding: var(--p-row-pad) var(--p-card-pad); border-bottom: 1px solid var(--p-divider); color: var(--p-ink); }
.p-card__row:last-child { border-bottom: 0; }
.pulse a.p-card__row { color: var(--p-ink); }
.pulse a.p-card__row:hover { background: var(--p-surface-2); color: var(--p-ink); }
.p-stat { background: var(--p-surface); border: 1px solid var(--p-border); border-radius: var(--p-radius-lg); padding: var(--p-card-pad); }
.pulse a.p-stat { color: inherit; text-decoration: none; display: block; }
.pulse a.p-stat:hover { border-color: var(--p-accent); }
.p-stat__star { color: #F5A524; }
.p-stat__label { font-size: 13px; color: var(--p-muted); }
.p-stat__value { font-size: 28px; font-weight: 600; margin-top: 4px; color: var(--p-ink); line-height: 1.2; }
.p-stat__note { font-size: 12px; color: var(--p-muted); }
.p-stat__note--up { color: var(--p-success); }
.p-stat__note--warn { color: var(--p-warning); }
.p-stat__value--warn { color: var(--p-warning); }
/* Unread + waiting share one home cell. Each column is label, then the number, then one note.
   The rule sits on the number row only. Waiting turns warning only when someone is waiting. */
.p-stat--duo { min-width: 0; container-type: inline-size; }
.p-stat__duo {
  display: grid;
  /* 1.25fr keeps «Непрочитанных» and «новые сообщения» on their own lines in a ~240px cell. */
  grid-template-columns: minmax(0, 1.25fr) auto minmax(0, 1fr);
  grid-template-rows: auto auto auto;
  column-gap: 6px;
  align-items: stretch;
}
.p-stat__duo-col {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 3;
  min-width: 0;
}
.p-stat__duo-col:first-child { grid-column: 1; }
.p-stat__duo-col:last-child { grid-column: 3; }
.p-stat__duo-rule {
  grid-column: 2;
  grid-row: 2;
  width: 1px;
  height: 22px;
  align-self: center;
  background: var(--p-divider);
}
.p-stat__duo .p-stat__label { align-self: end; line-height: 1.25; }
.p-stat__duo .p-stat__value { margin-top: 2px; font-variant-numeric: tabular-nums; }
.p-stat__duo .p-stat__note { white-space: nowrap; }
@container (max-width: 200px) {
  .p-stat__duo { display: flex; flex-direction: column; gap: 10px; }
  .p-stat__duo-col { display: flex; flex-direction: column; align-items: stretch; }
  .p-stat__duo .p-stat__label { align-self: stretch; }
  .p-stat__duo-rule { width: auto; height: 1px; align-self: stretch; }
}

.p-grid { display: grid; gap: 12px; }
.p-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.p-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.p-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.p-grid--5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.p-row { display: flex; gap: 16px; flex-wrap: wrap; }
.p-row > .p-grow-3 { flex: 3 1 520px; min-width: 0; }
.p-row > .p-grow-2 { flex: 2 1 340px; min-width: 0; }
.p-row > .p-grow-1 { flex: 1 1 260px; min-width: 0; }
.p-stack { display: flex; flex-direction: column; gap: 12px; }
.p-cluster { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.p-between { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }

.p-tile { display: block; background: var(--p-surface); border: 1px solid var(--p-border); border-radius: var(--p-radius-md); padding: 12px; color: var(--p-ink); font-size: 14px; }
.pulse a.p-tile { color: var(--p-ink); }
.pulse a.p-tile:hover { border-color: #D6D3CD; box-shadow: var(--p-shadow-sm); color: var(--p-ink); }
.pulse a.p-tile[target="_blank"] { position: relative; padding-right: 30px; }
.pulse a.p-tile[target="_blank"]::after { content: "\2197"; position: absolute; top: 10px; right: 12px; color: var(--p-muted); font-size: 15px; line-height: 1; }

/* ---------- Tables as grids ---------- */
.p-table-wrap { overflow-x: auto; border: 1px solid var(--p-border); border-radius: var(--p-radius-lg); background: var(--p-surface); }
.p-table { display: grid; grid-template-columns: var(--cols, repeat(4, minmax(0, 1fr))); min-width: var(--min, 0); font-size: 13px; }
.p-table > .p-table__row { display: contents; }
.p-table > .p-table__row > * { padding: var(--p-row-pad) 14px; border-bottom: 1px solid var(--p-divider); display: flex; align-items: center; gap: 8px; min-width: 0; color: var(--p-ink); }
.p-table > .p-table__row:last-child > * { border-bottom: 0; }
.p-table > .p-table__head > * { color: var(--p-muted); font-weight: 500; font-size: 12px; background: var(--p-surface-2); position: sticky; top: 0; }
.p-table > a.p-table__row:hover > *, .p-table > .p-table__row.is-link:hover > * { background: var(--p-surface-2); cursor: pointer; }
/* Native tables, when markup must stay a <table> */
.p-tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.p-tbl th { text-align: left; font-weight: 500; font-size: 12px; color: var(--p-muted); background: var(--p-surface-2); padding: 10px 14px; border-bottom: 1px solid var(--p-divider); }
.p-tbl td { padding: var(--p-row-pad) 14px; border-bottom: 1px solid var(--p-divider); color: var(--p-ink); vertical-align: middle; }
.p-tbl tr:last-child td { border-bottom: 0; }
.p-num { font-variant-numeric: tabular-nums; text-align: right; justify-content: flex-end; }

/* ---------- Tabs ---------- */
.p-seg { display: inline-flex; gap: 2px; background: var(--p-seg); border-radius: var(--p-radius); padding: 3px; flex-wrap: wrap; }
.p-seg > button, .p-seg > a, .p-seg > label {
  border: 0; border-radius: var(--p-radius-sm); padding: 5px 12px; font-size: 13px; cursor: pointer; background: transparent; color: var(--p-text); display: inline-flex; align-items: center; gap: 6px;
}
.p-seg > label input { position: absolute; opacity: 0; pointer-events: none; }
/* top bar RU/EN (docs/skins/I18N.md) */
.p-lang { flex-wrap: nowrap; padding: 2px; }
.p-lang > button { padding: 3px 8px; font-size: 12px; font-weight: 600; letter-spacing: .02em; min-height: 0; line-height: 1.4; }
.p-seg > [aria-pressed="true"], .p-seg > [aria-selected="true"], .p-seg > [aria-current="page"], .p-seg > label.is-on {
  background: var(--p-surface); color: var(--p-ink); font-weight: 500; box-shadow: 0 1px 2px rgba(17, 17, 17, .12);
}
.p-tabs { display: flex; gap: 22px; border-bottom: 1px solid var(--p-border); flex-wrap: wrap; }
.p-tabs > button, .p-tabs > a {
  border: 0; background: transparent; padding: 10px 0; font-size: 14px; color: var(--p-muted); cursor: pointer;
  border-bottom: 2px solid transparent; margin-bottom: -1px; display: inline-flex; gap: 6px; align-items: center;
}
.pulse .p-tabs > a { color: var(--p-muted); }
.p-tabs > [aria-selected="true"], .p-tabs > [aria-current="page"] { color: var(--p-ink); font-weight: 500; border-bottom-color: var(--p-primary); }
.pulse .p-tabs > a[aria-current="page"] { color: var(--p-ink); }
.p-tabs__count { font-size: 11px; color: var(--p-text); background: var(--p-chip-neutral); border-radius: 999px; padding: 0 6px; }

/* ---------- Alerts ---------- */
.p-alert { display: flex; gap: 10px; align-items: flex-start; border-radius: var(--p-radius-lg); padding: 12px 16px; font-size: 14px; border: 1px solid transparent; }
.p-alert--warning { background: var(--p-warning-soft); border-color: var(--p-warning-border); color: var(--p-warning-ink); }
.p-alert--danger { background: var(--p-danger-soft); color: var(--p-danger-ink); }
.p-alert--success { background: var(--p-success-soft); color: var(--p-success-ink); }
.p-alert--info { background: var(--p-info-soft); color: var(--p-info-ink); }
.p-alert--ai { background: var(--p-ai-soft); color: var(--p-ai-ink); }
.p-alert a { color: inherit; text-decoration: underline; font-weight: 500; }
.p-alert__body { flex: 1; min-width: 0; }
.p-alert ul { margin: 0; padding-left: 18px; }

/* ---------- Drawer / modal ---------- */
.p-overlay { position: fixed; inset: 0; background: var(--p-overlay); z-index: 70; }
.p-drawer {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 71; width: 380px; max-width: 100vw;
  background: var(--p-surface); border-left: 1px solid var(--p-border); box-shadow: var(--p-shadow-lg);
  display: flex; flex-direction: column; transform: translateX(100%); transition: transform .2s ease;
}
.p-drawer--wide { width: 560px; }
.p-drawer.is-open { transform: none; }
.p-drawer__head { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px 16px; border-bottom: 1px solid var(--p-divider); }
.p-drawer__body { flex: 1; overflow: auto; padding: 16px; display: flex; flex-direction: column; gap: 14px; }
.p-drawer__foot { padding: 12px 16px; border-top: 1px solid var(--p-divider); display: flex; gap: 8px; justify-content: flex-end; }
.p-modal-wrap { position: fixed; inset: 0; z-index: 80; display: flex; justify-content: center; align-items: flex-start; padding: 96px 16px 16px; background: var(--p-overlay); }
.p-modal { width: 560px; max-width: 100%; background: var(--p-surface); border: 1px solid var(--p-border); border-radius: var(--p-radius-xl); box-shadow: var(--p-shadow-lg); overflow: hidden; display: flex; flex-direction: column; }

/* ---------- Palette (⌘K) ---------- */
.p-palette-wrap { position: fixed; inset: 0; z-index: 85; display: flex; justify-content: center; align-items: flex-start; padding: 96px 16px 16px; background: var(--p-overlay); }
.p-palette { width: 640px; max-width: 100%; background: var(--p-surface); border-radius: var(--p-radius-xl); border: 1px solid var(--p-border); box-shadow: var(--p-shadow-lg); overflow: hidden; display: flex; flex-direction: column; max-height: calc(100vh - 120px); }
.p-palette__search { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border-bottom: 1px solid var(--p-divider); }
.p-palette__search input { flex: 1; min-width: 0; border: 0; outline: none; font: inherit; font-size: 16px; color: var(--p-ink); background: transparent; }
.p-palette__scopes { display: flex; gap: 6px; padding: 10px 16px 0; flex-wrap: wrap; }
.p-palette__scopes button { border: 0; font: inherit; font-size: 12px; border-radius: 999px; padding: 3px 10px; background: var(--p-sidebar); color: var(--p-text); cursor: pointer; }
.p-palette__scopes button[aria-pressed="true"] { background: var(--p-primary); color: var(--p-on-primary); }
.p-palette__list { overflow: auto; padding: 6px 8px 8px; }
.p-palette__group { font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--p-faint); padding: 12px 10px 6px; }
.p-palette__item { display: flex; align-items: center; gap: 12px; padding: 8px 10px; border-radius: var(--p-radius-md); text-decoration: none; color: var(--p-ink); cursor: pointer; }
.pulse .p-palette__item { color: var(--p-ink); }
.p-palette__item[aria-selected="true"] { background: var(--p-seg); box-shadow: inset 2px 0 0 var(--p-primary); }
.p-palette__icon { width: 30px; height: 30px; flex: none; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: var(--p-sidebar); color: var(--p-text); }
.p-palette__icon--action { background: var(--p-accent-soft); color: var(--p-accent); }
.p-palette__text { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.p-palette__label { font-size: 14px; color: var(--p-ink); }
.p-palette__sub { font-size: 12px; color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-palette__keys { display: flex; gap: 3px; }
.p-palette__foot { display: flex; align-items: center; gap: 16px; padding: 10px 16px; border-top: 1px solid var(--p-divider); background: var(--p-surface-2); font-size: 12px; color: var(--p-muted); flex-wrap: wrap; }
.p-palette__foot span { display: inline-flex; align-items: center; gap: 5px; }
.p-palette__empty { padding: 24px 16px; text-align: center; color: var(--p-muted); font-size: 14px; }

/* ---------- Toasts ---------- */
.p-toasts { position: fixed; right: 16px; bottom: 16px; z-index: 95; display: flex; flex-direction: column; gap: 8px; align-items: flex-end; pointer-events: none; }
.p-toast {
  pointer-events: auto; display: flex; align-items: flex-start; gap: 10px; max-width: 420px; padding: 10px 12px 10px 14px;
  background: var(--p-primary); color: var(--p-on-primary); border-radius: var(--p-radius-md); box-shadow: var(--p-shadow-lg); font-size: 13px;
  animation: p-toast-in .18s ease;
}
.p-toast--error { background: var(--p-danger); color: #fff; }
.p-toast--success { background: var(--p-success); color: #fff; }
.p-toast a { color: inherit; text-decoration: underline; }
.p-toast__close { border: 0; background: transparent; color: inherit; opacity: .8; cursor: pointer; padding: 0 2px; font-size: 16px; line-height: 1; }
@keyframes p-toast-in { from { transform: translateY(8px); opacity: 0; } to { transform: none; opacity: 1; } }

/* ---------- Empty / skeleton / soon ---------- */
.p-empty { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; padding: 40px 16px; color: var(--p-muted); }
.p-empty__icon { width: 44px; height: 44px; border-radius: 12px; background: var(--p-sidebar); color: var(--p-text); display: flex; align-items: center; justify-content: center; }
.p-empty__title { font-size: 15px; font-weight: 600; color: var(--p-ink); }
.p-skeleton { display: block; border-radius: 6px; background: linear-gradient(90deg, var(--p-seg) 0%, var(--p-divider) 50%, var(--p-seg) 100%); background-size: 200% 100%; animation: p-shimmer 1.2s linear infinite; min-height: 12px; }
@keyframes p-shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }
.p-hint { display: flex; gap: 10px; align-items: flex-start; background: var(--p-ai-soft); color: var(--p-ai-ink); border-radius: var(--p-radius-md); padding: 10px 12px; font-size: 13px; }

/* ---------- Mobile ---------- */
.p-tabbar { display: none; }
@media (max-width: 899px) {
  html.pulse { --p-tabbar-h: calc(64px + env(safe-area-inset-bottom, 0px)); }
  .p-sidebar {
    position: fixed; left: 0; top: 0; bottom: 0; height: 100%; height: 100dvh; width: min(308px, 86vw); max-width: 86vw;
    transform: translateX(-102%); transition: transform .2s ease; box-shadow: none;
    padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
  }
  .p-app[data-sidebar="collapsed"] .p-sidebar { width: min(308px, 86vw); }
  .p-app[data-sidebar="collapsed"] .p-sidebar__head { padding: 0 14px 12px; justify-content: flex-start; flex-direction: row; }
  .p-app[data-sidebar="collapsed"] .p-project { display: flex; width: auto; height: auto; padding: 4px 6px; border: 0; justify-content: space-between; }
  .p-app[data-sidebar="collapsed"] .p-project__text,
  .p-app[data-sidebar="collapsed"] .p-user__text { display: flex; }
  .p-app[data-sidebar="collapsed"] .p-nav__label,
  .p-app[data-sidebar="collapsed"] .p-search-btn__label { display: block; }
  .p-app[data-sidebar="collapsed"] .p-search-btn .p-kbd { display: inline-block; }
  .p-app[data-sidebar="collapsed"] .p-search-btn { width: auto; height: auto; margin: 0 10px 8px; justify-content: flex-start; padding: 8px 10px; border-radius: 9px; }
  .p-app[data-sidebar="collapsed"] .p-nav__item,
  .p-app[data-sidebar="collapsed"] .p-sidebar__foot .p-nav__item { width: auto; height: auto; margin: 0; justify-content: flex-start; padding: 7px 10px; border-radius: 8px; }
  .p-app[data-sidebar="collapsed"] .p-nav__group,
  .p-app[data-sidebar="collapsed"] .p-nav__group:first-child { display: block; height: auto; padding: 14px 10px 6px; margin: 0; background: none; font-size: 11px; }
  .p-app[data-sidebar="collapsed"] .p-nav__badge { position: static; min-width: 0; width: auto; height: auto; padding: 1px 7px; font-size: 11px; }
  .p-app[data-sidebar="collapsed"] .p-nav__dot { position: static; margin-left: auto; width: 8px; height: 8px; }
  .p-app[data-sidebar="collapsed"] .p-nav__lock { position: static; margin-left: auto; width: auto; height: auto; }
  .p-app[data-sidebar="collapsed"] .p-user { width: 100%; height: auto; margin: 0; justify-content: flex-start; padding: 8px 10px; }
  .p-app[data-drawer="open"] .p-sidebar { transform: none; box-shadow: 12px 0 40px rgba(17, 17, 17, .18); }
  .p-drawer-scrim { position: fixed; inset: 0; background: var(--p-overlay); z-index: 29; }
  .p-collapse-btn { display: none; }
  .p-menu-btn { display: inline-flex; }
  .p-topbar { padding: 10px 16px; flex-wrap: nowrap; }
  .p-topbar .p-hide-sm { display: none; }
  .p-topbar__left { flex: 1 1 0; overflow: hidden; }
  .p-topbar__right { flex: 0 1 auto; justify-content: flex-end; }
  .p-topbar__left .ps3-crumbs, .p-topbar__left .p-crumbs { flex-wrap: nowrap; white-space: nowrap; overflow: hidden; }
  .p-topbar__left .ps3-crumbs > :last-child, .p-topbar__left .p-crumbs > :last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
  .p-content { padding: 16px 16px calc(var(--p-tabbar-h, 76px) + 28px); }
  .p-content--flush { padding: 0; }
  .p-grid--4, .p-grid--5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .p-grid--3, .p-form-grid { grid-template-columns: minmax(0, 1fr); }
  .p-tabbar {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
    display: flex !important; align-items: stretch; justify-content: space-around !important;
    min-height: var(--p-tabbar-h);
    padding: 8px 10px calc(8px + env(safe-area-inset-bottom, 0px));
    gap: 4px;
    border-top: 1px solid var(--p-border);
    background: var(--p-surface);
    box-shadow: 0 -10px 30px rgba(17, 17, 17, .08);
  }
  .p-tabbar a, .p-tabbar button {
    flex: 1 1 0; min-width: 0; max-width: 110px; min-height: 48px;
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
    font-size: 12px; font-weight: 500; line-height: 1.15; letter-spacing: 0;
    color: var(--p-muted); border: 0; background: transparent; border-radius: 14px;
    padding: 6px 4px; cursor: pointer;
  }
  .p-tabbar a > span:last-child, .p-tabbar button > span:last-child {
    max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  .p-tabbar a:active, .p-tabbar button:active { background: var(--p-hover, var(--p-sidebar)); }
  .p-tabbar [aria-current="page"] { color: var(--p-ink); background: var(--p-sidebar); }
  .p-tabbar__icon { position: relative; display: flex; width: 24px; height: 24px; align-items: center; justify-content: center; }
  .p-tabbar__icon svg { width: 22px; height: 22px; }
  .p-tabbar__badge { position: absolute; top: -5px; right: -11px; font-size: 10px; font-weight: 600; color: #fff; background: var(--p-accent); border-radius: 999px; padding: 0 5px; line-height: 1.5; }
  .p-toasts { bottom: calc(var(--p-tabbar-h, 76px) + 12px); left: 12px; right: 12px; align-items: stretch; }
  .p-drawer { width: 100vw; }
}
@media (max-width: 520px) {
  .p-grid--2, .p-grid--4, .p-grid--5 { grid-template-columns: minmax(0, 1fr); }
  .p-h1 { font-size: 22px; }
}
@media (prefers-reduced-motion: reduce) {
  .pulse * { animation: none !important; transition: none !important; }
}

/* Parity: classic observer pill (account/partials/observer-banner) sits above the mobile tab bar. */
@media (max-width: 899px) {
  .pulse .sb-observer-pill { bottom: calc(76px + env(safe-area-inset-bottom, 0px)); }
}
/* Parity: classic menu «Доступ» / «Выход» in the Pulse sidebar foot. */
.p-nav__item--quiet { color: var(--p-muted); }

/* Collapsed sidebar: icons never shrink into each other (flex column under a short viewport),
   the list scrolls instead; clear 4px rhythm, readable group dividers, hover tooltip from data-p-tip. */
@media (min-width: 900px) {
  .p-app[data-sidebar="collapsed"] .p-nav__item,
  .p-app[data-sidebar="collapsed"] .p-sidebar__foot .p-nav__item,
  .p-app[data-sidebar="collapsed"] .p-user,
  .p-app[data-sidebar="collapsed"] .p-search-btn,
  .p-app[data-sidebar="collapsed"] .p-collapse-btn { flex-shrink: 0; }
  .p-app[data-sidebar="collapsed"] .p-nav__item + .p-nav__item { margin-top: 4px; }
  .p-app[data-sidebar="collapsed"] .p-nav__icon { width: 20px; height: 20px; flex-shrink: 0; }
  .p-app[data-sidebar="collapsed"] .p-nav__group { flex-shrink: 0; margin: 12px 14px; }
  .p-app[data-sidebar="collapsed"] .p-sidebar__foot { gap: 4px; padding-top: 10px; }
  .p-app[data-sidebar="collapsed"] .p-sidebar { overflow-y: auto; overflow-x: hidden; scrollbar-width: none; }
  .p-app[data-sidebar="collapsed"] .p-sidebar::-webkit-scrollbar { display: none; }
}
/* Sidebar scroll cues (owner 13.10: «show that the menu scrolls»). .p-nav is the only scroller; the wrap
   overlays soft fades and a «N more sections» pill, toggled by pulse.js through IntersectionObserver
   sentinels (data-scroll-up / data-scroll-down on the wrap) — no scroll handlers. */
.p-nav-wrap { position: relative; flex: 1 1 auto; min-height: 96px; display: flex; flex-direction: column; }
.p-nav {
  flex: 1 1 auto; min-height: 0; overscroll-behavior: contain;
  scroll-padding-block: 28px 44px; /* keyboard focus never lands under the fades or the pill */
  scrollbar-width: thin; scrollbar-color: transparent transparent;
  transition: scrollbar-color .2s ease;
}
.p-nav:hover, .p-nav:focus-within {
  scrollbar-color: rgba(128, 128, 128, .45) transparent;
  scrollbar-color: color-mix(in srgb, var(--p-muted) 45%, transparent) transparent;
}
.p-nav::-webkit-scrollbar { width: 6px; }
.p-nav::-webkit-scrollbar-track { background: transparent; }
.p-nav::-webkit-scrollbar-thumb { background: transparent; border-radius: 6px; }
.p-nav:hover::-webkit-scrollbar-thumb, .p-nav:focus-within::-webkit-scrollbar-thumb { background: rgba(128, 128, 128, .45); }
.p-nav__edge { display: block; flex: none; height: 1px; margin-bottom: -1px; pointer-events: none; }
.p-nav-fade {
  position: absolute; left: 0; right: 0; z-index: 1; pointer-events: none; opacity: 0; transition: opacity .18s ease;
}
.p-nav-fade--top {
  top: 0; height: 24px;
  background: linear-gradient(to bottom, var(--p-sidebar) 0%, transparent 100%);
  box-shadow: inset 0 1px 0 var(--p-border);
}
.p-nav-fade--bottom {
  bottom: 0; height: 48px;
  background: linear-gradient(to bottom, transparent 0%, var(--p-sidebar) 78%);
}
.p-nav-wrap[data-scroll-up] .p-nav-fade--top,
.p-nav-wrap[data-scroll-down] .p-nav-fade--bottom { opacity: 1; }
.p-nav-wrap[data-scroll-down] .p-nav { padding-bottom: 40px; }
.p-nav-more {
  position: absolute; left: 50%; bottom: 8px; z-index: 2; transform: translateX(-50%);
  display: inline-flex; align-items: center; gap: 5px; max-width: calc(100% - 24px);
  padding: 4px 10px 4px 12px; border: 1px solid var(--p-border); border-radius: 999px;
  background: var(--p-surface); color: var(--p-text); box-shadow: var(--p-shadow-sm);
  font: inherit; font-size: 12px; font-weight: 500; line-height: 18px; white-space: nowrap; cursor: pointer;
  animation: p-nav-more-in .2s ease both;
}
.p-nav-more[hidden] { display: none; }
.p-nav-more:hover { color: var(--p-ink); background: var(--p-surface); box-shadow: var(--p-shadow); }
.p-nav-more:focus-visible { outline: 2px solid var(--p-accent); outline-offset: 2px; }
.p-nav-more__text { overflow: hidden; text-overflow: ellipsis; }
.p-nav-more svg { flex: none; animation: p-nav-more-nudge 1.1s ease-in-out .3s 2; }
@keyframes p-nav-more-in { from { opacity: 0; transform: translate(-50%, 4px); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes p-nav-more-nudge { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(2px); } }
@media (min-width: 900px) {
  .p-sidebar { overflow-y: auto; overflow-x: hidden; scrollbar-width: none; } /* very short windows: the whole rail scrolls as a last resort */
  .p-sidebar::-webkit-scrollbar { display: none; }
  .p-app[data-sidebar="collapsed"] .p-nav__edge + .p-nav__group { display: none; }
  .p-app[data-sidebar="collapsed"] .p-nav { scroll-padding-block: 20px 40px; }
  .p-app[data-sidebar="collapsed"] .p-nav-more { width: 32px; height: 24px; padding: 0; justify-content: center; bottom: 6px; }
  .p-app[data-sidebar="collapsed"] .p-nav-more__text { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .p-nav-more, .p-nav-more svg { animation: none; }
  .p-nav-fade, .p-nav { transition: none; }
}

/* ---------- Offers page (/lk/offers) ---------- */
.p-offers { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 380px); gap: 16px; align-items: start; }
.p-offers__form { position: sticky; top: 76px; }
.p-offers__form-head { display: flex; flex-direction: column; gap: 4px; }
.p-offers__form-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.p-offers__count { font-size: 12px; color: var(--p-muted); font-variant-numeric: tabular-nums; }
.p-offers__head { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--p-divider); }
.p-offers__list { display: flex; flex-direction: column; }
.p-offers__item { padding: 16px 18px; border-top: 1px solid var(--p-divider); }
.p-offers__item:first-child { border-top: 0; }
.p-offers__text { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; color: var(--p-ink); line-height: 1.55; font-size: 14px; }
.p-offers__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 10px; font-size: 12px; color: var(--p-muted); }
.p-offers__edit { margin-top: 10px; display: flex; flex-direction: column; gap: 8px; }
.p-offers textarea { width: 100%; box-sizing: border-box; min-height: 110px; resize: vertical; font: inherit; font-size: 14px; line-height: 1.5; color: var(--p-ink); background: var(--p-surface); border: 1px solid var(--p-border); border-radius: var(--p-radius); padding: 10px 12px; }
.p-offers textarea::placeholder { color: var(--p-muted); }
.p-offers textarea:focus-visible { outline: 2px solid var(--p-accent); outline-offset: 1px; }
.p-offers__actions { display: flex; gap: 8px; flex-wrap: wrap; }
@media (max-width: 899px) { .p-offers { grid-template-columns: minmax(0, 1fr); } .p-offers__form { position: static; } }

/* Profile menu (owner 13.10): the card at the foot of the sidebar opens a menu with the language, theme, classic look,
   Help / Suggest / Access and, last and set apart, Log out. Desktop: popover above the card (beside the rail when collapsed);
   phone: bottom sheet. Position is computed in pulse.js («Profile menu») because the rail can scroll and would clip an absolute box. */
.p-profile { position: relative; }
.p-user[aria-expanded="true"] { background: var(--p-hover); }
.p-user__more { flex: none; margin-left: auto; color: var(--p-muted); }
.p-user:hover .p-user__more, .p-user[aria-expanded="true"] .p-user__more { color: var(--p-ink); }
.p-app[data-sidebar="collapsed"] .p-user__more { display: none; }
.p-pm-scrim { display: none; }
.p-pm {
  position: fixed; z-index: 60; width: 272px; max-width: calc(100vw - 16px); overflow-y: auto; overscroll-behavior: contain;
  display: flex; flex-direction: column; gap: 2px; padding: 6px; outline: 0;
  background: var(--p-surface); border: 1px solid var(--p-border); border-radius: var(--p-radius-lg); box-shadow: var(--p-shadow-lg);
  transform-origin: left bottom; animation: p-pm-in .14s ease-out;
}
.p-pm__grip { display: none; }
.p-pm__head { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: var(--p-radius); color: var(--p-ink); }
.pulse a.p-pm__head:hover, .pulse a.p-pm__head:focus-visible, .pulse a.p-pm__head[aria-current="page"] { background: var(--p-hover); color: var(--p-ink); }
.p-pm__avatar { width: 38px; height: 38px; font-size: 13px; }
.p-pm__who { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; line-height: 1.35; }
.p-pm__name { font-size: 14px; font-weight: 600; color: var(--p-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-pm__email { font-size: 12px; color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-pm__hint { font-size: 12px; color: var(--p-accent); }
.p-pm__chev { flex: none; color: var(--p-faint); }
.p-pm__sep { height: 1px; margin: 4px 6px; background: var(--p-border); flex: none; }
.p-pm__row { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 40px; padding: 3px 6px 3px 10px; }
.p-pm__rowlabel { display: flex; align-items: center; gap: 10px; font-size: 14px; color: var(--p-text); white-space: nowrap; }
.p-pm__rowlabel svg { flex: none; color: var(--p-muted); }
.p-pm__seg { display: inline-flex; gap: 2px; padding: 2px; border-radius: var(--p-radius); background: var(--p-seg); }
.p-pm__seg button {
  display: inline-flex; align-items: center; justify-content: center; min-width: 36px; height: 28px; padding: 0 8px; border: 0; border-radius: var(--p-radius-sm);
  background: transparent; color: var(--p-muted); font: inherit; font-size: 12px; font-weight: 600; cursor: pointer;
}
.p-pm__seg button:hover { color: var(--p-ink); }
.p-pm__seg button[aria-checked="true"] { background: var(--p-surface); color: var(--p-ink); box-shadow: 0 0 0 1px var(--p-border), var(--p-shadow-sm); }
.p-pm__seg button:focus-visible, .p-pm__item:focus-visible, .p-pm__head:focus-visible { outline: 2px solid var(--p-accent); outline-offset: -2px; border-radius: var(--p-radius); }
.p-pm__item {
  display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border: 0; border-radius: var(--p-radius); background: transparent;
  font: inherit; font-size: 14px; color: var(--p-text); text-align: left; cursor: pointer;
}
.pulse a.p-pm__item, .pulse button.p-pm__item { color: var(--p-text); }
.pulse a.p-pm__item:hover, .pulse button.p-pm__item:hover, .pulse a.p-pm__item:focus-visible, .pulse button.p-pm__item:focus-visible { background: var(--p-hover); color: var(--p-ink); }
.pulse a.p-pm__item[aria-current="page"] { background: var(--p-seg); color: var(--p-ink); font-weight: 500; }
.p-pm__icon { flex: none; width: 18px; height: 18px; color: var(--p-muted); }
.p-pm__label { flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pulse a.p-pm__item--danger { color: var(--p-danger); }
.pulse a.p-pm__item--danger .p-pm__icon { color: inherit; }
.pulse a.p-pm__item--danger:hover, .pulse a.p-pm__item--danger:focus-visible { background: var(--p-danger-soft); color: var(--p-danger-ink); }
@keyframes p-pm-in { from { opacity: 0; transform: translateY(6px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes p-pm-sheet { from { transform: translateY(24px); opacity: 0; } to { transform: none; opacity: 1; } }
@media (max-width: 899px) {
  .p-app[data-sidebar="collapsed"] .p-user__more { display: block; }
  .p-app[data-drawer="open"] .p-sidebar,
  .pulse.p-pm-open .p-sidebar { z-index: 65; }
  .pulse.p-pm-open .p-tabbar { opacity: 0; pointer-events: none; z-index: 10; }
  .p-pm-scrim { display: block; position: fixed; inset: 0; z-index: 59; background: var(--p-overlay); }
  .p-pm {
    left: 0 !important; right: 0 !important; bottom: 0 !important; width: auto; max-width: none;
    max-height: calc(100vh - 16px); max-height: calc(100dvh - 16px); overflow-y: auto; transform-origin: center bottom;
    border-width: 1px 0 0; border-radius: 18px 18px 0 0; padding: 8px 12px calc(18px + env(safe-area-inset-bottom, 0px)); gap: 4px;
    animation: p-pm-sheet .2s ease-out;
  }
  .p-pm__grip { display: block; flex: none; width: 36px; height: 4px; margin: 0 auto 6px; border-radius: 2px; background: var(--p-border); }
  .p-pm__head, .p-pm__item { min-height: 46px; flex: none; }
  .p-pm__row { min-height: 50px; flex: none; }
  .p-pm__seg button { min-width: 48px; height: 40px; }
  /* the read-only pill of an observer would sit on top of the sheet */
  .pulse.p-pm-open .sb-observer-pill { opacity: 0; pointer-events: none; }
}

/* «Контекст проектов» (App\Skins\ProjectScope): the switcher menu and the project picker. */
.p-project-menu.p-scope { right: auto; width: 320px; max-width: calc(100vw - 20px); max-height: 70vh; display: flex; flex-direction: column; padding: 6px; overflow: hidden; }
.p-project-menu.p-scope[hidden] { display: none; }
.p-scope__search { margin: 2px 2px 6px; padding: 7px 10px; border: 1px solid var(--p-border); border-radius: 8px; background: var(--p-surface); color: var(--p-ink); font: inherit; font-size: 13px; }
.p-scope__search:focus { outline: 2px solid var(--p-accent); outline-offset: 0; }
.p-project-menu .p-scope__all { flex: none; border-bottom: 1px solid var(--p-divider); border-radius: 8px 8px 0 0; margin-bottom: 4px; font-weight: 600; }
.p-project-menu .p-scope__all[aria-checked="true"] { background: var(--p-seg); }
.p-scope__list { overflow: auto; min-height: 0; flex: 1; }
.p-scope__item { display: flex; align-items: center; gap: 4px; border-radius: 8px; padding-right: 4px; }
.p-scope__item:hover { background: var(--p-hover); }
.p-scope__item[hidden] { display: none; }
.p-scope__check { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; padding: 7px 8px; cursor: pointer; }
.p-scope__check input { flex: none; width: 16px; height: 16px; margin: 0; accent-color: var(--p-primary); }
.p-scope__text { display: flex; flex-direction: column; min-width: 0; }
.p-scope__name { font-size: 14px; color: var(--p-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-scope__link { font-size: 12px; color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-project-menu a.p-scope__only { flex: none; display: inline-flex; flex-direction: row; padding: 3px 8px; font-size: 12px; color: var(--p-muted); border-radius: 6px; visibility: hidden; }
.p-scope__item:hover a.p-scope__only, .p-scope__item:focus-within a.p-scope__only, .p-project-menu a.p-scope__only[aria-current="true"] { visibility: visible; }
.p-project-menu a.p-scope__only:hover, .p-project-menu a.p-scope__only:focus { background: var(--p-seg); color: var(--p-ink); }
.p-project-menu a.p-scope__only[aria-current="true"] { background: var(--p-primary); color: var(--p-on-primary); }
.p-project-menu a.p-scope__gear { flex: none; display: inline-flex; padding: 5px; color: var(--p-muted); border-radius: 6px; }
.p-project-menu a.p-scope__gear:hover { color: var(--p-ink); background: var(--p-seg); }
.p-scope__empty { padding: 10px; font-size: 13px; color: var(--p-muted); }
.p-scope__foot { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 8px; border-top: 1px solid var(--p-divider); padding: 8px 4px 2px; margin-top: 4px; }
.p-project-menu a.p-scope__add { display: inline-flex; flex-direction: row; padding: 4px 6px; font-size: 13px; color: var(--p-muted); }
@media (hover: none) { .p-project-menu a.p-scope__only { visibility: visible; } }
.p-scope-pick__row { flex-wrap: wrap; }
.p-scope-pick__main { flex: 1; min-width: 180px; display: flex; flex-direction: column; color: var(--p-ink); text-decoration: none; }
.p-scope-pick__name { font-weight: 500; }
.p-project__line { display: flex; align-items: center; gap: 6px; min-width: 0; }
.p-project__line .p-project__name { min-width: 0; }
.p-scope-pill { flex: none; display: inline-flex; align-items: center; height: 18px; padding: 0 6px; border-radius: 999px; font-size: 11px; font-weight: 500; line-height: 1; white-space: nowrap; background: var(--p-seg); color: var(--p-muted); }
.p-scope-pill--set { background: var(--p-info-soft); color: var(--p-info-ink); }
.p-scope-pill--one { background: var(--p-primary); color: var(--p-on-primary); }
.p-project-menu .p-scope__all { position: relative; padding-right: 30px; }
.p-project-menu .p-scope__all[aria-checked="true"]::after { content: ""; position: absolute; right: 12px; top: 50%; width: 10px; height: 5px; margin-top: -4px; border-left: 2px solid var(--p-ink); border-bottom: 2px solid var(--p-ink); transform: rotate(-45deg); }
.p-scope__bar { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 2px 8px 6px; font-size: 12px; color: var(--p-muted); }
.p-scope__link-btn { border: 0; background: transparent; padding: 2px 4px; font: inherit; font-size: 12px; color: var(--p-accent); cursor: pointer; border-radius: 4px; }
.p-scope__link-btn:hover { background: var(--p-hover); }
.p-scope__item.is-on .p-scope__name { font-weight: 500; }

/* Account member (observer/manager): sections the server refuses to the role stay visible with a lock
   (owner decision 13.10); the click opens the refusal page in the Pulse shell. */
.p-nav__item--locked { color: var(--p-muted); }
.p-nav__item--locked .p-nav__icon { opacity: .55; }
.p-nav__lock { flex: none; margin-left: auto; opacity: .7; }
.p-app[data-sidebar="collapsed"] .p-nav__lock { position: absolute; right: 6px; bottom: 6px; width: 10px; height: 10px; margin: 0; }
.p-palette__item--locked .p-palette__label { color: var(--p-muted); }
.p-palette__lock { flex: none; display: inline-flex; color: var(--p-muted); margin-left: 8px; }
.p-palette__lock svg { width: 14px; height: 14px; }
.p-tile[data-p-locked] { color: var(--p-muted); background: var(--p-bg); border-style: dashed; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.p-tile__lock { flex: none; opacity: .75; }

/* «Ничего не скрыто» (App\Skins\FeatureLocks, partials/lock): three different locks.
   setup = the client sets it up (amber, open shackle) · platform = SmartBTN switches it on (violet, keyhole) · role = member role (grey). */
.p-lock { flex: none; vertical-align: -2px; }
.p-lock--setup { color: var(--p-warning); }
.p-lock--platform { color: var(--p-ai); }
.p-lock--role { color: var(--p-muted); }
.p-nav__item--locked .p-nav__lock.p-lock--setup, .p-nav__item--locked .p-nav__lock.p-lock--platform { opacity: 1; }
.p-nav__item--lock-setup, .p-nav__item--lock-platform { color: var(--p-text); }
.p-nav__item--lock-setup .p-nav__icon, .p-nav__item--lock-platform .p-nav__icon { opacity: .7; }
.p-palette__lock--setup { color: var(--p-warning); }
.p-palette__lock--platform { color: var(--p-ai); }
.p-tile[data-p-lock="setup"] { border-color: var(--p-warning-border); }
.p-tile[data-p-lock="platform"] { border-color: color-mix(in srgb, var(--p-ai) 35%, var(--p-border)); }
.p-is-locked { display: inline-flex; align-items: center; gap: 6px; }
.p-is-locked--setup, .p-is-locked--platform { color: var(--p-muted); }
.p-lock-note { display: flex; gap: 12px; align-items: flex-start; padding: 14px var(--p-card-pad); border: 1px dashed var(--p-border); border-radius: var(--p-radius-lg); background: var(--p-bg); }
.p-lock-note--setup { border-color: var(--p-warning-border); background: var(--p-warning-soft); }
.p-lock-note--platform { border-color: color-mix(in srgb, var(--p-ai) 35%, var(--p-border)); background: var(--p-ai-soft); }
.p-lock-note__icon { flex: none; width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: var(--p-surface); }
.p-lock-note__body { flex: 1 1 auto; min-width: 0; }
.p-lock-note__title { margin: 0 0 2px; font-size: 14px; font-weight: 600; color: var(--p-ink); }
.p-lock-note__text { margin: 0; font-size: 13px; line-height: 1.45; color: var(--p-muted); }
.p-lock-note__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.p-lock-page { max-width: 640px; margin: 24px auto; display: flex; flex-direction: column; gap: 16px; }
.p-lock-page__hero { text-align: center; padding: 32px 20px; }
.p-lock-page__badge { width: 56px; height: 56px; margin: 0 auto 14px; border-radius: 16px; display: grid; place-items: center; background: var(--p-bg); }
.p-lock-page__badge--setup { background: var(--p-warning-soft); }
.p-lock-page__badge--platform { background: var(--p-ai-soft); }
.p-lock-page__kind { display: inline-block; margin-bottom: 8px; font-size: 12px; font-weight: 600; letter-spacing: .02em; text-transform: uppercase; color: var(--p-muted); }
.p-lock-page h1 { margin: 0 0 8px; font-size: 22px; line-height: 1.25; color: var(--p-ink); }
.p-lock-page p { margin: 0 auto; max-width: 52ch; font-size: 14px; line-height: 1.55; color: var(--p-muted); }
.p-lock-page__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin-top: 18px; }
@media (max-width: 640px) { .p-lock-page { margin: 8px auto; } .p-lock-page__hero { padding: 24px 4px; } .p-lock-page__actions .p-btn { flex: 1 1 100%; justify-content: center; } }

/* ---------- Project switcher window (portal in <body>, pulse.js) ---------- */
.p-project-menu.p-project-menu--portal { position: fixed; left: 8px; top: 8px; right: auto; z-index: 75; width: 380px; max-width: calc(100vw - 16px); max-height: calc(100vh - 16px); }
.p-project-menu--portal:not(.p-scope) { overflow: auto; }
.p-project-menu--portal.p-scope { overflow: hidden; }
.p-project-menu--portal .p-scope__search, .p-project-menu--portal .p-scope__all, .p-project-menu--portal .p-scope__bar { flex: none; }
.p-project-menu--portal .p-scope__list { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.p-project-menu--portal .p-scope__foot { flex: none; flex-wrap: nowrap; }
.p-project-menu--portal .p-scope__foot .p-btn { flex: 0 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-project-menu--portal a.p-scope__add { flex: none; white-space: nowrap; }
.p-project-scrim { position: fixed; inset: 0; z-index: 74; background: var(--p-overlay); }
.p-project-scrim[hidden] { display: none; }
.p-project-menu--portal.is-sheet {
  left: 0; right: 0; top: auto; bottom: 0; width: auto; max-width: none; max-height: 85vh;
  border-radius: 16px 16px 0 0; border-bottom: 0; padding: 14px 10px calc(10px + env(safe-area-inset-bottom, 0px));
}
.p-project-menu--portal.is-sheet::before { content: ""; position: absolute; left: 50%; top: 5px; width: 36px; height: 4px; margin-left: -18px; border-radius: 2px; background: var(--p-border); }
.p-project-menu--portal.is-sheet .p-scope__check { padding: 10px 8px; }
.p-project-menu--portal.is-sheet .p-scope__foot { padding: 10px 4px 2px; }
/* the name has priority over the state pill: the pill shrinks (and may vanish) first, the full name is in title */
.p-project__line .p-project__name { flex: 0 1 auto; min-width: 0; }
.p-project__line .p-scope-pill { flex: 0 100 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
/* breadcrumbs: the project / context name keeps its room, the page name gives way first */
.p-crumbs > .p-crumbs__ctx { flex: 0 1 auto; min-width: 0; max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-crumbs > .p-crumbs__ctx ~ [aria-current="page"] { flex: 0 100 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 520px) {
  .p-crumbs > .p-crumbs__ctx ~ .p-crumbs__sep, .p-crumbs > .p-crumbs__ctx ~ [aria-current="page"] { display: none; }
}
/* Collapsed icon rail, ONE geometry (SMARTBTN-20261016-SIDEBAR-COLLAPSED; owner 16.10: «исправь еще отступы в свернутом виде»).
   Every box of the rail (logo, search, section, profile, collapse) is a 40px square centered in the 68px rail; the switcher under
   the logo is 40px wide too. One 8px gap between rows, 16px around the divider. Hover and the current section keep the same
   size (the current ring is INSET, not a spread outside the box). The rows never shrink: only the section list gives way
   (it scrolls, min-height in .p-nav-wrap) and, on a very short window, the whole rail scrolls — nothing overlaps. Desktop only:
   the phone drawer keeps its own rules above. Expanded mode is not touched. */
@media (min-width: 900px) {
  .p-app[data-sidebar="collapsed"] { --p-rail-item: 40px; --p-rail-gap: 8px; --p-rail-sep: 16px; }
  .p-app[data-sidebar="collapsed"] .p-sidebar__head,
  .p-app[data-sidebar="collapsed"] .p-sidebar__foot { flex: none; }
  .p-app[data-sidebar="collapsed"] .p-sidebar__head {
    flex-direction: column; align-items: center; justify-content: flex-start; gap: var(--p-rail-gap);
    min-height: 0; padding: 0 0 var(--p-rail-gap);
  }
  .p-app[data-sidebar="collapsed"] .p-logo { width: var(--p-rail-item); height: var(--p-rail-item); border-radius: 10px; font-size: 17px; }
  /* the compact switcher under the logo opens the same window */
  .p-app[data-sidebar="collapsed"] .p-project {
    display: flex; flex: none; align-items: center; justify-content: center; width: var(--p-rail-item); height: 28px; margin: 0; padding: 0;
    border: 1px solid var(--p-border); border-radius: 8px; background: transparent;
  }
  .p-app[data-sidebar="collapsed"] .p-project:hover { background: var(--p-hover); }
  .p-app[data-sidebar="collapsed"] .p-project__text { display: none; }
  .p-app[data-sidebar="collapsed"] .p-search-btn { flex: none; width: var(--p-rail-item); height: var(--p-rail-item); margin: 0 auto var(--p-rail-sep); }
  .p-app[data-sidebar="collapsed"] .p-nav__item[data-section="home"] {
    background: var(--p-sidebar);
    box-shadow: -16px 0 0 var(--p-sidebar), 16px 0 0 var(--p-sidebar), 0 -8px 0 4px var(--p-sidebar);
  }
  .p-app[data-sidebar="collapsed"] .p-nav {
    gap: var(--p-rail-gap); padding: 0 calc((var(--p-sidebar-w-collapsed) - 1px - var(--p-rail-item)) / 2);
    scrollbar-width: none; /* the fades and the «N more» pill already say that the list scrolls; a gutter would push the 40px boxes off-centre; the rail is 68px with a 1px border, so 13.5px each side */
  }
  .p-app[data-sidebar="collapsed"] .p-nav::-webkit-scrollbar { display: none; }
  .p-app[data-sidebar="collapsed"] .p-nav__item,
  .p-app[data-sidebar="collapsed"] .p-nav__item + .p-nav__item,
  .p-app[data-sidebar="collapsed"] .p-sidebar__foot .p-nav__item { flex: none; box-sizing: border-box; width: var(--p-rail-item); height: var(--p-rail-item); margin: 0 auto; }
  .pulse .p-app[data-sidebar="collapsed"] .p-nav__item[aria-current="page"] { box-shadow: inset 0 0 0 1px var(--p-border), var(--p-shadow-sm); }
  .pulse .p-app[data-sidebar="collapsed"] .p-nav__item[data-section="home"][aria-current="page"] {
    background: var(--p-surface);
    box-shadow: inset 0 0 0 1px var(--p-border), var(--p-shadow-sm), -16px 0 0 var(--p-sidebar), 16px 0 0 var(--p-sidebar), 0 -8px 0 4px var(--p-sidebar);
  }
  .p-app[data-sidebar="collapsed"] .p-nav__group { flex: none; width: auto; margin: calc(var(--p-rail-sep) - var(--p-rail-gap)) 0; }
  .p-app[data-sidebar="collapsed"] .p-sidebar__foot { gap: var(--p-rail-gap); padding: 12px calc((var(--p-sidebar-w-collapsed) - 1px - var(--p-rail-item)) / 2) 0; }
  .p-app[data-sidebar="collapsed"] .p-user { width: var(--p-rail-item); height: var(--p-rail-item); margin: 0 auto; padding: 0; border-radius: 10px; }
  .p-app[data-sidebar="collapsed"] .p-collapse-btn { width: var(--p-rail-item); height: var(--p-rail-item); margin: 0 auto; border-radius: 10px; }
}

/* Right-side drawers keep the left sidebar visible and usable (owner 16.10: «при открытии правого окна левое меню пропадает»).
   --p-side-w = the room the rail/sidebar takes (68px collapsed, 264px expanded, 0 on a phone where the menu is off-canvas).
   The scrim of every drawer layer starts after it, so the shell is neither dimmed nor covered; the drawer keeps its own width but
   never grows over the sidebar. `scrollbar-gutter: stable` keeps the page from shifting when the drawer locks the page scroll. */
html.pulse { --p-side-w: var(--p-sidebar-w); }
html.pulse:has(.p-app[data-sidebar="collapsed"]) { --p-side-w: var(--p-sidebar-w-collapsed); }
@media (max-width: 899px) { html.pulse, html.pulse:has(.p-app[data-sidebar="collapsed"]) { --p-side-w: 0px; } }
@media (min-width: 900px) {
  html.pulse .p-overlay, html.pulse .pulse-visitors-modal, html.pulse .pcl-drawer-layer, html.pulse .pcc-drawer-layer,
  html.pulse .pcrm-layer, html.pulse .pf-ed-overlay { left: var(--p-side-w); }
  html.pulse .p-drawer, html.pulse .pf-editor { max-width: calc(100vw - var(--p-side-w)); }
}
html.pulse.visitors-modal-open, html.pulse.pcl-drawer-open, html.pulse.pcc-drawer-open, html.pulse.pcrm-open { scrollbar-gutter: stable; }
/* The classic visitors.css locks the page with `html.visitors-modal-open, html.visitors-modal-open body { overflow: hidden }`. With the
   body clipped too it becomes its own scroll container, the sticky sidebar no longer sticks to the viewport and scrolls away with the
   page: opening the card on a scrolled list made the left menu «disappear». Only html locks the scroll here (as every other drawer does). */
html.pulse.visitors-modal-open body { overflow: visible; }

/* ---------- «Диалоги» for all / several projects (skins/pulse/chat/inbox.blade.php) ---------- */
.p-inbox { display: flex; flex-direction: column; gap: 12px; }
.p-inbox__bar { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.p-inbox__tabs { border-bottom: 0; }
.p-inbox__filters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.p-inbox__field { display: inline-flex; min-width: 0; }
.p-inbox__field select { max-width: 260px; }
.p-inbox__field--q input { width: 240px; max-width: 100%; }
.p-inbox__sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.p-inbox__list { padding: 0; overflow: hidden; }
.p-inbox__row { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--p-divider); color: var(--p-ink); text-decoration: none; }
.pulse a.p-inbox__row { color: var(--p-ink); }
.p-inbox__row:last-child { border-bottom: 0; }
.p-inbox__row:hover, .p-inbox__row:focus-visible { background: var(--p-hover); }
.p-inbox__avatar { flex: none; }
.p-inbox__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.p-inbox__top { display: flex; align-items: center; gap: 8px; min-width: 0; }
.p-inbox__name { min-width: 0; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-inbox__row.is-unread .p-inbox__name { font-weight: 700; }
.p-inbox__project { flex: 0 1 auto; min-width: 0; max-width: 45%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-inbox__channel { flex: none; font-size: 11px; color: var(--p-faint); text-transform: uppercase; letter-spacing: .02em; }
.p-inbox__preview { font-size: 13px; color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-inbox__row.is-unread .p-inbox__preview { color: var(--p-ink); }
.p-inbox__you, .p-inbox__muted { color: var(--p-faint); }
.p-inbox__side { flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.p-inbox__time { font-size: 12px; color: var(--p-muted); }
.p-inbox__unread { font-size: 11px; font-weight: 600; padding: 1px 7px; border-radius: 999px; background: var(--p-primary); color: var(--p-on-primary); white-space: nowrap; }
.p-inbox__pager { display: flex; align-items: center; justify-content: center; gap: 12px; flex-wrap: wrap; }
.p-inbox__consoles summary { cursor: pointer; font-size: 13px; color: var(--p-muted); }
.p-inbox__console-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
@media (max-width: 599px) {
  .p-inbox__filters, .p-inbox__field, .p-inbox__field--q, .p-inbox__field select, .p-inbox__field--q input { width: 100%; max-width: none; }
  .p-inbox__row { padding: 12px; gap: 10px; }
  .p-inbox__top { flex-wrap: wrap; row-gap: 2px; }
  .p-inbox__project { max-width: 100%; }
}

/* switcher rows: checkbox (add to a set) + name (open this one project); no «только» button */
.p-scope__item { gap: 2px; padding-left: 8px; }
.p-scope__box { flex: none; width: 16px; height: 16px; margin: 0 6px 0 0; accent-color: var(--p-primary); cursor: pointer; }
/* The switcher window is a portal in <body>. Pages that host classic markup load public/css/style.css (project pages = the «one site» context),
   whose global `input { appearance: none }` painted every checkbox of the window as an empty 16px gap. Always the native, visible checkbox. */
.p-project-menu input.p-scope__box { -webkit-appearance: checkbox; -moz-appearance: checkbox; appearance: auto; opacity: 1; visibility: visible; position: static; clip: auto; pointer-events: auto; }
.p-project-menu a.p-scope__pick { flex: 1; min-width: 0; display: flex; flex-direction: column; padding: 7px 8px 7px 4px; border-radius: 6px; }
.p-project-menu a.p-scope__pick:hover { background: transparent; }
.p-project-menu a.p-scope__pick[aria-current="true"] { background: transparent; }
.p-project-menu a.p-scope__pick[aria-current="true"] .p-scope__name { font-weight: 600; }
.p-project-menu a.p-scope__pick span { font-size: inherit; }
.p-project-menu a.p-scope__pick .p-scope__link { font-size: 12px; }
/* «Проект: X ▾» on pages of one site (partials/project-bar.blade.php) */
.p-pbar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 0 14px; }
.p-pbar__pick { position: relative; }
.p-pbar__btn { display: inline-flex; align-items: center; gap: 6px; max-width: min(420px, 100%); padding: 6px 12px; border: 1px solid var(--p-border); border-radius: 999px; background: var(--p-surface); color: var(--p-ink); font-size: 13px; cursor: pointer; list-style: none; box-shadow: var(--p-shadow); }
.p-pbar__btn::-webkit-details-marker { display: none; }
.p-pbar__btn:hover { background: var(--p-hover); }
.p-pbar__label { color: var(--p-muted); flex: none; }
.p-pbar__name { font-weight: 600; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-pbar__menu { position: absolute; left: 0; top: calc(100% + 6px); z-index: 60; width: 340px; max-width: calc(100vw - 32px); max-height: min(60vh, 420px); display: flex; flex-direction: column; padding: 6px; background: var(--p-surface); border: 1px solid var(--p-border); border-radius: var(--p-radius-lg); box-shadow: var(--p-shadow-lg); }
.p-pbar__search { flex: none; margin: 2px 2px 6px; padding: 7px 10px; border: 1px solid var(--p-border); border-radius: 8px; background: var(--p-surface); color: var(--p-ink); font: inherit; font-size: 13px; }
.p-pbar__list { overflow-y: auto; min-height: 0; }
.pulse a.p-pbar__item { display: flex; flex-direction: column; padding: 7px 10px; border-radius: 8px; color: var(--p-ink); }
.p-pbar__item:hover, .p-pbar__item:focus-visible { background: var(--p-hover); }
.p-pbar__item[aria-checked="true"] { background: var(--p-seg); }
.p-pbar__item[aria-checked="true"] .p-pbar__item-name { font-weight: 600; }
.p-pbar__item[hidden] { display: none; }
.p-pbar__item-name { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-pbar__item-link { font-size: 12px; color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-pbar__empty { padding: 8px 10px; font-size: 13px; color: var(--p-muted); }
@media (max-width: 599px) { .p-pbar__menu { width: calc(100vw - 32px); } }

/* Brand marks of channels and networks (App\Skins\BrandIcons, docs/skins/BRANDS.md): one tile size, brand colour,
   dark marks (X, Threads, Dzen) turn light in the dark theme. */
.pbrand { --pbrand: #8F8B84; width: 36px; height: 36px; flex: none; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; background: var(--p-surface, #fff); border: 1px solid var(--p-border, #E6E4E0); color: var(--pbrand); box-sizing: border-box; }
.pbrand svg, .pbrand img { width: 58%; height: 58%; display: block; }
.pbrand--img img { width: 66%; height: 66%; object-fit: contain; }
.pbrand--sm { width: 30px; height: 30px; border-radius: 8px; }
.pbrand--lg { width: 48px; height: 48px; border-radius: 13px; }
.pbrand--xl { width: 44px; height: 44px; border-radius: 12px; }
.pbrand--letters { border: 0; color: #fff; font-size: 12px; font-weight: 700; letter-spacing: .02em; }
.pulse[data-theme="dark"] .pbrand--ink { color: #F4F4F5; }
@media (prefers-color-scheme: dark) { .pulse[data-theme="system"] .pbrand--ink { color: #F4F4F5; } }
/* LinkedIn: the official bug as is — blue on light, the white bug on dark (no recolouring) */
.pbrand--duo .pbrand__dark { display: none; }
.pulse[data-theme="dark"] .pbrand--duo .pbrand__light { display: none; }
.pulse[data-theme="dark"] .pbrand--duo .pbrand__dark { display: block; }
@media (prefers-color-scheme: dark) { .pulse[data-theme="system"] .pbrand--duo .pbrand__light { display: none; } .pulse[data-theme="system"] .pbrand--duo .pbrand__dark { display: block; } }

/* Site mark: constant colour + initials of a project in every aggregate screen (App\Skins\Support\SiteMark, Pulse.siteMark) */
.p-site-mark { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 20px; height: 20px; border-radius: 6px; background: var(--site, #5B5F97); color: #fff; font-size: 9.5px; font-weight: 700; letter-spacing: .02em; line-height: 1; font-family: inherit; user-select: none; }
.p-site-mark--sm { width: 16px; height: 16px; border-radius: 4px; font-size: 8px; }
.p-site-mark--lg { width: 28px; height: 28px; border-radius: 8px; font-size: 11.5px; }
.p-site-marks { display: inline-flex; align-items: center; }
.p-site-marks .p-site-mark { box-shadow: 0 0 0 2px var(--p-surface); }
.p-site-marks .p-site-mark + .p-site-mark { margin-left: -4px; }
.p-site { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.p-site__text { display: flex; flex-direction: column; min-width: 0; }
.p-site__name { font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-site__link { font-size: 12px; color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* «Строка охвата» under a page title (partials/scope-line.blade.php, docs/skins/MULTIPROJECT-UX.md §5.1) */
.p-scopeline { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 13px; color: var(--p-muted); }
.p-scopeline__chip { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; font-size: 12.5px; font-weight: 500; white-space: nowrap; }
.p-scopeline--account .p-scopeline__chip, .p-scopeline--readonly .p-scopeline__chip { background: var(--p-chip-neutral); color: var(--p-text); }
.p-scopeline--summary .p-scopeline__chip { background: var(--p-info-soft); color: var(--p-info-ink); }
.p-scopeline--bulk .p-scopeline__chip { background: var(--p-warning-soft); color: var(--p-warning-ink); box-shadow: inset 0 0 0 1px var(--p-warning-border); }
.p-scopeline--one .p-scopeline__chip { background: var(--p-surface); color: var(--p-ink); box-shadow: inset 0 0 0 1px var(--p-border); }
.p-scopeline__sites { display: inline-flex; gap: 10px; flex-wrap: wrap; }
.p-scopeline__sites .p-site__name { font-size: 13px; color: var(--p-ink); }
.p-scopeline__text { min-width: 0; }


/* Phone: corner switcher chip in the top bar (partials/topbar.blade.php, docs/skins/MULTIPROJECT-UX.md §5.6) */
.p-scope-chip { display: none; align-items: center; gap: 6px; min-width: 0; max-width: 100%; height: 32px; padding: 0 10px; border: 1px solid var(--p-border); border-radius: 999px; background: var(--p-surface); color: var(--p-ink); font: inherit; font-size: 13px; cursor: pointer; }
.p-scope-chip__name { font-weight: 600; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-scope-chip__state { flex: none; font-size: 11.5px; color: var(--p-muted); white-space: nowrap; }
@media (max-width: 899px) {
  .p-scope-chip { display: inline-flex; }
  .p-topbar__left:has(.p-scope-chip) .p-crumbs { display: none; }
}

.p-pbar__btn .p-site-mark, .p-pbar__item-name .p-site-mark { vertical-align: -3px; }
/* Pulse «автообновление» (pulse.js Pulse.live): «обновлено N с назад» and the short highlight of a changed number.
   Both are drawn only with PULSE_LIVE_INDICATOR (visual change, shown to the owner first). */
.p-live-ago { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--p-muted); white-space: nowrap; margin-right: 4px; }
.p-live-ago__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--p-success-dot, var(--p-success)); box-shadow: 0 0 0 3px var(--p-success-soft); }
.p-live-ago[data-state="paused"] .p-live-ago__dot { background: var(--p-muted); box-shadow: none; }
.p-live-ago[data-state="off"] .p-live-ago__dot { background: var(--p-warning); box-shadow: 0 0 0 3px var(--p-warning-soft); }
@media (max-width: 899px) { .p-live-ago__text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); } }
.p-live-flash { animation: p-live-flash 1.4s ease-out; border-radius: 4px; }
@keyframes p-live-flash { 0% { background: var(--p-accent-soft, rgba(47, 84, 235, .14)); } 100% { background: transparent; } }
@media (prefers-reduced-motion: reduce) { .p-live-flash { animation: none; } }
.p-live-block { display: contents; }

/* First widget on the home (resources/views/skins/pulse/partials/onboarding.blade.php). Tokens only. */
.p-onboard { max-width: 100%; overflow: hidden; box-shadow: var(--p-shadow-sm); }
.p-onboard__head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  padding: 20px 24px 18px; background: var(--p-accent-soft); border-bottom: 1px solid var(--p-divider);
}
.p-onboard__title { margin: 0; font-size: 22px; font-weight: 600; letter-spacing: -0.01em; color: var(--p-ink); }
.p-onboard__head p { margin: 6px 0 0; color: var(--p-text); font-size: 14px; max-width: 64ch; }
.p-onboard__reset-btn { background: var(--p-surface, #FFFFFF); border-color: var(--p-border-strong, #D5D2CC); font-weight: 600; }
.p-onboard__grid {
  display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.65fr); gap: 22px;
  padding: 18px 24px; align-items: start;
}
.p-onboard__steps { padding: 0; }
.p-step { display: grid; grid-template-columns: 30px 1fr; gap: 14px; }
.p-step__rail { display: flex; flex-direction: column; align-items: center; }
.p-step__n {
  width: 30px; height: 30px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 600; flex: none; background: var(--p-surface); color: var(--p-muted);
  border: 1px solid var(--p-border);
}
.p-step--now .p-step__n { background: var(--p-primary); color: var(--p-on-primary); border-color: var(--p-primary); box-shadow: 0 0 0 4px var(--p-accent-soft); }
.p-step--done .p-step__n { background: var(--p-success); color: #fff; border-color: var(--p-success); }
.p-step__line { width: 2px; flex: 1; min-height: 18px; margin: 6px 0; background: var(--p-border); border-radius: 2px; }
.p-step--done .p-step__line, .p-step--now .p-step__line { background: var(--p-accent-soft-2); }
.p-step__body { padding: 2px 0 18px; min-width: 0; }
.p-step__head-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.p-step__title { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 15px; font-weight: 600; color: var(--p-ink); }
.p-step--next .p-step__title { color: var(--p-text); font-weight: 500; }
.p-step__ico { width: 28px; height: 28px; border-radius: 8px; display: flex; align-items: center; justify-content: center; background: var(--p-sidebar); color: var(--p-text); flex: none; }
.p-step--now .p-step__ico { background: var(--p-accent-soft); color: var(--p-accent); }
.p-step--done .p-step__ico { background: var(--p-success-soft); color: var(--p-success-ink); }
.p-step__body p { margin: 6px 0 0; color: var(--p-muted); font-size: 14px; line-height: 1.45; }
.p-step__actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 12px; }
.p-onboard__studio-card {
  background: var(--p-surface-2, #FAFAF9); border: 1px solid var(--p-border, #E6E4E0); border-radius: 12px;
  padding: 16px; display: flex; flex-direction: column; gap: 12px;
}
.p-onboard__studio-top { display: flex; align-items: center; gap: 10px; }
.p-onboard__studio-logo {
  width: 38px; height: 38px; border-radius: 9px; color: #FFFFFF; font-size: 13px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; overflow: hidden;
  border: 1px solid rgba(0,0,0,0.08);
}
.p-onboard__studio-logo img { width: 100%; height: 100%; object-fit: contain; background: #FFFFFF; padding: 3px; }
.p-onboard__studio-meta { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.p-onboard__studio-meta strong { font-size: 14.5px; font-weight: 600; color: var(--p-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-onboard__studio-meta span { font-size: 12px; color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-onboard__color-pill {
  font-size: 11px; font-weight: 600; color: #FFFFFF; padding: 3px 8px; border-radius: 999px; font-family: var(--p-mono, monospace);
}
.p-onboard__studio-desc { font-size: 13px; color: var(--p-text); line-height: 1.45; }
.p-onboard__studio-btns { display: flex; flex-direction: column; gap: 8px; }
.p-onboard__studio-btns .p-btn { width: 100%; justify-content: center; }
.p-onboard__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 12px 24px 16px; border-top: 1px solid var(--p-divider); background: var(--p-surface-2); }
.p-onboard__foot .p-small { margin-right: 4px; }
.p-chip .p-lock { margin-left: 2px; }
@media (max-width: 899px) {
  .p-onboard { max-width: none; }
  .p-onboard__head { flex-direction: column; padding: 16px; }
  .p-onboard__grid { grid-template-columns: 1fr; padding: 16px; }
  .p-onboard__foot { padding-left: 16px; padding-right: 16px; }
}

/* Reason for a disabled «+ Сайт» / «Создать виджет» (partials/add-site-reason.blade.php): visible text, phone included. */
.p-add-site-reason { display: block; font-size: 12px; line-height: 1.4; color: var(--p-muted); max-width: 42ch; white-space: normal; font-weight: 400; text-align: left; }
.p-card__head + .p-add-site-reason { padding: 0 20px 10px; max-width: none; }
.p-empty .p-add-site-reason { margin: 8px auto 0; text-align: center; }
.p-scope__foot .p-add-site-reason { flex-basis: 100%; }
.p-add-site-reason--bar { max-width: 240px; font-size: 11px; line-height: 1.3; align-self: center; }

/* ---------- PWA / Native App Shell & Home View (partials/pwa-home.blade.php, partials/app-menu.blade.php) ---------- */
.p-topbar__web-actions { display: inline-flex; align-items: center; gap: 8px; }
.p-app-brand-pill, .p-app-role-pill, .p-app-search-btn, .p-app-brand-mark { display: none; }

/* Brand mark b. inside scope chip / app brand pill */
.p-app-brand-mark {
  width: 24px; height: 24px; border-radius: 7px; flex: none;
  background: var(--p-primary); color: var(--p-on-primary);
  font-size: 13px; font-weight: 800; letter-spacing: -.03em;
  align-items: center; justify-content: center;
}
.p-app-brand-mark span { color: var(--p-accent); }

/* When PWA App mode is active (either explicitly via Profile -> PWA, or automatically on < 900px in Auto mode) */
html.pulse[data-p-eff-view="app"] {
  --p-tabbar-h: calc(64px + env(safe-area-inset-bottom, 0px));
}
html.pulse[data-p-view="app"] .p-sidebar {
  display: none !important;
}
html.pulse[data-p-eff-view="app"] .p-menu-btn,
html.pulse[data-p-eff-view="app"] .p-crumbs,
html.pulse[data-p-eff-view="app"] .p-lang,
html.pulse[data-p-eff-view="app"] .p-topbar__web-actions,
html.pulse[data-p-eff-view="app"] .p-topbar__classic,
html.pulse[data-p-eff-view="app"] .p-pbar {
  display: none !important;
}
html.pulse[data-p-eff-view="app"] .p-app-brand-mark {
  display: inline-flex;
}
html.pulse[data-p-eff-view="app"] .p-scope-chip,
html.pulse[data-p-eff-view="app"] .p-app-brand-pill {
  display: inline-flex; align-items: center; gap: 7px;
  height: 36px; padding: 0 11px 0 6px; border-radius: 999px;
  background: var(--p-surface); border: 1px solid var(--p-border);
  box-shadow: var(--p-shadow-sm); color: var(--p-ink) !important;
  font-size: 13px; text-decoration: none; max-width: 100%; min-width: 0;
}
.p-app-brand-pill__name { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-app-brand-pill__state { font-size: 12px; color: var(--p-muted); white-space: nowrap; }

html.pulse[data-p-eff-view="app"] .p-app-role-pill {
  display: inline-flex; align-items: center; gap: 6px;
  height: 32px; padding: 0 11px; border-radius: 999px;
  background: var(--p-seg); border: 1px solid var(--p-border);
  color: var(--p-ink); font: inherit; font-size: 12px; font-weight: 600;
  cursor: pointer; white-space: nowrap;
}
html.pulse[data-p-eff-view="app"] .p-app-role-pill--op {
  background: rgba(22, 163, 74, .12); border-color: rgba(22, 163, 74, .28); color: #15803D;
}
.p-app-role-pill__dot {
  width: 7px; height: 7px; border-radius: 50%; background: #16A34A;
  box-shadow: 0 0 0 3px rgba(22, 163, 74, .2);
}
html.pulse[data-p-eff-view="app"] .p-app-search-btn {
  display: inline-flex;
}
html.pulse[data-p-eff-view="app"] .p-content:not(.p-content--flush) {
  padding-bottom: calc(var(--p-tabbar-h, 74px) + 28px);
}

/* 5-Tab Native App Bottom Bar in PWA mode (including on Desktop when PWA mode is selected!) */
html.pulse[data-p-eff-view="app"] .p-tabbar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 45;
  display: flex !important; align-items: stretch; justify-content: space-around !important;
  min-height: var(--p-tabbar-h);
  padding: 6px 8px calc(6px + env(safe-area-inset-bottom, 0px));
  gap: 4px;
  border-top: 1px solid var(--p-border);
  background: var(--p-surface);
  box-shadow: 0 -10px 30px rgba(17, 17, 17, .08);
}
@media (min-width: 900px) {
  html.pulse[data-p-eff-view="app"] .p-tabbar {
    max-width: 620px; margin: 0 auto; bottom: 12px;
    border: 1px solid var(--p-border); border-radius: 22px;
    padding: 6px 10px; min-height: 60px;
    box-shadow: 0 14px 38px rgba(17, 19, 30, .14);
  }
}
html.pulse[data-p-eff-view="app"] .p-tabbar a,
html.pulse[data-p-eff-view="app"] .p-tabbar button {
  position: relative; flex: 1 1 0; min-width: 0; max-width: 112px; min-height: 48px;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  font-size: 11px; font-weight: 600; line-height: 1.15;
  color: var(--p-muted); border: 0; background: transparent; border-radius: 14px;
  padding: 5px 2px; cursor: pointer; text-decoration: none;
}
html.pulse[data-p-eff-view="app"] .p-tabbar [aria-current="page"] {
  color: var(--p-accent); background: transparent; font-weight: 700;
}
html.pulse[data-p-eff-view="app"] .p-tabbar [aria-current="page"]::before {
  content: ""; position: absolute; top: 0; width: 22px; height: 3px;
  border-radius: 999px; background: var(--p-accent);
}
.p-tabbar__badge--green { background: #16A34A !important; }
.p-tabbar__badge--slate { background: var(--p-seg) !important; color: var(--p-ink) !important; border: 1px solid var(--p-border); }

/* PWA Home vs Desktop Home visibility */
.p-pwa-home { display: none; flex-direction: column; gap: 14px; max-width: 560px; margin: 0 auto 18px; width: 100%; }
.p-desktop-home { display: flex; flex-direction: column; gap: var(--p-gap); width: 100%; }
html.pulse[data-p-eff-view="app"] .p-pwa-home { display: flex; }
html.pulse[data-p-eff-view="app"] .p-pwa-home + .p-desktop-home { display: none; }
html.pulse[data-p-view="desktop"] .p-pwa-home { display: none !important; }
html.pulse[data-p-view="desktop"] .p-desktop-home { display: flex !important; flex-direction: column; gap: var(--p-gap); }

.p-pwa-hero {
  position: relative; overflow: hidden; border-radius: 22px; padding: 18px 18px 16px;
  background: radial-gradient(120% 130% at 85% 15%, rgba(255, 68, 34, .28) 0%, rgba(124, 58, 237, .18) 42%, #131622 88%), #131622;
  color: #fff; box-shadow: 0 14px 34px rgba(17, 19, 30, .18);
}
.p-pwa-hero__top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.p-pwa-hero__title { margin: 0; font-size: 20px; font-weight: 700; letter-spacing: -.02em; color: #fff; }
.p-pwa-hero__sub { display: flex; align-items: center; gap: 7px; margin-top: 5px; font-size: 13px; color: rgba(255,255,255,.78); }
.p-pwa-hero__dot { width: 8px; height: 8px; border-radius: 50%; background: #22C55E; box-shadow: 0 0 0 4px rgba(34, 197, 94, .22); flex: none; }
.p-pwa-hero__ai,
.p-pwa-hero a.p-pwa-hero__ai {
  display: inline-flex; align-items: center; gap: 5px; padding: 6px 12px; border-radius: 999px;
  background: rgba(255, 255, 255, .16) !important; border: 1px solid rgba(255, 255, 255, .36) !important; color: #FFFFFF !important;
  font-size: 11.5px; font-weight: 700; letter-spacing: .02em; white-space: nowrap; text-decoration: none !important;
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
.p-pwa-hero__acts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.p-pwa-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 38px; padding: 0 13px;
  border-radius: 13px; font-size: 13px; font-weight: 600; text-decoration: none; white-space: nowrap;
  background: rgba(255,255,255,.11); border: 1px solid rgba(255,255,255,.16); color: #fff !important;
  transition: transform .12s ease, background .15s ease;
}
.p-pwa-btn:hover { background: rgba(255,255,255,.18); }
.p-pwa-btn--coral {
  background: linear-gradient(135deg, #FF4D2D 0%, #E0351B 100%); border-color: rgba(255, 120, 90, .45);
  box-shadow: 0 8px 20px rgba(255, 68, 34, .35); flex: 1 1 auto;
}
.p-pwa-grid4 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.p-pwa-stat {
  display: flex; flex-direction: column; gap: 4px; padding: 13px 14px; border-radius: 18px;
  background: var(--p-surface); border: 1px solid var(--p-border); box-shadow: var(--p-shadow-sm);
  text-decoration: none; color: var(--p-ink) !important; transition: border-color .15s ease, transform .12s ease;
}
.p-pwa-stat:hover { border-color: var(--p-accent); }
.p-pwa-stat__head { display: flex; align-items: center; justify-content: space-between; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--p-muted); }
.p-pwa-stat__val { display: flex; align-items: center; gap: 8px; font-size: 24px; font-weight: 700; letter-spacing: -.03em; color: var(--p-ink); line-height: 1.15; margin-top: 2px; }
.p-pwa-stat__pill { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 999px; letter-spacing: 0; }
.p-pwa-stat__pill--amber { background: rgba(245, 158, 11, .15); color: #D97706; }
.p-pwa-stat__pill--purple { background: rgba(139, 92, 246, .14); color: #7C3AED; }
.p-pwa-stat__pill--green { background: rgba(22, 163, 74, .14); color: #15803D; }
.p-pwa-stat__pill--rose { background: rgba(239, 68, 68, .13); color: #DC2626; }
.p-pwa-stat__sub { font-size: 11.5px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-pwa-sec-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 2px 4px 0; }
.p-pwa-sec-head b { font-size: 11.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--p-muted); }
.p-pwa-sec-head a, .p-pwa-sec-head button { border: 0; background: none; padding: 0; font: inherit; font-size: 12.5px; font-weight: 600; color: var(--p-accent); cursor: pointer; text-decoration: none; }
.p-pwa-icons-card {
  padding: 16px 12px 14px; border-radius: 22px; background: var(--p-surface);
  border: 1px solid var(--p-border); box-shadow: var(--p-shadow-sm);
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px 8px;
}
.p-pwa-ico {
  display: flex; flex-direction: column; align-items: center; gap: 6px; text-decoration: none;
  color: var(--p-ink) !important; font-size: 12px; font-weight: 600; text-align: center;
}
.p-pwa-ico__box {
  position: relative; width: 52px; height: 52px; border-radius: 16px;
  display: flex; align-items: center; justify-content: center;
  transition: transform .14s ease;
}
.p-pwa-ico:hover .p-pwa-ico__box { transform: translateY(-2px); }
.p-pwa-ico__badge {
  position: absolute; top: -5px; right: -6px; min-width: 20px; height: 20px; padding: 0 5px;
  border-radius: 999px; font-size: 11px; font-weight: 700; color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 6px rgba(0,0,0,.18); border: 2px solid var(--p-surface);
}
.p-pwa-att {
  border-radius: 20px; background: var(--p-surface); border: 1px solid var(--p-border);
  box-shadow: var(--p-shadow-sm); overflow: hidden; display: flex; flex-direction: column;
}
.p-pwa-att__row {
  display: flex; align-items: center; gap: 12px; padding: 12px 14px; text-decoration: none;
  color: var(--p-ink) !important; border-top: 1px solid var(--p-divider);
}
.p-pwa-att__row:first-child { border-top: 0; }
.p-pwa-att__row:hover { background: var(--p-hover); }
.p-pwa-att__ico {
  width: 38px; height: 38px; border-radius: 12px; flex: none;
  display: flex; align-items: center; justify-content: center;
}
.p-pwa-att__body { flex: 1; min-width: 0; }
.p-pwa-att__body b { display: block; font-size: 13.5px; font-weight: 600; color: var(--p-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-pwa-att__body small { display: block; font-size: 12px; color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-pwa-att__cta { font-size: 12.5px; font-weight: 600; white-space: nowrap; flex: none; }

/* ---------- Native App Menu & Settings Sheet (#p-app-menu) ---------- */
.p-app-menu {
  position: fixed; inset: 0; z-index: 90;
  display: flex; align-items: flex-end; justify-content: center;
}
.p-app-menu[hidden] { display: none !important; }
.p-app-menu__scrim {
  position: absolute; inset: 0; background: rgba(15, 18, 28, .48);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
}
.p-app-menu__sheet {
  position: relative; z-index: 1; width: 100%; max-width: 560px;
  max-height: 90dvh; background: var(--p-bg);
  border-radius: 26px 26px 0 0; border: 1px solid var(--p-border);
  box-shadow: 0 -18px 50px rgba(0,0,0,.24);
  display: flex; flex-direction: column; overflow: hidden;
  animation: p-sheet-up .2s cubic-bezier(.2,.8,.2,1);
}
@keyframes p-sheet-up { from { transform: translateY(32px); opacity: 0; } to { transform: none; opacity: 1; } }
.p-app-menu__grip {
  width: 40px; height: 4px; border-radius: 99px; background: var(--p-border);
  margin: 10px auto 2px; flex: none;
}
.p-app-menu__top {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 8px 18px 12px; border-bottom: 1px solid var(--p-divider);
}
.p-app-menu__title { margin: 0; font-size: 18px; font-weight: 700; color: var(--p-ink); }
.p-app-menu__sub { font-size: 12px; color: var(--p-muted); }
.p-app-menu__close {
  width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--p-border);
  background: var(--p-surface); color: var(--p-ink); font-size: 14px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
}
.p-app-menu__body {
  flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch;
  padding: 14px 16px calc(36px + env(safe-area-inset-bottom, 0px));
  display: flex; flex-direction: column; gap: 12px;
}
.p-app-menu__body > * { flex: none; }
.p-app-menu__profile {
  flex: none;
  display: flex; align-items: center; gap: 12px; padding: 14px;
  border-radius: 20px; background: var(--p-surface); border: 1px solid var(--p-border);
  box-shadow: var(--p-shadow-sm); text-decoration: none; color: var(--p-ink) !important;
}
.p-app-menu__avatar { width: 46px; height: 46px; font-size: 16px; flex: none; }
.p-app-menu__who { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.p-app-menu__who b { font-size: 15px; font-weight: 700; color: var(--p-ink); }
.p-app-menu__who small { font-size: 12.5px; color: var(--p-muted); }
.p-app-menu__role-tag { font-size: 11.5px; font-weight: 600; color: var(--p-accent); margin-top: 2px; }

.p-app-menu__sec-title {
  flex: none;
  font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  color: var(--p-muted); padding: 4px 6px 0;
}
.p-app-menu__card {
  flex: none;
  border-radius: 20px; background: var(--p-surface); border: 1px solid var(--p-border);
  box-shadow: var(--p-shadow-sm); overflow: hidden; display: flex; flex-direction: column;
}
[data-p-app-menu-group] {
  flex: none;
  display: flex; flex-direction: column; gap: 8px;
}
.p-app-menu__srow {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 14px; border-top: 1px solid var(--p-divider); flex-wrap: wrap;
}
.p-app-menu__srow:first-child { border-top: 0; }
.p-app-menu__slabel { display: inline-flex; align-items: center; gap: 10px; font-size: 13.5px; font-weight: 600; color: var(--p-ink); }
.p-app-menu__sico { width: 30px; height: 30px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.p-app-menu__seg {
  display: inline-flex; gap: 2px; padding: 2px; border-radius: 10px;
  background: var(--p-seg); border: 1px solid var(--p-border);
}
.p-app-menu__seg button {
  border: 0; background: transparent; color: var(--p-muted); font: inherit;
  font-size: 12px; font-weight: 600; padding: 5px 10px; border-radius: 8px; cursor: pointer;
}
.p-app-menu__seg button[aria-checked="true"] {
  background: var(--p-surface); color: var(--p-ink); box-shadow: var(--p-shadow-sm);
}

.p-app-menu__search {
  flex: none;
  display: flex; align-items: center; gap: 9px; padding: 0 14px; height: 42px;
  border-radius: 14px; background: var(--p-surface); border: 1px solid var(--p-border);
  color: var(--p-muted);
}
.p-app-menu__search input {
  flex: 1; min-width: 0; border: 0; outline: none; background: transparent;
  font: inherit; font-size: 14px; color: var(--p-ink);
}
.p-app-menu__item {
  display: flex; align-items: center; gap: 12px; padding: 11px 14px;
  border: 0; border-top: 1px solid var(--p-divider); background: transparent;
  width: 100%; text-align: left; text-decoration: none; color: var(--p-ink) !important;
  font: inherit; font-size: 14px; font-weight: 500; cursor: pointer;
}
.p-app-menu__item:first-child { border-top: 0; }
.p-app-menu__item:hover { background: var(--p-hover); }
.p-app-menu__item.is-active { background: var(--p-accent-soft); font-weight: 600; }
.p-app-menu__item--danger { color: var(--p-danger-ink) !important; }
.p-app-menu__ico {
  width: 34px; height: 34px; border-radius: 10px; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
}
.p-app-menu__label { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.p-app-menu__badge {
  min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px;
  background: var(--p-accent); color: #fff; font-size: 11px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center;
}
.p-app-menu__chev { color: var(--p-muted); flex: none; }

/* Top-right Profile Avatar Icon in PWA mode */
.p-app-user-btn { display: none; }
html.pulse[data-p-eff-view="app"] .p-app-user-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; padding: 0; border-radius: 50%;
  border: 1.5px solid var(--p-border-strong); background: var(--p-surface);
  cursor: pointer; flex: none; transition: transform .14s ease, border-color .14s ease, box-shadow .14s ease;
}
html.pulse[data-p-eff-view="app"] .p-app-user-btn:hover,
html.pulse[data-p-eff-view="app"] .p-app-user-btn[aria-expanded="true"] {
  border-color: var(--p-accent);
  box-shadow: 0 0 0 3px var(--p-accent-soft);
}
.p-app-user-btn__avatar {
  width: 28px; height: 28px; border-radius: 50%;
  background: linear-gradient(135deg, #FF4D2D 0%, #7C3AED 100%);
  color: #fff; font-size: 11.5px; font-weight: 700; letter-spacing: .02em;
  display: inline-flex; align-items: center; justify-content: center;
}

/* Native App Operator Console overrides (PWA App mode, Screenshot 4) */
html.pulse[data-p-eff-view="app"] .dlg-pwa-quick { display: grid; }
html.pulse[data-p-eff-view="app"] .dlg-list__head { padding: 12px 12px 10px; gap: 10px; }
html.pulse[data-p-eff-view="app"] .dlg-list__head > .dlg-rowline:first-child {
  padding: 10px 12px; border-radius: 16px; background: var(--p-surface);
  border: 1px solid var(--p-border); box-shadow: var(--p-shadow-sm);
}
html.pulse[data-p-eff-view="app"] .dlg-tabs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; gap: 6px; padding-bottom: 2px; }
html.pulse[data-p-eff-view="app"] .dlg-tabs::-webkit-scrollbar { display: none; }
html.pulse[data-p-eff-view="app"] .dlg-tab {
  height: 32px; padding: 0 12px; border-radius: 999px; background: var(--p-surface);
  border: 1px solid var(--p-border); font-size: 12.5px; font-weight: 600; flex: none;
}
html.pulse[data-p-eff-view="app"] .dlg-tab[aria-selected="true"] {
  background: var(--p-primary); border-color: var(--p-primary); color: var(--p-on-primary);
}
html.pulse[data-p-eff-view="app"] .dlg-tab[aria-selected="true"] .dlg-tab__n {
  background: var(--p-accent); color: #fff; padding: 1px 6px; border-radius: 999px; font-weight: 700;
}
html.pulse[data-p-eff-view="app"] .dlg-search__field { height: 38px; border-radius: 12px; padding: 0 12px; }
html.pulse[data-p-eff-view="app"] .dlg-search .dlg-ico { width: 38px; height: 38px; border-radius: 12px; }
html.pulse[data-p-eff-view="app"] .dlg-rooms { gap: 8px; padding: 2px 12px 16px; }
html.pulse[data-p-eff-view="app"] .dlg-room {
  background: var(--p-surface); border: 1px solid var(--p-border);
  border-radius: 18px; padding: 12px 14px; box-shadow: var(--p-shadow-sm);
}
html.pulse[data-p-eff-view="app"] .dlg-room--unread { border-left: 3.5px solid var(--p-accent); }

/* Floating PWA Install Prompt Banner & Modal */
.p-pwa-banner[hidden], .p-pwa-modal[hidden] { display: none !important; }
.p-pwa-banner {
  position: fixed; right: 20px; bottom: 20px; z-index: 88;
  width: min(410px, calc(100vw - 24px));
  display: flex; align-items: flex-start; gap: 13px;
  padding: 15px 16px; border-radius: 20px;
  background: linear-gradient(145deg, #161822 0%, #1E2130 100%);
  color: #F8FAFC; border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 20px 44px rgba(10, 12, 20, .38), 0 0 0 1px rgba(255,77,45,.18);
  animation: pPwaSlideUp .28s cubic-bezier(.2,.9,.3,1);
}
html.pulse[data-p-eff-view="app"] .p-pwa-banner {
  bottom: calc(var(--p-tabbar-h, 64px) + env(safe-area-inset-bottom, 0px) + 12px);
}
@keyframes pPwaSlideUp {
  from { opacity: 0; transform: translateY(14px) scale(.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.p-pwa-banner__icon {
  width: 42px; height: 42px; border-radius: 13px; flex: none;
  background: linear-gradient(135deg, #FF4D2D 0%, #D92B0F 100%);
  color: #fff; font-weight: 800; font-size: 20px; letter-spacing: -.03em;
  display: inline-flex; align-items: center; justify-content: center;
  box-shadow: 0 8px 18px rgba(255,77,45,.36);
}
.p-pwa-banner__icon span { color: #FFE4DE; }
.p-pwa-banner__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.p-pwa-banner__head { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; padding-right: 18px; }
.p-pwa-banner__title { font-size: 14px; font-weight: 700; color: #fff; line-height: 1.25; }
.p-pwa-banner__badge {
  font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
  padding: 2px 7px; border-radius: 999px; background: rgba(255,77,45,.22); color: #FF8A75;
  border: 1px solid rgba(255,77,45,.35);
}
.p-pwa-banner__text { margin: 0; font-size: 12.2px; line-height: 1.45; color: rgba(248,250,252,.78); }
.p-pwa-banner__actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 5px; }
.p-pwa-banner__btn {
  display: inline-flex; align-items: center; gap: 6px; height: 33px; padding: 0 13px;
  border-radius: 10px; font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
  border: 1px solid transparent; transition: transform .12s ease, background .14s ease;
}
.p-pwa-banner__btn--primary {
  background: #FF4D2D; color: #fff; box-shadow: 0 6px 14px rgba(255,77,45,.32);
}
.p-pwa-banner__btn--primary:hover { background: #F03E1E; }
.p-pwa-banner__btn--ghost {
  background: rgba(255,255,255,.09); color: #F1F5F9; border-color: rgba(255,255,255,.15);
}
.p-pwa-banner__btn--ghost:hover { background: rgba(255,255,255,.15); }
html.pulse[data-p-eff-view="app"] [data-p-pwa-switch-view] { display: none; }
.p-pwa-banner__close {
  position: absolute; top: 10px; right: 10px;
  width: 26px; height: 26px; border-radius: 50%; border: 0;
  background: rgba(255,255,255,.08); color: rgba(255,255,255,.72);
  font-size: 12px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
}
.p-pwa-banner__close:hover { background: rgba(255,255,255,.18); color: #fff; }

.p-pwa-modal {
  position: fixed; inset: 0; z-index: 98; display: flex; align-items: center; justify-content: center; padding: 16px;
}
.p-pwa-modal__scrim { position: absolute; inset: 0; background: rgba(15,17,23,.56); backdrop-filter: blur(5px); }
.p-pwa-modal__sheet {
  position: relative; width: min(440px, 100%); border-radius: 22px; padding: 20px;
  background: var(--p-surface); color: var(--p-ink); border: 1px solid var(--p-border);
  box-shadow: var(--p-shadow-lg); display: flex; flex-direction: column; gap: 16px;
}
.p-pwa-modal__top { display: flex; align-items: center; gap: 12px; }
.p-pwa-modal__title { font-size: 16px; font-weight: 700; color: var(--p-ink); }
.p-pwa-modal__sub { font-size: 12.5px; color: var(--p-muted); margin-top: 2px; }
.p-pwa-modal__steps { display: flex; flex-direction: column; gap: 10px; }
.p-pwa-modal__step {
  display: flex; align-items: flex-start; gap: 11px; padding: 12px 14px;
  border-radius: 14px; background: var(--p-bg); border: 1px solid var(--p-border);
  font-size: 12.8px; line-height: 1.45; color: var(--p-muted);
}
.p-pwa-modal__step b { display: block; color: var(--p-ink); font-size: 13.5px; margin-bottom: 2px; }
.p-pwa-modal__num {
  width: 24px; height: 24px; border-radius: 50%; flex: none;
  background: var(--p-accent-soft); color: var(--p-accent); font-weight: 700; font-size: 12px;
  display: inline-flex; align-items: center; justify-content: center; margin-top: 1px;
}
@media (max-width: 640px) {
  .p-pwa-banner { right: 12px; left: 12px; width: auto; }
}

/* ---------------- Role-Tailored Customizable Dashboard Informers (.p-di) ---------------- */
.p-di-section { margin: 22px 0; }
.p-di-head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  margin-bottom: 14px;
}
.p-di-head__left { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; min-width: 0; }
.p-di-role-pill {
  display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 10px; border-radius: 999px;
  font-size: 11.5px; font-weight: 600; background: var(--p-surface); color: var(--p-muted);
  border: 1px solid var(--p-border);
}
.p-di-role-pill b { color: var(--p-accent); font-weight: 800; }
.p-di-head__actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

.p-di-editbar[hidden] { display: none !important; }
.p-di-editbar {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  padding: 10px 14px; margin-bottom: 14px; border-radius: 14px;
  background: var(--p-accent-soft); border: 1px dashed rgba(224, 53, 27, .38); font-size: 12.5px; color: var(--p-ink);
}
.p-di-editbar__info { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 220px; }
.p-di-editbar__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--p-accent); flex: none; }
.p-di-editbar__btns { display: flex; align-items: center; gap: 8px; }

.p-di-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(235px, 1fr)); gap: 12px;
}
.p-di-card {
  position: relative; display: flex; flex-direction: column; justify-content: space-between; gap: 8px;
  padding: 15px 16px; border-radius: 16px; background: var(--p-surface); border: 1px solid var(--p-border);
  box-shadow: var(--p-shadow-sm); transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease;
}
.p-di-card[hidden] { display: none !important; }
.p-di-card:hover { border-color: rgba(224, 53, 27, .34); box-shadow: var(--p-shadow-md); }

.p-di-card__edit {
  display: flex; align-items: center; justify-content: flex-end; gap: 5px;
  padding-bottom: 7px; margin-bottom: 3px; border-bottom: 1px dashed var(--p-border);
}
.p-di-card__edit[hidden] { display: none !important; }
.p-di-ctrl {
  width: 27px; height: 27px; border-radius: 8px; border: 1px solid var(--p-border);
  background: var(--p-bg); color: var(--p-ink); font-size: 12px; font-weight: 700;
  cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
}
.p-di-ctrl:hover { background: var(--p-hover); border-color: var(--p-accent); }
.p-di-ctrl--del { color: var(--p-danger, #DC2626); border-color: rgba(220,38,38,.25); background: rgba(220,38,38,.06); }
.p-di-ctrl--del:hover { background: #DC2626; color: #fff; }

.p-di-card__top { display: flex; align-items: center; gap: 8px; min-width: 0; }
.p-di-card__dot {
  width: 30px; height: 30px; border-radius: 9px; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
}
.p-di-card__title {
  font-size: 12.5px; font-weight: 700; color: var(--p-ink); line-height: 1.3;
  flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis;
}
.p-di-card__badge {
  font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 999px; white-space: nowrap;
  background: var(--p-bg); color: var(--p-muted); border: 1px solid var(--p-border);
}
.p-di-card__badge--ok     { background: #DCFCE7; color: #15803D; border-color: transparent; }
.p-di-card__badge--warn   { background: #FEF3C7; color: #B45309; border-color: transparent; }
.p-di-card__badge--danger { background: #FEE2E2; color: #B91C1C; border-color: transparent; }
.p-di-card__badge--info   { background: #DBEAFE; color: #1D4ED8; border-color: transparent; }

.p-di-card__val {
  font-size: 24px; font-weight: 800; color: var(--p-ink); letter-spacing: -.025em;
  line-height: 1.15; font-variant-numeric: tabular-nums;
}
.p-di-card__sub { margin: 0; font-size: 11.8px; color: var(--p-muted); line-height: 1.4; }
.p-di-card__foot {
  display: flex; align-items: center; justify-content: space-between; gap: 6px; flex-wrap: wrap;
  padding-top: 6px; border-top: 1px solid var(--p-divider); margin-top: auto;
}
.p-di-card__role {
  font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 999px;
  background: var(--p-bg); color: var(--p-muted); white-space: nowrap;
}
.p-di-card__link {
  font-size: 12px; font-weight: 700; color: var(--p-accent); text-decoration: none; white-space: nowrap;
}
.p-di-card__link:hover { text-decoration: underline; }

.p-di-card--add {
  border: 1.5px dashed var(--p-border); background: transparent; cursor: pointer;
  align-items: center; justify-content: center; text-align: center; min-height: 138px; color: var(--p-muted);
}
.p-di-card--add:hover { border-color: var(--p-accent); color: var(--p-accent); background: var(--p-accent-soft); }
.p-di-card__add-ico {
  width: 36px; height: 36px; border-radius: 50%; background: var(--p-surface); border: 1px solid var(--p-border);
  display: inline-flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 600; color: var(--p-accent);
}
.p-di-card--add b { font-size: 13px; font-weight: 700; color: var(--p-ink); }
.p-di-card--add small { font-size: 11.5px; color: var(--p-muted); max-width: 210px; line-height: 1.35; }

/* Informer Catalog Modal */
.p-di-modal[hidden] { display: none !important; }
.p-di-modal {
  position: fixed; inset: 0; z-index: 95; display: flex; align-items: center; justify-content: center; padding: 16px;
}
.p-di-modal__scrim { position: absolute; inset: 0; background: rgba(15,17,23,.52); backdrop-filter: blur(4px); }
.p-di-modal__dialog {
  position: relative; width: min(940px, 100%); max-height: min(88vh, 800px);
  background: var(--p-surface); color: var(--p-ink); border: 1px solid var(--p-border);
  border-radius: 22px; box-shadow: var(--p-shadow-lg); display: flex; flex-direction: column; overflow: hidden;
}
.p-di-modal__head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
  padding: 18px 22px 14px; border-bottom: 1px solid var(--p-divider);
}
.p-di-modal__title { margin: 0; font-size: 17px; font-weight: 800; color: var(--p-ink); }
.p-di-modal__sub { margin: 3px 0 0; font-size: 12.5px; color: var(--p-muted); }
.p-di-modal__close {
  width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--p-border);
  background: var(--p-bg); color: var(--p-muted); font-size: 14px; cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center; flex: none;
}
.p-di-modal__close:hover { background: var(--p-hover); color: var(--p-ink); }
.p-di-modal__toolbar {
  display: flex; flex-direction: column; gap: 10px; padding: 12px 22px;
  background: var(--p-bg); border-bottom: 1px solid var(--p-divider);
}
.p-di-modal__search {
  display: flex; align-items: center; gap: 8px; height: 38px; padding: 0 12px;
  border-radius: 11px; background: var(--p-surface); border: 1px solid var(--p-border);
}
.p-di-modal__search input {
  flex: 1; border: 0; background: transparent; font: inherit; font-size: 13.5px; color: var(--p-ink); outline: none;
}
.p-di-modal__tabs { display: flex; align-items: center; gap: 6px; overflow-x: auto; padding-bottom: 2px; }
.p-di-tab {
  display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 11px;
  border-radius: 999px; border: 1px solid var(--p-border); background: var(--p-surface);
  color: var(--p-muted); font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap;
}
.p-di-tab.is-active {
  background: var(--p-ink); color: var(--p-surface); border-color: var(--p-ink);
}

.p-di-modal__body {
  flex: 1; overflow-y: auto; padding: 16px 22px;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 11px; align-content: start;
}
.p-di-cat-item {
  display: flex; flex-direction: column; justify-content: space-between; gap: 7px;
  padding: 13px 14px; border-radius: 15px; background: var(--p-surface); border: 1px solid var(--p-border);
  transition: border-color .14s ease, background .14s ease;
}
.p-di-cat-item[hidden] { display: none !important; }
.p-di-cat-item.is-active {
  border-color: rgba(22, 163, 74, .48); background: rgba(22, 163, 74, .04);
}
.p-di-cat-item__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.p-di-cat-item__role {
  font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px;
}
.p-di-cat-item__val { font-size: 15px; font-weight: 800; font-variant-numeric: tabular-nums; }
.p-di-cat-item__title { margin: 0; font-size: 13.2px; font-weight: 700; color: var(--p-ink); line-height: 1.3; }
.p-di-cat-item__sub { margin: 0; font-size: 11.5px; color: var(--p-muted); line-height: 1.38; }
.p-di-cat-item__foot {
  display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 4px;
  padding-top: 7px; border-top: 1px solid var(--p-divider);
}
.p-di-cat-item__badge {
  font-size: 10.5px; font-weight: 600; color: var(--p-muted);
}
.p-di-toggle-btn {
  height: 29px; padding: 0 11px; border-radius: 9px; font: inherit; font-size: 11.5px; font-weight: 700;
  cursor: pointer; border: 1px solid var(--p-border); background: var(--p-bg); color: var(--p-ink);
}
.p-di-cat-item.is-active .p-di-toggle-btn {
  background: #DCFCE7; color: #15803D; border-color: rgba(22,163,74,.35);
}
.p-di-modal__empty[hidden] { display: none !important; }
.p-di-modal__empty { grid-column: 1 / -1; text-align: center; padding: 28px 12px; color: var(--p-muted); font-size: 13.5px; }
.p-di-modal__foot {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  padding: 13px 22px; border-top: 1px solid var(--p-divider); background: var(--p-surface);
}
.p-di-modal__presets { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; color: var(--p-muted); }

@media (max-width: 720px) {
  .p-di-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
  .p-di-card { padding: 12px; border-radius: 14px; }
  .p-di-card__val { font-size: 19px; }
}

@media (max-width: 560px) {
  .p-topbar .p-scope-chip__state { display: none; }
  .p-topbar .p-role-badge { padding: 0 9px; height: 28px; font-size: 11px; }
}

/* ==========================================================================
   Native PWA / Mobile App Experience for All Internal Pages (<= 960px)
   ========================================================================== */
@media (max-width: 960px) {
  html.pulse, body.pulse-body {
    overflow-x: hidden;
    -webkit-text-size-adjust: 100%;
  }
  /* Prevent iOS Safari auto-zoom on any form field across all internal pages */
  html.pulse input[type="text"],
  html.pulse input[type="search"],
  html.pulse input[type="email"],
  html.pulse input[type="tel"],
  html.pulse input[type="url"],
  html.pulse input[type="password"],
  html.pulse input[type="number"],
  html.pulse select,
  html.pulse textarea {
    font-size: 16px !important;
  }

  html.pulse[data-p-eff-view="app"] .p-main {
    padding: 12px 12px calc(86px + env(safe-area-inset-bottom, 0px)) !important;
  }

  /* Compact App Topbar */
  html.pulse[data-p-eff-view="app"] .p-topbar {
    height: 54px;
    min-height: 54px;
    padding: 0 10px;
    gap: 6px;
    flex-wrap: nowrap !important;
    position: sticky;
    top: 0;
    z-index: 45;
    background: rgba(255, 255, 255, .92);
    backdrop-filter: saturate(180%) blur(14px);
    -webkit-backdrop-filter: saturate(180%) blur(14px);
  }
  html.pulse[data-theme="dark"][data-p-eff-view="app"] .p-topbar {
    background: rgba(20, 22, 29, .92);
  }
  html.pulse[data-p-eff-view="app"] .p-topbar__left,
  html.pulse[data-p-eff-view="app"] .p-topbar__right,
  html.pulse[data-p-eff-view="app"] .p-topbar__actions {
    flex-wrap: nowrap !important;
    gap: 5px;
    min-width: 0;
  }
  html.pulse[data-p-eff-view="app"] .p-topbar .p-scope-chip__state,
  html.pulse[data-p-eff-view="app"] .p-topbar .p-role-badge {
    display: none !important;
  }
  html.pulse[data-p-eff-view="app"] .p-topbar__actions .pcl-btn,
  html.pulse[data-p-eff-view="app"] .p-topbar__actions .p-btn {
    height: 30px;
    padding: 0 9px;
    font-size: 11.5px;
    border-radius: 9px;
    white-space: nowrap;
  }

  /* Reviews (/lk/reviews) Native App Cards */
  html.pulse[data-p-eff-view="app"] .prv-head,
  html.pulse[data-p-eff-view="app"] .ptk-head,
  html.pulse[data-p-eff-view="app"] .prk-head {
    flex-direction: column;
    align-items: stretch !important;
    gap: 10px;
    margin-bottom: 12px;
  }
  html.pulse[data-p-eff-view="app"] .prv-title,
  html.pulse[data-p-eff-view="app"] .ptk-title,
  html.pulse[data-p-eff-view="app"] .prk-title,
  html.pulse[data-p-eff-view="app"] .p-page-title {
    font-size: 20px !important;
    line-height: 1.2;
  }
  html.pulse[data-p-eff-view="app"] .prv-kpis,
  html.pulse[data-p-eff-view="app"] .ptk-kpis,
  html.pulse[data-p-eff-view="app"] .prk-kpis {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 8px !important;
  }
  html.pulse[data-p-eff-view="app"] .prv-card,
  html.pulse[data-p-eff-view="app"] .ptk-card,
  html.pulse[data-p-eff-view="app"] .prk-card,
  html.pulse[data-p-eff-view="app"] .p-card {
    border-radius: 16px !important;
  }

  /* Responsive mobile tables -> horizontal scroll without breaking viewport */
  html.pulse[data-p-eff-view="app"] table {
    max-width: 100%;
  }
}

/* ---------------- SIA («Ask SIA» / «Спросить SIA») in-cabinet AI assistant ---------------- */
.p-topbar .p-btn.p-sia-trigger,
.p-sia-trigger {
  position: relative;
  display: inline-flex; align-items: center; justify-content: center;
  width: 124px; height: 34px; padding: 0 !important;
  border-radius: 999px; border: 0 !important;
  background: transparent url('/images/ask-sia-vermilion.svg') center / contain no-repeat !important;
  box-shadow: none !important;
  cursor: pointer; flex: none;
  transition: transform 0.14s ease, filter 0.16s ease;
}
.p-topbar .p-btn.p-sia-trigger:hover,
.p-sia-trigger:hover {
  background: transparent url('/images/ask-sia-vermilion.svg') center / contain no-repeat !important;
  border-color: transparent !important;
  transform: translateY(-1px);
  filter: drop-shadow(0 5px 12px rgba(255, 75, 43, 0.28));
}
.p-topbar .p-btn.p-sia-trigger:active,
.p-topbar .p-btn.p-sia-trigger[aria-expanded="true"],
.p-sia-trigger:active,
.p-sia-trigger[aria-expanded="true"] {
  background: transparent url('/images/ask-sia-vermilion.svg') center / contain no-repeat !important;
  border-color: transparent !important;
  transform: translateY(1px);
  filter: drop-shadow(0 2px 6px rgba(255, 75, 43, 0.25));
}
.p-sia-trigger__pill {
  display: none !important;
}
.p-sia-trigger__logo {
  display: none !important;
  width: 32px; height: 32px; border-radius: 50%; flex: none;
  box-shadow: 0 2px 8px rgba(20, 20, 20, 0.14);
}
.p-sia-trigger__label {
  display: none !important;
}
.p-sia-trigger__badge {
  position: absolute; top: -4px; right: -4px;
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px;
  background: #141414; color: #fff; font-size: 10.5px; font-weight: 700;
  border: 1.5px solid #fff;
}
@media (max-width: 640px) {
  .p-topbar .p-btn.p-sia-trigger,
  .p-sia-trigger,
  .p-topbar .p-btn.p-sia-trigger:hover,
  .p-topbar .p-btn.p-sia-trigger[aria-expanded="true"] {
    width: 34px; height: 34px;
    background: transparent !important;
  }
  .p-sia-trigger__logo { display: block !important; width: 32px; height: 32px; }
}
html.pulse[data-p-eff-view="app"] .p-topbar .p-btn.p-sia-trigger,
html.pulse[data-p-eff-view="app"] .p-sia-trigger,
html.pulse[data-p-eff-view="app"] .p-topbar .p-btn.p-sia-trigger:hover,
html.pulse[data-p-eff-view="app"] .p-topbar .p-btn.p-sia-trigger[aria-expanded="true"] {
  width: 34px; height: 34px;
  background: transparent !important;
}
html.pulse[data-p-eff-view="app"] .p-sia-trigger__logo { display: block !important; width: 32px; height: 32px; }

.p-sia-backdrop {
  position: fixed; inset: 0; z-index: 88; background: rgba(15, 23, 42, 0.32);
  backdrop-filter: blur(2px);
}
.p-sia {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 89;
  width: 440px; max-width: 100vw;
  display: flex; flex-direction: column;
  background: var(--p-surface); color: var(--p-ink);
  border-left: 1px solid var(--p-border);
  box-shadow: -12px 0 38px rgba(15, 23, 42, 0.18);
  transition: width 0.2s ease;
}
.p-sia[hidden], .p-sia-backdrop[hidden] { display: none !important; }
.p-sia[data-sia-wide="1"] { width: min(680px, 100vw); }

.p-sia__head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 14px 16px; border-bottom: 1px solid var(--p-divider);
  background: linear-gradient(135deg, rgba(20, 20, 20, 0.04) 0%, rgba(255, 75, 43, 0.07) 100%);
}
.p-sia__brand { display: flex; align-items: center; gap: 11px; min-width: 0; }
.p-sia__logo { width: 38px; height: 38px; border-radius: 50%; flex: none; box-shadow: 0 3px 10px rgba(20, 20, 20, 0.12); }
.p-sia__meta { min-width: 0; }
.p-sia__title-row { display: flex; align-items: center; gap: 8px; }
.p-sia__title { font-size: 16px; font-weight: 700; letter-spacing: -0.01em; color: var(--p-ink); }
.p-sia__status {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 11px; font-weight: 600; padding: 2px 7px; border-radius: 999px;
  background: var(--p-success-soft); color: var(--p-success-ink);
}
.p-sia__status-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--p-success); }
.p-sia__sub { font-size: 12px; color: var(--p-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.p-sia__tools { display: flex; align-items: center; gap: 4px; flex: none; }

.p-sia__modebar {
  padding: 8px 16px; border-bottom: 1px solid var(--p-divider); background: var(--p-surface-2);
  display: flex; align-items: center; justify-content: space-between;
}
.p-sia__seg { width: 100%; display: grid; grid-template-columns: 1fr 1fr; }
.p-sia__seg button {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  font-size: 12px; font-weight: 500; padding: 6px 10px;
}

.p-sia__readonly {
  padding: 8px 16px; font-size: 12px; background: var(--p-warning-soft); color: var(--p-warning-ink);
  border-bottom: 1px solid var(--p-divider);
}

.p-sia__body {
  flex: 1; overflow-y: auto; padding: 16px;
  display: flex; flex-direction: column; gap: 14px;
}
.p-sia__welcome-card {
  padding: 15px; border-radius: 14px; border: 1px solid var(--p-border);
  background: linear-gradient(155deg, var(--p-surface) 0%, var(--p-surface-2) 100%);
}
.p-sia__welcome-head { display: flex; align-items: center; gap: 10px; font-size: 14px; color: var(--p-ink); }
.p-sia__welcome-head img { border-radius: 50%; flex: none; }
.p-sia__welcome-text { margin: 8px 0 10px; font-size: 13px; line-height: 1.5; color: var(--p-text); }
.p-sia__engine-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.p-sia__engine-pill {
  font-size: 11px; font-weight: 600; padding: 3px 8px; border-radius: 6px;
  background: var(--p-accent-soft); color: var(--p-primary);
}
.p-sia__engine-pill--backup { background: var(--p-surface); color: var(--p-muted); border: 1px solid var(--p-border); }

.p-sia__quick { margin-top: 12px; }
.p-sia__quick-label { font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: var(--p-muted); margin-bottom: 8px; }
.p-sia__chips { display: flex; flex-wrap: wrap; gap: 6px; }
.p-sia__chip {
  font: inherit; font-size: 12.5px; padding: 6px 11px; border-radius: 999px;
  border: 1px solid var(--p-border); background: var(--p-surface); color: var(--p-text);
  cursor: pointer; text-align: left; transition: border-color 0.14s ease, background 0.14s ease, color 0.14s ease;
}
.p-sia__chip:hover { border-color: var(--p-primary); background: var(--p-accent-soft); color: var(--p-ink); }

.p-sia__messages { display: flex; flex-direction: column; gap: 12px; }
.p-sia-msg { display: flex; flex-direction: column; gap: 6px; max-width: 92%; }
.p-sia-msg--user { align-self: flex-end; align-items: flex-end; }
.p-sia-msg--assistant { align-self: flex-start; align-items: flex-start; max-width: 96%; }
.p-sia-msg__bubble {
  padding: 11px 14px; border-radius: 14px; font-size: 13.5px; line-height: 1.52;
  word-break: break-word;
}
.p-sia-msg--user .p-sia-msg__bubble {
  background: linear-gradient(135deg, #4f46e5 0%, #3b82f6 100%);
  color: #fff; border-bottom-right-radius: 4px;
}
.p-sia-msg--assistant .p-sia-msg__bubble {
  background: var(--p-surface-2); color: var(--p-ink);
  border: 1px solid var(--p-border); border-bottom-left-radius: 4px;
}
.p-sia-msg__bubble p { margin: 0 0 8px; }
.p-sia-msg__bubble p:last-child { margin-bottom: 0; }
.p-sia-msg__bubble code {
  font-family: 'Geist Mono', monospace; font-size: 12px; padding: 1px 5px;
  border-radius: 4px; background: rgba(15, 23, 42, 0.08);
}

/* Sia analyst answers (SMARTBTN-20261020-SIA-DATA-ACCESS): lists, tables, notes, the data source line */
.p-sia-msg__bubble strong { font-weight: 650; color: var(--p-ink); }
.p-sia-msg--user .p-sia-msg__bubble strong { color: inherit; }
.p-sia-msg__bubble .p-sia-list { margin: 0 0 8px; padding-left: 18px; }
.p-sia-msg__bubble .p-sia-list li { margin: 0 0 4px; }
.p-sia-msg__bubble .p-sia-list li:last-child { margin-bottom: 0; }
.p-sia-msg__bubble .p-sia-h { margin-top: 4px; }
.p-sia-msg__bubble .p-sia-table-wrap { margin: 0 0 8px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.p-sia-msg__bubble .p-sia-table { width: 100%; border-collapse: collapse; font-size: 12.5px; line-height: 1.4; }
.p-sia-msg__bubble .p-sia-table th,
.p-sia-msg__bubble .p-sia-table td { padding: 5px 8px; border-bottom: 1px solid var(--p-divider); text-align: left; vertical-align: top; }
.p-sia-msg__bubble .p-sia-table th { font-weight: 600; color: var(--p-muted); white-space: nowrap; }
.p-sia-msg__bubble .p-sia-table .is-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.p-sia-msg__bubble .p-sia-table tr:last-child td { border-bottom: 0; }
.p-sia-msg__bubble .p-sia-note { padding: 6px 10px; border-left: 3px solid var(--p-primary); background: var(--p-surface); border-radius: 0 8px 8px 0; }
.p-sia-msg__bubble .p-sia-source { font-size: 12px; color: var(--p-muted); }

/* Action proposal / execution card inside SIA */
.p-sia-card {
  width: 100%; border-radius: 12px; border: 1px solid var(--p-border);
  background: var(--p-surface); overflow: hidden; box-shadow: var(--p-shadow-sm);
}
.p-sia-card[data-status="pending"] { border-color: rgba(79, 70, 229, 0.45); }
.p-sia-card[data-status="completed"] { border-color: var(--p-success); }
.p-sia-card__head {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 10px 13px; background: var(--p-surface-2); border-bottom: 1px solid var(--p-divider);
}
.p-sia-card__title { font-size: 13px; font-weight: 600; color: var(--p-ink); }
.p-sia-card__badge {
  font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 999px; white-space: nowrap;
}
.p-sia-card[data-status="pending"] .p-sia-card__badge { background: var(--p-warning-soft); color: var(--p-warning-ink); }
.p-sia-card[data-status="completed"] .p-sia-card__badge { background: var(--p-success-soft); color: var(--p-success-ink); }
.p-sia-card[data-status="canceled"] .p-sia-card__badge { background: var(--p-surface); color: var(--p-muted); border: 1px solid var(--p-border); }
.p-sia-card[data-status="failed"] .p-sia-card__badge { background: var(--p-danger-soft, #fee2e2); color: var(--p-danger, #dc2626); }

.p-sia-card__body { padding: 11px 13px; display: flex; flex-direction: column; gap: 8px; }
.p-sia-card__summary { font-size: 12.5px; color: var(--p-muted); margin: 0; }
.p-sia-diff { display: flex; flex-direction: column; gap: 6px; }
.p-sia-diff__row {
  padding: 7px 9px; border-radius: 8px; background: var(--p-surface-2);
  font-size: 12px; display: flex; flex-direction: column; gap: 3px;
}
.p-sia-diff__label { font-weight: 600; color: var(--p-ink); }
.p-sia-diff__vals { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; color: var(--p-text); }
.p-sia-diff__from { color: var(--p-muted); text-decoration: line-through; }
.p-sia-diff__to { font-weight: 600; color: var(--p-primary); }

.p-sia-card__foot {
  padding: 9px 13px; border-top: 1px solid var(--p-divider);
  display: flex; flex-wrap: wrap; align-items: center; gap: 7px; background: var(--p-surface);
}
.p-sia-sec-links { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.p-sia-sec-link {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 11px; border-radius: 8px; font-size: 12.5px; font-weight: 600;
  background: var(--p-accent-soft); color: var(--p-primary); text-decoration: none;
  border: 1px solid rgba(79, 70, 229, 0.25);
}
.p-sia-sec-link:hover { background: var(--p-primary); color: #fff; }

.p-sia__thinking {
  display: flex; align-items: center; gap: 9px; padding: 10px 12px;
  border-radius: 10px; background: var(--p-surface-2); color: var(--p-muted); font-size: 12.5px;
}
.p-sia__spinner {
  width: 15px; height: 15px; border-radius: 50%;
  border: 2px solid var(--p-border); border-top-color: var(--p-primary);
  animation: p-sia-spin 0.75s linear infinite;
}
@keyframes p-sia-spin { to { transform: rotate(360deg); } }

.p-sia__composer {
  padding: 12px 16px; border-top: 1px solid var(--p-divider); background: var(--p-surface);
  display: flex; align-items: flex-end; gap: 8px;
}
.p-sia__input {
  flex: 1; resize: none; min-height: 42px; max-height: 120px;
  padding: 9px 12px; border-radius: 10px; border: 1px solid var(--p-border);
  background: var(--p-surface-2); color: var(--p-ink); font: inherit; font-size: 13.5px;
}
.p-sia__input:focus { outline: none; border-color: var(--p-primary); background: var(--p-surface); }
.p-sia__send { height: 42px; padding: 0 14px; border-radius: 10px; flex: none; }

/* ==========================================================================
   Role-Aware PWA Shell, Compact Install Toast, Offline Bar & Mobile Polish
   ========================================================================== */
html.pulse[data-p-eff-view="app"] .p-app-role-pill--ro {
  background: rgba(245, 158, 11, .14);
  border-color: rgba(245, 158, 11, .34);
  color: #B45309;
}
html.pulse[data-theme="dark"][data-p-eff-view="app"] .p-app-role-pill--ro {
  color: #FBBF24;
}

.p-pwa-ro-banner {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; border-radius: 14px;
  background: rgba(245, 158, 11, .12);
  border: 1px solid rgba(245, 158, 11, .32);
  color: var(--p-warning-ink, #92400E);
  font-size: 12.5px; font-weight: 600; line-height: 1.35;
}
.p-pwa-ro-banner svg { flex: none; color: #D97706; }

/* Hide primary write actions on mobile when in read-only observer role */
html.pulse[data-p-readonly="1"] [data-p-write-action],
html.pulse[data-p-readonly="1"][data-p-eff-view="app"] .p-topbar__web-actions .p-btn--primary,
html.pulse[data-p-readonly="1"] .dlg-composer button[type="submit"] {
  display: none !important;
}

/* Compact Floating PWA Install Toast above the tabbar (no 280px page padding) */
.p-pwa-banner {
  padding: 11px 13px;
  border-radius: 16px;
  gap: 10px;
  width: min(390px, calc(100vw - 20px));
}
.p-pwa-banner__icon {
  width: 36px; height: 36px; border-radius: 11px; font-size: 17px;
}
.p-pwa-banner__title { font-size: 13px; }
.p-pwa-banner__text { font-size: 11.5px; line-height: 1.35; }
.p-pwa-banner__actions { gap: 6px; margin-top: 3px; }
.p-pwa-banner__btn { height: 29px; padding: 0 10px; font-size: 11.5px; border-radius: 8px; text-decoration: none; }

/* Offline status bar & seat-locked notice pill */
.p-offline-bar[hidden] { display: none !important; }
.p-offline-bar {
  position: fixed;
  left: 12px; right: 12px;
  bottom: calc(var(--p-tabbar-h, 64px) + env(safe-area-inset-bottom, 0px) + 10px);
  z-index: 94;
  max-width: 460px; margin: 0 auto;
  padding: 10px 14px; border-radius: 13px;
  background: #14161D; color: #F8FAFC;
  border: 1px solid rgba(255, 255, 255, .14);
  box-shadow: 0 12px 28px rgba(10, 12, 20, .32);
  font-size: 12.5px; font-weight: 600; text-align: center;
}
.p-offline-bar.p-seat-note {
  background: #1E293B;
  border-color: rgba(245, 158, 11, .4);
}

/* Dialog thread header: collapse secondary tools behind ··· on mobile <= 720px */
.p-dlg-more { display: none; }
@media (max-width: 720px) {
  .dlg-thread__head.p-has-more {
    position: relative;
  }
  .dlg-thread__head.p-has-more .p-dlg-more {
    display: inline-flex; align-items: center; justify-content: center;
    width: 34px; height: 34px; border-radius: 10px;
    border: 1px solid var(--p-border); background: var(--p-surface);
    color: var(--p-ink); font-size: 16px; font-weight: 700; cursor: pointer; flex: none;
  }
  .dlg-thread__head.p-has-more:not(.is-tools-open) .dlg-thread__tools {
    display: none !important;
  }
  .dlg-thread__head.p-has-more.is-tools-open .dlg-thread__tools {
    display: flex !important; flex-wrap: wrap; gap: 6px;
    position: absolute; top: calc(100% + 4px); right: 10px; z-index: 40;
    padding: 8px; border-radius: 14px;
    background: var(--p-surface); border: 1px solid var(--p-border);
    box-shadow: var(--p-shadow-lg);
  }
}
