/* GTracker: one visual language for the existing dashboard and embedded pages.
   Loaded after the legacy styles; !important only bridges their forced rules. */
@font-face {
  font-family: Geist;
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('./geist-latin-v5.woff2') format('woff2');
}

:root {
  --gt-font: Geist, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --gt-type-control: .8125rem;
  --gt-leading-control: 1.25rem;
  --gt-weight-control: 600;
  --gt-canvas: #eef0f3;
  --gt-surface: #ffffff;
  --gt-nav: #f7f8fa;
  --gt-hover: #e8ecf2;
  --gt-ink: #202631;
  --gt-subtle: #566170;
  --gt-line: #d6dce4;
  --gt-blue: #245acb;
  --gt-blue-soft: #e7efff;
  --gt-on-blue: #ffffff;
  --gt-success: #146746;
  --gt-success-soft: #e5f3eb;
  --gt-danger: #b12f48;
  --gt-danger-soft: #fbe9ed;
  --gt-warning: #815312;
  --gt-shadow: 0 12px 32px #20263124;
  --gt-radius: 12px;
  --gt-identity-width: clamp(260px, 21vw, 360px);
  --gt-bg-hsl: 216 17% 94%;
  --gt-surface-hsl: 0 0% 100%;
  --gt-ink-hsl: 219 21% 16%;
  --gt-subtle-hsl: 215 13% 39%;
  --gt-line-hsl: 214 21% 87%;
  --gt-soft-hsl: 216 28% 93%;
  --gt-blue-hsl: 221 70% 47%;
  --gt-on-blue-hsl: 0 0% 100%;
  --gt-success-hsl: 156 67% 24%;
  --gt-danger-hsl: 348 58% 44%;
  --gt-warning-hsl: 35 76% 29%;
  color-scheme: light;
}

/* Root tokens also reach dialogs and popovers rendered outside the app root. */
:root:has(.dashboard-v2.theme-dark), .dashboard-v2.theme-dark {
  --gt-canvas: #14171c;
  --gt-surface: #20252d;
  --gt-nav: #191d23;
  --gt-hover: #2b323d;
  --gt-ink: #f0f3f7;
  --gt-subtle: #afb9c8;
  --gt-line: #3a4452;
  --gt-blue: #91b7ff;
  --gt-blue-soft: #243753;
  --gt-on-blue: #14171c;
  --gt-success: #7ed9ae;
  --gt-success-soft: #1c3b30;
  --gt-danger: #ffa0b0;
  --gt-danger-soft: #462a34;
  --gt-warning: #edc17c;
  --gt-shadow: 0 12px 32px #090c1280;
  --gt-bg-hsl: 218 17% 9%;
  --gt-surface-hsl: 217 17% 15%;
  --gt-ink-hsl: 214 30% 95%;
  --gt-subtle-hsl: 216 19% 74%;
  --gt-line-hsl: 215 17% 27%;
  --gt-soft-hsl: 217 17% 20%;
  --gt-blue-hsl: 219 100% 78%;
  --gt-on-blue-hsl: 218 17% 9%;
  --gt-success-hsl: 152 54% 67%;
  --gt-danger-hsl: 350 100% 81%;
  --gt-warning-hsl: 36 76% 71%;
  color-scheme: dark;
}

:root, .dashboard-v2, .dashboard-v2.theme-dark {
  --background: var(--gt-bg-hsl) !important;
  --foreground: var(--gt-ink-hsl) !important;
  --card: var(--gt-surface-hsl) !important;
  --card-foreground: var(--gt-ink-hsl) !important;
  --popover: var(--gt-surface-hsl) !important;
  --popover-foreground: var(--gt-ink-hsl) !important;
  --muted: var(--gt-soft-hsl) !important;
  --muted-foreground: var(--gt-subtle-hsl) !important;
  --secondary: var(--gt-soft-hsl) !important;
  --secondary-foreground: var(--gt-ink-hsl) !important;
  --accent: var(--gt-soft-hsl) !important;
  --accent-foreground: var(--gt-ink-hsl) !important;
  --border: var(--gt-line-hsl) !important;
  --input: var(--gt-line-hsl) !important;
  --primary: var(--gt-blue-hsl) !important;
  --primary-foreground: var(--gt-on-blue-hsl) !important;
  --ring: var(--gt-blue-hsl) !important;
  --positive: var(--gt-success-hsl) !important;
  --negative: var(--gt-danger-hsl) !important;
  --destructive: var(--gt-danger-hsl) !important;
  --destructive-foreground: var(--gt-on-blue-hsl) !important;
  --warning: var(--gt-warning-hsl) !important;
  --info: var(--gt-blue-hsl) !important;
  --ember: var(--gt-subtle-hsl) !important;
  --v2-bg-base: var(--gt-bg-hsl) !important;
  --v2-bg-soft: var(--gt-soft-hsl) !important;
  --v2-bg-card-tint: var(--gt-surface-hsl) !important;
  --chart-1: var(--gt-blue) !important;
  --chart-2: var(--gt-subtle) !important;
  --chart-grid: var(--gt-line) !important;
  --chart-line-primary: var(--gt-blue) !important;
  --hairline: var(--gt-line-hsl) !important;
  --color-muted: var(--gt-hover) !important;
}

html, body, .dashboard-v2 {
  font-family: var(--gt-font) !important;
  background: var(--gt-canvas) !important;
  color: var(--gt-ink) !important;
  -webkit-font-smoothing: antialiased;
}
.dashboard-v2 {
  font-size: 14px;
  line-height: 1.5;
  font-variant-numeric: tabular-nums;
}
.dashboard-v2 .font-sans,
.dashboard-v2 button,
.dashboard-v2 input,
.dashboard-v2 select,
.dashboard-v2 textarea { font-family: var(--gt-font); }
.dashboard-v2 :is(h1,h2,h3) { letter-spacing: -.025em; text-wrap: balance; }
.dashboard-v2 p { text-wrap: pretty; }
.dashboard-v2 ::selection { background: var(--gt-blue-soft); color: var(--gt-ink); }
.dashboard-v2 :is(input,textarea) { caret-color: var(--gt-blue); }
.dashboard-v2 :is(button,a,input,select,textarea,[tabindex]):focus-visible {
  outline: 2px solid var(--gt-blue) !important;
  outline-offset: 3px;
}
.dashboard-v2 button:disabled { opacity: .55; cursor: not-allowed; }

/* Navigation: stable hit areas and one clear selected state. */
.dashboard-v2 > aside[class] {
  width: 224px;
  padding: 24px 16px;
  background: var(--gt-nav) !important;
  border-right-color: var(--gt-line) !important;
}
.dashboard-v2 > aside > div:first-child { margin-bottom: 28px; padding-inline: 8px; }
.dashboard-v2 > aside > div:first-child p:first-child { font-size: 17px; font-weight: 700; }
.dashboard-v2 > aside > div:first-child p + p { font-size: 11px; line-height: 1.5; color: var(--gt-subtle); }
.dashboard-v2 > aside nav { gap: 6px; }
.dashboard-v2 > aside nav button {
  min-height: 44px;
  padding: 10px 12px;
  gap: 12px;
  border-radius: 10px;
  color: var(--gt-subtle);
  font-size: 13px;
  font-weight: 500;
  transition: background-color 140ms, color 140ms;
}
.dashboard-v2 > aside nav button:hover { background: var(--gt-hover); color: var(--gt-ink); }
.dashboard-v2 > aside nav button[aria-current='page'] {
  background: var(--gt-blue-soft);
  color: var(--gt-blue);
  font-weight: 650;
}
.dashboard-v2 > aside nav button > span { color: inherit; }
.dashboard-v2 > aside > .mt-auto {
  background: transparent;
  border-color: var(--gt-line);
  padding: 16px 12px;
  box-shadow: none;
}
.dashboard-v2 > aside > .mt-auto p { color: var(--gt-subtle); line-height: 1.65; }

