/* ========================================================================
   FTC UI CONTRACT V1 — CANONICAL RUNTIME
   Core owns foundations and reusable visual grammar.
   Modules own only functional composition and consume these tokens.
   ======================================================================== */

html[data-ftc-effective-theme="light"] body.ftc-ui2{
  --ftc-canvas:#f4f6f8;
  --ftc-canvas-subtle:#eef1f3;
  --ftc-surface:#ffffff;
  --ftc-surface-soft:#f8fafb;
  --ftc-surface-raised:#ffffff;
  --ftc-surface-overlay:rgba(255,255,255,.98);
  --ftc-text:#171b20;
  --ftc-text-soft:#3d4850;
  --ftc-text-muted:#717c84;
  --ftc-text-faint:#939ca3;
  --ftc-border:rgba(31,43,51,.10);
  --ftc-border-strong:rgba(31,43,51,.16);
  --ftc-primary:#171d21;
  --ftc-primary-hover:#232b30;
  --ftc-primary-contrast:#ffffff;
  --ftc-accent:#9c7a3b;
  --ftc-accent-hover:#806127;
  --ftc-accent-soft:#f7f1e5;
  --ftc-success:#26714d;
  --ftc-success-soft:#eaf5ef;
  --ftc-warning:#95691f;
  --ftc-warning-soft:#fbf3e3;
  --ftc-danger:#a44343;
  --ftc-danger-soft:#fbebeb;
  --ftc-info:#3f6386;
  --ftc-info-soft:#edf3f8;
  --ftc-focus:rgba(156,122,59,.55);
  --ftc-overlay:rgba(17,24,29,.28);
  --ftc-shadow-1:0 1px 2px rgba(17,24,31,.025),0 6px 18px rgba(17,24,31,.03);
  --ftc-shadow-2:0 2px 8px rgba(17,24,31,.045),0 16px 42px rgba(17,24,31,.075);
  --ftc-shadow-float:0 22px 70px rgba(17,24,31,.16),0 2px 8px rgba(17,24,31,.05);
  color-scheme:light;
}
html[data-ftc-effective-theme="dark"] body.ftc-ui2{
  --ftc-canvas:#0f1215;
  --ftc-canvas-subtle:#14181c;
  --ftc-surface:#181c20;
  --ftc-surface-soft:#1c2126;
  --ftc-surface-raised:#20252a;
  --ftc-surface-overlay:rgba(27,32,37,.98);
  --ftc-text:#f2f4f5;
  --ftc-text-soft:#c9d0d4;
  --ftc-text-muted:#9ca7ae;
  --ftc-text-faint:#79848b;
  --ftc-border:rgba(229,236,240,.10);
  --ftc-border-strong:rgba(229,236,240,.17);
  --ftc-primary:#f2f4f5;
  --ftc-primary-hover:#ffffff;
  --ftc-primary-contrast:#171b20;
  --ftc-accent:#c3a15b;
  --ftc-accent-hover:#d2b475;
  --ftc-accent-soft:#2c271d;
  --ftc-success:#65b68d;
  --ftc-success-soft:#172a21;
  --ftc-warning:#d5ab61;
  --ftc-warning-soft:#2d2619;
  --ftc-danger:#df7a7a;
  --ftc-danger-soft:#311d1e;
  --ftc-info:#80a9cf;
  --ftc-info-soft:#17232e;
  --ftc-focus:rgba(195,161,91,.68);
  --ftc-overlay:rgba(0,0,0,.54);
  --ftc-shadow-1:0 1px 2px rgba(0,0,0,.18),0 8px 22px rgba(0,0,0,.16);
  --ftc-shadow-2:0 2px 8px rgba(0,0,0,.20),0 18px 48px rgba(0,0,0,.28);
  --ftc-shadow-float:0 24px 80px rgba(0,0,0,.46),0 2px 10px rgba(0,0,0,.26);
  color-scheme:dark;
}

