/* ==========================================================================
   DALTCORE — Design System CSS  ·  v1.0  ·  April 2026
   SDK / Starter Kit for developers

   Usage:
     <link rel="stylesheet" href="assets/daltcore.css">
     <link rel="stylesheet" href="assets/fonts/fonts.css">

   Dark mode:
     Automatic via prefers-color-scheme.
     Force light:  <html data-theme="light">
     Force dark:   <html data-theme="dark">

   Contents:
     1.  Design Tokens (light)
     2.  Dark Mode Tokens
     3.  Reset & base
     4.  Typography
     5.  Layout helpers
     6.  Buttons
     7.  Form elements (input, label, select, checkbox, radio, toggle)
     8.  Badges & Tags
     9.  Cards
     10. Alerts & Notifications
     11. Tooltip
     12. Table
     13. Empty State
     14. Utility classes
   ========================================================================== */


/* ==========================================================================
   1. DESIGN TOKENS — Light mode (default)
   ========================================================================== */

:root {
  /* --- Brand core colors --- */
  --dc-black:       #232A31;   /* Logo / brand dark */
  --dc-navy:        #0C112A;   /* Deep navy */
  --dc-blue:        #267AE9;   /* Primary blue */
  --dc-blue-light:  #4594FE;   /* Lighter blue */
  --dc-orange:      #F95732;   /* Accent / CTA */

  /* --- Semantic color aliases (switch per mode) --- */
  --dc-bg:          #FFFFFF;   /* Page background */
  --dc-bg-subtle:   #F8F8F8;   /* Recessed areas, zebra rows */
  --dc-surface:     #FFFFFF;   /* Card / panel surface */
  --dc-border:      #E5E5E2;   /* Lines and borders */
  --dc-text:        #32312F;   /* Body text */
  --dc-text-soft:   #5A5854;   /* Secondary / placeholder text */
  --dc-text-inv:    #FFFFFF;   /* Text on dark surfaces */

  /* --- Blue grades --- */
  --dc-blue-50:   #EBF3FD;
  --dc-blue-100:  #C8DEFA;
  --dc-blue-200:  #94BEF6;
  --dc-blue-300:  #5A99F0;
  --dc-blue-400:  #267AE9;   /* = --dc-blue */
  --dc-blue-500:  #1A6BD4;
  --dc-blue-600:  #1059B5;
  --dc-blue-700:  #0A4490;
  --dc-blue-800:  #062D6A;

  /* --- Orange grades --- */
  --dc-orange-50:   #FEF0EC;
  --dc-orange-100:  #FDD5CA;
  --dc-orange-200:  #FBAB96;
  --dc-orange-300:  #F97C5E;
  --dc-orange-400:  #F95732;  /* = --dc-orange */
  --dc-orange-500:  #E04420;
  --dc-orange-600:  #C23212;
  --dc-orange-700:  #9E2209;
  --dc-orange-800:  #761504;

  /* --- Neutral grades --- */
  --dc-neutral-50:   #F8F8F8;
  --dc-neutral-100:  #E5E5E2;
  --dc-neutral-200:  #C8C7C2;
  --dc-neutral-300:  #A0A09A;
  --dc-neutral-400:  #76756F;
  --dc-neutral-500:  #5A5854;
  --dc-neutral-600:  #3D3C39;
  --dc-neutral-700:  #32312F;
  --dc-neutral-800:  #232A31;

  /* --- Semantic status colors --- */
  --dc-success:       #27AE60;
  --dc-success-bg:    rgba(39, 174, 96, 0.08);
  --dc-success-text:  #1E8449;
  --dc-warning:       #F95732;
  --dc-warning-bg:    rgba(249, 87, 50, 0.08);
  --dc-warning-text:  #C23212;
  --dc-danger:        #C0392B;
  --dc-danger-bg:     rgba(192, 57, 43, 0.08);
  --dc-danger-text:   #C0392B;
  --dc-info:          #267AE9;
  --dc-info-bg:       rgba(38, 122, 233, 0.08);
  --dc-info-text:     #1A6BD4;

  /* --- Typography --- */
  --font-display: 'Archivo', system-ui, sans-serif;
  --font-body:    'Manrope', system-ui, sans-serif;
  --font-mono:    'JetBrains Mono', ui-monospace, monospace;

  /* --- Spacing (4px base grid) --- */
  --dc-sp-1:   4px;
  --dc-sp-2:   8px;
  --dc-sp-3:   12px;
  --dc-sp-4:   16px;
  --dc-sp-5:   20px;
  --dc-sp-6:   24px;
  --dc-sp-8:   32px;
  --dc-sp-10:  40px;
  --dc-sp-12:  48px;
  --dc-sp-16:  64px;
  --dc-sp-20:  80px;
  --dc-sp-24:  96px;

  /* --- Corner radii --- */
  --dc-radius-xs:   2px;     /* Tags, dot-badges */
  --dc-radius-sm:   4px;     /* Buttons, inputs, tooltips */
  --dc-radius-md:   8px;     /* Cards, dropdowns, panels */
  --dc-radius-lg:   14px;    /* Modals, sheets, hero cards */
  --dc-radius-full: 9999px;  /* Pills, toggles */

  /* --- Shadows --- */
  --dc-shadow-sm:  0 1px 3px rgba(35, 42, 49, 0.08);
  --dc-shadow-md:  0 4px 16px rgba(35, 42, 49, 0.10);
  --dc-shadow-lg:  0 8px 32px rgba(35, 42, 49, 0.14);

  /* --- Transitions --- */
  --dc-transition:      0.15s ease;
  --dc-transition-slow: 0.3s ease;

  /* --- Focus ring --- */
  --dc-focus-ring:        0 0 0 2.5px var(--dc-blue);
  --dc-focus-ring-offset: 2px;

  /* --- Button heights --- */
  --dc-btn-h-sm:  26px;
  --dc-btn-h-md:  32px;
  --dc-btn-h-lg:  42px;
}