/* Shared surfaces and controls retain the existing hierarchy and actions. */
.dashboard-v2 .v2-card {
  background: var(--gt-surface) !important;
  border: 1px solid var(--gt-line) !important;
  border-radius: var(--gt-radius) !important;
  box-shadow: none !important;
}
.dashboard-v2 main { min-width: 0; width: 100%; max-width: none; box-sizing: border-box; padding: 24px 32px; }
.dashboard-v2 > div { min-width: 0; }
.dashboard-v2 main > .space-y-4 > .hidden.md\:flex { margin-bottom: 24px; }
.dashboard-v2 main h2.text-2xl { font-size: 28px; font-weight: 650; }
.dashboard-v2 section.v2-card h3 { font-size: 16px; font-weight: 650; }
.dashboard-v2 section.v2-card h3 + p { color: var(--gt-subtle); font-size: 12px; line-height: 1.5; }
.dashboard-v2 header.sticky { background: var(--gt-surface) !important; border-bottom-color: var(--gt-line) !important; backdrop-filter: none; }
.dashboard-v2 .v2-filter-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--gt-line);
  font-weight: var(--gt-weight-control);
  line-height: var(--gt-leading-control);
  min-height: 40px;
  height: auto !important;
  padding: 9px 12px !important;
  border-color: var(--gt-line) !important;
  border-radius: 10px !important;
  box-shadow: none !important;
  color: var(--gt-ink) !important;
  background: var(--gt-surface) !important;
  font-size: var(--gt-type-control) !important;
  transition: background-color 140ms, border-color 140ms !important;
}
.dashboard-v2 button[title]:has(svg):not(:has(span)) { min-width: 40px; min-height: 40px; }
.dashboard-v2 .v2-filter-pill:hover { background: var(--gt-hover) !important; border-color: var(--gt-blue) !important; }
.v2-filter-pill-label { color: var(--gt-subtle) !important; }

/* Bridge the shipped utility markup to the semantic palette, in both themes. */
.dashboard-v2 :is([class~='text-[#111C36]'],[class~='text-[#111827]']) { color: var(--gt-ink) !important; }
.dashboard-v2 :is([class~='text-[#64748B]'],[class~='text-[#94A3B8]']) { color: var(--gt-subtle) !important; }
.dashboard-v2 :is([class~='text-[#2563EB]'],[class~='text-[#4F46E5]']) { color: var(--gt-blue) !important; }
.dashboard-v2 [class~='text-[#16A36A]'] { color: var(--gt-success) !important; }
.dashboard-v2 :is([class~='text-[#DC2626]'],[class~='text-[#E5485D]']) { color: var(--gt-danger) !important; }
.dashboard-v2 :is(.bg-white,[class~='bg-white/95']) { background-color: var(--gt-surface) !important; }
.dashboard-v2 :is([class~='bg-[#F1F5F9]'],[class~='bg-[#F7F9FC]'],.bg-slate-200) { background-color: var(--gt-hover) !important; }
.dashboard-v2 :is([class~='bg-[#EAF2FF]'],[class~='bg-[#E8F1FD]']) { background-color: var(--gt-blue-soft) !important; }
.dashboard-v2 :is([class~='bg-[#2563EB]'],[class~='bg-[#111C36]']) { background-color: var(--gt-blue) !important; color: var(--gt-on-blue) !important; }
.dashboard-v2 [class~='bg-[#16A36A]'] { background-color: var(--gt-success) !important; }
.dashboard-v2 [class~='border-[#E7EDF5]'] { border-color: var(--gt-line) !important; }
.dashboard-v2 :is([class~='hover:bg-slate-50'],[class~='hover:bg-slate-100']):hover { background: var(--gt-hover) !important; }
.dashboard-v2 [class~='hover:bg-[#EAF2FF]']:hover { background: var(--gt-blue-soft) !important; }
.dashboard-v2 [class~='hover:bg-red-50']:hover { background: var(--gt-danger-soft) !important; }
.dashboard-v2 :is(.gt-icon-pos,.gt-icon-primary,.gt-icon-lilas,.gt-icon-warn,.gt-icon-neg,.gt-icon-indigo,.gt-icon-muted) {
  color: var(--gt-subtle) !important;
  background: var(--gt-hover) !important;
}
.dashboard-v2 :is(.gt-icon-pos,.gt-icon-primary,.gt-icon-lilas,.gt-icon-warn,.gt-icon-neg,.gt-icon-indigo,.gt-icon-muted) svg { stroke: currentColor; }
.dashboard-v2 .gt-row-main article:first-child .gt-icon-pos { color: var(--gt-blue) !important; background: transparent !important; }
.dashboard-v2 .v2-mono,
.dashboard-v2 .gt-overview .font-mono { font-family: var(--gt-font); font-variant-numeric: tabular-nums; }
:is(input,textarea)::placeholder { color: var(--gt-subtle); opacity: 1; }
:is(input,textarea,select) { caret-color: var(--gt-blue); accent-color: var(--gt-blue); }
::selection { background: var(--gt-blue-soft); color: var(--gt-ink); }
html { scrollbar-color: var(--gt-subtle) var(--gt-canvas); }
:is([role='dialog'],[role='menu'],[data-radix-popper-content-wrapper]) { color: var(--gt-ink); font-family: var(--gt-font); }
[role='dialog']:has(.meta-daterange) { background: var(--gt-surface); border-color: var(--gt-line); }
.meta-daterange .rdp-root {
  --rdp-accent-color: var(--gt-blue);
  --rdp-accent-background-color: var(--gt-blue-soft);
  --rdp-range_middle-background-color: var(--gt-blue-soft);
}
.meta-daterange .rdp-today:not(.rdp-selected) .rdp-day_button { color: var(--gt-blue); }
.meta-daterange :is(.rdp-range_start,.rdp-range_end) .rdp-day_button { background: var(--gt-blue); color: var(--gt-on-blue); }
.meta-daterange .rdp-range_middle { background: var(--gt-blue-soft); }
[data-sonner-toast][data-styled='true'] { background: var(--gt-surface); border-color: var(--gt-line); color: var(--gt-ink); }
[data-sonner-toast][data-styled='true'] [data-description] { color: var(--gt-subtle); }