body.ftc-ui2{
  --ftc-space-1:4px;--ftc-space-2:8px;--ftc-space-3:12px;--ftc-space-4:16px;
  --ftc-space-5:20px;--ftc-space-6:24px;--ftc-space-8:32px;--ftc-space-10:40px;
  --ftc-radius-xs:8px;--ftc-radius-sm:10px;--ftc-radius-md:14px;--ftc-radius-lg:18px;--ftc-radius-pill:999px;
  --ftc-motion-fast:140ms;--ftc-motion-standard:190ms;--ftc-motion-slow:230ms;
  --ftc-ease:cubic-bezier(.22,.72,.18,1);
  --ftc-font:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --ftc-font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  /* compatibility aliases while modules migrate one by one */
  --bg:var(--ftc-canvas);--surface:var(--ftc-surface);--surface-2:var(--ftc-surface-soft);
  --text:var(--ftc-text);--muted:var(--ftc-text-muted);--line:var(--ftc-border);--line-strong:var(--ftc-border-strong);
  --dark:var(--ftc-primary);--accent:var(--ftc-accent);--ok:var(--ftc-success);--ok-bg:var(--ftc-success-soft);
  --warn:var(--ftc-warning);--warn-bg:var(--ftc-warning-soft);--danger:var(--ftc-danger);--danger-bg:var(--ftc-danger-soft);
  --info:var(--ftc-info);--info-bg:var(--ftc-info-soft);--radius:var(--ftc-radius-lg);--shadow:var(--ftc-shadow-1);
  --ftc2-canvas:var(--ftc-canvas);--ftc2-canvas-deep:var(--ftc-canvas-subtle);--ftc2-surface:var(--ftc-surface);
  --ftc2-surface-soft:var(--ftc-surface-soft);--ftc2-surface-raised:var(--ftc-surface-raised);--ftc2-ink:var(--ftc-text);
  --ftc2-ink-soft:var(--ftc-text-soft);--ftc2-muted:var(--ftc-text-muted);--ftc2-muted-2:var(--ftc-text-faint);
  --ftc2-line:var(--ftc-border);--ftc2-line-strong:var(--ftc-border-strong);--ftc2-accent:var(--ftc-accent);
  --ftc2-accent-deep:var(--ftc-accent-hover);--ftc2-accent-soft:var(--ftc-accent-soft);--ftc2-positive:var(--ftc-success);
  --ftc2-positive-soft:var(--ftc-success-soft);--ftc2-warning:var(--ftc-warning);--ftc2-warning-soft:var(--ftc-warning-soft);
  --ftc2-danger:var(--ftc-danger);--ftc2-danger-soft:var(--ftc-danger-soft);--ftc2-info:var(--ftc-info);--ftc2-info-soft:var(--ftc-info-soft);
  --ftc2-radius-xs:var(--ftc-radius-xs);--ftc2-radius-sm:var(--ftc-radius-sm);--ftc2-radius-md:var(--ftc-radius-md);--ftc2-radius-lg:var(--ftc-radius-lg);
  --ftc2-shadow-1:var(--ftc-shadow-1);--ftc2-shadow-2:var(--ftc-shadow-2);--ftc2-shadow-float:var(--ftc-shadow-float);
  --ftc2-fast:var(--ftc-motion-fast);--ftc2-standard:var(--ftc-motion-standard);--ftc2-slow:var(--ftc-motion-slow);--ftc2-ease:var(--ftc-ease);
  background:var(--ftc-canvas)!important;color:var(--ftc-text);font-family:var(--ftc-font);
}
body.ftc-ui2,body.ftc-ui2 button,body.ftc-ui2 input,body.ftc-ui2 select,body.ftc-ui2 textarea{font-family:var(--ftc-font)}
body.ftc-ui2 ::selection{background:color-mix(in srgb,var(--ftc-accent) 25%,transparent);color:var(--ftc-text)}
body.ftc-ui2 :focus-visible{outline:2px solid var(--ftc-focus)!important;outline-offset:2px}

