/* ══════════════════════════════════════════════════════════════════
   TOKENS — herdam de design_system.html + extensões de produto
   ══════════════════════════════════════════════════════════════════ */
:root{
  /* — herdados (devem bater 1:1 com design_system.html) — */
  --brand-blue-50:#EAF3FF;--brand-blue-100:#C9DEFF;--brand-blue-200:#95C5FF;--brand-blue-300:#9ECAFF;
  --brand-blue-400:#2C8BFF;--brand-blue-500:#0E7AFF;--brand-blue-600:#0067E6;--brand-blue-700:#0052B8;
  --accent-cyan:#89E8FF;--accent-violet:#D6C7FF;--accent-pink:#FC75C1;--accent-orange:#FF8C50;--accent-mint:#B6F0D9;
  --gray-0:#FFFFFF;--gray-50:#FAFAFA;--gray-100:#F5F5F5;--gray-150:#F2F2F2;--gray-200:#E8E8E8;--gray-300:#D4D4D4;
  --gray-400:#B6D8FF;--gray-500:#999999;--gray-700:#4A4A4A;--gray-900:#1B1C1D;--black:#000000;
  --success:#16A34A;--warning:#F59E0B;--danger:#EF4444;
  --bg:#FCFCFD;--bg-elevated:#FFFFFF;--bg-soft:#F7F8FB;
  --border:rgba(15,23,42,0.08);--border-strong:rgba(15,23,42,0.16);
  --font-display:"Inter",system-ui,-apple-system,sans-serif;
  --font-sans:"Inter",system-ui,-apple-system,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,"SF Mono",monospace;
  --text-7xl:clamp(4rem,12vw,11.5rem);--text-6xl:clamp(3rem,8vw,7rem);--text-5xl:clamp(2.4rem,5.5vw,4.5rem);
  --text-4xl:clamp(2rem,4vw,3rem);--text-3xl:2.25rem;--text-2xl:1.75rem;--text-xl:1.375rem;
  --text-lg:1.125rem;--text-md:1rem;--text-sm:0.875rem;--text-xs:0.75rem;
  --radius-xs:4px;--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--radius-xl:28px;--radius-full:999px;
  --shadow-xs:0 1px 2px rgba(15,23,42,0.04);
  --shadow-sm:0 2px 4px rgba(27,28,29,0.04);
  --shadow-md:0 8px 24px rgba(15,23,42,0.06),0 2px 6px rgba(15,23,42,0.04);
  --shadow-lg:0 24px 48px rgba(15,23,42,0.08),0 4px 12px rgba(15,23,42,0.04);
  --shadow-glow:0 0 60px rgba(44,139,255,.18);
  --ease-out:cubic-bezier(.16,1,.3,1);--ease-spring:cubic-bezier(.34,1.56,.64,1);
  --dur-fast:180ms;--dur-base:320ms;--dur-slow:640ms;

  /* — aliases semânticos (preparam dark mode futuro) — */
  --surface:var(--bg-elevated);
  --surface-raised:#ffffff;
  --surface-sunken:var(--bg-soft);
  --text:var(--gray-900);
  --text-muted:var(--gray-700);
  --text-subtle:var(--gray-500);
  --border-hover:var(--border-strong);
  --focus:rgba(14,122,255,0.20);

  /* — spacing — */
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;
  --space-6:24px;--space-7:32px;--space-8:40px;--space-9:48px;--space-10:64px;--space-11:80px;

  /* — densidade — */
  --row-h-comfortable:56px;--row-h-compact:44px;
  --input-h-sm:32px;--input-h-md:40px;--input-h-lg:48px;

  /* — shell — */
  --sidebar-w:280px;--sidebar-w-collapsed:72px;--topbar-h:64px;

  /* — table — */
  --table-stripe:rgba(15,23,42,0.015);
}

/* ══════════════════════════════════════════════════════════════════
   RESET & BASE
   ══════════════════════════════════════════════════════════════════ */
*,*::before,*::after{box-sizing:border-box;}
html,body{margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{
  font-family:var(--font-sans);
  font-weight:400;
  font-size:16px;
  line-height:1.55;
  color:var(--text);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
img,svg{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit;}
input,select,textarea{font:inherit;color:inherit;}
::selection{background:var(--brand-blue-400);color:#fff;}
::-webkit-scrollbar{width:10px;height:10px;}
::-webkit-scrollbar-track{background:var(--gray-100);}
::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--brand-blue-300),var(--brand-blue-600));border-radius:99px;}

/* Focus ring universal */
:focus{outline:0;}
:focus-visible{box-shadow:0 0 0 4px var(--focus);}

/* Atmosfera suavizada (~30% da landing) */
.bg-mesh{
  position:fixed;inset:0;pointer-events:none;z-index:-1;
  background:
    radial-gradient(60% 40% at 12% 8%, rgba(149,197,255,.10), transparent 60%),
    radial-gradient(50% 35% at 88% 12%, rgba(44,139,255,.06), transparent 60%),
    radial-gradient(55% 40% at 90% 90%, rgba(14,122,255,.05), transparent 60%),
    radial-gradient(45% 35% at 8% 92%, rgba(201,222,255,.12), transparent 60%),
    linear-gradient(180deg, #FCFCFD 0%, #F7FAFE 100%);
}

/* reveal */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease-out),transform .6s var(--ease-out);}
.reveal.is-visible{opacity:1;transform:none;}

/* ══════════════════════════════════════════════════════════════════
   NAV STICKY + HERO
   ══════════════════════════════════════════════════════════════════ */
.ds-nav{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;gap:24px;
  padding:12px 32px;
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--border);
}
.ds-nav__brand{display:flex;align-items:center;gap:8px;font-weight:700;}
.ds-nav__brand span{color:var(--text-subtle);font-weight:500;font-size:14px;}
.ds-nav__links{display:flex;gap:8px;margin:0;padding:0;list-style:none;flex-wrap:wrap;}
.ds-nav__links a{
  padding:6px 12px;border-radius:var(--radius-full);
  font-size:14px;color:var(--text-muted);
  transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);
}
.ds-nav__links a:hover{background:var(--gray-100);color:var(--text);}

.ds-hero{padding:80px 32px 64px;max-width:1280px;margin:0 auto;}
.ds-hero__chips{display:flex;gap:8px;margin-bottom:24px;}
.ds-chip{
  display:inline-flex;align-items:center;padding:4px 12px;
  border-radius:var(--radius-full);background:var(--gray-100);
  font-size:12px;color:var(--text-muted);
}
.ds-chip--mono{font-family:var(--font-mono);}
.ds-hero h1{font-size:var(--text-5xl);font-weight:800;line-height:1.05;letter-spacing:-.03em;margin:0 0 16px;}
.ds-hero h1 em{font-style:normal;color:var(--brand-blue-500);}
.ds-hero p{max-width:640px;color:var(--text-muted);font-size:var(--text-lg);margin:0;}

/* ══════════════════════════════════════════════════════════════════
   SIDEBAR
   ══════════════════════════════════════════════════════════════════ */
.sb{display:flex;flex-direction:column;height:100%;width:var(--sidebar-w);transition:width var(--dur-base) var(--ease-out);}
.sb--collapsed{width:var(--sidebar-w-collapsed);}
.sb__brand{display:flex;align-items:center;gap:10px;padding:18px 20px;height:var(--topbar-h);}
.sb__brand img{height:22px;}
.sb__brand-name{font-weight:700;font-size:15px;}
.sb--collapsed .sb__brand-name{display:none;}
.sb__nav{flex:1;overflow-y:auto;padding:8px 12px 16px;}
.sb__group{margin-top:16px;}
.sb__group-label{font:600 11px/1 var(--font-mono);letter-spacing:.08em;color:var(--text-subtle);text-transform:uppercase;padding:8px 12px;}
.sb--collapsed .sb__group-label{height:1px;background:var(--border);overflow:hidden;text-indent:-9999px;padding:0;margin:8px 12px;}

.sb__item{
  display:flex;align-items:center;gap:12px;
  padding:8px 12px;border-radius:var(--radius-sm);
  font-size:14px;color:var(--text-muted);
  cursor:pointer;position:relative;
  transition:background var(--dur-fast),color var(--dur-fast);
}
.sb__item:hover{background:var(--gray-100);color:var(--text);}
.sb__item i[data-lucide]{width:18px;height:18px;flex-shrink:0;}
.sb__item-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sb--collapsed .sb__item-label,.sb--collapsed .sb__badge,.sb--collapsed .sb__chevron{display:none;}
.sb__badge{padding:2px 8px;border-radius:var(--radius-full);font-size:11px;font-weight:600;}
.sb__badge--neutral{background:var(--gray-200);color:var(--text-muted);}
.sb__badge--attn{background:var(--brand-blue-500);color:#fff;}
.sb__item--active{background:var(--brand-blue-50);color:var(--brand-blue-700);font-weight:600;}
.sb__item--active::before{content:"";position:absolute;left:-12px;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--brand-blue-500);}
.sb__chevron{transition:transform var(--dur-fast);width:14px;height:14px;}
.sb__item--open .sb__chevron{transform:rotate(180deg);}
.sb__subgroup{margin-left:30px;border-left:1px solid var(--border);padding-left:8px;margin-top:4px;}
.sb__subgroup .sb__item{padding:6px 10px;font-size:13px;}
.sb--collapsed .sb__subgroup{display:none;}