/* ==========================================================================
   2. DARK MODE TOKENS
   Applied automatically via OS preference.
   Override: data-theme="dark" / data-theme="light" on <html>
   ========================================================================== */

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --dc-bg:        #0C112A;   /* Deep navy background */
    --dc-bg-subtle: #161D38;   /* Slightly lighter */
    --dc-surface:   #1C2444;   /* Card / panel surface */
    --dc-border:    rgba(255, 255, 255, 0.10);
    --dc-text:      #E8E7E5;
    --dc-text-soft: rgba(255, 255, 255, 0.50);
    --dc-text-inv:  #0C112A;

    /* Use lighter blue on dark backgrounds for sufficient contrast */
    --dc-blue:       #4594FE;
    --dc-blue-light: #7BB3FF;

    --dc-success-bg:  rgba(39, 174, 96, 0.14);
    --dc-warning-bg:  rgba(249, 87, 50, 0.14);
    --dc-danger-bg:   rgba(192, 57, 43, 0.14);
    --dc-info-bg:     rgba(69, 148, 254, 0.14);
    --dc-info-text:   #7BB3FF;
    --dc-success-text: #4DD98A;
    --dc-warning-text: #F97C5E;
    --dc-danger-text:  #E57066;

    --dc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.30);
    --dc-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.40);
    --dc-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.50);
  }
}

/* Explicit dark-mode override */
[data-theme="dark"] {
  --dc-bg:        #0C112A;
  --dc-bg-subtle: #161D38;
  --dc-surface:   #1C2444;
  --dc-border:    rgba(255, 255, 255, 0.10);
  --dc-text:      #E8E7E5;
  --dc-text-soft: rgba(255, 255, 255, 0.50);
  --dc-text-inv:  #0C112A;

  --dc-blue:       #4594FE;
  --dc-blue-light: #7BB3FF;

  --dc-success-bg:  rgba(39, 174, 96, 0.14);
  --dc-warning-bg:  rgba(249, 87, 50, 0.14);
  --dc-danger-bg:   rgba(192, 57, 43, 0.14);
  --dc-info-bg:     rgba(69, 148, 254, 0.14);
  --dc-info-text:   #7BB3FF;
  --dc-success-text: #4DD98A;
  --dc-warning-text: #F97C5E;
  --dc-danger-text:  #E57066;

  --dc-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.30);
  --dc-shadow-md: 0 4px 16px rgba(0, 0, 0, 0.40);
  --dc-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.50);
}


/* ==========================================================================
   3. RESET & BASE
   ========================================================================== */

*, *::before, *::after {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  color: var(--dc-text);
  background-color: var(--dc-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img, svg, video {
  display: block;
  max-width: 100%;
}

button, input, select, textarea {
  font: inherit;
}

a {
  color: var(--dc-blue);
  text-decoration: underline;
  transition: color var(--dc-transition);
}

a:hover {
  color: var(--dc-blue-500);
}

:focus-visible {
  outline: 2.5px solid var(--dc-blue);
  outline-offset: var(--dc-focus-ring-offset);
  border-radius: var(--dc-radius-xs);
}


/* ==========================================================================
   4. TYPOGRAPHY
   ========================================================================== */

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--dc-text);
  margin: 0 0 0.5em;
  line-height: 1.1;
}

/* Fluid type scale */
h1 { font-size: clamp(2.5rem, 6vw, 4.5rem); letter-spacing: -0.035em; font-weight: 900; }
h2 { font-size: clamp(1.75rem, 4vw, 2.75rem); }
h3 { font-size: clamp(1.25rem, 3vw, 1.75rem); }
h4 { font-size: 1.125rem; font-weight: 700; }
h5 { font-size: 1rem; font-weight: 700; }
h6 { font-size: 0.875rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; }

