/* ==========================================================================
   QUATRON PLATFORM — DESIGN SYSTEM LAYER
   One coherent visual language over the shell. Loaded last. Tokens-only:
   consumes Theme Engine variables + color-mix; adds NO hardcoded brand color.
   Sections: scale · header · workspace · daily · cards · dock · popovers ·
   forms · components · a11y · rtl · responsive · print.
   Architecture, data, authz, product boundaries: untouched.
   ========================================================================== */

/* --- 0. Derived scale (aliases over official tokens; safe fallbacks) ------- */
:root{
  /* Motion — Brand Tokens motion.curve / motion.durations. The former bespoke
     curve cubic-bezier(.22,.9,.32,1) and .24s base are replaced by the brand's. */
  --ease:var(--qt-motion-curve);
  --dur-fast:var(--qt-motion-fast);
  --dur:var(--qt-motion-base);
  --dur-reveal:var(--qt-motion-reveal);
  /* Elevation — all three registers derive from the brand ink. */
  --elev-1:0 1px 2px color-mix(in srgb,var(--qtr-shadow-color) 60%,transparent);
  --elev-2:0 8px 24px color-mix(in srgb,var(--qtr-shadow-color) 55%,transparent);
  --elev-3:0 20px 56px color-mix(in srgb,var(--qtr-shadow-color) 65%,transparent);
  --ring:0 0 0 2px color-mix(in srgb,var(--accent) 45%,transparent);
  --hairline:color-mix(in srgb,var(--shell-line,var(--glass-border)) 90%,transparent);
  /* Brand v1.1: the type scale is now the brand's (typography.scale) rather
     than the 42/36/28 steps inherited from the decommissioned AQARI system.
     The --aq-* names are kept as deprecated aliases so the ~30 existing call
     sites in this sheet keep resolving; new code uses --qtr-font-size-*. */
  --aq-font-size-hero:var(--qtr-font-size-hero);
  --aq-font-size-2xl:var(--qtr-font-size-2xl);
  --aq-font-size-xl:var(--qtr-font-size-xl);
  --aq-font-size-lg:var(--qtr-font-size-lg);
  --aq-font-size-md:var(--qtr-font-size-md);
  --aq-font-size-sm:var(--qtr-font-size-sm);
  --aq-font-size-xs:var(--qtr-font-size-xs);
}

/* --- 1. Typography scale bridge (Typography control governs the shell) ----- */
.qtr-hero-card h1{font-size:clamp(28px,2vw + 20px,var(--aq-font-size-hero,42px));line-height:1.06;letter-spacing:-.015em;font-weight:850}
.qtr-hero-card p,.qtr-side-card p{font-size:var(--aq-font-size-md,16px);line-height:1.7}
.qtr-side-card h2,.qtr-daily-brief h2{font-size:var(--aq-font-size-lg,20px);font-weight:820;letter-spacing:-.006em;margin:0}
.qtr-section-title{font-size:var(--aq-font-size-lg,20px);font-weight:820;letter-spacing:-.006em}
.qtr-placeholder h1{font-size:var(--aq-font-size-2xl,36px);letter-spacing:-.012em;font-weight:850}
.qtr-product-card h3{font-size:calc(17px * var(--qtr-type-scale));font-weight:800;letter-spacing:-.004em}
.qtr-product-card p{font-size:calc(13px * var(--qtr-type-scale));line-height:1.55}
.qtr-brief-priority strong{font-size:var(--aq-font-size-md,16px)}
.qtr-chip{font-size:calc(12.5px * var(--qtr-type-scale));font-weight:700}
.qtr-brand b{font-size:calc(15px * var(--qtr-type-scale));font-weight:850;letter-spacing:-.01em}
.qtr-brand em{font-size:calc(11.5px * var(--qtr-type-scale))}

/* --- 2. GLOBAL HEADER ------------------------------------------------------ */
.qtr-header{
  gap:var(--qtr-space-3);
  padding-inline:var(--qtr-space-5);
  background:linear-gradient(180deg,
    color-mix(in srgb,var(--shell-surface) 96%,transparent),
    color-mix(in srgb,var(--shell-surface) 88%,transparent));
  border-bottom:1px solid var(--hairline);
  box-shadow:var(--elev-1);
  position:sticky;top:0}
.qtr-brand{gap:12px;padding:4px 6px;border-radius:var(--radius-control);transition:background var(--dur) var(--ease)}
.qtr-brand:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}
.qtr-logo{box-shadow:0 8px 20px color-mix(in srgb,var(--accent) 30%,transparent),inset 0 1px 0 rgba(255,255,255,.25)}
/* Unified ghost icon-button language */
.qtr-icon,.qtr-action,.qtr-user,.qtr-search{
  background:color-mix(in srgb,var(--shell-surface) 70%,transparent);
  border:1px solid var(--hairline);
  box-shadow:var(--elev-1);
  transition:transform var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.qtr-icon:hover,.qtr-action:hover,.qtr-user:hover{transform:translateY(-1px);background:color-mix(in srgb,var(--accent) 8%,var(--shell-surface));border-color:var(--accent-border);box-shadow:var(--elev-2)}
.qtr-icon:active,.qtr-action:active,.qtr-user:active{transform:translateY(0)}
.qtr-icon svg,.qtr-action svg{width:18px;height:18px}
/* Quick action = primary accent button */
#qtr-quick{background:var(--primary-button-bg,linear-gradient(155deg,var(--accent),var(--accent-hover)));color:#fff;border-color:transparent;box-shadow:0 8px 22px color-mix(in srgb,var(--accent) 32%,transparent)}
#qtr-quick svg{color:#fff}
#qtr-quick:hover{color:#fff;filter:brightness(1.04);box-shadow:0 12px 28px color-mix(in srgb,var(--accent) 38%,transparent)}
/* Search field */
.qtr-search{gap:9px;transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.qtr-search svg{color:var(--text-muted);width:17px;height:17px}
.qtr-search:focus-within{border-color:var(--accent-border);box-shadow:var(--ring);background:var(--shell-surface)}
.qtr-search input::placeholder{color:var(--text-muted)}
/* Profile chip: subtle leading divider + polished avatar */
.qtr-user{position:relative;gap:9px}
.qtr-user::before{content:"";position:absolute;inset-inline-start:calc(var(--qtr-space-2) * -1);inset-block:9px;width:1px;background:var(--hairline)}
.qtr-avatar{background:linear-gradient(150deg,color-mix(in srgb,var(--accent) 24%,transparent),color-mix(in srgb,var(--accent) 10%,transparent));color:var(--accent-text);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent)}
.qtr-avatar .qtr-status-dot{width:9px;height:9px}
.qtr-user b{max-width:min(190px,16vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:750}
.qtr-badge{box-shadow:0 2px 6px color-mix(in srgb,var(--qtr-danger) 40%,transparent);border:1.5px solid var(--shell-surface)}
.qtr-brand b,.qtr-brand em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:190px}
/* Overflow menu polish */
.qtr-header-overflow{box-shadow:var(--elev-3);padding:8px;gap:6px;max-height:min(72vh,560px);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.qtr-header-overflow::-webkit-scrollbar{width:8px}
.qtr-header-overflow::-webkit-scrollbar-thumb{background:var(--shell-line);border-radius:8px}
@media (max-width:900px){
  .qtr-header-overflow{max-height:calc(100dvh - var(--qtr-header-height) - 20px);width:min(400px,calc(100vw - 20px))}
}
.qtr-overflow-item{transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.qtr-overflow-item:hover{transform:translateY(-1px)}
/* D7 — registry-driven overflow: group headers span both columns; disabled items dim */
.qtr-header-overflow .qtr-overflow-group{grid-column:1/-1;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--shell-muted);padding:8px 6px 2px;opacity:.85}
.qtr-header-overflow .qtr-overflow-item.qtr-nav-disabled{opacity:.5;cursor:default;pointer-events:none}

/* --- 3. MAIN WORKSPACE ----------------------------------------------------- */
.qtr-home{padding:clamp(20px,3.2vw,52px)}
.qtr-dashboard{gap:clamp(14px,1.4vw,20px)}
/* Hero: accent wash + brand hairline + context pills */
.qtr-hero-card{position:relative;isolation:isolate;overflow:hidden;
  background:
    radial-gradient(120% 140% at 100% 0,color-mix(in srgb,var(--accent) 12%,transparent),transparent 55%),
    var(--surface-secondary);
  box-shadow:var(--elev-1)}
.qtr-hero-card::before{content:"";position:absolute;inset-block-start:0;inset-inline:0;height:3px;
  background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 25%,transparent));pointer-events:none}
.qtr-hero-card h1{margin:0 0 6px}
.qtr-chips{gap:8px;margin-top:20px}
.qtr-chip{min-height:34px;padding:6px 13px;background:color-mix(in srgb,var(--shell-surface) 80%,transparent);border-color:var(--hairline);color:var(--text-secondary);box-shadow:var(--elev-1);transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}
.qtr-chip svg{width:15px;height:15px;color:var(--accent-text)}
.qtr-chip:hover{transform:translateY(-1px);border-color:var(--accent-border)}
/* Side cards / daily surfaces */
.qtr-side-card,.qtr-hero-card,.qtr-product-card{border-radius:var(--radius);border:1px solid var(--hairline)}
.qtr-side-card{background:var(--surface-secondary);box-shadow:var(--elev-1);display:flex;flex-direction:column;gap:14px}
.qtr-side-card>div:first-child p{color:var(--text-muted)}
/* Eyebrow label above section titles */
.qtr-section-title{position:relative;display:flex;align-items:center;gap:10px}
.qtr-section-title::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--hairline),transparent)}

/* --- 4. DAILY EXPERIENCE surfaces ------------------------------------------ */
.qtr-brief-priority{background:
    linear-gradient(180deg,color-mix(in srgb,var(--accent) 7%,transparent),transparent),
    var(--shell-surface);
  border-color:color-mix(in srgb,var(--accent) 22%,var(--hairline));border-radius:var(--radius-control)}
.qtr-brief-priority small{color:var(--accent-text);font-weight:800;letter-spacing:.02em;text-transform:uppercase;font-size:.68rem}
.qtr-widget-action{min-height:40px;border-radius:var(--radius-control);border-color:var(--hairline);background:color-mix(in srgb,var(--accent) 8%,var(--surface-secondary));color:var(--accent-text);transition:transform var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.qtr-widget-action:hover{transform:translateY(-1px);box-shadow:var(--elev-1);background:color-mix(in srgb,var(--accent) 14%,var(--surface-secondary))}
.qtr-widget-action svg{width:17px;height:17px}
.qtr-signal{border-radius:var(--radius-control);border-color:var(--hairline);transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.qtr-signal:hover{border-color:var(--accent-border)}
.qtr-signal>i,.qtr-journey>i{width:34px;height:34px;padding:8px;border-radius:10px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-signal small,.qtr-journey small{font-weight:700;color:var(--text-muted);font-size:.72rem}
.qtr-signal strong,.qtr-journey strong{font-weight:750}
.qtr-journey:hover{background:var(--active-bg);color:var(--accent-text)}

/* --- 5. PRODUCT CARDS ------------------------------------------------------ */
.qtr-grid{gap:clamp(12px,1.2vw,16px)}
.qtr-product-card{position:relative;overflow:hidden;background:var(--surface-secondary);box-shadow:var(--elev-1);
  transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.qtr-product-card:hover{transform:translateY(-3px);border-color:var(--accent-border);box-shadow:var(--elev-2)}
.qtr-product-card:active{transform:translateY(-1px)}
.qtr-product-card .icon{width:46px;height:46px;border-radius:14px;background:linear-gradient(150deg,color-mix(in srgb,var(--accent) 20%,transparent),color-mix(in srgb,var(--accent) 8%,transparent));color:var(--accent-text);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 16%,transparent);transition:transform var(--dur-fast) var(--ease)}
.qtr-product-card:hover .icon{transform:scale(1.06)}
.qtr-product-card::after{content:"";position:absolute;inset-block-start:18px;inset-inline-end:18px;width:18px;height:18px;
  background:currentColor;opacity:0;color:var(--accent-text);
  -webkit-mask:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M8 7h9v9'/%3E%3C/svg%3E");
  mask:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 17 17 7M8 7h9v9'/%3E%3C/svg%3E");
  transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.qtr-product-card:hover::after{opacity:.8;transform:translate(2px,-2px)}
[dir="rtl"] .qtr-product-card::after{transform:scaleX(-1)}
[dir="rtl"] .qtr-product-card:hover::after{transform:translate(-2px,-2px) scaleX(-1)}

/* --- 6. ADAPTIVE DOCK ------------------------------------------------------ */
.qtr-dock{padding:10px 9px;box-shadow:var(--elev-2);gap:6px}
.qtr-dock button{min-height:46px;border-radius:13px;gap:12px;color:var(--text-muted);font-weight:750;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}
.qtr-dock button:hover{background:color-mix(in srgb,var(--accent) 9%,transparent);color:var(--text-primary)}
.qtr-dock button.active{background:var(--active-bg);color:var(--accent-text)}
.qtr-dock button.active::before{inset-block:12px;width:3px;border-radius:999px;background:var(--accent)}
.qtr-dock button svg{width:20px;height:20px}
.qtr-dock-pin{margin-top:2px;color:var(--text-muted)}

/* --- 7. POPOVERS / PANELS (search · notifications · quick · help · profile) - */
.qtr-popover{box-shadow:var(--elev-3);border-color:var(--hairline);border-radius:var(--radius)}
.qtr-popover-head{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 60%,transparent),transparent)}
.qtr-popover-head b{font-weight:820}
.qtr-action-grid button,.qtr-help-actions button,.qtr-profile-actions button,.qtr-overflow-item{transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.qtr-action-grid button:hover,.qtr-help-actions button:hover,.qtr-profile-actions button:hover{transform:translateY(-1px);border-color:var(--accent-border);background:var(--active-bg)}
.qtr-search-result-row.active,.qtr-notification.unread{background:var(--active-bg)}
.qtr-notification-icon{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-profile-avatar{background:linear-gradient(150deg,color-mix(in srgb,var(--accent) 22%,transparent),color-mix(in srgb,var(--accent) 8%,transparent));color:var(--accent-text)}
.qtr-profile-head b{font-weight:820}
.qtr-context-list dt{font-weight:700;font-size:.82rem}
.qtr-context-list dd{overflow-wrap:anywhere;font-weight:650}

/* --- 8. FORMS / LOGIN ------------------------------------------------------ */
.qtr-field input,.qtr-login-card input{transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.qtr-field input:focus,.qtr-login-card input:focus{border-color:var(--accent-border);box-shadow:var(--ring)}
.qtr-login-card{box-shadow:var(--elev-3)}
.qtr-login-card button[type=submit],.qtr-login-card>button{transition:filter var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.qtr-login-card button[type=submit]:hover{filter:brightness(1.04);transform:translateY(-1px);box-shadow:0 14px 30px color-mix(in srgb,var(--accent) 30%,transparent)}

/* --- 9. COMPONENT PRIMITIVES ---------------------------------------------- */
.qtr-skeleton{position:relative;overflow:hidden;background:var(--surface-secondary);border:1px solid var(--hairline);border-radius:var(--radius-control);min-height:16px}
.qtr-skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--text-muted) 16%,transparent),transparent);
  animation:qtr-shimmer 1.4s ease-in-out infinite}
.qtr-skeleton.line{height:13px;border-radius:999px}
.qtr-skeleton.block{min-height:120px;border-radius:var(--radius)}
@keyframes qtr-shimmer{100%{transform:translateX(100%)}}
.qtr-badge-soft{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:2px 10px;border-radius:999px;font-size:.72rem;font-weight:800;background:var(--accent-soft);color:var(--accent-text);border:1px solid var(--accent-border)}
.qtr-badge-soft[data-tone="success"]{background:var(--qtr-success-soft);color:var(--qtr-success-text);border-color:transparent}
.qtr-badge-soft[data-tone="warning"]{background:var(--qtr-warning-soft);color:var(--qtr-warning-text);border-color:transparent}
.qtr-badge-soft[data-tone="danger"]{background:var(--qtr-danger-soft);color:var(--qtr-danger-text);border-color:transparent}
.qtr-empty{display:grid;gap:10px;place-items:center;color:var(--text-muted)}
.qtr-empty svg{width:26px;height:26px;color:var(--text-muted);opacity:.66}
.qtr-placeholder p{max-width:48ch;margin-inline:auto}
.qtr-placeholder .qtr-logo{box-shadow:var(--elev-2)}

/* --- 10. ACCESSIBILITY ----------------------------------------------------- */
.qtr-icon:focus-visible,.qtr-action:focus-visible,.qtr-user:focus-visible,.qtr-brand:focus-visible,
.qtr-dock button:focus-visible,.qtr-product-card:focus-visible,.qtr-journey:focus-visible,
.qtr-widget-action:focus-visible,.qtr-overflow-item:focus-visible,.qtr-chip:focus-visible,
.qtr-search-result:focus-visible,.qtr-notification-read:focus-visible,
.qtr-action-grid button:focus-visible,.qtr-help-actions button:focus-visible,.qtr-profile-actions button:focus-visible{
  outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-control)}
@media (pointer:coarse){
  .qtr-icon,.qtr-action,.qtr-user{min-height:44px}
  .qtr-dock button{min-height:48px}
  .qtr-overflow-item,.qtr-action-grid button,.qtr-help-actions button,.qtr-profile-actions button{min-height:48px}
}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
}
@media (prefers-reduced-transparency: reduce){
  :root{--blur:0px!important}
  .qtr-header,.qtr-dock,.qtr-popover,.qtr-workspace-studio-drawer,.qtr-personalize-fab,
  .login-card,.qtr-surface,.qtr-header-overflow{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
}
@media (prefers-contrast: more){
  :root{--glass-border:color-mix(in srgb,var(--text-primary) 42%,transparent)!important;
    --shell-line:color-mix(in srgb,var(--text-primary) 42%,transparent)!important;
    --hairline:color-mix(in srgb,var(--text-primary) 42%,transparent)!important;
    --text-muted:var(--text-secondary)!important}
  .qtr-action,.qtr-icon,.qtr-user,.qtr-search,.qtr-product-card,.qtr-side-card,.qtr-hero-card,.qtr-dock button{border-width:1.5px}
}
@media (forced-colors: active){
  .qtr-icon,.qtr-action,.qtr-user,.qtr-dock button,.qtr-product-card,.qtr-overflow-item,.qtr-chip{border:1px solid CanvasText}
  .qtr-dock button.active,.qtr-notification.unread,.qtr-search-result-row.active{outline:2px solid Highlight}
  #qtr-quick{border:1px solid CanvasText}
}

/* --- 11. RESPONSIVE refinements -------------------------------------------- */
@media (max-width:1080px){
  #qtr-quick{padding:0;width:var(--qtr-control-height)}
  #qtr-quick span{display:none}
}
@media (max-width:900px){
  .qtr-header{box-shadow:var(--elev-1)}
  .qtr-user::before{display:none}
  .qtr-dock{box-shadow:var(--elev-3)}
}
@media (max-width:560px){
  .qtr-home{padding:14px}
  .qtr-hero-card h1{font-size:clamp(24px,7vw,30px)}
  .qtr-chips{margin-top:14px}
}

/* --- 11b. Daily quote slot + Platform Administration ----------------------- */
.qtr-brief-quote{display:grid;gap:4px;padding:12px 14px;border:1px solid var(--hairline);
  border-radius:var(--radius-control);background:color-mix(in srgb,var(--accent) 5%,var(--surface-secondary))}
.qtr-brief-quote small{color:var(--accent-text);font-weight:800;letter-spacing:.02em;
  text-transform:uppercase;font-size:.66rem}
.qtr-brief-quote em{font-style:normal;line-height:1.5;color:var(--text-primary);font-weight:600}

.qtr-admin{display:grid;gap:18px}
.qtr-admin-head h1{margin:0 0 4px;font-size:var(--aq-font-size-2xl,32px);letter-spacing:-.01em;font-weight:850}
.qtr-admin-head p{margin:0;color:var(--text-muted)}
.qtr-admin-tabs{display:flex;flex-wrap:wrap;gap:6px;padding:6px;border:1px solid var(--hairline);
  border-radius:var(--radius);background:var(--surface-secondary);box-shadow:var(--elev-1)}
.qtr-admin-tab{min-height:40px;padding:0 14px;border:0;border-radius:var(--radius-control);
  background:transparent;color:var(--text-secondary);font-weight:750;cursor:pointer;
  transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}
.qtr-admin-tab:hover{background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--text-primary)}
.qtr-admin-tab.active{background:var(--accent);color:#fff;box-shadow:0 8px 20px color-mix(in srgb,var(--accent) 28%,transparent)}
.qtr-admin-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.qtr-admin-body{border:1px solid var(--hairline);border-radius:var(--radius);
  background:var(--surface-secondary);box-shadow:var(--elev-1);padding:clamp(14px,2vw,22px);min-height:220px}
.qtr-admin-section-head{display:flex;align-items:center;gap:10px;margin:6px 0 12px}
.qtr-admin-section-head h2{margin:0;font-size:var(--aq-font-size-lg,20px);font-weight:820}
.qtr-admin-table-wrap{overflow-x:auto;border:1px solid var(--hairline);border-radius:var(--radius-control)}
.qtr-admin-table{width:100%;border-collapse:collapse;font-size:calc(13px * var(--qtr-type-scale))}
.qtr-admin-table th,.qtr-admin-table td{text-align:start;padding:10px 12px;border-bottom:1px solid var(--hairline);vertical-align:top}
.qtr-admin-table th{color:var(--text-muted);font-weight:800;font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;background:color-mix(in srgb,var(--surface) 50%,transparent)}
.qtr-admin-table tbody tr:last-child td,.qtr-admin-table tr:last-child td{border-bottom:0}
.qtr-admin-table small{color:var(--text-muted)}
.qtr-admin-note{margin:14px 0 0;color:var(--text-muted);font-size:.82rem;line-height:1.6;max-width:70ch}
.qtr-admin-json{margin:0;padding:14px;border:1px solid var(--hairline);border-radius:var(--radius-control);
  background:var(--surface);overflow:auto;font-size:12.5px;line-height:1.6;color:var(--text-primary);max-height:360px}
.qtr-admin-skeleton{display:grid;gap:10px}
.qtr-admin-skeleton .qtr-skeleton{height:40px}
@media (max-width:560px){.qtr-admin-tabs{overflow-x:auto;flex-wrap:nowrap}}

/* --- 11c. Users Management module ----------------------------------------- */
.qtr-btn{min-height:40px;padding:0 16px;border-radius:var(--radius-control);border:1px solid var(--hairline);
  background:var(--surface-secondary);color:var(--text-primary);font-weight:750;cursor:pointer;display:inline-flex;
  align-items:center;gap:8px;transition:transform var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}
.qtr-btn:hover{transform:translateY(-1px);box-shadow:var(--elev-1)}
.qtr-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.qtr-btn.primary{background:var(--primary-button-bg,linear-gradient(155deg,var(--accent),var(--accent-hover)));color:#fff;border-color:transparent}
.qtr-btn.ghost{background:color-mix(in srgb,var(--surface-secondary) 70%,transparent)}
.qtr-btn.sm{min-height:30px;padding:0 10px;font-size:.8rem}
.qtr-btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}
.qtr-users{display:grid;gap:16px}
.qtr-users-actions{display:flex;gap:8px}
.qtr-users-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.qtr-users-search{flex:1 1 240px;min-width:200px}
.qtr-users-toolbar select{min-height:var(--qtr-control-height);border:1px solid var(--hairline);border-radius:var(--radius-control);
  background:var(--shell-surface);color:var(--text-primary);padding:0 12px}
.qtr-bulkbar{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--accent-border);
  border-radius:var(--radius-control);background:var(--active-bg);color:var(--accent-text);font-weight:750}
.qtr-users-table .qtr-col-check{width:40px;text-align:center}
.qtr-linklike{border:0;background:transparent;color:inherit;text-align:start;cursor:pointer;font:inherit;padding:0}
.qtr-linklike:hover b{color:var(--accent-text);text-decoration:underline}
.qtr-linklike:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
.qtr-users-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text-muted);flex-wrap:wrap}
.qtr-pager-controls{display:flex;align-items:center;gap:10px}
.qtr-chip-x{border:0;background:transparent;color:inherit;cursor:pointer;font-weight:900;padding:0 2px;line-height:1}
.qtr-chip-x:hover{color:var(--qtr-danger-text)}

.qtr-modal-scrim{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:20px;
  background:color-mix(in srgb,var(--qt-ink) 42%,transparent);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.qtr-modal{width:min(460px,100%);background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--radius);
  box-shadow:var(--elev-3);padding:22px;display:grid;gap:12px;color:var(--text-primary);
  backdrop-filter:blur(var(--blur)) saturate(180%);-webkit-backdrop-filter:blur(var(--blur)) saturate(180%)}
.qtr-modal h3{margin:0;font-size:var(--aq-font-size-lg,20px);font-weight:820}
.qtr-modal p{margin:0;color:var(--text-muted);line-height:1.6}
.qtr-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}
.qtr-form-row{display:grid;gap:6px}
.qtr-form-row span{font-weight:750;font-size:.85rem}
.qtr-form-row input,.qtr-form-row select{min-height:42px;border:1px solid var(--hairline);border-radius:var(--radius-control);
  background:var(--surface-secondary);color:var(--text-primary);padding:0 12px}
.qtr-form-row input:focus,.qtr-form-row select:focus{border-color:var(--accent-border);box-shadow:var(--ring);outline:0}
.qtr-form-error{color:var(--qtr-danger-text);font-size:.82rem;min-height:16px}

.qtr-detail-scrim{justify-items:end;place-items:stretch;padding:0}
.qtr-detail{margin-inline-start:auto;width:min(480px,100%);height:100%;overflow-y:auto;background:var(--glass);
  border-inline-start:1px solid var(--glass-border);box-shadow:var(--elev-3);padding:0;
  backdrop-filter:blur(var(--blur)) saturate(180%);-webkit-backdrop-filter:blur(var(--blur)) saturate(180%)}
.qtr-detail-head{position:sticky;top:0;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:18px 20px;border-bottom:1px solid var(--hairline);background:color-mix(in srgb,var(--surface) 88%,transparent)}
.qtr-detail-head h2{margin:0;font-size:var(--aq-font-size-lg,20px);font-weight:820}
.qtr-detail-head small{color:var(--text-muted)}
.qtr-detail-body{padding:18px 20px 28px;display:grid;gap:14px}
.qtr-detail-body h3{margin:14px 0 0;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-secondary);
  display:flex;align-items:center;gap:8px}
.qtr-detail-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;
  border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--surface-secondary)}
.qtr-detail-row span{color:var(--text-muted);font-weight:700}
.qtr-detail-row select{min-height:34px;border:1px solid var(--hairline);border-radius:8px;background:var(--shell-surface);color:var(--text-primary);padding:0 8px}
.qtr-detail-actions{display:flex;gap:8px;flex-wrap:wrap}
.qtr-detail .qtr-signal{justify-content:space-between}

.qtr-toast{position:fixed;inset-block-end:20px;inset-inline:0;margin-inline:auto;width:max-content;max-width:calc(100vw - 40px);
  z-index:95;padding:12px 18px;border-radius:999px;background:var(--glass);border:1px solid var(--glass-border);
  box-shadow:var(--elev-3);color:var(--text-primary);font-weight:750;opacity:0;transform:translateY(10px);
  transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease);
  backdrop-filter:blur(var(--blur));-webkit-backdrop-filter:blur(var(--blur))}
.qtr-toast.show{opacity:1;transform:translateY(0)}
.qtr-toast.success{border-color:color-mix(in srgb,var(--qtr-success) 40%,transparent)}
.qtr-toast.danger{border-color:color-mix(in srgb,var(--qtr-danger) 45%,transparent)}
@media (max-width:640px){.qtr-detail{width:100%}.qtr-users-actions{flex:1 1 100%}}

/* --- 11d. Roles Management module ----------------------------------------- */
.qtr-roles{display:grid;gap:16px}
.qtr-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.qtr-stat{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--hairline);
  border-radius:var(--radius);background:var(--surface-secondary);box-shadow:var(--elev-1)}
.qtr-stat-ic{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:none;
  background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-text)}
.qtr-stat-ic svg{width:19px;height:19px}
.qtr-stat strong{display:block;font-size:1.35rem;font-weight:850;line-height:1}
.qtr-stat small{color:var(--text-muted);font-weight:700;font-size:.74rem}
/* A stat that drills into a section is a real <button>, so it needs the form controls reset that a
   <div> never did. The chevron is the affordance: without it the card looks identical to the static
   ones and nobody discovers it is clickable. */
button.qtr-stat{width:100%;font:inherit;color:inherit;text-align:inherit;cursor:pointer;
  transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
button.qtr-stat:hover{border-color:var(--accent);box-shadow:var(--elev-2,var(--elev-1));transform:translateY(-1px)}
button.qtr-stat:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
button.qtr-stat:active{transform:none}
.qtr-stat-go{margin-inline-start:auto;flex:none;width:16px;height:16px;color:var(--text-muted);opacity:.45;
  transition:opacity .15s ease,color .15s ease}
button.qtr-stat:hover .qtr-stat-go,button.qtr-stat:focus-visible .qtr-stat-go{opacity:1;color:var(--accent-text)}
@media (prefers-reduced-motion:reduce){
  button.qtr-stat,.qtr-stat-go{transition:none}
  button.qtr-stat:hover{transform:none}
}
.qtr-role-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.qtr-role-card{text-align:start;display:grid;gap:12px;padding:16px;border:1px solid var(--hairline);
  border-radius:var(--radius);background:var(--surface-secondary);box-shadow:var(--elev-1);cursor:pointer;
  transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.qtr-role-card:hover{transform:translateY(-3px);border-color:var(--accent-border);box-shadow:var(--elev-2)}
.qtr-role-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.qtr-role-card-head{display:flex;align-items:center;gap:11px}
.qtr-role-ic{width:42px;height:42px;border-radius:12px;flex:none;display:grid;place-items:center;
  background:linear-gradient(150deg,color-mix(in srgb,var(--accent) 20%,transparent),color-mix(in srgb,var(--accent) 8%,transparent));color:var(--accent-text)}
.qtr-role-name b{display:block;font-weight:820;letter-spacing:-.004em}
.qtr-role-name small{color:var(--text-muted);font-size:.78rem}
.qtr-role-badges{display:flex;flex-wrap:wrap;gap:6px}
.qtr-role-meta{display:flex;gap:14px;color:var(--text-muted);font-weight:700;font-size:.8rem}
.qtr-role-meta span{display:inline-flex;align-items:center;gap:5px}
.qtr-role-meta svg{width:14px;height:14px}
.qtr-role-tabs{margin-top:2px}
.qtr-modal-wide{width:min(560px,100%)}

/* Permission matrix */
.qtr-perm-toolbar{margin-bottom:12px}
.qtr-perm-matrix{display:grid;gap:12px}
.qtr-perm-group{border:1px solid var(--hairline);border-radius:var(--radius-control);overflow:hidden;background:var(--surface-secondary)}
.qtr-perm-group-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;
  background:color-mix(in srgb,var(--surface) 50%,transparent);border-bottom:1px solid var(--hairline)}
.qtr-perm-collapse{border:0;background:transparent;color:var(--text-primary);font-weight:800;cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.qtr-perm-collapse svg{width:16px;height:16px;transition:transform var(--dur-fast) var(--ease)}
.qtr-perm-group.collapsed .qtr-perm-collapse svg{transform:rotate(-90deg)}
.qtr-perm-group.collapsed .qtr-perm-list{display:none}
.qtr-perm-bulk{display:flex;gap:6px}
.qtr-perm-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:2px;padding:8px}
.qtr-perm{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:10px;cursor:pointer}
.qtr-perm:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}
.qtr-perm input{width:17px;height:17px;accent-color:var(--accent);flex:none}
.qtr-perm span{display:grid;min-width:0}
.qtr-perm b{font-weight:700;font-size:.86rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-perm small{color:var(--text-muted);font-size:.72rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Assigned users cards + avatars */
.qtr-user-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.qtr-user-card{display:flex;align-items:center;gap:8px;padding:10px;border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--surface-secondary)}
.qtr-user-open{flex:1;min-width:0;display:flex;align-items:center;gap:10px;border:0;background:transparent;cursor:pointer;text-align:start;padding:0}
.qtr-avatar-img{width:42px;height:42px;border-radius:12px;object-fit:cover;flex:none;background:var(--accent-soft);border:1px solid var(--hairline)}
.qtr-user-info{display:grid;min-width:0}
.qtr-user-info b{font-weight:800;font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:6px}
.qtr-user-info small{color:var(--text-muted);font-size:.74rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-user-open:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}
.qtr-dot-direct{width:8px;height:8px;border-radius:999px;background:var(--accent);flex:none;box-shadow:0 0 0 3px var(--accent-soft)}
.qtr-chip[data-tone="danger"]{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-chip[data-tone="success"]{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
@media (max-width:560px){.qtr-role-grid,.qtr-user-cards,.qtr-perm-list{grid-template-columns:1fr}}

/* --- 11e. Profile photos / avatars ---------------------------------------- */
.qtr-avatar-img.sm{width:32px;height:32px;border-radius:9px}
.qtr-avatar.has-photo .qtr-avatar-letter{display:none}
.qtr-avatar-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit}
.qtr-profile-avatar{overflow:hidden}
.qtr-profile-avatar .qtr-avatar-img{width:100%;height:100%;border-radius:inherit;border:0}
.qtr-user-cell{display:flex;align-items:center;gap:10px}
.qtr-user-cell-txt{display:grid;min-width:0}
.qtr-user-cell-txt b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-user-cell-txt small{color:var(--text-muted)}
.qtr-detail-head{align-items:center}
.qtr-detail-id{display:flex;align-items:center;gap:12px;min-width:0}
.qtr-detail-avatar .qtr-avatar-img{width:44px;height:44px;border-radius:12px}

/* Photo editor dialog */
.qtr-photo-modal{width:min(420px,100%);text-align:center}
.qtr-photo-preview{width:132px;height:132px;margin:6px auto 4px;border-radius:20px;overflow:hidden;
  border:1px solid var(--hairline);background:var(--surface-secondary);box-shadow:var(--elev-1)}
.qtr-photo-preview img{width:100%;height:100%;object-fit:cover;display:block}
.qtr-photo-input{width:100%;border:1px dashed var(--hairline);border-radius:var(--radius-control);
  background:var(--surface-secondary);padding:10px;color:var(--text-secondary);cursor:pointer}
.qtr-photo-input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.qtr-photo-hint{margin:6px 0 0;color:var(--text-muted);font-size:.78rem}
.qtr-photo-modal .qtr-form-error{text-align:start}

/* --- 11f. Role Intelligence (analytics) + enhanced permission matrix ------- */
.qtr-insights{margin:14px 0 4px;border:1px solid var(--hairline);border-radius:var(--radius-card);
  background:var(--surface-secondary);overflow:hidden}
.qtr-insights-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 16px;border:0;background:transparent;cursor:pointer;color:var(--text-primary);font-weight:850}
.qtr-insights-head>span:first-child{display:inline-flex;align-items:center;gap:9px}
.qtr-insights-head svg{width:17px;height:17px;color:var(--accent-text)}
.qtr-insights-sub{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-size:.76rem;font-weight:700}
.qtr-insights-chev{transition:transform var(--dur-fast) var(--ease)}
.qtr-insights.collapsed .qtr-insights-chev{transform:rotate(-90deg)}
.qtr-insights.collapsed .qtr-insights-body{display:none}
.qtr-insights-body{padding:4px 16px 18px}
.qtr-insight-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}
.qtr-insight-card{border:1px solid var(--hairline);border-radius:var(--radius-control);padding:13px 14px;
  background:var(--shell-surface);display:grid;gap:8px}
.qtr-insight-card[data-tone="danger"]{border-color:color-mix(in srgb,var(--qtr-danger) 40%,var(--hairline))}
.qtr-insight-card[data-tone="warning"]{border-color:color-mix(in srgb,var(--qtr-warning) 40%,var(--hairline))}
.qtr-insight-card-head{display:flex;align-items:center;gap:11px}
.qtr-insight-card-head strong{font-size:1.4rem;font-weight:850;line-height:1;display:block}
.qtr-insight-card-head small{color:var(--text-muted);font-weight:750;font-size:.76rem}
.qtr-insight-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none;
  background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-insight-card[data-tone="danger"] .qtr-insight-ic{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-insight-card[data-tone="warning"] .qtr-insight-ic{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-insight-hint{margin:0;color:var(--text-secondary);font-size:.78rem;line-height:1.45}
.qtr-insight-chips{margin-top:2px;flex-wrap:wrap}
.qtr-role-chip{cursor:pointer;min-height:30px;padding:4px 11px;font-size:calc(12px * var(--qtr-type-scale))}
.qtr-role-chip svg{width:13px;height:13px}
.qtr-insight-clean{display:flex;align-items:center;gap:10px;padding:16px;border:1px dashed var(--hairline);
  border-radius:var(--radius-control);color:var(--qtr-success-text);font-weight:750;grid-column:1/-1}
.qtr-insight-clean svg{width:20px;height:20px}
.qtr-insight-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:16px}
.qtr-insight-block h4{margin:0 0 10px;font-size:.82rem;font-weight:800;color:var(--text-secondary)}
.qtr-meter{margin-bottom:11px}
.qtr-meter-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px}
.qtr-meter-top span{font-size:.8rem;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-meter-top small{color:var(--text-muted);font-size:.72rem;font-weight:700;flex:none}
.qtr-meter-track{height:8px;border-radius:999px;background:color-mix(in srgb,var(--text-muted) 18%,transparent);overflow:hidden}
.qtr-meter-fill{height:100%;border-radius:inherit;background:var(--accent);transition:inline-size var(--dur-med,.4s) var(--ease)}
.qtr-meter-fill[data-tone="danger"]{background:var(--qtr-danger)}
.qtr-meter-fill[data-tone="muted"]{background:color-mix(in srgb,var(--text-muted) 45%,transparent)}
@media (max-width:640px){.qtr-insight-cols{grid-template-columns:1fr;gap:14px}}

/* Enhanced matrix: effective-permission summary + richer rows */
.qtr-perm-summary{border:1px solid var(--hairline);border-radius:var(--radius-control);padding:13px 15px;
  margin-bottom:14px;background:var(--surface-secondary)}
.qtr-perm-summary-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}
.qtr-perm-summary-top span{display:inline-flex;align-items:center;gap:8px;font-weight:750;color:var(--text-secondary);font-size:.84rem}
.qtr-perm-summary-top svg{width:16px;height:16px;color:var(--accent-text)}
.qtr-perm-summary-top strong{font-weight:850;font-size:.95rem}
.qtr-perm-warn{margin:9px 0 0;display:flex;align-items:center;gap:8px;color:var(--qtr-danger-text);font-size:.78rem;font-weight:750}
.qtr-perm-warn svg{width:15px;height:15px;flex:none}
.qtr-perm-body{flex:1;min-width:0}
.qtr-perm .qtr-perm-desc{color:var(--text-secondary);white-space:normal;font-size:.71rem;line-height:1.35}
.qtr-perm .qtr-perm-key{opacity:.7;font-size:.68rem}
.qtr-perm-check{width:17px;height:17px;flex:none;color:var(--text-muted);opacity:.5}
.qtr-perm.is-granted .qtr-perm-check{color:var(--qtr-success-text);opacity:1}
.qtr-perm.is-granted{background:color-mix(in srgb,var(--qtr-success) 6%,transparent)}

/* --- 11g. Authorization Intelligence Center -------------------------------- */
.qtr-authz-body{display:grid;grid-template-columns:236px 1fr;gap:18px;margin-top:16px}
.qtr-authz-nav{display:flex;flex-direction:column;gap:4px;position:sticky;inset-block-start:12px;align-self:start}
.qtr-authz-navitem{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid transparent;border-radius:var(--radius-control);
  background:transparent;color:var(--text-secondary);font-weight:700;cursor:pointer;text-align:start;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}
.qtr-authz-navitem svg{width:17px;height:17px;flex:none}
.qtr-authz-navitem:hover{background:color-mix(in srgb,var(--accent) 7%,transparent);color:var(--text-primary)}
.qtr-authz-navitem.active{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text);border-color:var(--accent-border)}
.qtr-authz-navitem:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.qtr-authz-content{min-width:0}
.qtr-authz-h{margin:20px 0 10px;font-size:.9rem;font-weight:800;color:var(--text-secondary)}
.qtr-authz-hint{margin:14px 0 0;color:var(--text-muted);font-size:.8rem;display:flex;align-items:center;gap:7px;line-height:1.5}
.qtr-authz-hint svg{width:15px;height:15px;flex:none}
.qtr-authz-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-bottom:14px}
.qtr-authz-controls .qtr-form-row{margin:0;min-width:200px;flex:1}
.qtr-stat[data-tone="danger"] .qtr-stat-ic{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}

/* Health gauge */
.qtr-health{display:flex;align-items:center;gap:20px;padding:18px 20px;border:1px solid var(--hairline);border-radius:var(--radius-card);
  background:var(--surface-secondary);margin-bottom:16px}
.qtr-health-ring{--pct:0;inline-size:96px;block-size:96px;border-radius:50%;display:grid;place-items:center;flex:none;text-align:center;
  background:conic-gradient(var(--ring) calc(var(--pct)*1%),color-mix(in srgb,var(--text-muted) 16%,transparent) 0)}
.qtr-health-ring[data-tone="success"]{--ring:var(--qtr-success)} .qtr-health-ring[data-tone="warning"]{--ring:var(--qtr-warning)} .qtr-health-ring[data-tone="danger"]{--ring:var(--qtr-danger)}
.qtr-health-ring::before{content:"";position:absolute;inline-size:74px;block-size:74px;border-radius:50%;background:var(--shell-surface)}
.qtr-health-ring>*{position:relative}
.qtr-health-num{font-size:1.7rem;font-weight:850;line-height:1}
.qtr-health-ring small{color:var(--text-muted);font-size:.66rem;font-weight:700}
.qtr-health-txt h3{margin:0 0 8px;font-size:1rem;font-weight:800}

/* Permission cards + explorer */
.qtr-perm-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.qtr-perm-card{display:grid;gap:6px;padding:14px;border:1px solid var(--hairline);border-radius:var(--radius-control);
  background:var(--surface-secondary);text-align:start;cursor:pointer;transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}
.qtr-perm-card:hover{transform:translateY(-2px);border-color:var(--accent-border);box-shadow:var(--elev-1)}
.qtr-perm-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.qtr-perm-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.qtr-perm-card-top b{font-weight:800;font-size:.9rem}
.qtr-perm-card-key{color:var(--text-muted);font-size:.72rem}
.qtr-perm-card-desc{color:var(--text-secondary);font-size:.77rem;line-height:1.4}
.qtr-perm-card-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;color:var(--text-muted);font-size:.74rem;font-weight:700;margin-top:2px}
.qtr-perm-card-meta svg{width:13px;height:13px;vertical-align:-2px}

/* Effective permissions list */
.qtr-eff-list{display:grid;gap:6px;margin-top:8px}
.qtr-eff-row{display:flex;gap:10px;padding:10px 12px;border:1px solid var(--hairline);border-radius:10px;background:var(--surface-secondary);opacity:.7}
.qtr-eff-row.granted{opacity:1;background:color-mix(in srgb,var(--qtr-success) 5%,var(--surface-secondary))}
.qtr-eff-row>i{width:18px;height:18px;flex:none;color:var(--text-muted);margin-block-start:2px}
.qtr-eff-row.granted>i{color:var(--qtr-success-text)}
.qtr-eff-main{display:grid;min-width:0;gap:2px}
.qtr-eff-main small{color:var(--text-muted);font-size:.72rem}
.qtr-eff-reason{color:var(--text-secondary)!important;font-weight:600}

/* Simulator + impact decision banner */
.qtr-sim-decision{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border:1px solid var(--hairline);border-radius:var(--radius-control);margin-bottom:14px;background:var(--surface-secondary)}
.qtr-sim-decision[data-tone="success"]{border-color:color-mix(in srgb,var(--qtr-success) 45%,var(--hairline))}
.qtr-sim-decision[data-tone="danger"]{border-color:color-mix(in srgb,var(--qtr-danger) 45%,var(--hairline))}
.qtr-sim-decision[data-tone="warning"]{border-color:color-mix(in srgb,var(--qtr-warning) 45%,var(--hairline))}
.qtr-sim-decision>i{width:22px;height:22px;flex:none}
.qtr-sim-decision[data-tone="success"]>i{color:var(--qtr-success-text)} .qtr-sim-decision[data-tone="danger"]>i{color:var(--qtr-danger-text)} .qtr-sim-decision[data-tone="warning"]>i{color:var(--qtr-warning-text)} .qtr-sim-decision[data-tone="muted"]>i{color:var(--text-muted)}
.qtr-sim-decision b{display:block;font-weight:800}
.qtr-sim-decision small{display:block;color:var(--text-secondary);font-size:.78rem;margin-top:2px}

/* Advisor cards */
.qtr-advisor-card{border:1px solid var(--hairline);border-radius:var(--radius-control);padding:14px;margin-bottom:12px;background:var(--surface-secondary)}
.qtr-advisor-card[data-tone="danger"]{border-color:color-mix(in srgb,var(--qtr-danger) 40%,var(--hairline))}
.qtr-advisor-card[data-tone="warning"]{border-color:color-mix(in srgb,var(--qtr-warning) 40%,var(--hairline))}
.qtr-advisor-head{display:flex;align-items:flex-start;gap:11px;margin-bottom:10px}
.qtr-advisor-head b{font-weight:800}
.qtr-advisor-head small{display:block;color:var(--text-secondary);font-size:.78rem;margin-top:3px}
.qtr-advisor-card[data-tone="danger"] .qtr-insight-ic{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-advisor-card[data-tone="warning"] .qtr-insight-ic{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}

@media (max-width:820px){
  .qtr-authz-body{grid-template-columns:1fr}
  .qtr-authz-nav{flex-direction:row;overflow-x:auto;position:static;padding-bottom:4px}
  .qtr-authz-navitem{flex:none}
  .qtr-authz-navitem span{white-space:nowrap}
}

/* --- 11h. Company Intelligence Center -------------------------------------- */
.qtr-co-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.qtr-co-card{text-align:start;display:grid;gap:12px;padding:16px;border:1px solid var(--hairline);border-radius:var(--radius-card);
  background:var(--surface-secondary);cursor:pointer;transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.qtr-co-card:hover{transform:translateY(-3px);border-color:var(--accent-border);box-shadow:var(--elev-2)}
.qtr-co-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.qtr-co-card-head{display:flex;align-items:center;gap:12px}
.qtr-co-logo{inline-size:46px;block-size:46px;border-radius:13px;flex:none;display:grid;place-items:center;overflow:hidden;
  background:var(--shell-surface);border:1px solid var(--hairline);font-weight:850;font-size:1.1rem;color:var(--accent-text)}
.qtr-co-logo img{inline-size:100%;block-size:100%;object-fit:contain}
.qtr-co-logo.is-empty{background:color-mix(in srgb,var(--co-accent,var(--accent)) 14%,transparent);color:var(--co-accent,var(--accent-text))}
.qtr-co-logo.lg{inline-size:64px;block-size:64px;border-radius:18px;font-size:1.5rem}
.qtr-co-name{display:grid;min-width:0;flex:1}
.qtr-co-name b{font-weight:850;font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-co-name small{color:var(--text-muted);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-co-badges{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.qtr-co-meta{display:flex;gap:16px;color:var(--text-muted);font-size:.78rem;font-weight:700}
.qtr-co-meta svg{width:14px;height:14px;vertical-align:-2px}
.qtr-mini-ring{--pct:0;inline-size:44px;block-size:44px;border-radius:50%;display:grid;place-items:center;flex:none;position:relative;
  background:conic-gradient(var(--rc) calc(var(--pct)*1%),color-mix(in srgb,var(--text-muted) 16%,transparent) 0)}
.qtr-mini-ring[data-tone="success"]{--rc:var(--qtr-success)} .qtr-mini-ring[data-tone="warning"]{--rc:var(--qtr-warning)} .qtr-mini-ring[data-tone="danger"]{--rc:var(--qtr-danger)}
.qtr-mini-ring::before{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--surface-secondary)}
.qtr-mini-ring b{position:relative;font-size:.8rem;font-weight:850}
.qtr-co-back{margin-bottom:12px}
.qtr-co-360-head{display:flex;align-items:center;gap:16px;padding-bottom:6px}
.qtr-co-360-id{flex:1;min-width:0}
.qtr-co-360-id h1{margin:0;font-size:1.5rem}
.qtr-co-360-id p{margin:4px 0 0;color:var(--text-muted);font-size:.82rem}
.qtr-co-360-actions{display:flex;align-items:center;gap:10px}
.qtr-detail-card{border:1px solid var(--hairline);border-radius:var(--radius-control);padding:14px 16px;background:var(--surface-secondary);margin-bottom:14px}
.qtr-detail-card .qtr-authz-h{margin-top:0;display:flex;align-items:center;gap:8px}
.qtr-detail-card .qtr-authz-h svg{width:15px;height:15px}
.qtr-muted{color:var(--text-muted)}
.qtr-brand-preview{display:flex;align-items:center;gap:16px;margin-bottom:14px}
.qtr-brand-logo{inline-size:96px;block-size:96px;border-radius:18px;display:grid;place-items:center;overflow:hidden;background:var(--surface-secondary);border:1px solid var(--hairline)}
.qtr-brand-logo img{inline-size:100%;block-size:100%;object-fit:contain}
.qtr-brand-logo svg{width:28px;height:28px;color:var(--text-muted)}
.qtr-brand-swatch{inline-size:56px;block-size:56px;border-radius:14px;border:1px solid var(--hairline);box-shadow:var(--elev-1)}
.qtr-brand-upload{display:flex;align-items:center;gap:14px;margin-bottom:14px}
.qtr-co-products{display:grid;gap:8px}
.qtr-co-product{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--surface-secondary)}
.qtr-co-product-main{display:grid;min-width:0}
.qtr-co-product-main b{font-weight:800}
.qtr-co-product-main small{color:var(--text-muted);font-size:.74rem}
.qtr-co-product select{flex:none;min-width:150px}
.qtr-check-list{display:grid;gap:8px}
.qtr-check{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border:1px solid var(--hairline);border-radius:10px;background:var(--surface-secondary)}
.qtr-check>i{width:18px;height:18px;flex:none;margin-block-start:1px}
.qtr-check-done>i{color:var(--qtr-success-text)} .qtr-check-todo>i{color:var(--text-muted)} .qtr-check-future>i{color:var(--text-muted);opacity:.6}
.qtr-check-done{background:color-mix(in srgb,var(--qtr-success) 6%,var(--surface-secondary))}
.qtr-check b{font-weight:750;font-size:.86rem} .qtr-check small{display:block;color:var(--text-secondary);font-size:.76rem;margin-top:2px}
.qtr-comment-add{display:flex;gap:8px;margin-bottom:12px}
.qtr-comment-add input{flex:1}
.qtr-comment-list{display:grid;gap:10px;margin-bottom:8px}
.qtr-comment{display:flex;gap:10px}
.qtr-comment b{font-weight:800;font-size:.85rem} .qtr-comment small{color:var(--text-muted);font-size:.72rem}
.qtr-comment p{margin:3px 0 0;font-size:.86rem;color:var(--text-secondary)}
.qtr-tag-edit{align-items:center}
.qtr-form-grid{max-inline-size:640px}
@media (min-width:560px){.qtr-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.qtr-form-grid h3,.qtr-form-grid .qtr-form-error,.qtr-form-grid .qtr-modal-actions{grid-column:1/-1}}
@media (max-width:560px){.qtr-co-grid{grid-template-columns:1fr}.qtr-co-360-head{flex-wrap:wrap}}

/* --- 11i. Branch Operations Center ----------------------------------------- */
.qtr-star{width:14px;height:14px;color:var(--qtr-warning-text);vertical-align:-2px}
.qtr-map-placeholder{display:flex;align-items:center;gap:14px;padding:22px 18px;margin-bottom:14px;border-radius:var(--radius-control);
  border:1px dashed var(--hairline);background:
    repeating-linear-gradient(45deg,color-mix(in srgb,var(--accent) 5%,transparent) 0 10px,transparent 10px 20px),var(--surface-secondary)}
.qtr-map-placeholder>i{width:30px;height:30px;flex:none;color:var(--accent-text)}
.qtr-map-placeholder b{display:block;font-weight:800}
.qtr-map-placeholder small{color:var(--text-muted);font-size:.78rem}

/* --- 11j. Platform Control Center ------------------------------------------ */
.qtr-ctrl-search{position:relative;margin:14px 0 4px}
.qtr-ctrl-search>i{position:absolute;inset-inline-start:16px;inset-block-start:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--text-muted);pointer-events:none}
.qtr-ctrl-search input{width:100%;padding:13px 16px 13px 44px;border:1px solid var(--hairline);border-radius:var(--radius-control);
  background:var(--surface-secondary);color:var(--text-primary);font-size:.95rem}
[dir="rtl"] .qtr-ctrl-search input{padding:13px 44px 13px 16px}
.qtr-ctrl-search input:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent-border)}
.qtr-ctrl-results{position:absolute;inset-inline:0;inset-block-start:calc(100% + 6px);z-index:20;background:var(--shell-surface);
  border:1px solid var(--hairline);border-radius:var(--radius-control);box-shadow:var(--elev-2);padding:6px;max-block-size:340px;overflow:auto}
.qtr-ctrl-result{display:flex;align-items:center;gap:11px;width:100%;padding:9px 11px;border:0;background:transparent;border-radius:10px;cursor:pointer;text-align:start;color:var(--text-primary)}
.qtr-ctrl-result:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.qtr-ctrl-result svg{width:16px;height:16px;color:var(--accent-text);flex:none}
.qtr-ctrl-result span{display:grid;min-width:0}
.qtr-ctrl-result b{font-weight:750;font-size:.86rem} .qtr-ctrl-result small{color:var(--text-muted);font-size:.74rem}
.qtr-ctrl-noresult{padding:12px;color:var(--text-muted);font-size:.85rem}
.qtr-nav-dot{width:6px;height:6px;border-radius:50%;background:var(--qtr-warning);margin-inline-start:auto;flex:none}
.qtr-ctrl-sec-head{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:10px}
.qtr-ctrl-sec-head h2{margin:0;font-size:1.2rem;display:flex;align-items:center;gap:9px}
.qtr-ctrl-sec-head h2 svg{width:19px;height:19px;color:var(--accent-text)}
.qtr-ctrl-form{display:grid;gap:2px}
.qtr-ctrl-form .qtr-form-row{margin:0;padding:11px 4px;border-block-end:1px solid var(--hairline);display:flex;align-items:center;justify-content:space-between;gap:16px}
.qtr-ctrl-form .qtr-form-row:last-child{border-block-end:0}
.qtr-ctrl-form .qtr-form-row>span{font-weight:650;color:var(--text-secondary);font-size:.88rem}
.qtr-ctrl-form .qtr-form-row input:not([type=checkbox]),.qtr-ctrl-form .qtr-form-row select{max-inline-size:280px;flex:0 1 280px}
.qtr-switch-row{cursor:pointer}
.qtr-switch{position:relative;inline-size:42px;block-size:24px;flex:none}
.qtr-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.qtr-switch-track{position:absolute;inset:0;border-radius:999px;background:color-mix(in srgb,var(--text-muted) 34%,transparent);transition:background var(--dur-fast) var(--ease)}
.qtr-switch-track::after{content:"";position:absolute;inset-block-start:3px;inset-inline-start:3px;inline-size:18px;block-size:18px;border-radius:50%;background:#fff;box-shadow:var(--elev-1);transition:inset-inline-start var(--dur-fast) var(--ease)}
.qtr-switch input:checked + .qtr-switch-track{background:var(--accent)}
.qtr-switch input:checked + .qtr-switch-track::after{inset-inline-start:21px}
.qtr-switch input:focus-visible + .qtr-switch-track{outline:2px solid var(--accent);outline-offset:2px}
.qtr-ctrl-signals{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}
.qtr-ctrl-signals .qtr-check{cursor:pointer;text-align:start;width:100%;border-width:1px}
.qtr-ctrl-stats{margin-top:16px}

/* --- 11k. Workspace Experience Center -------------------------------------- */
.qtr-ws{max-inline-size:1160px;margin-inline:auto}
.qtr-ws-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-block:6px 18px}
.qtr-ws-hero-txt h1{margin:0;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:850;letter-spacing:-0.02em}
.qtr-ws-hero-txt h1 span{color:var(--accent-text)}
.qtr-ws-hero-txt p{margin:6px 0 0;color:var(--text-muted);font-size:1rem}
.qtr-ws-hero-side{flex:none}
.qtr-ws-context{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.qtr-ws-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:999px;border:1px solid var(--hairline);
  background:var(--surface-secondary);color:var(--text-secondary);font-size:.8rem;font-weight:650}
.qtr-ws-chip svg{width:14px;height:14px;color:var(--accent-text)}
.qtr-ws-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;align-items:start}
.qtr-ws-widget{border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--surface-secondary);overflow:hidden;
  transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.qtr-ws-widget:hover{box-shadow:var(--elev-1)}
.qtr-ws-widget.is-hidden{opacity:.55;border-style:dashed}
.qtr-ws-widget-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 16px 9px}
.qtr-ws-widget-head>span{display:inline-flex;align-items:center;gap:9px;font-weight:800;font-size:.92rem}
.qtr-ws-widget-head svg{width:16px;height:16px;color:var(--accent-text)}
.qtr-ws-widget-tools{display:flex;gap:2px}
.qtr-ws-tool{border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:8px;display:grid;place-items:center}
.qtr-ws-tool:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-text)}
.qtr-ws-tool svg{width:15px;height:15px}
.qtr-ws-widget-body{padding:4px 16px 16px}
.qtr-ws-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:20px;color:var(--text-muted);text-align:center;font-size:.85rem}
.qtr-ws-empty svg{width:24px;height:24px;color:var(--qtr-success-text)}
.qtr-ws-note{margin:10px 0 0;color:var(--text-muted);font-size:.76rem}

/* ── Home Experience Architecture — Fixed Enterprise Portal layers ──────────────── */
/* Welcome: context strip now lives inside the hero; compact daily quote line only */
.qtr-ws-hero-txt .qtr-ws-context{margin:12px 0 0}
.qtr-ws-hero-quote{display:block;margin-top:8px;color:var(--text-muted);font-size:.82rem;font-style:italic;max-width:60ch}
/* Attention Summary — compact, clickable, authoritative counts */
.qtr-ws-attention{display:flex;flex-wrap:wrap;gap:12px;margin-block:2px 20px}
.qtr-ws-att-card{flex:1 1 180px;min-width:160px;display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--hairline);
  border-radius:14px;background:var(--surface-secondary);cursor:pointer;text-align:start;
  transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.qtr-ws-att-card:hover{transform:translateY(-1px);box-shadow:var(--elev-1);border-color:var(--accent-border)}
.qtr-ws-att-ic{width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:11px;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-ws-att-ic svg{width:19px;height:19px}
.qtr-ws-att-tx{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.qtr-ws-att-tx strong{font-size:1.35rem;font-weight:850}
.qtr-ws-att-tx small{color:var(--text-muted);font-size:.76rem;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-ws-att-card[data-tone="danger"] .qtr-ws-att-ic{background:color-mix(in srgb,var(--qtr-danger) 15%,transparent);color:var(--qtr-danger-text)}
.qtr-ws-att-card[data-tone="warning"] .qtr-ws-att-ic{background:color-mix(in srgb,var(--qtr-warning) 16%,transparent);color:var(--qtr-warning-text)}
.qtr-ws-att-card[data-tone="success"] .qtr-ws-att-ic{background:color-mix(in srgb,var(--qtr-success) 15%,transparent);color:var(--qtr-success-text)}
/* Fixed layer cards — locked out of the masonry grid; What's next / Status side by side */
.qtr-ws-fixed{margin-bottom:16px}
.qtr-ws-fixed-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.qtr-ws-fixed-row .qtr-ws-fixed{margin-bottom:16px}
.qtr-ws-fixed.is-products{margin-bottom:22px}
.qtr-ws-viewall{border:0;background:transparent;color:var(--accent-text);cursor:pointer;padding:2px 4px;font-weight:750}
.qtr-ws-viewall small{font-size:.78rem}
/* Personal Workspace — the ONLY customizable, masonry-driven region */
.qtr-ws-personal-head{display:flex;align-items:center;gap:12px;margin:4px 0 12px}
.qtr-ws-personal-head h2{margin:0;font-size:1.05rem;font-weight:800;letter-spacing:-0.01em}
.qtr-ws-personal-hint{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;font-weight:700;color:var(--accent-text);
  padding:3px 10px;border-radius:999px;background:color-mix(in srgb,var(--accent) 12%,transparent)}
.qtr-ws-personal-hint svg{width:14px;height:14px}
.qtr-ws-personal.is-customizing{outline:2px dashed var(--accent-border);outline-offset:8px;border-radius:16px}
.qtr-ws-cz-scope{display:flex;align-items:center;gap:7px;margin-top:0;margin-bottom:10px}
.qtr-ws-cz-scope svg{width:14px;height:14px;flex:none}
/* Quick Actions — 6 primary + collapsible More */
.qtr-qpx-qa-extra{display:contents}
.qtr-qpx-qa-more{grid-column:1/-1;display:inline-flex;align-items:center;gap:6px;justify-content:center;padding:8px;border:1px dashed var(--hairline);
  border-radius:10px;background:transparent;color:var(--text-secondary);cursor:pointer;font-weight:700;font-size:.82rem}
.qtr-qpx-qa-more:hover{border-color:var(--accent-border);color:var(--accent-text)}
.qtr-qpx-qa-more svg{width:15px;height:15px}
/* Favorites — suggested products when empty (no dead blank card) */
.qtr-qpx-fav-suggest{margin-top:10px}
.qtr-qpx-fav-suggest>small{display:block;color:var(--text-muted);font-size:.72rem;font-weight:750;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
@media (max-width:720px){.qtr-ws-fixed-row{grid-template-columns:1fr}}

/* suggested actions */
.qtr-ws-actions{display:grid;gap:8px}
.qtr-ws-action{display:flex;align-items:center;gap:12px;width:100%;padding:11px 12px;border:1px solid var(--hairline);border-radius:12px;
  background:var(--shell-surface);cursor:pointer;text-align:start;transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}
.qtr-ws-action:hover{transform:translateY(-1px);border-color:var(--accent-border)}
.qtr-ws-action-ic{inline-size:34px;block-size:34px;border-radius:10px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-ws-action[data-tone="warning"] .qtr-ws-action-ic{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-ws-action[data-tone="critical"] .qtr-ws-action-ic{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-ws-action-ic svg{width:17px;height:17px}
.qtr-ws-action-txt{display:grid;min-width:0;flex:1}
.qtr-ws-action-txt b{font-weight:750;font-size:.88rem}
.qtr-ws-action-txt small{color:var(--text-muted);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-ws-action-go{width:16px;height:16px;color:var(--text-muted);flex:none}
[dir="ltr"] .qtr-ws-action-go{transform:rotate(180deg)}

/* daily messages */
.qtr-ws-daily{display:grid;gap:10px}
.qtr-ws-msg{position:relative;padding:12px 14px;border-radius:12px;border:1px solid var(--hairline);background:var(--shell-surface);border-inline-start:3px solid var(--accent)}
.qtr-ws-msg[data-tone="danger"]{border-inline-start-color:var(--qtr-danger)} .qtr-ws-msg[data-tone="warning"]{border-inline-start-color:var(--qtr-warning)}
.qtr-ws-msg[data-tone="muted"]{border-inline-start-color:var(--text-muted)}
.qtr-ws-msg b{font-weight:800;font-size:.9rem} .qtr-ws-msg p{margin:4px 0 6px;color:var(--text-secondary);font-size:.84rem;line-height:1.5}
.qtr-ws-msg small{color:var(--text-muted);font-size:.72rem;font-weight:700}
.qtr-ws-pin{position:absolute;inset-block-start:12px;inset-inline-end:12px;width:14px;height:14px;color:var(--accent-text)}

/* quote */
.qtr-ws-quote{margin:0;padding:6px 2px}
.qtr-ws-quote blockquote{margin:0;font-size:1.05rem;line-height:1.6;font-weight:600;color:var(--text-primary)}
.qtr-ws-quote figcaption{margin-top:10px;color:var(--text-muted);font-size:.82rem}

/* continue working */
.qtr-ws-continue{display:grid;gap:8px}
.qtr-ws-chip-lg{display:flex;align-items:center;gap:11px;width:100%;padding:9px 11px;border:1px solid var(--hairline);border-radius:11px;background:var(--shell-surface);cursor:pointer;text-align:start}
.qtr-ws-chip-lg:hover{border-color:var(--accent-border)}
.qtr-ws-chip-ic{inline-size:32px;block-size:32px;border-radius:9px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-text)}
.qtr-ws-chip-ic svg{width:15px;height:15px}
.qtr-ws-chip-lg span:last-child{display:grid;min-width:0}.qtr-ws-chip-lg b{font-weight:750;font-size:.86rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qtr-ws-chip-lg small{color:var(--text-muted);font-size:.72rem}

/* timeline */
.qtr-ws-timeline{display:grid;gap:2px}
.qtr-ws-tl{display:flex;gap:11px;padding:7px 0}
.qtr-ws-tl-dot{inline-size:9px;block-size:9px;border-radius:50%;background:var(--accent);margin-block-start:5px;flex:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.qtr-ws-tl b{font-weight:700;font-size:.84rem} .qtr-ws-tl small{display:block;color:var(--text-muted);font-size:.72rem}

/* stat-big (notifications / approvals) */
.qtr-ws-stat-big{display:flex;align-items:baseline;gap:8px}
.qtr-ws-stat-big strong{font-size:2.4rem;font-weight:850;line-height:1;color:var(--accent-text)}
.qtr-ws-stat-big small{color:var(--text-muted);font-weight:700}

/* products — registry-driven launcher */
/* auto-fit + a capped max keeps cards a comfortable width and packs them from the
   reading edge, so a section with 1–3 items never leaves a stretched empty column. */
.qtr-ws-products{display:grid;grid-template-columns:repeat(auto-fit,minmax(184px,232px));gap:12px;justify-content:start}
.qtr-ws-prod-wrap{position:relative;display:grid}.qtr-ws-prod-wrap>.qtr-ws-prod{inline-size:100%;block-size:100%}.qtr-ws-prod{display:flex;align-items:center;gap:11px;padding:12px 13px;border:1px solid var(--hairline);border-radius:14px;background:var(--shell-surface);cursor:pointer;text-align:start;min-width:0}
.qtr-ws-prod:hover:not(:disabled){transform:translateY(-2px);border-color:var(--accent-border);box-shadow:0 6px 18px -12px color-mix(in srgb,var(--qt-ink) 35%,transparent)}
.qtr-ws-prod:disabled{opacity:.55;cursor:default}
/* Launcher product chip. A product with an official brand tile renders the tile
   (.brand below); one without renders a glyph tinted with its OWN accent from
   Brand Tokens color.product, falling back to the Platform accent. Corner comes
   from radius.appIconRatio so tile and glyph agree at any size. */
.qtr-ws-prod-ic{flex:0 0 auto;inline-size:40px;block-size:40px;border-radius:calc(40px * var(--qt-radius-app-ratio));display:grid;place-items:center;--chip:var(--qtr-product-accent,var(--qtr-product-platform));background:color-mix(in srgb,var(--chip) 12%,transparent);color:color-mix(in srgb,var(--chip) 72%,var(--qt-ink))}
.qtr-ws-prod-tx{display:flex;flex-direction:column;gap:4px;min-width:0}
.qtr-ws-prod b{font-size:.82rem;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-inline-size:100%}
.qtr-ws-prod small{color:var(--text-muted);font-size:.68rem}
/* grouped sections + per-card status chip */
.qtr-ws-prodsec + .qtr-ws-prodsec{margin-top:18px}
.qtr-ws-prodsec-h{margin:0 0 9px;font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}
.qtr-ws-prod-st{align-self:flex-start;font-size:.62rem;font-weight:700;padding:1px 7px;border-radius:999px;line-height:1.5;background:color-mix(in srgb,var(--text-muted) 16%,transparent);color:var(--text-secondary)}
.qtr-ws-prod-st[data-tone="success"]{background:color-mix(in srgb,var(--qtr-success) 16%,transparent);color:var(--qtr-success-text)}
.qtr-ws-prod-st[data-tone="warning"]{background:color-mix(in srgb,var(--qtr-warning) 18%,transparent);color:var(--qtr-warning-text)}
.qtr-ws-prod-st[data-tone="danger"]{background:color-mix(in srgb,var(--qtr-danger) 16%,transparent);color:var(--qtr-danger-text)}
.qtr-ws-prod-st[data-tone="muted"]{background:color-mix(in srgb,var(--text-muted) 14%,transparent);color:var(--text-muted)}

/* status */
.qtr-ws-status{display:grid;gap:2px}
.qtr-ws-status-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-block-end:1px solid var(--hairline)}
.qtr-ws-status-row:last-child{border-block-end:0}.qtr-ws-status-row span{font-size:.84rem;color:var(--text-secondary)}
.qtr-ws-status-cta{margin-top:12px}

/* customize */
.qtr-ws-customize{border:1px solid var(--accent-border);border-radius:var(--radius-card);background:color-mix(in srgb,var(--accent) 5%,var(--surface-secondary));padding:16px;margin-bottom:18px}
.qtr-ws-customize h4{margin:0 0 12px;font-size:.95rem;font-weight:800}
.qtr-ws-cz-section{margin-bottom:14px}.qtr-ws-cz-section>b{display:block;margin-bottom:8px;font-size:.82rem;color:var(--text-secondary)}
.qtr-ws-fav{cursor:pointer}.qtr-ws-fav.on{background:var(--qtr-success-soft);color:var(--qtr-success-text);border-color:transparent}
.qtr-ws-cz-actions{display:flex;flex-wrap:wrap;gap:8px}
@media (max-width:560px){.qtr-ws-hero{flex-direction:column;gap:12px}.qtr-ws-grid{grid-template-columns:1fr}}

/* --- 12. PRINT ------------------------------------------------------------- */
@media print{
  .qtr-header,.qtr-dock,.qtr-login,.qtr-personalize-fab,.qtr-popover{display:none!important}
  body,.qtr-home{background:#fff!important;color:var(--qt-ink)!important}
  .qtr-hero-card,.qtr-side-card,.qtr-product-card{box-shadow:none!important;border-color:var(--qt-neutral-300)!important;background:#fff!important}
  .qtr-hero-card::before{display:none}
}

/* --- 11L. Workspace Studio (Enterprise Workspace Designer) ------------------ */
.qtr-studio{display:flex;flex-direction:column;min-block-size:calc(100vh - var(--qtr-header-height) - 40px);gap:0}
.qtr-studio-topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 18px;padding:4px 2px 16px;border-block-end:1px solid var(--hairline);margin-block-end:18px;position:sticky;inset-block-start:0;background:var(--shell-bg,var(--surface-primary));z-index:5}
.qtr-studio-topbar-lead{display:flex;align-items:center;gap:20px;flex-wrap:wrap;min-width:0}
.qtr-studio-title{display:flex;align-items:center;gap:12px}
.qtr-studio-mark{inline-size:40px;block-size:40px;border-radius:12px;display:grid;place-items:center;flex:none;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 22%,transparent),color-mix(in srgb,var(--accent) 8%,transparent));color:var(--accent-text)}
.qtr-studio-mark svg{width:20px;height:20px}
.qtr-studio-title h1{margin:0;font-size:1.18rem;font-weight:850;letter-spacing:-0.02em}
.qtr-studio-title small{color:var(--text-muted);font-size:.78rem}
.qtr-studio-scopes{display:inline-flex;gap:4px;padding:4px;border-radius:12px;background:var(--surface-secondary);border:1px solid var(--hairline)}
.qtr-studio-scope{display:inline-flex;align-items:center;gap:7px;border:0;background:transparent;color:var(--text-secondary);font-weight:700;font-size:.82rem;padding:7px 13px;border-radius:9px;cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}
.qtr-studio-scope svg{width:15px;height:15px}
.qtr-studio-scope:hover{color:var(--accent-text)}
.qtr-studio-scope.active{background:var(--shell-surface);color:var(--accent-text);box-shadow:var(--elev-1)}
.qtr-studio-dot{inline-size:6px;block-size:6px;border-radius:50%;background:var(--qtr-warning);display:inline-block}
.qtr-studio-topbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.qtr-studio-devices{display:inline-flex;gap:2px;padding:3px;border-radius:10px;background:var(--surface-secondary);border:1px solid var(--hairline)}
.qtr-studio-dev{border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:6px 8px;border-radius:7px;display:grid;place-items:center}
.qtr-studio-dev svg{width:16px;height:16px}
.qtr-studio-dev.active{background:var(--shell-surface);color:var(--accent-text);box-shadow:var(--elev-1)}
.qtr-studio-dirty{font-size:.76rem;font-weight:700;color:var(--qtr-warning-text);background:var(--qtr-warning-soft);padding:5px 10px;border-radius:999px}
.qtr-studio-clean{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;font-weight:700;color:var(--qtr-success-text)}
.qtr-studio-clean svg{width:13px;height:13px}
.qtr-studio-menu-wrap{position:relative}
.qtr-studio-menu{position:absolute;inset-block-start:calc(100% + 6px);inset-inline-end:0;min-inline-size:210px;background:var(--shell-surface);border:1px solid var(--hairline);border-radius:12px;box-shadow:var(--elev-2,0 12px 30px color-mix(in srgb,var(--qt-ink) 14%,transparent));padding:6px;z-index:40;display:grid;gap:2px}
.qtr-studio-menu[hidden]{display:none}
.qtr-studio-menu button,.qtr-studio-menu .qtr-studio-import{display:flex;align-items:center;gap:9px;width:100%;border:0;background:transparent;color:var(--text-primary);font-size:.84rem;font-weight:650;padding:9px 11px;border-radius:8px;cursor:pointer;text-align:start}
.qtr-studio-menu button:hover,.qtr-studio-menu .qtr-studio-import:hover{background:color-mix(in srgb,var(--accent) 9%,transparent)}
.qtr-studio-menu .danger{color:var(--qtr-danger-text)}
.qtr-studio-menu svg{width:15px;height:15px}

.qtr-studio-body{display:grid;grid-template-columns:290px minmax(0,1fr) 300px;gap:18px;align-items:start}
.qtr-studio-rail,.qtr-studio-inspector{display:grid;gap:16px;align-content:start;position:sticky;inset-block-start:88px}
.qtr-studio-block{border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--surface-secondary);padding:15px}
.qtr-studio-block h3{margin:0 0 4px;font-size:.9rem;font-weight:800;display:flex;align-items:center;gap:8px}
.qtr-studio-block h3 svg{width:16px;height:16px;color:var(--accent-text)}
.qtr-studio-hint{margin:2px 0 12px;color:var(--text-muted);font-size:.76rem;line-height:1.5}
.qtr-studio-presets{display:grid;gap:8px}
.qtr-studio-preset{display:flex;align-items:center;gap:11px;width:100%;padding:10px 11px;border:1px solid var(--hairline);border-radius:12px;background:var(--shell-surface);cursor:pointer;text-align:start;transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}
.qtr-studio-preset:hover{transform:translateY(-1px);border-color:var(--accent-border)}
.qtr-studio-preset.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--shell-surface))}
.qtr-studio-preset-ic{inline-size:32px;block-size:32px;border-radius:9px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 11%,transparent);color:var(--accent-text)}
.qtr-studio-preset-ic svg{width:16px;height:16px}
.qtr-studio-preset-txt{display:grid;min-width:0;flex:1}
.qtr-studio-preset-txt b{font-weight:750;font-size:.85rem}
.qtr-studio-preset-txt small{color:var(--text-muted);font-size:.74rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-studio-preset-on{width:15px;height:15px;color:var(--accent-text);flex:none}
.qtr-btn.block{width:100%;justify-content:center;margin-block-end:10px}
.qtr-studio-tpls{display:grid;gap:7px}
.qtr-studio-tpl{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--hairline);border-radius:11px;background:var(--shell-surface)}
.qtr-studio-tpl-ic{inline-size:28px;block-size:28px;border-radius:8px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-text)}
.qtr-studio-tpl-ic svg{width:14px;height:14px}
.qtr-studio-tpl-txt{display:grid;min-width:0;flex:1}
.qtr-studio-tpl-txt b{font-size:.82rem;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-studio-tpl-txt small{color:var(--text-muted);font-size:.68rem;display:inline-flex;align-items:center;gap:5px}
.qtr-studio-tpl-txt small svg{width:11px;height:11px}
.qtr-studio-tpl-tools{display:inline-flex;gap:1px;flex:none}
.qtr-studio-tpl-tools button{border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:5px;border-radius:7px;display:grid;place-items:center}
.qtr-studio-tpl-tools button:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-text)}
.qtr-studio-tpl-tools .danger:hover{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-studio-tpl-tools svg{width:14px;height:14px}
.qtr-studio-empty{display:flex;flex-direction:column;align-items:center;gap:7px;padding:16px;color:var(--text-muted);text-align:center;font-size:.8rem}
.qtr-studio-empty svg{width:22px;height:22px;opacity:.7}
.qtr-studio-empty.big{padding:60px 20px}.qtr-studio-empty.big svg{width:34px;height:34px}

.qtr-studio-canvas{display:flex;flex-direction:column;gap:12px;min-width:0}
.qtr-studio-canvas-bar{display:flex;align-items:center;justify-content:space-between;gap:10px}
.qtr-studio-canvas-bar span{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:.86rem}
.qtr-studio-canvas-bar span svg{width:15px;height:15px;color:var(--accent-text)}
.qtr-studio-canvas-bar small{color:var(--text-muted);font-size:.74rem}
.qtr-studio-frame{border:1px solid var(--hairline);border-radius:20px;background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 4%,var(--surface-secondary)),var(--surface-secondary));padding:16px;transition:max-inline-size var(--dur,.25s) var(--ease)}
.qtr-studio-frame.device-tablet{max-inline-size:760px;margin-inline:auto}
.qtr-studio-frame.device-mobile{max-inline-size:400px;margin-inline:auto}
.qtr-studio-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;align-items:start}
.qtr-studio-preview.cols-1{grid-template-columns:1fr}
.qtr-studio-preview.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.qtr-studio-preview.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.qtr-studio-preview.density-compact{gap:8px}
.qtr-studio-preview.density-spacious{gap:20px}
.qtr-studio-frame.device-mobile .qtr-studio-preview{grid-template-columns:1fr}
.qtr-studio-w{border:1px solid var(--hairline);border-radius:14px;background:var(--shell-surface);overflow:hidden;transition:box-shadow var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}
.qtr-studio-w:hover{box-shadow:var(--elev-1);border-color:var(--accent-border)}
.qtr-studio-w.size-lg{grid-column:span 2}
.qtr-studio-frame.device-mobile .qtr-studio-w.size-lg,.qtr-studio-preview.cols-1 .qtr-studio-w.size-lg{grid-column:auto}
.qtr-studio-w.collapsed .qtr-studio-w-head{border-block-end:0}
.qtr-studio-w-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 11px;border-block-end:1px solid var(--hairline)}
.qtr-studio-w-name{display:inline-flex;align-items:center;gap:8px;font-weight:750;font-size:.8rem;min-width:0}
.qtr-studio-w-name svg{width:14px;height:14px;color:var(--accent-text);flex:none}
.qtr-studio-w-pin{width:12px !important;height:12px !important;color:var(--accent-text)}
.qtr-studio-w-tools{display:inline-flex;gap:0;flex:none}
.qtr-studio-w-tools button{border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:6px;display:inline-flex;align-items:center;gap:2px}
.qtr-studio-w-tools button:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-text)}
.qtr-studio-w-tools button.on{color:var(--accent-text)}
.qtr-studio-w-tools .danger:hover{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-studio-w-tools svg{width:14px;height:14px}
.qtr-studio-w-tools em{font-size:.58rem;font-weight:800;font-style:normal;letter-spacing:.02em}
.qtr-studio-w-body{padding:11px}
.qtr-studio-preview.density-compact .qtr-studio-w-body{padding:8px}
.qtr-studio-preview.density-spacious .qtr-studio-w-body{padding:15px}
/* widget stubs (representative preview content) */
.qtr-studio-stub-line,.qtr-studio-stub-msg{height:9px;border-radius:5px;background:color-mix(in srgb,var(--text-muted) 22%,transparent);margin-block:6px}
.qtr-studio-stub-msg.short,.qtr-studio-stub-list .short{width:60%}
.qtr-studio-stub-list{display:grid;gap:7px}.qtr-studio-stub-list span{height:11px;border-radius:6px;background:color-mix(in srgb,var(--accent) 16%,transparent)}
.qtr-studio-stub-quote{font-size:1.1rem;color:var(--text-muted);font-weight:700;padding:6px 2px}
.qtr-studio-stub-chips{display:flex;gap:6px}.qtr-studio-stub-chips span{flex:1;height:26px;border-radius:8px;background:color-mix(in srgb,var(--accent) 12%,transparent)}
.qtr-studio-stub-tl{display:flex;flex-direction:column;gap:7px}.qtr-studio-stub-tl i{height:8px;width:80%;border-radius:5px;background:color-mix(in srgb,var(--text-muted) 20%,transparent)}
.qtr-studio-stub-stat b{font-size:1.8rem;font-weight:850;color:var(--accent-text)}
.qtr-studio-stub-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.qtr-studio-stub-grid span{aspect-ratio:1;border-radius:9px;background:color-mix(in srgb,var(--accent) 12%,transparent)}
.qtr-studio-stub-rows{display:grid;gap:6px}.qtr-studio-stub-rows span{height:10px;border-radius:5px;background:color-mix(in srgb,var(--text-muted) 18%,transparent)}
.qtr-studio-tray{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-block-start:16px;padding-block-start:14px;border-block-start:1px dashed var(--hairline)}
.qtr-studio-tray-label{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:700;color:var(--text-muted)}
.qtr-studio-tray-label svg{width:14px;height:14px}
.qtr-studio-tray-item{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px dashed var(--accent-border);border-radius:999px;background:transparent;color:var(--text-secondary);font-size:.78rem;font-weight:650;cursor:pointer}
.qtr-studio-tray-item:hover{background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent-text)}
.qtr-studio-tray-item svg{width:13px;height:13px}
.qtr-studio-tray-add{opacity:.7}

.qtr-studio-field{display:grid;gap:7px;margin-block-start:12px}
.qtr-studio-field>span{font-size:.78rem;font-weight:700;color:var(--text-secondary)}
.qtr-studio-seg{display:inline-flex;gap:2px;padding:3px;border-radius:10px;background:var(--shell-surface);border:1px solid var(--hairline);flex-wrap:wrap}
.qtr-studio-seg button{border:0;background:transparent;color:var(--text-secondary);font-weight:700;font-size:.76rem;padding:6px 11px;border-radius:7px;cursor:pointer}
.qtr-studio-seg button:hover{color:var(--accent-text)}
.qtr-studio-seg button.on{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-text)}
.qtr-studio-select{width:100%;padding:9px 11px;border:1px solid var(--hairline);border-radius:10px;background:var(--shell-surface);color:var(--text-primary);font-size:.83rem;font-family:inherit}
.qtr-studio-select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.qtr-studio-favs,.qtr-studio-favobjs{display:flex;flex-wrap:wrap;gap:6px;margin-block-start:8px}
.qtr-studio-fav{border:1px solid var(--hairline);background:var(--shell-surface);color:var(--text-secondary);font-size:.76rem;font-weight:650;padding:6px 11px;border-radius:999px;cursor:pointer}
.qtr-studio-fav:hover{border-color:var(--accent-border);color:var(--accent-text)}
.qtr-studio-fav.on{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-studio-favobj{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:7px 10px;border:1px solid var(--hairline);border-radius:10px;background:var(--shell-surface)}
.qtr-studio-favobj span{display:inline-flex;align-items:center;gap:7px;font-size:.8rem;font-weight:650;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-studio-favobj span svg{width:13px;height:13px;color:var(--accent-text);flex:none}
.qtr-studio-favobj button{border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:3px;border-radius:6px;flex:none}
.qtr-studio-favobj button:hover{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-studio-favobj svg{width:14px;height:14px}
.qtr-studio-summary ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:0}
.qtr-studio-summary li{display:flex;align-items:center;justify-content:space-between;padding:7px 0;border-block-end:1px solid var(--hairline);font-size:.8rem}
.qtr-studio-summary li:last-child{border-block-end:0}
.qtr-studio-summary li span{color:var(--text-secondary)}
.qtr-studio-summary li b{font-weight:800;color:var(--accent-text)}
[dir="ltr"] .qtr-studio-w-tools button i[data-lucide="chevron-up"],[dir="ltr"] .qtr-studio-w-tools button i[data-lucide="chevron-down"]{transform:none}

@media (max-width:1180px){
  .qtr-studio-body{grid-template-columns:1fr}
  .qtr-studio-rail,.qtr-studio-inspector{position:static}
  .qtr-studio-rail{order:2}.qtr-studio-canvas{order:1}.qtr-studio-inspector{order:3}
}
@media (max-width:640px){
  .qtr-studio-topbar-lead{gap:12px}
  .qtr-studio-scopes{width:100%;overflow-x:auto}
  .qtr-studio-preview{grid-template-columns:1fr}
  .qtr-studio-w.size-lg{grid-column:auto}
}

/* --- 11L.1 Workspace home — Studio-driven layout --------------------------- */
.qtr-ws-grid.density-compact{gap:10px}
.qtr-ws-grid.density-spacious{gap:24px}
.qtr-ws-grid.cols-1{grid-template-columns:1fr}
/* Fixed column choices now auto-arrange to the screen: they fill with as many
   comfortable columns as fit (the chosen count is a density hint, not a hard cap),
   so the home never over-stretches on wide screens nor cramps on medium ones. */
.qtr-ws-grid.cols-2{grid-template-columns:repeat(auto-fill,minmax(min(100%,440px),1fr))}
.qtr-ws-grid.cols-3{grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr))}
.qtr-ws-widget.size-lg{grid-column:span 2}
.qtr-ws-widget.size-sm .qtr-ws-widget-body{font-size:.95em}
.qtr-ws-grid.cols-1 .qtr-ws-widget.size-lg{grid-column:auto}
/* On very wide displays keep the auto default from spreading too thin. */
@media (min-width:2000px){.qtr-ws-grid{grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}}
.qtr-ws-widget.is-collapsed .qtr-ws-widget-head{padding-block-end:13px}
.qtr-ws-widget-pin{width:12px !important;height:12px !important;color:var(--accent-text);vertical-align:middle}
@media (max-width:720px){.qtr-ws-grid.cols-2,.qtr-ws-grid.cols-3{grid-template-columns:1fr}.qtr-ws-widget.size-lg{grid-column:auto}}

/* Workspace Studio — "applied" confirmation pulse on the preview frame */
@keyframes qtrStudioApplied{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 45%,transparent);border-color:var(--accent)}100%{box-shadow:0 0 0 10px transparent;border-color:var(--hairline)}}
.qtr-studio-frame.qtr-applied{animation:qtrStudioApplied .7s var(--ease,ease)}
@media (prefers-reduced-motion:reduce){.qtr-studio-frame.qtr-applied{animation:none}}

/* --- 11M. Notification Intelligence Center --------------------------------- */
.qtr-nc{display:flex;flex-direction:column;gap:0;min-block-size:calc(100vh - var(--qtr-header-height) - 40px)}
.qtr-nc-topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;padding:4px 2px 16px;border-block-end:1px solid var(--hairline);margin-block-end:18px}
.qtr-nc-title{display:flex;align-items:center;gap:12px}
.qtr-nc-mark{inline-size:40px;block-size:40px;border-radius:12px;display:grid;place-items:center;flex:none;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 22%,transparent),color-mix(in srgb,var(--accent) 8%,transparent));color:var(--accent-text)}
.qtr-nc-mark svg{width:20px;height:20px}
.qtr-nc-title h1{margin:0;font-size:1.18rem;font-weight:850;letter-spacing:-0.02em}
.qtr-nc-title small{color:var(--text-muted);font-size:.78rem}
.qtr-nc-topstats{display:flex;gap:10px}
.qtr-nc-stat{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 14px;border-radius:12px;background:var(--surface-secondary);border:1px solid var(--hairline);font-size:.7rem;color:var(--text-muted);font-weight:650}
.qtr-nc-stat b{font-size:1.15rem;font-weight:850;color:var(--text-primary)}
.qtr-nc-stat.danger b{color:var(--qtr-danger-text)} .qtr-nc-stat.warn b{color:var(--qtr-warning-text)}
.qtr-nc-body{display:grid;grid-template-columns:240px minmax(0,1fr);gap:18px;align-items:start}
.qtr-nc-rail{display:grid;gap:16px;align-content:start;position:sticky;inset-block-start:12px}
.qtr-nc-states{display:grid;gap:3px}
.qtr-nc-state{display:flex;align-items:center;justify-content:space-between;gap:8px;border:0;background:transparent;color:var(--text-secondary);font-weight:700;font-size:.86rem;padding:9px 12px;border-radius:10px;cursor:pointer}
.qtr-nc-state span{display:inline-flex;align-items:center;gap:9px}
.qtr-nc-state svg{width:16px;height:16px}
.qtr-nc-state:hover{background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent-text)}
.qtr-nc-state.active{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-nc-state em{font-style:normal;font-size:.72rem;font-weight:800;background:var(--surface-secondary);padding:1px 8px;border-radius:999px}
.qtr-nc-state.active em{background:var(--accent);color:var(--on-accent,#fff)}
.qtr-nc-railsec{border-block-start:1px solid var(--hairline);padding-block-start:12px}
.qtr-nc-railsec h4{margin:0 0 8px;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:800}
.qtr-nc-cat{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;border:0;background:transparent;color:var(--text-secondary);font-weight:650;font-size:.82rem;padding:7px 10px;border-radius:9px;cursor:pointer}
.qtr-nc-cat span{display:inline-flex;align-items:center;gap:8px;min-width:0}
.qtr-nc-cat svg{width:14px;height:14px;color:var(--accent-text);flex:none}
.qtr-nc-cat:hover{background:color-mix(in srgb,var(--accent) 7%,transparent)}
.qtr-nc-cat.active{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-nc-cat em{font-style:normal;font-size:.7rem;color:var(--text-muted);flex:none}
.qtr-nc-levels{display:flex;flex-wrap:wrap;gap:5px}
.qtr-nc-lvl{border:1px solid var(--hairline);background:var(--shell-surface);color:var(--text-secondary);font-size:.74rem;font-weight:700;padding:5px 10px;border-radius:999px;cursor:pointer}
.qtr-nc-lvl.active{border-color:transparent;color:#fff}
.qtr-nc-lvl.level-critical.active{background:var(--qtr-danger)} .qtr-nc-lvl.level-high.active{background:var(--qtr-warning)}
.qtr-nc-lvl.level-medium.active{background:var(--qtr-warning);color:var(--qtr-black)} .qtr-nc-lvl.level-low.active{background:var(--accent)} .qtr-nc-lvl.level-info.active{background:var(--text-muted)}
.qtr-nc-hint{color:var(--text-muted);font-size:.78rem}

.qtr-nc-main-col{display:flex;flex-direction:column;gap:14px;min-width:0}
.qtr-nc-intel{display:grid;gap:8px}
.qtr-nc-intel-card{display:flex;align-items:center;gap:12px;width:100%;padding:11px 13px;border:1px solid var(--hairline);border-radius:13px;background:var(--surface-secondary);cursor:pointer;text-align:start;border-inline-start:3px solid var(--accent)}
.qtr-nc-intel-card:hover{transform:translateY(-1px);border-color:var(--accent-border)}
.qtr-nc-intel-card.sev-critical{border-inline-start-color:var(--qtr-danger)} .qtr-nc-intel-card.sev-warning{border-inline-start-color:var(--qtr-warning)} .qtr-nc-intel-card.sev-high{border-inline-start-color:var(--qtr-warning)}
.qtr-nc-intel-ic{inline-size:34px;block-size:34px;border-radius:10px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-nc-intel-card.sev-critical .qtr-nc-intel-ic{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)} .qtr-nc-intel-card.sev-warning .qtr-nc-intel-ic{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-nc-intel-ic svg{width:17px;height:17px}
.qtr-nc-intel-txt{display:grid;flex:1;min-width:0}.qtr-nc-intel-txt b{font-size:.86rem;font-weight:750}.qtr-nc-intel-txt small{color:var(--text-muted);font-size:.76rem}
.qtr-nc-intel-go{width:16px;height:16px;color:var(--text-muted);flex:none}[dir="ltr"] .qtr-nc-intel-go{transform:rotate(180deg)}

.qtr-nc-groups{border:1px solid var(--hairline);border-radius:14px;background:var(--surface-secondary);padding:12px}
.qtr-nc-groups-h{display:flex;align-items:center;gap:8px;font-weight:800;font-size:.82rem;margin-block-end:10px}
.qtr-nc-groups-h svg{width:15px;height:15px;color:var(--accent-text)}
.qtr-nc-groups-row{display:flex;gap:8px;flex-wrap:wrap}
.qtr-nc-group{display:flex;align-items:center;gap:9px;padding:8px 11px;border:1px solid var(--hairline);border-radius:11px;background:var(--shell-surface);cursor:pointer;text-align:start}
.qtr-nc-group:hover{border-color:var(--accent-border)} .qtr-nc-group.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--shell-surface))}
.qtr-nc-group-ic{inline-size:28px;block-size:28px;border-radius:8px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 11%,transparent);color:var(--accent-text)}
.qtr-nc-group-ic svg{width:14px;height:14px}
.qtr-nc-group b{font-size:.82rem;font-weight:750;display:block}.qtr-nc-group small{color:var(--text-muted);font-size:.7rem}
.qtr-nc-group.clear{color:var(--text-muted);font-size:.78rem;font-weight:700}.qtr-nc-group.clear svg{width:13px;height:13px}

.qtr-nc-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.qtr-nc-search{display:flex;align-items:center;gap:8px;flex:1;min-width:180px;padding:8px 12px;border:1px solid var(--hairline);border-radius:11px;background:var(--surface-secondary)}
.qtr-nc-search svg{width:15px;height:15px;color:var(--text-muted)}
.qtr-nc-search input{border:0;background:transparent;outline:none;width:100%;color:var(--text-primary);font-size:.86rem;font-family:inherit}
.qtr-nc-toolbar-r{display:flex;gap:8px}
.qtr-nc-bulk{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 12px;border-radius:12px;background:color-mix(in srgb,var(--accent) 8%,var(--surface-secondary));border:1px solid var(--accent-border)}
.qtr-nc-bulk>span{font-weight:800;font-size:.8rem;margin-inline-end:6px}
.qtr-nc-bulk button{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--hairline);background:var(--shell-surface);color:var(--text-secondary);font-size:.76rem;font-weight:650;padding:5px 10px;border-radius:8px;cursor:pointer}
.qtr-nc-bulk button:hover{border-color:var(--accent-border);color:var(--accent-text)}
.qtr-nc-bulk button.danger:hover{border-color:var(--qtr-danger);color:var(--qtr-danger-text)}
.qtr-nc-bulk button svg{width:13px;height:13px}
.qtr-nc-bulk-clear{margin-inline-start:auto}

.qtr-nc-list{display:grid;gap:9px}
.qtr-nc-item{display:grid;grid-template-columns:auto auto 1fr auto;gap:11px;align-items:start;padding:12px 13px;border:1px solid var(--hairline);border-radius:14px;background:var(--surface-secondary);position:relative;transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}
.qtr-nc-item:hover{box-shadow:var(--elev-1);border-color:var(--accent-border)}
.qtr-nc-item.is-unread{background:var(--shell-surface)}
.qtr-nc-item.is-unread::before{content:"";position:absolute;inset-block:14px auto;inset-inline-start:0;inline-size:3px;block-size:26px;border-radius:0 3px 3px 0;background:var(--accent)}
.qtr-nc-item.level-critical.is-unread::before{background:var(--qtr-danger)} .qtr-nc-item.level-high.is-unread::before{background:var(--qtr-warning)}
.qtr-nc-item.is-selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--shell-surface))}
.qtr-nc-check{display:flex;align-items:center;padding-block-start:2px}
.qtr-nc-check input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}
.qtr-nc-ic{inline-size:36px;block-size:36px;border-radius:10px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 11%,transparent);color:var(--accent-text)}
.qtr-nc-ic.level-critical{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)} .qtr-nc-ic.level-high{background:color-mix(in srgb,var(--qtr-warning) 15%,transparent);color:var(--qtr-warning-text)}
.qtr-nc-ic.level-medium{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-nc-ic svg{width:18px;height:18px}
.qtr-nc-main{min-width:0;cursor:pointer;display:grid;gap:5px}
.qtr-nc-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.qtr-nc-head b{font-weight:750;font-size:.9rem}
.qtr-nc-tag{width:12px;height:12px;color:var(--accent-text)}.qtr-nc-tag.flag{color:var(--qtr-warning-text)}
.qtr-nc-when{color:var(--text-muted);font-size:.72rem;margin-inline-start:auto}
.qtr-nc-main p{margin:0;color:var(--text-secondary);font-size:.82rem;line-height:1.5}
.qtr-nc-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.qtr-nc-chip{display:inline-flex;align-items:center;gap:5px;font-size:.7rem;font-weight:650;color:var(--text-muted);background:var(--surface-secondary);padding:2px 9px;border-radius:999px}
.qtr-nc-item.is-unread .qtr-nc-chip{background:var(--surface-secondary)}
.qtr-nc-chip svg{width:11px;height:11px}
.qtr-nc-chip.warn{color:var(--qtr-warning-text)} .qtr-nc-chip.ok{color:var(--qtr-success-text)}
.qtr-nc-level{font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;padding:2px 8px;border-radius:999px}
.qtr-nc-level[data-l="critical"]{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)} .qtr-nc-level[data-l="high"]{background:color-mix(in srgb,var(--qtr-warning) 15%,transparent);color:var(--qtr-warning-text)}
.qtr-nc-level[data-l="medium"]{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)} .qtr-nc-level[data-l="low"]{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)} .qtr-nc-level[data-l="info"]{background:var(--surface-secondary);color:var(--text-muted)}
.qtr-nc-actions{display:flex;gap:7px;flex-wrap:wrap;margin-block-start:3px}
.qtr-nc-act{border:1px solid var(--hairline);background:var(--shell-surface);color:var(--text-secondary);font-size:.78rem;font-weight:700;padding:6px 14px;border-radius:9px;cursor:pointer}
.qtr-nc-act[data-style="primary"]{background:var(--accent);color:var(--on-accent,#fff);border-color:transparent}
.qtr-nc-act[data-style="danger"]{border-color:var(--qtr-danger);color:var(--qtr-danger-text)}
.qtr-nc-act:hover{transform:translateY(-1px)}
.qtr-nc-tools{display:flex;gap:1px;flex:none;align-self:start}
.qtr-nc-tools button{border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:5px;border-radius:7px;display:grid;place-items:center}
.qtr-nc-tools button:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-text)}
.qtr-nc-tools button.on{color:var(--accent-text)} .qtr-nc-tools .danger:hover{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-nc-tools svg{width:15px;height:15px}
.qtr-nc-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:56px 20px;color:var(--text-muted);text-align:center}
.qtr-nc-empty svg{width:34px;height:34px;opacity:.6} .qtr-nc-empty h3{margin:4px 0 0;font-size:1rem;color:var(--text-secondary)} .qtr-nc-empty p{margin:0;font-size:.82rem}
.qtr-nc-empty.sm{padding:28px 16px}.qtr-nc-empty.sm svg{width:24px;height:24px}

/* 360 drawer */
.qtr-nc-drawer-scrim{position:fixed;inset:0;background:var(--qtr-overlay,color-mix(in srgb,var(--qt-ink) 35%,transparent));z-index:60;animation:qtrFade .2s ease}
.qtr-nc-drawer{position:fixed;inset-block:0;inset-inline-end:0;inline-size:min(430px,92vw);background:var(--shell-surface,var(--surface-primary));border-inline-start:1px solid var(--hairline);box-shadow:var(--elev-2,-12px 0 40px color-mix(in srgb,var(--qt-ink) 18%,transparent));z-index:61;padding:18px;overflow-y:auto;animation:qtrSlideIn .25s var(--ease,ease)}
[dir="ltr"] .qtr-nc-drawer{inset-inline-end:auto;inset-inline-start:0;border-inline-start:0;border-inline-end:1px solid var(--hairline);animation:qtrSlideInL .25s var(--ease,ease)}
@keyframes qtrSlideIn{from{transform:translateX(30px);opacity:0}to{transform:none;opacity:1}}
@keyframes qtrSlideInL{from{transform:translateX(-30px);opacity:0}to{transform:none;opacity:1}}
@keyframes qtrFade{from{opacity:0}to{opacity:1}}
.qtr-nc-drawer-h{display:flex;align-items:center;gap:11px;margin-block-end:12px}
.qtr-nc-drawer-h b{font-size:.98rem;font-weight:800;display:block}.qtr-nc-drawer-h small{color:var(--text-muted);font-size:.76rem}
.qtr-nc-drawer-h>div{flex:1;min-width:0}
.qtr-nc-drawer-x{margin-inline-start:auto;border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:5px;border-radius:8px}
.qtr-nc-drawer-x:hover{background:var(--surface-secondary)}
.qtr-nc-drawer-body{color:var(--text-secondary);font-size:.88rem;line-height:1.6;margin:0 0 14px}
.qtr-nc-drawer-t{display:flex;align-items:center;gap:8px;font-size:.8rem;font-weight:800;margin:18px 0 10px;color:var(--text-secondary)}
.qtr-nc-drawer-t svg{width:14px;height:14px;color:var(--accent-text)}
.qtr-nc-timeline{list-style:none;margin:0;padding:0;display:grid;gap:0}
.qtr-nc-timeline li{display:flex;gap:11px;padding:6px 0;position:relative}
.qtr-nc-timeline li:not(:last-child)::after{content:"";position:absolute;inset-inline-start:4px;inset-block-start:18px;block-size:calc(100% - 8px);inline-size:2px;background:var(--hairline)}
.qtr-nc-tl-dot{inline-size:10px;block-size:10px;border-radius:50%;background:var(--accent);margin-block-start:5px;flex:none;z-index:1}
.qtr-nc-timeline b{font-size:.82rem;font-weight:700}.qtr-nc-timeline small{display:block;color:var(--text-muted);font-size:.72rem}
.qtr-nc-related{display:grid;gap:6px}
.qtr-nc-rel{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--hairline);border-radius:10px;background:var(--surface-secondary);font-size:.82rem}
.qtr-nc-rel svg{width:14px;height:14px;color:var(--accent-text);flex:none}.qtr-nc-rel span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qtr-nc-rel small{color:var(--text-muted);font-size:.7rem}

/* header bell badge + dropdown panel */
#qtr-notifications{position:relative}
.qtr-nc-badge{position:absolute;inset-block-start:-2px;inset-inline-end:-2px;min-inline-size:16px;block-size:16px;padding:0 4px;border-radius:999px;background:var(--qtr-danger);color:#fff;font-size:.62rem;font-weight:800;display:grid;place-items:center;line-height:1;box-shadow:0 0 0 2px var(--shell-surface)}
.qtr-nc-panel{position:fixed;z-index:70;inline-size:320px;max-block-size:70vh;overflow:hidden;display:flex;flex-direction:column;background:var(--shell-surface,var(--surface-primary));border:1px solid var(--hairline);border-radius:16px;box-shadow:var(--elev-2,0 18px 48px color-mix(in srgb,var(--qt-ink) 20%,transparent));animation:qtrFade .15s ease}
.qtr-nc-panel-h{display:flex;align-items:center;gap:9px;padding:13px 15px;border-block-end:1px solid var(--hairline)}
.qtr-nc-panel-h b{font-size:.92rem;font-weight:800}.qtr-nc-panel-h span{color:var(--text-muted);font-size:.74rem}
.qtr-nc-panel-h button{margin-inline-start:auto;border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:5px;border-radius:7px}
.qtr-nc-panel-h button:hover{background:var(--surface-secondary);color:var(--accent-text)}
.qtr-nc-panel-h svg{width:15px;height:15px}
.qtr-nc-panel-list{overflow-y:auto;padding:6px;display:grid;gap:2px}
.qtr-nc-panel-item{display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;cursor:pointer;text-align:start;padding:9px 10px;border-radius:11px}
.qtr-nc-panel-item:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.qtr-nc-panel-item.unread{background:color-mix(in srgb,var(--accent) 5%,transparent)}
.qtr-nc-panel-item .qtr-nc-ic{inline-size:30px;block-size:30px}.qtr-nc-panel-item .qtr-nc-ic svg{width:15px;height:15px}
.qtr-nc-panel-txt{display:grid;min-width:0;flex:1}.qtr-nc-panel-txt b{font-size:.82rem;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qtr-nc-panel-txt small{color:var(--text-muted);font-size:.7rem}
.qtr-nc-panel-all{display:flex;align-items:center;justify-content:center;gap:8px;border:0;border-block-start:1px solid var(--hairline);background:transparent;color:var(--accent-text);font-weight:750;font-size:.84rem;padding:12px;cursor:pointer}
.qtr-nc-panel-all:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}.qtr-nc-panel-all svg{width:15px;height:15px}

@media (max-width:900px){.qtr-nc-body{grid-template-columns:1fr}.qtr-nc-rail{position:static}.qtr-nc-states{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}

/* --- 11N. Global Search Intelligence Center (command palette) -------------- */
.qtr-gs-overlay{position:fixed;inset:0;z-index:120;display:flex;align-items:flex-start;justify-content:center}
.qtr-gs-scrim{position:absolute;inset:0;background:color-mix(in srgb,var(--qtr-black) 46%,transparent);backdrop-filter:blur(3px);animation:qtrFade .16s ease}
.qtr-gs-panel{position:relative;margin-block-start:11vh;inline-size:min(680px,94vw);max-block-size:74vh;display:flex;flex-direction:column;background:var(--shell-surface,var(--surface-primary));border:1px solid var(--hairline);border-radius:18px;box-shadow:0 32px 80px color-mix(in srgb,var(--qt-ink) 32%,transparent);overflow:hidden;animation:qtrGsIn .2s cubic-bezier(.2,.8,.2,1)}
@keyframes qtrGsIn{from{transform:translateY(-14px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.qtr-gs-inputbar{display:flex;align-items:center;gap:12px;padding:16px 18px;border-block-end:1px solid var(--hairline)}
.qtr-gs-inputbar>svg{width:20px;height:20px;color:var(--text-muted);flex:none}
.qtr-gs-inputbar input{flex:1;border:0;background:transparent;outline:none;font-size:1.05rem;color:var(--text-primary);font-family:inherit}
.qtr-gs-esc{font-size:.66rem;font-weight:700;color:var(--text-muted);background:var(--surface-secondary);border:1px solid var(--hairline);border-radius:6px;padding:2px 7px}
.qtr-gs-body{display:flex;min-block-size:0;flex:1;overflow:hidden}
.qtr-gs-results{flex:1;overflow-y:auto;padding:8px}
.qtr-gs-preview{inline-size:230px;border-inline-start:1px solid var(--hairline);padding:16px;display:none}
.qtr-gs-preview.show{display:block}
.qtr-gs-group{margin-block-end:6px}
.qtr-gs-group-h{display:flex;align-items:center;gap:7px;padding:8px 10px 5px;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}
.qtr-gs-group-h svg{width:12px;height:12px}
.qtr-gs-clear{margin-inline-start:auto;border:0;background:transparent;color:var(--accent-text);cursor:pointer;font-size:.68rem;font-weight:700;text-transform:none;letter-spacing:0}
.qtr-gs-item{display:flex;align-items:center;gap:11px;width:100%;border:0;background:transparent;cursor:pointer;text-align:start;padding:9px 11px;border-radius:11px;position:relative}
.qtr-gs-item:hover{background:color-mix(in srgb,var(--accent) 7%,transparent)}
.qtr-gs-item.sel{background:color-mix(in srgb,var(--accent) 13%,transparent)}
.qtr-gs-ic{inline-size:34px;block-size:34px;border-radius:9px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 11%,transparent);color:var(--accent-text);overflow:hidden}
.qtr-gs-ic svg{width:17px;height:17px}
.qtr-gs-photo{inline-size:34px;block-size:34px;border-radius:9px;object-fit:cover}
.qtr-gs-txt{display:grid;min-width:0;flex:1}
.qtr-gs-txt b{font-weight:650;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-gs-txt small{color:var(--text-muted);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-gs-status{font-size:.66rem;font-weight:700;color:var(--text-muted);background:var(--surface-secondary);padding:2px 8px;border-radius:999px;flex:none}
.qtr-gs-kbd{font-size:.64rem;font-weight:800;color:var(--accent-text);background:color-mix(in srgb,var(--accent) 12%,transparent);padding:2px 8px;border-radius:6px;flex:none;text-transform:uppercase;letter-spacing:.03em}
.qtr-gs-enter{opacity:0;color:var(--text-muted);flex:none}.qtr-gs-enter svg{width:15px;height:15px}
.qtr-gs-item.sel .qtr-gs-enter{opacity:1}
.qtr-gs-chips{display:flex;flex-wrap:wrap;gap:6px;padding:2px 10px 8px}
.qtr-gs-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--hairline);background:var(--surface-secondary);color:var(--text-secondary);font-size:.78rem;font-weight:600;padding:5px 11px;border-radius:999px;cursor:pointer}
.qtr-gs-chip:hover{border-color:var(--accent-border);color:var(--accent-text)}.qtr-gs-chip svg{width:12px;height:12px}
.qtr-gs-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:48px 20px;color:var(--text-muted);text-align:center}
.qtr-gs-empty svg{width:32px;height:32px;opacity:.6}.qtr-gs-empty h3{margin:2px 0 0;font-size:.98rem;color:var(--text-secondary)}.qtr-gs-empty p{margin:0;font-size:.82rem}
.qtr-gs-prev-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px}
.qtr-gs-prev-ic{inline-size:56px;block-size:56px;border-radius:15px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text);margin-block-end:8px;overflow:hidden}
.qtr-gs-prev-ic svg{width:26px;height:26px}.qtr-gs-prev-ic .qtr-gs-photo{inline-size:56px;block-size:56px;border-radius:15px}
.qtr-gs-prev-card h3{margin:0;font-size:.95rem;font-weight:800}
.qtr-gs-prev-card p{margin:0;color:var(--text-muted);font-size:.8rem}
.qtr-gs-prev-meta{display:grid;gap:6px;margin:12px 0;width:100%}
.qtr-gs-prev-meta span{display:inline-flex;align-items:center;gap:7px;font-size:.76rem;color:var(--text-secondary);justify-content:center}
.qtr-gs-prev-meta svg{width:13px;height:13px;color:var(--accent-text)}
.qtr-gs-prev-actions{display:grid;gap:7px;width:100%;margin-block-start:4px}
.qtr-gs-prev-actions .qtr-btn{width:100%;justify-content:center}
.qtr-gs-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 16px;border-block-start:1px solid var(--hairline);background:var(--surface-secondary)}
.qtr-gs-hints{font-size:.72rem;color:var(--text-muted)}
.qtr-gs-hints kbd{font-size:.66rem;font-weight:700;color:var(--text-secondary);background:var(--shell-surface);border:1px solid var(--hairline);border-radius:5px;padding:1px 6px;margin-inline-end:2px}
.qtr-gs-count{font-size:.72rem;color:var(--text-muted);font-weight:650}
@media (max-width:620px){.qtr-gs-preview{display:none !important}.qtr-gs-panel{margin-block-start:6vh;max-block-size:84vh}}

/* full-page search center */
.qtr-gs-page{max-inline-size:1080px;margin-inline:auto;display:flex;flex-direction:column;gap:20px}
.qtr-gs-page-hero{display:flex;align-items:center;gap:14px;padding-block-end:4px}
.qtr-gs-page-mark{inline-size:44px;block-size:44px;border-radius:13px;display:grid;place-items:center;flex:none;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 22%,transparent),color-mix(in srgb,var(--accent) 8%,transparent));color:var(--accent-text)}
.qtr-gs-page-mark svg{width:22px;height:22px}
.qtr-gs-page-hero h1{margin:0;font-size:1.3rem;font-weight:850;letter-spacing:-0.02em}
.qtr-gs-page-hero p{margin:3px 0 0;color:var(--text-muted);font-size:.86rem}
.qtr-gs-page-open{display:flex;align-items:center;gap:12px;width:100%;padding:15px 18px;border:1px solid var(--hairline);border-radius:15px;background:var(--surface-secondary);cursor:text;color:var(--text-muted);font-size:1rem;transition:border-color var(--dur-fast) var(--ease)}
.qtr-gs-page-open:hover{border-color:var(--accent-border)}
.qtr-gs-page-open svg{width:19px;height:19px}.qtr-gs-page-open span{flex:1;text-align:start}
.qtr-gs-page-open kbd{font-size:.72rem;font-weight:800;color:var(--text-secondary);background:var(--shell-surface);border:1px solid var(--hairline);border-radius:7px;padding:3px 9px}
.qtr-gs-page-sec h2{display:flex;align-items:center;gap:8px;font-size:.92rem;font-weight:800;margin:0 0 11px}
.qtr-gs-page-sec h2 svg{width:16px;height:16px;color:var(--accent-text)}
.qtr-gs-page-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.qtr-gs-page-card{display:flex;align-items:center;gap:11px;padding:12px 13px;border:1px solid var(--hairline);border-radius:13px;background:var(--surface-secondary);cursor:pointer;text-align:start;transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}
.qtr-gs-page-card:hover{transform:translateY(-2px);border-color:var(--accent-border)}
.qtr-gs-anal{display:grid;grid-template-columns:auto 1fr 1fr;gap:16px;align-items:start;border:1px solid var(--hairline);border-radius:15px;background:var(--surface-secondary);padding:18px}
.qtr-gs-anal-stat{display:flex;flex-direction:column;gap:2px;padding-inline-end:16px;border-inline-end:1px solid var(--hairline)}
.qtr-gs-anal-stat b{font-size:2rem;font-weight:850;color:var(--accent-text);line-height:1}.qtr-gs-anal-stat small{color:var(--text-muted);font-size:.74rem}
.qtr-gs-anal-col h3{display:flex;align-items:center;gap:7px;font-size:.8rem;font-weight:800;margin:0 0 8px}
.qtr-gs-anal-col h3 svg{width:14px;height:14px;color:var(--accent-text)}
.qtr-gs-anal-col ol{list-style:none;margin:0;padding:0;display:grid;gap:3px}
.qtr-gs-anal-col li{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.82rem;padding:5px 0;border-block-end:1px solid var(--hairline)}
.qtr-gs-anal-col li:last-child{border-block-end:0}.qtr-gs-anal-col li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qtr-gs-anal-col li em{font-style:normal;font-weight:800;color:var(--text-muted)}
.qtr-gs-hint{color:var(--text-muted);font-size:.8rem;margin:0}
@media (max-width:720px){.qtr-gs-anal{grid-template-columns:1fr}.qtr-gs-anal-stat{border-inline-end:0;border-block-end:1px solid var(--hairline);padding-block-end:12px}}

/* --- 11O. Quick Actions Intelligence Center (productivity engine) ---------- */
.qtr-qa-overlay{position:fixed;inset:0;z-index:118;display:flex;align-items:flex-start;justify-content:center}
.qtr-qa-scrim{position:absolute;inset:0;background:color-mix(in srgb,var(--qtr-black) 46%,transparent);backdrop-filter:blur(3px);animation:qtrFade .16s ease}
.qtr-qa-panel{position:relative;margin-block-start:11vh;inline-size:min(640px,94vw);max-block-size:74vh;display:flex;flex-direction:column;background:var(--shell-surface,var(--surface-primary));border:1px solid var(--hairline);border-radius:18px;box-shadow:0 32px 80px color-mix(in srgb,var(--qt-ink) 32%,transparent);overflow:hidden;animation:qtrGsIn .2s cubic-bezier(.2,.8,.2,1)}
.qtr-qa-inputbar{display:flex;align-items:center;gap:12px;padding:16px 18px;border-block-end:1px solid var(--hairline)}
.qtr-qa-inputbar>svg{width:20px;height:20px;color:var(--accent-text);flex:none}
.qtr-qa-inputbar input{flex:1;border:0;background:transparent;outline:none;font-size:1.05rem;color:var(--text-primary);font-family:inherit}
.qtr-qa-esc{font-size:.66rem;font-weight:700;color:var(--text-muted);background:var(--surface-secondary);border:1px solid var(--hairline);border-radius:6px;padding:2px 7px}
.qtr-qa-results{flex:1;overflow-y:auto;padding:8px}
.qtr-qa-group{margin-block-end:6px}
.qtr-qa-group-h{display:flex;align-items:center;gap:7px;padding:8px 10px 5px;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}
.qtr-qa-group-h svg{width:12px;height:12px}
.qtr-qa-group.recs .qtr-qa-group-h{color:var(--accent-text)}
.qtr-qa-item{display:flex;align-items:center;gap:11px;width:100%;border:0;background:transparent;cursor:pointer;text-align:start;padding:9px 11px;border-radius:11px;position:relative}
.qtr-qa-item:hover{background:color-mix(in srgb,var(--accent) 7%,transparent)}
.qtr-qa-item.sel{background:color-mix(in srgb,var(--accent) 13%,transparent)}
.qtr-qa-item.rec{border:1px solid var(--hairline);border-inline-start:3px solid var(--accent);margin-block-end:4px}
.qtr-qa-item.rec.sev-high{border-inline-start-color:var(--qtr-warning)} .qtr-qa-item.rec.sev-warning{border-inline-start-color:var(--qtr-warning)}
.qtr-qa-ic{inline-size:34px;block-size:34px;border-radius:9px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 11%,transparent);color:var(--accent-text)}
.qtr-qa-ic svg{width:17px;height:17px}
.qtr-qa-txt{display:grid;min-width:0;flex:1}
.qtr-qa-txt b{font-weight:650;font-size:.9rem;display:flex;align-items:center;gap:6px}
.qtr-qa-txt small{color:var(--text-muted);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-qa-soon{font-style:normal;font-size:.6rem;font-weight:800;color:var(--qtr-warning-text);background:var(--qtr-warning-soft);padding:1px 6px;border-radius:5px;text-transform:uppercase}
.qtr-qa-sc{font-size:.64rem;font-weight:800;color:var(--text-muted);background:var(--surface-secondary);border:1px solid var(--hairline);border-radius:6px;padding:2px 7px;flex:none;letter-spacing:.04em}
.qtr-qa-tools{display:inline-flex;gap:1px;flex:none;opacity:0}
.qtr-qa-item:hover .qtr-qa-tools,.qtr-qa-item.sel .qtr-qa-tools{opacity:1}
.qtr-qa-tools button{border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:5px;border-radius:7px;display:grid;place-items:center}
.qtr-qa-tools button:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-qa-tools button.on{color:var(--accent-text)}.qtr-qa-tools svg{width:14px;height:14px}
.qtr-qa-enter{opacity:0;color:var(--text-muted);flex:none}.qtr-qa-enter svg{width:15px;height:15px}
.qtr-qa-item.sel .qtr-qa-enter{opacity:1}
.qtr-qa-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:48px 20px;color:var(--text-muted);text-align:center}
.qtr-qa-empty svg{width:30px;height:30px;opacity:.6}.qtr-qa-empty h3{margin:2px 0 0;font-size:.95rem;color:var(--text-secondary)}
.qtr-qa-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 16px;border-block-start:1px solid var(--hairline);background:var(--surface-secondary)}
.qtr-qa-hints{font-size:.72rem;color:var(--text-muted)}
.qtr-qa-hints kbd{font-size:.66rem;font-weight:700;color:var(--text-secondary);background:var(--shell-surface);border:1px solid var(--hairline);border-radius:5px;padding:1px 6px;margin-inline-end:2px}
.qtr-qa-count{font-size:.72rem;color:var(--text-muted);font-weight:650}

/* full-page center */
.qtr-qa-page{max-inline-size:1080px;margin-inline:auto;display:flex;flex-direction:column;gap:20px}
.qtr-qa-page-hero{display:flex;align-items:center;gap:14px}
.qtr-qa-page-mark{inline-size:44px;block-size:44px;border-radius:13px;display:grid;place-items:center;flex:none;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 22%,transparent),color-mix(in srgb,var(--accent) 8%,transparent));color:var(--accent-text)}
.qtr-qa-page-mark svg{width:22px;height:22px}
.qtr-qa-page-hero h1{margin:0;font-size:1.3rem;font-weight:850;letter-spacing:-0.02em}
.qtr-qa-page-hero p{margin:3px 0 0;color:var(--text-muted);font-size:.86rem}
.qtr-qa-page-launch{margin-inline-start:auto;flex:none}
.qtr-qa-page-sec h2{display:flex;align-items:center;gap:8px;font-size:.92rem;font-weight:800;margin:0 0 11px}
.qtr-qa-page-sec h2 svg{width:16px;height:16px;color:var(--accent-text)}
.qtr-qa-page-recs{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.qtr-qa-rec-card{display:flex;align-items:center;gap:11px;padding:12px 13px;border:1px solid var(--hairline);border-radius:13px;background:var(--surface-secondary);cursor:pointer;text-align:start;border-inline-start:3px solid var(--accent)}
.qtr-qa-rec-card:hover{transform:translateY(-1px);border-color:var(--accent-border)}
.qtr-qa-rec-card.sev-high{border-inline-start-color:var(--qtr-warning)} .qtr-qa-rec-card.sev-warning{border-inline-start-color:var(--qtr-warning)}
.qtr-qa-rec-ic{inline-size:36px;block-size:36px;border-radius:10px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-qa-rec-ic svg{width:18px;height:18px}
.qtr-qa-rec-txt{display:grid;flex:1;min-width:0}.qtr-qa-rec-txt b{font-size:.86rem;font-weight:750}.qtr-qa-rec-txt small{color:var(--text-muted);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-qa-rec-go{width:16px;height:16px;color:var(--text-muted);flex:none}[dir="rtl"] .qtr-qa-rec-go{transform:scaleX(-1)}
.qtr-qa-page-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}
.qtr-qa-page-card{display:flex;align-items:center;gap:6px;padding:6px;border:1px solid var(--hairline);border-radius:13px;background:var(--surface-secondary);transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}
.qtr-qa-page-card:hover{transform:translateY(-2px);border-color:var(--accent-border)}
.qtr-qa-page-card.is-hidden{opacity:.55}
.qtr-qa-page-run{display:flex;align-items:center;gap:10px;flex:1;min-width:0;border:0;background:transparent;cursor:pointer;text-align:start;padding:6px 7px}
.qtr-qa-page-tools{display:inline-flex;gap:0;flex:none;padding-inline-end:4px}
.qtr-qa-page-tools button{border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:5px;border-radius:7px;display:grid;place-items:center}
.qtr-qa-page-tools button:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent-text)}
.qtr-qa-page-tools button.on{color:var(--accent-text)}.qtr-qa-page-tools svg{width:14px;height:14px}
.qtr-qa-anal{display:grid;grid-template-columns:auto 1fr 1fr;gap:16px;align-items:start;border:1px solid var(--hairline);border-radius:15px;background:var(--surface-secondary);padding:18px}
.qtr-qa-anal-stat{display:flex;flex-direction:column;gap:2px;padding-inline-end:16px;border-inline-end:1px solid var(--hairline)}
.qtr-qa-anal-stat b{font-size:2rem;font-weight:850;color:var(--accent-text);line-height:1}.qtr-qa-anal-stat small{color:var(--text-muted);font-size:.74rem}
.qtr-qa-anal-col h3{display:flex;align-items:center;gap:7px;font-size:.8rem;font-weight:800;margin:0 0 8px}
.qtr-qa-anal-col h3 svg{width:14px;height:14px;color:var(--accent-text)}
.qtr-qa-anal-col ol{list-style:none;margin:0;padding:0;display:grid;gap:3px}
.qtr-qa-anal-col li{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.82rem;padding:5px 0;border-block-end:1px solid var(--hairline)}
.qtr-qa-anal-col li:last-child{border-block-end:0}.qtr-qa-anal-col li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qtr-qa-anal-col li em{font-style:normal;font-weight:800;color:var(--text-muted)}
.qtr-qa-hint{color:var(--text-muted);font-size:.8rem;margin:0}
@media (max-width:720px){.qtr-qa-anal{grid-template-columns:1fr}.qtr-qa-anal-stat{border-inline-end:0;border-block-end:1px solid var(--hairline);padding-block-end:12px}.qtr-qa-page-launch{display:none}}

/* --- 11P. Digital Identity Center (QIP) ----------------------------------- */
.qtr-id{max-inline-size:1120px;margin-inline:auto;display:flex;flex-direction:column;gap:18px}
.qtr-id-hero{display:flex;align-items:center;gap:18px;padding:20px;border:1px solid var(--hairline);border-radius:var(--radius-card);background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 10%,var(--surface-secondary)),var(--surface-secondary))}
.qtr-id-hero-photo{position:relative;flex:none}
.qtr-id-photo{inline-size:84px;block-size:84px;border-radius:22px;object-fit:cover;border:2px solid var(--shell-surface);box-shadow:var(--elev-1)}
.qtr-id-photo-edit{position:absolute;inset-block-end:-4px;inset-inline-end:-4px;inline-size:28px;block-size:28px;border-radius:50%;border:2px solid var(--shell-surface);background:var(--accent);color:var(--on-accent,#fff);cursor:pointer;display:grid;place-items:center}
.qtr-id-photo-edit svg{width:14px;height:14px}
.qtr-id-hero-main{flex:1;min-width:0}
.qtr-id-hero-main h1{margin:0;font-size:1.5rem;font-weight:850;letter-spacing:-0.02em}
.qtr-id-hero-sub{display:flex;flex-wrap:wrap;gap:14px;margin-block-start:6px}
.qtr-id-hero-sub span{display:inline-flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:.84rem}
.qtr-id-hero-sub svg{width:14px;height:14px;color:var(--accent-text)}
.qtr-id-hero-side{display:flex;flex-direction:column;gap:8px;align-items:flex-end;flex:none}
.qtr-id-trust{display:inline-flex;align-items:center;gap:7px;padding:6px 13px;border-radius:999px;font-weight:800;font-size:.82rem}
.qtr-id-trust svg{width:15px;height:15px}
.qtr-id-trust.lvl-high{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-id-trust.lvl-established{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-text)}
.qtr-id-trust.lvl-basic{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-id-trust.lvl-unverified{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-id-status{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:700;color:var(--text-muted)}
.qtr-id-status svg{width:12px;height:12px}.qtr-id-status.s-active{color:var(--qtr-success-text)}
.qtr-id-body{display:grid;grid-template-columns:230px minmax(0,1fr);gap:18px;align-items:start}
.qtr-id-nav{display:grid;gap:3px;position:sticky;inset-block-start:12px}
.qtr-id-navitem{display:flex;align-items:center;gap:10px;border:0;background:transparent;color:var(--text-secondary);font-weight:700;font-size:.86rem;padding:10px 13px;border-radius:11px;cursor:pointer;text-align:start}
.qtr-id-navitem svg{width:16px;height:16px}
.qtr-id-navitem:hover{background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent-text)}
.qtr-id-navitem.active{background:color-mix(in srgb,var(--accent) 13%,transparent);color:var(--accent-text)}
.qtr-id-content{display:grid;gap:16px;min-width:0}
.qtr-id-panel{border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--surface-secondary);padding:17px}
.qtr-id-panel h3{margin:0 0 12px;font-size:.92rem;font-weight:800;display:flex;align-items:center;gap:8px}
.qtr-id-panel h3 svg{width:16px;height:16px;color:var(--accent-text)}
.qtr-id-hint{color:var(--text-muted);font-size:.8rem;line-height:1.6;margin:0 0 12px}
.qtr-id-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px}
.qtr-id-stat{display:flex;flex-direction:column;align-items:center;gap:3px;padding:15px 10px;border:1px solid var(--hairline);border-radius:14px;background:var(--surface-secondary)}
.qtr-id-stat svg{width:18px;height:18px;color:var(--accent-text)}
.qtr-id-stat b{font-size:1.5rem;font-weight:850}.qtr-id-stat small{color:var(--text-muted);font-size:.72rem}
.qtr-id-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}

/* trust meter */
.qtr-id-trust-meter{display:grid;gap:12px}
.qtr-id-trust-score{display:flex;align-items:baseline;gap:8px}
.qtr-id-trust-score b{font-size:2.4rem;font-weight:850;line-height:1;color:var(--accent-text)}
.qtr-id-trust-score small{color:var(--text-muted);font-weight:700}
.qtr-id-trust-bar{block-size:8px;border-radius:999px;background:color-mix(in srgb,var(--text-muted) 18%,transparent);overflow:hidden}
.qtr-id-trust-bar span{display:block;block-size:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 60%,var(--qtr-success)));transition:inline-size .4s var(--ease)}
.qtr-id-trust-factors{list-style:none;margin:4px 0 0;padding:0;display:grid;gap:5px}
.qtr-id-trust-factors li{display:flex;align-items:center;gap:8px;font-size:.84rem;color:var(--text-muted)}
.qtr-id-trust-factors li.met{color:var(--text-primary)}
.qtr-id-trust-factors li svg{width:15px;height:15px}
.qtr-id-trust-factors li.met svg{color:var(--qtr-success-text)}

/* digital card visual */
.qtr-id-dcard{border-radius:18px;padding:18px;color:#fff;background:linear-gradient(135deg,var(--qt-ink),var(--qt-neutral-800) 60%,var(--qtr-product-bi));box-shadow:0 18px 44px color-mix(in srgb,var(--qt-ink) 28%,transparent);position:relative;overflow:hidden}
.qtr-id-dcard::after{content:"";position:absolute;inset-block-start:-40%;inset-inline-end:-10%;inline-size:200px;block-size:200px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 50%,transparent),transparent 70%);opacity:.5}
.qtr-id-dcard.revoked{filter:grayscale(.7);opacity:.85}
.qtr-id-dcard-top{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1}
.qtr-id-dcard-brand{display:inline-flex;align-items:center;gap:7px;font-weight:850;font-size:1rem}
.qtr-id-dcard-brand svg{width:18px;height:18px}
.qtr-id-dcard-kind{font-size:.66rem;opacity:.75;text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.qtr-id-dcard-body{display:flex;align-items:center;gap:14px;margin-block:16px 14px;position:relative;z-index:1}
.qtr-id-dcard-img{inline-size:60px;block-size:60px;border-radius:14px;object-fit:cover;border:2px solid rgba(255,255,255,.28)}
.qtr-id-dcard-info{flex:1;min-width:0;display:grid;gap:2px}
.qtr-id-dcard-info b{font-size:1.05rem;font-weight:800}
.qtr-id-dcard-info small{opacity:.82;font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-id-dcard-qr{inline-size:64px;block-size:64px;border-radius:10px;background:#fff;display:grid;place-items:center;flex:none;overflow:hidden}
.qtr-id-dcard-qr img{inline-size:60px;block-size:60px}
.qtr-id-dcard-trust{font-size:.72rem;font-weight:800;padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.16);flex:none}
.qtr-id-dcard-foot{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1;font-family:ui-monospace,monospace;font-size:.82rem;letter-spacing:.04em}
.qtr-id-dcard-badge{font-family:inherit;font-size:.66rem;font-weight:800;padding:2px 9px;border-radius:999px;letter-spacing:.02em}
.qtr-id-dcard-badge.ok{background:color-mix(in srgb,var(--qtr-success) 24%,transparent);color:var(--qtr-success-soft)}
.qtr-id-dcard-badge.rev{background:color-mix(in srgb,var(--qtr-danger) 24%,transparent);color:var(--qtr-danger-soft)}
.qtr-id-dcard.no-card{background:var(--surface-secondary);color:var(--text-muted);box-shadow:none;border:1px dashed var(--hairline)}
.qtr-id-dcard.no-card::after{display:none}
.qtr-id-dcard-empty{display:flex;flex-direction:column;align-items:center;gap:9px;padding:22px;text-align:center}
.qtr-id-dcard-empty svg{width:30px;height:30px;opacity:.6}.qtr-id-dcard-empty p{margin:0;font-size:.85rem}
.qtr-id-card-full{max-inline-size:440px}
.qtr-id-card-mini .qtr-id-dcard-qr{display:none}
.qtr-id-verify-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-block-end:14px}
.qtr-id-verify-url{flex:1;min-inline-size:200px;padding:9px 12px;border:1px solid var(--hairline);border-radius:10px;background:var(--shell-surface);color:var(--text-secondary);font-size:.8rem;font-family:ui-monospace,monospace}
.qtr-id-card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-block-start:14px}

/* facts / prefs / sessions / security */
.qtr-id-facts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0}
.qtr-id-facts>div{border:1px solid var(--hairline);border-radius:12px;padding:10px 12px;background:var(--shell-surface)}
.qtr-id-facts dt{font-size:.72rem;color:var(--text-muted);margin-block-end:4px}
.qtr-id-facts dd{margin:0;font-weight:700;font-size:.86rem;overflow-wrap:anywhere}
.qtr-id-prefs{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.qtr-id-form{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px;align-items:end}
.qtr-id-form .qtr-id-field{align-items:stretch}
.qtr-id-form .qtr-btn{grid-column:1/-1;justify-self:start}
.qtr-id-facts-ro{margin-block-start:14px}
@media (max-width:600px){.qtr-id-form{grid-template-columns:1fr}}
.qtr-id-field{display:grid;gap:6px}.qtr-id-field>span{font-size:.76rem;font-weight:700;color:var(--text-secondary)}
.qtr-id-select,.qtr-id-input{padding:9px 11px;border:1px solid var(--hairline);border-radius:10px;background:var(--shell-surface);color:var(--text-primary);font-size:.85rem;font-family:inherit;min-inline-size:160px}
.qtr-id-sessions{display:grid;gap:8px}
.qtr-id-session{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid var(--hairline);border-radius:12px;background:var(--shell-surface)}
.qtr-id-session.current{border-color:var(--accent-border);background:color-mix(in srgb,var(--accent) 5%,var(--shell-surface))}
.qtr-id-session-ic{inline-size:36px;block-size:36px;border-radius:10px;display:grid;place-items:center;flex:none;background:color-mix(in srgb,var(--accent) 11%,transparent);color:var(--accent-text)}
.qtr-id-session-ic svg{width:18px;height:18px}
.qtr-id-session-txt{flex:1;min-width:0}.qtr-id-session-txt b{font-size:.86rem;font-weight:700}
.qtr-id-session-txt b em{font-style:normal;font-size:.66rem;font-weight:800;color:var(--accent-text);background:color-mix(in srgb,var(--accent) 12%,transparent);padding:1px 7px;border-radius:6px;margin-inline-start:6px}
.qtr-id-session-txt small{display:block;color:var(--text-muted);font-size:.74rem}
.qtr-id-sec{display:grid;gap:8px}
.qtr-id-sec-row{display:flex;align-items:center;gap:12px;padding:11px 13px;border:1px solid var(--hairline);border-radius:12px;background:var(--shell-surface)}
.qtr-id-sec-ic{inline-size:34px;block-size:34px;border-radius:9px;display:grid;place-items:center;flex:none}
.qtr-id-sec-ic.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text)} .qtr-id-sec-ic.off{background:var(--surface-secondary);color:var(--text-muted)}
.qtr-id-sec-ic svg{width:16px;height:16px}
.qtr-id-sec-row>div{flex:1;min-width:0}.qtr-id-sec-row b{font-size:.86rem;font-weight:700;display:block}.qtr-id-sec-row small{color:var(--text-muted);font-size:.76rem}
.qtr-id-sec-state{font-size:.72rem;font-weight:800;padding:3px 10px;border-radius:999px;flex:none}
.qtr-id-sec-state.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text)} .qtr-id-sec-state.off{background:var(--surface-secondary);color:var(--text-muted)}
.qtr-id-access-chips{display:flex;flex-wrap:wrap;gap:7px}
.qtr-id-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--hairline);border-radius:999px;background:var(--shell-surface);font-size:.82rem;font-weight:650}
.qtr-id-chip svg{width:13px;height:13px;color:var(--accent-text)}
.qtr-id-future{display:flex;gap:12px;align-items:flex-start;padding:14px;border:1px dashed var(--accent-border);border-radius:13px;background:color-mix(in srgb,var(--accent) 4%,transparent)}
.qtr-id-future svg{width:20px;height:20px;color:var(--accent-text);flex:none;margin-block-start:2px}
.qtr-id-future b{font-size:.88rem}.qtr-id-future p{margin:4px 0 0;color:var(--text-muted);font-size:.8rem;line-height:1.6}
.qtr-id-timeline{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.qtr-id-timeline li{display:flex;gap:11px;padding:7px 0}
.qtr-id-tl-dot{inline-size:9px;block-size:9px;border-radius:50%;background:var(--accent);margin-block-start:5px;flex:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.qtr-id-timeline b{font-weight:700;font-size:.84rem}.qtr-id-timeline small{display:block;color:var(--text-muted);font-size:.72rem}
@media (max-width:900px){.qtr-id-body{grid-template-columns:1fr}.qtr-id-nav{position:static;grid-auto-flow:column;overflow-x:auto}.qtr-id-cols{grid-template-columns:1fr}.qtr-id-facts{grid-template-columns:1fr}}

/* --- 11P.1 Portrait printable Identity Badge ------------------------------ */
.qtr-id-cardwrap{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.qtr-id-card-side{flex:1;min-inline-size:180px;display:grid;gap:8px;align-content:start}
.qtr-btn.block{width:100%;justify-content:center}
/* ══ Official Quatron employee identity card ═══════════════════════════════
   Portrait 760×1200 on Ink, official integrated wordmark, asymmetric portrait,
   evidence rows, verification panel. Approved visual reference, 2026-07-30.

   SCALING. Every dimension below is --u = one design pixel of the 760-wide
   reference, derived by plain calc from the card's own width. So the numbers
   here are the numbers from the design, and the whole card scales as one object
   at any width — no breakpoint redraws it, and nothing drifts out of proportion.
   Deliberately NOT container query units: cqi inside the element that declares
   the container resolves against the viewport, not against the element, which
   silently doubled this card's own padding.

   PATTERNS. The two official pattern assets are drawn in Ink for light grounds;
   on this dark card they would be invisible. They are applied as CSS masks, so
   the geometry rendered is the official file itself, recoloured to the Halo
   token rather than redrawn. Each asset already bakes its own alpha (primary
   0.05, security 0.10), which is exactly the intended subtlety — so the mask
   caps the effect there and the patterns cannot overpower the text. */
.qtr-idbadge{
  --w:min(420px,92vw);                 /* one knob: the card's rendered width */
  --u:calc(var(--w)/760);              /* one design pixel of the 760-wide reference */
  --qid-ink:#0D1420; --qid-blue:#2E5FE8; --qid-halo:#A8C2F5; --qid-verified:#1E9E77;
  inline-size:var(--w); max-inline-size:100%; aspect-ratio:760/1200;
  margin:0 auto; position:relative; overflow:hidden; isolation:isolate;
  border-radius:calc(var(--u)*34);
  padding:calc(var(--u)*54) calc(var(--u)*56) calc(var(--u)*44);
  display:flex; flex-direction:column; text-align:start; color:#fff;
  background:
    radial-gradient(120% 70% at 82% 0%, var(--qt-neutral-800) 0%, transparent 58%),
    linear-gradient(178deg,var(--qt-ink) 0%, var(--qid-ink) 46%, var(--qt-ink) 100%);
  box-shadow:0 calc(var(--u)*26) calc(var(--u)*64) color-mix(in srgb,var(--qt-ink) 42%,transparent);
  font-family:'IBM Plex Sans','Tajawal',system-ui,sans-serif;
  -webkit-print-color-adjust:exact;print-color-adjust:exact;
}
html[lang="ar"] .qtr-idbadge,.qtr-idbadge:dir(rtl){font-family:'Tajawal','IBM Plex Sans',system-ui,sans-serif}
.qtr-idbadge.revoked{filter:grayscale(.55)}

/* Accent rail — inline-start, so it mirrors with the writing direction. */
.qtr-idbadge-rail{position:absolute;inset-block:0;inset-inline-start:0;inline-size:calc(var(--u)*7);
  background:linear-gradient(180deg,var(--qid-blue) 0%,var(--accent) 42%,var(--qtr-product-pos) 100%);z-index:3}

/* ── head ── */
.qtr-idbadge-head{display:flex;align-items:flex-start;justify-content:space-between;
  gap:calc(var(--u)*18);position:relative;z-index:2}
.qtr-idbadge-kindwrap{display:flex;flex-direction:column;gap:calc(var(--u)*7);min-inline-size:0;align-items:flex-end;text-align:end}
.qtr-idbadge-kind{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:calc(var(--u)*15);
  letter-spacing:.22em;color:var(--qid-halo);opacity:.72;text-transform:uppercase}
.qtr-idbadge-kind-name{font-size:calc(var(--u)*23);font-weight:700;letter-spacing:.01em}
.qtr-idbadge-brand{display:flex;flex-direction:column;align-items:flex-start;gap:calc(var(--u)*9);
  text-align:start;min-inline-size:0}
.qtr-idbadge-wordmark{inline-size:calc(var(--u)*196);block-size:auto;display:block}
.qtr-idbadge-org{font-size:calc(var(--u)*17);font-weight:500;color:var(--qid-halo);opacity:.82;
  overflow-wrap:anywhere}

/* ── employee ── */
.qtr-idbadge-person{position:relative;z-index:2;margin-block-start:calc(var(--u)*46);
  display:grid;grid-template-columns:1fr auto;column-gap:calc(var(--u)*26);align-items:end}
.qtr-idbadge-pattern{position:absolute;inset:calc(var(--u)*-70) calc(var(--u)*-60);z-index:-1;
  pointer-events:none;background:var(--qid-halo);
  -webkit-mask:url("/quatron-core/brand/patterns/quatron-pattern-primary-light.svg") center/cover no-repeat;
  mask:url("/quatron-core/brand/patterns/quatron-pattern-primary-light.svg") center/cover no-repeat}
.qtr-idbadge-ident{grid-column:2;grid-row:1;min-inline-size:0;display:flex;flex-direction:column;
  align-items:flex-start;text-align:start;gap:calc(var(--u)*6)}
.qtr-idbadge-eyebrow{display:inline-flex;align-items:center;gap:calc(var(--u)*12);
  font-size:calc(var(--u)*16);font-weight:500;color:var(--qid-halo);opacity:.8}
.qtr-idbadge-eyebrow i{inline-size:calc(var(--u)*46);block-size:calc(var(--u)*2);
  background:var(--qid-blue);border-radius:2px;display:block}
.qtr-idbadge-name{margin:0;font-size:calc(var(--u)*42);font-weight:700;line-height:1.18;
  letter-spacing:-.01em;overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.qtr-idbadge-role{margin:0;font-size:calc(var(--u)*23);font-weight:400;color:var(--qt-neutral-300);
  overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.qtr-idbadge-state{margin-block-start:calc(var(--u)*12);display:inline-flex;align-items:center;
  gap:calc(var(--u)*10);font-size:calc(var(--u)*18);font-weight:500;
  padding:calc(var(--u)*9) calc(var(--u)*22);border-radius:999px;
  border:1px solid rgba(30,158,119,.5);background:rgba(30,158,119,.13);color:var(--qtr-success-soft)}
.qtr-idbadge-state.rev{border-color:color-mix(in srgb,var(--qtr-danger) 50%,transparent);background:color-mix(in srgb,var(--qtr-danger) 13%,transparent);color:var(--qtr-danger-soft)}
.qtr-idbadge-dot{inline-size:calc(var(--u)*10);block-size:calc(var(--u)*10);border-radius:50%;
  background:currentColor;flex:none}

/* Asymmetric rectangular portrait: one corner squared, the rest softened. */
.qtr-idbadge-photo{grid-column:1;grid-row:1;margin:0;position:relative;inline-size:calc(var(--u)*268);
  aspect-ratio:268/340;flex:none}
.qtr-idbadge-phototab{position:absolute;inset-block-start:calc(var(--u)*-13);inset-inline-end:calc(var(--u)*22);
  inline-size:calc(var(--u)*86);block-size:calc(var(--u)*5);border-radius:3px;background:var(--qid-blue)}
.qtr-idbadge-img{inline-size:100%;block-size:100%;object-fit:cover;display:block;
  border-radius:calc(var(--u)*22) calc(var(--u)*22) calc(var(--u)*22) calc(var(--u)*6);
  background:var(--qt-neutral-700);border:1px solid rgba(168,194,245,.22);
  box-shadow:0 calc(var(--u)*16) calc(var(--u)*34) color-mix(in srgb,var(--qt-ink) 50%,transparent)}

/* ── evidence rows ── */
.qtr-idbadge-rows{margin:calc(var(--u)*48) 0 0;position:relative;z-index:2;flex:1 1 auto;
  display:flex;flex-direction:column;justify-content:space-evenly;min-block-size:0;
  border-block-start:1px solid rgba(168,194,245,.15)}
.qtr-idbadge-row{display:flex;align-items:center;justify-content:space-between;
  gap:calc(var(--u)*20);padding-block:calc(var(--u)*26);
  border-block-end:1px solid rgba(168,194,245,.15)}
.qtr-idbadge-row dt{font-size:calc(var(--u)*17);font-weight:400;color:var(--qt-neutral-400);flex:none}
.qtr-idbadge-row dd{margin:0;font-size:calc(var(--u)*21);font-weight:700;text-align:end;
  min-inline-size:0;overflow-wrap:anywhere}
.qtr-idbadge-verified{display:inline-flex;align-items:center;gap:calc(var(--u)*10);color:#fff}
.qtr-idbadge-verified svg{inline-size:calc(var(--u)*24);block-size:calc(var(--u)*24);
  color:var(--qid-verified);flex:none}
.qtr-idbadge-verified.lvl-unverified svg{color:var(--qtr-warning-text)}
.qtr-idbadge-num{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:calc(var(--u)*22);
  font-weight:500;letter-spacing:.06em}

/* ── verification panel ── */
.qtr-idbadge-verify{margin-block-start:calc(var(--u)*10);position:relative;z-index:2;overflow:hidden;
  border-radius:calc(var(--u)*24);border:1px solid rgba(168,194,245,.16);
  background:rgba(168,194,245,.055);padding:calc(var(--u)*26);
  display:grid;grid-template-columns:1fr auto;gap:calc(var(--u)*22);align-items:center}
.qtr-idbadge-secpattern{position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:var(--qid-halo);
  -webkit-mask:url("/quatron-core/brand/patterns/quatron-pattern-security-light.svg") center/cover no-repeat;
  mask:url("/quatron-core/brand/patterns/quatron-pattern-security-light.svg") center/cover no-repeat}
.qtr-idbadge-verify-body{min-inline-size:0;text-align:start;display:flex;flex-direction:column;
  align-items:flex-start;gap:calc(var(--u)*10)}
.qtr-idbadge-chip{font-size:calc(var(--u)*15);font-weight:500;padding:calc(var(--u)*5) calc(var(--u)*16);
  border-radius:999px;background:var(--qid-blue);color:#fff}
.qtr-idbadge-verify-body h4{margin:0;font-size:calc(var(--u)*26);font-weight:700;line-height:1.28}
.qtr-idbadge-verify-body p{margin:0;font-size:calc(var(--u)*15);font-weight:400;color:var(--qt-neutral-400);line-height:1.55}
/* Square, undistorted, white — the quiet zone in the SVG is preserved and this
   padding only ever adds to it. */
.qtr-idbadge-qr{inline-size:calc(var(--u)*196);aspect-ratio:1;flex:none;border-radius:calc(var(--u)*14);
  background:#fff;padding:calc(var(--u)*9);display:grid;place-items:center;overflow:hidden}
.qtr-idbadge-qr svg,.qtr-idbadge-qr img{inline-size:100%;block-size:100%;display:block}
.qtr-idbadge-qr img{image-rendering:pixelated}
.qtr-idbadge-qr-ph{color:var(--qt-neutral-400)}
.qtr-idbadge-qr-ph svg{inline-size:calc(var(--u)*64);block-size:calc(var(--u)*64)}

/* ── foot ── */
.qtr-idbadge-foot{margin-block-start:calc(var(--u)*20);position:relative;z-index:2;
  display:flex;align-items:center;justify-content:space-between;gap:calc(var(--u)*16)}
.qtr-idbadge-evidence{font-family:'IBM Plex Mono',ui-monospace,monospace;font-size:calc(var(--u)*13);
  letter-spacing:.18em;color:var(--qt-neutral-500);text-transform:uppercase}
.qtr-idbadge-issuer{font-size:calc(var(--u)*16);font-weight:500;color:var(--qt-neutral-300)}

/* Compact preview (overview column) — same object, smaller container. */
.qtr-idbadge.mini{--w:min(272px,64vw);aspect-ratio:760/980}
.qtr-idbadge.mini .qtr-idbadge-person{margin-block-start:calc(var(--u)*44)}
.qtr-idbadge.mini .qtr-idbadge-rows{margin-block-start:calc(var(--u)*38)}

.qtr-idbadge.no-card{aspect-ratio:auto;display:block;padding:22px;
  background:var(--surface-secondary);color:var(--text-muted);box-shadow:none;
  border:1px dashed var(--hairline);text-align:center}

/* Print — isolate the badge as a physical CR80 ID card (54 × 85.6 mm) */
#qtr-print-root{display:none}
@media print{
  /* Identity badge card size is scoped to a NAMED page so it never leaks into other
     prints (the QuatronPrint portal, finance/HCM/QRP documents use the default page). */
  @page qtrIdCard{size:54mm 85.6mm;margin:0}
  body.qtr-printing{background:#fff !important;margin:0 !important;padding:0 !important}
  body.qtr-printing>*:not(#qtr-print-root){display:none !important}
  body.qtr-printing #qtr-print-root{display:block !important;padding:0;margin:0;page:qtrIdCard}
  /* 340px design width → 54mm via zoom; keeps layout box exact, no blank page.
     The card's 760×1200 proportion is 0.6333 against CR80's 0.6308 — a 0.4%
     difference, so the approved composition still prints as a physical ID card
     rather than needing a page size of its own. */
  body.qtr-printing #qtr-print-root .qtr-idbadge{--w:340px;aspect-ratio:760/1200;zoom:.6;box-shadow:none;margin:0;border-radius:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;page-break-inside:avoid;break-inside:avoid}
}

/* ══ 12T. Certificates & Trust Center (QIP-02) ══════════════════════════════ */
.qtr-trust{display:flex;flex-direction:column;gap:16px}
.qtr-trust-loading{display:flex;align-items:center;gap:10px;justify-content:center;padding:60px 20px;color:var(--text-secondary);font-weight:700}
.qtr-spinner{inline-size:18px;block-size:18px;border:2px solid var(--hairline);border-block-start-color:var(--accent);border-radius:50%;display:inline-block;animation:qtr-spin .7s linear infinite}
@keyframes qtr-spin{to{transform:rotate(360deg)}}
.qtr-trust-hero{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;padding:22px;border:1px solid var(--hairline);border-radius:22px;background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 8%,var(--shell-surface)),var(--shell-surface));position:relative;overflow:hidden}
.qtr-trust-hero .qtr-eyebrow{display:inline-flex;align-items:center;gap:7px;font-size:.74rem;font-weight:800;color:var(--accent);letter-spacing:.02em}
.qtr-trust-hero h1{margin:8px 0 4px;font-size:1.5rem;font-weight:850}
.qtr-trust-hero p{margin:0;color:var(--text-secondary);max-inline-size:52ch;font-size:.9rem}
.qtr-trust-hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-block-start:14px}
/* meter */
.qtr-trust-meter{display:flex;align-items:center;gap:16px}
.qtr-trust-ring{position:relative;inline-size:118px;block-size:118px;flex:none}
.qtr-trust-ring svg{inline-size:118px;block-size:118px;transform:rotate(-90deg)}
.qtr-trust-ring circle{fill:none;stroke-width:10}
.qtr-trust-ring .bg{stroke:var(--hairline)}
.qtr-trust-ring .fg{stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset 1s cubic-bezier(.22,1,.36,1)}
.qtr-trust-meter.lvl-high .fg{stroke:var(--qtr-success)}.qtr-trust-meter.lvl-established .fg{stroke:var(--accent)}.qtr-trust-meter.lvl-basic .fg{stroke:var(--qtr-warning)}.qtr-trust-meter.lvl-unverified .fg{stroke:var(--qtr-danger)}
.qtr-trust-ring-num{position:absolute;inset:0;display:grid;place-content:center;text-align:center;line-height:1}
.qtr-trust-ring-num b{font-size:1.7rem;font-weight:850}.qtr-trust-ring-num small{color:var(--text-muted);font-size:.7rem}
.qtr-trust-meta{display:flex;flex-direction:column;gap:8px}
.qtr-trust-badge{display:inline-flex;align-items:center;gap:6px;font-weight:800;font-size:.78rem;padding:4px 11px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);inline-size:fit-content}
.qtr-trust-badge.lvl-high{background:color-mix(in srgb,var(--qtr-success) 16%,transparent);color:var(--qtr-success-text)}.qtr-trust-badge.lvl-unverified{background:color-mix(in srgb,var(--qtr-danger) 16%,transparent);color:var(--qtr-danger-text)}.qtr-trust-badge.lvl-basic{background:color-mix(in srgb,var(--qtr-warning) 16%,transparent);color:var(--qtr-warning-text)}
.qtr-trust-factors{list-style:none;margin:0;padding:0;display:grid;gap:3px}
.qtr-trust-factors li{display:flex;align-items:center;gap:6px;font-size:.76rem;font-weight:600;color:var(--text-secondary)}
.qtr-trust-factors li.met{color:var(--text-primary)}.qtr-trust-factors li.off{opacity:.55}
.qtr-trust-factors li.met svg{color:var(--qtr-success-text)}.qtr-trust-factors svg{inline-size:13px;block-size:13px}
/* kpis */
.qtr-trust-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:10px}
.qtr-trust-kpi{border:1px solid var(--hairline);border-radius:14px;padding:12px;text-align:center;background:var(--shell-surface)}
.qtr-trust-kpi b{display:block;font-size:1.5rem;font-weight:850;line-height:1}
.qtr-trust-kpi span{font-size:.72rem;color:var(--text-muted);font-weight:700}
.qtr-trust-kpi.ok b{color:var(--qtr-success-text)}.qtr-trust-kpi.warn b{color:var(--qtr-warning-text)}.qtr-trust-kpi.danger b{color:var(--qtr-danger-text)}.qtr-trust-kpi.muted b{color:var(--text-muted)}
/* alerts */
.qtr-trust-alerts{display:grid;gap:8px}
.qtr-trust-alert{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:12px;font-weight:700;font-size:.84rem;border:1px solid}
.qtr-trust-alert.lvl-high{background:color-mix(in srgb,var(--qtr-danger) 8%,transparent);border-color:color-mix(in srgb,var(--qtr-danger) 30%,transparent);color:var(--qtr-danger-text)}
.qtr-trust-alert.lvl-medium{background:color-mix(in srgb,var(--qtr-warning) 8%,transparent);border-color:color-mix(in srgb,var(--qtr-warning) 30%,transparent);color:var(--qtr-warning-text)}
.qtr-trust-alert svg{inline-size:17px;block-size:17px}
/* panels */
.qtr-trust-panel{border:1px solid var(--hairline);border-radius:18px;padding:18px;background:var(--shell-surface)}
.qtr-trust-panel>h3{margin:0 0 14px;font-size:.98rem;font-weight:800;display:flex;align-items:center;gap:8px}
.qtr-trust-panel>h3 svg{inline-size:17px;block-size:17px;color:var(--accent)}
.qtr-trust-2col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.qtr-trust-filters{display:flex;gap:8px;flex-wrap:wrap;margin-block-end:14px}
/* cert grid + cards */
.qtr-cert-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.qtr-cert-card{text-align:start;border:1px solid var(--hairline);border-radius:16px;padding:14px;background:var(--shell-surface);cursor:pointer;display:flex;flex-direction:column;gap:8px;transition:transform .12s,border-color .12s,box-shadow .12s;font-family:inherit;color:inherit}
.qtr-cert-card:hover{transform:translateY(-2px);border-color:var(--accent-border);box-shadow:0 10px 26px color-mix(in srgb,var(--qt-ink) 10%,transparent)}
.qtr-cert-card-top{display:flex;align-items:center;justify-content:space-between}
.qtr-cert-ic{inline-size:34px;block-size:34px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}
.qtr-cert-ic.lg{inline-size:52px;block-size:52px;border-radius:14px}.qtr-cert-ic.lg svg{inline-size:26px;block-size:26px}
.qtr-cert-ic svg{inline-size:18px;block-size:18px}
.qtr-cert-num{font-family:ui-monospace,monospace;font-weight:800;font-size:.92rem;letter-spacing:.02em}
.qtr-cert-sub{font-size:.78rem;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-cert-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.74rem;color:var(--text-muted);font-weight:700;margin-block-start:2px}
.qtr-cert-foot span{display:inline-flex;align-items:center;gap:5px}.qtr-cert-foot svg{inline-size:13px;block-size:13px}
.qtr-cert-ca{color:var(--accent)!important}
.qtr-cert-card.st-revoked,.qtr-cert-card.st-expired{opacity:.72}
.qtr-cert-status{font-size:.66rem;font-weight:800;padding:3px 9px;border-radius:999px;letter-spacing:.02em;background:var(--surface-secondary);color:var(--text-secondary)}
.qtr-cert-status.lg{font-size:.78rem;padding:5px 13px}
.qtr-cert-status.st-active{background:color-mix(in srgb,var(--qtr-success) 16%,transparent);color:var(--qtr-success-text)}
.qtr-cert-status.st-suspended{background:color-mix(in srgb,var(--qtr-warning) 16%,transparent);color:var(--qtr-warning-text)}
.qtr-cert-status.st-revoked{background:color-mix(in srgb,var(--qtr-danger) 16%,transparent);color:var(--qtr-danger-text)}
.qtr-cert-status.st-expired{background:var(--surface-secondary);color:var(--text-muted)}
.qtr-cert-status.st-renewed{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
/* lists */
.qtr-trust-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.qtr-trust-list li>button,.qtr-trust-list li{inline-size:100%}
.qtr-trust-list button{display:flex;align-items:center;gap:10px;inline-size:100%;text-align:start;border:1px solid var(--hairline);border-radius:12px;padding:9px 12px;background:var(--shell-surface);cursor:pointer;font-family:inherit;color:inherit}
.qtr-trust-list button:hover{border-color:var(--accent-border)}
.qtr-trust-list li>span:only-child,.qtr-trust-list li{align-items:center}
.qtr-trust-list li>*{vertical-align:middle}
.qtr-trust-list b{font-family:ui-monospace,monospace;font-size:.82rem}
.qtr-trust-list small{color:var(--text-muted);font-size:.74rem;margin-inline-start:auto;text-align:end}
.qtr-trust-list li:not(:has(button)){display:flex;align-items:center;gap:10px;border:1px solid var(--hairline);border-radius:12px;padding:9px 12px;background:var(--shell-surface)}
/* timeline */
.qtr-trust-timeline{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.qtr-trust-timeline li{display:flex;gap:12px;padding:6px 0;position:relative}
.qtr-tl-dot{inline-size:11px;block-size:11px;border-radius:50%;background:var(--accent);margin-block-start:4px;flex:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.qtr-tl-dot.revoked{background:var(--qtr-danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--qtr-danger) 18%,transparent)}.qtr-tl-dot.suspended{background:var(--qtr-warning);box-shadow:0 0 0 3px color-mix(in srgb,var(--qtr-warning) 18%,transparent)}.qtr-tl-dot.expired{background:var(--qt-neutral-400);box-shadow:none}
.qtr-trust-timeline b{font-size:.84rem;font-weight:700}.qtr-trust-timeline small{display:block;color:var(--text-muted);font-size:.72rem}
.qtr-trust-timeline em{display:block;color:var(--text-secondary);font-size:.76rem;font-style:normal;margin-block-start:2px}
/* recs */
.qtr-trust-recs{display:grid;gap:8px}
.qtr-trust-rec{display:flex;align-items:center;gap:10px;padding:11px 14px;border:1px dashed var(--hairline);border-radius:12px}
.qtr-trust-rec svg{inline-size:18px;block-size:18px;color:var(--accent);flex:none}
.qtr-trust-rec span{flex:1;font-size:.86rem;font-weight:600}
.qtr-trust-hbtns{margin-block-start:12px}
/* certificate 360 */
.qtr-cert360-top{margin-block-end:2px}
.qtr-cert360-hero{display:flex;align-items:center;gap:16px;padding:20px;border:1px solid var(--hairline);border-radius:20px;background:var(--shell-surface)}
.qtr-cert360-hero.st-revoked{border-color:color-mix(in srgb,var(--qtr-danger) 35%,transparent)}.qtr-cert360-hero.st-suspended{border-color:color-mix(in srgb,var(--qtr-warning) 35%,transparent)}
.qtr-cert360-hid{flex:1}.qtr-cert360-hid h1{margin:0;font-family:ui-monospace,monospace;font-size:1.3rem;font-weight:850}
.qtr-cert360-hid p{margin:3px 0 0;color:var(--text-secondary);font-size:.86rem}
.qtr-cert360-actions{display:flex;gap:8px;flex-wrap:wrap;padding:12px 2px}
.qtr-cert360-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.qtr-cert360-trust{display:flex;justify-content:center}
.qtr-facts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0}
.qtr-facts>div{border:1px solid var(--hairline);border-radius:12px;padding:9px 11px;background:var(--surface-secondary)}
.qtr-facts dt{font-size:.7rem;color:var(--text-muted);margin-block-end:3px}
.qtr-facts dd{margin:0;font-weight:700;font-size:.82rem;overflow-wrap:anywhere}
.qtr-deps{display:grid;gap:8px}
.qtr-dep{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:600}
.qtr-dep svg{inline-size:15px;block-size:15px;color:var(--accent)}
.qtr-dep button{background:none;border:none;cursor:pointer;color:var(--accent);font-family:ui-monospace,monospace;padding:0;font-size:.82rem}
/* modal */
.qtr-modal-back{position:fixed;inset:0;background:color-mix(in srgb,var(--qt-ink) 50%,transparent);backdrop-filter:blur(4px);display:grid;place-items:center;z-index:1200;padding:18px;animation:qtr-fade .15s ease}
@keyframes qtr-fade{from{opacity:0}}
.qtr-modal{inline-size:min(460px,100%);max-block-size:min(90vh,900px);display:flex;flex-direction:column;background:var(--shell-surface);border:1px solid var(--hairline);border-radius:20px;box-shadow:0 30px 80px color-mix(in srgb,var(--qt-ink) 40%,transparent);overflow:hidden}
.qtr-modal-head{flex:none;display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-block-end:1px solid var(--hairline)}
.qtr-modal-head h3{margin:0;font-size:1rem;font-weight:800}
.qtr-modal-x{background:none;border:none;cursor:pointer;color:var(--text-muted);padding:4px;border-radius:8px}.qtr-modal-x:hover{background:var(--surface-secondary)}
.qtr-modal-body{flex:1 1 auto;min-block-size:0;overflow-y:auto;padding:18px;display:grid;gap:12px}
.qtr-modal-foot{flex:none;display:flex;justify-content:flex-end;gap:10px;padding:14px 18px;border-block-start:1px solid var(--hairline);background:var(--shell-surface)}
.qtr-form-grid{display:grid;gap:12px}
.qtr-validate-result{min-block-size:8px}
.qtr-validate-verdict{display:flex;align-items:center;gap:12px;padding:14px;border-radius:14px;font-weight:800}
.qtr-validate-verdict.ok{background:color-mix(in srgb,var(--qtr-success) 12%,transparent);color:var(--qtr-success-text)}.qtr-validate-verdict.bad{background:color-mix(in srgb,var(--qtr-danger) 10%,transparent);color:var(--qtr-danger-text)}
.qtr-validate-verdict svg{inline-size:26px;block-size:26px}
.qtr-validate-verdict small{display:block;color:var(--text-secondary);font-weight:600;font-size:.78rem}
.qtr-empty.sm{padding:18px}
@media (max-width:820px){.qtr-trust-hero{grid-template-columns:1fr}.qtr-trust-2col,.qtr-cert360-grid,.qtr-facts{grid-template-columns:1fr}.qtr-trust-hero-r{display:flex;justify-content:center}}

/* ══ 13S. Digital Signature Center (QIP-03) ═════════════════════════════════ */
.qtr-sig{display:flex;flex-direction:column;gap:16px}
.qtr-sig-loading{display:flex;align-items:center;gap:10px;justify-content:center;padding:60px 20px;color:var(--text-secondary);font-weight:700}
.qtr-sig-hero{padding:22px;border:1px solid var(--hairline);border-radius:22px;background:linear-gradient(160deg,color-mix(in srgb,var(--accent) 8%,var(--shell-surface)),var(--shell-surface))}
.qtr-sig-hero .qtr-eyebrow{display:inline-flex;align-items:center;gap:7px;font-size:.74rem;font-weight:800;color:var(--accent)}
.qtr-sig-hero h1{margin:8px 0 4px;font-size:1.5rem;font-weight:850}
.qtr-sig-hero p{margin:0;color:var(--text-secondary);max-inline-size:56ch;font-size:.9rem}
.qtr-sig-hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-block-start:14px}
.qtr-sig-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:10px}
.qtr-sig-kpi{border:1px solid var(--hairline);border-radius:14px;padding:12px;text-align:center;background:var(--shell-surface)}
.qtr-sig-kpi b{display:block;font-size:1.5rem;font-weight:850;line-height:1}
.qtr-sig-kpi span{font-size:.72rem;color:var(--text-muted);font-weight:700}
.qtr-sig-kpi.ok b{color:var(--qtr-success-text)}.qtr-sig-kpi.warn b{color:var(--qtr-warning-text)}.qtr-sig-kpi.danger b{color:var(--qtr-danger-text)}
.qtr-sig-panel{border:1px solid var(--hairline);border-radius:18px;padding:18px;background:var(--shell-surface)}
.qtr-sig-panel>h3{margin:0 0 14px;font-size:.98rem;font-weight:800;display:flex;align-items:center;gap:8px}
.qtr-sig-panel>h3 svg{inline-size:17px;block-size:17px;color:var(--accent)}
.qtr-sig-list{display:grid;gap:9px}
.qtr-sig-row{display:flex;align-items:center;gap:12px;inline-size:100%;text-align:start;border:1px solid var(--hairline);border-radius:14px;padding:12px 14px;background:var(--shell-surface);cursor:pointer;font-family:inherit;color:inherit;transition:border-color .12s,transform .12s}
.qtr-sig-row:hover{border-color:var(--accent-border);transform:translateY(-1px)}
.qtr-sig-row-ic{inline-size:34px;block-size:34px;border-radius:10px;flex:none;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}
.qtr-sig-row-ic svg{inline-size:17px;block-size:17px}
.qtr-sig-row-main{flex:1;min-inline-size:0}
.qtr-sig-row-main b{display:block;font-weight:800;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-sig-row-main small{color:var(--text-muted);font-size:.74rem}
.qtr-sig-progress{block-size:6px;border-radius:99px;background:var(--surface-secondary);overflow:hidden;margin-block-start:6px}
.qtr-sig-progress>span{display:block;block-size:100%;background:var(--accent);border-radius:99px;transition:width .5s}
.qtr-sig-progress.lg{block-size:9px}
.qtr-sig-count{font-family:ui-monospace,monospace;font-weight:800;font-size:.82rem;color:var(--text-secondary)}
.qtr-sig-badge{font-size:.66rem;font-weight:800;padding:3px 9px;border-radius:999px;background:var(--surface-secondary);color:var(--text-secondary);white-space:nowrap}
.qtr-sig-badge.lg{font-size:.78rem;padding:5px 13px}
.qtr-sig-badge.st-completed{background:color-mix(in srgb,var(--qtr-success) 16%,transparent);color:var(--qtr-success-text)}
.qtr-sig-badge.st-requested,.qtr-sig-badge.st-in_progress{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
.qtr-sig-badge.st-rejected,.qtr-sig-badge.st-revoked{background:color-mix(in srgb,var(--qtr-danger) 16%,transparent);color:var(--qtr-danger-text)}
.qtr-sig-badge.st-cancelled,.qtr-sig-badge.st-expired,.qtr-sig-badge.st-archived{background:var(--surface-secondary);color:var(--text-muted)}
.qtr-sig-badge.st-draft{background:color-mix(in srgb,var(--qtr-warning) 16%,transparent);color:var(--qtr-warning-text)}
/* 360 */
.qtr-sig-top{margin-block-end:2px}
.qtr-sig-360hero{display:flex;align-items:center;gap:16px;padding:20px;border:1px solid var(--hairline);border-radius:20px;background:var(--shell-surface)}
.qtr-sig-360hero.st-rejected,.qtr-sig-360hero.st-revoked{border-color:color-mix(in srgb,var(--qtr-danger) 30%,transparent)}
.qtr-sig-360hero.st-completed{border-color:color-mix(in srgb,var(--qtr-success) 30%,transparent)}
.qtr-sig-360ic{inline-size:52px;block-size:52px;border-radius:14px;flex:none;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}
.qtr-sig-360ic svg{inline-size:26px;block-size:26px}
.qtr-sig-360h{flex:1}.qtr-sig-360h h1{margin:0;font-size:1.25rem;font-weight:850}
.qtr-sig-360h p{margin:3px 0 0;color:var(--text-secondary);font-size:.84rem}
.qtr-sig-progresswrap{border:1px solid var(--hairline);border-radius:14px;padding:14px 16px;background:var(--shell-surface)}
.qtr-sig-progresslabels{display:flex;gap:16px;flex-wrap:wrap;margin-block-start:8px;font-size:.8rem;color:var(--text-secondary);font-weight:600}
.qtr-sig-progresslabels .danger{color:var(--qtr-danger-text)}
.qtr-sig-actions{display:flex;gap:8px;flex-wrap:wrap;padding:4px 2px}
.qtr-sig-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.qtr-sig-sec{border:1px solid var(--hairline);border-radius:16px;padding:16px;background:var(--shell-surface)}
.qtr-sig-sec>h3{margin:0 0 12px;font-size:.92rem;font-weight:800;display:flex;align-items:center;gap:8px}
.qtr-sig-sec>h3 svg{inline-size:16px;block-size:16px;color:var(--accent)}
.qtr-signers{display:grid;gap:8px}
.qtr-signer{display:flex;align-items:center;gap:11px;padding:9px 11px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface-secondary)}
.qtr-signer.st-signed{border-color:color-mix(in srgb,var(--qtr-success) 40%,var(--hairline))}
.qtr-signer.st-rejected{border-color:color-mix(in srgb,var(--qtr-danger) 40%,var(--hairline))}
.qtr-signer-ord{inline-size:24px;block-size:24px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--shell-surface);border:1px solid var(--hairline);font-weight:800;font-size:.76rem}
.qtr-signer-main{flex:1;min-inline-size:0}.qtr-signer-main b{font-weight:700;font-size:.86rem}
.qtr-signer-main small{display:block;color:var(--text-muted);font-size:.73rem}
.qtr-signer-ic{inline-size:26px;block-size:26px;border-radius:8px;flex:none;display:grid;place-items:center;color:var(--text-muted)}
.qtr-signer-ic.st-signed{color:var(--qtr-success-text)}.qtr-signer-ic.st-rejected{color:var(--qtr-danger-text)}.qtr-signer-ic.st-requested,.qtr-signer-ic.st-viewed{color:var(--accent)}
.qtr-signer-ic svg{inline-size:16px;block-size:16px}
.qtr-sig-hint{margin:10px 0 0;font-size:.8rem;color:var(--text-secondary);display:flex;align-items:center;gap:6px}
.qtr-sig-hint.danger{color:var(--qtr-danger-text)}.qtr-sig-hint svg{inline-size:15px;block-size:15px}
.qtr-sig-hash{margin-block-start:10px}.qtr-sig-hash span{display:block;font-size:.7rem;color:var(--text-muted);margin-block-end:4px}
.qtr-sig-hash code{font-family:ui-monospace,monospace;font-size:.74rem;word-break:break-all;color:var(--text-secondary)}
.qtr-sig-msg{margin:10px 0 0;padding:10px 12px;background:var(--surface-secondary);border-radius:10px;font-size:.84rem}
.qtr-sig-certs{display:flex;flex-wrap:wrap;gap:8px;margin-block-end:8px}
.qtr-sig-timeline{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.qtr-sig-timeline li{display:flex;gap:12px;padding:6px 0}
.qtr-sig-timeline b{font-size:.84rem;font-weight:700}.qtr-sig-timeline small{display:block;color:var(--text-muted);font-size:.72rem}
.qtr-sig-timeline em{display:block;color:var(--text-secondary);font-size:.76rem;font-style:normal;margin-block-start:2px}
.qtr-tl-dot.signed{background:var(--qtr-success);box-shadow:0 0 0 3px color-mix(in srgb,var(--qtr-success) 18%,transparent)}.qtr-tl-dot.rejected{background:var(--qtr-danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--qtr-danger) 18%,transparent)}
/* signer picker */
.qtr-sig-signerpick{margin-block-start:14px;display:grid;gap:8px}
.qtr-id-field-lbl{font-size:.76rem;font-weight:800;color:var(--text-secondary)}
.qtr-sig-searchrow{position:relative}
.qtr-sig-results{display:grid;gap:2px;margin-block-start:4px}
.qtr-sig-result{display:flex;flex-direction:column;align-items:flex-start;text-align:start;inline-size:100%;border:1px solid var(--hairline);border-radius:10px;padding:8px 11px;background:var(--shell-surface);cursor:pointer;font-family:inherit;color:inherit}
.qtr-sig-result:hover{border-color:var(--accent-border);background:var(--surface-secondary)}
.qtr-sig-result small{color:var(--text-muted);font-size:.72rem}
.qtr-sig-chosen{display:flex;flex-wrap:wrap;gap:8px}
.qtr-sig-chosen .qtr-chip em{font-style:normal;background:var(--accent);color:#fff;inline-size:17px;block-size:17px;border-radius:50%;display:inline-grid;place-items:center;font-size:.68rem;margin-inline-end:5px}
.qtr-sig-chosen .qtr-chip button{background:none;border:none;cursor:pointer;color:var(--text-muted);font-size:1rem;line-height:1;padding:0 0 0 4px}
.qtr-modal.wide{inline-size:min(620px,100%)}
@media (max-width:820px){.qtr-sig-grid{grid-template-columns:1fr}.qtr-sig-360hero{flex-wrap:wrap}}

/* 13S.1 — document upload, placement, and stamped output */
.qtr-sig-docup{margin-block-start:14px;display:grid;gap:8px}
.qtr-sig-filebtn{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border:1px dashed var(--hairline);border-radius:12px;background:var(--surface-secondary);cursor:pointer;font-weight:700;font-size:.85rem;inline-size:fit-content}
.qtr-sig-filebtn:hover{border-color:var(--accent-border);color:var(--accent)}
.qtr-sig-filebtn svg{inline-size:16px;block-size:16px}
.qtr-sig-place:empty{display:none}
.qtr-sig-canvas{position:relative;display:inline-block;max-inline-size:100%;border:1px solid var(--hairline);border-radius:12px;overflow:hidden;cursor:crosshair;line-height:0}
.qtr-sig-canvas img{max-inline-size:100%;max-block-size:240px;display:block;margin:0 auto}
.qtr-sig-box{position:absolute;border:2px solid var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent);border-radius:6px;display:grid;place-items:center;color:var(--accent);pointer-events:none;box-shadow:0 0 0 2px rgba(255,255,255,.6)}
.qtr-sig-box svg{inline-size:18px;block-size:18px}
.qtr-sig-pdfnote{display:flex;align-items:center;gap:10px;padding:14px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface-secondary);font-weight:700;font-size:.86rem}
.qtr-sig-pdfnote svg{inline-size:20px;block-size:20px;color:var(--qtr-danger-text)}
.qtr-sig-docview{position:relative;display:inline-block;max-inline-size:100%;border:1px solid var(--hairline);border-radius:12px;overflow:hidden;margin-block-start:10px;line-height:0;background:var(--surface-secondary)}
.qtr-sig-docimg{min-block-size:120px;display:grid;place-items:center}
.qtr-sig-docimg img{max-inline-size:100%;max-block-size:420px;display:block}
.qtr-sig-docbox{position:absolute;border:2px dashed var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:6px;display:grid;place-items:center;color:var(--accent)}
.qtr-sig-docbox svg{inline-size:18px;block-size:18px}
.qtr-sig-docactions{display:flex;flex-wrap:wrap;gap:8px;margin-block-start:12px}

/* ═══ 14T — Timestamp Authority (QIP Module 04) ═══════════════════════════════ */
.qtr-ts{display:block;max-inline-size:1180px;margin-inline:auto}
.qtr-ts .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82em;overflow-wrap:anywhere}
.qtr-ts-head{display:grid;grid-template-columns:1fr auto;gap:14px 18px;align-items:center;padding:4px 2px 14px}
.qtr-ts-head-title{display:flex;align-items:center;gap:14px}
/* Product mark — Brand Tokens radius.appIconRatio 0.22 sets the corner at every
   tile size, and the fill is the product's OWN accent from color.product. The
   generic brand Blue is only the fallback for a product with no registered
   accent; before Brand v1.1 it was the fill for all of them, so no product
   showed its official colour here. */
.qtr-ts-mark{inline-size:48px;block-size:48px;border-radius:calc(48px * var(--qt-radius-app-ratio));display:grid;place-items:center;--mark:var(--qtr-product-accent,var(--accent));background:linear-gradient(135deg,var(--mark),color-mix(in srgb,var(--mark) 72%,var(--qt-ink)));color:var(--qtr-white);flex:none}
.qtr-ts-mark.sm{inline-size:38px;block-size:38px;border-radius:calc(38px * var(--qt-radius-app-ratio))}
.qtr-ts-mark.platform{--qtr-product-accent:var(--qtr-product-platform)}
.qtr-ts-mark.identity{--qtr-product-accent:var(--qtr-product-identity)}
.qtr-ts-mark.finance{--qtr-product-accent:var(--qtr-product-finance)}
.qtr-ts-mark.gold{--qtr-product-accent:var(--qtr-product-gold)}
.qtr-ts-mark.crm{--qtr-product-accent:var(--qtr-product-crm)}
.qtr-ts-mark.manufacturing{--qtr-product-accent:var(--qtr-product-manufacturing)}
.qtr-ts-mark.pos{--qtr-product-accent:var(--qtr-product-pos)}
.qtr-ts-mark.bi{--qtr-product-accent:var(--qtr-product-bi)}
.qtr-ts-mark.ai{--qtr-product-accent:var(--qtr-product-ai)}
.qtr-ts-mark.developer{--qtr-product-accent:var(--qtr-product-developer)}
.qtr-ts-mark svg{inline-size:24px;block-size:24px}
.qtr-ts-head-title h1{margin:0;font-size:clamp(1.25rem,2.4vw,1.6rem);line-height:1.15}
.qtr-ts-head-title p{margin:3px 0 0;color:var(--text-secondary);font-size:.85rem;font-weight:600}
.qtr-ts-head-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.qtr-ts-tabs{grid-column:1/-1;display:flex;gap:4px;flex-wrap:wrap;border-block-start:1px solid var(--hairline);padding-block-start:12px;margin-block-start:2px}
.qtr-ts-tab{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border:1px solid transparent;border-radius:11px;background:none;cursor:pointer;font-family:inherit;font-weight:700;font-size:.83rem;color:var(--text-secondary)}
.qtr-ts-tab svg{inline-size:15px;block-size:15px}
.qtr-ts-tab:hover{background:var(--surface-secondary);color:var(--text-primary)}
.qtr-ts-tab.active{background:var(--accent-soft,color-mix(in srgb,var(--accent) 14%,transparent));color:var(--accent);border-color:var(--accent-border)}
.qtr-ts-body{display:grid;gap:16px}
.qtr-ts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;align-items:start}
.qtr-ts-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.qtr-ts-kpi{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid var(--hairline);border-radius:16px;background:var(--shell-surface)}
.qtr-ts-kpi-ic{inline-size:38px;block-size:38px;border-radius:11px;display:grid;place-items:center;background:var(--surface-secondary);color:var(--text-secondary);flex:none}
.qtr-ts-kpi-ic svg{inline-size:19px;block-size:19px}
.qtr-ts-kpi b{font-size:1.5rem;line-height:1;display:block}
.qtr-ts-kpi span{color:var(--text-muted);font-size:.76rem;font-weight:700}
.qtr-ts-kpi.ok .qtr-ts-kpi-ic{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-ts-kpi.bad .qtr-ts-kpi-ic{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-ts-card{border:1px solid var(--hairline);border-radius:18px;background:var(--shell-surface);padding:16px 18px;box-shadow:var(--elev-1)}
.qtr-ts-card-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-block-end:12px}
.qtr-ts-card-hd h2{margin:0;font-size:.98rem;display:flex;align-items:center;gap:8px}
.qtr-ts-card-hd h2 svg{inline-size:17px;block-size:17px;color:var(--accent)}
.qtr-ts-muted{color:var(--text-muted);font-size:.72rem;font-weight:700}
.qtr-ts-rows{display:grid;gap:6px}
.qtr-ts-row{display:flex;align-items:center;gap:12px;inline-size:100%;text-align:start;border:1px solid var(--hairline);border-radius:13px;padding:10px 13px;background:var(--surface-primary,var(--shell-surface));cursor:pointer;font-family:inherit;color:inherit}
.qtr-ts-row:hover{border-color:var(--accent-border);background:var(--surface-secondary)}
.qtr-ts-row-ic{inline-size:34px;block-size:34px;border-radius:10px;display:grid;place-items:center;background:var(--surface-secondary);color:var(--text-secondary);flex:none}
.qtr-ts-row-ic svg{inline-size:17px;block-size:17px}
.qtr-ts-row-ic.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text)}.qtr-ts-row-ic.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-ts-row-main{flex:1;min-inline-size:0;display:flex;flex-direction:column}
.qtr-ts-row-main b{font-size:.88rem;font-family:ui-monospace,monospace}
.qtr-ts-row-main small{color:var(--text-muted);font-size:.74rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-ts-row-meta{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex:none}
.qtr-ts-row-meta small{color:var(--text-muted);font-size:.7rem}
.qtr-ts-row>svg:last-child{inline-size:16px;block-size:16px;color:var(--text-muted);flex:none}
.qtr-ts-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:.72rem;font-weight:800;background:var(--surface-secondary);color:var(--text-secondary);white-space:nowrap}
.qtr-ts-chip svg{inline-size:12px;block-size:12px}
.qtr-ts-chip.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-ts-chip.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-ts-chip.wait{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-ts-chip.muted{background:var(--surface-secondary);color:var(--text-muted)}
.qtr-ts-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:8px;font-size:.7rem;font-weight:800;background:var(--accent-soft,color-mix(in srgb,var(--accent) 12%,transparent));color:var(--accent)}
.qtr-ts-badge.muted{background:var(--surface-secondary);color:var(--text-muted)}
.qtr-ts-badge.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text)}.qtr-ts-badge.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}.qtr-ts-badge.wait{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-ts-health{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:9px}
.qtr-ts-hcheck{display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface-primary,var(--shell-surface))}
.qtr-ts-hcheck svg{inline-size:18px;block-size:18px;flex:none}
.qtr-ts-hcheck.ok svg{color:var(--qtr-success-text)}.qtr-ts-hcheck.bad svg{color:var(--qtr-danger-text)}
.qtr-ts-hcheck.bad{border-color:color-mix(in srgb,var(--qtr-danger) 40%,transparent)}
.qtr-ts-hcheck b{font-size:.8rem;display:block}.qtr-ts-hcheck small{color:var(--text-muted);font-size:.72rem}
.qtr-ts-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-block-end:12px}
.qtr-ts-search{flex:1;min-inline-size:200px;display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface-secondary)}
.qtr-ts-search svg{inline-size:16px;block-size:16px;color:var(--text-muted);flex:none}
.qtr-ts-search input{flex:1;border:none;background:none;outline:none;font-family:inherit;font-size:.86rem;color:inherit}
.qtr-ts-fchips,.qtr-ts-scope{display:flex;gap:5px;flex-wrap:wrap}
.qtr-ts-fchip{padding:6px 12px;border:1px solid var(--hairline);border-radius:999px;background:none;cursor:pointer;font-family:inherit;font-weight:700;font-size:.76rem;color:var(--text-secondary)}
.qtr-ts-fchip:hover{border-color:var(--accent-border)}
.qtr-ts-fchip.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.qtr-ts-loading,.qtr-ts-health .qtr-spinner{display:flex;align-items:center;gap:9px;color:var(--text-muted);font-size:.85rem;padding:16px}
.qtr-ts-verdict{display:flex;align-items:center;gap:13px;padding:15px 17px;border-radius:16px;border:1px solid var(--hairline);background:var(--surface-secondary)}
.qtr-ts-verdict svg{inline-size:26px;block-size:26px;flex:none}
.qtr-ts-verdict b{font-size:1rem}.qtr-ts-verdict small{display:block;color:var(--text-secondary);font-size:.78rem}
.qtr-ts-verdict>div{flex:1;min-inline-size:0}
.qtr-ts-verdict.ok{background:var(--qtr-success-soft);border-color:color-mix(in srgb,var(--qtr-success) 34%,transparent)}.qtr-ts-verdict.ok svg{color:var(--qtr-success-text)}
.qtr-ts-verdict.bad{background:var(--qtr-danger-soft);border-color:color-mix(in srgb,var(--qtr-danger) 34%,transparent)}.qtr-ts-verdict.bad svg{color:var(--qtr-danger-text)}
.qtr-ts-verdict.wait{background:var(--qtr-warning-soft);border-color:color-mix(in srgb,var(--qtr-warning) 34%,transparent)}.qtr-ts-verdict.wait svg{color:var(--qtr-warning-text)}
.qtr-ts-assurance{padding:4px 10px;border-radius:999px;background:var(--shell-surface);border:1px solid var(--hairline);font-size:.72rem;font-weight:800;flex:none}
.qtr-ts-checks{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:6px}
.qtr-ts-checks li{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:600}
.qtr-ts-checks li svg{inline-size:15px;block-size:15px}
.qtr-ts-checks li.ok svg{color:var(--qtr-success-text)}.qtr-ts-checks li.bad{color:var(--qtr-danger-text)}.qtr-ts-checks li.bad svg{color:var(--qtr-danger-text)}.qtr-ts-checks li.muted{color:var(--text-muted)}
.qtr-ts-360-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.qtr-ts-360-acts{display:flex;gap:7px;flex-wrap:wrap}
.qtr-ts-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:11px;margin:0}
.qtr-ts-fact dt{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-block-end:3px}
.qtr-ts-fact dd{margin:0;font-weight:700;font-size:.85rem;overflow-wrap:anywhere}
.qtr-ts-fact dd.mono{font-family:ui-monospace,monospace;font-size:.78rem}
.qtr-ts-inline{display:inline-flex;align-items:center;gap:6px}.qtr-ts-inline svg{inline-size:15px;block-size:15px;color:var(--accent)}
.qtr-ts-time{display:grid;gap:11px}
.qtr-ts-time-utc,.qtr-ts-time-local{display:flex;flex-direction:column;gap:3px;padding:11px 13px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface-secondary)}
.qtr-ts-time-utc{border-color:var(--accent-border);background:var(--accent-soft,color-mix(in srgb,var(--accent) 9%,transparent))}
.qtr-ts-time span{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:800}
.qtr-ts-time b{font-size:.92rem}
.qtr-ts-note{display:flex;align-items:flex-start;gap:8px;margin:11px 0 0;padding:10px 12px;border-radius:11px;background:var(--surface-secondary);color:var(--text-secondary);font-size:.76rem;font-weight:600;line-height:1.5}
.qtr-ts-note svg{inline-size:15px;block-size:15px;flex:none;margin-block-start:1px;color:var(--accent)}
.qtr-ts-hash{padding:11px 13px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface-secondary);margin-block-end:11px}
.qtr-ts-hash code{font-family:ui-monospace,monospace;font-size:.76rem;overflow-wrap:anywhere;color:var(--text-primary)}
.qtr-ts-chain,.qtr-ts-timeline{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.qtr-ts-chain li,.qtr-ts-timeline li{display:flex;gap:11px;align-items:flex-start}
.qtr-ts-chain-dot,.qtr-ts-tl-dot{inline-size:11px;block-size:11px;border-radius:50%;background:var(--text-muted);margin-block-start:4px;flex:none}
.qtr-ts-chain li.current .qtr-ts-chain-dot{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft,color-mix(in srgb,var(--accent) 20%,transparent))}
.qtr-ts-chain b,.qtr-ts-timeline b{font-size:.83rem}
.qtr-ts-chain small,.qtr-ts-timeline small{display:block;color:var(--text-muted);font-size:.73rem}
.qtr-ts-timeline p{margin:4px 0 0;font-size:.78rem;color:var(--text-secondary)}
.qtr-ts-ev{display:grid;gap:7px}
.qtr-ts-ev-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:8px 11px;border:1px solid var(--hairline);border-radius:11px;background:var(--surface-primary,var(--shell-surface))}
.qtr-ts-ev-row code{flex:1;min-inline-size:120px;font-family:ui-monospace,monospace;font-size:.73rem;overflow-wrap:anywhere}
.qtr-ts-ev-row small{color:var(--text-muted);font-size:.71rem}
.qtr-ts-policies{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.qtr-ts-policy{border:1px solid var(--hairline);border-radius:14px;padding:13px 15px;background:var(--surface-primary,var(--shell-surface));display:grid;gap:9px}
.qtr-ts-policy.off{opacity:.62}
.qtr-ts-policy-hd{display:flex;align-items:center;justify-content:space-between;gap:8px}
.qtr-ts-policy-hd b{font-size:.9rem}
.qtr-ts-policy p{margin:0;color:var(--text-secondary);font-size:.79rem;line-height:1.5}
.qtr-ts-policy-meta,.qtr-ts-policy-types{display:flex;flex-wrap:wrap;gap:5px}
.qtr-ts-tag{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:8px;background:var(--surface-secondary);color:var(--text-secondary);font-size:.72rem;font-weight:700}
.qtr-ts-tag svg{inline-size:13px;block-size:13px}
.qtr-ts-auths{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.qtr-ts-auth{border:1px solid var(--hairline);border-radius:14px;padding:14px;background:var(--surface-primary,var(--shell-surface));display:grid;gap:11px}
.qtr-ts-auth-hd{display:flex;align-items:center;gap:10px}
.qtr-ts-auth-hd>div:nth-child(2){flex:1;min-inline-size:0}
.qtr-ts-auth-hd b{font-size:.88rem;display:block}.qtr-ts-auth-hd small{color:var(--text-muted);font-size:.72rem;font-family:ui-monospace,monospace}
.qtr-ts-bars{display:grid;gap:9px}
.qtr-ts-bar{display:grid;grid-template-columns:minmax(90px,1fr) 2fr auto;gap:9px;align-items:center;font-size:.79rem}
.qtr-ts-bar-l{display:inline-flex;align-items:center;gap:6px;font-weight:700}.qtr-ts-bar-l svg{inline-size:14px;block-size:14px;color:var(--accent)}
.qtr-ts-bar-track{block-size:9px;border-radius:999px;background:var(--surface-secondary);overflow:hidden}
.qtr-ts-bar-fill{display:block;block-size:100%;border-radius:999px;background:var(--accent);min-inline-size:3px}
.qtr-ts-bar b{font-variant-numeric:tabular-nums;font-size:.82rem;text-align:end}
.qtr-ts-seg{display:inline-flex;gap:3px;padding:3px;border:1px solid var(--hairline);border-radius:11px;background:var(--surface-secondary)}
.qtr-ts-seg button{padding:6px 12px;border:none;border-radius:8px;background:none;cursor:pointer;font-family:inherit;font-weight:700;font-size:.78rem;color:var(--text-secondary)}
.qtr-ts-seg button.active{background:var(--shell-surface);color:var(--accent);box-shadow:var(--elev-1)}
.qtr-ts-hashin textarea{resize:vertical;min-block-size:60px}
.qtr-ts-hashout{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid var(--accent-border);border-radius:11px;background:var(--accent-soft,color-mix(in srgb,var(--accent) 8%,transparent))}
.qtr-ts-hashout span{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:800}
.qtr-ts-hashout code{font-family:ui-monospace,monospace;font-size:.74rem;overflow-wrap:anywhere;color:var(--text-primary)}
.qtr-ts-skel{display:grid;gap:14px;padding:6px}
.qtr-ts-skel-hd{block-size:54px;border-radius:14px;background:var(--surface-secondary)}
.qtr-ts-skel-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.qtr-ts-skel-row,.qtr-ts-skel-kpis>*{block-size:66px;border-radius:14px;background:var(--surface-secondary);animation:qtrTsPulse 1.4s ease-in-out infinite}
.qtr-ts-skel-row{block-size:52px}
@keyframes qtrTsPulse{0%,100%{opacity:.55}50%{opacity:.85}}
.qtr-ts-error svg{color:var(--qtr-danger-text)}
@media (max-width:720px){.qtr-ts-head{grid-template-columns:1fr}.qtr-ts-head-actions{justify-content:flex-start}.qtr-ts-bar{grid-template-columns:1fr auto}.qtr-ts-bar-track{grid-column:1/-1;order:3}}

/* ═══ 15V — Trust Verification Center (QIP Module 05) — extends 14T ═══════════ */
.qtr-vf-tokens{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.qtr-vf-token{border:1px solid var(--hairline);border-radius:15px;padding:13px 15px;background:var(--surface-primary,var(--shell-surface));cursor:pointer;display:grid;gap:10px}
.qtr-vf-token:hover{border-color:var(--accent-border);background:var(--surface-secondary)}
.qtr-vf-token-hd{display:flex;align-items:center;gap:10px}
.qtr-vf-token-t{flex:1;min-inline-size:0}
.qtr-vf-token-t b{font-size:.86rem;font-family:ui-monospace,monospace;display:block}
.qtr-vf-token-t small{color:var(--text-muted);font-size:.74rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-vf-token-meta{display:flex;flex-wrap:wrap;gap:5px}
.qtr-vf-qr{display:grid;gap:12px;justify-items:center;text-align:center}
.qtr-vf-qrimg{inline-size:220px;max-inline-size:100%;aspect-ratio:1;border:1px solid var(--hairline);border-radius:16px;background:#fff;display:grid;place-items:center;padding:10px}
.qtr-vf-qrimg img{inline-size:100%;block-size:100%;object-fit:contain;image-rendering:pixelated}
.qtr-vf-qractions{display:flex;flex-wrap:wrap;gap:7px;justify-content:center}
.qtr-vf .qtr-ts-hash{inline-size:100%}

/* ═══ Control Center — brand accent color picker ══════════════════════════════ */
.qtr-color-row{align-items:flex-start}
.qtr-color-ctrl{display:flex;flex-wrap:wrap;align-items:center;gap:9px;min-inline-size:0}
.qtr-color-pick{inline-size:40px;block-size:34px;padding:0;border:1px solid var(--hairline);border-radius:10px;background:none;cursor:pointer;flex:none}
.qtr-color-pick::-webkit-color-swatch-wrapper{padding:3px}
.qtr-color-pick::-webkit-color-swatch{border:none;border-radius:7px}
.qtr-color-pick::-moz-color-swatch{border:none;border-radius:7px}
.qtr-color-hex{inline-size:110px;text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.02em}
.qtr-color-swatches{display:inline-flex;flex-wrap:wrap;gap:6px}
.qtr-color-sw{inline-size:24px;block-size:24px;border-radius:50%;border:2px solid transparent;box-shadow:0 0 0 1px var(--hairline) inset;cursor:pointer;padding:0}
.qtr-color-sw:hover{transform:scale(1.08)}
.qtr-color-sw.active{border-color:var(--surface);box-shadow:0 0 0 2px var(--accent)}

/* ═══ Platform Administration — inline CRUD affordances ═══════════════════════ */
.qtr-admin-head-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.qtr-admin-row-acts{display:flex;gap:4px;justify-content:flex-end;white-space:nowrap}
.qtr-admin-iconbtn{border:1px solid var(--hairline);background:var(--surface-secondary);color:var(--text-secondary);cursor:pointer;inline-size:30px;block-size:30px;border-radius:9px;display:inline-grid;place-items:center}
.qtr-admin-iconbtn:hover{border-color:var(--accent-border);color:var(--accent)}
.qtr-admin-iconbtn.danger:hover{border-color:color-mix(in srgb,var(--qtr-danger) 40%,transparent);color:var(--qtr-danger-text)}
.qtr-admin-iconbtn svg{inline-size:15px;block-size:15px}

/* ═══ Digital Identity Wallet — card actions + badges + states ════════════════ */
.qtr-wallet-actions{display:grid;gap:10px;margin-block-start:2px}
.qtr-wallet-badges{display:grid;gap:8px}
.qtr-wallet-badge{display:flex;align-items:center;gap:11px;inline-size:100%;border:1px solid var(--qt-ink);border-radius:12px;padding:10px 14px;cursor:pointer;font-family:inherit;background:var(--qt-ink);color:#fff;text-align:start;transition:transform .12s ease,opacity .12s ease}
.qtr-wallet-badge:hover{transform:translateY(-1px)}
.qtr-wallet-badge:active{transform:translateY(0)}
.qtr-wallet-badge.google{background:#fff;color:var(--qt-neutral-600);border-color:var(--hairline);box-shadow:0 1px 2px color-mix(in srgb,var(--qt-neutral-600) 12%,transparent)}
.qtr-wallet-badge-ic{inline-size:30px;block-size:30px;border-radius:8px;display:grid;place-items:center;flex:none}
.qtr-wallet-badge.google .qtr-wallet-badge-ic{background:var(--qt-neutral-100);color:var(--accent)}
.qtr-wallet-badge.apple .qtr-wallet-badge-ic{background:rgba(255,255,255,.14)}
.qtr-wallet-badge-ic svg{inline-size:18px;block-size:18px}
.qtr-wallet-badge-tx{display:flex;flex-direction:column;line-height:1.15}
.qtr-wallet-badge-tx small{font-size:.66rem;opacity:.8;font-weight:700}
.qtr-wallet-badge-tx b{font-size:.92rem;font-weight:800}
.qtr-wallet-badge.loading{opacity:.6;pointer-events:none}
.qtr-wallet-badge.loading .qtr-wallet-badge-ic{animation:qtrWalletPulse 1s ease-in-out infinite}
@keyframes qtrWalletPulse{0%,100%{opacity:.5}50%{opacity:1}}
.qtr-wallet-hint{display:flex;align-items:flex-start;gap:7px;margin:2px 0 0;color:var(--text-muted);font-size:.74rem;font-weight:600;line-height:1.5}
.qtr-wallet-hint svg{inline-size:14px;block-size:14px;flex:none;margin-block-start:1px;color:var(--accent)}
.qtr-wallet-hint.bad{color:var(--qtr-danger-text)}.qtr-wallet-hint.bad svg{color:var(--qtr-danger-text)}
.qtr-wallet-state{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border-radius:12px;border:1px solid var(--hairline);background:var(--surface-secondary);margin-block-start:4px}
.qtr-wallet-state svg{inline-size:19px;block-size:19px;flex:none;margin-block-start:1px}
.qtr-wallet-state b{font-size:.86rem;display:block}.qtr-wallet-state small{color:var(--text-secondary);font-size:.76rem;display:block;margin-block-start:2px;line-height:1.5}
.qtr-wallet-state.ok{background:var(--qtr-success-soft)}.qtr-wallet-state.ok svg{color:var(--qtr-success-text)}
.qtr-wallet-state.bad{background:var(--qtr-danger-soft)}.qtr-wallet-state.bad svg{color:var(--qtr-danger-text)}
.qtr-wallet-state.wait{background:var(--qtr-warning-soft)}.qtr-wallet-state.wait svg{color:var(--qtr-warning-text)}

/* ── 16A · Approval Intelligence Engine (QIP-06) — reuses qtr-ts-* base ────── */
.qtr-ap-rows{display:flex;flex-direction:column;gap:8px}
.qtr-ap-row{display:flex;align-items:center;gap:12px;inline-size:100%;text-align:start;background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:14px;padding:12px 14px;cursor:pointer;transition:.16s;font:inherit;color:inherit}
.qtr-ap-row:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.qtr-ap-row-ic{inline-size:38px;block-size:38px;border-radius:10px;display:grid;place-items:center;background:var(--surface-2);color:var(--accent);flex:none}
.qtr-ap-row-ic svg{inline-size:19px;block-size:19px}
.qtr-ap-row-main{flex:1;min-inline-size:0}.qtr-ap-row-main b{display:block;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-ap-row-main small{display:block;color:var(--text-secondary);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-ap-row-tags{display:flex;align-items:center;gap:6px;flex:none;flex-wrap:wrap;justify-content:flex-end}
.qtr-ap-prio{font-size:.72rem;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--surface-2);color:var(--text-secondary)}
.qtr-ap-prio.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-ap-prio.wait{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-ap-due{display:inline-flex;align-items:center;gap:4px;font-size:.72rem;color:var(--text-secondary);padding:2px 8px;border-radius:999px;background:var(--surface-2)}
.qtr-ap-due svg{inline-size:12px;block-size:12px}
.qtr-ap-due.over{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-ap-due.soon{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-ap-views{margin-block-end:14px;flex-wrap:wrap}
.qtr-ap-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:18px;padding:16px 18px;margin-block-end:16px;border-inline-start:4px solid var(--accent)}
.qtr-ap-banner.ok{border-inline-start-color:var(--qtr-success)}.qtr-ap-banner.bad{border-inline-start-color:var(--qtr-danger)}.qtr-ap-banner.wait{border-inline-start-color:var(--qtr-warning)}
.qtr-ap-banner-l{display:flex;align-items:center;gap:14px}
.qtr-ap-banner-ic{inline-size:48px;block-size:48px;border-radius:14px;display:grid;place-items:center;background:var(--surface-2);color:var(--accent);flex:none}
.qtr-ap-banner-ic svg{inline-size:24px;block-size:24px}
.qtr-ap-banner-l h2{margin:0;font-size:1.15rem}.qtr-ap-banner-l p{margin:2px 0 0;color:var(--text-secondary);font-size:.85rem}
.qtr-ap-banner-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.qtr-ap-change{display:flex;flex-direction:column;gap:12px}
.qtr-ap-summary{margin:0;font-size:.95rem;font-weight:600}
.qtr-ap-states{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.qtr-ap-state{flex:1;min-inline-size:130px;background:var(--surface-2);border-radius:12px;padding:10px 14px}
.qtr-ap-state span{display:block;font-size:.72rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}
.qtr-ap-state b{display:block;font-size:.95rem;margin-block-start:3px;word-break:break-word}
.qtr-ap-state.prop{background:var(--qtr-success-soft)}
.qtr-ap-states>svg{color:var(--text-tertiary);flex:none}
.qtr-ap-diffs{display:flex;flex-direction:column;gap:6px}
.qtr-ap-diff{display:flex;align-items:center;gap:8px;font-size:.82rem;flex-wrap:wrap}
.qtr-ap-diff-k{font-weight:600;min-inline-size:110px}
.qtr-ap-diff-from{color:var(--qtr-danger-text);text-decoration:line-through;opacity:.8}
.qtr-ap-diff-to{color:var(--qtr-success-text);font-weight:600}
.qtr-ap-diff svg{inline-size:13px;block-size:13px;color:var(--text-tertiary)}
.qtr-ap-reqs{display:flex;gap:8px;flex-wrap:wrap;margin-block-start:12px}
.qtr-ap-req{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;color:var(--text-tertiary);padding:4px 10px;border-radius:999px;background:var(--surface-2);opacity:.6}
.qtr-ap-req.on{opacity:1;color:var(--accent);background:var(--accent-soft,var(--surface-2))}
.qtr-ap-req svg{inline-size:13px;block-size:13px}
.qtr-ap-stages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.qtr-ap-stage{background:var(--surface-2);border-radius:14px;padding:12px 14px;border-inline-start:3px solid var(--border-strong)}
.qtr-ap-stage.active{border-inline-start-color:var(--accent);background:var(--surface-1);box-shadow:var(--shadow-sm)}
.qtr-ap-stage.approved{border-inline-start-color:var(--qtr-success)}
.qtr-ap-stage.rejected{border-inline-start-color:var(--qtr-danger)}
.qtr-ap-stage-hd{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.qtr-ap-stage-n{inline-size:24px;block-size:24px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:.78rem;font-weight:700;flex:none}
.qtr-ap-stage-hd b{font-size:.9rem}.qtr-ap-stage-hd small{color:var(--text-secondary);font-size:.76rem;margin-inline-start:auto}
.qtr-ap-apprs{display:flex;flex-wrap:wrap;gap:6px;margin-block-start:10px}
.qtr-ap-appr{display:inline-flex;align-items:center;gap:5px;font-size:.78rem;padding:3px 9px;border-radius:999px;background:var(--surface-1);border:1px solid var(--border-subtle)}
.qtr-ap-appr svg{inline-size:13px;block-size:13px}
.qtr-ap-appr.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text);border-color:transparent}
.qtr-ap-appr.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text);border-color:transparent}
.qtr-ap-appr.wait{color:var(--text-secondary)}
.qtr-ap-appr em{font-style:normal;opacity:.7;font-size:.72rem}
.qtr-ap-decs{display:flex;flex-direction:column;gap:10px}
.qtr-ap-dec{display:flex;gap:10px}
.qtr-ap-dec-ic{inline-size:30px;block-size:30px;border-radius:9px;display:grid;place-items:center;flex:none;background:var(--surface-2)}
.qtr-ap-dec-ic.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text)}.qtr-ap-dec-ic.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}.qtr-ap-dec-ic.wait{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-ap-dec-ic svg{inline-size:16px;block-size:16px}
.qtr-ap-dec-b{font-size:.85rem}.qtr-ap-dec-b b{font-weight:700}.qtr-ap-dec-b em{font-style:normal;color:var(--text-secondary);font-size:.78rem}
.qtr-ap-dec-b small{display:block;color:var(--text-secondary);margin-block-start:2px}
.qtr-ap-dec-b time{display:block;color:var(--text-tertiary);font-size:.72rem;margin-block-start:2px}
.qtr-ap-stamped{display:inline-flex;align-items:center;gap:3px;font-size:.7rem;color:var(--accent);margin-inline-start:6px}
.qtr-ap-stamped svg{inline-size:11px;block-size:11px}
.qtr-ap-trustlink{color:var(--accent);text-decoration:none;display:inline-flex;align-items:center;gap:4px}
.qtr-ap-trustlink svg{inline-size:13px;block-size:13px}
.qtr-ap-ev,.qtr-ap-cmts{display:flex;flex-direction:column;gap:8px}
.qtr-ap-ev-row{display:flex;align-items:center;gap:8px;font-size:.8rem}.qtr-ap-ev-row code{font-family:var(--font-mono,monospace);color:var(--text-secondary);font-size:.75rem}
.qtr-ap-ev-row small{margin-inline-start:auto;color:var(--text-tertiary)}
.qtr-ap-cmt{background:var(--surface-2);border-radius:12px;padding:10px 12px}
.qtr-ap-cmt.info{border-inline-start:3px solid var(--qtr-warning)}
.qtr-ap-cmt b{font-size:.82rem}.qtr-ap-cmt p{margin:4px 0;font-size:.85rem}.qtr-ap-cmt time{font-size:.72rem;color:var(--text-tertiary)}
.qtr-ap-cmtbox{display:flex;gap:8px;margin-block-start:10px}.qtr-ap-cmtbox input{flex:1}
.qtr-ap-policies{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:12px}
.qtr-ap-policy{background:var(--surface-2);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:9px}
.qtr-ap-policy-hd{display:flex;align-items:center;gap:8px}.qtr-ap-policy-hd b{font-size:.92rem}
.qtr-ap-policy-meta,.qtr-ap-policy-flags{display:flex;flex-wrap:wrap;gap:6px}
.qtr-ap-flag{display:inline-flex;align-items:center;gap:4px;font-size:.72rem;color:var(--qtr-success-text);background:var(--qtr-success-soft);padding:2px 8px;border-radius:999px}
.qtr-ap-flag svg{inline-size:11px;block-size:11px}
.qtr-ap-policy-t{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-block-start:auto;padding-block-start:6px;border-block-start:1px solid var(--border-subtle)}
.qtr-ap-policy-t small{color:var(--text-secondary);font-size:.74rem}
.qtr-ap-wf{background:var(--surface-2);border-radius:16px;padding:14px;margin-block-end:12px}
.qtr-ap-wf-flow{display:flex;align-items:stretch;gap:8px;flex-wrap:wrap;margin-block-start:10px}
.qtr-ap-wf-stage{background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:12px;padding:12px;min-inline-size:170px;flex:1;display:flex;flex-direction:column;gap:8px}
.qtr-ap-wf-stage-hd{display:flex;align-items:center;gap:8px}.qtr-ap-wf-stage-hd b{font-size:.85rem}
.qtr-ap-wf-arrow{display:grid;place-items:center;color:var(--text-tertiary);flex:none}
.qtr-ap-wf-apprs{display:flex;flex-direction:column;gap:5px}
.qtr-ap-wf-appr{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;color:var(--text-secondary)}
.qtr-ap-wf-appr svg{inline-size:13px;block-size:13px;color:var(--accent)}
.qtr-ap-delegs{display:flex;flex-direction:column;gap:8px}
.qtr-ap-deleg{display:flex;align-items:center;gap:12px;background:var(--surface-2);border-radius:12px;padding:11px 14px}
.qtr-ap-deleg-b{flex:1;min-inline-size:0}.qtr-ap-deleg-b b{font-size:.86rem;display:flex;align-items:center;gap:6px}.qtr-ap-deleg-b b svg{inline-size:13px;block-size:13px;color:var(--text-tertiary)}
.qtr-ap-deleg-b small{display:block;color:var(--text-secondary);font-size:.78rem;margin-block-start:2px}
.qtr-ap-confirm{font-weight:600;font-size:.9rem;margin:0 0 4px}
.qtr-ap-check{display:flex;align-items:center;gap:8px;font-size:.85rem}
.qtr-span2{grid-column:1 / -1}

/* ── 17L · License Intelligence Engine (QIP-07) — reuses qtr-ts-* base ─────── */
.qtr-lic-rows{display:flex;flex-direction:column;gap:8px}
.qtr-lic-row{display:flex;align-items:center;gap:12px;inline-size:100%;text-align:start;background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:14px;padding:12px 14px;cursor:pointer;transition:.16s;font:inherit;color:inherit}
.qtr-lic-row:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:var(--shadow-sm)}
.qtr-lic-row-ic{inline-size:38px;block-size:38px;border-radius:10px;display:grid;place-items:center;background:var(--surface-2);color:var(--accent);flex:none}
.qtr-lic-row-ic svg{inline-size:19px;block-size:19px}
.qtr-lic-row-main{flex:1;min-inline-size:0}.qtr-lic-row-main b{display:block;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-lic-row-main small{display:block;color:var(--text-secondary);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-lic-row-tags{display:flex;align-items:center;gap:6px;flex:none;flex-wrap:wrap;justify-content:flex-end}
.qtr-lic-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:18px;padding:16px 18px;margin-block-end:16px;border-inline-start:4px solid var(--accent)}
.qtr-lic-banner.ok{border-inline-start-color:var(--qtr-success)}.qtr-lic-banner.bad{border-inline-start-color:var(--qtr-danger)}.qtr-lic-banner.wait{border-inline-start-color:var(--qtr-warning)}
.qtr-lic-banner-l{display:flex;align-items:center;gap:14px}
.qtr-lic-banner-ic{inline-size:48px;block-size:48px;border-radius:14px;display:grid;place-items:center;background:var(--surface-2);color:var(--accent);flex:none}
.qtr-lic-banner-ic svg{inline-size:24px;block-size:24px}
.qtr-lic-banner-l h2{margin:0;font-size:1.15rem}.qtr-lic-banner-l p{margin:2px 0 0;color:var(--text-secondary);font-size:.82rem;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.qtr-lic-banner-l p code{font-family:var(--font-mono,monospace);background:var(--surface-2);padding:1px 6px;border-radius:6px;font-size:.78rem}
.qtr-lic-banner-r{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.qtr-lic-warn{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;color:var(--qtr-warning-text);background:var(--qtr-warning-soft);padding:3px 10px;border-radius:999px}
.qtr-lic-warn svg{inline-size:13px;block-size:13px}
.qtr-lic-meters{display:flex;flex-direction:column;gap:14px}
.qtr-lic-meter-hd{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-block-end:5px}
.qtr-lic-meter-hd span{font-size:.82rem;color:var(--text-secondary)}.qtr-lic-meter-hd b{font-size:.86rem;font-variant-numeric:tabular-nums}
.qtr-lic-meter-track{block-size:9px;border-radius:999px;background:var(--surface-2);overflow:hidden}
.qtr-lic-meter-fill{display:block;block-size:100%;border-radius:999px;background:var(--accent);transition:inline-size .4s}
.qtr-lic-meter.warn .qtr-lic-meter-fill{background:var(--qtr-warning)}
.qtr-lic-meter.over .qtr-lic-meter-fill{background:var(--qtr-danger)}
.qtr-lic-meter.over .qtr-lic-meter-hd b{color:var(--qtr-danger-text)}
.qtr-lic-grants{display:flex;flex-direction:column;gap:7px}
.qtr-lic-grant{display:flex;align-items:center;gap:9px;font-size:.85rem;background:var(--surface-2);border-radius:10px;padding:9px 12px}
.qtr-lic-grant svg{inline-size:16px;block-size:16px;color:var(--accent);flex:none}
.qtr-lic-grant.off{opacity:.55}.qtr-lic-grant em{font-style:normal;margin-inline-start:auto;font-size:.74rem;color:var(--qtr-danger-text)}
.qtr-lic-asgs{display:flex;flex-direction:column;gap:7px}
.qtr-lic-asg{display:flex;align-items:center;gap:9px;font-size:.85rem;background:var(--surface-2);border-radius:10px;padding:9px 12px}
.qtr-lic-asg b{font-weight:600}.qtr-lic-asg small{color:var(--text-tertiary);font-size:.74rem}
.qtr-lic-asg>*:last-child{margin-inline-start:auto}
.qtr-lic-asg.revoked{opacity:.55}
.qtr-lic-trustlink{color:var(--accent);text-decoration:none;display:inline-flex;align-items:center;gap:4px}
.qtr-lic-trustlink svg{inline-size:13px;block-size:13px}
.qtr-lic-policies{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:12px}
.qtr-lic-policy{background:var(--surface-2);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:9px}
.qtr-lic-policy-hd{display:flex;align-items:center;gap:8px}.qtr-lic-policy-hd b{font-size:.92rem}
.qtr-lic-policy-meta{display:flex;flex-wrap:wrap;gap:6px}
.qtr-lic-flag{display:inline-flex;align-items:center;gap:4px;font-size:.72rem;color:var(--qtr-success-text);background:var(--qtr-success-soft);padding:2px 8px;border-radius:999px}
.qtr-lic-flag svg{inline-size:11px;block-size:11px}
.qtr-lic-policy-t{margin-block-start:auto;padding-block-start:6px;border-block-start:1px solid var(--border-subtle);display:flex;justify-content:flex-end}

/* ── Security Center (QIP-08) ─────────────────────────────────────────────── */
.qtr-sec-banner{display:grid;grid-template-columns:minmax(190px,240px) 1fr;gap:20px;align-items:stretch;padding:20px;border:1px solid var(--hairline);border-radius:20px;background:var(--shell-surface);margin-block-end:16px}
.qtr-sec-banner.bad{border-color:color-mix(in srgb,var(--qtr-danger) 34%,var(--hairline))}
.qtr-sec-banner.wait{border-color:color-mix(in srgb,var(--qtr-warning) 34%,var(--hairline))}
.qtr-sec-banner-l{display:grid;place-items:center;padding:8px;border-radius:16px;background:var(--surface-secondary)}
.qtr-sec-banner-r{display:flex;flex-direction:column;gap:14px;min-inline-size:0}
.qtr-sec-score{display:flex;flex-direction:column;align-items:center;gap:8px}
.qtr-sec-ring{--pct:0;inline-size:132px;block-size:132px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--qtr-success) calc(var(--pct)*1%),var(--surface-2,var(--surface-secondary)) 0)}
.qtr-sec-score.wait .qtr-sec-ring{background:conic-gradient(var(--qtr-warning) calc(var(--pct)*1%),var(--surface-2,var(--surface-secondary)) 0)}
.qtr-sec-score.bad .qtr-sec-ring{background:conic-gradient(var(--qtr-danger) calc(var(--pct)*1%),var(--surface-2,var(--surface-secondary)) 0)}
.qtr-sec-ring-in{inline-size:100px;block-size:100px;border-radius:50%;background:var(--shell-surface);display:grid;place-items:center;text-align:center}
.qtr-sec-ring-in b{font-size:2rem;line-height:1;font-weight:850}
.qtr-sec-ring-in span{font-size:.68rem;color:var(--text-muted);font-weight:700}
.qtr-sec-grade{font-size:1rem;font-weight:850;padding:2px 14px;border-radius:999px;background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-sec-score.wait .qtr-sec-grade{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-sec-score.bad .qtr-sec-grade{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-sec-score-l{font-size:.76rem;color:var(--text-muted);font-weight:700}
.qtr-sec-threat{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;border-radius:14px;background:var(--surface-secondary)}
.qtr-sec-threat span{font-size:.78rem;color:var(--text-muted);font-weight:700}
.qtr-sec-threat b{font-size:1rem;font-weight:850}
.qtr-sec-threat.bad{background:var(--qtr-danger-soft)}.qtr-sec-threat.bad b{color:var(--qtr-danger-text)}
.qtr-sec-threat.wait{background:var(--qtr-warning-soft)}.qtr-sec-threat.wait b{color:var(--qtr-warning-text)}
.qtr-sec-threat.ok{background:var(--qtr-success-soft)}.qtr-sec-threat.ok b{color:var(--qtr-success-text)}
.qtr-sec-alerts{display:flex;flex-direction:column;gap:8px}
.qtr-sec-alert{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--hairline);border-radius:14px;background:var(--surface-secondary)}
.qtr-sec-alert.bad{border-color:color-mix(in srgb,var(--qtr-danger) 30%,var(--hairline))}
.qtr-sec-alert.wait{border-color:color-mix(in srgb,var(--qtr-warning) 30%,var(--hairline))}
.qtr-sec-alert-ic{inline-size:34px;block-size:34px;border-radius:10px;display:grid;place-items:center;background:var(--shell-surface);color:var(--text-secondary);flex:none}
.qtr-sec-alert.bad .qtr-sec-alert-ic{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-sec-alert.wait .qtr-sec-alert-ic{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-sec-alert-ic svg{inline-size:17px;block-size:17px}
.qtr-sec-alert-b{min-inline-size:0;display:flex;flex-direction:column;gap:2px}
.qtr-sec-alert-b b{font-size:.9rem;font-weight:750;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-sec-alert-b small{font-size:.76rem;color:var(--text-muted)}
.qtr-sec-alert-t{display:flex;align-items:center;gap:6px;flex:none}
.qtr-sec-recs{display:flex;flex-direction:column;gap:7px}
.qtr-sec-rec{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:var(--surface-secondary)}
.qtr-sec-rec svg{inline-size:16px;block-size:16px;color:var(--text-muted);flex:none}
.qtr-sec-rec.bad svg{color:var(--qtr-danger-text)}.qtr-sec-rec.wait svg{color:var(--qtr-warning-text)}
.qtr-sec-rec span{flex:1;min-inline-size:0;font-size:.86rem;font-weight:650}
.qtr-sec-rec b{font-size:.8rem;color:var(--text-muted);font-weight:800}
.qtr-sec-devices{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:12px}
.qtr-sec-device{background:var(--surface-2,var(--surface-secondary));border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px}
.qtr-sec-device-hd{display:flex;align-items:center;gap:10px}
.qtr-sec-device-ic{inline-size:36px;block-size:36px;border-radius:10px;display:grid;place-items:center;background:var(--shell-surface);color:var(--text-secondary);flex:none}
.qtr-sec-device-ic.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text)}.qtr-sec-device-ic.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}.qtr-sec-device-ic.wait{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-sec-device-ic svg{inline-size:18px;block-size:18px}
.qtr-sec-device-t{flex:1;min-inline-size:0}.qtr-sec-device-t b{display:block;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qtr-sec-device-t small{font-size:.74rem;color:var(--text-muted)}
.qtr-sec-device-meta{display:flex;flex-direction:column;gap:2px}.qtr-sec-device-meta small{font-size:.74rem;color:var(--text-muted)}
.qtr-sec-device-acts{display:flex;gap:6px;flex-wrap:wrap;margin-block-start:auto;padding-block-start:8px;border-block-start:1px solid var(--border-subtle)}
.qtr-sec-sessions{display:flex;flex-direction:column;gap:8px}
.qtr-sec-session{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--hairline);border-radius:14px;background:var(--surface-secondary)}
.qtr-sec-session.current{border-color:color-mix(in srgb,var(--qtr-success) 34%,var(--hairline));background:color-mix(in srgb,var(--qtr-success) 5%,var(--surface-secondary))}
.qtr-sec-session.expired{opacity:.6}
.qtr-sec-session-ic{inline-size:34px;block-size:34px;border-radius:10px;display:grid;place-items:center;background:var(--shell-surface);color:var(--text-secondary);flex:none}
.qtr-sec-session.current .qtr-sec-session-ic{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-sec-session-ic svg{inline-size:17px;block-size:17px}
.qtr-sec-session-b{min-inline-size:0;display:flex;flex-direction:column;gap:1px}
.qtr-sec-session-b b{font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-sec-session-b small{font-size:.73rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-sec-mfa{display:grid;grid-template-columns:minmax(150px,190px) 1fr;gap:16px;align-items:start}
.qtr-sec-mfa-state{grid-column:1/-1;min-inline-size:0}
.qtr-sec-mfa-state:empty{display:none}
.qtr-sec-enf{margin-block-end:16px;display:flex;flex-direction:column;gap:12px}
.qtr-sec-enf .qtr-ts-card-hd{display:flex;align-items:center;gap:10px}
.qtr-sec-enf .qtr-ts-facts{display:flex;gap:20px;flex-wrap:wrap;margin:0}
.qtr-sec-enf .qtr-btn{align-self:flex-start}
.qtr-sec-mfa-cov{display:flex;flex-direction:column;gap:2px;padding:14px;border-radius:14px;background:var(--surface-secondary);text-align:center}
.qtr-sec-mfa-cov b{font-size:1.9rem;line-height:1;font-weight:850}
.qtr-sec-mfa-cov span{font-size:.78rem;color:var(--text-muted);font-weight:700}
.qtr-sec-mfa-cov small{font-size:.72rem;color:var(--text-muted)}
.qtr-sec-mfa-factors{display:flex;flex-direction:column;gap:8px;min-inline-size:0}
/* WRAP THE ROW, NOT THE WORD. `overflow-wrap:anywhere` on the name let the box
   shrink to its narrowest possible break point -- one character -- so the moment
   a factor was called "QUATRON backup" the name rendered as a vertical column of
   letters. anywhere affects min-content sizing; break-word does not. The row now
   wraps to a second line when it runs out of space, and the name ellipsises
   instead of disintegrating. */
.qtr-sec-factor{display:flex;flex-wrap:wrap;align-items:center;gap:9px;padding:10px 12px;border-radius:12px;background:var(--surface-secondary)}
.qtr-sec-factor svg{flex:0 0 auto;inline-size:16px;block-size:16px;color:var(--accent-text)}
/* 8ch was too mean: "QUATRON backup" is 14 and rendered as "...ON backup",
   cutting off the very part that identifies the factor. A factor name is short
   by construction, so it gets the room to be read whole and the row wraps
   instead. */
.qtr-sec-factor b{flex:1 1 auto;min-inline-size:14ch;font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-sec-factor .qtr-ts-badge{margin-inline-end:auto}
.qtr-sec-factor .qtr-btn{flex:0 0 auto}
/* MFA enrolment — the panel that replaced "enable it from account settings".
   Brand tokens only, and logical properties throughout so the QR block and the
   code field mirror correctly in Arabic. */
.qtr-sec-enrol{display:flex;flex-direction:column;gap:12px;padding:14px;border-radius:14px;background:var(--surface-secondary);border:1px solid var(--border-subtle);grid-column:1/-1}
/* the enrolment panel is a full-width step, not a column beside the coverage dial */

.qtr-sec-steps{margin:0;padding-inline-start:1.2em;display:flex;flex-direction:column;gap:4px;font-size:.82rem;color:var(--text-muted)}
.qtr-sec-qr{display:flex;justify-content:center;padding:12px;border-radius:12px;background:#fff;min-block-size:60px}
/* A QR is square, and GoTrue's SVG does not always carry a viewBox — with
   block-size:auto and no intrinsic ratio the browser computes zero and the code
   renders as an empty white box. Both dimensions are stated, and aspect-ratio
   keeps it square if a future version does send a viewBox. */
.qtr-sec-qr svg,.qtr-sec-qr img{inline-size:min(190px,60vw);block-size:min(190px,60vw);aspect-ratio:1;display:block}
.qtr-sec-qr-missing{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:.8rem;color:var(--text-muted);text-align:center}
.qtr-sec-shape{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.68rem;opacity:.7;letter-spacing:.02em}
.qtr-sec-uri{display:flex;flex-direction:column;gap:4px;margin:0;font-size:.76rem;color:var(--text-muted)}
.qtr-sec-uri a{color:var(--accent-text);text-decoration:underline;word-break:break-all;font-size:.74rem}
.qtr-sec-secret{display:flex;flex-direction:column;gap:4px;margin:0;font-size:.76rem;color:var(--text-muted)}
.qtr-sec-secret code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;letter-spacing:.08em;
  padding:8px 10px;border-radius:10px;background:var(--surface-primary);border:1px solid var(--border-subtle);
  color:var(--text-primary);word-break:break-all;user-select:all}
.qtr-sec-verify{display:flex;flex-direction:column;gap:8px}
.qtr-sec-verify-lbl{display:flex;flex-direction:column;gap:2px;font-size:.82rem;font-weight:700;color:var(--text-primary)}
.qtr-sec-verify-lbl small{font-weight:500;font-size:.74rem;color:var(--text-muted)}
.qtr-sec-verify-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.qtr-sec-verify input{inline-size:8.5em;padding:9px 12px;border-radius:10px;border:1px solid var(--border-subtle);
  background:var(--surface-primary);color:var(--text-primary);font-size:1.05rem;letter-spacing:.35em;text-align:center;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.qtr-sec-verify input:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}
.qtr-sec-verify input::placeholder{color:var(--text-muted);opacity:.45;letter-spacing:.25em}
.qtr-ts-note.ok{display:flex;align-items:center;gap:8px;color:var(--text-primary);padding:12px 14px;border-radius:12px;background:var(--surface-secondary);border:1px solid var(--border-subtle);font-size:.84rem;margin:0}
.qtr-ts-note.ok svg{color:var(--success-text,var(--accent-text))}
.qtr-ts-note.sm{font-size:.72rem}
.qtr-sec-nomfa{margin-block-start:14px;padding-block-start:12px;border-block-start:1px solid var(--border-subtle)}
.qtr-sec-nomfa>b{display:block;font-size:.82rem;margin-block-end:8px}
.qtr-sec-nomfa-list{display:flex;flex-wrap:wrap;gap:6px}
.qtr-sec-recent{margin-block-start:14px}
.qtr-sec-recent h3{font-size:.82rem;font-weight:800;color:var(--text-secondary);margin:0 0 8px}
.qtr-sec-inc-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;inline-size:100%;text-align:start;padding:12px 14px;border:1px solid var(--hairline);border-radius:14px;background:var(--surface-secondary);cursor:pointer;font:inherit;color:inherit;transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.qtr-sec-inc-row:hover{border-color:var(--accent-border);transform:translateY(-1px)}
@media(max-width:720px){.qtr-sec-banner{grid-template-columns:1fr}.qtr-sec-mfa{grid-template-columns:1fr}}

/* ── Audit Intelligence Center (QIP-09) ───────────────────────────────────── */
.qtr-aud-integrity{display:flex;align-items:center;gap:14px;padding:14px 18px;border:1px solid var(--hairline);border-radius:16px;background:var(--shell-surface);margin-block-end:16px}
.qtr-aud-integrity.ok{border-color:color-mix(in srgb,var(--qtr-success) 34%,var(--hairline));background:color-mix(in srgb,var(--qtr-success) 5%,var(--shell-surface))}
.qtr-aud-integrity.bad{border-color:color-mix(in srgb,var(--qtr-danger) 34%,var(--hairline));background:color-mix(in srgb,var(--qtr-danger) 5%,var(--shell-surface))}
.qtr-aud-integrity-ic{inline-size:44px;block-size:44px;border-radius:12px;display:grid;place-items:center;background:var(--surface-secondary);color:var(--text-secondary);flex:none}
.qtr-aud-integrity.ok .qtr-aud-integrity-ic{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-aud-integrity.bad .qtr-aud-integrity-ic{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-aud-integrity-ic svg{inline-size:22px;block-size:22px}
.qtr-aud-integrity-b{flex:1;min-inline-size:0}.qtr-aud-integrity-b b{display:block;font-size:.95rem}.qtr-aud-integrity-b small{font-size:.78rem;color:var(--text-muted)}
.qtr-aud-events{display:flex;flex-direction:column;gap:8px}
.qtr-aud-event{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;inline-size:100%;text-align:start;padding:11px 13px;border:1px solid var(--hairline);border-radius:13px;background:var(--surface-secondary);cursor:pointer;font:inherit;color:inherit;transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.qtr-aud-event:hover{border-color:var(--accent-border);transform:translateY(-1px)}
.qtr-aud-event.bad{border-inline-start:3px solid var(--qtr-danger)}.qtr-aud-event.wait{border-inline-start:3px solid var(--qtr-warning)}
.qtr-aud-event-ic{inline-size:32px;block-size:32px;border-radius:9px;display:grid;place-items:center;background:var(--shell-surface);color:var(--text-secondary);flex:none}
.qtr-aud-event-ic svg{inline-size:16px;block-size:16px}
.qtr-aud-event-b{min-inline-size:0;display:flex;flex-direction:column;gap:2px}
.qtr-aud-event-b b{font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-aud-event-b small{font-size:.75rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-aud-event-t{display:flex;align-items:center;gap:6px;flex:none}
.qtr-aud-cats{display:flex;flex-wrap:wrap;gap:8px}
.qtr-aud-cat{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--hairline);border-radius:999px;background:var(--surface-secondary);cursor:pointer;font:inherit;color:inherit;transition:border-color var(--dur-fast) var(--ease)}
.qtr-aud-cat:hover{border-color:var(--accent-border)}
.qtr-aud-cat svg{inline-size:15px;block-size:15px;color:var(--accent-text)}
.qtr-aud-cat span{font-size:.82rem;font-weight:650}.qtr-aud-cat b{font-size:.82rem;color:var(--text-muted)}
.qtr-aud-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-block-end:14px}
.qtr-aud-search{display:flex;align-items:center;gap:7px;flex:1;min-inline-size:200px;padding:0 12px;border:1px solid var(--hairline);border-radius:11px;background:var(--surface-secondary)}
.qtr-aud-search svg{inline-size:16px;block-size:16px;color:var(--text-muted);flex:none}
.qtr-aud-search input{flex:1;border:0;background:transparent;padding:10px 0;font:inherit;color:inherit;outline:none;min-inline-size:0}
.qtr-aud-filters .qtr-id-input,.qtr-aud-filters .qtr-id-select{max-inline-size:150px}
.qtr-aud-timeline{display:flex;flex-direction:column;gap:0;position:relative}
.qtr-aud-tl-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;inline-size:100%;text-align:start;padding:11px 6px;border:0;border-block-end:1px solid var(--border-subtle);background:transparent;cursor:pointer;font:inherit;color:inherit;transition:background var(--dur-fast) var(--ease)}
.qtr-aud-tl-row:last-child{border-block-end:0}
.qtr-aud-tl-row:hover{background:var(--surface-secondary)}
.qtr-aud-tl-rail{inline-size:30px;block-size:30px;border-radius:50%;display:grid;place-items:center;background:var(--surface-secondary);color:var(--text-secondary);flex:none;position:relative}
.qtr-aud-tl-rail::before{content:"";position:absolute;inset-block-start:-11px;inline-size:2px;block-size:11px;background:var(--border-subtle)}
.qtr-aud-tl-row:first-child .qtr-aud-tl-rail::before{display:none}
.qtr-aud-tl-rail.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}.qtr-aud-tl-rail.wait{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-aud-tl-rail svg{inline-size:15px;block-size:15px}
.qtr-aud-tl-b{min-inline-size:0;display:flex;flex-direction:column;gap:1px}
.qtr-aud-tl-b b{font-size:.86rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-aud-tl-b small{font-size:.73rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-aud-tl-t{display:flex;align-items:center;gap:6px;flex:none}.qtr-aud-tl-t small{font-size:.72rem;color:var(--text-muted)}
.qtr-aud-tl-t svg{inline-size:13px;block-size:13px;color:var(--accent-text)}
.qtr-aud-verify{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:14px;margin-block-end:14px;border:1px solid var(--hairline)}
.qtr-aud-verify.ok{background:var(--qtr-success-soft);border-color:color-mix(in srgb,var(--qtr-success) 34%,transparent)}
.qtr-aud-verify.bad{background:var(--qtr-danger-soft);border-color:color-mix(in srgb,var(--qtr-danger) 34%,transparent)}
.qtr-aud-verify-ic{inline-size:36px;block-size:36px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--shell-surface)}
.qtr-aud-verify.ok .qtr-aud-verify-ic{color:var(--qtr-success-text)}.qtr-aud-verify.bad .qtr-aud-verify-ic{color:var(--qtr-danger-text)}
.qtr-aud-verify b{display:block;font-size:.9rem}.qtr-aud-verify small{font-size:.76rem;color:var(--text-muted)}
.qtr-aud-verify code,.qtr-aud-meta code,.qtr-ts-fact code{font-family:var(--font-mono,monospace);font-size:.8em;background:var(--surface-secondary);padding:1px 5px;border-radius:5px}
.qtr-aud-meta{margin-block-start:12px;padding:12px;border-radius:10px;background:var(--surface-secondary);font-family:var(--font-mono,monospace);font-size:.74rem;overflow-x:auto;max-block-size:240px}
.qtr-aud-chain{display:flex;flex-direction:column;gap:7px}
.qtr-aud-chain-node{display:flex;align-items:center;gap:10px;inline-size:100%;text-align:start;padding:9px 11px;border:1px solid var(--hairline);border-radius:11px;background:var(--surface-secondary);cursor:pointer;font:inherit;color:inherit;transition:border-color var(--dur-fast) var(--ease)}
.qtr-aud-chain-node:hover{border-color:var(--accent-border)}
.qtr-aud-chain-ic{inline-size:28px;block-size:28px;border-radius:8px;display:grid;place-items:center;background:var(--shell-surface);color:var(--text-secondary);flex:none}
.qtr-aud-chain-ic svg{inline-size:14px;block-size:14px}
.qtr-aud-chain-b b{font-size:.84rem}.qtr-aud-chain-b small{display:block;font-size:.72rem;color:var(--text-muted)}
.qtr-aud-corr-head{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:14px 0}
.qtr-aud-corr-head>div{padding:12px 14px;border-radius:12px;background:var(--surface-secondary);text-align:center}
.qtr-aud-corr-head b{display:block;font-size:1.05rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-aud-corr-head span{font-size:.72rem;color:var(--text-muted)}
.qtr-aud-flow{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}
.qtr-aud-flow-step{display:flex;align-items:center;gap:12px;padding:10px 6px;cursor:pointer;position:relative}
.qtr-aud-flow-dot{inline-size:34px;block-size:34px;border-radius:50%;display:grid;place-items:center;background:var(--surface-secondary);color:var(--text-secondary);flex:none;position:relative;z-index:1}
.qtr-aud-flow-dot.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}.qtr-aud-flow-dot.wait{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-aud-flow-dot svg{inline-size:16px;block-size:16px}
.qtr-aud-flow-step::before{content:"";position:absolute;inset-block-start:0;inset-inline-start:22px;inline-size:2px;block-size:100%;background:var(--border-subtle)}
.qtr-aud-flow-step:first-child::before{inset-block-start:50%}.qtr-aud-flow-step:last-child::before{block-size:50%}
.qtr-aud-flow-b b{font-size:.86rem}.qtr-aud-flow-b small{display:block;font-size:.73rem;color:var(--text-muted)}
.qtr-aud-flow-step:hover .qtr-aud-flow-b b{color:var(--accent-text)}
.qtr-aud-forensic-in{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.qtr-aud-forensic-in .qtr-id-input{flex:1;min-inline-size:160px}
.qtr-aud-sub{font-size:.8rem;font-weight:800;color:var(--text-secondary);margin:14px 0 8px}
.qtr-aud-rel{display:flex;flex-wrap:wrap;gap:6px}
.qtr-aud-intel{display:flex;flex-direction:column;gap:8px}
.qtr-aud-intel-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--hairline);border-radius:13px;background:var(--surface-secondary)}
.qtr-aud-intel-row.bad{border-color:color-mix(in srgb,var(--qtr-danger) 30%,var(--hairline))}.qtr-aud-intel-row.wait{border-color:color-mix(in srgb,var(--qtr-warning) 30%,var(--hairline))}
.qtr-aud-intel-ic{inline-size:34px;block-size:34px;border-radius:10px;display:grid;place-items:center;background:var(--shell-surface);color:var(--text-secondary);flex:none}
.qtr-aud-intel-row.bad .qtr-aud-intel-ic{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}.qtr-aud-intel-row.wait .qtr-aud-intel-ic{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-aud-intel-ic svg{inline-size:17px;block-size:17px}
.qtr-aud-intel-b{flex:1;min-inline-size:0}.qtr-aud-intel-b b{display:block;font-size:.88rem}.qtr-aud-intel-b small{font-size:.75rem;color:var(--text-muted)}
.qtr-aud-int-actions{display:flex;flex-wrap:wrap;gap:8px;margin-block-end:14px}
@media(max-width:720px){.qtr-aud-filters .qtr-id-input,.qtr-aud-filters .qtr-id-select{max-inline-size:none;flex:1}}

/* ── Enterprise Documents Platform (Phase 3 · EDP) ────────────────────────── */
.qtr-doc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:12px}
.qtr-doc-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:4px 12px;inline-size:100%;text-align:start;padding:14px;border:1px solid var(--hairline);border-radius:16px;background:var(--surface-secondary);cursor:pointer;font:inherit;color:inherit;transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.qtr-doc-card:hover{border-color:var(--accent-border);transform:translateY(-1px)}
.qtr-doc-card-ic{grid-row:1/3;inline-size:44px;block-size:44px;border-radius:12px;display:grid;place-items:center;background:var(--shell-surface);color:var(--accent-text);flex:none}
.qtr-doc-card-ic svg{inline-size:22px;block-size:22px}
.qtr-doc-card-b{min-inline-size:0}.qtr-doc-card-b b{display:block;font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-doc-card-b small{font-size:.74rem;color:var(--text-muted)}
.qtr-doc-card-tags{display:flex;flex-wrap:wrap;gap:5px;margin-block-start:6px}
.qtr-doc-card-meta{grid-column:2;display:flex;justify-content:space-between;gap:8px}.qtr-doc-card-meta small{font-size:.72rem;color:var(--text-muted)}
.qtr-doc-trustbar{display:flex;flex-wrap:wrap;gap:8px;margin-block-end:14px}
.qtr-doc-trust{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;font-size:.76rem;font-weight:700;background:var(--surface-secondary);color:var(--text-muted)}
.qtr-doc-trust.on{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-doc-trust svg{inline-size:14px;block-size:14px}
.qtr-doc-preview{display:flex;align-items:center;gap:16px;padding:22px;border-radius:14px;background:var(--surface-secondary);border:1px dashed var(--border-strong)}
.qtr-doc-preview.ready{border-style:solid;border-color:color-mix(in srgb,var(--qtr-success) 30%,var(--hairline))}
.qtr-doc-preview>svg{inline-size:48px;block-size:48px;color:var(--accent-text);flex:none}
.qtr-doc-preview b{display:block;font-size:.9rem}.qtr-doc-preview small{display:block;font-size:.74rem;color:var(--text-muted)}
.qtr-doc-versions{display:flex;flex-direction:column;gap:7px}
.qtr-doc-ver{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:11px;background:var(--surface-secondary)}
.qtr-doc-ver.current{border:1px solid color-mix(in srgb,var(--qtr-success) 34%,var(--hairline))}
.qtr-doc-ver-no{inline-size:36px;block-size:28px;border-radius:8px;display:grid;place-items:center;background:var(--shell-surface);font-weight:800;font-size:.78rem;color:var(--accent-text);flex:none}
.qtr-doc-ver-b{flex:1;min-inline-size:0}.qtr-doc-ver-b b{font-size:.85rem}.qtr-doc-ver-b small{display:block;font-size:.72rem;color:var(--text-muted)}
.qtr-doc-perms,.qtr-doc-comments{display:flex;flex-direction:column;gap:8px}
.qtr-doc-perm{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-radius:11px;background:var(--surface-secondary)}
.qtr-doc-perm b{font-size:.84rem}.qtr-doc-perm span{display:flex;flex-wrap:wrap;gap:4px}
.qtr-doc-comment{padding:10px 12px;border-radius:11px;background:var(--surface-secondary)}
.qtr-doc-comment.resolved{opacity:.6}
.qtr-doc-comment b{font-size:.82rem}.qtr-doc-comment p{margin:3px 0;font-size:.86rem}.qtr-doc-comment small{font-size:.72rem;color:var(--text-muted);display:flex;align-items:center;gap:8px}
.qtr-doc-ret-acts,.qtr-doc-cmp-out{display:flex;flex-wrap:wrap;gap:8px;margin-block-start:8px}
.qtr-doc-providers{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:10px}
.qtr-doc-provider{display:flex;align-items:center;gap:10px;padding:12px;border-radius:12px;background:var(--surface-secondary);border:1px solid var(--hairline)}
.qtr-doc-provider.default{border-color:color-mix(in srgb,var(--qtr-success) 34%,var(--hairline))}
.qtr-doc-provider.off{opacity:.6}
.qtr-doc-provider svg{inline-size:20px;block-size:20px;color:var(--accent-text);flex:none}
.qtr-doc-provider b{display:block;font-size:.86rem}.qtr-doc-provider small{font-size:.73rem;color:var(--text-muted)}
.qtr-doc-rank{display:flex;flex-direction:column;gap:6px}
.qtr-doc-rank-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 11px;border-radius:10px;background:var(--surface-secondary)}
.qtr-doc-rank-row b{font-size:.84rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qtr-doc-rank-row span{font-size:.78rem;color:var(--text-muted);flex:none}

/* ── Templates Platform (Phase 3 · Module 02) — qtr-tpl-* ─────────────────────── */
.qtr-tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:12px}
.qtr-tpl-card{display:flex;flex-direction:column;border:1px solid var(--hairline);border-radius:16px;background:var(--surface-secondary);overflow:hidden;transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.qtr-tpl-card:hover{border-color:var(--accent-border);transform:translateY(-1px)}
.qtr-tpl-card-main{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;text-align:start;padding:14px;background:none;border:0;cursor:pointer;font:inherit;color:inherit}
.qtr-tpl-card-ic{grid-row:1/3;inline-size:44px;block-size:44px;border-radius:12px;display:grid;place-items:center;background:var(--shell-surface);color:var(--accent-text);flex:none}
.qtr-tpl-card-ic svg{inline-size:22px;block-size:22px}
.qtr-tpl-card-b{min-inline-size:0}.qtr-tpl-card-b b{display:block;font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-tpl-card-b small{font-size:.74rem;color:var(--text-muted)}
.qtr-tpl-card-tags{display:flex;flex-wrap:wrap;gap:5px;margin-block-start:6px}
.qtr-tpl-card-acts{display:flex;gap:6px;padding:0 14px 12px;justify-content:flex-end;border-block-start:1px solid var(--hairline);padding-block-start:10px}
.qtr-tpl-mine{white-space:nowrap}
.qtr-tpl-score{inline-size:34px;block-size:26px;border-radius:8px;display:grid;place-items:center;font-weight:800;font-size:.8rem;background:var(--surface-secondary)}
.qtr-tpl-score.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-tpl-score.wait{background:color-mix(in srgb,var(--qtr-warning) 18%,transparent);color:var(--qtr-warning-text)}
.qtr-tpl-score.bad{background:var(--qtr-danger-soft,color-mix(in srgb,var(--qtr-danger) 14%,transparent));color:var(--qtr-danger-text)}
/* studio */
.qtr-tpl-studio-title{display:flex;align-items:center;gap:8px;min-inline-size:0}
.qtr-tpl-studio-title b{font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-tpl-studio-title small{color:var(--text-muted);font-size:.78rem}
.qtr-tpl-lockbar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:12px;background:color-mix(in srgb,var(--qtr-warning) 12%,transparent);color:var(--qtr-warning-text);font-size:.82rem;font-weight:600;margin-block-end:12px}
.qtr-tpl-lockbar svg{inline-size:16px;block-size:16px;flex:none}
.qtr-tpl-studio-grid{display:grid;grid-template-columns:minmax(230px,1fr) minmax(0,1.4fr) minmax(0,1.5fr);gap:14px;align-items:start}
@media(max-width:1100px){.qtr-tpl-studio-grid{grid-template-columns:1fr}}
.qtr-tpl-studio-left,.qtr-tpl-studio-mid,.qtr-tpl-studio-right{display:flex;flex-direction:column;gap:14px;min-inline-size:0}
.qtr-tpl-palette-list{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.qtr-tpl-palbtn{display:flex;align-items:center;gap:7px;padding:8px 9px;border:1px solid var(--hairline);border-radius:10px;background:var(--surface-secondary);cursor:pointer;font:inherit;color:inherit;font-size:.78rem;text-align:start}
.qtr-tpl-palbtn:hover{border-color:var(--accent-border)}
.qtr-tpl-palbtn:disabled{opacity:.45;cursor:not-allowed}
.qtr-tpl-palbtn svg{inline-size:15px;block-size:15px;color:var(--accent-text);flex:none}
.qtr-tpl-palbtn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-tpl-blocks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;counter-reset:blk}
.qtr-tpl-block{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--hairline);border-radius:11px;background:var(--surface-secondary)}
.qtr-tpl-block.sel{border-color:var(--accent-border);background:var(--shell-surface)}
.qtr-tpl-block-main{display:flex;align-items:center;gap:9px;flex:1;min-inline-size:0;background:none;border:0;cursor:pointer;font:inherit;color:inherit;text-align:start}
.qtr-tpl-blocks:not(.readonly) .qtr-tpl-block-main::before{counter-increment:blk;content:counter(blk);inline-size:20px;block-size:20px;border-radius:6px;display:grid;place-items:center;background:var(--shell-surface);font-size:.68rem;font-weight:800;color:var(--text-muted);flex:none}
.qtr-tpl-block-ic{inline-size:26px;block-size:26px;border-radius:7px;display:grid;place-items:center;background:var(--shell-surface);color:var(--accent-text);flex:none}
.qtr-tpl-block-ic svg{inline-size:14px;block-size:14px}
.qtr-tpl-block-b{min-inline-size:0}.qtr-tpl-block-b b{display:block;font-size:.82rem}.qtr-tpl-block-b small{display:block;font-size:.72rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-tpl-block-ctl{display:flex;gap:3px;flex:none}
.qtr-tpl-ic{inline-size:26px;block-size:26px;border-radius:7px;border:1px solid var(--hairline);background:var(--surface-secondary);display:grid;place-items:center;cursor:pointer;color:var(--text-muted)}
.qtr-tpl-ic:hover{border-color:var(--accent-border);color:var(--accent-text)}
.qtr-tpl-ic.danger:hover{color:var(--qtr-danger-text);border-color:color-mix(in srgb,var(--qtr-danger) 40%,var(--hairline))}
.qtr-tpl-ic svg{inline-size:14px;block-size:14px}
.qtr-tpl-prop-head{display:flex;align-items:center;gap:8px;font-weight:700;font-size:.86rem;margin-block-end:10px}
.qtr-tpl-prop-head svg{inline-size:16px;block-size:16px;color:var(--accent-text)}
.qtr-tpl-prop-foot{display:flex;gap:8px;justify-content:flex-end;margin-block-start:10px}
.qtr-tpl-props textarea.qtr-id-input{min-block-size:64px;resize:vertical;font-family:inherit}
.qtr-tpl-vars{display:flex;flex-direction:column;gap:6px}
.qtr-tpl-var{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 10px;border-radius:10px;background:var(--surface-secondary)}
.qtr-tpl-var-b b{font-size:.8rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.qtr-tpl-var-b small{display:flex;flex-wrap:wrap;gap:4px;margin-block-start:3px}
.qtr-tpl-sens{padding:2px 7px;border-radius:999px;font-size:.68rem;font-weight:700;background:var(--shell-surface);color:var(--text-muted)}
.qtr-tpl-sens.restricted,.qtr-tpl-sens.highly_restricted{background:var(--qtr-danger-soft,color-mix(in srgb,var(--qtr-danger) 14%,transparent));color:var(--qtr-danger-text)}
.qtr-tpl-sens.confidential{background:color-mix(in srgb,var(--qtr-warning) 18%,transparent);color:var(--qtr-warning-text)}
.qtr-tpl-sens.public{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-tpl-testarea{inline-size:100%;min-block-size:120px;resize:vertical;border:1px solid var(--hairline);border-radius:11px;background:var(--surface-secondary);color:inherit;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;line-height:1.5}
.qtr-tpl-prevctrl{display:flex;gap:5px;align-items:center}
.qtr-tpl-prevctrl .qtr-btn.active{background:var(--accent-soft,var(--shell-surface));color:var(--accent-text);border-color:var(--accent-border)}
.qtr-tpl-preview{border:1px solid var(--hairline);border-radius:12px;background:#fff;color:var(--qt-neutral-800);padding:18px;min-block-size:180px;max-block-size:520px;overflow:auto}
.qtr-tpl-preview-empty,.qtr-tpl-preview .qtr-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--qt-neutral-400);min-block-size:150px;text-align:center}
.qtr-tpl-preview-empty svg{inline-size:30px;block-size:30px}
/* 360 extras */
.qtr-tpl-versions{display:flex;flex-direction:column;gap:7px}
.qtr-tpl-ver{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:11px;background:var(--surface-secondary)}
.qtr-tpl-ver.current{border:1px solid color-mix(in srgb,var(--qtr-success) 34%,var(--hairline))}
.qtr-tpl-ver-no{inline-size:36px;block-size:28px;border-radius:8px;display:grid;place-items:center;background:var(--shell-surface);font-weight:800;font-size:.78rem;color:var(--accent-text);flex:none}
.qtr-tpl-ver-b{flex:1;min-inline-size:0}.qtr-tpl-ver-b b{font-size:.85rem}.qtr-tpl-ver-b small{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:.72rem;color:var(--text-muted)}
.qtr-tpl-gd,.qtr-tpl-perms{display:flex;flex-direction:column;gap:8px}
.qtr-tpl-gd-row{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:11px;background:var(--surface-secondary)}
.qtr-tpl-gd-row svg{inline-size:18px;block-size:18px;color:var(--accent-text);flex:none}
.qtr-tpl-gd-row b{font-size:.84rem}.qtr-tpl-gd-row small{display:block;font-size:.72rem;color:var(--text-muted)}
.qtr-tpl-perm{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-radius:11px;background:var(--surface-secondary)}
.qtr-tpl-perm b{font-size:.84rem}.qtr-tpl-perm span{display:flex;flex-wrap:wrap;gap:4px}
.qtr-tpl-recs{display:flex;flex-direction:column;gap:6px;margin-block-start:10px}
.qtr-tpl-rec{display:flex;align-items:center;gap:8px;padding:8px 11px;border-radius:10px;background:color-mix(in srgb,var(--qtr-warning) 10%,transparent);font-size:.8rem}
.qtr-tpl-rec svg{inline-size:15px;block-size:15px;color:var(--qtr-warning-text);flex:none}
.qtr-tpl-hlist{display:flex;flex-direction:column;gap:7px}
.qtr-tpl-hrow{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:11px;background:var(--surface-secondary);border:0;cursor:pointer;font:inherit;color:inherit;text-align:start}
.qtr-tpl-hrow:hover{background:var(--shell-surface)}
.qtr-tpl-hrow>svg{inline-size:18px;block-size:18px;color:var(--accent-text);flex:none}
.qtr-tpl-hrow>div{flex:1;min-inline-size:0}.qtr-tpl-hrow b{display:block;font-size:.85rem}.qtr-tpl-hrow small{font-size:.72rem;color:var(--text-muted)}
.qtr-tpl-dist,.qtr-tpl-cmp-out{display:flex;flex-direction:column;gap:6px}
.qtr-tpl-dist-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 11px;border-radius:10px;background:var(--surface-secondary)}
.qtr-tpl-dist-row b{font-size:.83rem}.qtr-tpl-dist-row span{font-weight:700;color:var(--accent-text)}
.qtr-tpl-provs{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:10px}
.qtr-tpl-prov{display:flex;align-items:center;gap:10px;padding:12px;border-radius:12px;background:var(--surface-secondary);border:1px solid var(--hairline)}
.qtr-tpl-prov.off{opacity:.55}
.qtr-tpl-prov svg{inline-size:19px;block-size:19px;color:var(--accent-text);flex:none}
.qtr-tpl-prov b{display:block;font-size:.85rem}.qtr-tpl-prov small{font-size:.72rem;color:var(--text-muted)}
.qtr-tpl-brands,.qtr-tpl-fonts{display:flex;flex-direction:column;gap:8px}
.qtr-tpl-brand{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:11px;background:var(--surface-secondary)}
.qtr-tpl-swatch{inline-size:26px;block-size:26px;border-radius:8px;flex:none;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--qt-ink) 8%,transparent)}
.qtr-tpl-brand b{display:block;font-size:.85rem}.qtr-tpl-brand small{font-size:.72rem;color:var(--text-muted)}
.qtr-tpl-font{display:flex;flex-direction:column;gap:2px;padding:9px 11px;border-radius:11px;background:var(--surface-secondary)}
.qtr-tpl-font b{font-size:.85rem}.qtr-tpl-font small{font-size:.72rem;color:var(--text-muted)}
.qtr-tpl-blockchips{display:flex;flex-wrap:wrap;gap:6px}
.qtr-tpl-blockchip{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;font-size:.76rem;background:var(--surface-secondary);border:1px solid var(--hairline)}
.qtr-tpl-blockchip.trust{background:var(--qtr-success-soft);color:var(--qtr-success-text);border-color:transparent}
.qtr-tpl-blockchip svg{inline-size:13px;block-size:13px}
.qtr-tpl-valout h4{margin:14px 0 6px;font-size:.82rem}
.qtr-tpl-valok{display:flex;align-items:center;gap:8px;color:var(--qtr-success-text);font-weight:700}
.qtr-tpl-valbad{display:flex;align-items:center;gap:8px;color:var(--qtr-danger-text);font-weight:700}
.qtr-tpl-vallist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.qtr-tpl-vallist li{display:flex;align-items:center;gap:7px;font-size:.83rem;padding:7px 10px;border-radius:9px;background:var(--surface-secondary)}
.qtr-tpl-vallist li svg{inline-size:14px;block-size:14px;flex:none}
.qtr-tpl-vallist.bad li svg{color:var(--qtr-danger-text)}.qtr-tpl-vallist.wait li svg{color:var(--qtr-warning-text)}
/* rendered template output (.tpl-*) — light document surface */
.qtr-tpl-preview .tpl-doc{font-size:.9rem;line-height:1.6;color:var(--qt-neutral-800)}
.qtr-tpl-preview .tpl-header{border-block-end:2px solid var(--tpl-accent,var(--accent));padding-block-end:8px;margin-block-end:12px;font-weight:700}
.qtr-tpl-preview .tpl-footer{border-block-start:1px solid var(--qt-neutral-300);padding-block-start:8px;margin-block-start:14px;font-size:.78rem;color:var(--qt-neutral-500)}
.qtr-tpl-preview .tpl-watermark{position:relative;text-align:center;color:color-mix(in srgb,var(--tpl-accent,var(--accent)) 22%,transparent);font-size:1.4rem;font-weight:800;letter-spacing:.1em;margin:6px 0}
.qtr-tpl-preview .tpl-h,.qtr-tpl-preview h1.tpl-h,.qtr-tpl-preview h2.tpl-h,.qtr-tpl-preview h3.tpl-h{color:var(--tpl-accent,var(--accent));margin:.5em 0 .3em}
.qtr-tpl-preview .tpl-p{margin:.4em 0}
.qtr-tpl-preview .tpl-callout{background:color-mix(in srgb,var(--tpl-accent,var(--accent)) 8%,#fff);border-inline-start:3px solid var(--tpl-accent,var(--accent));padding:8px 12px;border-radius:6px}
.qtr-tpl-preview .tpl-field{display:inline-flex;gap:6px;padding:2px 0}
.qtr-tpl-preview .tpl-field em{color:var(--qt-neutral-500);font-style:normal;font-weight:600}
.qtr-tpl-preview .tpl-hr{border:0;border-block-start:1px solid var(--qt-neutral-300);margin:10px 0}
.qtr-tpl-preview .tpl-table{inline-size:100%;border-collapse:collapse;margin:8px 0;font-size:.84rem}
.qtr-tpl-preview .tpl-table th,.qtr-tpl-preview .tpl-table td{border:1px solid var(--qt-neutral-200);padding:6px 9px;text-align:start}
.qtr-tpl-preview .tpl-table th{background:color-mix(in srgb,var(--tpl-accent,var(--accent)) 10%,#fff);color:var(--qt-neutral-700)}
.qtr-tpl-preview .tpl-badge{display:inline-block;padding:2px 10px;border-radius:999px;background:color-mix(in srgb,var(--tpl-accent,var(--accent)) 14%,#fff);color:var(--tpl-accent,var(--accent));font-size:.76rem;font-weight:700}
.qtr-tpl-preview .tpl-trust{border:1px dashed var(--tpl-accent,var(--accent));border-radius:8px;padding:8px 12px;margin:8px 0;background:color-mix(in srgb,var(--tpl-accent,var(--accent)) 5%,#fff)}
.qtr-tpl-preview .tpl-trust b{color:var(--tpl-accent,var(--accent));font-size:.82rem}
.qtr-tpl-preview .tpl-qr{display:flex;align-items:center;gap:12px}
.qtr-tpl-preview .tpl-qrbox{inline-size:52px;block-size:52px;border:2px solid var(--tpl-accent,var(--accent));border-radius:6px;display:grid;place-items:center;font-weight:800;color:var(--tpl-accent,var(--accent));flex:none}
.qtr-tpl-preview .tpl-img{background:var(--qt-neutral-100);border:1px dashed var(--qt-neutral-300);border-radius:6px;padding:14px;text-align:center;color:var(--qt-neutral-400);font-size:.8rem}
.qtr-tpl-preview .tpl-columns,.qtr-tpl-preview .tpl-grid{display:flex;gap:14px}.qtr-tpl-preview .tpl-col{flex:1}
.qtr-tpl-preview .tpl-empty{color:var(--qt-neutral-400);font-style:italic;padding:6px 0}
.qtr-tpl-preview .tpl-note{color:var(--qt-neutral-400);font-size:.78rem;margin-block-start:4px}

/* ── Quatron HCM · Employee Core & Employee 360 (Phase 4·P1·M1) — qtr-hcm-* ─────── */
.qtr-ts-mark.hcm{--qtr-product-accent:var(--qtr-product-hcm)}
.qtr-ts-mark.hcm img{inline-size:28px;block-size:28px;display:block}
.qtr-hcm-av{inline-size:40px;block-size:40px;border-radius:50%;display:inline-grid;place-items:center;background:var(--shell-surface);color:var(--accent-text);font-weight:800;font-size:.82rem;flex:none;position:relative;box-shadow:inset 0 0 0 1px var(--hairline)}
.qtr-hcm-av.big{inline-size:64px;block-size:64px;font-size:1.2rem}
.qtr-hcm-av.linked{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-hcm-av i{position:absolute;inset-block-end:-3px;inset-inline-end:-3px;inline-size:16px;block-size:16px;background:var(--qtr-success);color:#fff;border-radius:50%;padding:2px}
.qtr-hcm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:12px}
.qtr-hcm-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:4px 12px;inline-size:100%;text-align:start;padding:14px;border:1px solid var(--hairline);border-radius:16px;background:var(--surface-secondary);cursor:pointer;font:inherit;color:inherit;transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.qtr-hcm-card:hover{border-color:var(--accent-border);transform:translateY(-1px)}
.qtr-hcm-card>.qtr-hcm-av{grid-row:1/3}
.qtr-hcm-card-b{min-inline-size:0}.qtr-hcm-card-b b{display:block;font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-hcm-card-b small{font-size:.74rem;color:var(--text-muted)}
.qtr-hcm-card-tags{display:flex;flex-wrap:wrap;gap:5px;margin-block-start:6px}
.qtr-hcm-card-meta{grid-column:2;display:flex;justify-content:space-between;gap:8px}.qtr-hcm-card-meta small{font-size:.72rem;color:var(--text-muted)}
/* HCM module launcher tiles (P07.9 nav convenience) */
.qtr-hcm-modgrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr))}
.qtr-hcm-modcard{grid-template-columns:auto 1fr auto;grid-template-rows:auto;align-items:center;text-decoration:none}
.qtr-hcm-modic{inline-size:42px;block-size:42px;border-radius:12px;display:inline-grid;place-items:center;background:var(--accent-soft,var(--surface-tertiary,var(--shell-surface)));color:var(--accent-text);flex:none;box-shadow:inset 0 0 0 1px var(--hairline)}
.qtr-hcm-modic i{inline-size:20px;block-size:20px}
.qtr-hcm-modcard>.qtr-hcm-modic{grid-row:1}
.qtr-hcm-modcard .qtr-hcm-card-meta{grid-column:auto;color:var(--text-muted);display:inline-grid;place-items:center}
.qtr-hcm-modcard .qtr-hcm-card-meta i{inline-size:18px;block-size:18px}
.qtr-hcm-signals{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr));gap:10px}
.qtr-hcm-sig{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px;border:1px solid var(--hairline);border-radius:14px;background:var(--surface-secondary);cursor:pointer;font:inherit;color:inherit;text-align:start}
.qtr-hcm-sig:hover{border-color:var(--accent-border)}
.qtr-hcm-sig i{inline-size:18px;block-size:18px;color:var(--accent-text)}.qtr-hcm-sig b{font-size:1.3rem;font-weight:800}.qtr-hcm-sig span{font-size:.76rem;color:var(--text-muted)}
.qtr-hcm-banner{display:flex;align-items:center;gap:16px;padding:18px;border-radius:18px;background:var(--surface-secondary);border:1px solid var(--hairline);margin-block-end:14px}
.qtr-hcm-banner-b{flex:1;min-inline-size:0}.qtr-hcm-banner-b h2{font-size:1.15rem;margin:0}.qtr-hcm-banner-b p{margin:2px 0 6px;font-size:.82rem;color:var(--text-muted)}
.qtr-hcm-banner-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.qtr-hcm-dc{padding:2px 9px;border-radius:999px;font-size:.68rem;font-weight:700;text-transform:capitalize;background:var(--shell-surface);color:var(--text-muted)}
.qtr-hcm-dc.restricted,.qtr-hcm-dc.highly_confidential{background:var(--qtr-danger-soft,color-mix(in srgb,var(--qtr-danger) 14%,transparent));color:var(--qtr-danger-text)}
.qtr-hcm-dc.confidential{background:color-mix(in srgb,var(--qtr-warning) 18%,transparent);color:var(--qtr-warning-text)}
.qtr-hcm-ring{inline-size:66px;block-size:66px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--shell-surface);border:3px solid var(--hairline)}
.qtr-hcm-ring.ok{border-color:var(--qtr-success)}.qtr-hcm-ring.wait{border-color:var(--qtr-warning)}.qtr-hcm-ring.bad{border-color:var(--qtr-danger)}
.qtr-hcm-ring b{font-size:1rem;font-weight:800}.qtr-hcm-ring span{font-size:.62rem;color:var(--text-muted)}
.qtr-hcm-privacy{display:flex;align-items:center;gap:8px;padding:9px 13px;border-radius:12px;background:color-mix(in srgb,var(--qtr-warning) 12%,transparent);color:var(--qtr-warning-text);font-size:.8rem;font-weight:600;margin-block-end:14px}
.qtr-hcm-privacy i{inline-size:15px;block-size:15px}
.qtr-hcm-note{display:flex;align-items:center;gap:8px;padding:10px 13px;border-radius:12px;background:var(--surface-secondary);font-size:.8rem;margin-block-start:10px}
.qtr-hcm-note i{inline-size:15px;block-size:15px;flex:none;color:var(--accent-text)}
.qtr-hcm-note.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text)}.qtr-hcm-note.ok i{color:var(--qtr-success-text)}
.qtr-hcm-note.wait{background:color-mix(in srgb,var(--qtr-warning) 12%,transparent);color:var(--qtr-warning-text)}.qtr-hcm-note.wait i{color:var(--qtr-warning-text)}
.qtr-hcm-dup{margin-block-start:8px}
.qtr-hcm-mgr{display:flex;align-items:center;gap:10px}.qtr-hcm-mgr b{font-size:.86rem}.qtr-hcm-mgr small{color:var(--text-muted);font-size:.74rem}
.qtr-hcm-mgrhist{margin-block-start:8px;display:flex;flex-direction:column;gap:4px}
.qtr-hcm-mgrrow{display:flex;justify-content:space-between;gap:8px;font-size:.78rem;padding:4px 0;border-block-start:1px solid var(--hairline)}.qtr-hcm-mgrrow small{color:var(--text-muted)}
.qtr-hcm-roles{margin-block-start:10px}.qtr-hcm-roles h4{font-size:.78rem;margin:0 0 6px}
.qtr-hcm-roles .qtr-ts-badge{margin:0 3px 3px 0}
.qtr-hcm-asg,.qtr-hcm-docs,.qtr-hcm-appr,.qtr-hcm-notes{display:flex;flex-direction:column;gap:7px}
.qtr-hcm-asg-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-radius:11px;background:var(--surface-secondary)}
.qtr-hcm-asg-row.current{border:1px solid color-mix(in srgb,var(--qtr-success) 34%,var(--hairline))}
.qtr-hcm-asg-row b{font-size:.82rem}.qtr-hcm-asg-row small{display:block;font-size:.72rem;color:var(--text-muted)}
.qtr-hcm-doc{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:11px;background:var(--surface-secondary)}
.qtr-hcm-doc>i{inline-size:17px;block-size:17px;color:var(--accent-text);flex:none}.qtr-hcm-doc>div{flex:1;min-inline-size:0}.qtr-hcm-doc b{font-size:.83rem}.qtr-hcm-doc small{display:block;font-size:.72rem;color:var(--text-muted)}
.qtr-hcm-line{padding:7px 0;border-block-start:1px solid var(--hairline)}.qtr-hcm-line:first-of-type{border:0}.qtr-hcm-line b{font-size:.83rem}.qtr-hcm-line small{display:block;font-size:.72rem;color:var(--text-muted)}
.qtr-hcm-sub{font-size:.76rem;margin:12px 0 4px;display:flex;align-items:center;justify-content:space-between;color:var(--text-secondary)}
.qtr-hcm-skills,.qtr-hcm-tags{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.qtr-hcm-missing{display:flex;flex-wrap:wrap;gap:5px;margin-block-start:10px}
.qtr-hcm-note-row{padding:8px 11px;border-radius:10px;background:var(--surface-secondary);margin-block-start:6px}.qtr-hcm-note-row p{margin:0;font-size:.84rem}.qtr-hcm-note-row small{font-size:.7rem;color:var(--text-muted)}
.qtr-hcm-ecard{border-radius:14px;overflow:hidden;border:1px solid var(--hairline);background:linear-gradient(135deg,color-mix(in srgb,var(--qtr-product-pos) 12%,var(--surface-secondary)),var(--surface-secondary));max-inline-size:340px;margin-block-end:10px}
.qtr-hcm-ecard-h{display:flex;justify-content:space-between;align-items:center;padding:10px 13px;background:linear-gradient(135deg,var(--qtr-product-pos),var(--qtr-product-bi));color:#fff}.qtr-hcm-ecard-h b{font-size:.85rem}.qtr-hcm-ecard-h span{font-size:.68rem;opacity:.85}
.qtr-hcm-ecard-b{display:flex;align-items:center;gap:11px;padding:13px}.qtr-hcm-ecard-b b{display:block;font-size:.9rem}.qtr-hcm-ecard-b small{display:block;font-size:.72rem;color:var(--text-muted)}
.qtr-hcm-ecard-f{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 13px;border-block-start:1px dashed var(--border-strong)}
.qtr-hcm-qr{inline-size:38px;block-size:38px;border:2px solid var(--accent-text);border-radius:6px;display:grid;place-items:center;font-weight:800;font-size:.7rem;color:var(--accent-text)}
@media(max-width:640px){.qtr-hcm-banner{flex-wrap:wrap}.qtr-hcm-ring{order:-1}}

/* ============================================================================
   QUATRON BRAND SYSTEM V1.0 — Adoption layer
   Official product tiles, brand marks, and product-accent theming.
   Consumes brand tokens (brand-tokens.css). No new brand rules invented.
============================================================================ */
.qtr-product-tile{display:block}
/* When a card shows an official brand tile, drop the generated gradient chip
   so the certified tile (its own rounded field + product color) reads cleanly. */
.qtr-product-card .icon[data-brand-tile]{width:auto;height:auto;background:none;box-shadow:none;border-radius:0}
.qtr-product-card{--product-accent:var(--accent)}
.qtr-product-card:hover{border-color:color-mix(in srgb,var(--product-accent) 42%,transparent)}
.qtr-product-card::after{background:color-mix(in srgb,var(--product-accent) 22%,transparent)}
.qtr-product-card:hover::after{background:color-mix(in srgb,var(--product-accent) 40%,transparent)}
/* Product hero (placeholder + product landing) */
.qtr-brand-hero{display:grid;place-items:center}
.qtr-brand-hero img{border-radius:22px;box-shadow:var(--qt-shadow-ambient,0 8px 24px rgba(13,20,32,.08))}
/* Header + login brand mark: symbol sits on the brand-blue app-icon field */
.qtr-brand .qtr-logo img,.qtr-login-card .qtr-logo img{filter:drop-shadow(0 1px 1px rgba(13,20,32,.18))}
/* Home "My products" widget — official brand tiles replace the generic chip */
.qtr-ws-prod-ic.brand{background:none;border-radius:calc(40px * var(--qt-radius-app-ratio));inline-size:40px;block-size:40px;overflow:hidden}
.qtr-ws-prod-ic.brand img{inline-size:40px;block-size:40px;display:block}

/* ============================================================================
   HCM · Module 02 — Organization, Jobs & Positions (org tree/chart, analytics)
   Reuses the qtr-ts-* / qtr-hcm-* system; only adds org-specific structure.
   Logical properties → RTL/LTR safe; consumes theme tokens; reduced-motion aware.
============================================================================ */
.qtr-org-chart{overflow-x:auto;padding-block:4px}
.qtr-org-tree{list-style:none;margin:0;padding-inline-start:22px}
.qtr-org-chart > .qtr-org-tree{padding-inline-start:0}
.qtr-org-tree li{position:relative;padding-block:3px}
.qtr-org-tree .qtr-org-tree{border-inline-start:1px solid var(--qtr-border);margin-inline-start:14px}
.qtr-org-node{display:flex;align-items:center;gap:10px;inline-size:100%;text-align:start;padding:9px 12px;border:1px solid var(--qtr-border);border-radius:10px;background:var(--qtr-surface);cursor:pointer;transition:border-color .15s,box-shadow .15s;font:inherit;color:inherit}
.qtr-org-node:hover,.qtr-org-node:focus-visible{border-color:var(--qtr-accent);box-shadow:0 2px 10px rgba(13,20,32,.06);outline:none}
.qtr-org-node-ic{display:grid;place-items:center;inline-size:30px;block-size:30px;border-radius:8px;background:color-mix(in srgb,var(--qtr-accent) 10%,transparent);color:var(--qtr-accent-ink,var(--accent));flex:none}
.qtr-org-node-ic svg{inline-size:17px;block-size:17px}
.qtr-org-node-b{display:flex;flex-direction:column;min-inline-size:0;flex:1}
.qtr-org-node-b b{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-org-node-b small{font-size:12px;color:var(--qtr-muted-text)}
.qtr-org-node-meta{display:flex;gap:6px;flex:none}
/* analytics bars */
.qtr-org-bars{display:flex;flex-direction:column;gap:9px}
.qtr-org-bar{display:grid;grid-template-columns:minmax(80px,32%) 1fr auto;align-items:center;gap:10px}
.qtr-org-bar-l{font-size:13px;color:var(--qtr-muted-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-org-bar-t{block-size:8px;border-radius:99px;background:var(--qtr-surface-soft);overflow:hidden}
.qtr-org-bar-t > span{display:block;block-size:100%;border-radius:99px;background:var(--qtr-accent);transition:inline-size .4s cubic-bezier(.2,.8,.2,1)}
.qtr-org-bar b{font-size:13px;font-variant-numeric:tabular-nums;min-inline-size:24px;text-align:end}
@media (prefers-reduced-motion:reduce){.qtr-org-bar-t > span,.qtr-org-node{transition:none}}
/* static (non-clickable) card + simple list */
.qtr-hcm-card.static{cursor:default;text-align:start}
.qtr-hcm-card.static:hover{border-color:var(--qtr-border);box-shadow:none;transform:none}
.qtr-hcm-ul{margin:.2em 0 .6em;padding-inline-start:1.1em}
.qtr-hcm-ul li{font-size:13.5px;color:var(--qtr-muted-text);margin-block:.15em}

/* ── HCM Module 03 — Employee Onboarding & Offboarding (lifecycle) ─────────────── */
.qtr-hcm-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-block-end:16px}
.qtr-hcm-stat{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border:1px solid var(--qtr-border,color-mix(in srgb,var(--qt-neutral-400) 18%,transparent));border-radius:14px;background:var(--qtr-surface,color-mix(in srgb,var(--qt-neutral-400) 4%,transparent))}
.qtr-hcm-stat i{inline-size:18px;block-size:18px;opacity:.65}
.qtr-hcm-stat b{font-size:1.5rem;line-height:1.1;font-variant-numeric:tabular-nums}
.qtr-hcm-stat small{opacity:.7;font-size:.78rem}
.qtr-hcm-qa{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-block-end:8px}
.qtr-hcm-prog{margin:10px 0 18px}
.qtr-hcm-prog-bar{block-size:8px;border-radius:980px;background:var(--qtr-border,color-mix(in srgb,var(--qt-neutral-400) 18%,transparent));overflow:hidden}
.qtr-hcm-prog-bar>span{display:block;block-size:100%;border-radius:980px;background:var(--qtr-accent);transition:inline-size .5s cubic-bezier(.22,1,.36,1)}
@media (prefers-reduced-motion:reduce){.qtr-hcm-prog-bar>span{transition:none}}
.qtr-hcm-checklist{display:flex;flex-direction:column;gap:8px}
.qtr-hcm-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--qtr-border,color-mix(in srgb,var(--qt-neutral-400) 18%,transparent));border-radius:12px;background:var(--qtr-surface,color-mix(in srgb,var(--qt-neutral-400) 3%,transparent))}
.qtr-hcm-item.done{opacity:.62}
.qtr-hcm-item-t{flex:1;display:flex;flex-direction:column;gap:1px;min-inline-size:0}
.qtr-hcm-item-t b{font-weight:600}.qtr-hcm-item-t small{opacity:.7;font-size:.76rem}
.qtr-hcm-check{border:0;background:transparent;cursor:pointer;color:inherit;padding:2px;display:inline-flex}
.qtr-hcm-check i{inline-size:20px;block-size:20px}
.qtr-hcm-card.static{cursor:default}
.qtr-hcm-av.lg{inline-size:56px;block-size:56px}
.qtr-ts-360-hero{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:16px 0}
.qtr-ts-360-hero h2{margin:0}.qtr-ts-360-hero p{margin:2px 0 6px;opacity:.7}
.qtr-ts-360-actions{margin-inline-start:auto;display:flex;gap:8px;flex-wrap:wrap}
.qtr-lc-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;align-items:end}
.qtr-lc-form>button{grid-column:1/-1;justify-self:start}

/* ── HCM Module 05 — Time, Attendance & Scheduling ─────────────────────────────── */
.qtr-att-rows{display:flex;flex-direction:column;gap:6px}
.qtr-att-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--qtr-border,color-mix(in srgb,var(--qt-neutral-400) 18%,transparent));border-radius:12px;background:var(--qtr-surface,color-mix(in srgb,var(--qt-neutral-400) 3%,transparent))}
.qtr-att-emp{display:flex;flex-direction:column;min-inline-size:140px;flex:1}
.qtr-att-emp b{font-weight:600}.qtr-att-emp small{opacity:.65;font-size:.76rem}
.qtr-att-times{font-variant-numeric:tabular-nums;opacity:.85}
.qtr-att-worked{font-variant-numeric:tabular-nums;font-weight:600}
.qtr-att-worked em{font-style:normal;color:var(--qtr-accent);font-weight:600}
.qtr-id-field.inline{flex-direction:row;align-items:center;gap:8px;margin:0}
.qtr-id-field.inline span{opacity:.7;font-size:.82rem}

/* ── HCM Module 06 — Leave Management ─────────────────────────────────────── */
.qtr-lv-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-inline-end:6px;vertical-align:middle;flex:0 0 auto}
.qtr-lv-mid{display:flex;flex-direction:column;gap:2px;align-items:flex-end;margin-inline-start:auto;text-align:end}
.qtr-lv-mid small{opacity:.7}
.qtr-lv-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.qtr-chip-btn{border:1px solid var(--qtr-border);background:transparent;border-radius:999px;padding:4px 12px;font-size:.82rem;cursor:pointer;color:inherit}
.qtr-chip-btn.active{background:var(--qtr-accent);color:#fff;border-color:transparent}
.qtr-lv-360head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.qtr-lv-360head h3{margin:0;font-size:1.05rem}
.qtr-lv-360head p{margin:2px 0 0;opacity:.75;font-size:.85rem}
.qtr-lv-360head .qtr-ts-chip{margin-inline-start:auto}
.qtr-lv-facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:14px}
.qtr-lv-fact{background:var(--qtr-surface-soft);border:1px solid var(--qtr-border);border-radius:10px;padding:8px 12px}
.qtr-lv-fact small{display:block;opacity:.65;font-size:.72rem;margin-bottom:2px}
.qtr-lv-fact b{font-size:.95rem;font-weight:600}
.qtr-lv-days{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.qtr-lv-day{font-size:.75rem;padding:3px 8px;border-radius:8px;border:1px solid var(--qtr-border)}
.qtr-lv-day.on{background:rgba(46,95,232,.10);border-color:rgba(46,95,232,.25)}
.qtr-lv-day.off{opacity:.5}
.qtr-lv-form{display:flex;flex-direction:column;gap:12px;max-width:640px}
.qtr-lv-field{display:flex;flex-direction:column;gap:5px}
.qtr-lv-field>span{font-size:.82rem;opacity:.75}
.qtr-lv-row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.qtr-lv-preview{display:flex;flex-wrap:wrap;gap:8px}
.qtr-lv-warn{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;padding:5px 10px;border-radius:8px}
.qtr-lv-warn.ok{background:color-mix(in srgb,var(--qtr-success) 10%,transparent);color:var(--qtr-success-text)}
.qtr-lv-warn.bad{background:color-mix(in srgb,var(--qtr-danger) 10%,transparent);color:var(--qtr-danger-text)}
.qtr-lv-warn.wait{background:color-mix(in srgb,var(--qtr-warning) 10%,transparent);color:var(--qtr-warning-text)}
.qtr-lv-warn i{width:15px;height:15px}
.qtr-lv-bal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.qtr-lv-bal{border:1px solid var(--qtr-border);border-radius:12px;padding:14px}
.qtr-lv-bal h4{margin:0 0 8px;font-size:.92rem;display:inline}
.qtr-lv-bal-big{font-size:1.8rem;font-weight:700;line-height:1.1;margin:6px 0}
.qtr-lv-bal-big small{display:block;font-size:.72rem;font-weight:400;opacity:.6}
.qtr-lv-bal-meta{display:flex;flex-direction:column;gap:3px;font-size:.78rem;opacity:.8}
.qtr-lv-note{font-size:.82rem;opacity:.7;margin:0 0 10px}
.qtr-lv-bars{display:flex;flex-direction:column;gap:10px}
.qtr-lv-bar-row{display:grid;grid-template-columns:150px 1fr auto;align-items:center;gap:10px;font-size:.85rem}
.qtr-lv-bar{background:var(--qtr-surface-soft);border-radius:999px;height:10px;overflow:hidden}
.qtr-lv-bar i{display:block;height:100%;border-radius:999px}
[dir=rtl] .qtr-lv-mid{align-items:flex-start;text-align:start}

/* ── Quatron Finance — Finance Core Foundation ────────────────────────────── */
.qtr-fin-base{margin-inline-start:auto;font-size:.85rem;opacity:.85}
.qtr-fin-base b{color:var(--qtr-accent)}
.qtr-fin-note{font-size:.83rem;opacity:.72;margin:0 0 12px}
.qtr-fin-bigstat{border:1px solid var(--qtr-border);border-radius:12px;padding:14px 18px;margin:12px 0;display:flex;flex-direction:column;gap:2px}
.qtr-fin-bigstat small{font-size:.75rem;opacity:.6}
.qtr-fin-bigstat b{font-size:1.6rem;font-weight:700}
.qtr-fin-grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:12px 0}
@media (max-width:820px){.qtr-fin-grid2{grid-template-columns:1fr}}
.qtr-fin-bigstat em{font-style:normal;font-size:.9rem;opacity:.7;font-weight:500}

/* Finance home — integrity band, signals, accountability. The band is the first thing on the
   screen because "is the ledger sound" outranks "how many accounts do I have". */
.qtr-fin-integrity{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin-block-end:14px}
.qtr-fin-ipill{display:flex;align-items:flex-start;gap:10px;text-align:start;padding:11px 13px;border-radius:12px;border:1px solid var(--qtr-border,color-mix(in srgb,var(--qt-neutral-400) 18%,transparent));background:var(--qtr-surface,color-mix(in srgb,var(--qt-neutral-400) 4%,transparent));font:inherit;color:inherit}
button.qtr-fin-ipill{cursor:pointer}
button.qtr-fin-ipill:hover{border-color:var(--qtr-accent)}
.qtr-fin-ipill i{inline-size:18px;block-size:18px;flex:none;margin-block-start:1px}
.qtr-fin-ipill span{display:flex;flex-direction:column;gap:2px;min-width:0}
.qtr-fin-ipill b{font-size:.83rem;font-weight:700;line-height:1.25}
.qtr-fin-ipill small{font-size:.74rem;opacity:.78;line-height:1.35;font-variant-numeric:tabular-nums}
.qtr-fin-ipill.ok{background:var(--qtr-success-soft);border-color:transparent}
.qtr-fin-ipill.ok i,.qtr-fin-ipill.ok b{color:var(--qtr-success-text)}
.qtr-fin-ipill.bad{background:var(--qtr-danger-soft);border-color:transparent}
.qtr-fin-ipill.bad i,.qtr-fin-ipill.bad b{color:var(--qtr-danger-text)}
.qtr-fin-ipill.wait{background:var(--qtr-warning-soft);border-color:transparent}
.qtr-fin-ipill.wait i,.qtr-fin-ipill.wait b{color:var(--qtr-warning-text)}

.qtr-fin-ctx{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;padding:9px 13px;margin-block-end:14px;border-radius:10px;background:var(--surface-secondary,color-mix(in srgb,var(--qt-neutral-400) 6%,transparent));font-size:.78rem}
.qtr-fin-ctx span{display:inline-flex;align-items:center;gap:6px}
.qtr-fin-ctx i{inline-size:14px;block-size:14px;opacity:.6}
.qtr-fin-ctx-cfg{margin-inline-start:auto;opacity:.62}

.qtr-fin-signals{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-block-end:12px}
.qtr-fin-signal{display:flex;flex-direction:column;gap:2px;align-items:flex-start;text-align:start;padding:14px 16px;border:1px solid var(--qtr-border,color-mix(in srgb,var(--qt-neutral-400) 18%,transparent));border-radius:14px;background:var(--qtr-surface,color-mix(in srgb,var(--qt-neutral-400) 4%,transparent));font:inherit;color:inherit;cursor:pointer}
.qtr-fin-signal:hover{border-color:var(--qtr-accent)}
.qtr-fin-signal i{inline-size:18px;block-size:18px;opacity:.65}
.qtr-fin-signal b{font-size:1.5rem;line-height:1.1;font-variant-numeric:tabular-nums}
.qtr-fin-signal small{opacity:.7;font-size:.78rem}
.qtr-fin-signal-val{font-size:.8rem;font-weight:600;opacity:.85;font-variant-numeric:tabular-nums}
.qtr-fin-signal.wait{border-color:var(--qtr-warning);background:var(--qtr-warning-soft)}
.qtr-fin-signal.wait i,.qtr-fin-signal.wait b{color:var(--qtr-warning-text)}
.qtr-fin-signal.bad{border-color:var(--qtr-danger);background:var(--qtr-danger-soft)}
.qtr-fin-signal.bad i,.qtr-fin-signal.bad b{color:var(--qtr-danger-text)}

.qtr-fin-delta{display:inline-flex;align-items:center;gap:5px;font-size:.78rem;font-weight:600;margin-block-start:4px}
.qtr-fin-delta i{inline-size:14px;block-size:14px}
.qtr-fin-delta.up{color:var(--qtr-success-text)}
.qtr-fin-delta.down{color:var(--qtr-danger-text)}
.qtr-fin-delta.muted{color:var(--text-muted);font-weight:500}

.qtr-fin-people{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:.8rem}
.qtr-fin-arrow{inline-size:13px;block-size:13px;opacity:.45;margin:0 3px}
.qtr-fin-none{opacity:.4}
.qtr-fin-sub{display:block;font-size:.7rem;opacity:.55}

.qtr-fin-tablewrap{overflow-x:auto;border:1px solid var(--qtr-border);border-radius:10px}
.qtr-fin-table{width:100%;border-collapse:collapse;font-size:.85rem;min-width:520px}
/* A .qtr-fin-table carries a 520px floor so its columns stay readable, and it is
   meant to sit inside .qtr-fin-tablewrap, which supplies the horizontal scroll.
   Only 1 of the 30 tables in the QRP centre is actually wrapped; the other 29 are
   direct children of a card. In a narrow column - the report Run history sits in
   a sidebar - a 520px table with nowhere to scroll is simply clipped, and in RTL
   it is clipped from the left, which is where the date column lives. Give the
   card the scroll container the table expected instead of letting it cut. */
.qtr-ts-card:has(> .qtr-fin-table){overflow-x:auto}
/* The recent-journals table carries accountability and trust columns; let it scroll inside its
   wrapper rather than crushing the names. */
.qtr-fin-recent .qtr-fin-table{min-width:840px}
.qtr-fin-table th{text-align:start;font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;opacity:.6;padding:8px 12px;border-bottom:1px solid var(--qtr-border);white-space:nowrap}
.qtr-fin-table td{padding:8px 12px;border-bottom:1px solid var(--qtr-border);vertical-align:middle}
.qtr-fin-table tr:last-child td{border-bottom:0}
.qtr-fin-table a{color:var(--qtr-accent);cursor:pointer;text-decoration:none}
.qtr-fin-table code{font-size:.75rem;background:var(--qtr-surface-soft);padding:1px 5px;border-radius:4px}
.qtr-fin-jform{display:flex;flex-direction:column;gap:12px}
.qtr-fin-jform .qtr-fin-table input,.qtr-fin-jform .qtr-fin-table select{width:100%;min-width:90px}
.qtr-fin-jtotals{display:flex;flex-wrap:wrap;gap:16px;align-items:center;font-size:.9rem;padding:8px 4px}
.qtr-fin-jtotals .ok{color:var(--qtr-success-text);font-weight:600}
.qtr-fin-jtotals .bad{color:var(--qtr-danger-text);font-weight:600}
.qtr-fin-reportbtns{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.qtr-btn.xs{padding:3px 8px;font-size:.72rem}
/* Finance 08 — Closing / Consolidation / Reporting workspace */
.qtr-pos{color:var(--qtr-success-text)}
.qtr-neg{color:var(--qtr-danger-text)}
.qtr-ts-spaces{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.qtr-ts-spaces .qtr-chip-btn{display:inline-flex;align-items:center;gap:6px}
.qtr-ts-spaces .qtr-chip-btn i{inline-size:15px;block-size:15px}
.qtr-ts-spaces .qtr-chip-btn.active{background:var(--qtr-accent);color:#fff;border-color:var(--qtr-accent)}
.qtr-fin-sec{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:.85rem;font-weight:700;margin:14px 0 6px;padding-inline-start:2px}
.qtr-fin-sec span{font-variant-numeric:tabular-nums;opacity:.85}
.qtr-fin-hash{font-size:.72rem;background:var(--qtr-surface-soft);padding:1px 6px;border-radius:4px;word-break:break-all}

/* ============================================================================
   Finance acceptance fixes (owner feedback): discoverable links + printing.
============================================================================ */
/* Record links inside finance tables read as real links (underline + focus). */
.qtr-fin-table a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;
  text-decoration-color:color-mix(in srgb,var(--qtr-accent) 45%,transparent)}
.qtr-fin-table a:hover{text-decoration-color:currentColor}
.qtr-fin-table a:focus-visible{outline:2px solid var(--qtr-accent);outline-offset:2px;border-radius:3px}

/* Print button + print-only helper */
.qtr-print-only{display:none}

/* Clean print: hide the app chrome, print only the report/workspace content. */
@media print{
  :root{color-scheme:light}
  html,body{background:#fff!important;color:var(--qt-ink)!important}
  /* hide platform + product chrome */
  .qtr-header,.qtr-dock,#qtr-breadcrumb,.qtr-toast,.qtr-quick,
  .qtr-ts-tabs,.qtr-ts-spaces,.qtr-ts-actions,.qtr-ts-head a,.qtr-ts-head .qtr-btn,
  .qtr-btn,[data-act],[data-print-hide],.menu-toggle,.qtr-fab{display:none!important}
  .qtr-shell,.qtr-shell.qtr-shell-product-layout{display:block!important;height:auto!important;
    min-height:0!important;overflow:visible!important;padding:0!important;gap:0!important}
  .qtr-workspace,#qtr-workspace,.qtr-panel{display:block!important;height:auto!important;min-height:0!important;
    overflow:visible!important;border:0!important;box-shadow:none!important;background:#fff!important}
  .qtr-ts,.qtr-ts-body{display:block!important;background:#fff!important}
  .qtr-print-only{display:block!important;margin:0 0 14px;padding-bottom:10px;border-bottom:1.5px solid var(--qt-ink)}
  .qtr-print-only h1{font-size:18px;margin:0 0 4px;color:var(--qt-ink)}
  /* Document identity block: the printed report used to carry a title and a date
     and nothing else - no run number, no trust code, no verification mark. The
     QR sits beside the metadata so a reader can scan the paper itself. */
  .qtr-doc-identity{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}
  .qtr-doc-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px;flex:1;min-width:0}
  .qtr-doc-meta > div{display:flex;flex-direction:column;gap:1px;min-width:0}
  .qtr-doc-meta span{font-size:7.5pt;letter-spacing:.03em;text-transform:uppercase;opacity:.6}
  .qtr-doc-meta b{font-size:9.5pt;font-weight:700;overflow-wrap:anywhere}
  .qtr-doc-meta .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9pt}
  .qtr-doc-qr{margin:0;flex:none;width:96px;text-align:center}
  .qtr-doc-qr > div[data-qrp-qr]{width:96px;height:96px;display:flex;align-items:center;justify-content:center}
  .qtr-doc-qr img{width:100%;height:100%;object-fit:contain;image-rendering:pixelated}
  .qtr-doc-qr figcaption{font-size:7pt;margin-top:3px;opacity:.7}
  .qtr-doc-qr-none{width:120px;display:flex;align-items:center;justify-content:center;
                   min-height:96px;border:1px dashed var(--qt-ink);opacity:.55;padding:6px}
  .qtr-print-only small{color:var(--qt-neutral-700);font-size:12px}
  /* report surfaces: ink-friendly, no scroll clipping */
  .qtr-ts-card,.qtr-lv-facts,.qtr-fin-tablewrap{break-inside:avoid;box-shadow:none!important;border:1px solid var(--qt-neutral-300)!important;background:#fff!important}
  .qtr-fin-tablewrap{overflow:visible!important}
  .qtr-fin-table{min-width:0!important;width:100%!important;font-size:11px!important;color:var(--qt-ink)!important}
  .qtr-fin-table a{color:var(--qt-ink)!important;text-decoration:none!important}
  .qtr-fin-table th,.qtr-fin-table td{color:var(--qt-ink)!important;border-color:var(--qt-neutral-300)!important}
  .qtr-ts-card-hd h2,.qtr-ts-head-main h1,.qtr-lv-fact b,.qtr-lv-fact small{color:var(--qt-ink)!important}
  @page{margin:14mm}
}

/* ══ 13Q. QRP — Reporting, Printing & Document Generation Platform ══════════════════ */
.qtr-qrp .qtr-ts-note{font-size:13px;color:var(--text-secondary);margin:0 0 12px;line-height:1.6}
.qtr-qrp-cols{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:16px;align-items:start}
@media (max-width:960px){.qtr-qrp-cols{grid-template-columns:1fr}}
.qtr-qrp-side{display:flex;flex-direction:column;gap:16px}
.qtr-qrp-list{display:flex;flex-direction:column;gap:8px}
.qtr-qrp-row{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;text-align:start;
  padding:10px 12px;border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--surface-secondary);cursor:pointer}
.qtr-qrp-row:hover{border-color:var(--accent-border);background:var(--shell-surface)}
.qtr-qrp-row-main{display:flex;flex-direction:column;gap:2px;min-width:0}
.qtr-qrp-row-main b{font-size:13.5px;color:var(--text-primary)}
.qtr-qrp-row-main small{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-qrp-doctable tbody tr{cursor:pointer}
.qtr-qrp-doctable tbody tr:hover{background:var(--surface-secondary)}
.qtr-ic-ok{color:var(--qtr-success-text);width:16px;height:16px}
.qtr-qrp-meta{display:flex;flex-direction:column;gap:6px;margin:6px 0 12px}
.qtr-qrp-mrow{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:13px;border-bottom:1px dashed var(--hairline);padding-bottom:5px}
.qtr-qrp-mrow span{color:var(--text-muted)}
.qtr-qrp-mrow b{color:var(--text-primary);text-align:end}
.mono{font-family:var(--qtr-font-mono);font-size:12px}
.qtr-qrp-render{border:1px solid var(--hairline);border-radius:var(--radius-control);background:#fff;color:var(--qt-ink);padding:20px;margin-top:8px;overflow:auto;max-height:640px}
.qtr-qrp-render .qrp-doc{max-width:720px;margin:0 auto;font-size:13.5px;line-height:1.6}
.qtr-qrp-render .qrp-doc-head{display:flex;justify-content:space-between;gap:12px;border-bottom:2px solid var(--qt-ink);padding-bottom:10px;margin-bottom:14px}
.qtr-qrp-render .qrp-doc-org{font-weight:700}
.qtr-qrp-render .qrp-doc-meta{font-size:12px;color:var(--qt-neutral-600)}
.qtr-qrp-render .qrp-doc-title{font-size:20px;margin:6px 0}
.qtr-qrp-render .qrp-doc-subtitle{color:var(--qt-neutral-600);margin:0 0 12px}
.qtr-qrp-render .qrp-doc-field{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px dashed var(--qt-neutral-300)}
.qtr-qrp-render .qrp-doc-field .k{color:var(--qt-neutral-600)}
.qtr-qrp-render .qrp-doc-table{width:100%;border-collapse:collapse;margin:12px 0;font-size:12.5px}
.qtr-qrp-render .qrp-doc-table th,.qtr-qrp-render .qrp-doc-table td{border:1px solid var(--qt-neutral-300);padding:6px 8px;text-align:start}
.qtr-qrp-render .qrp-doc-table th{background:var(--qt-neutral-100)}
.qtr-qrp-render .qrp-doc-foot{margin-top:16px;border-top:1px solid var(--qt-neutral-300);padding-top:8px;font-size:11px;color:var(--qt-neutral-500)}
.qtr-qrp-render .qrp-doc-watermark{position:sticky;top:0;text-align:center;color:color-mix(in srgb,var(--qt-ink) 6%,transparent);font-size:44px;font-weight:800;pointer-events:none}
.qtr-qrp-verify{text-align:center}
.qtr-qrp-qr{display:flex;justify-content:center;margin:8px 0}
.qtr-qrp-qr img{border:1px solid var(--hairline);border-radius:8px;background:#fff;padding:6px}
.qtr-qrp-vmeta{display:flex;flex-direction:column;gap:6px;align-items:center;font-size:13px}
.qtr-qrp-chans{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.qtr-qrp-chan{border:1px solid var(--hairline);border-radius:var(--radius-control);padding:12px 14px;background:var(--surface-secondary)}
.qtr-qrp-chan.ok{border-inline-start:3px solid var(--qtr-success)}
.qtr-qrp-chan.warn{border-inline-start:3px solid var(--qtr-warning)}
.qtr-qrp-chan.muted{border-inline-start:3px solid var(--hairline);opacity:.85}
.qtr-qrp-chan-h{display:flex;align-items:center;gap:8px;font-size:13.5px}
.qtr-qrp-chan-h b{flex:1;color:var(--text-primary)}
.qtr-qrp-chan-h i{width:16px;height:16px}
.qtr-qrp-chan-b{font-size:12.5px;color:var(--text-secondary);margin:8px 0;line-height:1.5}
.qtr-qrp-chan-f{color:var(--text-muted)}
.qtr-qrp-form{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:640px){.qtr-qrp-form{grid-template-columns:1fr}}
.qtr-qrp-vform,.qtr-qrp-vres{margin-top:10px}
.qtr-qrp-vform{display:flex;gap:8px}
.qtr-qrp-vform input{flex:1}
.qtr-qrp-vres{border:1px solid var(--hairline);border-radius:var(--radius-control);padding:14px;margin-top:14px}
.qtr-qrp-vres.ok{border-color:var(--qtr-success);background:var(--qtr-success-soft)}
.qtr-qrp-vres.bad{border-color:var(--qtr-danger);background:var(--qtr-danger-soft)}
.qtr-qrp-vres-h{display:flex;align-items:center;gap:8px;font-weight:700;margin-bottom:10px}
.qtr-qrp-verifycard{max-width:620px}
/* form primitives used by QRP (not previously defined) */
.qtr-fld{display:flex;flex-direction:column;gap:5px;margin-bottom:12px;font-size:13px}
.qtr-fld>span{color:var(--text-secondary)}
.qtr-fld input,.qtr-fld select,.qtr-fld textarea{padding:9px 11px;border:1px solid var(--hairline);border-radius:var(--radius-control);
  background:var(--surface-secondary);color:var(--text-primary);font:inherit;font-size:13.5px;width:100%}
.qtr-fld input:focus,.qtr-fld select:focus,.qtr-fld textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-border)}
.qtr-chk{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary);margin:6px 0}
.qtr-chk input{width:16px;height:16px;flex:none}

/* QRP print: render only the document snapshot on white paper */
@media print{
  .qtr-qrp .qtr-ts-head,.qtr-qrp .qtr-ts-actions,.qtr-qrp .qtr-ts-tabs,.qtr-qrp-side,.qtr-qrp [data-print-hide]{display:none!important}
  .qtr-qrp-cols{display:block!important}
  .qtr-qrp-render{border:0!important;max-height:none!important;padding:0!important;overflow:visible!important}
  .qtr-qrp-render .qrp-doc-watermark{position:static}
}

/* ══ 13Q-R. QRP 01 — Reporting Core Engine (reports registry + runner + results) ══ */
.qtr-qrp-chips{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 16px}
.qtr-qrp-chips .qtr-chip{cursor:pointer}
.qtr-qrp-rptgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.qtr-qrp-rptcard{border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--surface-secondary);padding:16px;cursor:pointer;display:flex;flex-direction:column;gap:6px;transition:border-color .15s,box-shadow .15s}
.qtr-qrp-rptcard:hover{border-color:var(--accent-border);box-shadow:var(--elev-1)}
.qtr-qrp-rptcard-h{display:flex;align-items:center;justify-content:space-between}
.qtr-qrp-rptcard-h>i{width:20px;height:20px;color:var(--accent)}
.qtr-qrp-rptcard h3{font-size:15px;margin:2px 0 0;color:var(--text-primary)}
.qtr-qrp-rptcard small.mono{color:var(--text-muted)}
.qtr-qrp-rptmeta{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}
.qtr-qrp-rptruns{font-size:12px;color:var(--text-muted)}
.qtr-qrp-fav{background:none;border:0;cursor:pointer;color:var(--text-muted);padding:2px;line-height:0}
.qtr-qrp-fav i{width:17px;height:17px}
.qtr-qrp-fav.on{color:var(--qtr-warning-text)}.qtr-qrp-fav.on i{fill:var(--qtr-warning)}
.qtr-chip.sm{font-size:11px;padding:2px 7px}
.qtr-qrp-sub{font-size:13px;color:var(--text-secondary);margin:14px 0 8px;font-weight:600}
.qtr-qrp-params{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:640px){.qtr-qrp-params{grid-template-columns:1fr}}
.qtr-qrp-params .req{color:var(--qtr-danger-text)}
.qtr-qrp-resbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:18px 0 10px}
.qtr-qrp-resmeta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px}
.qtr-qrp-restable{width:100%}
.qtr-qrp-restable td.num,.qtr-qrp-restable th.num{text-align:end;font-variant-numeric:tabular-nums}
.qtr-qrp-grouphdr td{background:var(--surface-2);font-weight:700;color:var(--text-primary);padding:8px 10px}
.qtr-qrp-grouphdr i{width:14px;height:14px;vertical-align:-2px}
.qtr-qrp-subtotal td{background:color-mix(in srgb,var(--accent) 5%,transparent);border-top:1px solid var(--hairline)}
.qtr-qrp-grand td{background:color-mix(in srgb,var(--accent) 12%,transparent);border-top:2px solid var(--accent-border);font-size:13.5px}
@media print{
  .qtr-qrp .qtr-qrp-resbar .qtr-ts-actions,.qtr-qrp-fav{display:none!important}
  .qtr-qrp-restable{font-size:11px}
}

/* ══ 13Q-DT. QRP 02 — Document Designer, Layout Engine, Branding & White Label ══════ */
.qtr-dt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin-top:12px}
.qtr-dt-card{display:flex;flex-direction:column;border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--shell-surface);overflow:hidden;cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s}
.qtr-dt-card:hover,.qtr-dt-card:focus-visible{border-color:var(--accent-border);transform:translateY(-2px);box-shadow:var(--shadow-2,0 6px 20px color-mix(in srgb,var(--qt-ink) 8%,transparent));outline:none}
.qtr-dt-card-thumb{position:relative;height:120px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,var(--surface-2)) ,var(--surface-2));border-bottom:1px solid var(--hairline)}
.qtr-dt-card-thumb i{width:40px;height:40px;color:color-mix(in srgb,var(--accent) 60%,var(--text-muted))}
.qtr-dt-card-thumb::after{content:"";position:absolute;inset:22px;border:1.5px dashed color-mix(in srgb,var(--accent) 30%,transparent);border-radius:6px;pointer-events:none}
.qtr-dt-paper-landscape::after{inset:34px 18px}
.qtr-dt-paperbadge{position:absolute;top:8px;inset-inline-end:8px;font-size:10px;font-weight:700;background:var(--shell-surface);border:1px solid var(--hairline);border-radius:5px;padding:1px 6px;color:var(--text-secondary)}
.qtr-dt-card-b{padding:11px 13px;display:flex;flex-direction:column;gap:5px}
.qtr-dt-card-b h4{margin:0;font-size:14px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-dt-card-b small.mono{font-size:11px;color:var(--text-muted)}
.qtr-dt-card-meta{display:flex;gap:5px;flex-wrap:wrap;margin-top:2px}

/* editor shell */
.qtr-dt-editor{display:flex;flex-direction:column;gap:12px}
.qtr-dt-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 12px;border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--shell-surface);position:sticky;top:0;z-index:5}
.qtr-dt-tbtitle{flex:1;min-width:0;display:flex;align-items:center;gap:8px;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-dt-tbtitle .mono{font-size:11.5px;color:var(--text-muted)}
.qtr-dt-tbactions{display:flex;gap:6px;flex-wrap:wrap}
.qtr-dt-shell{display:grid;grid-template-columns:210px minmax(0,1fr) 280px;gap:12px;align-items:start}
.qtr-dt-palette,.qtr-dt-props{border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--shell-surface);padding:12px;position:sticky;top:64px;max-height:calc(100vh - 90px);overflow:auto}
.qtr-dt-pane-h{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:10px}
.qtr-dt-pane-h i{width:15px;height:15px}
.qtr-dt-pane-h2{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:14px 0 8px}
.qtr-dt-addband{width:100%;justify-content:center;margin-bottom:10px}
.qtr-dt-palgroup{margin-bottom:12px}
.qtr-dt-palgroup-h{font-size:11px;font-weight:600;color:var(--text-secondary);margin:0 0 6px}
.qtr-dt-palgrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.qtr-dt-palitem{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border:1px solid var(--hairline);border-radius:8px;background:var(--surface-2);cursor:pointer;color:var(--text-secondary);font-size:10.5px;text-align:center;transition:border-color .12s,background .12s}
.qtr-dt-palitem:hover{border-color:var(--accent-border);background:color-mix(in srgb,var(--accent) 8%,var(--surface-2));color:var(--text-primary)}
.qtr-dt-palitem i{width:17px;height:17px}
.qtr-dt-palitem span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}

/* canvas */
.qtr-dt-canvas-wrap{overflow:auto;padding:18px;background:repeating-conic-gradient(var(--surface-2) 0 25%,transparent 0 50%) 0 0/16px 16px,var(--surface-1,var(--surface-2));border:1px solid var(--hairline);border-radius:var(--radius-control);display:flex;flex-direction:column;align-items:center;gap:8px;min-height:420px}
.qtr-dt-canvas{position:relative;background:#fff;box-shadow:0 4px 24px color-mix(in srgb,var(--qt-ink) 14%,transparent);margin:0 auto}
.qtr-dt-band{position:absolute;inset-inline:0;border-bottom:1px dashed color-mix(in srgb,#2E5FE8 22%,transparent)}
.qtr-dt-band.bg{z-index:0;border:0}
.qtr-dt-bandlbl{position:absolute;top:2px;inset-inline-start:3px;font-size:8px;font-weight:700;color:color-mix(in srgb,#2E5FE8 55%,var(--qt-neutral-400));text-transform:uppercase;letter-spacing:.04em;pointer-events:none;z-index:1;background:rgba(255,255,255,.6);padding:0 3px;border-radius:3px}
.qtr-dt-el{position:absolute;box-sizing:border-box;border:1px solid transparent;display:flex;align-items:center;gap:3px;padding:1px 3px;overflow:hidden;cursor:move;line-height:1.15;background:rgba(255,255,255,.01)}
.qtr-dt-el:hover{border-color:color-mix(in srgb,#2E5FE8 40%,transparent);background:color-mix(in srgb,#2E5FE8 4%,transparent)}
.qtr-dt-el.sel{border-color:#2E5FE8;box-shadow:0 0 0 1px #2E5FE8,0 2px 8px rgba(46,95,232,.25);z-index:3}
.qtr-dt-el.dragging{opacity:.85;cursor:grabbing}
.qtr-dt-el.locked{cursor:not-allowed}
.qtr-dt-el.hidden{opacity:.35;border-style:dashed}
.qtr-dt-eltype{flex:none;color:color-mix(in srgb,#2E5FE8 60%,var(--qt-neutral-400));display:inline-flex}
.qtr-dt-eltype i{width:10px;height:10px}
.qtr-dt-ellabel{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--qt-ink)}
.qtr-dt-handle{position:absolute;inset-inline-end:-4px;bottom:-4px;width:8px;height:8px;background:#2E5FE8;border:1.5px solid #fff;border-radius:2px}
.qtr-dt-rulerinfo{font-size:11px;color:var(--text-muted);text-align:center}
.qtr-dt-shell.ro .qtr-dt-el{cursor:default}

/* properties */
.qtr-dt-props .qtr-fld{margin-bottom:9px}
.qtr-dt-props .qtr-fld.sm{margin-bottom:0}
.qtr-dt-geo{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:9px}
.qtr-dt-elbar{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid var(--hairline)}
.qtr-dt-elbar .qtr-btn.danger{color:var(--qtr-danger-text)}
.qtr-dt-hint{font-size:11.5px;color:var(--text-muted);line-height:1.5;margin:10px 0 0}
.qtr-dt-hint.sm{margin:4px 0 0}
.qtr-dt-versions{margin-top:14px;padding-top:12px;border-top:1px solid var(--hairline)}
.qtr-fin-table.sm td{padding:4px 6px;font-size:11.5px}

/* preview modal */
.qtr-modal.wide{max-width:min(94vw,900px);width:auto}
.qtr-dt-pvhost{background:var(--surface-2);padding:18px;max-height:74vh;overflow:auto;display:flex;justify-content:center}
.qtr-dt-pvpage{background:#fff;box-shadow:0 6px 30px color-mix(in srgb,var(--qt-ink) 20%,transparent)}
.qtr-dt-pvpage .qrp-page{transform-origin:top center}

@media (max-width:1100px){.qtr-dt-shell{grid-template-columns:1fr}.qtr-dt-palette,.qtr-dt-props{position:static;max-height:none}.qtr-dt-palgrid{grid-template-columns:repeat(4,1fr)}}
@media print{.qtr-dt-toolbar,.qtr-dt-palette,.qtr-dt-props,.qtr-dt-rulerinfo{display:none!important}}

/* ══ 13Q-PR. QRP 03 — Printing, PDF, Office Export, Label & Thermal Printing Engine ═══ */
.qtr-pr-title{font-size:13.5px;color:var(--text-secondary)}.qtr-pr-title .mono{font-size:11.5px;color:var(--text-muted)}
.qtr-pr-shell{display:grid;grid-template-columns:290px minmax(0,1fr);gap:14px;align-items:start;margin-top:10px}
.qtr-pr-side{border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--shell-surface);padding:13px;position:sticky;top:12px}
.qtr-pr-side .qtr-fld{margin-bottom:9px}
.qtr-pr-guides{display:flex;gap:6px;flex-wrap:wrap}
.qtr-pr-guides .qtr-chip{cursor:pointer;user-select:none}.qtr-pr-guides .qtr-chip.on{background:color-mix(in srgb,var(--accent) 16%,transparent);border-color:var(--accent-border);color:var(--text-primary)}
.qtr-pr-main{display:flex;flex-direction:column;gap:12px;min-width:0}
.qtr-pr-actions{border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--shell-surface);padding:11px;display:flex;flex-direction:column;gap:9px}
.qtr-pr-actmain{display:flex;gap:7px;flex-wrap:wrap}
.qtr-pr-actprov{display:flex;gap:6px;flex-wrap:wrap;align-items:center;border-top:1px dashed var(--hairline);padding-top:9px}
.qtr-pr-provlbl{font-size:11.5px;color:var(--text-muted)}
.qtr-pr-vhead{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;padding:8px 10px;border-radius:8px;margin:6px 0 8px}
.qtr-pr-vhead i{width:16px;height:16px}
.qtr-pr-vhead.ok{background:color-mix(in srgb,var(--qtr-success) 12%,transparent);color:var(--qtr-success-text)}
.qtr-pr-vhead.bad{background:color-mix(in srgb,var(--qtr-danger) 12%,transparent);color:var(--qtr-danger-text)}
.qtr-pr-checks{display:flex;flex-direction:column;gap:4px}
.qtr-pr-check{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-secondary);padding:3px 2px}
.qtr-pr-check i{width:14px;height:14px;flex:none}
.qtr-pr-check.ok i{color:var(--qtr-success-text)}
.qtr-pr-check.err{color:var(--qtr-danger-text)}.qtr-pr-check.err i{color:var(--qtr-danger-text)}
.qtr-pr-check.warn i{color:var(--qtr-warning-text)}
/* simulator */
.qtr-pr-simwrap{border:1px solid var(--hairline);border-radius:var(--radius-control);background:repeating-conic-gradient(var(--surface-2) 0 25%,transparent 0 50%) 0 0/16px 16px,var(--surface-1,var(--surface-2));padding:20px;display:flex;flex-direction:column;align-items:center;gap:10px;overflow:auto}
.qtr-pr-sim{transform-origin:top center}
.qtr-pr-paper{background:#fff;box-shadow:0 6px 30px color-mix(in srgb,var(--qt-ink) 18%,transparent)}
.qtr-pr-guide{position:absolute;pointer-events:none;display:none;z-index:5}
.qtr-pr-sim.show-margin .qtr-pr-guide.margin{display:block;border:1px dashed color-mix(in srgb,#2E5FE8 60%,transparent)}
.qtr-pr-sim.show-safe .qtr-pr-guide.safe{display:block;border:1px dashed color-mix(in srgb,var(--qtr-success) 70%,transparent)}
.qtr-pr-sim.show-bleed .qtr-pr-guide.bleed{display:block;border:1px dashed color-mix(in srgb,var(--qtr-danger) 60%,transparent)}
@media (max-width:1000px){.qtr-pr-shell{grid-template-columns:1fr}.qtr-pr-side{position:static}}
@media print{.qtr-pr-side,.qtr-pr-actions,.qtr-pr-guides,.qtr-dt-rulerinfo{display:none!important}}

/* ══ 13Q-TR. QRP 04 — Digital Trust, QR, Barcode, Verification & Authentication ═══════ */
.qtr-tr-portal .qtr-ts-card-head h3 i{width:17px;height:17px;vertical-align:-3px;margin-inline-end:4px}
.qtr-tr-verifybar{display:flex;gap:8px;margin:6px 0 12px;flex-wrap:wrap}
.qtr-tr-verifybar input{flex:1;min-width:220px;padding:9px 12px;border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--surface-2);color:var(--text-primary);font-size:13.5px}
.qtr-tr-card{border:1px solid var(--hairline);border-radius:var(--radius-card);overflow:hidden;max-width:460px;margin-top:6px}
.qtr-tr-card-badge{display:flex;align-items:center;gap:11px;padding:14px 16px;color:#fff}
.qtr-tr-card-badge i{width:26px;height:26px}
.qtr-tr-card-badge b{font-size:15px;display:block}.qtr-tr-card-badge .mono{font-size:11.5px;opacity:.9}
.qtr-tr-card.ok .qtr-tr-card-badge{background:var(--qtr-success)}
.qtr-tr-card.bad .qtr-tr-card-badge{background:var(--qtr-danger)}
.qtr-tr-card.warn .qtr-tr-card-badge{background:var(--qtr-warning)}
.qtr-tr-card.notfound{display:flex;align-items:center;gap:11px;padding:14px 16px;background:color-mix(in srgb,var(--qtr-danger) 8%,transparent);max-width:460px}
.qtr-tr-card.notfound i{width:24px;height:24px;color:var(--qtr-danger-text)}
.qtr-tr-card.notfound b{display:block}.qtr-tr-card.notfound span{font-size:12px;color:var(--text-muted)}
.qtr-tr-card-body{padding:12px 16px;background:var(--shell-surface)}
.qtr-tr-vrow{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:13px;padding:5px 0;border-bottom:1px dashed var(--hairline)}
.qtr-tr-vrow:last-child{border-bottom:0}.qtr-tr-vrow span{color:var(--text-muted)}.qtr-tr-vrow b{color:var(--text-primary);text-align:end}
.qtr-tr-card-foot{padding:9px 16px;font-size:11px;color:var(--text-muted);background:var(--surface-2);border-top:1px solid var(--hairline)}
.qtr-tr-cats{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.qtr-tr-cat h4{margin:0 0 7px;font-size:12.5px;color:var(--text-secondary)}
.qtr-tr-catchips{display:flex;gap:5px;flex-wrap:wrap}
.qtr-tr-qrcard{text-align:center}
.qtr-tr-qrbox{display:flex;align-items:center;justify-content:center;min-height:160px;background:#fff;border:1px solid var(--hairline);border-radius:10px;padding:10px;margin:6px 0}
.qtr-tr-qrbox img{width:150px;height:150px;image-rendering:pixelated}
.qtr-tr-barcode{font-size:12.5px;color:var(--text-secondary);margin-top:8px;padding-top:8px;border-top:1px dashed var(--hairline)}
.qtr-ts-loading.sm{padding:14px}
.qtr-btn.ghost.danger{color:var(--qtr-danger-text)}

/* ══ 13Q-CMP. QRP 05 — Enterprise Document Components Engine ══════════════════════════ */
/* center chrome */
.qtr-cmp-gov .qtr-ts-card-head h3 i{width:17px;height:17px;vertical-align:-3px;margin-inline-end:4px}
.qtr-cmp-themebar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px dashed var(--hairline)}
.qtr-cmp-themebar label{font-size:12.5px;color:var(--text-secondary);font-weight:600}
.qtr-cmp-themebar select{padding:6px 10px;border:1px solid var(--hairline);border-radius:var(--radius-control);background:var(--surface-2);color:var(--text-primary);font-size:13px}
.qtr-ts-note.sm{font-size:11.5px;margin:0}
.qtr-cmp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-top:6px}
.qtr-cmp-card{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--shell-surface)}
.qtr-cmp-card-ic{width:34px;height:34px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;border-radius:9px;background:color-mix(in srgb,var(--brand-primary,#2E5FE8) 10%,transparent);color:var(--brand-primary,#2E5FE8)}
.qtr-cmp-card-ic i{width:17px;height:17px}
.qtr-cmp-card-b{flex:1;min-width:0}.qtr-cmp-card-b b{display:block;font-size:13px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-cmp-card-b span{font-size:11px;color:var(--text-muted)}
.qtr-cmp-card .qtr-chip.sm i{width:12px;height:12px}
.qtr-cmp-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-top:6px}
.qtr-cmp-demo{margin:0;border:1px solid var(--hairline);border-radius:var(--radius-card);overflow:hidden;background:var(--shell-surface)}
.qtr-cmp-demo figcaption{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;background:var(--surface-2);border-bottom:1px solid var(--hairline);font-size:12.5px;color:var(--text-primary)}
.qtr-cmp-play-picks,.qtr-cmp-play-body{margin-top:8px}
.qtr-cmp-play-picks{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:10px}
/* preview sandbox — the engine output renders inside these on a paper-like surface */
.qtr-cmp-stage{background:#fff;color:var(--qt-ink);border-radius:10px;padding:14px;min-height:120px;overflow-x:auto;font-size:12.5px;line-height:1.5;direction:ltr}
.qtr-cmp-stage.lg{min-height:200px;padding:20px}
.qtr-cmp-stage :is(h4){margin:0 0 6px;font-size:13px;color:var(--qt-ink)}
/* engine component styles (qrp-cmp-*) — scoped to the paper surface */
.qtr-cmp-stage .qrp-cmp-text{margin:0 0 4px}
.qtr-cmp-stage .qrp-cmp-text.paragraph,.qtr-cmp-stage .qrp-cmp-text.rich_text{color:color-mix(in srgb,var(--qt-neutral-700) 50%,transparent);color:var(--qt-neutral-700)}
.qtr-cmp-stage .qrp-cmp-code{white-space:pre-wrap;font-family:ui-monospace,monospace;font-size:11px;background:var(--qt-neutral-100);border-radius:6px;padding:8px;margin:0;color:var(--qt-ink)}
.qtr-cmp-stage .qrp-cmp-hr{border:0;border-top:1px solid var(--qt-neutral-300);margin:8px 0}
.qtr-cmp-stage .qrp-cmp-rect{width:100%;height:34px;border:1.5px solid var(--qt-neutral-400);border-radius:4px}
.qtr-cmp-stage .qrp-cmp-circle{width:40px;height:40px;border:1.5px solid var(--qt-neutral-400);border-radius:50%}
.qtr-cmp-stage .qrp-cmp-badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:700}
.qtr-cmp-stage .qrp-cmp-icon{font-size:16px}
.qtr-cmp-stage .qrp-cmp-empty{color:var(--qt-neutral-400);font-style:italic;padding:6px 0}
.qtr-cmp-stage .qrp-cmp-imgph,.qtr-cmp-stage .qrp-cmp-sign,.qtr-cmp-stage .qrp-cmp-att,.qtr-cmp-stage .qrp-cmp-prov{display:flex;align-items:center;justify-content:center;min-height:56px;border:1px dashed var(--qt-neutral-400);border-radius:8px;color:var(--qt-neutral-500);font-size:11.5px;background:var(--qt-neutral-100)}
.qtr-cmp-stage .qrp-cmp-sign{min-height:44px;border-style:solid;border-bottom:2px solid var(--qt-neutral-700);border-top:0;border-inline:0;border-radius:0;align-items:flex-end;justify-content:flex-start;padding-bottom:2px}
.qtr-cmp-stage .qrp-cmp-gallery{display:flex;gap:6px}.qtr-cmp-stage .qrp-cmp-gallery span{flex:1;height:40px;background:var(--qt-neutral-200);border-radius:6px}
.qtr-cmp-stage .qrp-cmp-link{color:#2E5FE8;text-decoration:underline}
.qtr-cmp-stage .qrp-cmp-sec{border:1px solid var(--qt-neutral-200);border-radius:8px;padding:8px 10px;margin-bottom:6px}
.qtr-cmp-stage .qrp-cmp-sec h4{margin:0 0 3px;font-size:12.5px}
/* tables */
.qtr-cmp-stage .qrp-cmp-table{width:100%;border-collapse:collapse;font-size:11.5px}
.qtr-cmp-stage .qrp-cmp-table th,.qtr-cmp-stage .qrp-cmp-table td{padding:4px 8px;border-bottom:1px solid var(--qt-neutral-200);text-align:start}
.qtr-cmp-stage .qrp-cmp-table th{background:var(--qt-neutral-100);font-weight:700;color:var(--qt-ink)}
.qtr-cmp-stage .qrp-cmp-table td.num,.qtr-cmp-stage .qrp-cmp-table th.num{text-align:end;font-variant-numeric:tabular-nums}
.qtr-cmp-stage .qrp-cmp-ghdr td{background:var(--qtr-info-soft);font-weight:700;color:var(--accent)}
.qtr-cmp-stage .qrp-cmp-sub td{background:var(--qt-neutral-100);border-top:1px solid var(--qt-neutral-300)}
.qtr-cmp-stage .qrp-cmp-grand td{background:var(--qt-ink);color:#fff;font-weight:700}
.qtr-cmp-stage .qrp-cmp-pivot th{background:var(--qt-neutral-100)}
/* charts */
.qtr-cmp-stage .qrp-cmp-svg{max-width:100%;height:auto;display:block}
.qtr-cmp-stage .qrp-cmp-chart{max-width:340px}
.qtr-cmp-stage .qrp-cmp-pie{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.qtr-cmp-stage .qrp-cmp-pie .qrp-cmp-svg{width:150px;flex:0 0 auto}
.qtr-cmp-stage .qrp-cmp-legs{display:flex;flex-direction:column;gap:3px}
.qtr-cmp-stage .qrp-cmp-leg{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--qt-neutral-700)}
.qtr-cmp-stage .qrp-cmp-leg span{width:10px;height:10px;border-radius:2px;flex:0 0 auto}
/* KPI + gauges */
.qtr-cmp-stage .qrp-cmp-kpi{display:inline-block;min-width:150px;border:1px solid var(--qt-neutral-200);border-radius:10px;padding:10px 14px;background:var(--qt-neutral-100)}
.qtr-cmp-stage .qrp-cmp-kpi-l{font-size:11px;color:var(--qt-neutral-500)}
.qtr-cmp-stage .qrp-cmp-kpi-v{font-size:22px;font-weight:800;color:var(--qt-ink);line-height:1.2}
.qtr-cmp-stage .qrp-cmp-kpi-v span{font-size:12px;font-weight:600;color:var(--qt-neutral-500)}
.qtr-cmp-stage .qrp-cmp-kpi-d{font-size:11.5px;font-weight:700;margin-top:2px}
.qtr-cmp-stage .qrp-cmp-kpi-d.up{color:var(--qtr-success-text)}.qtr-cmp-stage .qrp-cmp-kpi-d.down{color:var(--qtr-danger-text)}
.qtr-cmp-stage .qrp-cmp-kpi-s{font-size:11px;margin-top:3px;color:var(--qt-neutral-700)}
.qtr-cmp-stage .qrp-cmp-gauge{text-align:center;max-width:150px}
.qtr-cmp-stage .qrp-cmp-gauge-l{font-size:11.5px;color:var(--qt-neutral-700);margin-top:2px}
.qtr-cmp-stage .qrp-cmp-linear{max-width:260px}
.qtr-cmp-stage .qrp-cmp-linear-l{font-size:11.5px;color:var(--qt-neutral-700);margin-bottom:4px}
.qtr-cmp-stage .qrp-cmp-linear-t{height:9px;background:var(--qt-neutral-200);border-radius:999px;overflow:hidden}
.qtr-cmp-stage .qrp-cmp-linear-t span{display:block;height:100%;border-radius:999px}
/* timeline + calendar */
.qtr-cmp-stage .qrp-cmp-tl{list-style:none;margin:0;padding:0}
.qtr-cmp-stage .qrp-cmp-tl-item{display:flex;gap:9px;padding:0 0 10px;position:relative}
.qtr-cmp-stage .qrp-cmp-tl-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto;margin-top:3px}
.qtr-cmp-stage .qrp-cmp-tl-item b{font-size:12px;color:var(--qt-ink);display:block}
.qtr-cmp-stage .qrp-cmp-tl-item small{font-size:10.5px;color:var(--qt-neutral-400)}
.qtr-cmp-stage .qrp-cmp-agenda{list-style:none;margin:0;padding:0;font-size:12px}.qtr-cmp-stage .qrp-cmp-agenda li{padding:3px 0;border-bottom:1px dashed var(--qt-neutral-200)}
.qtr-cmp-stage .qrp-cmp-cal-h{font-weight:700;margin-bottom:6px;color:var(--qt-ink)}
.qtr-cmp-stage .qrp-cmp-cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.qtr-cmp-stage .qrp-cmp-cal-d,.qtr-cmp-stage .qrp-cmp-cal-e{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:10.5px;border-radius:5px;background:var(--qt-neutral-100);color:var(--qt-neutral-700)}
.qtr-cmp-stage .qrp-cmp-cal-e{background:transparent}
.qtr-cmp-stage .qrp-cmp-cal-d.ev{background:#2E5FE8;color:#fff;font-weight:700}
@media (max-width:640px){.qtr-cmp-gallery{grid-template-columns:1fr}.qtr-cmp-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}
/* ── QRP 05 advanced: conditional formatting (data bar + threshold icon) + interactive report ── */
.qtr-cmp-stage .qrp-cmp-bar{display:inline-block;vertical-align:middle;width:44px;height:7px;border-radius:999px;background:var(--qt-neutral-200);overflow:hidden;margin-inline-end:6px}
.qtr-cmp-stage .qrp-cmp-bar>span{display:block;height:100%;border-radius:999px}
.qtr-cmp-stage .qrp-cmp-cf-ic{font-size:10px;font-weight:700}
.qtr-cmp-stage .qrp-cmp-table th[data-sort]{position:relative}
.qtr-cmp-stage .qrp-cmp-table th[data-sort="asc"]::after{content:"▲";font-size:7px;margin-inline-start:4px}
.qtr-cmp-stage .qrp-cmp-table th[data-sort="desc"]::after{content:"▼";font-size:7px;margin-inline-start:4px}
.qtr-cmp-stage .qrp-cmp-ghdr{user-select:none}
.qtr-cmp-stage .qrp-cmp-ghdr.collapsed td::before{content:"▸ ";font-size:9px}
.qtr-cmp-stage .qrp-cmp-ghdr:not(.collapsed) td::before{content:"▾ ";font-size:9px}
.qtr-cmp-itoolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:9px;border-bottom:1px solid var(--hairline)}
.qtr-cmp-isearch{display:flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid var(--hairline);border-radius:8px;background:var(--surface-2)}
.qtr-cmp-isearch i{width:13px;height:13px;color:var(--text-muted)}
.qtr-cmp-isearch input{border:0;background:transparent;color:var(--text-primary);font-size:12.5px;outline:none;min-width:130px}
.qtr-cmp-icols{position:relative}
.qtr-cmp-icolmenu{position:absolute;z-index:5;inset-inline-start:0;top:calc(100% + 4px);background:var(--shell-surface);border:1px solid var(--hairline);border-radius:9px;padding:8px;box-shadow:0 10px 28px -14px color-mix(in srgb,var(--qt-ink) 50%,transparent);display:flex;flex-direction:column;gap:5px;min-width:150px}
.qtr-cmp-icol{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-secondary);cursor:pointer;white-space:nowrap}
.qtr-cmp-ihint{margin-inline-start:auto;display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--text-muted)}
.qtr-cmp-ihint i{width:12px;height:12px}
@media print{.qtr-cmp-itoolbar{display:none!important}.qtr-cmp-stage .qrp-cmp-ghdr td::before{content:""!important}}

/* ── QRP 06 · Scheduling Command Center (design-system v2.7.38) ────────────────────────────── */
.qtr-sd{display:flex;flex-direction:column;gap:14px}
.qtr-sd-subnav{display:flex;flex-wrap:wrap;gap:6px;border-bottom:1px solid var(--hairline);padding-bottom:10px}
.qtr-sd-subtab{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border:1px solid var(--hairline);border-radius:999px;background:transparent;color:var(--text-secondary);font-size:12.5px;font-weight:600;cursor:pointer;transition:background .15s,color .15s,border-color .15s}
.qtr-sd-subtab:hover{color:var(--text-primary);border-color:var(--border-strong)}
.qtr-sd-subtab.active{background:var(--accent-soft,color-mix(in srgb,var(--accent) 10%,transparent));color:var(--accent);border-color:var(--accent)}
.qtr-sd-subtab i{width:14px;height:14px}
.qtr-sd-delbar{display:flex;flex-wrap:wrap;gap:8px}
.qtr-sd-actions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}
.qtr-sd-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px 16px}
.qtr-sd-fld{display:flex;flex-direction:column;gap:5px;font-size:12.5px;color:var(--text-secondary)}
.qtr-sd-fld>span{font-weight:600}
.qtr-sd-formactions{margin-top:14px;display:flex;gap:8px}
.qtr-sd-check{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--text-primary)}
.qtr-sd-inline{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.qtr-sd-inline .qtr-inp{max-width:260px}
.qtr-sd-nextruns{margin:8px 0 0;padding-inline-start:20px;display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--text-primary)}
.qtr-sd-nextruns li{list-style:decimal}
.qtr-sd-row{cursor:pointer}
.qtr-sd-row:hover{background:var(--row-hover,color-mix(in srgb,var(--qt-ink) 3%,transparent))}
.qtr-sd-resolvebox{margin-top:12px;padding:10px 12px;border:1px dashed var(--hairline);border-radius:8px;font-size:12.5px;color:var(--text-secondary)}
.qtr-sd-resolvebox ul{margin:6px 0 0;padding-inline-start:18px}

/* ── QRP 07 · Governance & Compliance (design-system v2.7.39) ──────────────────────────────── */
.qtr-gv-class{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:11.5px;font-weight:700;color:#fff;background:var(--gv,var(--qt-neutral-500))}
.qtr-gv-classbar{display:flex;flex-wrap:wrap;gap:7px;margin-top:4px}
.qtr-gv-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:12px}
.qtr-gv-facts>div{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--text-secondary)}
.qtr-gv-facts>div b{color:var(--text-primary);font-size:13px}
.qtr-gv-controls{display:flex;flex-direction:column;gap:9px;padding-top:10px;border-top:1px solid var(--hairline)}
.qtr-gv-controls h4{margin:10px 0 4px;font-size:12.5px;color:var(--text-secondary)}
.qtr-gv-list{margin:0;padding-inline-start:18px;display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-secondary)}
.qtr-gv-maskout{margin-top:12px;padding:10px 12px;border:1px dashed var(--hairline);border-radius:8px;font-size:13px}
.qtr-gv-maskout code{font-family:var(--mono,monospace);background:var(--code-bg,color-mix(in srgb,var(--qt-ink) 5%,transparent));padding:2px 6px;border-radius:4px}
.qtr-chip.xs{font-size:10px;padding:1px 6px}
.qtr-btn.danger{color:var(--qtr-danger-text)}

/* ── Shared print portal (QuatronPrint) — one clean print path for every product (design-system v2.7.40) ──
   window.QuatronPrint.region() clones the report/document into .qtr-print-portal and adds html.qtr-printing;
   the whole app chrome is hidden so only the portal prints — no blank first page, no UI, tight pagination. */
.qtr-print-portal{display:none}
@media print{
  html.qtr-printing,html.qtr-printing body{background:#fff!important;margin:0!important;padding:0!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important;color:var(--qt-ink)!important;color-scheme:light}
  html.qtr-printing body>*:not(.qtr-print-portal){display:none!important}
  html.qtr-printing .qtr-print-portal{display:block!important;position:static!important;inset:auto!important;width:auto!important;max-width:none!important;margin:0!important;padding:0!important;background:#fff!important;color:var(--qt-ink)!important;box-shadow:none!important}
  html.qtr-printing .qtr-print-portal [data-act],
  html.qtr-printing .qtr-print-portal [data-print-hide],
  html.qtr-printing .qtr-print-portal .qtr-btn,
  html.qtr-printing .qtr-print-portal button,
  html.qtr-printing .qtr-print-portal input,
  html.qtr-printing .qtr-print-portal select,
  html.qtr-printing .qtr-print-portal textarea,
  html.qtr-printing .qtr-print-portal nav,
  html.qtr-printing .qtr-print-portal .qtr-ts-tabs,
  html.qtr-printing .qtr-print-portal .qtr-ts-actions,
  html.qtr-printing .qtr-print-portal .qtr-sd-subnav,
  html.qtr-printing .qtr-print-portal .qtr-fin-reportbtns,
  html.qtr-printing .qtr-print-portal .qtr-fin-filters,
  html.qtr-printing .qtr-print-portal .qtr-spinner{display:none!important}
  html.qtr-printing .qtr-print-only{display:block!important;margin:0 0 12px;padding-bottom:8px;border-bottom:1.5px solid var(--qt-ink)}
  html.qtr-printing .qtr-print-only h1{font-size:17px;margin:0 0 3px;color:var(--qt-ink);font-weight:700}
  html.qtr-printing .qtr-print-only small{color:var(--qt-neutral-700);font-size:11px}
  html.qtr-printing .qtr-print-portal section,
  html.qtr-printing .qtr-print-portal .qtr-ts-card{box-shadow:none!important;border:0!important;background:#fff!important;margin:0 0 10px!important;padding:0!important;break-inside:auto}
  html.qtr-printing .qtr-print-portal .qtr-ts-card-hd h2,
  html.qtr-printing .qtr-print-portal h2,html.qtr-printing .qtr-print-portal h3{font-size:13px!important;color:var(--qt-ink)!important;margin:0 0 6px!important}
  html.qtr-printing .qtr-print-portal [class*="tablewrap"],
  html.qtr-printing .qtr-print-portal .qtr-fin-tablewrap{overflow:visible!important;border:0!important}
  html.qtr-printing .qtr-print-portal table{width:100%!important;min-width:0!important;border-collapse:collapse!important;font-size:10.5px!important;color:var(--qt-ink)!important}
  html.qtr-printing .qtr-print-portal thead{display:table-header-group}
  html.qtr-printing .qtr-print-portal tr{break-inside:avoid}
  html.qtr-printing .qtr-print-portal th,html.qtr-printing .qtr-print-portal td{border:1px solid var(--qt-neutral-300)!important;padding:3px 6px!important;color:var(--qt-ink)!important;background:#fff!important}
  html.qtr-printing .qtr-print-portal a{color:var(--qt-ink)!important;text-decoration:none!important}
  html.qtr-printing .qtr-print-portal .qtr-chip,html.qtr-printing .qtr-print-portal [class*="chip"]{border:1px solid var(--qt-neutral-400)!important;background:#fff!important;color:var(--qt-ink)!important}
  @page{margin:12mm}
}
/* Finance filter bar */
.qtr-fin-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}
.qtr-fin-filters .qtr-inp,.qtr-fin-filters select{max-width:220px}
.qtr-fin-filters .qtr-fin-count{margin-inline-start:auto;font-size:12px;color:var(--text-secondary)}

/* ── QPX — Quatron Platform Experience: Home Portal (design-system v2.7.41) ──────────
   The Enterprise Portal identity band + section headers + favorite star. The Workspace
   Bar always answers "where am I?": Workspace / Company / Branch / Environment / License
   / Role. Consumes the same tokens as the shell; theme-aware; RTL/LTR safe. */
.qtr-qpx-wsbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:11px 14px;margin:0 0 12px;
  border:1px solid var(--hairline);border-radius:16px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 7%,var(--shell-surface)),var(--shell-surface))}
.qtr-qpx-wsbadge{flex:0 0 auto;inline-size:40px;block-size:40px;border-radius:12px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent-text)}
.qtr-qpx-wsbadge i{inline-size:20px;block-size:20px}
/* flex-basis MUST be 0, not auto. With auto it resolves to the group's full content width (~1310px),
   which cannot fit beside the badge on a narrow viewport, so the bar wrapped the whole group to a
   second row and left the badge stranded alone above it — reading as a duplicate workspace mark
   rather than as the bar's emblem. With basis 0 the group always fits, then grows into the space that
   is left and wraps internally, which is what flex-wrap here was always for. */
.qtr-qpx-wschips{display:flex;align-items:stretch;flex-wrap:wrap;gap:8px;min-width:0;flex:1 1 0}
.qtr-qpx-wschip{display:flex;align-items:center;gap:8px;padding:5px 11px;border:1px solid var(--hairline);
  border-radius:11px;background:var(--shell-surface);min-width:0}
.qtr-qpx-wschip i{flex:0 0 auto;inline-size:15px;block-size:15px;color:var(--text-muted)}
.qtr-qpx-wschip small{color:var(--text-muted);font-size:.6rem;font-weight:650;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}
.qtr-qpx-wschip b{font-size:.8rem;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-inline-size:22ch}
.qtr-qpx-wschip.is-ws{background:color-mix(in srgb,var(--accent) 12%,var(--shell-surface))}
.qtr-qpx-wschip.is-ws i,.qtr-qpx-wschip.is-ws b{color:var(--accent-text)}
.qtr-qpx-wschip.is-role b{color:var(--text-secondary)}
@media (max-width:640px){
  .qtr-qpx-wschip small{display:none}
  .qtr-qpx-wschip{padding:6px 9px}
}
/* Section headers gain a leading glyph in the QPX portal taxonomy. */
.qtr-qpx .qtr-ws-prodsec-h{display:flex;align-items:center;gap:7px}
.qtr-qpx .qtr-ws-prodsec-h i{inline-size:15px;block-size:15px;color:var(--text-muted)}
/* Favorite star on active product cards. */
.qtr-ws-prod{position:relative}
.qtr-ws-prod-fav{position:absolute;inset-block-start:7px;inset-inline-end:8px;inline-size:26px;block-size:26px;
  display:grid;place-items:center;border-radius:8px;color:var(--text-muted);cursor:pointer;opacity:.55;transition:opacity .12s,color .12s,background .12s}
.qtr-ws-prod-fav i{inline-size:15px;block-size:15px}
.qtr-ws-prod:hover .qtr-ws-prod-fav{opacity:1}
.qtr-ws-prod-fav:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-ws-prod-fav.on{opacity:1;color:var(--qtr-warning-text)}
.qtr-ws-prod-fav.on i{fill:var(--qtr-warning)}
@media (prefers-reduced-motion:reduce){.qtr-ws-prod-fav{transition:none}}

/* ── QPX 01 — Home Portal personal experience (design-system v2.7.42) ────────────────
   Favorites (draggable pins), Recent, Quick actions, Announcements.
   (QPX Navigation Polish: the Home search field was removed — one Global Search
   authority lives in the platform header; the `.qtr-qpx-search` rule was retired.) */
/* Favorites pins */
.qtr-qpx-pins{display:flex;flex-direction:column;gap:7px}
.qtr-qpx-pin{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--hairline);border-radius:11px;
  background:var(--shell-surface);cursor:pointer;position:relative}
.qtr-qpx-pin.is-dragging{opacity:.5}
.qtr-qpx-pin[draggable="true"]{cursor:grab}
.qtr-qpx-pin-ic{flex:0 0 auto;inline-size:32px;block-size:32px;border-radius:9px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent-text)}
.qtr-qpx-pin-ic i{inline-size:16px;block-size:16px}
.qtr-qpx-pin-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.qtr-qpx-pin-tx b{font-size:.8rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-inline-size:100%}
.qtr-qpx-pin-tx small{font-size:.62rem;color:var(--text-muted)}
.qtr-qpx-pin-x{margin-inline-start:auto;flex:0 0 auto;inline-size:24px;block-size:24px;display:grid;place-items:center;
  border-radius:7px;color:var(--text-muted);opacity:.5;transition:opacity .12s,background .12s}
.qtr-qpx-pin:hover .qtr-qpx-pin-x{opacity:1}
.qtr-qpx-pin-x:hover{background:color-mix(in srgb,var(--qtr-danger) 12%,transparent);color:var(--qtr-danger-text)}
.qtr-qpx-pin-x i{inline-size:14px;block-size:14px}
/* Recent */
.qtr-qpx-recent{display:flex;flex-direction:column;gap:5px}
.qtr-qpx-recent-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border:1px solid transparent;border-radius:10px;
  background:transparent;cursor:pointer;text-align:start;width:100%}
.qtr-qpx-recent-row:hover{background:color-mix(in srgb,var(--accent) 7%,transparent);border-color:var(--hairline)}
.qtr-qpx-recent-row[disabled]{cursor:default;opacity:.6}
.qtr-qpx-recent-go{margin-inline-start:auto;inline-size:15px;block-size:15px;color:var(--text-muted)}
/* Quick actions */
.qtr-qpx-qa{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.qtr-qpx-qa-btn{display:flex;align-items:center;gap:9px;padding:9px 11px;border:1px solid var(--hairline);border-radius:11px;
  background:var(--shell-surface);cursor:pointer;text-align:start}
.qtr-qpx-qa-btn:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.qtr-qpx-qa-btn b{font-size:.76rem;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Announcements */
.qtr-qpx-ann{display:flex;flex-direction:column;gap:8px}
.qtr-qpx-ann-row{padding:9px 11px;border:1px solid var(--hairline);border-radius:11px;background:var(--shell-surface);
  border-inline-start:3px solid var(--text-muted)}
.qtr-qpx-ann-row[data-tone="danger"]{border-inline-start-color:var(--qtr-danger)}
.qtr-qpx-ann-row[data-tone="warning"]{border-inline-start-color:var(--qtr-warning)}
.qtr-qpx-ann-row[data-tone="accent"]{border-inline-start-color:var(--accent)}
.qtr-qpx-ann-row b{display:block;font-size:.8rem;font-weight:700}
.qtr-qpx-ann-row p{margin:3px 0 0;font-size:.72rem;color:var(--text-secondary)}
.qtr-qpx-ann-row .qtr-ws-pin{inline-size:13px;block-size:13px;color:var(--text-muted);float:inline-end}
@media (prefers-reduced-motion:reduce){.qtr-qpx-pin-x,.qtr-qpx-recent-row{transition:none}}

/* ── QPX 02 — Navigation Engine: breadcrumbs + registry-driven menu (design-system v2.7.43) ──
   window.QuatronNavigation renders these. Theme-aware, RTL/LTR, keyboard-accessible. */
.qtr-nav-crumbs{display:flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:.78rem;min-width:0}
.qtr-nav-crumb{color:var(--text-muted);text-decoration:none;white-space:nowrap;max-inline-size:26ch;overflow:hidden;text-overflow:ellipsis}
.qtr-nav-crumb:hover{color:var(--accent-text)}
.qtr-nav-crumb.is-current{color:var(--text);font-weight:700}
.qtr-nav-crumb-sep{inline-size:13px;block-size:13px;color:var(--text-muted);opacity:.7}
/* Registry-driven menu (sidebar / dock content / any consumer) */
.qtr-nav-menu{display:flex;flex-direction:column;gap:10px}
.qtr-nav-sec-h,.qtr-nav-grp-h{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
  font-size:.64rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);
  background:transparent;border:0;padding:4px 6px;cursor:pointer}
.qtr-nav-sec-h i,.qtr-nav-grp-h i{inline-size:14px;block-size:14px}
.qtr-nav-grp-h{cursor:pointer}
.qtr-nav-grp-chev{transition:transform .15s}
.qtr-nav-grp-items{display:flex;flex-direction:column;gap:2px;overflow:hidden}
.qtr-nav-grp.is-collapsed .qtr-nav-grp-items{display:none}
.qtr-nav-grp.is-collapsed .qtr-nav-grp-chev{transform:rotate(-90deg)}
.qtr-nav-row{display:flex;align-items:center;gap:9px;padding:6px 10px;border-radius:9px;color:var(--text-secondary);
  text-decoration:none;font-size:.8rem;border:1px solid transparent}
.qtr-nav-row:hover{background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--text)}
.qtr-nav-row.is-active{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent-text);font-weight:650;border-color:color-mix(in srgb,var(--accent) 22%,transparent)}
.qtr-nav-row i{flex:0 0 auto;inline-size:15px;block-size:15px}
.qtr-nav-row span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-nav-row:focus-visible,.qtr-nav-crumb:focus-visible,.qtr-nav-grp-h:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.qtr-nav-grp-chev{transition:none}}

/* ── QPX 03 — Dashboard Framework: registry widget sizes + drag/resize (design-system v2.7.45) ──
   The Home widget grid is registry-driven (qpx_dashboard). Widths are a resize span the widget
   registry allows (s/m/l/xl); widgets drag-reorder in customize mode. Role-archetype default
   layout applies until the user personalizes. Theme-aware, RTL/LTR safe, responsive. */
.qtr-ws-widget.size-s{grid-column:span 1}
.qtr-ws-widget.size-m{grid-column:span 1}
.qtr-ws-widget.size-l{grid-column:span 2}
.qtr-ws-widget.size-xl{grid-column:span 3}
.qtr-ws-grid.is-customizing .qtr-ws-widget{border-style:dashed}
.qtr-ws-grid.is-customizing .qtr-ws-widget[draggable="true"]{cursor:grab}
.qtr-ws-widget.is-dragging{opacity:.5;box-shadow:0 10px 28px color-mix(in srgb,var(--qt-ink) 16%,transparent)}
.qtr-ws-grip{color:var(--text-muted);cursor:grab;flex:0 0 auto}
.qtr-ws-grip svg{width:14px;height:14px}
@media (max-width:960px){.qtr-ws-widget.size-l,.qtr-ws-widget.size-xl{grid-column:span 1}}
@media (prefers-reduced-motion:reduce){.qtr-ws-widget.is-dragging{box-shadow:none}}

/* ── QPX 04 — Design System: adaptive density + high-contrast hooks (design-system v2.7.46) ──
   Company brand theming is applied at runtime by window.QuatronDesignSystem (it sets --accent on
   :root; the accent palette re-derives). Density/contrast are governed layout adaptations. */
:root[data-density="compact"] .qtr-ws-grid{gap:11px}
:root[data-density="compact"] .qtr-ws-widget-head{padding:10px 13px 7px}
:root[data-density="compact"] .qtr-ws-widget-body{padding-block:8px}
:root[data-density="spacious"] .qtr-ws-grid{gap:22px}
:root[data-density="spacious"] .qtr-ws-widget-head{padding:16px 19px 12px}
:root[data-contrast="high"]{--hairline:color-mix(in srgb,var(--text-primary) 34%,transparent)}
:root[data-contrast="high"] .qtr-ws-widget,:root[data-contrast="high"] .qtr-qpx-wsbar{border-width:1.5px}

/* ==========================================================================
   QPX 05 — Communication Hub (Notifications · Activity · Inbox · Preferences)
   Tokens-only. Consumes the shipped Notification Center for the inbox tab.
   ========================================================================== */
.qtr-ch{display:flex;flex-direction:column;gap:18px}
.qtr-ch-top{display:flex;align-items:center;justify-content:space-between;gap:16px}
.qtr-ch-title{display:flex;align-items:center;gap:14px}
.qtr-ch-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:13px;background:var(--accent-soft);color:var(--accent);flex:none}
.qtr-ch-mark i{width:22px;height:22px}
.qtr-ch-title h1{font-size:22px;font-weight:800;margin:0;letter-spacing:-.01em}
.qtr-ch-title small{color:var(--text-secondary);font-size:13px}
.qtr-ch-tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--hairline);padding-bottom:2px}
.qtr-ch-tab{display:inline-flex;align-items:center;gap:8px;padding:10px 15px;border:0;background:transparent;color:var(--text-secondary);font-weight:700;font-size:13.5px;cursor:pointer;border-radius:10px 10px 0 0;border-bottom:2.5px solid transparent;margin-bottom:-3px}
.qtr-ch-tab i{width:16px;height:16px}
.qtr-ch-tab:hover{color:var(--text-primary);background:var(--surface-2)}
.qtr-ch-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.qtr-ch-panel{min-height:220px}

/* tiles */
.qtr-ch-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.qtr-ch-tile{display:flex;align-items:center;gap:12px;padding:15px;border:1px solid var(--hairline);border-radius:14px;background:var(--surface-1);cursor:pointer;text-align:start;transition:border-color .15s,transform .15s}
.qtr-ch-tile:hover{border-color:var(--accent-border);transform:translateY(-1px)}
.qtr-ch-tile-ic{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--surface-2);color:var(--text-secondary);flex:none}
.qtr-ch-tile-ic i{width:19px;height:19px}
.qtr-ch-tile b{font-size:24px;font-weight:800;line-height:1}
.qtr-ch-tile small{display:block;color:var(--text-secondary);font-size:12px;margin-top:2px}
.qtr-ch-tile.danger .qtr-ch-tile-ic{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}
.qtr-ch-tile.warn .qtr-ch-tile-ic{background:color-mix(in srgb,var(--warning,var(--qtr-warning)) 16%,transparent);color:var(--warning,var(--qtr-warning))}

.qtr-ch-quiet{display:flex;align-items:center;gap:9px;padding:10px 14px;border-radius:11px;background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid var(--accent-border);color:var(--text-primary);font-size:13px;font-weight:600;margin-bottom:16px}
.qtr-ch-quiet i{width:16px;height:16px;color:var(--accent)}

/* overview grid */
.qtr-ch-ov-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.qtr-ch-card{border:1px solid var(--hairline);border-radius:16px;background:var(--surface-1);padding:16px;display:flex;flex-direction:column;gap:12px}
.qtr-ch-card>header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.qtr-ch-card h3{display:flex;align-items:center;gap:8px;font-size:14.5px;font-weight:800;margin:0}
.qtr-ch-card h3 i{width:17px;height:17px;color:var(--accent)}
.qtr-ch-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px;color:var(--text-tertiary,var(--text-secondary));text-align:center}
.qtr-ch-empty i{width:26px;height:26px;opacity:.6}

.qtr-ch-mini{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.qtr-ch-mini li{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid var(--hairline);cursor:pointer;font-size:13px}
.qtr-ch-mini li:last-child{border-bottom:0}
.qtr-ch-mini li:hover{color:var(--accent)}
.qtr-ch-mini li.unread{font-weight:700}
.qtr-ch-dot{width:8px;height:8px;border-radius:50%;background:var(--text-tertiary);flex:none}
.qtr-ch-dot.level-critical{background:var(--danger)}.qtr-ch-dot.level-high{background:var(--warning,var(--qtr-warning))}
.qtr-ch-dot.level-medium{background:var(--accent)}.qtr-ch-dot.level-low,.qtr-ch-dot.level-info{background:var(--text-tertiary)}
.qtr-ch-mini-t{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-ch-mini-w{color:var(--text-tertiary,var(--text-secondary));font-size:11.5px;flex:none}

.qtr-ch-anns{display:flex;flex-direction:column;gap:10px}
.qtr-ch-ann{display:flex;gap:10px;padding:11px;border-radius:11px;background:var(--surface-2);border:1px solid var(--hairline)}
.qtr-ch-ann i{width:17px;height:17px;color:var(--accent);flex:none;margin-top:2px}
.qtr-ch-ann.admin i,.qtr-ch-ann.security i,.qtr-ch-ann.compliance i{color:var(--danger)}
.qtr-ch-ann b{font-size:13px;font-weight:700}
.qtr-ch-ann p{font-size:12.5px;color:var(--text-secondary);margin:3px 0 0;line-height:1.5}
.qtr-ch-quote{margin:0;padding:12px;border-radius:11px;border-inline-start:3px solid var(--accent);background:var(--surface-2)}
.qtr-ch-quote i{width:16px;height:16px;color:var(--accent)}
.qtr-ch-quote p{font-size:13px;font-style:italic;margin:5px 0}
.qtr-ch-quote cite{font-size:12px;color:var(--text-secondary)}

/* activity */
.qtr-ch-actbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.qtr-ch-actbar .qtr-nc-search{flex:1;min-width:180px}
.qtr-ch-scope{display:inline-flex;border:1px solid var(--hairline);border-radius:10px;overflow:hidden}
.qtr-ch-scope button{border:0;background:transparent;padding:8px 14px;font-size:13px;font-weight:700;color:var(--text-secondary);cursor:pointer}
.qtr-ch-scope button.active{background:var(--accent);color:#fff}
.qtr-ch-facets{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}
.qtr-ch-facet{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border:1px solid var(--hairline);border-radius:999px;background:var(--surface-1);color:var(--text-secondary);font-size:12.5px;font-weight:700;cursor:pointer}
.qtr-ch-facet i{width:14px;height:14px}
.qtr-ch-facet em{font-style:normal;opacity:.65}
.qtr-ch-facet:hover{border-color:var(--accent-border);color:var(--text-primary)}
.qtr-ch-facet.active{background:var(--accent-soft);border-color:var(--accent-border);color:var(--accent)}
.qtr-ch-bucket{margin-bottom:18px}
.qtr-ch-bucket h4{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary,var(--text-secondary));margin:0 0 8px}
.qtr-ch-acts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.qtr-ch-act{display:flex;align-items:center;gap:11px;padding:9px 6px;border-radius:9px}
.qtr-ch-act:hover{background:var(--surface-2)}
.qtr-ch-act-ic{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--surface-2);color:var(--text-secondary);flex:none}
.qtr-ch-act-ic i{width:15px;height:15px}
.qtr-ch-act-ic.type-approved{color:var(--success,var(--qtr-success))}.qtr-ch-act-ic.type-rejected,.qtr-ch-act-ic.type-deleted{color:var(--danger)}
.qtr-ch-act-ic.type-created{color:var(--accent)}.qtr-ch-act-ic.type-verified,.qtr-ch-act-ic.type-signed{color:var(--success,var(--qtr-success))}
.qtr-ch-act-b{flex:1;min-width:0}
.qtr-ch-act-b b{font-size:13px;font-weight:700;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-ch-act-b small{font-size:11.5px;color:var(--text-tertiary,var(--text-secondary));display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-ch-act-w{font-size:11.5px;color:var(--text-tertiary,var(--text-secondary));flex:none}
.qtr-ch-more{text-align:center;margin-top:14px}

/* preferences */
.qtr-ch-prefs{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;align-items:start}
.qtr-ch-hint{font-size:12.5px;color:var(--text-secondary);margin:0}
.qtr-ch-toggles{display:flex;flex-direction:column;gap:2px}
.qtr-ch-toggles.cols{display:grid;grid-template-columns:1fr 1fr;gap:2px 14px}
.qtr-ch-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 6px;border-radius:9px;cursor:pointer;font-size:13px}
.qtr-ch-toggle:hover{background:var(--surface-2)}
.qtr-ch-toggle.is-disabled{opacity:.6;cursor:default}
.qtr-ch-toggle-l{display:inline-flex;align-items:center;gap:8px;font-weight:600}
.qtr-ch-toggle-l i{width:15px;height:15px;color:var(--text-secondary)}
.qtr-ch-soon{font-style:normal;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);background:var(--surface-2);padding:1px 6px;border-radius:6px;margin-inline-start:6px}
.qtr-ch-row{display:flex;align-items:center;gap:12px}
.qtr-ch-badge{font-size:11px;font-weight:800;color:var(--accent);background:var(--accent-soft);padding:2px 9px;border-radius:999px}
.qtr-ch-times{display:flex;gap:14px;flex-wrap:wrap}
.qtr-ch-times label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}
.qtr-ch-times input{padding:7px 10px;border:1px solid var(--hairline);border-radius:9px;background:var(--surface-1);color:var(--text-primary);font-family:inherit}
.qtr-ch-selects{display:flex;flex-direction:column;gap:11px}
.qtr-ch-select{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px;font-weight:600}
.qtr-ch-select select{padding:8px 11px;border:1px solid var(--hairline);border-radius:9px;background:var(--surface-1);color:var(--text-primary);font-family:inherit;min-width:150px}

/* switch */
.qtr-switch{position:relative;flex:none}
.qtr-switch input{position:absolute;opacity:0;width:0;height:0}
.qtr-switch-t{display:block;width:38px;height:22px;border-radius:999px;background:var(--surface-3,var(--hairline));transition:background .15s;position:relative}
.qtr-switch-t::after{content:"";position:absolute;top:2px;inset-inline-start:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px color-mix(in srgb,var(--qt-ink) 20%,transparent);transition:transform .15s}
.qtr-switch input:checked+.qtr-switch-t{background:var(--accent)}
.qtr-switch input:checked+.qtr-switch-t::after{transform:translateX(16px)}
[dir="rtl"] .qtr-switch input:checked+.qtr-switch-t::after{transform:translateX(-16px)}
.qtr-switch input:disabled+.qtr-switch-t{opacity:.5}

/* ==========================================================================
   QPX 06 — Universal Object Experience (Object 360)
   One object shell for every product. Tokens-only. Delegates detail to *_360.
   ========================================================================== */
.qtr-o{display:flex;flex-direction:column;gap:16px}
.qtr-o-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding:18px;border:1px solid var(--hairline);border-radius:16px;background:var(--surface-1)}
.qtr-o-head-l{display:flex;align-items:center;gap:14px;min-width:0}
.qtr-o-avatar{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:var(--accent-soft);color:var(--accent);flex:none}
.qtr-o-avatar i{width:26px;height:26px}
.qtr-o-crumb{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--text-tertiary,var(--text-secondary))}
.qtr-o-head h1{font-size:22px;font-weight:800;margin:2px 0;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-o-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.qtr-o-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-secondary);background:var(--surface-2);padding:2px 9px;border-radius:999px}
.qtr-o-chip i{width:12px;height:12px}
.qtr-o-status{font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--accent);background:var(--accent-soft);padding:3px 10px;border-radius:999px}
.qtr-o-actions{display:flex;gap:6px;flex-wrap:wrap}
.qtr-o-act{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border:1px solid var(--hairline);border-radius:10px;background:var(--surface-1);color:var(--text-primary);font-size:12.5px;font-weight:700;cursor:pointer}
.qtr-o-act i{width:15px;height:15px}
.qtr-o-act:hover{border-color:var(--accent-border);color:var(--accent)}
@media(max-width:640px){.qtr-o-act span{display:none}}

.qtr-o-tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--hairline)}
.qtr-o-tab{display:inline-flex;align-items:center;gap:7px;padding:10px 14px;border:0;background:transparent;color:var(--text-secondary);font-weight:700;font-size:13px;cursor:pointer;border-bottom:2.5px solid transparent;margin-bottom:-1px}
.qtr-o-tab i{width:15px;height:15px}
.qtr-o-tab em{font-style:normal;font-size:10.5px;font-weight:800;background:var(--surface-2);color:var(--text-secondary);padding:1px 6px;border-radius:999px}
.qtr-o-tab:hover{color:var(--text-primary)}
.qtr-o-tab.active{color:var(--accent);border-bottom-color:var(--accent)}
.qtr-o-tab.active em{background:var(--accent-soft);color:var(--accent)}
.qtr-o-body{min-height:200px}

.qtr-o-card{border:1px solid var(--hairline);border-radius:14px;background:var(--surface-1);padding:16px;margin-bottom:14px}
.qtr-o-card h3{font-size:13.5px;font-weight:800;margin:0 0 12px;text-transform:capitalize}
.qtr-o-card h3 em{font-style:normal;color:var(--text-tertiary,var(--text-secondary));font-weight:600}
.qtr-o-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px 20px}
.qtr-o-field dt{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-tertiary,var(--text-secondary));margin:0 0 2px}
.qtr-o-field dd{font-size:13.5px;margin:0;word-break:break-word}
.qtr-o-subrow{padding:10px 0;border-bottom:1px solid var(--hairline)}
.qtr-o-subrow:last-child{border-bottom:0}
.qtr-o-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-bottom:14px}
.qtr-o-kpi{padding:14px;border:1px solid var(--hairline);border-radius:13px;background:var(--surface-1)}
.qtr-o-kpi b{font-size:22px;font-weight:800;display:block}
.qtr-o-kpi small{font-size:12px;color:var(--text-secondary)}

.qtr-o-empty{display:flex;flex-direction:column;align-items:center;gap:9px;padding:40px 20px;color:var(--text-tertiary,var(--text-secondary));text-align:center}
.qtr-o-empty i{width:30px;height:30px;opacity:.55}

/* timeline */
.qtr-o-timeline{list-style:none;margin:0;padding:0}
.qtr-o-tl-bucket{margin-bottom:18px}
.qtr-o-tl-bucket>h4{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary,var(--text-secondary));margin:0 0 8px}
.qtr-o-tl-bucket>ul{list-style:none;margin:0;padding:0;position:relative}
.qtr-o-tl{display:flex;align-items:flex-start;gap:12px;padding:8px 4px}
.qtr-o-tl-dot{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--surface-2);color:var(--text-secondary);flex:none}
.qtr-o-tl-dot i{width:14px;height:14px}
.qtr-o-tl-dot.type-approved,.qtr-o-tl-dot.type-verified,.qtr-o-tl-dot.type-signed{color:var(--success,var(--qtr-success))}
.qtr-o-tl-dot.type-rejected,.qtr-o-tl-dot.type-deleted{color:var(--danger)}
.qtr-o-tl-dot.type-created{color:var(--accent)}
.qtr-o-tl>div{flex:1;min-width:0}
.qtr-o-tl b{font-size:13px;font-weight:700;display:block}
.qtr-o-tl small{font-size:11.5px;color:var(--text-tertiary,var(--text-secondary));display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-o-tl-w{font-size:11px;color:var(--text-tertiary,var(--text-secondary));flex:none}

/* documents */
.qtr-o-docs{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.qtr-o-doc{display:flex;align-items:center;gap:11px;padding:12px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface-1);cursor:pointer;text-align:start}
.qtr-o-doc:hover{border-color:var(--accent-border)}
.qtr-o-doc-ic{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--surface-2);color:var(--text-secondary);flex:none}
.qtr-o-doc-ic i{width:16px;height:16px}
.qtr-o-doc b{font-size:13px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-o-doc small{font-size:11.5px;color:var(--text-secondary)}
.qtr-o-badge{font-size:10.5px;font-weight:800;color:var(--accent);background:var(--accent-soft);padding:2px 8px;border-radius:999px;flex:none}

/* notes */
.qtr-o-noteform{display:flex;gap:10px;align-items:flex-start;margin-bottom:16px}
.qtr-o-noteform textarea{flex:1;padding:10px 12px;border:1px solid var(--hairline);border-radius:11px;background:var(--surface-1);color:var(--text-primary);font-family:inherit;font-size:13px;resize:vertical}
.qtr-o-notelist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.qtr-o-note{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface-1)}
.qtr-o-note-b{flex:1;min-width:0}
.qtr-o-note-b p{font-size:13.5px;margin:0 0 4px;white-space:pre-wrap;word-break:break-word}
.qtr-o-note-b small{font-size:11.5px;color:var(--text-tertiary,var(--text-secondary))}
.qtr-o-note-del{border:0;background:transparent;color:var(--text-tertiary,var(--text-secondary));cursor:pointer;padding:4px;border-radius:8px}
.qtr-o-note-del:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}
.qtr-o-note-del i{width:15px;height:15px}

/* relationships */
.qtr-o-rels{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
.qtr-o-rel{display:flex;align-items:center;gap:11px;padding:12px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface-1)}
.qtr-o-rel-ic{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--surface-2);color:var(--accent);flex:none}
.qtr-o-rel-ic i{width:16px;height:16px}
.qtr-o-rel>div{flex:1;min-width:0}
.qtr-o-rel b{font-size:13px;display:block}
.qtr-o-rel small{font-size:11.5px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}

/* ─ Platform Experience — 4-area Product Catalog (staged adoption; new scoped classes,
   no overrides). Layout + whitespace only; brand tokens reused, no visual redesign. ─ */
.qtr-exp-empty{padding:24px;color:var(--text-secondary);text-align:center;font-size:13px}
.qtr-exp-cat{margin:0 0 18px}
.qtr-exp-cat-head{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:10px 4px;background:none;border:none;cursor:pointer;font:inherit;color:var(--text-primary);font-weight:800;font-size:14px}
.qtr-exp-cat-head:hover{color:var(--accent)}
.qtr-exp-cat-count{font-size:11px;font-weight:700;color:var(--text-secondary);background:var(--surface-2);border-radius:999px;padding:1px 9px}
.qtr-exp-cat-body{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;padding:6px 2px 2px}
.qtr-exp-cat[data-collapsed] .qtr-exp-cat-body{display:none}
.qtr-exp-cat[data-collapsed] .qtr-exp-cat-head{opacity:.85}
.qtr-exp-card{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:var(--surface-1);cursor:pointer;text-align:start;font:inherit;color:var(--text-primary);transition:border-color .15s,transform .15s,box-shadow .15s}
.qtr-exp-card:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 6px 20px color-mix(in srgb,var(--qt-ink) 6%,transparent)}
.qtr-exp-card[disabled]{opacity:.5;cursor:not-allowed}
.qtr-exp-card-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--surface-2);color:var(--accent);flex:none}
.qtr-exp-card-icon i{width:18px;height:18px}
.qtr-exp-card-name{flex:1;min-width:0;font-weight:700;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qtr-exp-card-status{font-size:10.5px;font-weight:700;padding:1px 8px;border-radius:999px;background:var(--surface-2);color:var(--text-secondary)}
.qtr-exp-card-status.qtr-tone-info{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
.qtr-exp-card-badge{font-size:10px;font-weight:700;padding:1px 7px;border-radius:999px;background:var(--surface-2);color:var(--text-secondary)}

/* ─ Home Layout Engine — Responsive Masonry Grid (geometry/motion only; no colour or
   typography change). The engine positions widgets absolutely via inline styles; these
   rules just neutralise the legacy CSS grid, smooth the auto-pack, and provide drag
   affordances. ─ */
.qtr-ws-grid.qtr-ws-masonry{display:block;position:relative;grid-template-columns:none}
.qtr-ws-grid.qtr-ws-masonry>.qtr-ws-widget{position:absolute;margin:0;box-sizing:border-box;transition:top .18s ease,left .18s ease,right .18s ease,width .18s ease}
.qtr-ws-grid.qtr-ws-masonry.is-customizing>.qtr-ws-widget{cursor:grab}
.qtr-ws-grid.qtr-ws-masonry>.qtr-ws-widget.is-dragging{opacity:.9;z-index:6;cursor:grabbing;transition:none;box-shadow:0 10px 30px color-mix(in srgb,var(--qt-ink) 14%,transparent)}
.qtr-ws-grid.qtr-ws-masonry .qtr-ws-grip{cursor:grab}
@media (prefers-reduced-motion: reduce){ .qtr-ws-grid.qtr-ws-masonry>.qtr-ws-widget{transition:none} }

/* --- HCM · Payroll (P07.0 Foundation) — minimal helpers; reuses qtr-ts-* + tokens --------------- */
.qtr-hcm-pay{display:flex;flex-direction:column;gap:var(--qtr-space-4)}
.qtr-hcm-kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--qtr-space-3)}
.qtr-hcm-kpi{display:flex;align-items:center;gap:10px;padding:14px 16px;border:1px solid var(--hairline);border-radius:var(--radius-card);background:var(--surface)}
.qtr-hcm-kpi i{opacity:.7}
.qtr-hcm-kpi strong{display:block;font-size:var(--aq-font-size-lg,20px);font-weight:820;line-height:1.1}
.qtr-hcm-kpi small{color:var(--text-muted)}
.qtr-hcm-note2{color:var(--text-muted);font-size:var(--aq-font-size-sm,14px);padding:6px 2px}
.qtr-ts-tablewrap{overflow-x:auto;border:1px solid var(--hairline);border-radius:var(--radius-card)}
.qtr-ts-table{width:100%;border-collapse:collapse;font-size:var(--aq-font-size-sm,14px)}
.qtr-ts-table th,.qtr-ts-table td{text-align:start;padding:10px 14px;border-block-end:1px solid var(--hairline)}
.qtr-ts-table thead th{color:var(--text-muted);font-weight:700;background:var(--surface-secondary)}
.qtr-ts-table tbody tr:last-child td{border-block-end:0}

/* ── Payroll data entry (P07.12) ─────────────────────────────────────────────────────────────
   Accessible form/dialog/table primitives used by the Payroll data-entry surfaces. */
.qtr-hcm-pay,.qtr-ts-body{min-width:0}
.qtr-ts-tablewrap{max-width:100%}
.qtr-ts-table caption{caption-side:top;text-align:start;font-weight:750;font-size:.85rem;padding:10px 12px;color:var(--shell-muted)}
.qtr-form-row label{font-weight:750;font-size:.85rem}
.qtr-form-row textarea{min-height:76px;border:1px solid var(--hairline);border-radius:var(--radius-control);padding:10px 12px;background:var(--surface);color:inherit;font:inherit;width:100%}
.qtr-form-row textarea:focus{border-color:var(--accent-border);box-shadow:var(--ring);outline:0}
.qtr-form-row input[type=checkbox]{min-height:0;width:18px;height:18px;justify-self:start}
.qtr-form-hint{color:var(--shell-muted);font-size:.78rem}
.qtr-form-err{color:var(--danger,var(--qtr-danger));font-size:.78rem;min-height:0}
.qtr-form-err:empty{display:none}
.qtr-form-row [aria-invalid=true]{border-color:var(--danger,var(--qtr-danger))}
.qtr-form{display:grid;gap:14px;margin-block:12px}
.qtr-modal.wide .qtr-form{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
/* skeletons — no silent waiting state */
.qtr-skel{display:grid;gap:10px;padding:12px}
.qtr-skel-row{height:38px;border-radius:10px;background:linear-gradient(90deg,var(--hairline) 25%,var(--surface-2,color-mix(in srgb,var(--qt-neutral-400) 12%,transparent)) 37%,var(--hairline) 63%);background-size:400% 100%;animation:qtr-shimmer 1.3s ease infinite}
@keyframes qtr-shimmer{0%{background-position:100% 50%}100%{background-position:0 50%}}
@media (prefers-reduced-motion:reduce){.qtr-skel-row{animation:none}}
/* explicit not-configured state */
.qtr-unconfigured{border:1px dashed var(--hairline);border-radius:var(--radius-card);padding:22px}
.qtr-unconfigured strong{display:block;margin-block-end:4px}
/* sortable headers + toolbar + pager */
.qtr-th-sort{background:none;border:0;font:inherit;font-weight:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:0}
.qtr-th-sort i{width:14px;height:14px}
.qtr-th-sort:focus-visible{outline:2px solid var(--accent-border);outline-offset:2px;border-radius:6px}
.qtr-ts-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-block-end:12px}
.qtr-tb-field{display:grid;gap:4px}
.qtr-tb-field label{font-size:.78rem;font-weight:750;color:var(--shell-muted)}
.qtr-tb-field input,.qtr-tb-field select{min-height:38px;border:1px solid var(--hairline);border-radius:var(--radius-control);padding:6px 10px;background:var(--surface);color:inherit;font:inherit}
.qtr-ts-pager{display:flex;gap:12px;align-items:center;justify-content:center;padding:12px}
/* employee autocomplete */
.qtr-emp-picker{position:relative}
.qtr-ac{position:absolute;inset-block-start:100%;inset-inline:0;z-index:40;margin:4px 0 0;padding:4px;list-style:none;background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-card);box-shadow:var(--shadow-2,0 8px 28px color-mix(in srgb,var(--qt-ink) 18%,transparent));max-height:280px;overflow:auto}
.qtr-ac li{padding:9px 12px;border-radius:10px;cursor:pointer}
.qtr-ac li:hover,.qtr-ac li:focus{background:var(--surface-2,color-mix(in srgb,var(--qt-neutral-400) 12%,transparent));outline:0}
.qtr-ac li:focus-visible{outline:2px solid var(--accent-border);outline-offset:-2px}
.qtr-ac-none{color:var(--shell-muted);cursor:default}
/* key/value card */
.qtr-kv{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:10px 0}
.qtr-kv dt{font-weight:750;font-size:.82rem;color:var(--shell-muted)}
.qtr-kv dd{margin:0}
.qtr-hcm-card{border:1px solid var(--hairline);border-radius:var(--radius-card);padding:16px;margin-block:14px}
.qtr-muted{color:var(--shell-muted)}

/* ════════════════════════════════════════════════════════════════════════════════════
   ENTERPRISE NAVIGATION STANDARD v1.0 — screen header (Layer 3 breadcrumb + Layer 4 local
   navigation). Rendered by the shell above every module host. Uses platform design tokens
   only; adds no colours of its own and inherits RTL/LTR from the document direction.
   ════════════════════════════════════════════════════════════════════════════════════ */
.qtr-navstd{display:flex;flex-direction:column;gap:10px;padding:14px 18px 16px;margin-bottom:14px;
  border:1px solid var(--qtr-line,color-mix(in srgb,var(--qt-ink) 10%,transparent));border-radius:16px;
  background:var(--qtr-panel,rgba(255,255,255,.72))}
.qtr-ncrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12.5px;font-weight:600}
.qtr-ncrumb{color:var(--qtr-muted-text);text-decoration:none;border-radius:7px;padding:2px 5px}
.qtr-ncrumb:hover,.qtr-ncrumb:focus-visible{color:var(--qtr-accent);background:color-mix(in srgb,var(--accent) 8%,transparent);
  text-decoration:underline;outline:none}
.qtr-ncrumb.is-current{color:var(--qtr-text);font-weight:800}
.qtr-nsep{inline-size:13px;block-size:13px;opacity:.45;flex:none}
.qtr-nhead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
.qtr-nid{min-inline-size:0}
.qtr-nscreenid{display:inline-block;font-family:ui-monospace,"IBM Plex Mono",monospace;font-size:11px;
  font-weight:600;letter-spacing:.04em;color:var(--qtr-muted-text);
  border:1px solid var(--qtr-line,color-mix(in srgb,var(--qt-ink) 12%,transparent));border-radius:999px;padding:2px 9px;margin-bottom:6px}
.qtr-ntitle{margin:0;font-size:clamp(18px,2.4vw,23px);line-height:1.25}
.qtr-ndesc{margin:4px 0 0;color:var(--qtr-muted-text);font-size:13px;line-height:1.6;max-inline-size:70ch}
.qtr-nactions{display:flex;flex-wrap:wrap;gap:7px}
.qtr-nbtn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:11px;
  border:1px solid var(--qtr-line,color-mix(in srgb,var(--qt-ink) 12%,transparent));background:transparent;color:var(--qtr-text);
  font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap}
.qtr-nbtn:hover,.qtr-nbtn:focus-visible{border-color:var(--qtr-accent);color:var(--qtr-accent);outline:none}
.qtr-nbtn.primary{background:var(--qtr-accent);border-color:var(--qtr-accent);color:#fff}
.qtr-nbtn.primary:hover,.qtr-nbtn.primary:focus-visible{filter:brightness(1.08);color:#fff}
.qtr-nbtn i{inline-size:14px;block-size:14px;flex:none}
@media (prefers-color-scheme:dark){
  .qtr-navstd{background:var(--qtr-panel,color-mix(in srgb,var(--qt-ink) 55%,transparent));border-color:var(--qtr-line,color-mix(in srgb,var(--qt-neutral-400) 18%,transparent))}
  .qtr-ncrumb.is-current,.qtr-nbtn{color:var(--qtr-text)}
}
@media (max-width:640px){
  .qtr-navstd{padding:12px 14px}
  .qtr-nhead{flex-direction:column;align-items:stretch}
  .qtr-nactions{width:100%}
  .qtr-nbtn{flex:1 1 auto;justify-content:center}
}
@media print{ .qtr-nactions{display:none} }

/* ── ORGANIZATION CENTER — Product 0 (ADR 0090) ─────────────────────────────────────────────────
   Token-based only. Bilingual/RTL by logical properties. Dark mode via existing surface tokens. */
.qtr-org { display: flex; flex-direction: column; gap: var(--qtr-space-4); min-height: 0; }
.qtr-org-modules { display: flex; gap: var(--qtr-space-2); flex-wrap: wrap;
  padding-block-end: var(--qtr-space-2); border-block-end: 1px solid var(--glass-border); }
.qtr-org-mod { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px;
  border: 1px solid var(--glass-border); border-radius: var(--radius-control);
  background: var(--surface-secondary); color: var(--text-muted); font-weight: 600;
  font-size: .875rem; cursor: pointer; }
.qtr-org-mod:hover { color: var(--text-primary); }
.qtr-org-mod.is-active { background: var(--accent); color: var(--qtr-on-accent); border-color: transparent; }
.qtr-org-mod i { width: 16px; height: 16px; }
.qtr-org-body { display: flex; flex-direction: column; gap: var(--qtr-space-4); min-height: 0; }

.qtr-org-gate { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px;
  border: 1px solid var(--glass-border); border-radius: var(--radius-panel);
  background: color-mix(in srgb, var(--qtr-warning) 10%, var(--surface-secondary));
  flex-wrap: wrap; }
.qtr-org-gate[data-tone="success"] { background: color-mix(in srgb, var(--qtr-success) 10%, var(--surface-secondary)); }
.qtr-org-gate[data-tone="info"] { background: color-mix(in srgb, var(--accent) 8%, var(--surface-secondary)); }
.qtr-org-gate > div { flex: 1 1 220px; }
.qtr-org-gate strong { display: block; }
.qtr-org-gate p { margin: 4px 0 0; color: var(--text-muted); font-size: .875rem; }

.qtr-org-hero { display: flex; align-items: center; gap: var(--qtr-space-5); flex-wrap: wrap;
  padding: var(--qtr-space-4); border: 1px solid var(--glass-border);
  border-radius: var(--radius-panel); background: var(--surface-secondary); }
.qtr-org-hero-score { display: flex; align-items: center; gap: 14px; }
.qtr-org-ring { --pct: 0; position: relative; inline-size: 68px; block-size: 68px; border-radius: 50%;
  display: grid; place-items: center; flex: none;
  background: conic-gradient(var(--ring-c, var(--qtr-success)) calc(var(--pct) * 1%), var(--glass-border) 0); }
.qtr-org-ring[data-tone="warning"] { --ring-c: var(--qtr-warning); }
.qtr-org-ring[data-tone="danger"] { --ring-c: var(--qtr-danger); }
.qtr-org-ring::after { content: ""; position: absolute; inset: 6px; border-radius: 50%; background: var(--surface-primary); }
.qtr-org-ring b { position: relative; z-index: 1; font-size: 1.15rem; font-weight: 800; }
.qtr-org-stats { display: flex; gap: var(--qtr-space-5); margin: 0; flex-wrap: wrap; }
.qtr-org-stats dt { color: var(--text-muted); font-size: .8125rem; }
.qtr-org-stats dd { margin: 2px 0 0; font-weight: 700; font-size: 1.05rem; }

.qtr-org-cols { display: grid; gap: var(--qtr-space-4); grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }
.qtr-org-bar { display: grid; grid-template-columns: minmax(120px, 1fr) 2fr auto; align-items: center;
  gap: 10px; inline-size: 100%; padding: 8px 4px; background: none; border: 0; cursor: pointer;
  color: inherit; text-align: start; }
.qtr-org-bar:hover { background: var(--surface-secondary); border-radius: 8px; }
.qtr-org-bar-track { block-size: 8px; border-radius: 999px; background: var(--glass-border); overflow: hidden; }
.qtr-org-bar-fill { display: block; block-size: 100%; background: var(--qtr-success); }
.qtr-org-bar-fill[data-tone="warning"] { background: var(--qtr-warning); }
.qtr-org-bar-fill[data-tone="danger"] { background: var(--qtr-danger); }
.qtr-org-bar-fill[data-tone="muted"] { background: var(--glass-border); }
.qtr-org-bar-v { font-variant-numeric: tabular-nums; font-weight: 700; font-size: .875rem; }

.qtr-org-pending { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.qtr-org-pending li { display: flex; align-items: center; gap: 10px; padding: 10px 4px;
  border-block-end: 1px solid var(--glass-border); flex-wrap: wrap; }
.qtr-org-pending li:last-child { border-block-end: 0; }
.qtr-org-pending li > div { flex: 1 1 200px; min-inline-size: 0; }
.qtr-org-pending strong { display: block; font-size: .9375rem; }
.qtr-org-pending p { margin: 2px 0 0; color: var(--text-muted); font-size: .8125rem; }
.qtr-org-dot { inline-size: 10px; block-size: 10px; border-radius: 50%; flex: none;
  background: var(--glass-border); }
.qtr-org-dot[data-tone="success"] { background: var(--qtr-success); }
.qtr-org-dot[data-tone="warning"] { background: var(--qtr-warning); }
.qtr-org-dot[data-tone="danger"] { background: var(--qtr-danger); }

.qtr-org-group { border: 1px solid var(--glass-border); border-radius: var(--radius-control);
  padding: 4px 12px; margin-block-end: 8px; }
.qtr-org-group summary { display: flex; align-items: center; gap: 10px; padding: 10px 0;
  cursor: pointer; font-weight: 600; }
.qtr-org-group summary > span { flex: 1; }
.qtr-org-group summary small { color: var(--text-muted); font-weight: 500; }

.qtr-org-note { display: flex; align-items: flex-start; gap: 8px; margin: 8px 0;
  color: var(--text-muted); font-size: .8125rem; }
.qtr-org-note[data-tone="warning"] { color:var(--qtr-warning-text); }
.qtr-org-note[data-tone="success"] { color:var(--qtr-success-text); }
.qtr-org-note i { inline-size: 15px; block-size: 15px; flex: none; margin-block-start: 1px; }
.qtr-org-owner { margin-block-start: 12px; color: var(--text-muted); }
.qtr-org-chips { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; padding: 0; }

.qtr-org-wizard-head h2 { margin: 0; }
.qtr-org-wizard-head p { margin: 4px 0 12px; color: var(--text-muted); font-size: .875rem; }
.qtr-org-progress { block-size: 6px; border-radius: 999px; background: var(--glass-border); overflow: hidden; }
.qtr-org-progress span { display: block; block-size: 100%; background: var(--accent); transition: inline-size .2s ease; }
.qtr-org-stepper { display: flex; gap: 6px; flex-wrap: wrap; margin: 14px 0; }
.qtr-org-step { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px;
  border: 1px solid var(--glass-border); border-radius: 999px; background: var(--surface-secondary);
  color: var(--text-muted); font-size: .8125rem; cursor: pointer; }
.qtr-org-step.is-active { border-color: var(--accent); color: var(--text-primary); }
.qtr-org-step.is-done { color:var(--qtr-success-text); }
.qtr-org-step-n { inline-size: 20px; block-size: 20px; border-radius: 50%; display: grid;
  place-items: center; background: var(--glass-border); font-size: .75rem; font-weight: 700; }
.qtr-org-step.is-active .qtr-org-step-n { background: var(--accent); color: var(--qtr-on-accent); }
.qtr-org-pane { padding-block: 8px; }
.qtr-org-pane h3 { margin-block-start: 0; }

.qtr-field { display: flex; flex-direction: column; gap: 4px; }
.qtr-field label { font-size: .8125rem; font-weight: 600; color: var(--text-muted); }
.qtr-field input, .qtr-field select { padding: 9px 11px; border: 1px solid var(--glass-border);
  border-radius: var(--radius-control); background: var(--surface-primary);
  color: var(--text-primary); font: inherit; inline-size: 100%; }
.qtr-field input[aria-invalid="true"], .qtr-field select[aria-invalid="true"] { border-color: var(--qtr-danger); }
.qtr-field input:disabled, .qtr-field select:disabled { opacity: .6; cursor: not-allowed; }
.qtr-field-err { margin: 0; color:var(--qtr-danger-text); font-size: .75rem; }
.qtr-field-hint { margin: 0; color: var(--text-muted); font-size: .75rem; }
.qtr-req { color:var(--qtr-danger-text); }
.qtr-form-grid { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.qtr-form-grid .qtr-span-all { grid-column: 1 / -1; margin: 0; }
.qtr-form-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-block-start: 14px; }
.qtr-link { background: none; border: 0; padding: 0; color: var(--accent); cursor: pointer;
  font: inherit; text-decoration: underline; }
.qtr-sr { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); }
.qtr-muted { color: var(--text-muted); }

@media (max-width: 760px) {
  .qtr-org-modules { overflow-x: auto; flex-wrap: nowrap; }
  .qtr-org-mod span { display: none; }
  .qtr-org-mod { padding: 8px; }
  .qtr-org-bar { grid-template-columns: 1fr auto; }
  .qtr-org-bar-track { grid-column: 1 / -1; }
  .qtr-org-hero { gap: 12px; }
}

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   ORGANIZATION READINESS — GO-LIVE READINESS CENTER (Owner Acceptance)
   ══════════════════════════════════════════════════════════════════════════════════════════════
   The executive band. Design target: a CEO reads score, blockers, estimate and the next action in
   under ten seconds, so the score is the largest thing on the page and Continue Setup is the only
   primary button in the band. Tone tokens carry the state — nothing is colour-only, every state is
   also carried by a number and a word. */

.qtr-org-golive { display: grid; gap: var(--qtr-space-5); align-items: center;
  grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr) minmax(240px, 1fr);
  padding: var(--qtr-space-5); border: 1px solid var(--glass-border);
  border-radius: var(--radius-panel); background: var(--surface-secondary);
  border-inline-start: 4px solid var(--qtr-success); }
.qtr-org-golive[data-tone="warning"] { border-inline-start-color: var(--qtr-warning); }
.qtr-org-golive[data-tone="danger"]  { border-inline-start-color: var(--qtr-danger); }

.qtr-org-golive-eyebrow { display: flex; align-items: center; gap: 8px; margin: 0 0 4px;
  font-size: .8125rem; font-weight: 700; letter-spacing: .02em; color: var(--text-muted); }
.qtr-org-golive-eyebrow i { inline-size: 16px; block-size: 16px; }
.qtr-org-golive-score { margin: 0; font-size: clamp(2.5rem, 6vw, 3.5rem); font-weight: 800;
  line-height: 1; font-variant-numeric: tabular-nums; }
.qtr-org-golive-score small { font-size: .4em; font-weight: 700; margin-inline-start: 2px;
  color: var(--text-muted); }
.qtr-org-golive-track { block-size: 10px; border-radius: 999px; background: var(--glass-border);
  overflow: hidden; margin: 10px 0 8px; max-inline-size: 320px; }
.qtr-org-golive-track > span { display: block; block-size: 100%; border-radius: 999px;
  background: var(--qtr-success); transition: width var(--dur, .25s) var(--ease, ease); }
.qtr-org-golive-track > span[data-tone="warning"] { background: var(--qtr-warning); }
.qtr-org-golive-track > span[data-tone="danger"]  { background: var(--qtr-danger); }
.qtr-org-golive-org { margin: 0; color: var(--text-muted); font-size: .875rem; }

.qtr-org-golive-counts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px var(--qtr-space-4); margin: 0; }
.qtr-org-golive-counts > div { border-inline-start: 3px solid var(--glass-border);
  padding-inline-start: 10px; }
.qtr-org-golive-counts > div[data-tone="success"] { border-inline-start-color: var(--qtr-success); }
.qtr-org-golive-counts > div[data-tone="warning"] { border-inline-start-color: var(--qtr-warning); }
.qtr-org-golive-counts > div[data-tone="danger"]  { border-inline-start-color: var(--qtr-danger); }
.qtr-org-golive-counts dt { font-size: .75rem; color: var(--text-muted); }
.qtr-org-golive-counts dd { margin: 2px 0 0; font-size: 1.35rem; font-weight: 800;
  font-variant-numeric: tabular-nums; }

.qtr-org-golive-act { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.qtr-org-golive-eta { display: flex; align-items: center; gap: 8px; margin: 0; flex-wrap: wrap;
  font-size: .8125rem; color: var(--text-muted); }
.qtr-org-golive-eta i { inline-size: 15px; block-size: 15px; }
.qtr-org-golive-eta strong { color: var(--text-primary); font-size: .95rem; }
.qtr-org-golive-next { margin: 0; font-size: .8125rem; color: var(--text-muted); }
.qtr-org-golive-next strong { color: var(--text-primary); }
.qtr-action.lg { padding-inline: var(--qtr-space-5); min-block-size: 40px; font-weight: 700; }

/* Critical alerts. Severity is carried by the border, the icon AND the word — never by hue alone. */
.qtr-org-alerts { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.qtr-org-alerts li { display: grid; grid-template-columns: auto 1fr auto; gap: 10px;
  align-items: center; padding: 10px 12px; border-radius: var(--radius-control);
  border: 1px solid var(--glass-border); background: var(--surface-primary);
  border-inline-start: 3px solid var(--qtr-warning); }
.qtr-org-alerts li[data-tone="danger"] { border-inline-start-color: var(--qtr-danger); }
.qtr-org-alerts li i { inline-size: 18px; block-size: 18px; color:var(--qtr-warning-text); }
.qtr-org-alerts li[data-tone="danger"] i { color:var(--qtr-danger-text); }
.qtr-org-alerts strong { display: block; font-size: .9rem; }
.qtr-org-alerts p { margin: 2px 0 0; font-size: .8125rem; color: var(--text-muted); }

/* Product activation matrix. Installed / licensed / activated / blocked stay four separate badges:
   collapsing them into one status is exactly what makes "why can I not activate this?" unanswerable. */
.qtr-org-prods { display: grid; gap: var(--qtr-space-3);
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.qtr-org-prod { display: flex; flex-direction: column; gap: 10px; padding: var(--qtr-space-4);
  border: 1px solid var(--glass-border); border-radius: var(--radius-panel);
  background: var(--surface-primary); }
.qtr-org-prod[data-blocked="1"] { border-inline-start: 3px solid var(--qtr-danger); }
.qtr-org-prod header { display: flex; flex-direction: column; gap: 6px; }
.qtr-org-prod h3 { margin: 0; font-size: 1rem; }
.qtr-org-prod-flags { display: flex; flex-wrap: wrap; gap: 4px; }
.qtr-org-prod-rdy { display: flex; align-items: center; gap: 8px; }
.qtr-org-prod-rdy .qtr-org-bar-track { flex: 1; }
.qtr-org-prod-why { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.qtr-org-prod-why li { display: flex; align-items: center; gap: 8px; font-size: .8125rem;
  color: var(--text-muted); }
.qtr-org-prod-why i { inline-size: 15px; block-size: 15px; flex: none; color:var(--qtr-danger-text); }
.qtr-org-prod-why span { flex: 1; }
.qtr-org-prod-deps summary { cursor: pointer; font-size: .8125rem; color: var(--text-muted); }
.qtr-org-prod-deps ul { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 5px; }
.qtr-org-prod-deps li { display: flex; align-items: center; gap: 8px; font-size: .8125rem; }
.qtr-org-prod-deps li i { inline-size: 14px; block-size: 14px; flex: none;
  color:var(--qtr-danger-text); }
.qtr-org-prod-deps li[data-ok="1"] i { color:var(--qtr-success-text); }
.qtr-org-prod footer { margin-block-start: auto; padding-block-start: 4px; }

@media (max-width: 900px) {
  .qtr-org-golive { grid-template-columns: 1fr; }
  .qtr-org-golive-act { align-items: stretch; }
  .qtr-org-golive-act .qtr-action { inline-size: 100%; }
}
@media (max-width: 760px) {
  .qtr-org-golive { padding: var(--qtr-space-4); }
  .qtr-org-golive-counts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .qtr-org-alerts li { grid-template-columns: auto 1fr; }
  .qtr-org-alerts li .qtr-action { grid-column: 1 / -1; }
}

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   BRAND LOGO UPLOADER
   ══════════════════════════════════════════════════════════════════════════════════════════════
   The preview frame is deliberately WHITE in both light and dark themes, and it is not themed away
   by dark mode. The whole point of the pipeline is that the stored logo is flattened onto white,
   so the preview has to show the Owner exactly what will be printed on a document — not a
   dark-mode-tinted approximation of it. */

.qtr-logo-field { margin-block-end: var(--qtr-space-4); }
.qtr-logo-label { display: block; font-size: .875rem; font-weight: 600; margin-block-end: 8px; }
.qtr-logo-row { display: flex; gap: var(--qtr-space-4); align-items: flex-start;
  flex-wrap: wrap; }

.qtr-logo-frame { inline-size: 132px; block-size: 92px; flex: none; display: grid;
  place-items: center; overflow: hidden; padding: 8px;
  background: #FFFFFF;                                  /* the stored logo's real background */
  border: 1px solid var(--glass-border); border-radius: var(--radius-control); }
.qtr-logo-frame img { max-inline-size: 100%; max-block-size: 100%; object-fit: contain; }
.qtr-logo-frame i { inline-size: 26px; block-size: 26px; color: var(--qt-neutral-400); }

.qtr-logo-actions { flex: 1 1 240px; display: flex; flex-direction: column;
  align-items: flex-start; gap: 6px; }
/* The file input is hidden; the <label> is the control, so it needs the button's focus ring. */
.qtr-logo-actions label.qtr-action { cursor: pointer; }
.qtr-logo-actions label.qtr-action:focus-within { outline: 2px solid var(--accent);
  outline-offset: 2px; }
.qtr-logo-hint { margin: 0; font-size: .75rem; color: var(--text-muted); line-height: 1.5; }
.qtr-logo-status { margin: 0; font-size: .75rem; min-block-size: 1.1em; color: var(--text-muted); }
.qtr-logo-status[data-tone="success"] { color:var(--qtr-success-text); font-weight: 600; }
.qtr-logo-status[data-tone="warning"] { color:var(--qtr-warning-text); font-weight: 600; }
.qtr-logo-status[data-tone="danger"]  { color:var(--qtr-danger-text); font-weight: 600; }

@media (max-width: 520px) {
  .qtr-logo-frame { inline-size: 100%; block-size: 120px; }
  .qtr-logo-actions { flex-basis: 100%; }
}

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   LICENCE HEALTH TILES — pressable
   ══════════════════════════════════════════════════════════════════════════════════════════════
   Each tile that has somewhere to go is a real <button>, so it needs to look pressable and behave
   like one: pointer, hover lift, visible focus ring, and a chevron that mirrors in RTL. Tiles with
   no destination keep the plain non-interactive treatment — nothing looks clickable unless it is. */

button.qtr-ts-hcheck { font: inherit; color: inherit; text-align: start; inline-size: 100%; }
.qtr-ts-hcheck.is-link { cursor: pointer;
  transition: transform var(--dur-fast, .12s) var(--ease, ease),
              box-shadow var(--dur-fast, .12s) var(--ease, ease),
              border-color var(--dur-fast, .12s) var(--ease, ease); }
.qtr-ts-hcheck.is-link:hover { transform: translateY(-1px);
  border-color: var(--border-strong, var(--hairline)); box-shadow: var(--elev-1, 0 2px 8px rgb(0 0 0 / .07)); }
.qtr-ts-hcheck.is-link:active { transform: translateY(0); }
.qtr-ts-hcheck.is-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.qtr-ts-hcheck.is-link > div { flex: 1; min-inline-size: 0; }

/* The chevron is the affordance: it says "this opens something". Muted until hover so the tile
   still reads as a metric first. */
.qtr-ts-hgo { inline-size: 15px !important; block-size: 15px !important; flex: none;
  color: var(--text-muted); opacity: .55;
  transition: opacity var(--dur-fast, .12s) var(--ease, ease),
              transform var(--dur-fast, .12s) var(--ease, ease); }
.qtr-ts-hcheck.is-link:hover .qtr-ts-hgo { opacity: 1; }
.qtr-ts-hcheck.is-link:hover .qtr-ts-hgo { transform: translateX(2px); }
[dir="rtl"] .qtr-ts-hcheck.is-link:hover .qtr-ts-hgo { transform: translateX(-2px); }

/* Destination highlight, for the tile that scrolls to a card rather than switching tab — without
   it the page just moves and the Owner has to work out what changed. */
.qtr-ts-card.is-flash { animation: qtr-flash 1.4s var(--ease, ease); }
@keyframes qtr-flash {
  0%, 100% { box-shadow: 0 0 0 0 rgb(22 119 210 / 0); }
  15%, 60% { box-shadow: 0 0 0 3px rgb(22 119 210 / .28); }
}
@media (prefers-reduced-motion: reduce) {
  .qtr-ts-hcheck.is-link, .qtr-ts-hgo { transition: none; }
  .qtr-ts-hcheck.is-link:hover { transform: none; }
  .qtr-ts-card.is-flash { animation: none; outline: 2px solid var(--accent); outline-offset: 2px; }
}

/* ── Business Partner Center ─────────────────────────────────────────────────────────────
   Reuses the platform's .qtr-ts-* chrome; only partner-specific structures are defined here. */
.qtr-bp-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-block-end:14px}
.qtr-bp-stat{display:flex;flex-direction:column;gap:2px;align-items:flex-start;text-align:start;padding:14px 16px;border:1px solid var(--qtr-border,color-mix(in srgb,var(--qt-neutral-400) 18%,transparent));border-radius:14px;background:var(--qtr-surface,color-mix(in srgb,var(--qt-neutral-400) 4%,transparent));font:inherit;color:inherit;cursor:pointer}
.qtr-bp-stat:hover{border-color:var(--qtr-accent)}
.qtr-bp-stat:focus-visible{outline:2px solid var(--qtr-accent);outline-offset:2px}
.qtr-bp-stat i{inline-size:18px;block-size:18px;opacity:.65}
.qtr-bp-stat b{font-size:1.5rem;line-height:1.1;font-variant-numeric:tabular-nums}
.qtr-bp-stat small{opacity:.7;font-size:.78rem}
.qtr-bp-stat.warn{border-color:var(--qtr-warning);background:var(--qtr-warning-soft)}
.qtr-bp-stat.warn i,.qtr-bp-stat.warn b{color:var(--qtr-warning-text)}
.qtr-bp-stat.ok b{color:var(--qtr-success-text)}

.qtr-bp-grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:900px){.qtr-bp-grid2{grid-template-columns:1fr}}

.qtr-bp-tablewrap{overflow-x:auto;border:1px solid var(--qtr-border);border-radius:10px}
.qtr-bp-table{width:100%;border-collapse:collapse;font-size:.85rem;min-width:640px}
.qtr-bp-table.tight{min-width:0;font-size:.8rem}
.qtr-bp-table th{text-align:start;font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;opacity:.6;padding:8px 12px;border-bottom:1px solid var(--qtr-border);white-space:nowrap}
.qtr-bp-table td{padding:8px 12px;border-bottom:1px solid var(--qtr-border);vertical-align:middle}
.qtr-bp-table tr:last-child td{border-bottom:0}
.qtr-bp-table td.num,.qtr-bp-table th.num{text-align:end;font-variant-numeric:tabular-nums}
.qtr-bp-table tr.qtr-bp-dup td{background:var(--qtr-warning-soft)}
.qtr-bp-table tr.qtr-bp-dropped td{opacity:.72}
.qtr-bp-sub{display:block;font-size:.72rem;opacity:.6}
.qtr-bp-none{opacity:.4}
.qtr-bp-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;opacity:.7}
.qtr-bp-hint{font-size:.78rem;opacity:.7;margin:4px 0}

.qtr-bp-sort{background:none;border:0;font:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:4px;padding:0;text-transform:inherit;letter-spacing:inherit}
.qtr-bp-sort.on{color:var(--qtr-accent);opacity:1}
.qtr-bp-sort i{inline-size:12px;block-size:12px}
.qtr-bp-sort:focus-visible{outline:2px solid var(--qtr-accent);outline-offset:2px}

.qtr-bp-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-block-end:12px}
.qtr-bp-field{display:flex;flex-direction:column;gap:4px;font-size:.78rem}
.qtr-bp-field.grow{flex:1 1 200px}
.qtr-bp-field>span{opacity:.75}
.qtr-bp-field input,.qtr-bp-field select{padding:7px 10px;border:1px solid var(--qtr-border);border-radius:8px;background:var(--surface-primary);color:inherit;font:inherit;font-size:.85rem;min-inline-size:120px}
.qtr-bp-field input:focus-visible,.qtr-bp-field select:focus-visible{outline:2px solid var(--qtr-accent);outline-offset:1px}
.qtr-bp-field input[aria-invalid="true"]{border-color:var(--qtr-danger)}
.qtr-bp-err{color:var(--qtr-danger-text);font-size:.72rem;min-block-size:1em}

.qtr-bp-pager{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-block-start:10px;font-size:.8rem;opacity:.85}
.qtr-bp-pager>div{display:flex;gap:6px}

.qtr-bp-form{display:flex;flex-direction:column;gap:12px}
.qtr-bp-formgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.qtr-bp-inline{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end;margin-block-end:12px}
.qtr-bp-confirm{display:flex;align-items:flex-start;gap:8px;font-size:.8rem;margin-block-start:6px}

.qtr-bp-360head{display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;align-items:flex-start;margin-block-end:12px}
.qtr-bp-360id h3{margin:2px 0 6px;font-size:1.15rem}
.qtr-bp-360chips{display:flex;flex-wrap:wrap;gap:6px}
.qtr-bp-360actions{display:flex;flex-wrap:wrap;gap:6px}
.qtr-bp-sections{display:flex;flex-wrap:wrap;gap:6px;border-block-end:1px solid var(--qtr-border);padding-block-end:8px;margin-block-end:12px}
.qtr-bp-section{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid transparent;background:var(--surface-secondary,color-mix(in srgb,var(--qt-neutral-400) 6%,transparent));font:inherit;font-size:.8rem;color:inherit;cursor:pointer}
.qtr-bp-section:hover{border-color:var(--qtr-accent)}
.qtr-bp-section:focus-visible{outline:2px solid var(--qtr-accent);outline-offset:2px}
.qtr-bp-section.active{background:var(--qtr-accent);color:#fff}
.qtr-bp-section i{inline-size:14px;block-size:14px}

.qtr-bp-kvs{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:0}
.qtr-bp-kvs.tight{gap:6px}
.qtr-bp-kv{display:flex;flex-direction:column;gap:2px}
.qtr-bp-kv dt{font-size:.72rem;opacity:.6}
.qtr-bp-kv dd{margin:0;font-size:.88rem}
.qtr-bp-h4{font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;opacity:.65;margin:14px 0 6px;display:flex;align-items:center;gap:6px}
.qtr-bp-h4 i{inline-size:14px;block-size:14px}

.qtr-bp-role{display:inline-block;padding:2px 8px;border-radius:999px;background:var(--surface-secondary,color-mix(in srgb,var(--qt-neutral-400) 10%,transparent));font-size:.72rem;margin-inline-end:4px;margin-block-end:2px}
.qtr-bp-consume{border:1px solid var(--qtr-border);border-radius:10px;padding:10px 12px;margin-block-end:8px}
.qtr-bp-consume-h{display:flex;align-items:center;gap:8px;margin-block-end:6px}
.qtr-bp-consume-h code{font-size:.8rem}

.qtr-bp-banner{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border-radius:12px;margin-block-end:12px;font-size:.84rem}
.qtr-bp-banner i{inline-size:18px;block-size:18px;flex:none;margin-block-start:1px}
.qtr-bp-banner ul{margin:4px 0 0;padding-inline-start:18px}
.qtr-bp-banner.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text)}
.qtr-bp-banner.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-bp-banner.wait,.qtr-bp-banner.warn{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-bp-banner.info{background:var(--surface-secondary,color-mix(in srgb,var(--qt-neutral-400) 8%,transparent));color:var(--text-secondary)}
.qtr-bp-banner small{display:block;opacity:.85;font-weight:400}

.qtr-bp-score{display:inline-flex;align-items:center;justify-content:center;min-inline-size:38px;padding:3px 8px;border-radius:999px;font-weight:800;font-size:.78rem;font-variant-numeric:tabular-nums}
.qtr-bp-score.high{background:var(--qtr-danger-soft);color:var(--qtr-danger-text)}
.qtr-bp-score.mid{background:var(--qtr-warning-soft);color:var(--qtr-warning-text)}
.qtr-bp-score.low{background:var(--surface-secondary,color-mix(in srgb,var(--qt-neutral-400) 10%,transparent));color:var(--text-secondary)}

.qtr-bp-mergepair{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-block-end:12px}
.qtr-bp-mergeside{flex:1 1 200px;padding:10px 12px;border-radius:10px;border:1px solid var(--qtr-border);display:flex;flex-direction:column;gap:2px}
.qtr-bp-mergeside small{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;opacity:.6}
.qtr-bp-mergeside code{font-size:.8rem}
.qtr-bp-mergeside.keep{background:var(--qtr-success-soft);border-color:transparent}
.qtr-bp-mergeside.lose{background:var(--qtr-warning-soft);border-color:transparent}
.qtr-bp-mergepv h4{margin-block-start:14px}
.qtr-btn.danger{background:var(--qtr-danger);color:#fff;border-color:transparent}

@media (max-width:640px){
  .qtr-bp-table{min-width:520px}
  .qtr-bp-360head{flex-direction:column}
  .qtr-bp-filters .qtr-bp-field{flex:1 1 100%}
}

/* ══ Quatron UX — interaction affordance contract ═══════════════════════════
   One appearance for "this responds", platform-wide. Products never restyle a
   hover or a focus ring; they declare data-ix and inherit these. Anything that
   looks interactive and is not is a bug the auditor reports, so the affordance
   and the behaviour cannot drift apart. */
.qtr-ix{cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,background-color .16s ease,border-color .16s ease}
.qtr-ix:hover{transform:translateY(-1px)}
.qtr-ix:active{transform:translateY(0)}
/* :focus-visible, not :focus — a mouse user should not be given a keyboard ring,
   and a keyboard user must never lose one. */
.qtr-ix:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:inherit}
.qtr-ix-info{cursor:default}
.qtr-ix-info:hover{transform:none}
/* Denied: visibly unavailable and unreachable by pointer or keyboard, while still
   readable — the information stays, only the door closes. */
.qtr-ix-denied{cursor:not-allowed;opacity:.55;filter:saturate(.6)}
.qtr-ix-denied:hover{transform:none}
@media (prefers-reduced-motion:reduce){
  .qtr-ix{transition:none}
  .qtr-ix:hover,.qtr-ix:active{transform:none}
}
@media (hover:none){.qtr-ix:hover{transform:none}}

/* === QOS-01A UNIVERSAL OBJECT RUNTIME ===================================== */
/* Every colour here resolves to a Quatron Brand Token; the brand gate enforces it.
   The state blocks are deliberately distinct: an Unavailable section and an Empty
   section must not look the same, because they are not the same fact. */
.qtr-obj{display:grid;gap:var(--qtr-space-4)}
.qtr-obj-head{display:flex;align-items:center;gap:var(--qtr-space-4);flex-wrap:wrap;
  padding:var(--qtr-space-5);border:1px solid var(--hairline);border-radius:var(--radius);
  background:var(--surface-secondary);box-shadow:var(--elev-1)}
.qtr-obj-id{display:grid;gap:2px;min-width:0;flex:1 1 0}
.qtr-obj-id small{color:var(--text-muted);font-size:var(--qtr-font-size-xs);font-weight:700}
.qtr-obj-id h1{margin:0;font-size:var(--qtr-font-size-xl);line-height:var(--qtr-line-display);
  overflow:hidden;text-overflow:ellipsis}
.qtr-obj-id code{color:var(--text-muted);font-family:var(--qtr-font-mono);font-size:var(--qtr-font-size-xs)}
.qtr-obj-acts{display:flex;gap:var(--qtr-space-2);flex-wrap:wrap}
.qtr-obj-tabs{display:flex;gap:var(--qtr-space-1);flex-wrap:wrap;border-bottom:1px solid var(--hairline);
  padding-block-end:var(--qtr-space-2)}
.qtr-obj-tab{min-height:40px;padding:0 var(--qtr-space-4);border:1px solid transparent;
  border-radius:var(--radius-control);background:transparent;color:var(--text-secondary);
  font:inherit;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:var(--qtr-space-2);
  transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.qtr-obj-tab:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.qtr-obj-tab.is-active{background:var(--accent);color:var(--qtr-on-accent)}
.qtr-obj-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* A tab whose section has no provider stays reachable but visibly inert: the user
   can open it and read WHY. It is not hidden, and it is not a dead end. */
.qtr-obj-tab.is-off{color:var(--text-muted);font-style:italic}
.qtr-obj-tab.is-off::after{content:"";inline-size:6px;block-size:6px;border-radius:50%;
  background:var(--qt-neutral-400)}
.qtr-obj-count{min-inline-size:20px;padding:0 6px;border-radius:999px;font-size:var(--qtr-font-size-xs);
  background:color-mix(in srgb,var(--qt-ink) 10%,transparent)}
.qtr-obj-tab.is-active .qtr-obj-count{background:color-mix(in srgb,var(--qtr-white) 26%,transparent)}
.qtr-obj-panel{min-block-size:180px}
.qtr-obj-state{display:grid;justify-items:center;gap:var(--qtr-space-2);padding:var(--qtr-space-7);
  text-align:center;border:1px dashed var(--hairline);border-radius:var(--radius);color:var(--text-secondary)}
.qtr-obj-state i,.qtr-obj-state svg{inline-size:28px;block-size:28px}
.qtr-obj-state b{color:var(--text-primary);font-size:var(--qtr-font-size-md)}
.qtr-obj-state p{margin:0;max-inline-size:46ch;line-height:var(--qtr-line-body);font-size:var(--qtr-font-size-sm)}
.qtr-obj-state.is-empty{border-style:dashed;color:var(--text-muted)}
.qtr-obj-state.is-unavailable{border-style:solid;
  background:color-mix(in srgb,var(--qt-neutral-400) 8%,transparent);color:var(--text-secondary)}
.qtr-obj-state.is-forbidden{border-color:color-mix(in srgb,var(--qtr-warning) 40%,transparent);
  background:color-mix(in srgb,var(--qtr-warning) 8%,transparent)}
.qtr-obj-state.is-error{border-color:color-mix(in srgb,var(--qtr-danger) 40%,transparent);
  background:color-mix(in srgb,var(--qtr-danger) 8%,transparent)}
.qtr-obj.is-fatal .qtr-obj-head{background:transparent}
.qtr-obj-load{display:grid;gap:var(--qtr-space-3);padding:var(--qtr-space-5)}
.qtr-obj-bar{block-size:14px;border-radius:var(--radius-control);
  background:linear-gradient(90deg,color-mix(in srgb,var(--qt-neutral-300) 40%,transparent),
    color-mix(in srgb,var(--qt-neutral-300) 18%,transparent));animation:qtrObjPulse 1.2s var(--ease) infinite}
.qtr-obj-bar:nth-child(2){inline-size:76%}
.qtr-obj-bar:nth-child(3){inline-size:52%}
@keyframes qtrObjPulse{0%,100%{opacity:.55}50%{opacity:1}}
.qtr-obj-kvs{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--qtr-space-3)}
.qtr-obj-kv{display:grid;gap:2px;padding:var(--qtr-space-3);border:1px solid var(--hairline);
  border-radius:var(--radius-control);background:var(--surface-secondary);min-width:0}
.qtr-obj-kv small{color:var(--text-muted);font-size:var(--qtr-font-size-xs);text-transform:capitalize}
.qtr-obj-kv b{overflow-wrap:anywhere;font-size:var(--qtr-font-size-sm)}
.qtr-obj-bucket{margin:var(--qtr-space-4) 0 var(--qtr-space-2);color:var(--text-muted);
  font-size:var(--qtr-font-size-xs);font-weight:800}
.qtr-obj-events{list-style:none;margin:0;padding:0;display:grid;gap:var(--qtr-space-2)}
.qtr-obj-event{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--qtr-space-3);
  padding:var(--qtr-space-3);border:1px solid var(--hairline);border-radius:var(--radius-control);
  background:var(--surface-secondary)}
.qtr-obj-event small{display:block;color:var(--text-muted);font-size:var(--qtr-font-size-xs)}
.qtr-obj-event time{color:var(--text-muted);font-size:var(--qtr-font-size-xs);white-space:nowrap}
.qtr-obj-dot{inline-size:9px;block-size:9px;border-radius:50%;background:var(--accent)}
.qtr-obj-event[data-kind="rejected"] .qtr-obj-dot,
.qtr-obj-event[data-kind="deleted"] .qtr-obj-dot{background:var(--qtr-danger)}
.qtr-obj-event[data-kind="approved"] .qtr-obj-dot,
.qtr-obj-event[data-kind="verified"] .qtr-obj-dot,
.qtr-obj-event[data-kind="signed"] .qtr-obj-dot{background:var(--qtr-success)}
.qtr-obj-event[data-kind="archived"] .qtr-obj-dot{background:var(--qtr-warning)}
.qtr-obj-docs,.qtr-obj-rels,.qtr-obj-notes,.qtr-obj-trusts{list-style:none;margin:0;padding:0;
  display:grid;gap:var(--qtr-space-2)}
.qtr-obj-doc,.qtr-obj-rels>li{display:flex;align-items:center;gap:var(--qtr-space-3);
  padding:var(--qtr-space-3);border:1px solid var(--hairline);border-radius:var(--radius-control);
  background:var(--surface-secondary)}
.qtr-obj-doc small{display:block;color:var(--text-muted);font-size:var(--qtr-font-size-xs)}
.qtr-obj-trust{margin-inline-start:auto;padding:2px 8px;border-radius:999px;
  font-size:var(--qtr-font-size-xs);background:color-mix(in srgb,var(--qtr-success) 14%,transparent);
  color:var(--qtr-success-text)}
.qtr-obj-rels>li.is-inert{opacity:.68;cursor:default}
.qtr-obj-rels>li.is-inert small{margin-inline-start:auto;color:var(--text-muted);font-size:var(--qtr-font-size-xs)}
.qtr-obj-notes>li{padding:var(--qtr-space-3);border:1px solid var(--hairline);
  border-radius:var(--radius-control);background:var(--surface-secondary)}
.qtr-obj-notes>li.is-mine{border-color:var(--accent-border);
  background:color-mix(in srgb,var(--accent) 6%,transparent)}
.qtr-obj-notes p{margin:0 0 4px;line-height:var(--qtr-line-body);font-size:var(--qtr-font-size-sm)}
.qtr-obj-notes small{color:var(--text-muted);font-size:var(--qtr-font-size-xs)}
.qtr-obj-noteform{display:flex;gap:var(--qtr-space-2);align-items:flex-end;margin-block-end:var(--qtr-space-3)}
.qtr-obj-noteform textarea{flex:1 1 0;padding:var(--qtr-space-3);border:1px solid var(--hairline);
  border-radius:var(--radius-control);background:var(--qtr-surface);color:var(--text-primary);
  font:inherit;font-size:var(--qtr-font-size-sm);resize:vertical}
.qtr-obj-trusts>li{display:grid;gap:4px;padding:var(--qtr-space-4);border:1px solid var(--hairline);
  border-radius:var(--radius-control);background:var(--surface-secondary)}
.qtr-obj-trusthead{display:flex;align-items:center;justify-content:space-between;gap:var(--qtr-space-2)}
.qtr-obj-trustst{padding:2px 8px;border-radius:999px;font-size:var(--qtr-font-size-xs);font-weight:700;
  background:color-mix(in srgb,var(--qt-neutral-400) 16%,transparent)}
.qtr-obj-trustst.is-published,.qtr-obj-trustst.is-issued{
  background:color-mix(in srgb,var(--qtr-success) 16%,transparent);color:var(--qtr-success-text)}
.qtr-obj-trustst.is-revoked,.qtr-obj-trustst.is-cancelled{
  background:color-mix(in srgb,var(--qtr-danger) 16%,transparent);color:var(--qtr-danger-text)}
.qtr-obj-trustst.is-superseded,.qtr-obj-trustst.is-expired,.qtr-obj-trustst.is-restated{
  background:color-mix(in srgb,var(--qtr-warning) 16%,transparent);color:var(--qtr-warning-text)}
.qtr-obj-trusts code{font-family:var(--qtr-font-mono);font-size:var(--qtr-font-size-xs);color:var(--text-muted)}
.qtr-obj-verify{justify-self:start;color:var(--accent-text);font-weight:700;
  font-size:var(--qtr-font-size-sm);cursor:pointer}
@media(max-width:640px){
  .qtr-obj-head{flex-direction:column;align-items:flex-start}
  .qtr-obj-event{grid-template-columns:auto 1fr}
  .qtr-obj-event time{grid-column:2;justify-self:start}
  .qtr-obj-noteform{flex-direction:column;align-items:stretch}
}

/* ============================================================================
   CRM CENTRE · qtr-crm-*
   crm-center.js emitted 46 classes in a private namespace and NO stylesheet
   defined any of them, so the browser had nothing to draw: KPI cards rendered
   as bare text lines and panels had no surface. Same defect class that
   product-screens.css was written to fix for the Gold centre, which used the
   shared qtr-* vocabulary; CRM invented its own and was never given a sheet.
   Colours are semantic app tokens only - no literals, so the brand gate holds.
   Logical properties throughout so Arabic RTL and English LTR both lay out.
   ========================================================================== */
.qtr-crm-h1{font-size:var(--qtr-font-size-xl);line-height:var(--qtr-line-display);font-weight:700;color:var(--qtr-ink-strong);margin:0}
.qtr-crm-sub{color:var(--qtr-muted-text);font-size:var(--qtr-font-size-sm);margin:4px 0 0}
.qtr-crm-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:var(--qtr-font-size-sm);color:var(--qtr-muted-text);margin-block-end:10px}
.qtr-crm-panel{background:var(--qtr-surface);border:1px solid var(--qtr-border);border-radius:var(--radius-card);padding:18px;margin-block-end:16px;box-shadow:var(--qtr-shadow)}
.qtr-crm-panel.muted{background:var(--qtr-surface-soft);box-shadow:none}
.qtr-crm-panel.wide{grid-column:1/-1}
.qtr-crm-body{display:flex;flex-direction:column;gap:12px}
.qtr-crm-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-block-end:14px}
.qtr-crm-tab{appearance:none;background:var(--qtr-surface);border:1px solid var(--qtr-border);border-radius:var(--radius-control);padding:8px 14px;font:inherit;font-size:var(--qtr-font-size-sm);color:var(--qtr-ink);cursor:pointer}
.qtr-crm-tab.is-active,.qtr-crm-tab[aria-current="page"]{background:var(--qtr-accent);border-color:var(--qtr-accent);color:var(--qtr-on-accent);font-weight:600}
.qtr-crm-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.qtr-crm-kpi{appearance:none;text-align:start;background:var(--qtr-surface);border:1px solid var(--qtr-border);border-radius:var(--radius-card);padding:14px 16px;font:inherit;color:var(--qtr-ink);cursor:pointer;display:flex;flex-direction:column;gap:6px;transition:border-color var(--qtr-motion-fast) var(--qtr-motion-curve)}
.qtr-crm-kpi:hover{border-color:var(--qtr-accent)}
.qtr-crm-kpi>span:first-child{font-size:var(--qtr-font-size-sm);color:var(--qtr-muted-text)}
.qtr-crm-value{font-size:var(--qtr-font-size-2xl);font-weight:700;color:var(--qtr-ink-strong);font-variant-numeric:tabular-nums}
.qtr-crm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.qtr-crm-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.qtr-crm-card{background:var(--qtr-surface);border:1px solid var(--qtr-border);border-radius:var(--radius-card);padding:14px;display:flex;flex-direction:column;gap:8px}
.qtr-crm-board{display:flex;gap:14px;overflow-x:auto;padding-block-end:8px;align-items:flex-start}
.qtr-crm-col{flex:0 0 268px;background:var(--qtr-surface-soft);border:1px solid var(--qtr-border);border-radius:var(--radius-card);padding:12px;display:flex;flex-direction:column;gap:10px}
.qtr-crm-col.is-won{border-color:var(--qtr-success-soft)}
.qtr-crm-col.is-lost{border-color:var(--qtr-danger-soft)}
.qtr-crm-colmeta{font-size:var(--qtr-font-size-sm);color:var(--qtr-muted-text);font-variant-numeric:tabular-nums}
.qtr-crm-colempty{color:var(--qtr-muted-text);font-size:var(--qtr-font-size-sm);text-align:center;padding:14px 0;margin:0}
.qtr-crm-tablewrap{overflow-x:auto;border:1px solid var(--qtr-border);border-radius:var(--radius-card)}
.qtr-crm-table{inline-size:100%;border-collapse:collapse;font-size:var(--qtr-font-size-sm)}
.qtr-crm-table th,.qtr-crm-table td{padding:10px 12px;text-align:start;border-block-end:1px solid var(--qtr-border);vertical-align:middle}
.qtr-crm-table th{background:var(--qtr-surface-soft);font-weight:600;color:var(--qtr-muted-text);white-space:nowrap}
.qtr-crm-table tbody tr:last-child td{border-block-end:0}
.qtr-crm-table tbody tr:hover{background:var(--qtr-page-soft)}
.qtr-crm-dl{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;margin:0;font-size:var(--qtr-font-size-sm)}
.qtr-crm-dl dt{color:var(--qtr-muted-text)}
.qtr-crm-dl dd{margin:0;color:var(--qtr-ink)}
.qtr-crm-vcard{display:flex;flex-direction:column;gap:6px;padding:12px;border:1px solid var(--qtr-border);border-radius:var(--radius-card);background:var(--qtr-surface)}
.qtr-crm-party{display:flex;flex-direction:column;gap:10px}
.qtr-crm-role{font-size:var(--qtr-font-size-sm);color:var(--qtr-muted-text)}
.qtr-crm-src{color:var(--qtr-muted-text);font-size:var(--qtr-font-size-sm)}
.qtr-crm-prob{font-variant-numeric:tabular-nums;font-weight:600;color:var(--qtr-ink-strong)}
.qtr-crm-timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;border-inline-start:2px solid var(--qtr-border);padding-inline-start:16px}
.qtr-crm-timeline>li{display:flex;flex-direction:column;gap:4px;font-size:var(--qtr-font-size-sm);position:relative}
.qtr-crm-timeline>li::before{content:"";position:absolute;inset-inline-start:-21px;inset-block-start:6px;inline-size:8px;block-size:8px;border-radius:50%;background:var(--qtr-accent)}
.qtr-crm-list,.qtr-crm-acts,.qtr-crm-reports,.qtr-crm-rules{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.qtr-crm-list>li,.qtr-crm-acts>li,.qtr-crm-reports>li,.qtr-crm-rules>li{padding:10px 12px;border:1px solid var(--qtr-border);border-radius:var(--radius-control);background:var(--qtr-surface);font-size:var(--qtr-font-size-sm);display:flex;flex-wrap:wrap;align-items:center;gap:8px}
/* These lists wrap their row content in a <button>, so the row gap has to live on the
   button - putting it on the <li> spaces the button against nothing and the icon, label
   and code run together. The code chip trails to the row end in both writing directions. */
.qtr-crm-list>li>button,.qtr-crm-acts>li>button,.qtr-crm-reports>li>button,.qtr-crm-rules>li>button{appearance:none;background:none;border:0;margin:0;padding:0;font:inherit;color:inherit;cursor:pointer;inline-size:100%;display:flex;align-items:center;gap:10px;text-align:start}
.qtr-crm-list>li>button>i,.qtr-crm-acts>li>button>i,.qtr-crm-reports>li>button>i,.qtr-crm-rules>li>button>i{inline-size:18px;block-size:18px;color:var(--qtr-accent);flex:none}
.qtr-crm-list>li>button>span,.qtr-crm-acts>li>button>span,.qtr-crm-reports>li>button>span,.qtr-crm-rules>li>button>span{min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qtr-crm-list>li>button>code,.qtr-crm-acts>li>button>code,.qtr-crm-reports>li>button>code,.qtr-crm-rules>li>button>code{margin-inline-start:auto;flex:none;font-family:var(--qtr-font-mono);font-size:.78rem;color:var(--qtr-muted-text);background:var(--qtr-surface-soft);border-radius:var(--radius-control);padding:2px 8px;direction:ltr}
.qtr-crm-list>li:hover,.qtr-crm-acts>li:hover,.qtr-crm-reports>li:hover,.qtr-crm-rules>li:hover{border-color:var(--qtr-accent)}
.qtr-crm-list>li:focus-within,.qtr-crm-acts>li:focus-within,.qtr-crm-reports>li:focus-within,.qtr-crm-rules>li:focus-within{outline:2px solid var(--qtr-accent);outline-offset:2px}
.qtr-crm-error{display:flex;align-items:flex-start;gap:10px}
.qtr-crm-error>i,.qtr-crm-empty>i{flex:none;inline-size:20px;block-size:20px}
.qtr-crm-error p,.qtr-crm-empty p{margin:4px 0 0}
.qtr-crm-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:var(--qtr-font-size-sm);font-weight:600;white-space:nowrap;background:var(--qtr-surface-soft);color:var(--qtr-muted-text);border:1px solid var(--qtr-border)}
.qtr-crm-pill.ok{background:var(--qtr-success-soft);color:var(--qtr-ink-strong);border-color:transparent}
.qtr-crm-pill.info{background:var(--qtr-info-soft);color:var(--qtr-ink-strong);border-color:transparent}
.qtr-crm-pill.warn{background:var(--qtr-warning-soft);color:var(--qtr-ink-strong);border-color:transparent}
.qtr-crm-pill.bad{background:var(--qtr-danger-soft);color:var(--qtr-ink-strong);border-color:transparent}
.qtr-crm-pill.muted{background:var(--qtr-surface-soft);color:var(--qtr-muted-text)}
.qtr-crm-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-block-end:14px}
.qtr-crm-spacer{flex:1 1 auto}
.qtr-crm-search{flex:1 1 220px;min-inline-size:180px;display:flex;align-items:center}
.qtr-crm-search input{inline-size:100%;block-size:var(--qtr-control-height);padding:0 12px;border:1px solid var(--qtr-border);border-radius:var(--radius-control);background:var(--qtr-surface);color:var(--qtr-ink);font:inherit}
.qtr-crm-select{block-size:var(--qtr-control-height);padding:0 12px;border:1px solid var(--qtr-border);border-radius:var(--radius-control);background:var(--qtr-surface);color:var(--qtr-ink);font:inherit}
.qtr-crm-pager{display:flex;align-items:center;justify-content:center;gap:10px;margin-block-start:14px;font-size:var(--qtr-font-size-sm);color:var(--qtr-muted-text)}
.qtr-crm-actions{display:flex;flex-wrap:wrap;gap:8px;margin-block-start:12px}
.qtr-crm-cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.qtr-crm-day{min-block-size:92px;border:1px solid var(--qtr-border);border-radius:var(--radius-card);padding:8px;background:var(--qtr-surface);display:flex;flex-direction:column;gap:6px;font-size:var(--qtr-font-size-sm)}
.qtr-crm-ophead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-block-end:10px}
.qtr-crm-opstat{display:flex;flex-wrap:wrap;gap:14px;font-size:var(--qtr-font-size-sm);color:var(--qtr-muted-text)}
.qtr-crm-empty{text-align:center;padding:34px 16px;color:var(--qtr-muted-text);display:flex;flex-direction:column;align-items:center;gap:10px}
.qtr-crm-loading{padding:24px;text-align:center;color:var(--qtr-muted-text)}
.qtr-crm-error{padding:14px 16px;border-radius:var(--radius-card);background:var(--qtr-danger-soft);color:var(--qtr-ink-strong);border:1px solid var(--qtr-danger)}
.qtr-crm-notice{padding:12px 14px;border-radius:var(--radius-card);background:var(--qtr-info-soft);color:var(--qtr-ink-strong)}
.qtr-crm-hint{color:var(--qtr-muted-text);font-size:var(--qtr-font-size-sm);margin:0}
@media (max-width:720px){
  .qtr-crm-kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
  .qtr-crm-cal{grid-template-columns:repeat(2,minmax(0,1fr))}
  .qtr-crm-col{flex-basis:82vw}
  .qtr-crm-dl{grid-template-columns:1fr}
}

/* ── Support access banner ──────────────────────────────────────────────────────
   Fixed to the top of every screen while a platform staff member holds a live
   support session into a customer's company. There is no dismiss control and no
   setting: a banner you can hide records the session without disclosing it, and
   disclosure is the whole point.

   `position: sticky` rather than `fixed` so it participates in layout instead of
   covering the first row of whatever screen the agent is on. Colours come from the
   status tokens; the brand gate rejects a literal here and is right to. */
#qtr-support-banner[hidden] { display: none; }

.qtr-support-bar {
  position: sticky;
  top: 0;
  z-index: 900;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 16px;
  background: var(--qt-status-warning);
  color: var(--qt-status-warning-text);
  border-block-end: 1px solid var(--qt-border);
  font-size: 0.92rem;
  line-height: 1.4;
}

/* Five minutes out, the same bar reads as a deadline rather than a notice. The
   change is colour and weight only — never a new position or a new control, so it
   cannot be mistaken for a different element appearing. */
.qtr-support-bar.urgent {
  background: var(--qtr-danger-soft);
  color: var(--qtr-danger-text);
  font-weight: 600;
}

.qtr-support-bar i { flex: 0 0 auto; }
.qtr-support-text { flex: 1 1 auto; min-width: 0; }
.qtr-support-left { flex: 0 0 auto; font-variant-numeric: tabular-nums; opacity: .9; }

.qtr-support-end {
  flex: 0 0 auto;
  padding: 4px 12px;
  border: 1px solid currentColor;
  border-radius: var(--qt-radius-control);
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
}
.qtr-support-end:hover:not(:disabled) { background: var(--qt-surface); }
.qtr-support-end:disabled { opacity: .5; cursor: default; }

@media (max-width: 640px) {
  /* The countdown is the first thing to drop on a narrow screen, never the company
     name or the End control: what you are inside and how to leave it matter more
     than how long is left. */
  .qtr-support-bar { flex-wrap: wrap; }
  .qtr-support-left { order: 3; width: 100%; }
}

/* ── Platform users · the account-lifecycle notes and the hand-over link ── */
.qtr-users-note{margin:.5rem 0 0;font-size:.78rem;line-height:1.55;color:var(--qtr-muted-text)}
.qtr-users-link{width:100%;margin-top:.6rem;padding:.55rem .7rem;font:inherit;font-size:.76rem;
  line-height:1.5;direction:ltr;text-align:left;word-break:break-all;resize:vertical;
  border:1px solid var(--qtr-border);border-radius:8px;
  background:var(--qtr-surface-soft);color:var(--qtr-text)}
.qtr-users-link:focus{outline:2px solid var(--qtr-accent);outline-offset:1px}

/* ══ SECURITY CENTRE — measured layout corrections ═══════════════════════════
   Every rule below answers a number taken off the live page at 1460px, not an
   impression of the screenshot.

   1. EIGHT TILES IN FIVE COLUMNS. Both the KPI strip and the health strip hold
      exactly eight items, and auto-fit resolved to five columns at this width —
      so three sat alone on a second row, stretched wider than the five above
      them. auto-fit optimises for filling the line; it has no idea the set has a
      natural shape. Eight wants 4x2, and at every step down it wants 2x4 — never
      a remainder. So the counts are stated instead of discovered.

   2. TWO CARDS IN THREE COLUMNS. qtr-ts-grid resolved to 3x384px for two
      children: an entire empty column, a third of the row wasted, while the
      alert titles inside were being clipped for want of 12px. Alerts carry a
      title, a detail line and up to three controls; recommendations carry one
      line each. Equal columns were never right — 1.4fr/1fr gives the width to
      the side that has something to put in it.

   3. THE CLIPPED TITLE. Measured: scrollWidth 109 against clientWidth 97, which
      is why "Dormant account" rendered as "...mant account" — the ellipsis lands
      at the logical end, which in RTL is the left, so it ate the START of a
      Latin string and left something that reads like a different word. Two
      changes: the row's middle column may now actually shrink (a 1fr grid track
      has min-content as its floor, so min-inline-size:0 on the child alone never
      let it), and the title wraps to a second line rather than truncating.
      A title is not a place for an ellipsis when the card has room to wrap.

   4. ACTIONS THAT WRAP INSTEAD OF SQUEEZE. flex:none on the action cluster meant
      the chip and both buttons always won, and the text paid. They wrap now.  */

@media (min-width: 900px) {
  .qtr-ts-kpis{grid-template-columns:repeat(4,1fr)}
  .qtr-ts-health{grid-template-columns:repeat(4,1fr)}
  .qtr-ts-grid{grid-template-columns:1.4fr 1fr}
}
@media (min-width: 560px) and (max-width: 899.98px) {
  .qtr-ts-kpis,.qtr-ts-health{grid-template-columns:repeat(2,1fr)}
  .qtr-ts-grid{grid-template-columns:1fr}
}
@media (max-width: 559.98px) {
  .qtr-ts-kpis,.qtr-ts-health,.qtr-ts-grid{grid-template-columns:1fr}
}

/* The middle column must be allowed to shrink before the title can wrap: a 1fr
   track floors at min-content, so the child's own min-inline-size:0 was never
   reached. */
.qtr-sec-alert{grid-template-columns:auto minmax(0,1fr) auto;align-items:start}
.qtr-sec-alert-b{gap:3px}
.qtr-sec-alert-b b{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35;
  overflow-wrap:anywhere}
.qtr-sec-alert-b small{line-height:1.5}
.qtr-sec-alert-t{flex-wrap:wrap;justify-content:flex-end;flex:0 1 auto;padding-block-start:1px}
.qtr-sec-alert-ic{margin-block-start:1px}

/* The alert title and detail are English while the interface is Arabic. Without
   this the punctuation at the end of a Latin run reorders to the wrong side --
   the same bidirectional defect the sign-in screen's environment line had. */
.qtr-sec-alert-b b,.qtr-sec-alert-b small{unicode-bidi:plaintext}

/* The tiles were a fixed 38px icon beside a number that can reach three
   characters ("100%"), inside a 166px column. Letting the label wrap and the
   number shrink keeps "تغطية 2FA" on one line at every width above 300px. */
.qtr-ts-kpi{min-inline-size:0}
.qtr-ts-kpi>div{min-inline-size:0}
.qtr-ts-kpi span{display:block;overflow-wrap:anywhere}
.qtr-ts-hcheck{align-items:start}
.qtr-ts-hcheck>div{min-inline-size:0}
.qtr-ts-hcheck small{overflow-wrap:anywhere}

/* Tiles and recommendation rows that navigate are now <button>, so they need the
   button reset the rest of this sheet gives its controls -- otherwise the UA
   stylesheet centres their text and drops the inherited font. `is-link` is what
   separates a card you can press from one that only reports: the affordance is on
   the elements that have somewhere to go, and on no others. */
.qtr-ts-kpi,.qtr-sec-rec{font-family:inherit;color:inherit;text-align:start;inline-size:100%}
button.qtr-ts-kpi,button.qtr-sec-rec{cursor:pointer}
.qtr-ts-kpi.is-link,.qtr-sec-rec.is-link{transition:border-color var(--dur-fast) var(--ease),
  background-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}
.qtr-ts-kpi.is-link:hover{border-color:var(--accent-border);background:var(--surface-secondary)}
.qtr-sec-rec.is-link:hover{background:var(--accent-soft)}
.qtr-ts-kpi.is-link:focus-visible,.qtr-sec-rec.is-link:focus-visible{outline:2px solid var(--accent-border);outline-offset:2px}
.qtr-sec-rec{gap:10px}
.qtr-sec-rec span{flex:1;min-inline-size:0}
.qtr-sec-rec-go{margin-inline-start:auto;color:var(--text-muted)}
.qtr-sec-rec-go svg{inline-size:16px;block-size:16px}
@media (prefers-reduced-motion:no-preference){
  .qtr-ts-kpi.is-link:active{transform:scale(.99)}
}

/* The threat banner gained a reason line and a position on the scale, so it is no
   longer a two-item flex row. Grid, so the label stays put on the start edge while
   the level and the reason under it stack against the end edge and stay aligned
   with each other. */
.qtr-sec-threat{display:grid;grid-template-columns:1fr auto;align-items:center;
  row-gap:2px;column-gap:12px}
.qtr-sec-threat span{grid-column:1;grid-row:1}
.qtr-sec-threat b{grid-column:2;grid-row:1;text-align:end;display:flex;align-items:baseline;gap:7px}
.qtr-sec-threat small{grid-column:2;grid-row:2;text-align:end;font-size:.72rem;
  font-weight:700;color:var(--text-muted)}
/* The ordinal carries the ordering the words alone could not. Deliberately quiet:
   it disambiguates, it is not the headline. */
.qtr-sec-threat b em{font-style:normal;font-size:.7rem;font-weight:800;opacity:.72;
  padding:2px 7px;border-radius:999px;background:color-mix(in srgb,currentColor 13%,transparent);
  white-space:nowrap}

/* "11" beside a recommendation is a score out of 100, not a count. The
   denominator is smaller and muted so the number still reads first. */
.qtr-sec-rec-score{display:inline-flex;align-items:baseline;gap:1px;white-space:nowrap;
  font-variant-numeric:tabular-nums}
.qtr-sec-rec-score small{font-size:.68rem;font-weight:700;color:var(--text-muted);
  direction:ltr;unicode-bidi:isolate}

/* Owner console header chips: which deployment this is, and how long the
   sensitive authority lasts. The environment chip is styled `bad` on production
   deliberately -- it is not an error, it is the colour that should make an
   operator pause before suspending a tenant. */
.qtr-admin-chips{display:flex;flex-wrap:wrap;gap:8px;margin-block-start:10px}
.qtr-admin-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;
  border-radius:999px;font-size:.76rem;font-weight:800;border:1px solid var(--hairline);
  background:var(--surface-secondary);color:var(--text-secondary)}
.qtr-admin-chip svg{inline-size:14px;block-size:14px}
.qtr-admin-chip b{font-variant-numeric:tabular-nums;font-weight:900}
.qtr-admin-chip.ok{background:var(--qtr-success-soft);color:var(--qtr-success-text);
  border-color:color-mix(in srgb,var(--qtr-success) 30%,transparent)}
.qtr-admin-chip.wait{background:var(--qtr-warning-soft);color:var(--qtr-warning-text);
  border-color:color-mix(in srgb,var(--qtr-warning) 30%,transparent)}
.qtr-admin-chip.bad{background:var(--qtr-danger-soft);color:var(--qtr-danger-text);
  border-color:color-mix(in srgb,var(--qtr-danger) 30%,transparent)}
.qtr-admin-chip.muted{opacity:.85}

/* Owner console overview. Six tiles, stated as 3x2 and 2x3 rather than left to
   auto-fit -- the same orphan problem the security centre had, and six divides
   cleanly at both widths. */
.qtr-ov-tiles{display:grid;gap:12px;grid-template-columns:1fr}
@media (min-width:640px){.qtr-ov-tiles{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.qtr-ov-tiles{grid-template-columns:repeat(3,1fr)}}
.qtr-ov-tile{border:1px solid var(--hairline);border-radius:16px;padding:16px 18px;
  background:var(--shell-surface);display:flex;flex-direction:column;gap:3px;min-inline-size:0}
.qtr-ov-tile b{font-size:1.9rem;line-height:1;font-variant-numeric:tabular-nums}
.qtr-ov-tile span{font-size:.8rem;font-weight:800;color:var(--text-secondary)}
.qtr-ov-tile small{font-size:.72rem;color:var(--text-muted);overflow-wrap:anywhere}
.qtr-ov-h{margin:22px 0 10px;font-size:.95rem}
.qtr-ov-note{margin-top:12px;font-size:.78rem;line-height:1.7;color:var(--text-muted)}
/* The gap notice is styled as information, not as an error: "no data source yet"
   is an honest state of the build, and colouring it red would read as a fault. */
.qtr-ov-gap{margin-top:22px;padding:14px 16px;border-radius:14px;
  border:1px dashed var(--hairline);background:var(--surface-secondary)}
.qtr-ov-gap b{display:block;font-size:.86rem}
.qtr-ov-gap p{margin:6px 0 10px;font-size:.78rem;line-height:1.7;color:var(--text-muted)}

/* ══ OWNER CONSOLE — the grid item that could not shrink ═════════════════════
   Clicking Platform Roles stretched the whole console to 2965px on a 1024px
   viewport, and every tab visited afterwards inherited the stretched shell.

   Measured chain: .qtr-admin is display:grid at 958px, and .qtr-admin-body is a
   grid ITEM whose computed min-width was `auto`. A grid item defaults to
   min-width:auto, which means it may not shrink below its own content -- so
   instead of staying at 958 and letting the table's overflow-x:auto wrapper
   scroll, the item GREW and took the page with it. The wrapper was never the
   problem; it could not scroll because its parent had already given way.

   min-inline-size:0 is the whole fix for that. It is one of those CSS defaults
   that is correct for prose and wrong for anything that contains a wide table.

   The second half is the roles table itself: a permissions cell held 15 chips
   with white-space:nowrap, 2246px on one line. Even with a working scrollbar
   that is not readable. They wrap now, and the column is bounded. */
.qtr-admin-body{min-inline-size:0;max-inline-size:100%}
.qtr-admin-body>div[style*="overflow-x"]{max-inline-size:100%}
.qtr-admin-body table{max-inline-size:none}

/* Chips in a table cell wrap instead of forming one long line. The cell is
   capped so one role with many permissions cannot set the width of the table
   every other row then has to live with. */
.qtr-cell-chips{display:flex;flex-wrap:wrap;gap:4px;max-inline-size:42ch}
.qtr-cell-chips .qtr-chip{white-space:normal}

/* Belt and braces for the shell: nothing inside the console may push the page
   sideways, whatever a future view renders. */
.qtr-admin{min-inline-size:0;max-inline-size:100%;overflow-x:clip}