.sb__user{
  border-top:1px solid var(--border);
  padding:12px;display:flex;align-items:center;gap:10px;
  cursor:pointer;transition:background var(--dur-fast);position:relative;
}
.sb__user:hover{background:var(--gray-100);}
.sb__user-avatar{width:32px;height:32px;border-radius:var(--radius-full);background:linear-gradient(135deg,var(--brand-blue-300),var(--brand-blue-600));flex-shrink:0;}
.sb__user-info{flex:1;min-width:0;}
.sb__user-name{font-size:13px;font-weight:600;}
.sb__user-email{font-size:11px;color:var(--text-subtle);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sb--collapsed .sb__user-info,.sb--collapsed .sb__user-chevron{display:none;}

.sb__user-popover{
  position:absolute;bottom:64px;left:12px;right:12px;
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius-md);box-shadow:var(--shadow-lg);
  padding:6px;z-index:5;
}
.sb__user-popover a{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);font-size:13px;color:var(--text);}
.sb__user-popover a:hover{background:var(--gray-100);}
.sb__user-popover a i[data-lucide]{width:16px;height:16px;color:var(--text-subtle);}
.sb__user-popover a.is-danger{color:var(--danger);}
.sb__user-popover hr{border:0;border-top:1px solid var(--border);margin:4px 0;}

/* Demo container */
.ds-sb-demo{display:inline-block;height:560px;border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface);margin-right:16px;vertical-align:top;}

/* ══════════════════════════════════════════════════════════════════
   TOPBAR
   ══════════════════════════════════════════════════════════════════ */
.tb{display:flex;align-items:center;gap:16px;height:100%;width:100%;}
.tb__menu{width:36px;height:36px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);}
.tb__menu:hover{background:var(--gray-100);color:var(--text);}
.tb__search{
  flex:1;max-width:520px;height:40px;display:flex;align-items:center;gap:8px;
  padding:0 12px;background:var(--gray-100);border:1px solid transparent;border-radius:var(--radius-md);
  font-size:14px;color:var(--text-subtle);
  cursor:text;transition:background var(--dur-fast),border-color var(--dur-fast),box-shadow var(--dur-fast);
}
.tb__search:hover{background:var(--gray-150);}
.tb__search.is-focused,.tb__search:focus-within{background:var(--surface);border-color:var(--brand-blue-300);box-shadow:0 0 0 4px var(--focus);color:var(--text);}
.tb__search input{flex:1;border:0;outline:0;background:transparent;}
.tb__search i[data-lucide]{width:16px;height:16px;}
.tb__kbd{font-family:var(--font-mono);font-size:11px;padding:2px 6px;background:var(--surface);border:1px solid var(--border);border-radius:4px;box-shadow:var(--shadow-xs);color:var(--text-muted);}
.tb__icon-btn{position:relative;width:36px;height:36px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);}
.tb__icon-btn:hover{background:var(--gray-100);color:var(--text);}
.tb__dot{position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--brand-blue-500);box-shadow:0 0 0 2px var(--surface);}
.tb__tenant{display:flex;align-items:center;gap:8px;padding:6px 12px 6px 8px;border-radius:var(--radius-full);background:var(--gray-100);font-size:13px;font-weight:500;}
.tb__tenant:hover{background:var(--gray-150);}
.tb__tenant-logo{width:20px;height:20px;border-radius:6px;background:linear-gradient(135deg,var(--accent-cyan),var(--brand-blue-500));}
.tb__avatar{width:32px;height:32px;border-radius:var(--radius-full);background:linear-gradient(135deg,var(--accent-pink),var(--accent-orange));margin-left:auto;}

.ds-topbar-demo{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;background:var(--surface);}
.ds-topbar-demo .app-topbar{border-bottom:0;}

/* ══════════════════════════════════════════════════════════════════
   TABS / BREADCRUMB / PAGINATION
   ══════════════════════════════════════════════════════════════════ */
.tabs{display:inline-flex;gap:4px;}
.tabs--segmented{background:var(--gray-100);border-radius:var(--radius-sm);padding:4px;}
.tabs--segmented .tabs__tab{padding:6px 14px;border-radius:6px;font-size:13px;color:var(--text-muted);}
.tabs--segmented .tabs__tab.is-active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-xs);}
.tabs--underline{gap:24px;border-bottom:1px solid var(--border);}
.tabs--underline .tabs__tab{padding:12px 0;font-size:14px;color:var(--text-muted);position:relative;}
.tabs--underline .tabs__tab.is-active{color:var(--brand-blue-600);font-weight:600;}
.tabs--underline .tabs__tab.is-active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--brand-blue-500);}

.bc{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text-subtle);}
.bc a{color:var(--text-muted);}
.bc a:hover{color:var(--text);}
.bc i[data-lucide]{width:14px;height:14px;}
.bc span{color:var(--text);}

.pgn{display:flex;align-items:center;gap:16px;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);font-size:13px;}
.pgn__range{color:var(--text-subtle);}
.pgn__sizer{display:flex;align-items:center;gap:8px;margin-left:auto;}
.pgn__sizer label{color:var(--text-subtle);}
.pgn__sizer select{height:28px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 8px;background:var(--surface);}
.pgn__nav{display:flex;align-items:center;gap:6px;}
.pgn__nav button{width:28px;height:28px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);}
.pgn__nav button:hover{background:var(--gray-100);color:var(--text);}
.pgn__nav span{margin:0 8px;color:var(--text-muted);}

/* ══════════════════════════════════════════════════════════════════
   APP SHELL
   ══════════════════════════════════════════════════════════════════ */
.app-shell{
  display:grid;
  grid-template-columns:var(--sidebar-w) 1fr;
  min-height:720px;
  background:var(--surface-sunken);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  overflow:hidden;
}
.app-shell--collapsed{grid-template-columns:var(--sidebar-w-collapsed) 1fr;}
.app-shell__sidebar{background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;}
.app-shell__main{display:flex;flex-direction:column;min-width:0;}
.app-topbar{
  height:var(--topbar-h);
  display:flex;align-items:center;gap:16px;
  padding:0 24px;
  background:var(--surface);
  border-bottom:1px solid var(--border);
}
.app-page{padding:24px 32px;overflow:auto;flex:1;}

/* Page header */
.page-header{margin-bottom:24px;}
.page-header__breadcrumb{
  display:flex;align-items:center;gap:8px;
  font-size:13px;color:var(--text-subtle);
  margin-bottom:8px;
}
.page-header__breadcrumb i[data-lucide]{width:14px;height:14px;}
.page-header__title-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.page-header__title{font-size:var(--text-3xl);font-weight:700;margin:0;letter-spacing:-.02em;}
.page-header__meta{font-size:13px;color:var(--text-subtle);margin-top:4px;}
.page-header__actions{display:flex;gap:8px;}
.page-header__tabs{display:flex;gap:4px;margin-top:16px;border-bottom:1px solid var(--border);}
.page-header__chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}

/* ══════════════════════════════════════════════════════════════════
   BUTTONS — base (variantes expandidas na Task 6)
   .ds-btn base + --ghost já definidos na seção FOUNDATIONS abaixo.
   ══════════════════════════════════════════════════════════════════ */