p {
  margin: 0 0 1em;
  color: var(--dc-text);
}

/* Lead / intro paragraph */
.dc-lead {
  font-size: 1.125rem;
  line-height: 1.55;
  color: var(--dc-text-soft);
  font-weight: 400;
}

/* Eyebrow label above headings */
.dc-kicker {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--dc-orange);
  display: block;
  margin-bottom: 0.5em;
}

/* Small mono uppercase label */
.dc-label-mono {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--dc-text-soft);
}

code, kbd, samp, pre {
  font-family: var(--font-mono);
  font-size: 0.875em;
}

/* Inline code */
code {
  background: var(--dc-bg-subtle);
  border: 1px solid var(--dc-border);
  border-radius: var(--dc-radius-xs);
  padding: 0.1em 0.4em;
  color: var(--dc-blue);
}

/* Code block */
pre {
  background: var(--dc-black);
  color: rgba(255, 255, 255, 0.85);
  border-radius: var(--dc-radius-md);
  padding: var(--dc-sp-6);
  overflow-x: auto;
  font-size: 0.825rem;
  line-height: 1.6;
}

pre code {
  background: none;
  border: none;
  padding: 0;
  color: inherit;
  font-size: 1em;
}

small { font-size: 0.8em; color: var(--dc-text-soft); }

strong { font-weight: 700; }

hr {
  border: none;
  border-top: 1px solid var(--dc-border);
  margin: var(--dc-sp-8) 0;
}


/* ==========================================================================
   5. LAYOUT HELPERS
   ========================================================================== */

.dc-container {
  width: 100%;
  max-width: 1200px;
  margin-inline: auto;
  padding-inline: var(--dc-sp-6);
}

.dc-container-narrow {
  max-width: 720px;
  margin-inline: auto;
  padding-inline: var(--dc-sp-6);
}

.dc-divider {
  border: none;
  border-top: 1px solid var(--dc-border);
  margin: var(--dc-sp-8) 0;
}


/* ==========================================================================
   6. BUTTONS
   Usage:
     <button class="dc-btn dc-btn-primary">Primary</button>
     <a class="dc-btn dc-btn-ghost" href="#">Ghost link</a>

   Variants:  dc-btn-primary | dc-btn-cta | dc-btn-secondary |
              dc-btn-ghost | dc-btn-dark | dc-btn-destructive
   Size:      dc-btn-sm | (default md) | dc-btn-lg
   States:    :disabled | [aria-disabled="true"] | dc-btn-loading
   Icon-only: dc-btn-icon (square, add dc-btn-sm / dc-btn-lg for size)
   ========================================================================== */

.dc-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--dc-sp-2);
  font-family: var(--font-mono);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none;
  border: 1.5px solid transparent;
  border-radius: var(--dc-radius-sm);
  padding: 0 var(--dc-sp-4);
  height: var(--dc-btn-h-md);
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  transition: background var(--dc-transition), color var(--dc-transition),
              border-color var(--dc-transition), box-shadow var(--dc-transition),
              opacity var(--dc-transition);
  -webkit-user-select: none;
  user-select: none;
  position: relative;
}

.dc-btn:focus-visible {
  outline: 2.5px solid var(--dc-blue);
  outline-offset: var(--dc-focus-ring-offset);
}

/* --- Variants --- */
.dc-btn-primary {
  background: var(--dc-blue);
  color: #fff;
  border-color: var(--dc-blue);
}
.dc-btn-primary:hover:not(:disabled) {
  background: var(--dc-blue-500);
  border-color: var(--dc-blue-500);
  color: #fff;
}

.dc-btn-cta {
  background: var(--dc-orange);
  color: #fff;
  border-color: var(--dc-orange);
}
.dc-btn-cta:hover:not(:disabled) {
  background: var(--dc-orange-500);
  border-color: var(--dc-orange-500);
  color: #fff;
}

.dc-btn-secondary {
  background: transparent;
  color: var(--dc-text);
  border-color: var(--dc-border);
}
.dc-btn-secondary:hover:not(:disabled) {
  background: var(--dc-bg-subtle);
  border-color: var(--dc-text);
  color: var(--dc-text);
}

.dc-btn-ghost {
  background: transparent;
  color: var(--dc-blue);
  border-color: var(--dc-blue);
}
.dc-btn-ghost:hover:not(:disabled) {
  background: var(--dc-blue);
  color: #fff;
}

.dc-btn-dark {
  background: var(--dc-black);
  color: #fff;
  border-color: var(--dc-black);
}
.dc-btn-dark:hover:not(:disabled) {
  background: var(--dc-blue);
  border-color: var(--dc-blue);
  color: #fff;
}