/* Canonical components */
.ftc-page{width:100%;min-width:0}.ftc-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ftc-space-6);margin-bottom:var(--ftc-space-6)}
.ftc-page-header h1{margin:0;color:var(--ftc-text);font-size:clamp(26px,2.2vw,34px);line-height:1.1;font-weight:650;letter-spacing:-.035em}
.ftc-page-header p{margin:8px 0 0;color:var(--ftc-text-muted);font-size:14px;line-height:1.5}
.ftc-card{border:1px solid var(--ftc-border);border-radius:var(--ftc-radius-lg);background:var(--ftc-surface);box-shadow:var(--ftc-shadow-1)}
.ftc-btn{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 14px;border:1px solid transparent;border-radius:var(--ftc-radius-sm);background:var(--ftc-primary);color:var(--ftc-primary-contrast);font-weight:650;font-size:13px;cursor:pointer;transition:background var(--ftc-motion-fast) var(--ftc-ease),border-color var(--ftc-motion-fast) var(--ftc-ease),transform var(--ftc-motion-fast) var(--ftc-ease)}
.ftc-btn:hover{background:var(--ftc-primary-hover)}.ftc-btn:active{transform:translateY(1px)}.ftc-btn.secondary{background:var(--ftc-surface);border-color:var(--ftc-border-strong);color:var(--ftc-text)}
.ftc-field{display:grid;gap:7px}.ftc-field>span,.ftc-label{color:var(--ftc-text-soft);font-size:12px;font-weight:650}
.ftc-input,.ftc-select,.ftc-textarea{width:100%;border:1px solid var(--ftc-border-strong);border-radius:var(--ftc-radius-sm);background:var(--ftc-surface);color:var(--ftc-text);transition:border-color var(--ftc-motion-fast) var(--ftc-ease),box-shadow var(--ftc-motion-fast) var(--ftc-ease)}
.ftc-input,.ftc-select{min-height:42px;padding:0 12px}.ftc-textarea{padding:11px 12px;resize:vertical}.ftc-input::placeholder,.ftc-textarea::placeholder{color:var(--ftc-text-faint)}
.ftc-badge{display:inline-flex;align-items:center;min-height:25px;padding:4px 9px;border:1px solid var(--ftc-border);border-radius:var(--ftc-radius-pill);background:var(--ftc-surface-soft);color:var(--ftc-text-soft);font-size:11px;font-weight:650}

/* Existing common component bridge */
body.ftc-ui2:not(.attendance-runtime2-frame) .card,
body.ftc-ui2:not(.attendance-runtime2-frame) .panel,
body.ftc-ui2:not(.attendance-runtime2-frame) .summary-box{
  border-color:var(--ftc-border)!important;background:var(--ftc-surface)!important;color:var(--ftc-text);box-shadow:var(--ftc-shadow-1);
}
body.ftc-ui2:not(.attendance-runtime2-frame) .muted{color:var(--ftc-text-muted)!important}
body.ftc-ui2:not(.attendance-runtime2-frame) input:not([type="checkbox"]):not([type="radio"]),
body.ftc-ui2:not(.attendance-runtime2-frame) select,
body.ftc-ui2:not(.attendance-runtime2-frame) textarea{
  border-color:var(--ftc-border-strong)!important;background:var(--ftc-surface)!important;color:var(--ftc-text)!important;
}
body.ftc-ui2:not(.attendance-runtime2-frame) input::placeholder,
body.ftc-ui2:not(.attendance-runtime2-frame) textarea::placeholder{color:var(--ftc-text-faint)!important}
body.ftc-ui2:not(.attendance-runtime2-frame) .btn.secondary,
body.ftc-ui2:not(.attendance-runtime2-frame) button.secondary{
  border-color:var(--ftc-border-strong)!important;background:var(--ftc-surface)!important;color:var(--ftc-text)!important;
}
body.ftc-ui2:not(.attendance-runtime2-frame) .badge{border-color:var(--ftc-border)!important}