.ds-btn--primary{background:var(--brand-blue-500);color:#fff;}
.ds-btn--primary:hover{background:var(--brand-blue-600);}
.ds-btn--secondary{background:var(--surface);border:1px solid var(--border);}
.ds-btn--secondary:hover{border-color:var(--border-hover);}

/* ══════════════════════════════════════════════════════════════════
   FOUNDATIONS
   ══════════════════════════════════════════════════════════════════ */
.ds-section{max-width:1280px;margin:0 auto;padding:64px 32px;border-top:1px solid var(--border);}
.ds-section__head{margin-bottom:48px;}
.ds-section__kicker{font:500 11px/1 var(--font-mono);letter-spacing:.12em;color:var(--text-subtle);text-transform:uppercase;}
.ds-section__head h2{font-size:var(--text-4xl);font-weight:700;margin:8px 0 0;letter-spacing:-.02em;}
.ds-h3{font-size:18px;font-weight:600;margin:32px 0 16px;color:var(--text);}

/* Swatches */
.ds-swatches{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.ds-swatches > div{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px;}
.ds-swatch__chip{width:100%;height:64px;border-radius:var(--radius-sm);border:1px solid var(--border);margin-bottom:12px;}
.ds-swatch__name{font-size:13px;font-weight:600;color:var(--text);}
.ds-swatch__token{display:block;font-family:var(--font-mono);font-size:11px;color:var(--text-subtle);margin-top:4px;}

/* Spacing ruler */
.ds-spacing-ruler{display:flex;align-items:flex-end;gap:16px;}
.ds-spacing-ruler > div{display:flex;flex-direction:column;align-items:center;gap:8px;}
.ds-spacing-ruler i{display:block;background:var(--brand-blue-400);border-radius:2px;width:16px;}
.ds-spacing-ruler small{font-family:var(--font-mono);font-size:11px;color:var(--text-subtle);}

/* Type table */
.ds-type-table{width:100%;border-collapse:collapse;}
.ds-type-table th,.ds-type-table td{padding:12px;border-bottom:1px solid var(--border);text-align:left;font-size:14px;}
.ds-type-table th{color:var(--text-subtle);font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.04em;}

/* Focus demo */
.ds-focus-demo{display:flex;gap:12px;align-items:center;}
.ds-btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:var(--input-h-md);padding:0 16px;border-radius:var(--radius-sm);
  font-size:14px;font-weight:500;
  transition:background var(--dur-fast) var(--ease-out);
}
.ds-btn--ghost{background:transparent;color:var(--text-muted);}
.ds-btn--ghost:hover{background:var(--gray-100);color:var(--text);}

/* tamanhos extras */
.ds-btn--sm{height:var(--input-h-sm);font-size:13px;padding:0 10px;}
.ds-btn--lg{height:var(--input-h-lg);font-size:15px;padding:0 18px;}

/* ícones lucide dentro de botões — depois do lucide.createIcons() o <i> vira <svg> */
.ds-btn{gap:6px;}
.ds-btn--sm{gap:4px;}
.ds-btn > svg{width:14px;height:14px;flex-shrink:0;}
.ds-btn--sm > svg{width:13px;height:13px;}
.ds-btn--lg > svg{width:16px;height:16px;}

/* variantes extras */
.ds-btn--danger{background:var(--danger);color:#fff;}
.ds-btn--danger:hover{filter:brightness(.92);}
.ds-btn--danger-ghost{color:var(--danger);}
.ds-btn--danger-ghost:hover{background:rgba(239,68,68,.08);}
.ds-btn[disabled],.ds-btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none;}

/* icon button */
.ds-icon-btn{width:var(--input-h-md);height:var(--input-h-md);padding:0;justify-content:center;}
.ds-icon-btn.ds-btn--sm{width:var(--input-h-sm);height:var(--input-h-sm);}

/* button group */
.ds-btn-group{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;}
.ds-btn-group > .ds-btn{border-radius:0;border:0;background:var(--surface);color:var(--text-muted);}
.ds-btn-group > .ds-btn:hover{background:var(--gray-100);color:var(--text);}
.ds-btn-group > .ds-btn + .ds-btn{border-left:1px solid var(--border);}
.ds-btn-group > .ds-btn.is-active{background:var(--brand-blue-50);color:var(--brand-blue-700);}

/* split button */
.ds-split{display:inline-flex;border-radius:var(--radius-sm);overflow:hidden;}
.ds-split > .ds-btn{border-radius:0;}
.ds-split > .ds-btn:first-child{border-right:1px solid rgba(255,255,255,.18);}

/* loading state */
.ds-btn.is-loading{position:relative;color:transparent;pointer-events:none;}
.ds-btn.is-loading::after{content:"";position:absolute;left:50%;top:50%;width:14px;height:14px;border:2px solid #fff;border-right-color:transparent;border-radius:50%;transform:translate(-50%,-50%);animation:ds-spin .8s linear infinite;}
@keyframes ds-spin{to{transform:translate(-50%,-50%) rotate(360deg);}}

/* dropdown / action menu */
.ds-menu{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:6px;min-width:220px;}
.ds-menu__item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);font-size:13px;cursor:pointer;color:var(--text);}
.ds-menu__item:hover{background:var(--gray-100);}
.ds-menu__item i[data-lucide]{width:16px;height:16px;color:var(--text-subtle);}
.ds-menu__item.is-danger{color:var(--danger);}
.ds-menu__item .ds-menu__kbd{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--text-subtle);}
.ds-menu__divider{height:1px;background:var(--border);margin:4px 0;}

.ds-btn-matrix{border-collapse:collapse;}
.ds-btn-matrix th,.ds-btn-matrix td{padding:8px 12px;text-align:left;}
.ds-btn-matrix th{font-size:12px;font-weight:500;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.04em;}
.ds-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;}

/* Density comparison */
.ds-density-cmp{display:grid;grid-template-columns:1fr 1fr;gap:24px;}
.ds-density-cmp__col{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);overflow:hidden;}
.ds-density-cmp__label{
  padding:8px 16px;background:var(--surface-sunken);
  font:500 11px/1 var(--font-mono);letter-spacing:.08em;
  color:var(--text-subtle);text-transform:uppercase;
  border-bottom:1px solid var(--border);
}
.ds-density-cmp__table{width:100%;border-collapse:collapse;font-size:14px;}
.ds-density-cmp__table td{padding:0 16px;border-bottom:1px solid var(--border);color:var(--text);}
.ds-density-cmp__table tr:last-child td{border-bottom:0;}
.ds-density-cmp__table--comfortable td{height:var(--row-h-comfortable);}
.ds-density-cmp__table--compact td{height:var(--row-h-compact);}
.ds-density-cmp__table td:last-child{color:var(--text-subtle);text-align:right;font-family:var(--font-mono);font-size:13px;}

/* Elevation */
.ds-elevation{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.ds-elevation__card{padding:24px;border-radius:var(--radius-md);background:var(--surface);text-align:center;}
.ds-elevation__card--flat{box-shadow:none;border:1px solid var(--border);}
.ds-elevation__card--raised{box-shadow:var(--shadow-sm);}
.ds-elevation__card--overlay{box-shadow:var(--shadow-md);}
.ds-elevation__card--modal{box-shadow:var(--shadow-lg);}
.ds-elevation strong{display:block;font-size:14px;font-weight:600;margin-bottom:4px;}
.ds-elevation small{font-family:var(--font-mono);font-size:11px;color:var(--text-subtle);}

/* ══════════════════════════════════════════════════════════════════
   INPUTS
   ══════════════════════════════════════════════════════════════════ */
.ds-input,.ds-select,.ds-textarea{
  display:inline-flex;align-items:center;
  height:var(--input-h-md);padding:0 12px;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);
  font-size:14px;color:var(--text);
  transition:border-color var(--dur-fast),box-shadow var(--dur-fast);
  width:100%;max-width:320px;
}
.ds-textarea{height:auto;padding:10px 12px;min-height:96px;display:block;resize:vertical;}
.ds-input:hover,.ds-select:hover,.ds-textarea:hover{border-color:var(--border-hover);}
.ds-input:focus,.ds-select:focus,.ds-textarea:focus{outline:0;border-color:var(--brand-blue-300);box-shadow:0 0 0 4px var(--focus);}
.ds-input--sm{height:var(--input-h-sm);font-size:13px;}
.ds-input--lg{height:var(--input-h-lg);font-size:15px;}
.ds-input.is-error,.ds-select.is-error,.ds-textarea.is-error{border-color:var(--danger);}
.ds-input.is-error:focus{box-shadow:0 0 0 4px rgba(239,68,68,.18);}
.ds-input:disabled,.ds-select:disabled{background:var(--gray-50);color:var(--text-subtle);cursor:not-allowed;}

.ds-field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px;}
.ds-field__label{font-size:13px;font-weight:500;color:var(--text);}
.ds-field__hint{font-size:12px;color:var(--text-subtle);}
.ds-field__error{font-size:12px;color:var(--danger);display:flex;align-items:center;gap:4px;}

.ds-input-group{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);max-width:320px;}
.ds-input-group:focus-within{border-color:var(--brand-blue-300);box-shadow:0 0 0 4px var(--focus);}
.ds-input-group__addon{display:inline-flex;align-items:center;padding:0 12px;color:var(--text-subtle);background:var(--surface-sunken);border-right:1px solid var(--border);}
.ds-input-group__addon--suffix{border-right:0;border-left:1px solid var(--border);}
.ds-input-group input{border:0;padding:0 12px;height:var(--input-h-md);background:transparent;outline:0;flex:1;min-width:0;}

.ds-search{display:inline-flex;align-items:center;gap:8px;height:var(--input-h-md);padding:0 12px;background:var(--gray-100);border-radius:var(--radius-md);width:320px;}
.ds-search i[data-lucide]{width:16px;height:16px;color:var(--text-subtle);}
.ds-search input{flex:1;border:0;outline:0;background:transparent;font-size:14px;}