.dc-btn-destructive {
  background: transparent;
  color: var(--dc-danger);
  border-color: var(--dc-danger);
}
.dc-btn-destructive:hover:not(:disabled) {
  background: var(--dc-danger);
  color: #fff;
}

/* --- Sizes --- */
.dc-btn-sm {
  font-size: 0.625rem;
  padding: 0 var(--dc-sp-3);
  height: var(--dc-btn-h-sm);
  border-radius: var(--dc-radius-xs);
}

.dc-btn-lg {
  font-size: 0.8rem;
  padding: 0 var(--dc-sp-6);
  height: var(--dc-btn-h-lg);
  border-radius: var(--dc-radius-sm);
}

/* --- Disabled state --- */
.dc-btn:disabled,
.dc-btn[aria-disabled="true"] {
  background: var(--dc-border) !important;
  color: var(--dc-text-soft) !important;
  border-color: var(--dc-border) !important;
  cursor: not-allowed;
  pointer-events: none;
  opacity: 0.7;
}

/* --- Loading state — add class dc-btn-loading --- */
.dc-btn-loading {
  cursor: wait;
  pointer-events: none;
}
.dc-btn-loading::after {
  content: "";
  display: inline-block;
  width: 12px;
  height: 12px;
  border: 2px solid rgba(255, 255, 255, 0.35);
  border-top-color: #fff;
  border-radius: 50%;
  animation: dc-spin 0.6s linear infinite;
  margin-left: var(--dc-sp-2);
}

@keyframes dc-spin {
  to { transform: rotate(360deg); }
}

/* --- Icon-only button (square) --- */
.dc-btn-icon {
  width: var(--dc-btn-h-md);
  height: var(--dc-btn-h-md);
  padding: 0;
  border-radius: var(--dc-radius-sm);
}
.dc-btn-icon.dc-btn-sm {
  width: var(--dc-btn-h-sm);
  height: var(--dc-btn-h-sm);
}
.dc-btn-icon.dc-btn-lg {
  width: var(--dc-btn-h-lg);
  height: var(--dc-btn-h-lg);
}


/* ==========================================================================
   7. FORM ELEMENTS
   ========================================================================== */

/* --- Label --- */
.dc-label {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--dc-text);
  margin-bottom: var(--dc-sp-1);
}

/* --- Form group wrapper --- */
.dc-form-group {
  display: flex;
  flex-direction: column;
  gap: var(--dc-sp-1);
}

/* --- Input / Textarea / Select base --- */
.dc-input {
  font-family: var(--font-body);
  font-size: 0.875rem;
  color: var(--dc-text);
  background: var(--dc-surface);
  border: 1.5px solid var(--dc-border);
  border-radius: var(--dc-radius-sm);
  padding: 0 var(--dc-sp-3);
  height: var(--dc-btn-h-md);
  outline: none;
  width: 100%;
  transition: border-color var(--dc-transition), box-shadow var(--dc-transition);
  -webkit-appearance: none;
  appearance: none;
}

.dc-input::placeholder {
  color: var(--dc-text-soft);
}

.dc-input:focus {
  border-color: var(--dc-blue);
  box-shadow: 0 0 0 3px rgba(38, 122, 233, 0.15);
}

.dc-input.is-success {
  border-color: var(--dc-success);
  box-shadow: 0 0 0 3px rgba(39, 174, 96, 0.12);
}

.dc-input.is-error {
  border-color: var(--dc-danger);
  box-shadow: 0 0 0 3px rgba(192, 57, 43, 0.12);
}

.dc-input:disabled {
  background: var(--dc-bg-subtle);
  color: var(--dc-text-soft);
  cursor: not-allowed;
  opacity: 0.6;
}

textarea.dc-input {
  height: auto;
  min-height: 90px;
  padding: var(--dc-sp-3);
  resize: vertical;
  line-height: 1.5;
}

/* --- Select wrapper with custom caret --- */
.dc-select-wrap {
  position: relative;
}
.dc-select-wrap .dc-input {
  padding-right: 28px;
  cursor: pointer;
}
.dc-select-wrap::after {
  content: "";
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 0;
  height: 0;
  border-left: 4px solid transparent;
  border-right: 4px solid transparent;
  border-top: 5px solid var(--dc-text-soft);
  pointer-events: none;
}

/* --- Hint / helper text --- */
.dc-input-hint {
  font-size: 0.75rem;
  color: var(--dc-text-soft);
  font-family: var(--font-body);
  line-height: 1.4;
}
.dc-input-hint.is-error   { color: var(--dc-danger-text); }
.dc-input-hint.is-success { color: var(--dc-success-text); }