/* Shell */
body.ftc-ui2.platform-shell-body .app-shell,
body.ftc-ui2.platform-shell-body .main-column,
body.ftc-ui2.platform-shell-body .platform-workspace{background:var(--ftc-canvas)!important}
body.ftc-ui2.platform-shell-body .sidebar{background:var(--ftc-surface)!important;border-right-color:var(--ftc-border)!important;box-shadow:none!important}
body.ftc-ui2.platform-shell-body .app-topbar{background:color-mix(in srgb,var(--ftc-surface) 96%,transparent)!important;border-bottom-color:var(--ftc-border)!important;backdrop-filter:saturate(140%) blur(14px)}
body.ftc-ui2.platform-shell-body .sidebar-brand>span:last-child,
body.ftc-ui2.platform-shell-body .topbar-title strong,
body.ftc-ui2.platform-shell-body .user-chip strong{color:var(--ftc-text)!important}
body.ftc-ui2.platform-shell-body .sidebar-brand small,
body.ftc-ui2.platform-shell-body .topbar-title span,
body.ftc-ui2.platform-shell-body .user-chip small,
body.ftc-ui2.platform-shell-body .sidebar-note{color:var(--ftc-text-muted)!important}
body.ftc-ui2.platform-shell-body .side-nav-label{color:var(--ftc-text-faint)!important}
body.ftc-ui2.platform-shell-body .side-link{color:var(--ftc-text-muted)!important}
body.ftc-ui2.platform-shell-body .side-link:hover{background:var(--ftc-surface-soft)!important;border-color:var(--ftc-border)!important;color:var(--ftc-text)!important}
body.ftc-ui2.platform-shell-body .side-link.active{background:var(--ftc-surface-soft)!important;border-color:var(--ftc-border)!important;color:var(--ftc-text)!important}
body.ftc-ui2.platform-shell-body .side-link svg{color:var(--ftc-text-muted)!important}
body.ftc-ui2.platform-shell-body .side-link:hover svg,body.ftc-ui2.platform-shell-body .side-link.active svg{color:var(--ftc-text)!important}
body.ftc-ui2.platform-shell-body .environment-pill{background:var(--ftc-accent-soft)!important;border-color:color-mix(in srgb,var(--ftc-accent) 28%,transparent)!important;color:var(--ftc-accent)!important}
body.ftc-ui2.platform-shell-body .icon-button,
body.ftc-ui2.platform-shell-body .user-chip{background:var(--ftc-surface)!important;border-color:var(--ftc-border)!important;color:var(--ftc-text-soft)!important}
body.ftc-ui2.platform-shell-body .icon-button:hover{background:var(--ftc-surface-soft)!important;color:var(--ftc-text)!important}
body.ftc-ui2.platform-shell-body .notification-backdrop{background:var(--ftc-overlay)!important}
body.ftc-ui2.platform-shell-body .notification-drawer{background:var(--ftc-surface-raised)!important;border-color:var(--ftc-border)!important;box-shadow:var(--ftc-shadow-float)!important;color:var(--ftc-text)}
body.ftc-ui2.platform-shell-body .notification-drawer-head,body.ftc-ui2.platform-shell-body .notification-drawer-foot{border-color:var(--ftc-border)!important}
body.ftc-ui2.platform-shell-body .notification-item{border-color:var(--ftc-border)!important;color:var(--ftc-text)!important}
body.ftc-ui2.platform-shell-body .notification-item:hover{background:var(--ftc-surface-soft)!important}
body.ftc-ui2.platform-shell-body .notification-item small,body.ftc-ui2.platform-shell-body .notification-item time{color:var(--ftc-text-muted)!important}
.ftc-theme-button[data-ftc-theme-current="system"]{color:var(--ftc-accent)!important}
.ftc-theme-button[data-ftc-theme-current="dark"]{background:var(--ftc-surface-soft)!important;color:var(--ftc-accent)!important}