.ds-check,.ds-radio{appearance:none;width:18px;height:18px;border:1.5px solid var(--gray-300);border-radius:4px;background:var(--surface);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all var(--dur-fast);flex-shrink:0;}
.ds-radio{border-radius:50%;}
.ds-check:checked,.ds-radio:checked{background:var(--brand-blue-500);border-color:var(--brand-blue-500);}
.ds-check:checked::after{content:"";width:10px;height:10px;background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="white"><path d="M13.5 4.5l-7 7-3-3 1-1 2 2 6-6z"/></svg>') center/contain no-repeat;}
.ds-radio:checked::after{content:"";width:6px;height:6px;border-radius:50%;background:#fff;}

.ds-switch{position:relative;display:inline-flex;width:36px;height:20px;flex-shrink:0;}
.ds-switch input{opacity:0;width:0;height:0;position:absolute;}
.ds-switch__track{position:absolute;inset:0;background:var(--gray-300);border-radius:999px;transition:background var(--dur-fast);}
.ds-switch__thumb{position:absolute;left:2px;top:2px;width:16px;height:16px;background:#fff;border-radius:50%;box-shadow:var(--shadow-sm);transition:transform var(--dur-base) var(--ease-spring);}
.ds-switch input:checked ~ .ds-switch__track{background:var(--brand-blue-500);}
.ds-switch input:checked ~ .ds-switch__thumb{transform:translateX(16px);}

.ds-upload{border:1.5px dashed var(--border-strong);border-radius:var(--radius-md);padding:24px;text-align:center;background:var(--surface-sunken);cursor:pointer;transition:border-color var(--dur-fast),background var(--dur-fast);max-width:320px;}
.ds-upload:hover{border-color:var(--brand-blue-300);background:#F5FAFF;}
.ds-upload i[data-lucide]{width:24px;height:24px;color:var(--text-subtle);margin:0 auto 8px;display:block;}

.ds-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px 32px;align-items:start;}

/* ══════════════════════════════════════════════════════════════════
   DATA TABLE
   ══════════════════════════════════════════════════════════════════ */
.dt{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);
  overflow:hidden;
}
.dt__toolbar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);height:56px;}
.dt__title{font-size:15px;font-weight:600;}
.dt__count{color:var(--text-subtle);font-size:13px;}
.dt__filters-row{display:flex;gap:8px;align-items:center;padding:12px 16px;background:var(--surface-sunken);border-bottom:1px solid var(--border);}
.dt__actions{margin-left:auto;display:flex;gap:8px;align-items:center;}
.dt__chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-full);background:var(--brand-blue-50);color:var(--brand-blue-700);font-size:12px;font-weight:500;}
.dt__chip button{color:inherit;display:inline-flex;align-items:center;padding:0;background:transparent;}
.dt__chip button:hover{color:var(--brand-blue-500);}

.dt__table{width:100%;border-collapse:collapse;font-size:14px;}
.dt__table thead th{
  position:sticky;top:0;background:var(--gray-50);
  padding:0 16px;height:44px;text-align:left;
  font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);
  border-bottom:1px solid var(--border);
  white-space:nowrap;
}
.dt__table thead th.is-sorted{color:var(--brand-blue-700);}
.dt__table thead th .sort-arrow{display:inline-flex;margin-left:4px;color:var(--text-subtle);vertical-align:middle;}
.dt__table thead th.is-sorted .sort-arrow{color:var(--brand-blue-600);}
.dt__table tbody td{padding:0 16px;height:var(--row-h-comfortable);border-bottom:1px solid var(--border);vertical-align:middle;}
.dt--compact .dt__table tbody td{height:var(--row-h-compact);}
.dt--stripe .dt__table tbody tr:nth-child(2n) td{background:var(--table-stripe);}
.dt__table tbody tr:hover td{background:var(--gray-50);}
.dt__table tbody tr.is-selected td{background:var(--brand-blue-50);}
.dt__table tbody tr:last-child td{border-bottom:0;}

.dt__col-check{width:48px;}
.dt__col-actions{width:56px;text-align:right;}
.dt__num{text-align:right;font-variant-numeric:tabular-nums;}

.dt__avatar-cell{display:flex;align-items:center;gap:10px;}
.dt__avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--accent-violet),var(--brand-blue-400));flex-shrink:0;}
.dt__avatar-cell .nm{font-weight:500;font-size:14px;line-height:1.2;}
.dt__avatar-cell .em{font-size:12px;color:var(--text-subtle);}

.dt__status{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:var(--radius-full);font-size:12px;font-weight:500;}
.dt__status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;}
.dt__status--success{background:rgba(22,163,74,.10);color:var(--success);}
.dt__status--warn{background:rgba(245,158,11,.12);color:#A16207;}
.dt__status--danger{background:rgba(239,68,68,.10);color:var(--danger);}
.dt__status--neutral{background:var(--gray-100);color:var(--text-muted);}

.dt__pagination{display:flex;align-items:center;gap:16px;padding:12px 16px;border-top:1px solid var(--border);background:var(--surface);font-size:13px;}
.dt__pagination .pgn__range{color:var(--text-subtle);}

/* bulk action bar */
.dt__bulk{
  margin-top:-1px;display:flex;align-items:center;gap:12px;
  padding:12px 16px;background:var(--brand-blue-600);color:#fff;border-radius:0 0 var(--radius-md) var(--radius-md);
}
.dt__bulk-count{font-weight:600;}
.dt__bulk .ds-btn{color:#fff;background:transparent;border:1px solid rgba(255,255,255,.32);}
.dt__bulk .ds-btn:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.48);}
.dt__bulk .ds-btn--danger{background:rgba(255,255,255,.12);}
.dt__bulk .ds-btn--danger:hover{background:rgba(255,255,255,.22);}

/* empty / loading */
.dt__empty{padding:64px 24px;text-align:center;}
.dt__empty > svg{width:96px;height:96px;margin:0 auto 16px;display:block;color:var(--gray-300);}
.dt__empty h4{font-size:18px;font-weight:600;margin:0 0 4px;}
.dt__empty p{color:var(--text-subtle);margin:0 0 16px;}
.dt__skeleton-row td{padding:14px 16px;height:auto;border-bottom:1px solid var(--border);}
.dt__skeleton-bar{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--gray-100),var(--gray-200),var(--gray-100));background-size:200% 100%;animation:sk 1.4s ease-in-out infinite;}
@keyframes sk{0%{background-position:200% 0;}100%{background-position:-200% 0;}}

/* ══════════════════════════════════════════════════════════════════
   KPI / STAT CARDS
   ══════════════════════════════════════════════════════════════════ */
.ds-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.ds-kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:20px;}
.ds-kpi__label{font-size:13px;color:var(--text-subtle);margin-bottom:8px;}
.ds-kpi__value{font-size:28px;font-weight:700;letter-spacing:-.02em;line-height:1.1;}
.ds-kpi__delta{font-size:12px;font-weight:500;display:inline-flex;align-items:center;gap:4px;margin-top:4px;}
.ds-kpi__delta i[data-lucide]{width:12px;height:12px;}
.ds-kpi__delta--up{color:var(--success);}
.ds-kpi__delta--down{color:var(--danger);}
.ds-kpi__sparkline{margin-top:12px;width:100%;height:48px;display:block;}

/* ══════════════════════════════════════════════════════════════════
   LIST
   ══════════════════════════════════════════════════════════════════ */
.ds-list{list-style:none;margin:0;padding:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;max-width:560px;}
.ds-list li{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);}
.ds-list li:last-child{border-bottom:0;}
.ds-list li > div.ds-list__body{flex:1;min-width:0;}
.ds-list li .nm{font-weight:500;font-size:14px;line-height:1.2;}
.ds-list li .em{font-size:12px;color:var(--text-subtle);margin-top:2px;}

/* ══════════════════════════════════════════════════════════════════
   TREE
   ══════════════════════════════════════════════════════════════════ */
.ds-tree{list-style:none;margin:0;padding:0;font-size:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px 16px;max-width:360px;}
.ds-tree li{padding:4px 0 4px 24px;position:relative;cursor:pointer;color:var(--text-muted);}
.ds-tree li:hover{color:var(--text);}
.ds-tree li::before{content:"";position:absolute;left:8px;top:11px;width:6px;height:6px;border-right:1.5px solid var(--text-subtle);border-bottom:1.5px solid var(--text-subtle);transform:rotate(-45deg);transition:transform var(--dur-fast);}
.ds-tree li.is-open::before{transform:rotate(45deg);top:9px;}
.ds-tree li.is-leaf::before{border:0;width:4px;height:4px;border-radius:50%;background:var(--text-subtle);top:14px;}
.ds-tree li ul{list-style:none;padding-left:16px;margin:4px 0 0;display:none;}
.ds-tree li.is-open > ul{display:block;}
.ds-tree li.is-section{font:600 11px/1 var(--font-mono);letter-spacing:.08em;color:var(--text-subtle);text-transform:uppercase;}

/* ══════════════════════════════════════════════════════════════════
   FEEDBACK
   ══════════════════════════════════════════════════════════════════ */