/* --- Checkbox ---
   Usage:
   <label class="dc-checkbox">
     <input type="checkbox">
     <span class="dc-checkbox-box"></span>
     <span>Label</span>
   </label>
*/
.dc-checkbox {
  display: inline-flex;
  align-items: center;
  gap: var(--dc-sp-2);
  font-size: 0.875rem;
  cursor: pointer;
  color: var(--dc-text);
  -webkit-user-select: none;
  user-select: none;
}

.dc-checkbox input[type="checkbox"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.dc-checkbox-box {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border-radius: var(--dc-radius-xs);
  border: 1.5px solid var(--dc-border);
  background: var(--dc-surface);
  transition: border-color var(--dc-transition), background var(--dc-transition);
}

.dc-checkbox input:checked + .dc-checkbox-box {
  background: var(--dc-blue);
  border-color: var(--dc-blue);
}
.dc-checkbox input:checked + .dc-checkbox-box::after {
  content: "";
  display: block;
  width: 9px;
  height: 7px;
  background: url("data:image/svg+xml,%3Csvg width='10' height='8' viewBox='0 0 10 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 4l3 3 5-6' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat center / contain;
}
.dc-checkbox input:focus-visible + .dc-checkbox-box {
  outline: 2.5px solid var(--dc-blue);
  outline-offset: 2px;
}
.dc-checkbox:has(input:disabled) {
  opacity: 0.45;
  cursor: not-allowed;
}

/* --- Radio ---
   Usage:
   <label class="dc-radio">
     <input type="radio" name="group">
     <span class="dc-radio-dot"></span>
     <span>Label</span>
   </label>
*/
.dc-radio {
  display: inline-flex;
  align-items: center;
  gap: var(--dc-sp-2);
  font-size: 0.875rem;
  cursor: pointer;
  color: var(--dc-text);
}

.dc-radio input[type="radio"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.dc-radio-dot {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1.5px solid var(--dc-border);
  background: var(--dc-surface);
  transition: border-color var(--dc-transition);
}

.dc-radio input:checked + .dc-radio-dot {
  border-color: var(--dc-blue);
}
.dc-radio input:checked + .dc-radio-dot::after {
  content: "";
  display: block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--dc-blue);
}
.dc-radio input:focus-visible + .dc-radio-dot {
  outline: 2.5px solid var(--dc-blue);
  outline-offset: 2px;
}

/* --- Toggle / Switch ---
   Usage:
   <label class="dc-toggle">
     <input type="checkbox">
     <span class="dc-toggle-track"><span class="dc-toggle-thumb"></span></span>
     <span>Label</span>
   </label>
*/
.dc-toggle {
  display: inline-flex;
  align-items: center;
  gap: var(--dc-sp-3);
  cursor: pointer;
  font-size: 0.875rem;
  color: var(--dc-text);
  -webkit-user-select: none;
  user-select: none;
}

.dc-toggle input[type="checkbox"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.dc-toggle-track {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  width: 36px;
  height: 20px;
  border-radius: var(--dc-radius-full);
  background: var(--dc-border);
  padding: 2px;
  transition: background var(--dc-transition);
}

.dc-toggle-thumb {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
  transition: margin-left var(--dc-transition);
  margin-left: 0;
}

.dc-toggle input:checked + .dc-toggle-track {
  background: var(--dc-blue);
}
.dc-toggle input:checked + .dc-toggle-track .dc-toggle-thumb {
  margin-left: 16px;
}
.dc-toggle input:focus-visible + .dc-toggle-track {
  outline: 2.5px solid var(--dc-blue);
  outline-offset: 2px;
}
.dc-toggle:has(input:disabled) {
  opacity: 0.45;
  cursor: not-allowed;
}


/* ==========================================================================
   8. BADGES & TAGS
   Usage:
     <span class="dc-badge dc-badge-blue">Active</span>
     <span class="dc-badge dc-badge-green dc-badge-dot">Online</span>
   ========================================================================== */

.dc-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--dc-sp-1);
  font-family: var(--font-mono);
  font-size: 0.6rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  border-radius: var(--dc-radius-xs);
  padding: 3px 7px;
  line-height: 1;
  white-space: nowrap;
}

.dc-badge-blue    { background: rgba(38, 122, 233, 0.12); color: var(--dc-blue-500); }
.dc-badge-orange  { background: rgba(249, 87, 50, 0.12);  color: var(--dc-orange-600); }
.dc-badge-green   { background: rgba(39, 174, 96, 0.12);  color: var(--dc-success-text); }
.dc-badge-neutral {
  background: var(--dc-bg-subtle);
  color: var(--dc-text-soft);
  border: 1px solid var(--dc-border);
}
.dc-badge-black   { background: var(--dc-black); color: #fff; }
.dc-badge-danger  { background: rgba(192, 57, 43, 0.12); color: var(--dc-danger-text); }

/* Dot indicator before the label */
.dc-badge-dot::before {
  content: "";
  display: inline-block;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.7;
}

/* Dark mode adjustments */
[data-theme="dark"] .dc-badge-blue    { color: var(--dc-blue-light); }
[data-theme="dark"] .dc-badge-orange  { color: var(--dc-orange-300); }
[data-theme="dark"] .dc-badge-neutral { background: rgba(255,255,255,0.06); }


/* ==========================================================================
   9. CARDS
   Usage:
     <div class="dc-card">…</div>
     <div class="dc-card dc-card-highlighted">…</div>
     <div class="dc-card dc-card-dark">…</div>

   Sub-elements: dc-card-eyebrow, dc-card-title, dc-card-body,
                 dc-card-footer, dc-card-price, dc-card-banner
   ========================================================================== */

.dc-card {
  background: var(--dc-surface);
  border: 1.5px solid var(--dc-border);
  border-radius: var(--dc-radius-md);
  padding: var(--dc-sp-4);
  position: relative;
  transition: box-shadow var(--dc-transition);
}

.dc-card-interactive {
  cursor: pointer;
}
.dc-card-interactive:hover {
  box-shadow: var(--dc-shadow-md);
}

/* Highlighted card — blue border + optional banner */
.dc-card-highlighted {
  border: 2px solid var(--dc-blue);
}

/* Floating banner above the card (use inside dc-card-highlighted) */
.dc-card-banner {
  position: absolute;
  top: -10px;
  left: var(--dc-sp-3);
  background: var(--dc-blue);
  color: #fff;
  font-family: var(--font-mono);
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 2px 8px;
  border-radius: var(--dc-radius-xs);
}

/* Dark card variant */
.dc-card-dark {
  background: var(--dc-black);
  border-color: transparent;
  color: #fff;
}

.dc-card-eyebrow {
  font-family: var(--font-mono);
  font-size: 0.6rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--dc-text-soft);
  margin-bottom: var(--dc-sp-2);
}
.dc-card-dark .dc-card-eyebrow        { color: rgba(255,255,255,0.5); }
.dc-card-highlighted .dc-card-eyebrow { color: var(--dc-blue); }

.dc-card-title {
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--dc-text);
  margin-bottom: var(--dc-sp-1);
}
.dc-card-dark .dc-card-title { color: #fff; }

.dc-card-body {
  font-size: 0.825rem;
  color: var(--dc-text-soft);
  line-height: 1.5;
}
.dc-card-dark .dc-card-body { color: rgba(255,255,255,0.55); }

.dc-card-footer {
  margin-top: var(--dc-sp-3);
  padding-top: var(--dc-sp-3);
  border-top: 1px solid var(--dc-border);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--dc-sp-2);
}
.dc-card-dark .dc-card-footer { border-top-color: rgba(255,255,255,0.1); }