/* Frame + core-owned routes */
body.ftc-ui2.platform-workspace-frame:not(.attendance-runtime2-frame),
body.ftc-ui2.platform-workspace-frame:not(.attendance-runtime2-frame) .content-shell{background:var(--ftc-canvas)!important;color:var(--ftc-text)}
body.ftc-ui2[data-ftc-route="dashboard"] .core046-metric,
body.ftc-ui2[data-ftc-route="configuracoes"] .core-settings-card,
body.ftc-ui2[data-ftc-route="configuracoes"] .core046-preferences,
body.ftc-ui2[data-ftc-route="atualizacoes"] .card,
body.ftc-ui2[data-ftc-route="clientes"] .card,
body.ftc-ui2[data-ftc-route="clientes"] .summary-box,
body.ftc-ui2[data-ftc-route="clientes"] .client-profile{
  background:var(--ftc-surface)!important;border-color:var(--ftc-border)!important;color:var(--ftc-text)!important;
}

/* Clientes — phase 1 reference module */
body.ftc-ui2[data-ftc-route="clientes"] .page-head h1,
body.ftc-ui2[data-ftc-route="clientes"] h1,
body.ftc-ui2[data-ftc-route="clientes"] h2,
body.ftc-ui2[data-ftc-route="clientes"] h3{color:var(--ftc-text)!important}
body.ftc-ui2[data-ftc-route="clientes"] .page-head p,
body.ftc-ui2[data-ftc-route="clientes"] .list-meta,
body.ftc-ui2[data-ftc-route="clientes"] .definition,
body.ftc-ui2[data-ftc-route="clientes"] small{color:var(--ftc-text-muted)}
body.ftc-ui2[data-ftc-route="clientes"] .filters,
body.ftc-ui2[data-ftc-route="clientes"] .table-wrap,
body.ftc-ui2[data-ftc-route="clientes"] .drawer,
body.ftc-ui2[data-ftc-route="clientes"] .modal,
body.ftc-ui2[data-ftc-route="clientes"] .popover,
body.ftc-ui2[data-ftc-route="clientes"] .dropdown-menu{
  background:var(--ftc-surface)!important;border-color:var(--ftc-border)!important;color:var(--ftc-text)!important;
}
body.ftc-ui2[data-ftc-route="clientes"] table,
body.ftc-ui2[data-ftc-route="clientes"] th,
body.ftc-ui2[data-ftc-route="clientes"] td{border-color:var(--ftc-border)!important;color:var(--ftc-text)!important}
body.ftc-ui2[data-ftc-route="clientes"] th{color:var(--ftc-text-muted)!important;background:var(--ftc-surface-soft)!important}
body.ftc-ui2[data-ftc-route="clientes"] tbody tr:hover{background:var(--ftc-surface-soft)!important}
body.ftc-ui2[data-ftc-route="clientes"] .drawer-head,
body.ftc-ui2[data-ftc-route="clientes"] .drawer-foot{background:var(--ftc-surface)!important;border-color:var(--ftc-border)!important}
body.ftc-ui2[data-ftc-route="clientes"] .drawer-backdrop{background:var(--ftc-overlay)!important}
body.ftc-ui2[data-ftc-route="clientes"] .tabs{background:var(--ftc-canvas-subtle)!important;border-color:var(--ftc-border)!important}
body.ftc-ui2[data-ftc-route="clientes"] .tab{color:var(--ftc-text-muted)!important}
body.ftc-ui2[data-ftc-route="clientes"] .tab.active{background:var(--ftc-surface)!important;color:var(--ftc-text)!important;box-shadow:var(--ftc-shadow-1)!important}
body.ftc-ui2[data-ftc-route="clientes"] .empty-state{background:var(--ftc-surface-soft)!important;border-color:var(--ftc-border-strong)!important;color:var(--ftc-text)!important}