.ds-toast{display:inline-flex;align-items:flex-start;gap:12px;padding:12px 16px;border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-lg);border:1px solid var(--border);max-width:360px;}
.ds-toast--success{border-left:3px solid var(--success);}
.ds-toast--warn{border-left:3px solid var(--warning);}
.ds-toast--danger{border-left:3px solid var(--danger);}
.ds-toast--info{border-left:3px solid var(--brand-blue-500);}
.ds-toast i[data-lucide]{width:18px;height:18px;flex-shrink:0;margin-top:1px;}
.ds-toast--success i{color:var(--success);}
.ds-toast--warn i{color:var(--warning);}
.ds-toast--danger i{color:var(--danger);}
.ds-toast--info i{color:var(--brand-blue-500);}
.ds-toast strong{display:block;font-size:13px;}
.ds-toast small{display:block;font-size:12px;color:var(--text-subtle);margin-top:2px;}

.ds-banner{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:var(--radius-md);}
.ds-banner--info{background:#EAF3FF;color:var(--brand-blue-700);}
.ds-banner--success{background:rgba(22,163,74,.08);color:#15803D;}
.ds-banner--warn{background:rgba(245,158,11,.10);color:#A16207;}
.ds-banner--danger{background:rgba(239,68,68,.08);color:var(--danger);}
.ds-banner i[data-lucide]{width:18px;height:18px;flex-shrink:0;}

.ds-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;}
.ds-badge--neutral{background:var(--gray-200);color:var(--text-muted);}
.ds-badge--primary{background:var(--brand-blue-50);color:var(--brand-blue-700);}
.ds-badge--success{background:rgba(22,163,74,.12);color:var(--success);}
.ds-badge--warn{background:rgba(245,158,11,.14);color:#A16207;}
.ds-badge--danger{background:rgba(239,68,68,.10);color:var(--danger);}

.ds-tooltip{position:relative;display:inline-block;}
.ds-tooltip__bubble{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--gray-900);color:#fff;padding:6px 10px;border-radius:6px;font-size:12px;white-space:nowrap;}
.ds-tooltip__bubble::after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--gray-900);}

.ds-popover{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:16px;max-width:320px;}
.ds-popover h5{margin:0 0 4px;font-size:14px;}
.ds-popover p{margin:0 0 12px;font-size:13px;color:var(--text-muted);}

.ds-progress{position:relative;height:6px;background:var(--gray-150);border-radius:3px;overflow:hidden;}
.ds-progress__bar{position:absolute;left:0;top:0;bottom:0;background:var(--brand-blue-500);border-radius:3px;transition:width var(--dur-base);}
.ds-progress--indeterminate .ds-progress__bar{width:30%;animation:ds-ind 1.6s ease-in-out infinite;}
@keyframes ds-ind{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}

.ds-spinner{display:inline-block;width:24px;height:24px;border:2.5px solid var(--gray-200);border-right-color:var(--brand-blue-500);border-radius:50%;animation:ds-spin 0.8s linear infinite;}

.ds-skel{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--gray-100),var(--gray-200),var(--gray-100));background-size:200% 100%;animation:sk 1.4s ease-in-out infinite;}
.ds-skel--card{height:120px;border-radius:var(--radius-md);}
.ds-skel--avatar{width:40px;height:40px;border-radius:50%;}

/* ══════════════════════════════════════════════════════════════════
   OVERLAYS
   ══════════════════════════════════════════════════════════════════ */
.ov{position:relative;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;height:420px;background:var(--surface-sunken);}
.ov__backdrop{position:absolute;inset:0;background:rgba(15,23,42,.45);backdrop-filter:blur(8px);}
.ov__dialog{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:90%;max-width:640px;display:flex;flex-direction:column;max-height:90%;}
.ov__dialog--sm{max-width:480px;}
.ov__dialog--lg{max-width:800px;}
.ov__dialog--full{inset:24px;transform:none;left:24px;top:24px;width:auto;max-width:none;max-height:none;}
.ov__head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);}
.ov__head h3{margin:0;font-size:16px;font-weight:600;}
.ov__close{width:32px;height:32px;border-radius:var(--radius-sm);color:var(--text-subtle);display:inline-flex;align-items:center;justify-content:center;}
.ov__close:hover{background:var(--gray-100);color:var(--text);}
.ov__body{padding:20px;overflow:auto;flex:1;}
.ov__foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid var(--border);background:var(--surface-sunken);}

.ov__drawer{position:absolute;right:0;top:0;bottom:0;width:480px;background:var(--surface);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;}

.ov__confirm{max-width:420px;text-align:left;}
.ov__confirm-icon{width:48px;height:48px;border-radius:50%;background:rgba(239,68,68,.10);color:var(--danger);display:inline-flex;align-items:center;justify-content:center;margin-bottom:12px;}

.ov__cmdk{position:absolute;left:50%;transform:translateX(-50%);top:15%;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:90%;max-width:640px;overflow:hidden;}
.ov__cmdk-input{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);}
.ov__cmdk-input input{flex:1;font-size:16px;border:0;outline:0;background:transparent;}
.ov__cmdk-input i[data-lucide]{width:18px;height:18px;color:var(--text-subtle);}
.ov__cmdk-group-label{font:600 11px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-subtle);padding:12px 20px 6px;}
.ov__cmdk-item{display:flex;align-items:center;gap:12px;padding:8px 20px;font-size:14px;cursor:pointer;}
.ov__cmdk-item:hover,.ov__cmdk-item.is-active{background:var(--brand-blue-50);}
.ov__cmdk-item i[data-lucide]{width:16px;height:16px;color:var(--text-subtle);}
.ov__cmdk-item .ret{margin-left:auto;color:var(--brand-blue-600);}
.ov__cmdk-item .kbd{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--text-subtle);}
.ov__cmdk-foot{display:flex;justify-content:space-between;align-items:center;padding:10px 20px;background:var(--surface-sunken);border-top:1px solid var(--border);font-size:11px;color:var(--text-subtle);}
.ov__cmdk-foot kbd{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:0 4px;margin:0 4px;}

.cmdk-portal{position:fixed;inset:0;z-index:100;}
.cmdk-portal[hidden]{display:none;}

/* ══════════════════════════════════════════════════════════════════
   TEMPLATES — páginas completas
   ══════════════════════════════════════════════════════════════════ */
.tpl-shell{min-height:760px;margin-bottom:8px;}

/* dashboard grid */
.tpl-dash{display:grid;grid-template-columns:1.6fr 1fr;gap:16px;margin-top:20px;}
.tpl-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;display:flex;flex-direction:column;}
.tpl-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 18px;border-bottom:1px solid var(--border);}
.tpl-card__title{font-size:14px;font-weight:600;margin:0;}
.tpl-card__sub{font-size:12px;color:var(--text-subtle);margin:2px 0 0;}
.tpl-card__body{padding:18px;flex:1;}
.tpl-card__foot{padding:10px 18px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;background:var(--surface-sunken);font-size:12px;color:var(--text-subtle);}

/* chart placeholders */
.tpl-chart{width:100%;height:180px;display:block;}
.tpl-chart .axis{fill:var(--text-subtle);font:500 10px var(--font-mono);}
.tpl-chart .grid{stroke:var(--border);stroke-dasharray:2 4;}
.tpl-chart .line{fill:none;stroke:var(--brand-blue-500);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;}
.tpl-chart .dot{fill:var(--brand-blue-500);}
.tpl-chart .bar{fill:var(--brand-blue-400);}
.tpl-chart .bar--alt{fill:var(--brand-blue-200);}

/* activity feed */
.tpl-feed{list-style:none;margin:0;padding:0;}
.tpl-feed li{display:flex;gap:12px;padding:12px 18px;border-bottom:1px solid var(--border);align-items:flex-start;}
.tpl-feed li:last-child{border-bottom:0;}
.tpl-feed__dot{width:32px;height:32px;border-radius:50%;background:var(--brand-blue-50);color:var(--brand-blue-700);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;}
.tpl-feed__dot i[data-lucide]{width:14px;height:14px;}
.tpl-feed__dot--success{background:rgba(22,163,74,.10);color:var(--success);}
.tpl-feed__dot--warn{background:rgba(245,158,11,.14);color:#A16207;}
.tpl-feed__txt{flex:1;font-size:13px;color:var(--text);line-height:1.45;}
.tpl-feed__time{font-size:11px;color:var(--text-subtle);font-family:var(--font-mono);white-space:nowrap;}

/* agenda */
.tpl-agenda{list-style:none;margin:0;padding:0;}
.tpl-agenda li{display:flex;gap:12px;padding:12px 18px;border-bottom:1px solid var(--border);align-items:center;}
.tpl-agenda li:last-child{border-bottom:0;}
.tpl-agenda__hour{font:500 12px/1 var(--font-mono);color:var(--text-subtle);width:42px;flex-shrink:0;}
.tpl-agenda__bar{width:3px;height:32px;border-radius:2px;background:var(--brand-blue-400);}
.tpl-agenda__bar--success{background:var(--success);}
.tpl-agenda__bar--warn{background:var(--warning);}
.tpl-agenda__body{flex:1;min-width:0;}
.tpl-agenda__name{font-size:13px;font-weight:500;}
.tpl-agenda__meta{font-size:12px;color:var(--text-subtle);}

/* settings layout */
.tpl-settings{display:grid;grid-template-columns:200px 1fr;gap:32px;margin-top:8px;align-items:start;}
.tpl-settings__nav{display:flex;flex-direction:column;gap:2px;position:sticky;top:0;}
.tpl-settings__nav a{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--radius-sm);font-size:13px;color:var(--text-muted);}
.tpl-settings__nav a:hover{background:var(--gray-100);color:var(--text);}
.tpl-settings__nav a.is-active{background:var(--brand-blue-50);color:var(--brand-blue-700);font-weight:600;}
.tpl-settings__nav a i[data-lucide]{width:14px;height:14px;color:currentColor;}
.tpl-settings__body{display:flex;flex-direction:column;gap:24px;min-width:0;}