/* Net profit leads; comparison text stays readable beside the daily values. */
.dashboard-v2 .gt-row-main { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 16px !important; }
.dashboard-v2 .gt-row-main article {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-width: 0;
  min-height: 152px !important;
  height: auto !important;
  padding: 20px !important;
  gap: 12px;
}
.dashboard-v2 .gt-row-main article:first-child { background: var(--gt-blue-soft) !important; border-color: var(--gt-line) !important; }
.dashboard-v2 .gt-row-main article > div:first-child { gap: 8px; }
.dashboard-v2 .gt-row-main article > div:first-child > span:last-child {
  font-size: 13px;
  font-weight: 550;
  line-height: 1.4;
  color: var(--gt-subtle);
}
.dashboard-v2 .gt-row-main article > div:nth-child(2) > span {
  font-family: var(--gt-font);
  font-size: 30px;
  font-weight: 650;
  letter-spacing: -.035em;
  line-height: 1.15;
}
.dashboard-v2 .gt-row-main article:first-child > div:nth-child(2) > span { font-size: 34px; }
.dashboard-v2 :is(.gt-row-main,.gt-row-secondary) article > div:last-child {
  flex-wrap: wrap;
  row-gap: 4px;
  color: var(--gt-subtle);
}
.dashboard-v2 :is(.gt-row-main,.gt-row-secondary) article > div:last-child > .truncate {
  white-space: normal;
  overflow: visible;
  font-size: 12px;
  line-height: 1.4;
}
.dashboard-v2 .gt-row-secondary {
  display: grid;
  grid-template-columns: repeat(6,minmax(0,1fr)) !important;
  gap: 12px !important;
}
.dashboard-v2 .gt-row-secondary article {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-width: 0;
  min-height: 120px !important;
  height: auto !important;
  padding: 16px !important;
  gap: 10px;
}
.dashboard-v2 .gt-row-secondary article > div:first-child > span:last-child {
  font-size: 12px;
  line-height: 1.4;
  color: var(--gt-subtle);
  white-space: normal;
}
.dashboard-v2 .gt-row-secondary article > div:nth-child(2) > span {
  font-size: 23px;
  font-weight: 650;
  overflow-wrap: anywhere;
  white-space: normal;
  line-height: 1.2;
}
.dashboard-v2 .gt-delta-pos { color: var(--gt-success) !important; background: var(--gt-success-soft) !important; }
.dashboard-v2 .gt-delta-neg { color: var(--gt-danger) !important; background: var(--gt-danger-soft) !important; }
.dashboard-v2 .gt-delta-neutral { color: var(--gt-subtle) !important; background: var(--gt-hover) !important; }
.dashboard-v2 .gt-delta-pos, .dashboard-v2 .gt-delta-neg, .dashboard-v2 .gt-delta-neutral {
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 11px !important;
  font-weight: 600 !important;
}
.dashboard-v2 .gt-section-middle { display: grid; grid-template-columns: minmax(0,2fr) minmax(0,1fr); gap: 20px !important; }
.dashboard-v2 .gt-section-bottom { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 20px !important; }
.dashboard-v2 :is(.gt-section-middle,.gt-section-bottom) > * { min-width: 0; }
.dashboard-v2 :is(.gt-section-middle,.gt-section-bottom) > .v2-card { padding: 22px; }
.dashboard-v2 .gt-pay-sticky { position: static !important; }
/* The shipped chart markup includes min-h-[260px], absent from its compiled CSS. */
.dashboard-v2 .gt-section-middle .h-\[260px\] { min-height: 260px; }

/* A wide monitor gives analysis a dedicated lane beside the metric overview. */
.dashboard-v2 .gt-overview { display: grid; gap: 20px; min-width: 0; }
.dashboard-v2 .gt-overview > * { min-width: 0; margin: 0; }
@media (min-width: 1800px) {
  .dashboard-v2 .gt-overview {
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.6fr);
    grid-template-areas: 'primary analysis' 'secondary analysis' 'breakdown breakdown';
    align-items: stretch;
  }
  .dashboard-v2 .gt-overview .gt-row-main { grid-area: primary; grid-template-columns: repeat(2,minmax(0,1fr)); }
  .dashboard-v2 .gt-overview .gt-row-secondary { grid-area: secondary; grid-template-columns: repeat(3,minmax(0,1fr)) !important; }
  .dashboard-v2 .gt-overview .gt-section-middle { grid-area: analysis; grid-template-columns: minmax(0,1.7fr) minmax(0,1fr); }
  .dashboard-v2 .gt-overview .gt-section-bottom { grid-area: breakdown; }
  .dashboard-v2 .gt-section-middle > div > section { height: 100%; display: flex; flex-direction: column; }
  .dashboard-v2 .gt-section-middle .h-\[260px\] { flex: 1; }
}

/* One vertical viewport for embedded tools; their table owns report scrolling. */
.dashboard-v2:not(.gt-shell):has(main > iframe) { height: 100dvh; min-height: 0; overflow: hidden; }
.dashboard-v2:not(.gt-shell):has(main > iframe) > div { min-height: 0; }
.dashboard-v2:not(.gt-shell) main:has(> iframe) { display: flex; min-height: 0; overflow: hidden; padding-block: 20px; }
.dashboard-v2:not(.gt-shell) main > iframe { display: block; width: 100%; height: 100% !important; min-height: 0 !important; border-radius: var(--gt-radius); border: 1px solid var(--gt-line) !important; }