/* Client experience workspace compatibility */
body.ftc-ui2[data-ftc-route="clientes"] :is(.exp-card,.exp-row,.exp-source-card,.exp-details,.exp-empty,.exp-panel,.exp-kpi){background:var(--ftc-surface)!important;border-color:var(--ftc-border)!important;color:var(--ftc-text)!important}
body.ftc-ui2[data-ftc-route="clientes"] :is(.exp-muted,.exp-row span,.exp-row small,.exp-source-card span,.exp-source-card small){color:var(--ftc-text-muted)!important}
body.ftc-ui2[data-ftc-route="clientes"] .exp-btn.secondary{background:var(--ftc-surface)!important;border-color:var(--ftc-border-strong)!important;color:var(--ftc-text)!important}
body.ftc-ui2[data-ftc-route="clientes"] .exp-pill{background:var(--ftc-surface-soft)!important;border-color:var(--ftc-border)!important;color:var(--ftc-text-soft)!important}

/* Personal appearance control */
.ftc-theme-preference{margin:0 0 18px;padding:0 0 18px;border:0;border-bottom:1px solid var(--ftc-border)}
.ftc-theme-preference legend{padding:0;margin-bottom:4px;color:var(--ftc-text);font-size:14px;font-weight:700}
.ftc-theme-preference>.muted{margin:0 0 12px;font-size:12px}
.ftc-theme-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ftc-theme-options label{position:relative;display:block!important;padding:0!important;border:0!important;background:transparent!important}
.ftc-theme-options input{position:absolute;opacity:0;pointer-events:none}
.ftc-theme-options span{display:block!important;min-height:82px;padding:13px;border:1px solid var(--ftc-border);border-radius:var(--ftc-radius-md);background:var(--ftc-surface-soft);cursor:pointer;transition:border-color var(--ftc-motion-fast) var(--ftc-ease),background var(--ftc-motion-fast) var(--ftc-ease),box-shadow var(--ftc-motion-fast) var(--ftc-ease)}
.ftc-theme-options strong{display:block;color:var(--ftc-text);font-size:13px}.ftc-theme-options small{display:block;margin-top:4px;color:var(--ftc-text-muted);font-size:11px;line-height:1.4}
.ftc-theme-options input:checked+span{border-color:color-mix(in srgb,var(--ftc-accent) 60%,var(--ftc-border));background:var(--ftc-accent-soft);box-shadow:0 0 0 1px color-mix(in srgb,var(--ftc-accent) 20%,transparent)}
.ftc-theme-options input:focus-visible+span{outline:2px solid var(--ftc-focus);outline-offset:2px}

/* Overlay contract */
body.ftc-ui2 .ftc-toast,body.ftc-ui2 .ftc-command-palette{background:var(--ftc-surface-overlay)!important;border-color:var(--ftc-border)!important;color:var(--ftc-text)!important;box-shadow:var(--ftc-shadow-float)!important}
body.ftc-ui2 .ftc-command-backdrop{background:var(--ftc-overlay)!important}
body.ftc-ui2 .ftc-command-search{border-color:var(--ftc-border)!important}
body.ftc-ui2 .ftc-command-item{color:var(--ftc-text)!important}body.ftc-ui2 .ftc-command-item:hover,body.ftc-ui2 .ftc-command-item.is-active{background:var(--ftc-surface-soft)!important}

/* Attendance keeps its own visual runtime until its dedicated migration. */
body.attendance-runtime2-frame{color-scheme:light}

@media(max-width:720px){.ftc-theme-options{grid-template-columns:1fr}.ftc-page-header{flex-direction:column}}
@media(prefers-reduced-motion:reduce){body.ftc-ui2 *,body.ftc-ui2 *::before,body.ftc-ui2 *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