.dc-card-price {
  font-family: var(--font-mono);
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--dc-blue);
  line-height: 1;
}
.dc-card-price small {
  font-size: 0.75rem;
  font-weight: 400;
  color: var(--dc-text-soft);
  margin-left: 2px;
}
.dc-card-dark .dc-card-price { color: var(--dc-blue-light); }


/* ==========================================================================
   10. ALERTS & NOTIFICATIONS
   Usage:
     <div class="dc-alert dc-alert-info">
       <svg class="dc-alert-icon">…</svg>
       <div class="dc-alert-content">
         <span class="dc-alert-title">Info</span>
         <span>Message text here.</span>
       </div>
     </div>

   Variants: dc-alert-info | dc-alert-success | dc-alert-warning | dc-alert-danger
   ========================================================================== */

.dc-alert {
  display: flex;
  gap: var(--dc-sp-3);
  align-items: flex-start;
  padding: var(--dc-sp-3) var(--dc-sp-4);
  border-radius: var(--dc-radius-sm);
  font-size: 0.875rem;
  line-height: 1.5;
  color: var(--dc-text);
}

.dc-alert-info    { background: var(--dc-info-bg);    border-left: 3px solid var(--dc-info); }
.dc-alert-success { background: var(--dc-success-bg); border-left: 3px solid var(--dc-success); }
.dc-alert-warning { background: var(--dc-warning-bg); border-left: 3px solid var(--dc-warning); }
.dc-alert-danger  { background: var(--dc-danger-bg);  border-left: 3px solid var(--dc-danger); }

.dc-alert-icon {
  flex-shrink: 0;
  margin-top: 1px;
  width: 16px;
  height: 16px;
}
.dc-alert-info    .dc-alert-icon { color: var(--dc-info); }
.dc-alert-success .dc-alert-icon { color: var(--dc-success); }
.dc-alert-warning .dc-alert-icon { color: var(--dc-warning); }
.dc-alert-danger  .dc-alert-icon { color: var(--dc-danger); }

.dc-alert-content { display: flex; flex-direction: column; gap: 2px; }