.tpl-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;}
.tpl-form__head{padding:18px 24px;border-bottom:1px solid var(--border);}
.tpl-form__head h4{margin:0 0 4px;font-size:15px;font-weight:600;}
.tpl-form__head p{margin:0;font-size:13px;color:var(--text-subtle);}
.tpl-form__body{padding:24px;display:grid;grid-template-columns:repeat(2,1fr);gap:16px 24px;}
.tpl-form__body .ds-field{margin-bottom:0;}
.tpl-form__body .ds-input,.tpl-form__body .ds-select,.tpl-form__body .ds-textarea{max-width:none;}
.tpl-form__row-full{grid-column:1 / -1;}
.tpl-form__foot{padding:14px 24px;border-top:1px solid var(--border);background:var(--surface-sunken);display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;}
.tpl-form__foot small{font-size:12px;color:var(--text-subtle);display:inline-flex;align-items:center;gap:6px;}

/* avatar block */
.tpl-avatar-block{display:flex;align-items:center;gap:16px;}
.tpl-avatar-lg{width:72px;height:72px;border-radius:50%;background:linear-gradient(135deg,var(--accent-pink),var(--accent-orange));flex-shrink:0;}

/* preference row */
.tpl-pref{display:flex;align-items:center;gap:16px;padding:14px 24px;border-top:1px solid var(--border);}
.tpl-pref:first-child{border-top:0;}
.tpl-pref__body{flex:1;}
.tpl-pref__name{font-size:14px;font-weight:500;margin:0 0 2px;}
.tpl-pref__hint{font-size:12px;color:var(--text-subtle);margin:0;}

/* danger zone */
.tpl-form--danger{border-color:rgba(239,68,68,.32);}
.tpl-form--danger .tpl-form__head{border-color:rgba(239,68,68,.18);}
.tpl-form--danger .tpl-form__head h4{color:var(--danger);}
.tpl-danger-row{padding:18px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.tpl-danger-row p{margin:0;}

/* responsive */
@media (max-width:1024px){
  .tpl-dash{grid-template-columns:1fr;}
  .tpl-settings{grid-template-columns:1fr;}
  .tpl-form__body{grid-template-columns:1fr;}
}

/* ══════════════════════════════════════════════════════════════════
   PATTERNS — receitas de composição
   ══════════════════════════════════════════════════════════════════ */
.pat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;}
.pat-state{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);overflow:hidden;display:flex;flex-direction:column;}
.pat-state__head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;background:var(--surface-sunken);border-bottom:1px solid var(--border);font:500 11px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-subtle);}
.pat-state__head .ds-badge{font-family:var(--font-sans);text-transform:none;letter-spacing:0;}
.pat-state__body{padding:16px;flex:1;min-height:180px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;}

.pat-flow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0;}
.pat-flow__arrow{color:var(--text-subtle);display:inline-flex;}

.pat-stepper{display:flex;align-items:center;gap:0;margin-bottom:24px;flex-wrap:wrap;}
.pat-stepper__step{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-subtle);}
.pat-stepper__step + .pat-stepper__step::before{content:"";display:inline-block;width:40px;height:1px;background:var(--border);margin:0 12px;}
.pat-stepper__dot{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--border-strong);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--text-muted);}
.pat-stepper__step.is-done{color:var(--success);}
.pat-stepper__step.is-done .pat-stepper__dot{background:var(--success);border-color:var(--success);color:#fff;}
.pat-stepper__step.is-done + .pat-stepper__step::before{background:var(--success);}
.pat-stepper__step.is-current{color:var(--brand-blue-700);font-weight:600;}
.pat-stepper__step.is-current .pat-stepper__dot{background:var(--brand-blue-500);border-color:var(--brand-blue-500);color:#fff;}

.pat-plans{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:20px;}
.pat-plans label{display:block;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;cursor:pointer;transition:border-color var(--dur-fast),background var(--dur-fast);}
.pat-plans label:hover{border-color:var(--border-hover);}
.pat-plans label.is-selected{border:2px solid var(--brand-blue-500);background:var(--brand-blue-50);padding:11px;}

.pat-inline{display:inline-flex;align-items:center;gap:8px;padding:4px 8px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur-fast);}
.pat-inline:hover{background:var(--gray-100);}
.pat-inline:hover .pat-inline__edit{opacity:1;}
.pat-inline__edit{opacity:0;color:var(--text-subtle);width:14px;height:14px;transition:opacity var(--dur-fast);}
.pat-inline.is-editing{background:transparent;padding:0;gap:4px;}

.pat-typeconfirm{padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);max-width:380px;}
.pat-typeconfirm__warn{display:flex;gap:10px;color:var(--danger);font-size:13px;margin-bottom:12px;align-items:flex-start;line-height:1.4;}
.pat-typeconfirm__warn i[data-lucide]{flex-shrink:0;width:16px;height:16px;margin-top:1px;}
.pat-typeconfirm code{font-family:var(--font-mono);background:var(--surface-sunken);padding:1px 6px;border-radius:3px;border:1px solid var(--border);font-size:12px;}

.pat-inline-states{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:20px;display:flex;gap:32px;flex-wrap:wrap;}
.pat-inline-states__label{font:500 11px/1 var(--font-mono);color:var(--text-subtle);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;}

/* ══════════════════════════════════════════════════════════════════
   MOTION — catálogo
   ══════════════════════════════════════════════════════════════════ */
.mo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
.mo-grid--2{grid-template-columns:repeat(2,1fr);}
.mo-card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);overflow:hidden;display:flex;flex-direction:column;cursor:pointer;}
.mo-card__head{padding:14px 16px;border-bottom:1px solid var(--border);}
.mo-card__name{font-size:14px;font-weight:600;margin:0;}
.mo-card__meta{font:500 11px/1.4 var(--font-mono);color:var(--text-subtle);margin-top:4px;}
.mo-card__demo{position:relative;height:160px;background:var(--surface-sunken);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.mo-card__foot{padding:8px 16px;border-top:1px solid var(--border);background:var(--surface-sunken);font-size:12px;color:var(--text-subtle);}

/* duration demo: ball that moves */
.mo-ball{width:24px;height:24px;border-radius:50%;background:var(--brand-blue-500);position:absolute;top:50%;left:24px;transform:translateY(-50%);}
.mo-card:hover .mo-ball{left:calc(100% - 48px);}
.mo-card[data-dur="fast"] .mo-ball{transition:left var(--dur-fast) var(--ease-out);}
.mo-card[data-dur="base"] .mo-ball{transition:left var(--dur-base) var(--ease-out);}
.mo-card[data-dur="slow"] .mo-ball{transition:left var(--dur-slow) var(--ease-out);}
.mo-card[data-dur="spring"] .mo-ball{transition:left var(--dur-base) var(--ease-spring);}

/* easing curve viz */
.mo-curve{width:80%;height:80%;}
.mo-curve .axis-line{stroke:var(--border);}
.mo-curve .ref{stroke:var(--gray-200);stroke-dasharray:2 3;}
.mo-curve .curve{fill:none;stroke:var(--brand-blue-500);stroke-width:2.5;}

/* modal demo */
.mo-modal-stage{position:relative;width:160px;height:120px;background:var(--gray-150);border-radius:8px;border:1px solid var(--border);}
.mo-modal{position:absolute;left:50%;top:50%;width:96px;height:56px;background:var(--surface);border-radius:6px;box-shadow:var(--shadow-md);opacity:0;transform:translate(-50%,-46%) scale(.92);}
.mo-card:hover .mo-modal{animation:mo-modal-in var(--dur-base) var(--ease-spring) forwards;}
@keyframes mo-modal-in{to{opacity:1;transform:translate(-50%,-50%) scale(1);}}

/* drawer demo */
.mo-drawer-stage{position:relative;width:200px;height:120px;background:var(--gray-150);border-radius:8px;overflow:hidden;border:1px solid var(--border);}
.mo-drawer{position:absolute;right:0;top:0;bottom:0;width:60%;background:var(--surface);box-shadow:var(--shadow-md);transform:translateX(100%);}
.mo-card:hover .mo-drawer{animation:mo-drawer-in var(--dur-base) var(--ease-out) forwards;}
@keyframes mo-drawer-in{to{transform:translateX(0);}}

/* toast demo */
.mo-toast-stage{position:relative;width:220px;height:120px;background:var(--gray-150);border-radius:8px;overflow:hidden;border:1px solid var(--border);}
.mo-toast{position:absolute;right:8px;bottom:8px;left:8px;padding:8px 10px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--success);border-radius:6px;font-size:11px;opacity:0;transform:translateY(12px);}
.mo-toast strong{font-size:12px;}
.mo-card:hover .mo-toast{animation:mo-toast-in var(--dur-base) var(--ease-spring) forwards;}
@keyframes mo-toast-in{to{opacity:1;transform:translateY(0);}}