@media (max-width: 1399px) and (min-width: 1025px) {
  .dashboard-v2 .gt-row-secondary { grid-template-columns: repeat(3,minmax(0,1fr)) !important; }
}
@media (max-width: 1199px) and (min-width: 1025px) {
  .dashboard-v2 .gt-section-middle { grid-template-columns: minmax(0,1.4fr) minmax(0,1fr) !important; }
  .dashboard-v2 .gt-section-bottom { grid-template-columns: repeat(2,minmax(0,1fr)) !important; }
  .dashboard-v2 .gt-section-bottom > :last-child { grid-column: 1 / -1; }
}
@media (max-width: 1024px) {
  .dashboard-v2 main { padding: 20px 24px; }
  .dashboard-v2 .gt-row-main { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .dashboard-v2 .gt-row-secondary { grid-template-columns: repeat(2,minmax(0,1fr)) !important; }
  .dashboard-v2 .gt-row-secondary > :nth-child(5) { display: flex !important; grid-column: auto; }
  .dashboard-v2 :is(.gt-section-middle,.gt-section-bottom) { grid-template-columns: minmax(0,1fr); }
}
@media (max-width: 767px) {
  .dashboard-v2:not(.gt-shell) {
    --gt-mobile-nav-height: calc(57px + max(12px, env(safe-area-inset-bottom, 0px)));
    padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) 0 env(safe-area-inset-left, 0px) !important;
  }
  .dashboard-v2 main { padding: 16px; }
  .dashboard-v2:not(.gt-shell) main { padding-bottom: calc(var(--gt-mobile-nav-height) + 20px) !important; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(h1) {
    top: env(safe-area-inset-top, 0px);
    flex-wrap: nowrap;
    gap: 8px;
    padding: 8px 16px;
    background: var(--gt-canvas) !important;
    backdrop-filter: none;
  }
  .dashboard-v2:not(.gt-shell) header.sticky:has(h1) > div:first-child { min-width: 0; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(h1) > div:first-child > div { min-width: 0; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(h1) p { display: none; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(h1) h1 { white-space: normal; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(h1) > div:last-child { gap: 4px; flex-wrap: wrap; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(h1) > div:last-child > [aria-hidden='true'] { display: none; }
  /* Embedded screens scroll once, within the space between header and navigation. */
  .dashboard-v2:not(.gt-shell):has(main > iframe) {
    height: 100vh;
    height: 100dvh;
    min-height: 0 !important;
    padding-bottom: var(--gt-mobile-nav-height) !important;
    overflow: hidden;
  }
  .dashboard-v2:not(.gt-shell):has(main > iframe) > div { min-height: 0; }
  .dashboard-v2:not(.gt-shell) main:has(> iframe) {
    display: flex;
    flex-direction: column;
    min-height: 0;
    padding: 12px 16px 8px !important;
    overflow: hidden;
  }
  .dashboard-v2:not(.gt-shell) main > iframe {
    display: block;
    height: 100% !important;
    min-height: 0 !important;
  }
  .dashboard-v2 .gt-row-main { gap: 12px !important; }
  .dashboard-v2 .gt-row-main article { min-height: 144px !important; padding: 16px !important; gap: 10px; }
  .dashboard-v2 .gt-row-main article > div:first-child { align-items: flex-start; }
  .dashboard-v2 .gt-row-main article > div:first-child > span:last-child { font-size: 12px; }
  .dashboard-v2 .gt-row-main article > div:nth-child(2) > span,
  .dashboard-v2 .gt-row-main article:first-child > div:nth-child(2) > span { font-size: 22px; }
  .dashboard-v2 .gt-row-secondary article { min-height: 124px !important; padding: 14px !important; }
  .dashboard-v2 .gt-row-secondary article > div:nth-child(2) > span { font-size: 20px; }
  .dashboard-v2 :is(.gt-section-middle,.gt-section-bottom) > .v2-card { padding: 18px; }
  .dashboard-v2 .v2-filter-pill { min-height: 44px; }
  .dashboard-v2 button[title]:has(svg):not(:has(span)) { min-width: 44px; min-height: 44px; }
  .dashboard-v2 button[title='Trocar de dashboard'] { min-width: 44px; min-height: 44px; }
  .dashboard-v2 > nav {
    padding-top: 8px;
    padding-inline: max(4px, env(safe-area-inset-left, 0px)) max(4px, env(safe-area-inset-right, 0px));
    column-gap: 0;
    background: var(--gt-surface);
    border-top-color: var(--gt-line);
    box-shadow: none;
    backdrop-filter: none;
  }
  .dashboard-v2 > nav button { height: 48px; min-height: 48px; padding: 6px 2px; gap: 4px; border-radius: 8px; font-size: 10px; line-height: 14px; }
  .dashboard-v2 > nav button[aria-current='page'] { background: var(--gt-blue-soft); color: var(--gt-blue); }
}
@media (max-width: 359px) {
  .dashboard-v2 main { padding-inline: 12px; }
  .dashboard-v2 .gt-row-main article { padding: 12px !important; }
  .dashboard-v2 .gt-row-main article > div:nth-child(2) > span,
  .dashboard-v2 .gt-row-main article:first-child > div:nth-child(2) > span { font-size: 19px; }
}
@media (prefers-reduced-motion: reduce) {
  .dashboard-v2 :is(.v2-card,button) { transition-property: color,background-color,border-color !important; }
  .dashboard-v2 button:active { transform: none; }
  .dashboard-v2 .animate-pulse { animation: none; }
}

/* Auxiliary GTracker views: campaigns, logs, and settings. Loaded after page CSS. */
.gt-shell .board-head,
.gt-shell .gt-top {
  color: var(--gt-ink);
}

.gt-shell .board-head h1,
.gt-shell .gt-top h1 {
  color: var(--gt-ink);
  font-family: var(--gt-font);
  font-weight: 650;
  letter-spacing: -.025em;
}

.gt-shell .board-note,
.gt-shell .gt-help,
.gt-shell .gt-foot {
  color: var(--gt-subtle);
  line-height: 1.5;
}

.gt-shell .board-body,
.gt-shell .gt-main {
  min-width: 0;
}

.gt-shell .board-head-actions,
.gt-shell .gt-top .actions {
  flex-wrap: wrap;
  min-width: 0;
}

.gt-shell .board-head .v2-filter-pill,
.gt-shell .gt-btn,
.gt-shell .gt-tab {
  min-height: 40px;
  box-sizing: border-box;
  font-family: var(--gt-font);
  font-size: var(--gt-type-control);
  font-weight: var(--gt-weight-control);
  line-height: var(--gt-leading-control);
}

.gt-shell .gt-btn {
  border-color: var(--gt-line);
  background: var(--gt-surface);
  color: var(--gt-ink);
  transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.gt-shell .gt-btn:hover {
  background: var(--gt-canvas);
  border-color: var(--gt-blue);
}

.gt-shell .gt-btn.primary {
  background: var(--gt-blue);
  border-color: var(--gt-blue);
  color: var(--gt-on-blue);
}

.gt-shell .gt-btn.primary:hover {
  background: color-mix(in srgb, var(--gt-blue), #000 16%);
  border-color: color-mix(in srgb, var(--gt-blue), #000 16%);
}

.gt-shell .gt-btn:focus-visible,
.gt-shell .gt-tab:focus-visible,
.gt-shell .board-head .v2-filter-pill:focus-visible,
.gt-shell .gt-form input:focus-visible,
.gt-shell .gt-form select:focus-visible {
  outline: 2px solid var(--gt-blue);
  outline-offset: 2px;
}

.gt-shell .gt-btn:disabled {
  cursor: not-allowed;
  opacity: .55;
  transform: none;
}

.gt-shell .gt-btn.sm {
  min-height: 40px;
  padding-inline: .75rem;
  font-size: .8125rem;
}

.gt-shell .gt-tabs {
  display: flex;
  flex-wrap: wrap;
  max-width: 100%;
  box-sizing: border-box;
  background: var(--gt-canvas);
  border-color: var(--gt-line);
}

.gt-shell .gt-tab {
  color: var(--gt-subtle);
  transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
}

.gt-shell .gt-tab:hover {
  color: var(--gt-ink);
}

.gt-shell .gt-tab.on {
  color: var(--gt-blue);
  background: var(--gt-surface);
}

.gt-shell .gt-kpi .v2-kpi-value,
.gt-shell table.board td.num,
.gt-shell table.gt td,
.gt-shell .gt-foot #stamp {
  font-variant-numeric: tabular-nums;
}

.gt-shell .board-wrap,
.gt-shell .gt-table-wrap {
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  border-color: var(--gt-line);
  background: var(--gt-surface);
  scrollbar-color: var(--gt-subtle) var(--gt-canvas);
}

.gt-shell table.board,
.gt-shell table.gt {
  width: max-content;
  min-width: 100%;
  font-family: var(--gt-font);
  color: var(--gt-ink);
  font-variant-numeric: tabular-nums;
}

.gt-shell table.board th,
.gt-shell table.gt th {
  color: var(--gt-subtle);
  font-family: var(--gt-font);
  font-weight: 650;
  letter-spacing: .05em;
  background: var(--gt-canvas);
  border-bottom-color: var(--gt-line);
}

.gt-shell table.board td,
.gt-shell table.gt td {
  color: var(--gt-ink);
  border-bottom-color: var(--gt-line);
}

.gt-shell table.board td.num,
.gt-shell table.board th.num {
  font-family: var(--gt-font);
  font-variant-numeric: tabular-nums;
}

.gt-shell table.board th.sticky,
.gt-shell table.board td.sticky {
  background: var(--gt-surface);
}

.gt-shell table.board th.sticky {
  background: var(--gt-canvas);
}

.gt-shell table.board tbody tr:hover td,
.gt-shell table.gt tr.row:hover td {
  background: var(--gt-blue-soft);
}

.gt-shell table.board tbody tr:hover td.sticky {
  background: var(--gt-blue-soft);
}

.gt-shell table.board .last {
  color: var(--gt-subtle);
  line-height: 1.4;
}

.gt-shell table.board .last b {
  color: var(--gt-ink);
}

.gt-shell table.board td.num.muted,
.gt-shell table.gt td.muted {
  color: var(--gt-subtle);
}

.gt-shell table.board td.num.pos {
  color: var(--gt-blue);
}

.gt-shell table.board td.num.neg {
  color: var(--gt-danger);
}

.gt-shell table.gt tr.detail td {
  background: var(--gt-canvas);
  color: var(--gt-ink);
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.gt-shell .gt-card-title {
  color: var(--gt-ink);
  font-family: var(--gt-font);
  font-size: 1rem;
  line-height: 1.35;
  letter-spacing: -.015em;
}

.gt-shell .gt-help {
  margin-top: .375rem;
}

.gt-shell .gt-form {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
  gap: 1rem 1.25rem;
}

.gt-shell .gt-form label {
  min-width: 0;
  color: var(--gt-subtle);
  font-family: var(--gt-font);
  font-size: .8125rem;
  font-weight: 600;
  line-height: 1.4;
}

.gt-shell .gt-form input,
.gt-shell .gt-form select {
  min-width: 0;
  min-height: 40px;
  background: var(--gt-canvas);
  border-color: var(--gt-line);
  color: var(--gt-ink);
  font-family: var(--gt-font);
  font-size: .875rem;
}

.gt-shell .gt-form input::placeholder {
  color: var(--gt-subtle);
  opacity: 1;
}

.gt-shell .gt-form input[readonly] {
  color: var(--gt-subtle);
}

.gt-shell .gt-form input.v2-mono {
  font-family: 'Geist Mono', ui-monospace, monospace;
}

.gt-shell .gt-top #auto {
  font-family: var(--gt-font);
  font-variant-numeric: tabular-nums;
}

.gt-shell .gt-form > div:not(.gt-form) {
  min-width: 0;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .5rem;
}

.gt-shell .gt-snip,
.gt-shell #track-health-out {
  max-width: 100%;
  box-sizing: border-box;
  background: var(--gt-canvas);
  border-color: var(--gt-line);
  color: var(--gt-ink);
  overflow-wrap: anywhere;
}

.gt-shell .gt-foot {
  flex-wrap: wrap;
}

@media (max-width: 767px) {
  .gt-shell .board-head {
    flex-wrap: wrap;
    align-items: flex-start;
  }

  .gt-shell .board-head-actions {
    width: 100%;
  }

  .gt-shell .board-head .v2-filter-pill,
  .gt-shell .gt-btn,
  .gt-shell .gt-btn.sm,
  .gt-shell .gt-tab,
  .gt-shell .gt-form input,
  .gt-shell .gt-form select {
    min-height: 44px;
  }

  .gt-shell .gt-tabs {
    width: 100%;
  }

  .gt-shell .gt-tabs .gt-tab {
    flex: 1 1 auto;
  }

  .gt-shell .gt-form {
    grid-template-columns: minmax(0, 1fr);
  }
  .gt-shell .gt-form input,
  .gt-shell .gt-form select,
  .dashboard-v2 :is(input,textarea,select) { font-size: 16px; }

  /* Keep the calendar and its apply/cancel actions inside the PWA viewport. */
  [data-radix-popper-content-wrapper]:has(.meta-daterange) {
    position: fixed !important;
    inset: max(12px, env(safe-area-inset-top, 0px)) 12px auto !important;
    transform: none !important;
    width: calc(100% - 24px) !important;
    min-width: 0 !important;
    max-width: calc(100vw - 24px) !important;
    z-index: 60 !important;
  }
  [role='dialog']:has(.meta-daterange) {
    width: 100% !important;
    min-width: 0;
    max-width: 100% !important;
    background: var(--gt-surface);
    color: var(--gt-ink);
    border-color: var(--gt-line);
  }
  [role='dialog']:has(.meta-daterange) > div {
    max-height: calc(100vh - max(12px, env(safe-area-inset-top, 0px)) - max(12px, env(safe-area-inset-bottom, 0px)));
    max-height: calc(100dvh - max(12px, env(safe-area-inset-top, 0px)) - max(12px, env(safe-area-inset-bottom, 0px)));
  }
  [role='dialog']:has(.meta-daterange) > div > div:first-child { min-height: 0; overflow-y: auto; }
  [role='dialog']:has(.meta-daterange) > div > div:last-child { flex-shrink: 0; }
  .meta-dr-presets button,
  [role='dialog']:has(.meta-daterange) > div > div:last-child button { min-height: 44px; }
  .meta-daterange { padding: 8px; }
  .meta-daterange .rdp-root {
    --rdp-day-height: 44px;
    --rdp-day-width: 44px;
    --rdp-day_button-height: 44px;
    --rdp-day_button-width: 100%;
    --rdp-nav-height: 44px;
    --rdp-nav_button-height: 44px;
    --rdp-nav_button-width: 44px;
  }
  .meta-daterange :is(.rdp-root,.rdp-months,.rdp-month,.rdp-month_grid) { width: 100%; max-width: none; }
  .meta-daterange .rdp-month_grid { table-layout: fixed; }
  .meta-daterange .rdp-day { padding: 0; }
  .meta-daterange button { min-height: 44px; }
  .meta-daterange .rdp-day_button { min-width: 44px; }
  .meta-daterange .rdp-nav button { width: 44px; height: 44px; min-width: 44px; }
  .meta-daterange .rdp-month_caption { min-height: 44px; padding-right: 88px; }
  .gt-meta-acc { bottom: calc(65px + max(12px, env(safe-area-inset-bottom, 0px))); min-height: 44px; }
  .gt-meta-acc select { font-size: 16px; min-height: 36px; }
  body:has(.gt-meta-acc.show) .dashboard-v2 main { padding-bottom: calc(var(--gt-mobile-nav-height) + 76px) !important; }
  [role='dialog']:has(.meta-daterange) :is(input,select) { font-size: 16px; }
}

[role='dialog']:has(.meta-daterange) :is(button,input,select):focus-visible {
  outline: 2px solid var(--gt-blue);
  outline-offset: 2px;
}

/* Entry-product conversion: keep every stage visible, including unknown and zero. */
.dashboard-v2 .gt-conversion-funnel { padding: 24px; }
.gt-conversion-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 24px; }
.gt-conversion-header p { margin-top: 4px; }
.gt-conversion-total { display: grid; gap: 4px; text-align: right; flex-shrink: 0; }
.gt-conversion-total span { color: var(--gt-subtle); font-size: 12px; }
.gt-conversion-total strong { color: var(--gt-blue); font-size: 24px; line-height: 1.2; }
.gt-conversion-stages { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 20px; list-style: none; margin: 0; padding: 0; }
.gt-conversion-stages li { min-width: 0; display: grid; grid-template-rows: minmax(40px,auto) auto minmax(36px,auto) 6px auto; gap: 8px; align-content: start; }
.dashboard-v2 .gt-conversion-stages h3 { font-size: 14px; font-weight: 600; line-height: 1.4; letter-spacing: 0; }
.gt-conversion-count { font-size: 28px; line-height: 1.2; font-weight: 650; letter-spacing: -.025em; font-variant-numeric: tabular-nums; }
.gt-conversion-description, .gt-conversion-rate { color: var(--gt-subtle); font-size: 12px; line-height: 1.5; }
.gt-conversion-track { height: 6px; border-radius: 3px; background: var(--gt-line); overflow: hidden; }
.gt-conversion-track > div { height: 100%; background: var(--gt-blue); border-radius: inherit; }
.gt-conversion-note { color: var(--gt-subtle); font-size: 12px; line-height: 1.6; margin-top: 16px; }
.gt-conversion-note + .gt-conversion-note { margin-top: 4px; }
@media (max-width: 767px) {
  .dashboard-v2 .gt-conversion-funnel { padding: 20px; }
  .gt-conversion-header { flex-wrap: wrap; margin-bottom: 20px; }
  .gt-conversion-total { text-align: left; }
  .gt-conversion-stages { grid-template-columns: minmax(0,1fr); gap: 20px; }
  .gt-conversion-stages li { grid-template-columns: minmax(0,1fr) auto; grid-template-rows: auto auto 6px auto; gap: 6px 12px; }
  .gt-conversion-stages h3 { align-self: center; }
  .gt-conversion-count { grid-column: 2; grid-row: 1 / 3; align-self: center; text-align: right; font-size: 26px; }
  .gt-conversion-description { grid-column: 1; }
  .gt-conversion-track, .gt-conversion-rate { grid-column: 1 / -1; }
}

/* Campaign reporting: outcomes lead, configuration remains available on demand. */
#shell .gt-main { display:block; padding:16px; }
.gt-embedded #shell .gt-main { padding:0 !important; }
#shell #board-report { min-width:0; background:var(--gt-surface); }
#shell .board-levels { display:flex; gap:4px; border-bottom:1px solid var(--gt-line); background:var(--gt-canvas); }
#shell .board-levels button { min-height:44px; padding:10px 20px; border:0; border-bottom:2px solid transparent; background:var(--gt-surface); color:var(--gt-subtle); font:var(--gt-weight-control) var(--gt-type-control)/var(--gt-leading-control) var(--gt-font); cursor:pointer; }
#shell .board-levels button[aria-selected='true'] { border-bottom-color:var(--gt-blue); color:var(--gt-blue); }
#shell .board-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 16px; border-bottom:1px solid var(--gt-line); }
#shell .board-head h1 { margin:0; font-size:15px; font-weight:650; }
#shell .board-head-actions { display:flex; align-items:center; justify-content:flex-end; gap:6px; flex-wrap:wrap; }
#shell .board-body { min-width:0; padding:0; }
#shell .campaign-filters { display:grid; grid-template-columns:minmax(160px,1.2fr) minmax(160px,1fr) minmax(0,4.5fr); gap:12px; padding:12px 16px; align-items:end; }
#shell #board-advanced-filters { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; align-items:end; }
#shell .campaign-filters label { display:flex; flex-direction:column; gap:5px; min-width:0; color:var(--gt-subtle); font-size:12px; font-weight:500; }
#shell .campaign-filters :is(input,select),#shell .board-custom input { box-sizing:border-box; width:100%; min-width:0; min-height:40px; padding:8px; border:1px solid var(--gt-line); border-radius:5px; background:var(--gt-canvas); color:var(--gt-ink); font:400 var(--gt-type-control)/var(--gt-leading-control) var(--gt-font); }
#shell .period-filter .board-period { display:block; min-width:0; padding:0; border:0; background:none; }
#shell .period-filter svg { display:none; }
#shell #board-filter-toggle { display:none; }
#shell .board-custom { display:flex; align-items:end; flex-wrap:wrap; gap:8px; }
#shell .board-custom label { display:flex; flex-direction:column; gap:4px; color:var(--gt-subtle); font-size:12px; }
#shell .board-custom input { width:auto; }
#shell .board-filter-state,#shell .board-context { display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px; padding:0 16px 10px; color:var(--gt-subtle); font-size:12px; }
#shell #board-active-filters { display:flex; flex:1; flex-wrap:wrap; gap:6px; }
#shell #board-active-filters:empty { display:none; }
#shell .board-text-action { border:0; padding:0 4px; min-height:32px; background:none; color:var(--gt-blue); font:inherit; cursor:pointer; }
#shell .board-range { margin:0; font-size:12px; }
#shell .board-context { justify-content:space-between; }
#shell #board-navigation { display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding:10px 16px 0; font-size:12px; }
#shell #board-navigation:empty { display:none; }
#shell #board-navigation button { min-height:32px; border:0; padding:0; background:none; color:var(--gt-blue); font:inherit; cursor:pointer; }
#shell #kpis { display:none; }
#shell :is(.board-load-status,#board-refresh-status,.board-period-error,.board-product-warning) { margin:0; padding:8px 16px; font-size:12px; line-height:1.5; }
#shell :is(.board-load-status,#board-refresh-status):empty { display:none; }
#shell .board-product-warning { border-block:1px solid var(--gt-line); background:var(--gt-canvas); color:var(--gt-ink); }
#shell .board-period-error { color:var(--gt-danger); }
#shell .board-wrap { max-width:100%; max-height:calc(100dvh - 285px); overflow:auto; border:0; border-block:1px solid var(--gt-line); border-radius:0; overscroll-behavior:contain; }
#shell table.board { border-collapse:separate; border-spacing:0; width:max-content; min-width:100%; table-layout:fixed; font-size:12px; }
#shell table.board caption { text-align:left; padding:8px 12px; color:var(--gt-subtle); font-size:12px; }
#shell table.board :is(th,td) { box-sizing:border-box; padding:5px 8px; white-space:nowrap; vertical-align:middle; border-bottom:1px solid var(--gt-line); }
#shell table.board th { position:sticky; top:0; z-index:2; padding-block:0; text-align:left; font-size:11px; letter-spacing:0; text-transform:none; background:var(--gt-canvas); }
#shell table.board td { height:44px; }
#shell table.board :is(td.num,th.num) { text-align:right; font-variant-numeric:tabular-nums; }
#shell .column-sort { display:flex; width:100%; min-height:44px; align-items:center; justify-content:inherit; padding:0; border:0; background:none; color:inherit; font:inherit; font-weight:650; cursor:pointer; }
#shell table.board th.num .column-sort { justify-content:flex-end; }
#shell .column-heading { display:flex; align-items:center; gap:3px; }
#shell .column-heading .column-sort { min-width:0; flex:1; width:auto; }
#shell .column-move { display:flex; flex:0 0 24px; width:24px; height:44px; align-items:center; justify-content:center; padding:0; border:0; border-radius:4px; background:transparent; color:var(--gt-subtle); cursor:grab; touch-action:none; user-select:none; }
#shell .column-move:hover { background:var(--gt-hover); color:var(--gt-ink); }
#shell .column-move:active { cursor:grabbing; }
#shell .column-move:focus-visible { outline:2px solid var(--gt-blue); outline-offset:-2px; }
#shell .is-column-dragging { cursor:grabbing; user-select:none; }
#shell .is-column-dragging table.board th.sticky { left:auto; }
#shell table.board th.column-drag-source { background:var(--gt-blue-soft); color:var(--gt-blue); }
#shell table.board th[data-column-drop='before'] { box-shadow:inset 2px 0 var(--gt-blue); }
#shell table.board th[data-column-drop='after'] { box-shadow:inset -2px 0 var(--gt-blue); }
#shell table.board :is(th,td).col-campaign { width:var(--gt-identity-width); min-width:var(--gt-identity-width); max-width:var(--gt-identity-width); }
#shell table.board :is(th,td).col-effective_status { width:82px; min-width:82px; max-width:100px; }
#shell table.board :is(th,td).col-budget { width:108px; min-width:108px; max-width:120px; }
#shell table.board :is(th,td):is(.col-sales,.col-roas,.col-roi,.col-margin,.col-ic,.col-ctr) { min-width:64px; width:64px; }
#shell table.board :is(th,td):is(.col-cpa,.col-spend,.col-revenue,.col-profit,.col-cpi,.col-cpc,.col-cpm,.col-ticket) { min-width:88px; width:88px; }
#shell table.board :is(th,td):is(.col-impressions,.col-clicks,.col-pageviews) { min-width:78px; width:78px; }
#shell table.board :is(th,td).col-bid { max-width:200px; min-width:150px; }
#shell table.board :is(th,td):is(.col-last_sync_at,.col-last_change_at) { min-width:130px; }
#shell table.board :is(th,td).sticky { position:sticky; left:0; z-index:3; max-width:var(--gt-identity-width); min-width:var(--gt-identity-width); overflow:hidden; text-overflow:ellipsis; box-shadow:5px 0 8px -7px var(--gt-subtle); }
#shell table.board th.sticky { z-index:4; }
#shell table.board tfoot td { position:sticky; bottom:0; z-index:2; background:var(--gt-canvas); font-weight:650; }
#shell table.board tfoot td.sticky { z-index:4; }
#shell .entity-open { display:flex; align-items:center; width:100%; min-height:44px; padding:0; border:0; background:none; color:var(--gt-blue); font:inherit; text-align:left; cursor:pointer; overflow:hidden; }
#shell .entity-open :is(span,.entity-name) { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
#shell .entity-open:disabled { color:var(--gt-subtle); cursor:default; }
#shell .budget-kind { display:inline-block; margin-left:4px; padding:1px 3px; border:1px solid var(--gt-line); border-radius:3px; color:var(--gt-subtle); font-size:10px; vertical-align:middle; }
#shell .management-inline { min-height:44px; border:1px solid var(--gt-line); border-radius:4px; padding:4px 6px; background:var(--gt-surface); color:var(--gt-blue); font:inherit; cursor:pointer; }
#shell .management-compact { display:inline-flex; align-items:center; max-width:100%; gap:3px; padding:3px 1px; border-color:transparent; text-align:inherit; }
#shell .management-compact:hover { border-color:var(--gt-line); background:var(--gt-blue-soft); }
#shell .management-compact svg { width:12px; height:12px; flex-shrink:0; }
#shell .management-compact:disabled { color:var(--gt-subtle); }
#shell #board-report.is-loading tbody,#shell #board-report.load-failed tbody { opacity:.6; }
#shell #board-report.is-loading .board-load-status { color:var(--gt-blue); }
#shell #board-report.load-failed .board-load-status { color:var(--gt-danger); }
#shell .unmatched-heading td,#shell .unmatched-notice { white-space:normal; background:var(--gt-canvas); color:var(--gt-subtle); line-height:1.5; }
#shell .unmatched-heading a,#shell .unmatched-notice a { color:var(--gt-blue); }
#shell .columns-picker { position:relative; font-size:13px; }
#shell .columns-picker summary { display:flex; align-items:center; min-height:40px; padding:0 12px; border:1px solid var(--gt-line); border-radius:5px; font:var(--gt-weight-control) var(--gt-type-control)/var(--gt-leading-control) var(--gt-font); cursor:pointer; }
#shell #board-columns { position:absolute; right:0; top:calc(100% + 6px); z-index:40; width:min(320px,calc(100vw - 32px)); max-height:min(480px,65dvh); overflow:auto; box-sizing:border-box; padding:12px; border:1px solid var(--gt-line); border-radius:8px; background:var(--gt-surface); color:var(--gt-ink); box-shadow:var(--gt-shadow); }
#shell #board-columns fieldset { margin:10px 0 0; padding:4px 0; border:0; border-top:1px solid var(--gt-line); }
#shell #board-columns legend { padding:0 8px 0 0; font-size:12px; color:var(--gt-subtle); font-weight:650; }
#shell #board-columns label { display:flex; min-height:32px; align-items:center; gap:8px; font-size:12px; cursor:pointer; }
#shell #board-columns input { width:16px; height:16px; accent-color:var(--gt-blue); }
#shell #board-columns button { min-height:40px; padding:5px 8px; border:1px solid var(--gt-line); border-radius:4px; background:var(--gt-canvas); color:var(--gt-ink); font:inherit; cursor:pointer; }
#shell .column-order-hint { margin:10px 0; font-size:12px; line-height:1.5; color:var(--gt-subtle); }
#shell #board-columns .column-order-picker > summary { padding:0; border:0; border-radius:0; min-height:40px; color:var(--gt-ink); background:transparent; }
#shell #board-columns .column-order-picker > summary::after { content:'+'; margin-left:auto; }
#shell #board-columns .column-order-picker[open] > summary::after { content:'−'; }
#shell .column-order-list { margin:0; padding:0; list-style:none; }
#shell .column-order-list li { display:flex; align-items:center; gap:4px; border-top:1px solid var(--gt-line); font-size:12px; }
#shell .column-order-list li > span { flex:1; min-width:0; }
#shell #board-columns .column-order-step { display:flex; width:44px; min-height:44px; align-items:center; justify-content:center; border:0; background:transparent; }
#shell #board-columns .column-order-step:hover:enabled { background:var(--gt-hover); }
#shell #board-columns .column-order-step:disabled { color:var(--gt-subtle); cursor:default; opacity:.45; }
#shell .column-presets { display:flex; flex-wrap:wrap; gap:6px; }
#shell .board-method { padding:12px 16px; color:var(--gt-subtle); font-size:12px; }
#shell .board-method summary { min-height:32px; cursor:pointer; }
#shell .board-note { max-width:90ch; margin:8px 0 0; line-height:1.6; }
#shell .ad-thumbnail { width:32px; height:32px; object-fit:cover; border-radius:4px; margin-right:6px; }
#shell .thumbnail-placeholder { display:block; color:var(--gt-subtle); font-size:11px; }
.management-cover { position:fixed; inset:0; z-index:100; display:flex; align-items:center; justify-content:center; padding:16px; background:#0008; }
.management-dialog,.entity-details-dialog,.ad-details { box-sizing:border-box; width:min(520px,calc(100vw - 32px)); max-height:85dvh; overflow:auto; padding:24px; border:1px solid var(--gt-line); border-radius:10px; background:var(--gt-surface); color:var(--gt-ink); font-family:var(--gt-font); }
:is(.entity-details-dialog,.ad-details)::backdrop { background:#0008; }
:is(.management-dialog,.entity-details-dialog,.ad-details) h2 { margin:0 0 16px; font-size:18px; overflow-wrap:anywhere; }
:is(.management-dialog,.entity-details-dialog,.ad-details) p { overflow-wrap:anywhere; }
.management-dialog label { display:flex; flex-direction:column; gap:6px; margin:12px 0; }
.management-dialog :is(input,select) { min-height:44px; padding:8px; border:1px solid var(--gt-line); border-radius:5px; background:var(--gt-canvas); color:var(--gt-ink); font:inherit; }
.management-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; margin-top:20px; }
:is(.management-actions,.management-history-row,.entity-details-dialog,.ad-details) button { min-height:44px; padding:8px 12px; border:1px solid var(--gt-line); border-radius:5px; background:var(--gt-surface); color:var(--gt-ink); font:inherit; cursor:pointer; }
:is(.entity-details-dialog,.ad-details) img { display:block; max-width:100%; max-height:40dvh; object-fit:contain; margin:12px auto; }
.management-history-row { padding:12px 0; border-bottom:1px solid var(--gt-line); }
#shell table.board td.num.pos { color:var(--gt-success); }
#shell table.board td.num.neg { color:var(--gt-danger); }
@media (max-width:1100px) and (min-width:640px) {
  #shell .campaign-filters { grid-template-columns:1fr 1fr; }
  #shell #board-advanced-filters { grid-column:1/-1; }
}
@media (max-width:639px) {
  #shell .board-levels button { flex:1; padding:10px 8px; }
  #shell .board-head { padding:8px 12px; flex-wrap:wrap; }
  #shell .board-head h1 { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
  #shell .board-head-actions { width:auto; margin-left:auto; }
  #shell .campaign-filters { grid-template-columns:minmax(0,1fr) auto; padding:10px 12px; gap:8px; }
  #shell .campaign-filters > label:first-child { grid-column:1/-1; }
  #shell .campaign-filters > label { font-size:0; gap:0; }
  #shell #board-filter-toggle { display:inline-flex; min-height:44px; align-self:end; }
  #shell #board-advanced-filters { display:none; grid-column:1/-1; grid-template-columns:repeat(2,minmax(0,1fr)); }
  #shell #board-report.filters-open #board-advanced-filters { display:grid; }
  /* Editable controls retain 16px on touch screens; action labels share one scale. */
  #shell .campaign-filters :is(input,select),#shell .board-custom input { min-height:44px; font-size:1rem; line-height:1.5rem; }
  #shell .columns-picker summary { min-height:44px; }
  #shell .board-filter-state,#shell .board-context { padding:0 12px 6px; gap:4px 8px; font-size:11px; }
  #shell .board-context { justify-content:flex-start; }
  #shell .board-range { font-size:11px; }
  #shell .board-text-action { min-height:44px; }
  #shell .board-wrap { max-height:65dvh; }
  #shell { --gt-identity-width: 180px; }
  #shell table.board :is(th,td) { padding-inline:6px; }
  #shell #board-columns { position:fixed; inset:110px 12px auto; width:auto; max-height:calc(100dvh - 128px); }
  #shell #board-columns :is(button,label) { min-height:44px; }
  #shell #board-navigation button { min-height:44px; }
  #shell .board-method { padding:8px 12px; }
  #shell .board-method summary { min-height:44px; }
  #shell .board-custom { width:100%; }
  #shell .board-custom label { flex:1; min-width:120px; }
  #shell .board-custom input { width:100%; }
}

#shell :is(button,input,select,summary,.board-wrap):focus-visible { outline:2px solid var(--gt-blue); outline-offset:2px; }

/* Row information is an action, separate from the dialog it opens. */
#shell .entity-cell { display:flex; align-items:center; gap:2px; min-width:0; }
#shell .entity-cell .entity-open { flex:1; min-width:0; width:auto; }
#shell .entity-name-unmatched { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; flex:1; }
#shell .entity-details { display:inline-flex; align-items:center; justify-content:center; flex:0 0 44px; width:44px; min-width:44px; min-height:44px; padding:0; border:0; border-radius:4px; background:none; color:var(--gt-subtle); cursor:pointer; }
#shell .entity-details:hover { color:var(--gt-blue); background:var(--gt-blue-soft); }
#shell .unmatched-group td { white-space:normal; background:var(--gt-canvas); color:var(--gt-subtle); line-height:1.5; padding-block:12px; }
#shell .unmatched-group :is(strong,span,a) { display:block; max-width:min(65ch,calc(100vw - 36px)); margin-bottom:4px; }
#shell .unmatched-group a { color:var(--gt-blue); }
#shell #board-preset { min-height:44px; max-width:100%; border:1px solid var(--gt-line); border-radius:4px; padding:6px; background:var(--gt-canvas); color:var(--gt-ink); font:inherit; }
.entity-details-dialog dl { margin:0; }.entity-details-dialog dt { font-weight:650; margin-top:12px; }.entity-details-dialog dd { margin:4px 0; overflow-wrap:anywhere; line-height:1.5; }

/* Embedded Campaigns owns the period control and its document scrolls once. */
.gt-embedded #shell:has(#board-report) { min-height: 100dvh; }
.gt-embedded #shell .board-wrap { max-height: none; overscroll-behavior-y: auto; }
#shell .board-levels button { background: var(--gt-nav); }
#shell .board-levels button:hover { background: var(--gt-hover); color: var(--gt-ink); }
#shell .board-levels button[aria-selected='true'] { background: var(--gt-surface); color: var(--gt-blue); }
#shell .columns-picker summary:hover { background: var(--gt-hover); }
#shell .columns-picker[open] summary { border-color: var(--gt-blue); background: var(--gt-blue-soft); }
#shell :is(.column-sort,.board-text-action,.management-inline) { transition: color 150ms,background-color 150ms,border-color 150ms; }
#shell .column-sort:hover { color: var(--gt-blue); }
#shell .board-text-action:hover { text-decoration: underline; text-underline-offset: 3px; }
#shell .campaign-filters :is(input,select):hover { border-color: var(--gt-subtle); }
#shell table.board th[aria-sort]:not([aria-sort='none']) { color: var(--gt-blue); }
.management-dialog :is(input,select):focus-visible { outline: 2px solid var(--gt-blue); outline-offset: 2px; }
:is(.management-actions,.management-history-row,.entity-details-dialog,.ad-details) button:hover { background: var(--gt-hover); }
:is(.management-actions,.management-history-row,.entity-details-dialog,.ad-details) button:focus-visible { outline: 2px solid var(--gt-blue); outline-offset: 2px; }
@media (max-width:639px) {
  #shell .board-head-actions { gap: 4px; }
  #shell .board-head-actions > .gt-btn { padding-inline: 10px; }
  #shell .board-filter-state:has(#board-active-filters:empty) { justify-content: flex-end; padding-bottom: 0; }
}

/* The sidebar carries the brand on desktop; every mobile view keeps its mark. */
.gt-header-mark { display: none; flex: 0 0 24px; object-fit: contain; }
.gt-standalone-brand { display: flex; align-items: center; gap: 10px; color: var(--gt-ink); font-size: 16px; font-weight: 650; }
.gt-standalone-brand img { display: block; flex: 0 0 28px; object-fit: contain; }
.gt-embedded .gt-standalone-brand { display: none; }
@media (max-width: 767px) {
  .gt-header-mark { display: block; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(h1) .gt-page-heading { align-items: center; }
}
@media (max-width: 767px) {
  .gt-header-mark { min-width: 24px; width: 24px; height: 24px; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(.v2-filter-pill) { flex-wrap: wrap; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(.v2-filter-pill) > div:first-child { flex: 1 0 100%; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(.v2-filter-pill) > div:last-child { flex: 1 0 100%; justify-content: flex-start; }
}
@media (max-width: 359px) {
  .dashboard-v2:not(.gt-shell) header.sticky:has(h1) { flex-wrap: wrap; }
  .dashboard-v2:not(.gt-shell) header.sticky:has(h1) > div:first-child { flex: 1 0 100%; }
}

/* ==========================================================================
   GTracker Enhanced Loading States (PWA & Suspense)
   ========================================================================== */
@keyframes gt-spin {
  to { transform: rotate(360deg); }
}

@keyframes gt-fade-in {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

.gt-view-spinner {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 2.5px solid var(--gt-line);
  border-top-color: var(--gt-blue);
  border-right-color: var(--gt-blue);
  animation: gt-spin 0.75s cubic-bezier(0.4, 0, 0.2, 1) infinite;
  display: inline-block;
  box-sizing: border-box;
}

#shell #board-report.is-loading .board-load-status {
  display: inline-flex !important;
  align-items: center;
  gap: 8px;
  background: var(--gt-surface);
  border: 1px solid var(--gt-line);
  border-radius: 9999px;
  padding: 6px 14px;
  color: var(--gt-blue);
  font-weight: 500;
  font-size: 12px;
  box-shadow: 0 4px 14px -3px rgba(0, 0, 0, 0.08);
  animation: gt-fade-in 0.2s ease-out;
}

#shell #board-report.is-loading .board-load-status::before {
  content: "";
  display: inline-block;
  width: 13px;
  height: 13px;
  border-radius: 50%;
  border: 2px solid var(--gt-blue-soft);
  border-top-color: var(--gt-blue);
  animation: gt-spin 0.75s linear infinite;
  flex-shrink: 0;
  box-sizing: border-box;
}