.dc-alert-title {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  display: block;
}
.dc-alert-info    .dc-alert-title { color: var(--dc-info-text); }
.dc-alert-success .dc-alert-title { color: var(--dc-success-text); }
.dc-alert-warning .dc-alert-title { color: var(--dc-warning-text); }
.dc-alert-danger  .dc-alert-title { color: var(--dc-danger-text); }


/* ==========================================================================
   11. TOOLTIP
   CSS-only. Position the trigger relatively.

   Usage:
   <div class="dc-tooltip-wrap">
     <button class="dc-btn dc-btn-secondary">Hover me</button>
     <div class="dc-tooltip">
       Tooltip text
       <span class="dc-tooltip-kbd">⌘C</span>
       <span class="dc-tooltip-arrow"></span>
     </div>
   </div>
   ========================================================================== */

.dc-tooltip-wrap {
  position: relative;
  display: inline-flex;
}

.dc-tooltip {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  background: var(--dc-black);
  color: #fff;
  font-family: var(--font-body);
  font-size: 0.75rem;
  line-height: 1.4;
  padding: 6px 10px;
  border-radius: var(--dc-radius-sm);
  max-width: 200px;
  white-space: normal;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--dc-transition), visibility var(--dc-transition);
  z-index: 50;
}

.dc-tooltip-arrow {
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  width: 7px;
  height: 5px;
  background: var(--dc-black);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
}

/* Show on hover or when the trigger is focused */
.dc-tooltip-wrap:hover .dc-tooltip,
.dc-tooltip-wrap:focus-within .dc-tooltip {
  opacity: 1;
  visibility: visible;
}

/* Optional keyboard shortcut line inside tooltip */
.dc-tooltip-kbd {
  display: block;
  color: rgba(255, 255, 255, 0.5);
  font-family: var(--font-mono);
  font-size: 0.65rem;
  margin-top: 2px;
}


/* ==========================================================================
   12. TABLE
   Usage:
     <div class="dc-table-wrap">
       <table class="dc-table">
         <thead><tr><th>Domain</th>…</tr></thead>
         <tbody><tr><td class="dc-cell-mono">example.com</td>…</tr></tbody>
       </table>
     </div>
   ========================================================================== */

.dc-table-wrap {
  border: 1.5px solid var(--dc-border);
  border-radius: var(--dc-radius-md);
  overflow: hidden;
}

.dc-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
}

/* Dark header row */
.dc-table thead tr {
  background: var(--dc-black);
}

.dc-table th {
  text-align: left;
  padding: var(--dc-sp-2) var(--dc-sp-4);
  font-family: var(--font-mono);
  font-size: 0.6rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.55);
  white-space: nowrap;
}

.dc-table td {
  padding: var(--dc-sp-2) var(--dc-sp-4);
  color: var(--dc-text);
  border-bottom: 1px solid var(--dc-border);
  vertical-align: middle;
}

.dc-table tbody tr:last-child td {
  border-bottom: none;
}

/* Zebra striping */
.dc-table tbody tr:nth-child(even) td {
  background: var(--dc-bg-subtle);
}

.dc-table tbody tr:hover td {
  background: rgba(38, 122, 233, 0.04);
}

/* Monospace cell — use for domain names, dates, IDs */
.dc-table .dc-cell-mono {
  font-family: var(--font-mono);
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--dc-text);
}

/* Muted cell — use for secondary data */
.dc-table .dc-cell-soft {
  color: var(--dc-text-soft);
  font-family: var(--font-mono);
  font-size: 0.75rem;
}

/* Warning cell — use for expiring dates etc. */
.dc-table .dc-cell-warn {
  color: var(--dc-orange);
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-weight: 600;
}


/* ==========================================================================
   13. EMPTY STATE
   Usage:
     <div class="dc-empty">
       <svg class="dc-empty-icon">…</svg>
       <h3 class="dc-empty-title">No domains found</h3>
       <p class="dc-empty-body">Add your first domain to get started.</p>
       <button class="dc-btn dc-btn-primary dc-btn-sm">+ Add domain</button>
     </div>
   ========================================================================== */

.dc-empty {
  border: 1.5px dashed var(--dc-border);
  border-radius: var(--dc-radius-md);
  padding: var(--dc-sp-10) var(--dc-sp-6);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--dc-sp-2);
}

.dc-empty-icon {
  color: var(--dc-border);
  width: 40px;
  height: 40px;
  margin-bottom: var(--dc-sp-2);
}

.dc-empty-title {
  font-family: var(--font-display);
  font-size: 1rem;
  font-weight: 700;
  color: var(--dc-text);
  margin: 0;
}

.dc-empty-body {
  font-size: 0.875rem;
  color: var(--dc-text-soft);
  margin: 0;
  max-width: 280px;
}


/* ==========================================================================
   14. UTILITY CLASSES
   ========================================================================== */