/* check tick demo */
.mo-tick-box{width:36px;height:36px;border:2px solid var(--gray-300);border-radius:6px;display:flex;align-items:center;justify-content:center;background:var(--surface);transition:background var(--dur-fast),border-color var(--dur-fast);}
.mo-card:hover .mo-tick-box{background:var(--brand-blue-500);border-color:var(--brand-blue-500);}
.mo-tick-svg{width:20px;height:20px;}
.mo-tick-svg path{stroke:#fff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;fill:none;stroke-dasharray:24;stroke-dashoffset:24;}
.mo-card:hover .mo-tick-svg path{animation:mo-tick var(--dur-base) var(--ease-out) forwards;animation-delay:80ms;}
@keyframes mo-tick{to{stroke-dashoffset:0;}}

/* switch demo */
.mo-switch-demo{position:relative;display:inline-flex;width:48px;height:28px;}
.mo-switch-demo__track{position:absolute;inset:0;background:var(--gray-300);border-radius:999px;transition:background var(--dur-base) var(--ease-out);}
.mo-switch-demo__thumb{position:absolute;left:2px;top:2px;width:24px;height:24px;background:#fff;border-radius:50%;box-shadow:var(--shadow-sm);transition:transform var(--dur-base) var(--ease-spring);}
.mo-card:hover .mo-switch-demo__track{background:var(--brand-blue-500);}
.mo-card:hover .mo-switch-demo__thumb{transform:translateX(20px);}

/* skeleton → content */
.mo-skel-stage{position:relative;width:180px;height:64px;}
.mo-skel-lines,.mo-skel-content{position:absolute;inset:0;display:flex;flex-direction:column;gap:8px;transition:opacity var(--dur-base) var(--ease-out);}
.mo-skel-content{opacity:0;}
.mo-skel-line{height:10px;border-radius:4px;background:linear-gradient(90deg,var(--gray-100),var(--gray-200),var(--gray-100));background-size:200% 100%;animation:sk 1.4s ease-in-out infinite;}
.mo-skel-line:nth-child(2){width:70%;}
.mo-skel-line:nth-child(3){width:50%;}
.mo-card:hover .mo-skel-lines{opacity:0;}
.mo-card:hover .mo-skel-content{opacity:1;}

@media (max-width:768px){
  .pat-grid{grid-template-columns:1fr;}
  .mo-grid,.mo-grid--2{grid-template-columns:1fr;}
  .pat-plans{grid-template-columns:1fr;}
}

/* ══════════════════════════════════════════════════════════════════
   UTILITIES & DEMOS — refactor zero-inline
   ══════════════════════════════════════════════════════════════════ */

/* Section helpers */
.ds-section__intro{color:var(--text-muted);margin:-8px 0 16px;max-width:640px;}
.ds-section__lead{color:var(--text-muted);max-width:640px;margin:-32px 0 24px;}
.ds-eyebrow-label{font:600 11px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-subtle);margin:0 0 8px;}

/* Helper / caption text */
.ds-mono-caption{font-family:var(--font-mono);font-size:12px;color:var(--text-muted);}
.ds-helper-text{font-size:12px;color:var(--text-subtle);margin:0;}
.ds-helper-text--mt{margin-top:4px;}
.ds-sub-meta{font-size:12px;color:var(--text-subtle);}
.ds-sub-meta--mono{font-family:var(--font-mono);}

/* Icon sizes (apply to SVG output or <i data-lucide>) — lucide copia class para o svg */
.ds-icon--10,.ds-icon--10 svg{width:10px;height:10px;flex-shrink:0;}
.ds-icon--12,.ds-icon--12 svg{width:12px;height:12px;flex-shrink:0;}
.ds-icon--13,.ds-icon--13 svg{width:13px;height:13px;flex-shrink:0;}
.ds-icon--14,.ds-icon--14 svg{width:14px;height:14px;flex-shrink:0;}
.ds-icon--16,.ds-icon--16 svg{width:16px;height:16px;flex-shrink:0;}
.ds-icon--18,.ds-icon--18 svg{width:18px;height:18px;flex-shrink:0;}
.ds-icon--20,.ds-icon--20 svg{width:20px;height:20px;flex-shrink:0;}
.ds-icon--24,.ds-icon--24 svg{width:24px;height:24px;flex-shrink:0;}
.ds-icon--32,.ds-icon--32 svg{width:32px;height:32px;flex-shrink:0;}
.ds-icon--48,.ds-icon--48 svg{width:48px;height:48px;flex-shrink:0;}

/* Color utilities */
.ds-u-text{color:var(--text);}
.ds-u-text-muted{color:var(--text-muted);}
.ds-u-text-subtle{color:var(--text-subtle);}
.ds-u-text-brand{color:var(--brand-blue-600);}
.ds-u-text-brand-strong{color:var(--brand-blue-700);}
.ds-u-text-danger{color:var(--danger);}
.ds-u-text-success{color:var(--success);}
.ds-u-text-warn{color:#A16207;}
.ds-u-text-white{color:#fff;}

/* Margin top utilities — escala híbrida (bate com --space e com half-steps usados) */
.ds-u-mt-0{margin-top:0;}
.ds-u-mt-half{margin-top:2px;}
.ds-u-mt-1{margin-top:4px;}
.ds-u-mt-2{margin-top:6px;}
.ds-u-mt-3{margin-top:8px;}
.ds-u-mt-4{margin-top:12px;}
.ds-u-mt-5{margin-top:16px;}
.ds-u-mt-6{margin-top:20px;}
.ds-u-mt-7{margin-top:24px;}
.ds-u-mt-8{margin-top:32px;}
.ds-u-mt-9{margin-top:48px;}
.ds-u-mt-10{margin-top:64px;}
.ds-u-mt-11{margin-top:80px;}

.ds-u-mb-0{margin-bottom:0;}
.ds-u-mb-1{margin-bottom:4px;}
.ds-u-mb-2{margin-bottom:6px;}
.ds-u-mb-3{margin-bottom:8px;}
.ds-u-mb-4{margin-bottom:12px;}
.ds-u-mb-5{margin-bottom:16px;}
.ds-u-mb-6{margin-bottom:20px;}
.ds-u-mb-7{margin-bottom:24px;}

.ds-u-ml-auto{margin-left:auto;}
.ds-u-ml-1{margin-left:4px;}
.ds-u-ml-2{margin-left:6px;}
.ds-u-ml-3{margin-left:8px;}
.ds-u-ml-4{margin-left:12px;}
.ds-u-ml-5{margin-left:16px;}
.ds-u-ml-7{margin-left:24px;}

.ds-u-mr-1{margin-right:4px;}
.ds-u-mr-2{margin-right:6px;}
.ds-u-mr-3{margin-right:8px;}
.ds-u-mr-4{margin-right:12px;}

/* Max-width utility */
.ds-u-mw-280{max-width:280px;}
.ds-u-mw-320{max-width:320px;}
.ds-u-mw-360{max-width:360px;}
.ds-u-mw-380{max-width:380px;}
.ds-u-mw-420{max-width:420px;}
.ds-u-mw-480{max-width:480px;}
.ds-u-mw-560{max-width:560px;}
.ds-u-mw-640{max-width:640px;}
.ds-u-mw-680{max-width:680px;}
.ds-u-mw-720{max-width:720px;}
.ds-u-mw-760{max-width:760px;}
.ds-u-mw-920{max-width:920px;}
.ds-u-mw-none{max-width:none;}

/* Text utilities */
.ds-u-strong{font-weight:500;}
.ds-u-link{color:var(--brand-blue-600);font-weight:500;}
.ds-u-mono{font-family:var(--font-mono);}
.ds-u-font-11{font-size:11px;}
.ds-u-font-12{font-size:12px;}
.ds-u-font-13{font-size:13px;}
.ds-u-font-14{font-size:14px;}
.ds-u-font-15{font-size:15px;}
.ds-u-fw-500{font-weight:500;}
.ds-u-fw-600{font-weight:600;}
.ds-u-text-center{text-align:center;}

/* Layout utilities */
.ds-row{display:flex;align-items:center;gap:8px;}
.ds-row--6{gap:6px;}
.ds-row--10{gap:10px;}
.ds-row--12{gap:12px;}
.ds-row--16{gap:16px;}
.ds-row--24{gap:24px;}
.ds-row--32{gap:32px;}
.ds-row--wrap{flex-wrap:wrap;}
.ds-row--between{justify-content:space-between;}
.ds-row--start{align-items:flex-start;}
.ds-stack{display:flex;flex-direction:column;gap:8px;}
.ds-stack--6{gap:6px;}
.ds-stack--12{gap:12px;}
.ds-stack--16{gap:16px;}
.ds-stack--center{align-items:center;}
.ds-inline-row{display:inline-flex;align-items:center;gap:8px;}
.ds-inline-row--6{gap:6px;}
.ds-row--full-w > *{flex:1;}

/* Width helpers */
.ds-u-w-full{width:100%;}
.ds-u-w-fit{width:fit-content;}
.ds-u-w-140{width:140px;}
.ds-u-w-280{width:280px;}
.ds-u-h-36{height:36px;}

/* Display helpers */
.ds-u-block{display:block;}
.ds-u-inline-block{display:inline-block;}
.ds-u-hidden{display:none;}
.ds-u-vmid{vertical-align:middle;}

/* Foundations: swatch variants */
.ds-swatch__chip--surface{background:var(--surface);}
.ds-swatch__chip--surface-raised{background:var(--surface-raised);}
.ds-swatch__chip--surface-sunken{background:var(--surface-sunken);}
.ds-swatch__chip--text{background:var(--text);}
.ds-swatch__chip--text-muted{background:var(--text-muted);}
.ds-swatch__chip--text-subtle{background:var(--text-subtle);}
.ds-swatch__chip--border{background:var(--border);}
.ds-swatch__chip--focus{background:var(--focus);}

/* Foundations: spacing ruler bar heights */
.ds-spacing-ruler__bar{display:block;background:var(--brand-blue-400);border-radius:2px;width:16px;}
.ds-spacing-ruler__bar--1{height:4px;}
.ds-spacing-ruler__bar--2{height:8px;}
.ds-spacing-ruler__bar--3{height:12px;}
.ds-spacing-ruler__bar--4{height:16px;}
.ds-spacing-ruler__bar--5{height:20px;}
.ds-spacing-ruler__bar--6{height:24px;}
.ds-spacing-ruler__bar--7{height:32px;}
.ds-spacing-ruler__bar--8{height:40px;}
.ds-spacing-ruler__bar--9{height:48px;}
.ds-spacing-ruler__bar--10{height:64px;}
.ds-spacing-ruler__bar--11{height:80px;}

/* Foundations: type ramp samples */
.ds-type-prev--display{font:700 32px/1.15 var(--font-sans);}
.ds-type-prev--heading{font:700 20px/1.3 var(--font-sans);}
.ds-type-prev--body{font:400 14px/1.5 var(--font-sans);}
.ds-type-prev--caption{font:500 12px/1.4 var(--font-sans);}
.ds-type-prev--mono{font:500 13px/1.4 var(--font-mono);}

/* Skeleton bar width buckets (Data section) */
.ds-skel-bar--w-30{width:30%;}
.ds-skel-bar--w-35{width:35%;}
.ds-skel-bar--w-38{width:38%;}
.ds-skel-bar--w-40{width:40%;}
.ds-skel-bar--w-42{width:42%;}
.ds-skel-bar--w-45{width:45%;}
.ds-skel-bar--w-48{width:48%;}
.ds-skel-bar--w-50{width:50%;}
.ds-skel-bar--w-52{width:52%;}
.ds-skel-bar--w-55{width:55%;}
.ds-skel-bar--w-58{width:58%;}
.ds-skel-bar--w-60{width:60%;}
.ds-skel-bar--w-62{width:62%;}
.ds-skel-bar--w-65{width:65%;}
.ds-skel-bar--w-68{width:68%;}
.ds-skel-bar--w-70{width:70%;}
.ds-skel-bar--w-72{width:72%;}
.ds-skel-bar--w-75{width:75%;}
.ds-skel-bar--w-80{width:80%;}

/* Avatar gradient variants — para .dt__avatar e .sb__user-avatar */
.ds-avatar--violet-blue{background:linear-gradient(135deg,var(--accent-violet),var(--brand-blue-400));}
.ds-avatar--pink-orange{background:linear-gradient(135deg,var(--accent-pink),var(--accent-orange));}
.ds-avatar--cyan-blue{background:linear-gradient(135deg,var(--accent-cyan),var(--brand-blue-500));}
.ds-avatar--mint-success{background:linear-gradient(135deg,var(--accent-mint),var(--success));}
.ds-avatar--orange-danger{background:linear-gradient(135deg,var(--accent-orange),var(--danger));}
.ds-avatar--blue-deep{background:linear-gradient(135deg,var(--brand-blue-300),var(--brand-blue-600));}
/* Avatar size overrides */
.dt__avatar--24{width:24px;height:24px;}
.dt__avatar--28{width:28px;height:28px;}

/* Demo container heights */
.ds-demo--h280{height:280px;}
.ds-demo--h340{height:340px;}
.ds-demo--h420{height:420px;}
.ds-demo--h520{height:520px;}
.ds-demo--h540{height:540px;}
.ds-demo--h560{height:560px;}
.ds-demo--minh-900{min-height:900px;}

/* Illustration helpers (empty-state icons) */
.ds-illus--ghost{color:var(--gray-300);}
.ds-illus--danger{color:var(--danger);}
.ds-illus--warn{color:var(--warning);}
.ds-illus--success{color:var(--success);}
.ds-illus--center{margin:0 auto;display:block;}

/* Status pill */
.ds-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-full);background:var(--brand-blue-50);color:var(--brand-blue-700);font-size:12px;font-weight:500;}

/* Tab link genérico (substitui tabs estilizadas inline) */
.ds-tab-link{padding:12px 0;font-size:14px;color:var(--text-muted);}
.ds-tab-link + .ds-tab-link{margin-left:24px;}
.ds-tab-link.is-active{color:var(--brand-blue-600);font-weight:600;border-bottom:2px solid var(--brand-blue-500);}
.ds-tab-link__count{color:var(--text-subtle);font-weight:400;margin-left:4px;}

/* Form danger row reuse */
.tpl-danger-row > div p:first-child{font-size:14px;font-weight:500;margin:0 0 4px;}
.tpl-danger-row > div p:last-child{font-size:12px;color:var(--text-subtle);margin:0;}

/* Form helper inside .tpl-form */
.tpl-avatar-actions{display:flex;flex-direction:column;gap:6px;}
.tpl-avatar-actions__hint{font-size:12px;color:var(--text-subtle);}

/* Field label inline com código */
.ds-field__label--with-code{font-size:12px;}
.ds-code-inline{font-family:var(--font-mono);background:var(--surface-sunken);padding:1px 6px;border-radius:3px;border:1px solid var(--border);font-size:12px;}
.ds-code-inline--brand{background:rgba(14,122,255,.08);border-color:transparent;}

/* Foot helpers em .tpl-form */
.tpl-form__foot-actions{display:flex;gap:8px;}

/* Pat plans selected */
.pat-plans__price{font-size:11px;color:var(--text-subtle);}
.pat-plans__price--brand{color:var(--brand-blue-700);}

/* Mini step radio */
.pat-radio-inline{margin-right:6px;vertical-align:-2px;}

/* Misc one-offs reutilizáveis */
.ds-divider-top{border-top:1px solid var(--border);padding-top:16px;}
.ds-link-strong{color:var(--brand-blue-600);font-weight:500;}
.ds-link-meta{color:var(--brand-blue-600);}

/* Bulk bar button alinhado à direita */
.dt__bulk-spacer{margin-left:auto;}

/* Status overrides para .dt__status warn (cor de texto diferente da palette) */
/* já existe — .dt__status--warn{color:#A16207} */

/* Sidebar user-popover specifics não precisam refactor — sem inline */

/* Bg sutil em foundations elevation showcase */
.ds-bg-soft{background:var(--surface-sunken);}

/* Page-header em demo de shells */
.tabs--underline-demo .tabs__tab{padding:12px 0;font-size:14px;color:var(--text-muted);margin-right:24px;}
.tabs--underline-demo .tabs__tab.is-active{color:var(--brand-blue-600);font-weight:600;border-bottom:2px solid var(--brand-blue-500);}
.tabs--underline-demo .tabs__tab:last-child{margin-right:0;}

/* Nav demo content placeholder */
.ds-demo-placeholder{padding:24px;color:var(--text-subtle);font-size:13px;}

/* Card surface genérico (combina com .ds-u-mw-* p/ controlar largura) */
.ds-card-surface{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);}
.ds-card-surface--pad-16{padding:16px;}
.ds-card-surface--pad-24{padding:24px;}

/* Patterns: demo dos estados de edição inline (força visual sem hover real) */
.pat-inline--demo-hover{background:var(--gray-100);}
.pat-inline__edit--visible{opacity:1;}

/* CommandK portal — posicionamento estrutural do overlay flutuante */
.cmdk-portal__cmdk{position:fixed;top:15vh;}
