/* KartData UI v1.0.0 - contrato visual congelado */
:root{
  color-scheme:light;
  --background:oklch(1 0 0);--foreground:oklch(.147 .004 49.25);
  --card:oklch(1 0 0);--card-foreground:oklch(.147 .004 49.25);
  --popover:oklch(1 0 0);--popover-foreground:oklch(.147 .004 49.25);
  --primary:oklch(.527 .154 150.069);--primary-foreground:oklch(.982 .018 155.826);
  --secondary:oklch(.967 .001 286.375);--secondary-foreground:oklch(.21 .006 285.885);
  --muted:oklch(.97 .001 106.424);--muted-foreground:oklch(.553 .013 58.071);
  --accent:oklch(.527 .154 150.069);--accent-foreground:oklch(.982 .018 155.826);
  --destructive:oklch(.577 .245 27.325);--border:oklch(.923 .003 48.717);--input:oklch(.923 .003 48.717);--ring:oklch(.709 .01 56.259);
  --chart-1:oklch(.809 .105 251.813);--chart-2:oklch(.623 .214 259.815);--chart-3:oklch(.546 .245 262.881);--chart-4:oklch(.488 .243 264.376);--chart-5:oklch(.424 .199 265.638);
  --radius:.875rem;--sidebar:oklch(.985 .001 106.423);--sidebar-foreground:oklch(.147 .004 49.25);--sidebar-primary:oklch(.627 .194 149.214);--sidebar-primary-foreground:oklch(.982 .018 155.826);--sidebar-accent:oklch(.97 .001 106.424);--sidebar-accent-foreground:oklch(.216 .006 56.043);--sidebar-border:oklch(.923 .003 48.717);--sidebar-ring:oklch(.709 .01 56.259);
  --kd-color-background:var(--background);
  --kd-color-surface:var(--card);
  --kd-color-surface-raised:var(--secondary);
  --kd-color-surface-overlay:var(--muted);
  --kd-color-foreground:var(--foreground);
  --kd-color-muted:var(--muted-foreground);
  --kd-color-subtle:var(--muted-foreground);
  --kd-color-border:var(--border);
  --kd-color-border-strong:var(--input);
  --kd-color-primary:var(--primary);
  --kd-color-primary-foreground:var(--primary-foreground);
  --kd-color-info:var(--chart-2);
  --kd-color-warning:#f8d447;
  --kd-color-danger:var(--destructive);
  --kd-color-focus:color-mix(in oklab,var(--ring) 42%,transparent);
  --kd-switch-track:#E8E8E8;
  --kd-switch-thumb:#FFFFFF;
  --kd-gradient-brand:linear-gradient(135deg,var(--primary) 0%,var(--accent) 52%,var(--chart-2) 100%);
  --kd-font-sans:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --kd-font-data:"JetBrains Mono","Courier New",monospace;
  --kd-type-display:700 var(--kd-type-display-size,56px)/1.05 var(--kd-type-display-font,var(--kd-font-sans));
  --kd-type-heading:700 var(--kd-type-heading-size,36px)/1.15 var(--kd-type-heading-font,var(--kd-font-sans));
  --kd-type-title:650 var(--kd-type-title-size,20px)/1.3 var(--kd-type-title-font,var(--kd-font-sans));
  --kd-type-body:400 var(--kd-type-body-size,16px)/1.6 var(--kd-type-body-font,var(--kd-font-sans));
  --kd-type-label:600 var(--kd-type-label-size,13px)/1.35 var(--kd-type-label-font,var(--kd-font-sans));
  --kd-type-caption:400 var(--kd-type-caption-size,12px)/1.45 var(--kd-type-caption-font,var(--kd-font-sans));
  --kd-type-data:700 var(--kd-type-data-size,24px)/1.1 var(--kd-type-data-font,var(--kd-font-data));
  --kd-radius-xs:calc(var(--radius) - 8px);
  --kd-radius-sm:calc(var(--radius) - 4px);
  --kd-radius-md:var(--radius);
  --kd-radius-lg:calc(var(--radius) + 4px);
  --kd-space-1:4px;
  --kd-space-2:8px;
  --kd-space-3:12px;
  --kd-space-4:16px;
  --kd-space-5:24px;
  --kd-space-6:32px;
  --kd-motion-fast:150ms;
  --kd-motion-base:220ms;
  --kd-ease:cubic-bezier(.2,.8,.2,1);
  --kd-shadow-card:0 14px 36px rgba(15,23,42,.12);
  --kd-shadow-navigation:0 18px 44px rgba(15,23,42,.16);
  --kd-shadow-panel:0 14px 38px rgba(0,0,0,.22);
}
.dark{color-scheme:dark;--background:#000517;--foreground:oklch(.985 .001 106.423);--card:#0D0D11;--card-foreground:oklch(.985 .001 106.423);--popover:#0D0D11;--popover-foreground:oklch(.985 .001 106.423);--primary:oklch(.448 .119 151.328);--primary-foreground:oklch(.982 .018 155.826);--secondary:oklch(.274 .006 286.033);--secondary-foreground:oklch(.985 0 0);--muted:oklch(.268 .007 34.298);--muted-foreground:oklch(.709 .01 56.259);--accent:oklch(.448 .119 151.328);--accent-foreground:oklch(.982 .018 155.826);--destructive:oklch(.704 .191 22.216);--border:oklch(1 0 0 / 10%);--input:oklch(1 0 0 / 15%);--ring:oklch(.553 .013 58.071);--chart-1:oklch(.809 .105 251.813);--chart-2:oklch(.623 .214 259.815);--chart-3:oklch(.546 .245 262.881);--chart-4:oklch(.488 .243 264.376);--chart-5:oklch(.424 .199 265.638);--sidebar:#0D0D11;--sidebar-foreground:oklch(.985 .001 106.423);--sidebar-primary:oklch(.723 .219 149.579);--sidebar-primary-foreground:oklch(.982 .018 155.826);--sidebar-accent:oklch(.268 .007 34.298);--sidebar-accent-foreground:oklch(.985 .001 106.423);--sidebar-border:oklch(1 0 0 / 10%);--sidebar-ring:oklch(.553 .013 58.071);--kd-switch-track:#3F3F46;--kd-shadow-card:0 16px 40px rgba(0,0,0,.38);--kd-shadow-navigation:0 20px 52px rgba(0,0,0,.48)}

*,*::before,*::after{box-sizing:border-box}
:focus-visible{outline:2px solid var(--kd-color-info);outline-offset:2px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}

:root{--kd-button-primary-foreground:var(--kd-button-text-light,#fff);--kd-input-foreground:var(--kd-input-text-light,#171717)}.dark{--kd-button-primary-foreground:var(--kd-button-text-dark,#000517);--kd-input-foreground:var(--kd-input-text-dark,#fafafa)}
.kdui-button{min-height:var(--kd-button-height,44px);border:1px solid transparent;border-radius:var(--kd-button-radius,var(--kd-radius-sm));display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 16px;font:var(--kd-button-weight,600) var(--kd-button-font-size,14px)/1 var(--kd-font-sans);cursor:pointer;transition:background var(--kd-motion-fast) var(--kd-ease),border-color var(--kd-motion-fast) var(--kd-ease),color var(--kd-motion-fast) var(--kd-ease),opacity var(--kd-motion-fast) var(--kd-ease)}
.kdui-button.is-primary{background:var(--kd-color-primary);color:var(--kd-button-primary-foreground)}.kdui-button.is-primary:hover{background:color-mix(in oklab,var(--kd-color-primary) 88%,white)}.kdui-button.is-neutral{background:var(--kd-color-surface-raised);color:var(--kd-color-foreground);border-color:var(--kd-color-border)}.kdui-button.is-outline{background:transparent;color:var(--kd-color-foreground);border-color:var(--kd-color-border-strong)}.kdui-button.is-danger{background:color-mix(in oklab,var(--kd-color-danger) 14%,transparent);color:var(--kd-color-danger);border-color:color-mix(in oklab,var(--kd-color-danger) 42%,transparent)}.kdui-button.is-ghost{background:transparent;color:var(--kd-color-muted)}.kdui-button.is-sm{min-height:36px;padding:0 12px;font-size:calc(var(--kd-button-font-size,14px) - 1px)}.kdui-button.is-lg{min-height:52px;padding:0 24px;font-size:calc(var(--kd-button-font-size,14px) + 1px)}.kdui-button.is-icon{width:44px;padding:0}.kdui-button:disabled{cursor:not-allowed;opacity:.42}.kdui-spinner{width:15px;height:15px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:kdui-spin .7s linear infinite}@keyframes kdui-spin{to{transform:rotate(360deg)}}
.kdui-card{border:1px solid var(--kd-color-border);border-radius:var(--kd-radius-md);background:var(--kd-color-surface);box-shadow:var(--kd-shadow-card,var(--kd-shadow-panel));overflow:hidden}.kdui-card-header{padding:20px 20px 0}.kdui-card-title{margin:0;color:var(--kd-color-foreground);font:650 16px/1.3 var(--kd-font-sans)}.kdui-card-description{margin:6px 0 0;color:var(--kd-color-muted);font:400 13px/1.5 var(--kd-font-sans)}.kdui-card-content{padding:20px}
.kdui-badge{min-height:24px;border-radius:999px;display:inline-flex;align-items:center;padding:3px 9px;border:1px solid var(--kd-color-border);background:var(--kd-color-surface-raised);color:var(--kd-color-muted);font:650 11px/1.2 var(--kd-font-sans)}.kdui-badge.is-success{color:var(--kd-color-primary);border-color:color-mix(in oklab,var(--kd-color-primary) 32%,transparent);background:color-mix(in oklab,var(--kd-color-primary) 10%,transparent)}.kdui-badge.is-info{color:var(--kd-color-info);border-color:color-mix(in oklab,var(--kd-color-info) 32%,transparent);background:color-mix(in oklab,var(--kd-color-info) 10%,transparent)}.kdui-badge.is-warning{color:var(--kd-color-warning);border-color:color-mix(in oklab,var(--kd-color-warning) 32%,transparent);background:color-mix(in oklab,var(--kd-color-warning) 10%,transparent)}.kdui-badge.is-danger{color:var(--kd-color-danger);border-color:color-mix(in oklab,var(--kd-color-danger) 32%,transparent);background:color-mix(in oklab,var(--kd-color-danger) 10%,transparent)}
.kdui-field{display:grid;gap:7px;color:var(--kd-color-muted);font:600 12px/1.3 var(--kd-font-sans)}.kdui-field input{width:100%;min-height:var(--kd-input-height,44px);border:1px solid var(--kd-input-border,var(--kd-color-border));border-radius:var(--kd-input-radius,var(--kd-radius-sm));background:var(--kd-input-background,var(--kd-color-surface-raised));color:var(--kd-input-foreground);padding:0 12px;font:400 var(--kd-input-font-size,16px)/1.2 var(--kd-font-sans)}.kdui-field input[aria-invalid=true]{border-color:var(--kd-color-danger)}.kdui-field small{font-weight:400;color:var(--kd-color-subtle)}.kdui-field small.is-error{color:var(--kd-color-danger)}
.kdui-alert{width:100%;display:grid;gap:4px;padding:14px 16px;border:1px solid var(--kd-color-border);border-left:4px solid currentColor;border-radius:var(--kd-radius-sm);background:var(--kd-color-surface-raised);font:var(--kd-type-caption)}.kdui-alert strong{font:var(--kd-type-label)}.kdui-alert.is-info{color:var(--kd-color-info)}.kdui-alert.is-success{color:var(--kd-color-primary)}.kdui-alert.is-warning{color:var(--kd-color-warning)}.kdui-alert.is-danger{color:var(--kd-color-danger)}.kdui-alert>div{color:var(--kd-color-foreground)}
.kdui-progress{width:100%;display:grid;gap:8px}.kdui-progress>div:first-child{display:flex;justify-content:space-between;gap:12px;font:var(--kd-type-label)}.kdui-progress>div:last-child{height:8px;overflow:hidden;border-radius:999px;background:var(--kd-color-surface-overlay)}.kdui-progress i{display:block;height:100%;border-radius:inherit;background:var(--kd-gradient-brand);transition:width var(--kd-motion-base) var(--kd-ease)}
.kdui-empty{width:100%;display:grid;justify-items:center;gap:8px;padding:24px;text-align:center}.kdui-empty>span{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--kd-color-surface-overlay);color:var(--kd-color-primary)}.kdui-empty strong{font:var(--kd-type-title)}.kdui-empty p{max-width:42ch;margin:0 0 6px;color:var(--kd-color-muted);font:var(--kd-type-caption)}
.kdui-dialog-layer{position:fixed;inset:0;z-index:300;display:grid;place-items:center;padding:20px}.kdui-dialog-scrim{position:absolute;inset:0;border:0;background:rgba(0,0,0,.62)}.kdui-dialog{position:relative;width:min(480px,100%);overflow:hidden;border:1px solid var(--kd-color-border);border-radius:var(--kd-radius-lg);background:var(--kd-color-surface);box-shadow:var(--kd-shadow-panel)}.kdui-dialog>header{display:flex;justify-content:space-between;gap:16px;padding:20px;border-bottom:1px solid var(--kd-color-border)}.kdui-dialog h2{margin:0;font:var(--kd-type-title)}.kdui-dialog header p{margin:5px 0 0;color:var(--kd-color-muted);font:var(--kd-type-caption)}.kdui-dialog header button{width:44px;height:44px;border:0;border-radius:var(--kd-radius-sm);background:transparent;color:inherit;font-size:24px;cursor:pointer}.kdui-dialog-body{padding:20px;font:var(--kd-type-body)}.kdui-dialog>footer{display:flex;justify-content:flex-end;gap:8px;padding:16px 20px;border-top:1px solid var(--kd-color-border)}
.kdui-tabs{display:flex;gap:4px;padding:4px;border:1px solid var(--kd-color-border);border-radius:var(--kd-radius-sm);background:var(--kd-color-background);overflow-x:auto}.kdui-tabs button{min-height:40px;flex:1;border:0;border-radius:6px;background:transparent;color:var(--kd-color-muted);padding:0 14px;white-space:nowrap;font:600 13px/1 var(--kd-font-sans);cursor:pointer}.kdui-tabs button[aria-selected=true]{background:var(--kd-color-surface-overlay);color:var(--kd-color-foreground)}
.kdui-skeleton{height:18px;border-radius:6px;background:linear-gradient(90deg,var(--kd-color-surface-raised) 25%,var(--kd-color-surface-overlay) 45%,var(--kd-color-surface-raised) 65%);background-size:240% 100%;animation:kdui-shimmer 1.4s ease-in-out infinite}@keyframes kdui-shimmer{to{background-position:-240% 0}}

/* Papéis tipográficos semânticos: as prévias acompanham o painel do Studio. */
.kdui-button{font-family:var(--kd-type-label-font,var(--kd-font-sans))}
.kdui-card-title{font:var(--kd-type-title)}
.kdui-card-description{font:var(--kd-type-body)}
.kdui-badge{font:var(--kd-type-label)}
.kdui-field{font:var(--kd-type-label)}
.kdui-field input{font-family:var(--kd-input-font-family,var(--kd-type-body-font,var(--kd-font-sans)))}
.kdui-field small{font:var(--kd-type-caption)}
.kdui-tabs button{font:var(--kd-type-label)}

/*
 * Contrato de integração do Web App.
 *
 * O catálogo usa as classes kdui-* diretamente. A aplicação histórica ainda
 * possui nomes anteriores; este bloco os adapta aos mesmos tokens aprovados
 * sem criar uma segunda paleta, tipografia ou geometria de controles.
 */
body[data-kartdata-ui]{
  /* aliases somente para a transição do CSS histórico; os valores vêm do Studio */
  --bg:var(--kd-color-background);--panel:var(--kd-color-surface);--panel2:var(--kd-color-surface-raised);
  --border:var(--kd-color-border);--border2:var(--kd-color-border-strong);--neon:var(--kd-color-primary);
  --blue:var(--kd-color-info);--yellow:var(--kd-color-warning);--red:var(--kd-color-danger);
  --gray:var(--kd-color-muted);--white:var(--kd-color-foreground);--md-surface:var(--kd-color-surface);
  --md-surface-container:var(--kd-color-surface-raised);--md-outline:var(--kd-color-border-strong);
  background:var(--kd-color-background);color:var(--kd-color-foreground);font-family:var(--kd-type-body-font,var(--kd-font-sans))
}
body[data-kartdata-ui] :where(button,input,select,textarea){font-family:var(--kd-type-label-font,var(--kd-font-sans))!important;letter-spacing:0}
body[data-kartdata-ui] :where(button){touch-action:manipulation}

body[data-kartdata-ui] :where(
  input:not([type]),
  input[type="text"],input[type="email"],input[type="password"],input[type="search"],
  input[type="tel"],input[type="url"],input[type="number"],input[type="date"],
  input[type="time"],input[type="datetime-local"],
  select,textarea,.mf-input,.mf-textarea,.api-key-input,.kdw-input
){
  width:100%;min-height:var(--kd-input-height,44px);border:1px solid var(--kd-input-border,var(--kd-color-border-strong))!important;
  border-radius:var(--kd-input-radius,var(--kd-radius-sm))!important;background:var(--kd-input-background,var(--kd-color-surface-raised))!important;
  color:var(--kd-input-foreground)!important;padding:0 12px;font-size:var(--kd-input-font-size,16px)!important;
  font-weight:400!important;line-height:1.2!important;outline:0;transition:border-color var(--kd-motion-fast) var(--kd-ease),box-shadow var(--kd-motion-fast) var(--kd-ease),background var(--kd-motion-fast) var(--kd-ease)
}
body[data-kartdata-ui] :where(textarea,.mf-textarea){min-height:96px;padding-block:12px;line-height:1.5!important;resize:vertical}
body[data-kartdata-ui] :where(.kdw-input-wrap>input){padding-inline-start:44px!important}
body[data-kartdata-ui] :where(.kdw-input-wrap>i,.kdw-input-wrap>svg){
  position:absolute;inset-inline-start:14px;top:50%;z-index:1;width:18px;height:18px;
  color:var(--kd-color-muted);pointer-events:none;transform:translateY(-50%)
}
body[data-kartdata-ui] :where(input,select,textarea)::placeholder{color:var(--kd-color-subtle);opacity:1}
body[data-kartdata-ui] :where(input,select,textarea):focus-visible{border-color:var(--kd-color-info)!important;box-shadow:0 0 0 3px var(--kd-color-focus)}
body[data-kartdata-ui] :where(input,select,textarea):disabled{cursor:not-allowed;opacity:.42}
body[data-kartdata-ui] :where(input,textarea)[readonly]{background:var(--kd-color-surface-overlay)!important;color:var(--kd-color-muted)!important}
body[data-kartdata-ui] :where(input[type="checkbox"],input[type="radio"],input[type="range"]){accent-color:var(--kd-color-primary)}

body[data-kartdata-ui] :where(.mf-label,.api-key-label,.kdw-field>span,.kd-compare-field>label){color:var(--kd-color-muted);font:var(--kd-type-label)!important;text-transform:none;letter-spacing:0}

body[data-kartdata-ui] :where(
  .btn,.cloud-btn,.kd-modal-btn,.btn-recalc,.btn-cancel-edit,.btn-edit-laps,
  .mf-mini-btn,.tc-btn,.tc-mode-btn,.catalog-tab,.thick-btn,.fs-ctrl-btn,
  .api-key-save,.kdw-button,.session-load-more
){
  min-height:var(--kd-button-height,44px);display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:1px solid var(--kd-color-border-strong)!important;border-radius:var(--kd-button-radius,var(--kd-radius-sm))!important;
  background:var(--kd-color-surface-raised)!important;color:var(--kd-color-foreground)!important;
  font-size:var(--kd-button-font-size,14px)!important;font-weight:var(--kd-button-weight,600)!important;line-height:1!important;
  cursor:pointer;transition:background var(--kd-motion-fast) var(--kd-ease),border-color var(--kd-motion-fast) var(--kd-ease),color var(--kd-motion-fast) var(--kd-ease),opacity var(--kd-motion-fast) var(--kd-ease)
}
body[data-kartdata-ui] :where(
  .btn:not(.sec),.cloud-btn.primary,.kd-modal-btn,.btn-recalc,.api-key-save,
  .kdw-button.primary,#app-history-checkout,#sec-save-recalculate
){border-color:transparent!important;background:var(--kd-color-primary)!important;color:var(--kd-button-primary-foreground)!important}
body[data-kartdata-ui] :where(.cloud-btn.danger){border-color:color-mix(in oklab,var(--kd-color-danger) 42%,transparent)!important;background:color-mix(in oklab,var(--kd-color-danger) 14%,transparent)!important;color:var(--kd-color-danger)!important}
body[data-kartdata-ui] :where(.tc-btn.active,.tc-mode-btn.active,.catalog-tab.active,.thick-btn.active,.fs-ctrl-btn.active,.btn-edit-laps.editing){border-color:var(--kd-color-primary)!important;background:color-mix(in oklab,var(--kd-color-primary) 12%,var(--kd-color-surface-raised))!important;color:var(--kd-color-primary)!important}
body[data-kartdata-ui] :where(.btn,.cloud-btn,.kd-modal-btn,.btn-recalc,.btn-cancel-edit,.btn-edit-laps,.mf-mini-btn,.tc-btn,.tc-mode-btn,.catalog-tab,.thick-btn,.fs-ctrl-btn,.api-key-save,.kdw-button):hover:not(:disabled){border-color:var(--kd-color-primary)!important}
body[data-kartdata-ui] :where(button,input,select,textarea):disabled{cursor:not-allowed!important;opacity:.42}