/* --- Typography --- */
.dc-text-display { font-family: var(--font-display); }
.dc-text-mono    { font-family: var(--font-mono); }
.dc-text-body    { font-family: var(--font-body); }

.dc-text-soft   { color: var(--dc-text-soft); }
.dc-text-blue   { color: var(--dc-blue); }
.dc-text-orange { color: var(--dc-orange); }
.dc-text-white  { color: #fff; }

.dc-text-xs { font-size: 0.65rem; }
.dc-text-sm { font-size: 0.8rem; }
.dc-text-md { font-size: 1rem; }
.dc-text-lg { font-size: 1.125rem; }
.dc-text-xl { font-size: 1.5rem; }

.dc-font-400 { font-weight: 400; }
.dc-font-500 { font-weight: 500; }
.dc-font-600 { font-weight: 600; }
.dc-font-700 { font-weight: 700; }
.dc-font-800 { font-weight: 800; }
.dc-font-900 { font-weight: 900; }

/* Uppercase with tracking — for labels, captions */
.dc-caps {
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
  font-size: 0.7rem;
}

/* --- Backgrounds --- */
.dc-bg-paper  { background: var(--dc-bg-subtle); }
.dc-bg-white  { background: var(--dc-surface); }
.dc-bg-black  { background: var(--dc-black); }
.dc-bg-navy   { background: var(--dc-navy); }
.dc-bg-blue   { background: var(--dc-blue); }
.dc-bg-orange { background: var(--dc-orange); }

/* --- Borders --- */
.dc-border        { border: 1px solid var(--dc-border); }
.dc-border-top    { border-top: 1px solid var(--dc-border); }
.dc-border-bottom { border-bottom: 1px solid var(--dc-border); }

/* --- Corner radii --- */
.dc-rounded-xs   { border-radius: var(--dc-radius-xs); }
.dc-rounded-sm   { border-radius: var(--dc-radius-sm); }
.dc-rounded-md   { border-radius: var(--dc-radius-md); }
.dc-rounded-lg   { border-radius: var(--dc-radius-lg); }
.dc-rounded-full { border-radius: var(--dc-radius-full); }

/* --- Shadows --- */
.dc-shadow-sm { box-shadow: var(--dc-shadow-sm); }
.dc-shadow-md { box-shadow: var(--dc-shadow-md); }
.dc-shadow-lg { box-shadow: var(--dc-shadow-lg); }

/* --- Spacing shorthands --- */
.dc-p-2  { padding: var(--dc-sp-2); }
.dc-p-4  { padding: var(--dc-sp-4); }
.dc-p-6  { padding: var(--dc-sp-6); }
.dc-p-8  { padding: var(--dc-sp-8); }
.dc-px-4 { padding-inline: var(--dc-sp-4); }
.dc-px-6 { padding-inline: var(--dc-sp-6); }
.dc-py-4 { padding-block: var(--dc-sp-4); }
.dc-py-6 { padding-block: var(--dc-sp-6); }

.dc-mt-4 { margin-top: var(--dc-sp-4); }
.dc-mt-6 { margin-top: var(--dc-sp-6); }
.dc-mt-8 { margin-top: var(--dc-sp-8); }
.dc-mb-4 { margin-bottom: var(--dc-sp-4); }
.dc-mb-6 { margin-bottom: var(--dc-sp-6); }
.dc-mb-8 { margin-bottom: var(--dc-sp-8); }

/* --- Flex / grid shortcuts --- */
.dc-flex          { display: flex; }
.dc-inline-flex   { display: inline-flex; }
.dc-flex-col      { flex-direction: column; }
.dc-items-center  { align-items: center; }
.dc-justify-between { justify-content: space-between; }
.dc-gap-2  { gap: var(--dc-sp-2); }
.dc-gap-3  { gap: var(--dc-sp-3); }
.dc-gap-4  { gap: var(--dc-sp-4); }
.dc-gap-6  { gap: var(--dc-sp-6); }
.dc-grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--dc-sp-4); }
.dc-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--dc-sp-4); }

/* Responsive grid — collapses on small screens */
@media (max-width: 640px) {
  .dc-grid-2,
  .dc-grid-3 { grid-template-columns: 1fr; }
}
@media (min-width: 641px) and (max-width: 900px) {
  .dc-grid-3 { grid-template-columns: repeat(2, 1fr); }
}

/* --- Accessibility --- */
.dc-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

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

.dc-animate-in {
  animation: dc-fade-in 0.2s ease both;
}


/* ==========================================================================
   Print
   ========================================================================== */

@media print {
  .dc-btn,
  nav,
  .dc-tooltip-wrap { display: none !important; }

  body {
    font-size: 11pt;
    color: #000;
    background: #fff;
  }

  .dc-card {
    border: 1pt solid #ccc;
    break-inside: avoid;
  }
}
