/* =============================================================================
   Kin theme — design tokens + Bootstrap 5.3 reskin
   ----------------------------------------------------------------------------
   Layered on top of bootstrap.min.css. Templates keep using Bootstrap class
   names; this file rewrites the visual layer (color, type, radii, shadows,
   spacing rhythm) so the app reads as fresh + sharp instead of stock BS.
   ========================================================================== */

/* -----------------------------------------------------------------------------
   0. Self-hosted Inter (variable font) — no CDN
   -------------------------------------------------------------------------- */
@font-face {
    font-family: 'Inter';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/Inter-Variable.woff2') format('woff2-variations'),
         url('../fonts/Inter-Variable.woff2') format('woff2');
}

/* -----------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root {
    /* Ink */
    --kin-ink:        #0a0a0a;
    --kin-ink-2:      #404040;
    --kin-ink-3:      #525252;
    --kin-ink-muted:  #737373;
    --kin-ink-soft:   #a8a29e;

    /* Surfaces */
    --kin-bg:           #fafaf9;
    --kin-surface:      #ffffff;
    --kin-surface-alt:  #f5f5f4;
    --kin-surface-sunk: #efeeec;

    /* Borders */
    --kin-border:        #e7e5e4;
    --kin-border-strong: #d6d3d1;
    --kin-border-faint:  #f1efed;

    /* Accent (teal — distinctive but not the done-to-death CRM blue) */
    --kin-accent:        #0f766e;
    --kin-accent-hover:  #115e59;
    --kin-accent-press:  #134e4a;
    --kin-accent-tint:   #f0fdfa;
    --kin-accent-tint-2: #ccfbf1;
    --kin-accent-ink:    #134e4a;
    --kin-accent-rgb:    15, 118, 110;

    /* Status */
    --kin-success:      #16a34a;
    --kin-success-tint: #f0fdf4;
    --kin-success-ink:  #14532d;
    --kin-warning:      #d97706;
    --kin-warning-tint: #fffbeb;
    --kin-warning-ink:  #78350f;
    --kin-danger:       #dc2626;
    --kin-danger-tint:  #fef2f2;
    --kin-danger-ink:   #7f1d1d;
    --kin-info:         #0284c7;
    --kin-info-tint:    #f0f9ff;
    --kin-info-ink:     #0c4a6e;

    /* Type */
    --kin-font:      'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
    --kin-font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;

    /* Radii */
    --kin-radius-xs:   4px;
    --kin-radius-sm:   6px;
    --kin-radius:      8px;
    --kin-radius-lg:   12px;
    --kin-radius-xl:   16px;
    --kin-radius-pill: 999px;

    /* Shadows — single warm channel, restrained */
    --kin-shadow-xs:    0 1px 0 rgba(10, 10, 10, 0.04);
    --kin-shadow-sm:    0 1px 2px rgba(10, 10, 10, 0.06);
    --kin-shadow:       0 1px 2px rgba(10, 10, 10, 0.04), 0 4px 12px rgba(10, 10, 10, 0.04);
    --kin-shadow-lg:    0 8px 24px rgba(10, 10, 10, 0.06), 0 2px 6px rgba(10, 10, 10, 0.04);
    --kin-shadow-focus: 0 0 0 3px rgba(15, 118, 110, 0.18);

    /* Motion */
    --kin-ease:     cubic-bezier(0.2, 0.6, 0.2, 1);
    --kin-dur-fast: 120ms;
    --kin-dur:      180ms;
}

/* Dark mode — applied via [data-theme="dark"] on <html>. Opt-in: an inline
   script in the layout reads localStorage and sets the attribute before
   first paint to avoid a flash of light theme. */
:root[data-theme="dark"] {
    /* Ink (now light, on dark surfaces) */
    --kin-ink:        #f5f5f4;
    --kin-ink-2:      #d6d3d1;
    --kin-ink-3:      #a8a29e;
    --kin-ink-muted:  #8a8786;
    --kin-ink-soft:   #6b6968;

    /* Surfaces */
    --kin-bg:           #0d0d0c;
    --kin-surface:      #18181b;
    --kin-surface-alt:  #232325;
    --kin-surface-sunk: #0f0f10;

    /* Borders */
    --kin-border:        #2f2f33;
    --kin-border-strong: #3f3f44;
    --kin-border-faint:  #232325;

    /* Accent — keep brand colour, but soften the tint so it reads on dark */
    --kin-accent-tint:   #0a3933;
    --kin-accent-tint-2: #115049;
    --kin-accent-ink:    #99f6e4;

    /* Status — reuse the accent colour but with darker tints/inks */
    --kin-success-tint: #0d2818;
    --kin-success-ink:  #4ade80;
    --kin-warning-tint: #2a1a06;
    --kin-warning-ink:  #fbbf24;
    --kin-danger-tint:  #2a0e0e;
    --kin-danger-ink:   #fca5a5;
    --kin-info-tint:    #0a2236;
    --kin-info-ink:     #7dd3fc;

    /* Shadows — bigger spread, dark backdrop swallows them otherwise */
    --kin-shadow-xs:    0 1px 0 rgba(0, 0, 0, 0.4);
    --kin-shadow-sm:    0 1px 2px rgba(0, 0, 0, 0.4);
    --kin-shadow:       0 1px 2px rgba(0, 0, 0, 0.3), 0 4px 12px rgba(0, 0, 0, 0.35);
    --kin-shadow-lg:    0 8px 24px rgba(0, 0, 0, 0.4), 0 2px 6px rgba(0, 0, 0, 0.3);

    color-scheme: dark;
}

/* Bootstrap utility-class overrides for dark mode. These are utilities
   sprinkled throughout templates (bg-white, bg-light, table-light, etc.)
   — they hardcode pale colours, so we re-point them at our surface tokens. */
:root[data-theme="dark"] .bg-white,
:root[data-theme="dark"] .bg-body { background-color: var(--kin-surface) !important; }
:root[data-theme="dark"] .bg-light { background-color: var(--kin-surface-alt) !important; }
:root[data-theme="dark"] .bg-light-subtle { background-color: var(--kin-surface-sunk) !important; }
:root[data-theme="dark"] .text-dark { color: var(--kin-ink) !important; }
:root[data-theme="dark"] .text-muted { color: var(--kin-ink-muted) !important; }
:root[data-theme="dark"] .border { border-color: var(--kin-border) !important; }
:root[data-theme="dark"] .table > :not(caption) > * > * { background-color: transparent; color: var(--kin-ink); }
:root[data-theme="dark"] .table-light,
:root[data-theme="dark"] .table-light > th,
:root[data-theme="dark"] .table-light > td {
    background-color: var(--kin-surface-alt) !important;
    color: var(--kin-ink) !important;
}

/* -----------------------------------------------------------------------------
   2. Bootstrap variable overrides — propagates to every BS component
   -------------------------------------------------------------------------- */
:root {
    --bs-primary:               var(--kin-accent);
    --bs-primary-rgb:           var(--kin-accent-rgb);
    --bs-primary-text-emphasis: var(--kin-accent-ink);
    --bs-primary-bg-subtle:     var(--kin-accent-tint);
    --bs-primary-border-subtle: var(--kin-accent-tint-2);

    --bs-body-color:     var(--kin-ink);
    --bs-body-color-rgb: 10, 10, 10;
    --bs-body-bg:        var(--kin-bg);
    --bs-body-bg-rgb:    250, 250, 249;

    --bs-emphasis-color:  var(--kin-ink);
    --bs-secondary-color: var(--kin-ink-muted);
    --bs-secondary-bg:    var(--kin-surface-alt);
    --bs-tertiary-color:  var(--kin-ink-soft);
    --bs-tertiary-bg:     var(--kin-bg);

    --bs-link-color:           var(--kin-accent);
    --bs-link-color-rgb:       var(--kin-accent-rgb);
    --bs-link-hover-color:     var(--kin-accent-hover);
    --bs-link-hover-color-rgb: 17, 94, 89;

    --bs-border-color:             var(--kin-border);
    --bs-border-color-translucent: rgba(10, 10, 10, 0.08);

    --bs-success:               var(--kin-success);
    --bs-success-text-emphasis: var(--kin-success-ink);
    --bs-success-bg-subtle:     var(--kin-success-tint);
    --bs-warning:               var(--kin-warning);
    --bs-warning-text-emphasis: var(--kin-warning-ink);
    --bs-warning-bg-subtle:     var(--kin-warning-tint);
    --bs-danger:                var(--kin-danger);
    --bs-danger-text-emphasis:  var(--kin-danger-ink);
    --bs-danger-bg-subtle:      var(--kin-danger-tint);
    --bs-info:                  var(--kin-info);
    --bs-info-text-emphasis:    var(--kin-info-ink);
    --bs-info-bg-subtle:        var(--kin-info-tint);

    --bs-font-sans-serif: var(--kin-font);
    --bs-font-monospace:  var(--kin-font-mono);
    --bs-body-font-size:   0.9375rem;
    --bs-body-font-weight: 400;
    --bs-body-line-height: 1.55;

    --bs-border-radius:    var(--kin-radius);
    --bs-border-radius-sm: var(--kin-radius-sm);
    --bs-border-radius-lg: var(--kin-radius-lg);
    --bs-border-radius-xl: var(--kin-radius-xl);

    --bs-focus-ring-color:  rgba(15, 118, 110, 0.2);
    --bs-focus-ring-width:  3px;
    --bs-focus-ring-opacity: 1;
}

/* -----------------------------------------------------------------------------
   3. Base
   -------------------------------------------------------------------------- */
html { font-feature-settings: 'cv11', 'ss01', 'ss03'; }

body {
    font-family: var(--kin-font);
    font-feature-settings: 'cv11', 'ss01';
    color: var(--kin-ink);
    background: var(--kin-bg);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: var(--kin-font);
    color: var(--kin-ink);
    font-weight: 600;
    letter-spacing: -0.015em;
    line-height: 1.2;
}
h1, .h1 { font-weight: 700; letter-spacing: -0.025em; }
h2, .h2 { font-weight: 700; letter-spacing: -0.022em; }

a { text-decoration: none; transition: color var(--kin-dur-fast) var(--kin-ease); }
a:hover { text-decoration: none; color: var(--kin-accent-hover); }

hr { border-color: var(--kin-border); opacity: 1; }

::selection { background: var(--kin-accent-tint-2); color: var(--kin-accent-ink); }

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

/* -----------------------------------------------------------------------------
   4. Buttons
   -------------------------------------------------------------------------- */
.btn {
    --bs-btn-border-radius: var(--kin-radius);
    --bs-btn-padding-x: 0.95rem;
    --bs-btn-padding-y: 0.5rem;
    --bs-btn-font-size: 0.9rem;
    --bs-btn-font-weight: 500;
    font-family: var(--kin-font);
    letter-spacing: -0.005em;
    transition: background-color var(--kin-dur-fast) var(--kin-ease),
                border-color var(--kin-dur-fast) var(--kin-ease),
                color var(--kin-dur-fast) var(--kin-ease),
                box-shadow var(--kin-dur-fast) var(--kin-ease),
                transform var(--kin-dur-fast) var(--kin-ease);
}
.btn:focus-visible { box-shadow: var(--kin-shadow-focus); outline: none; }
.btn:active { transform: translateY(0.5px); }

.btn-sm  { --bs-btn-padding-x: 0.7rem; --bs-btn-padding-y: 0.32rem; --bs-btn-font-size: 0.825rem; }
.btn-lg  { --bs-btn-padding-x: 1.2rem; --bs-btn-padding-y: 0.7rem;  --bs-btn-font-size: 1rem; --bs-btn-border-radius: var(--kin-radius-lg); }

.btn-primary {
    --bs-btn-bg: var(--kin-accent);
    --bs-btn-border-color: var(--kin-accent);
    --bs-btn-hover-bg: var(--kin-accent-hover);
    --bs-btn-hover-border-color: var(--kin-accent-hover);
    --bs-btn-active-bg: var(--kin-accent-press);
    --bs-btn-active-border-color: var(--kin-accent-press);
    --bs-btn-disabled-bg: var(--kin-accent);
    --bs-btn-disabled-border-color: var(--kin-accent);
    color: #fff;
}
.btn-outline-primary {
    --bs-btn-color: var(--kin-accent);
    --bs-btn-border-color: var(--kin-border-strong);
    --bs-btn-hover-bg: var(--kin-accent-tint);
    --bs-btn-hover-border-color: var(--kin-accent);
    --bs-btn-hover-color: var(--kin-accent-ink);
    --bs-btn-active-bg: var(--kin-accent-tint-2);
    --bs-btn-active-color: var(--kin-accent-ink);
}

.btn-secondary, .btn-outline-secondary {
    --bs-btn-color: var(--kin-ink-2);
    --bs-btn-bg: var(--kin-surface);
    --bs-btn-border-color: var(--kin-border-strong);
    --bs-btn-hover-bg: var(--kin-surface-alt);
    --bs-btn-hover-border-color: var(--kin-border-strong);
    --bs-btn-hover-color: var(--kin-ink);
    --bs-btn-active-bg: var(--kin-surface-sunk);
    --bs-btn-active-color: var(--kin-ink);
}

.btn-light {
    --bs-btn-bg: var(--kin-surface);
    --bs-btn-border-color: var(--kin-border);
    --bs-btn-color: var(--kin-ink);
    --bs-btn-hover-bg: var(--kin-surface-alt);
    --bs-btn-hover-color: var(--kin-ink);
    --bs-btn-hover-border-color: var(--kin-border);
}
.btn-dark {
    --bs-btn-bg: var(--kin-ink);
    --bs-btn-border-color: var(--kin-ink);
    --bs-btn-hover-bg: var(--kin-ink-2);
    --bs-btn-hover-border-color: var(--kin-ink-2);
}
.btn-danger {
    --bs-btn-bg: var(--kin-danger);
    --bs-btn-border-color: var(--kin-danger);
    --bs-btn-hover-bg: #b91c1c;
    --bs-btn-hover-border-color: #b91c1c;
    --bs-btn-active-bg: #991b1b;
}
.btn-success {
    --bs-btn-bg: var(--kin-success);
    --bs-btn-border-color: var(--kin-success);
    --bs-btn-hover-bg: #15803d;
    --bs-btn-hover-border-color: #15803d;
}

.btn-link {
    --bs-btn-color: var(--kin-accent);
    --bs-btn-hover-color: var(--kin-accent-hover);
    text-decoration: none;
}

/* -----------------------------------------------------------------------------
   5. Forms
   -------------------------------------------------------------------------- */
.form-control, .form-select {
    background: var(--kin-surface);
    border: 1px solid var(--kin-border-strong);
    border-radius: var(--kin-radius);
    color: var(--kin-ink);
    font-size: 0.92rem;
    padding: 0.58rem 0.85rem;
    line-height: 1.4;
    box-shadow: var(--kin-shadow-xs);
    transition: border-color var(--kin-dur-fast) var(--kin-ease),
                box-shadow var(--kin-dur-fast) var(--kin-ease);
}
textarea.form-control { min-height: 110px; line-height: 1.5; padding: 0.7rem 0.85rem; }
.form-select { padding-right: 2.25rem; }
.form-control::placeholder { color: var(--kin-ink-soft); }
.form-control:focus, .form-select:focus {
    border-color: var(--kin-accent);
    box-shadow: var(--kin-shadow-focus);
    outline: none;
}
.form-control-lg { font-size: 0.95rem; padding: 0.7rem 0.9rem; border-radius: var(--kin-radius-lg); }
.form-control-sm { font-size: 0.825rem; padding: 0.32rem 0.6rem; border-radius: var(--kin-radius-sm); }

.form-label {
    color: var(--kin-ink-2);
    font-size: 0.825rem;
    font-weight: 500;
    margin-bottom: 0.4rem;
    letter-spacing: -0.005em;
}

.form-check-input {
    border: 1px solid var(--kin-border-strong);
    background-color: var(--kin-surface);
}
.form-check-input:checked {
    background-color: var(--kin-accent);
    border-color: var(--kin-accent);
}
.form-check-input:focus { box-shadow: var(--kin-shadow-focus); border-color: var(--kin-accent); }

.input-group-text {
    background: var(--kin-surface-alt);
    border-color: var(--kin-border-strong);
    color: var(--kin-ink-muted);
}

/* CakePHP FormHelper default container — every Form->control() output gets
   <div class="input ..."><label>...</label><input ...></div>. Style that
   wrapper directly so every form in the app benefits with no template edits. */
.input {
    margin-bottom: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.input > label {
    color: var(--kin-ink-2);
    font-size: 0.815rem;
    font-weight: 500;
    letter-spacing: -0.005em;
    margin-bottom: 0;
}
.input.required > label::after,
.input.required > .form-label::after {
    content: ' *';
    color: var(--kin-danger);
    font-weight: 600;
}
.input .form-text,
.input .help-block,
.form-text {
    color: var(--kin-ink-muted);
    font-size: 0.78rem;
    margin-top: 0;
    line-height: 1.4;
}
.input.error .form-control,
.input.error .form-select,
.is-invalid {
    border-color: var(--kin-danger) !important;
    box-shadow: 0 0 0 3px rgba(220, 38, 38, 0.14);
}
.input .error-message,
.invalid-feedback {
    color: var(--kin-danger);
    font-size: 0.78rem;
    margin-top: 0.2rem;
    font-weight: 500;
}

/* Inside Bootstrap row (row.g-*) gutters already handle vertical rhythm — drop
   per-input bottom margin so things don't double up. */
.row > [class*='col-'] > .input { margin-bottom: 0; }

/* Search input variant — used in the topbar */
.kin-search input[type="search"] {
    background-color: var(--kin-surface-alt);
    border-color: transparent;
    border-radius: var(--kin-radius-pill);
    padding-left: 2.4rem;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23737373' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");
    background-repeat: no-repeat;
    background-position: 0.85rem center;
}
.kin-search input[type="search"]:focus {
    background-color: var(--kin-surface);
    border-color: var(--kin-border-strong);
}

/* -----------------------------------------------------------------------------
   6. Cards
   -------------------------------------------------------------------------- */
.card {
    --bs-card-border-color: var(--kin-border);
    --bs-card-border-radius: var(--kin-radius-lg);
    --bs-card-inner-border-radius: calc(var(--kin-radius-lg) - 1px);
    --bs-card-cap-bg: var(--kin-surface);
    --bs-card-bg: var(--kin-surface);
    --bs-card-cap-padding-y: 1rem;
    --bs-card-cap-padding-x: 1.25rem;
    box-shadow: var(--kin-shadow-xs);
}
.card-header {
    border-bottom: 1px solid var(--kin-border);
    font-weight: 600;
    color: var(--kin-ink);
    background: transparent;
}
.card-body { padding: 1.25rem; }
.card-title { font-weight: 600; letter-spacing: -0.015em; }

.card.shadow,
.card.shadow-sm  { box-shadow: var(--kin-shadow) !important; }
.card.shadow-lg  { box-shadow: var(--kin-shadow-lg) !important; }

/* -----------------------------------------------------------------------------
   7. Tables
   -------------------------------------------------------------------------- */
.table {
    --bs-table-bg: var(--kin-surface);
    --bs-table-color: var(--kin-ink);
    --bs-table-border-color: var(--kin-border);
    --bs-table-hover-bg: var(--kin-accent-tint);
    --bs-table-hover-color: var(--kin-ink);
    --bs-table-striped-bg: var(--kin-surface-alt);
    margin-bottom: 0;
}
.table > :not(caption) > * > * {
    padding: 0.75rem 0.9rem;
    border-bottom-color: var(--kin-border);
    background-color: transparent;
}
.table thead th, .table thead td {
    color: var(--kin-ink-muted);
    text-transform: uppercase;
    font-size: 0.7rem;
    letter-spacing: 0.06em;
    font-weight: 600;
    border-bottom: 1px solid var(--kin-border);
    background: var(--kin-bg);
}
.table tbody tr { transition: background-color var(--kin-dur-fast) var(--kin-ease); }
.table tbody tr:last-child > * { border-bottom: 0; }

.table-responsive {
    border: 1px solid var(--kin-border);
    border-radius: var(--kin-radius-lg);
    background: var(--kin-surface);
    overflow: hidden;
    box-shadow: var(--kin-shadow-xs);
}
.table-responsive .table { border-radius: 0; }

/* -----------------------------------------------------------------------------
   8. Navbar
   -------------------------------------------------------------------------- */
.navbar {
    --bs-navbar-padding-y: 0.5rem;
    --bs-navbar-color: var(--kin-ink-2);
    --bs-navbar-hover-color: var(--kin-ink);
    --bs-navbar-active-color: var(--kin-ink);
    --bs-navbar-brand-color: var(--kin-ink);
    --bs-navbar-brand-hover-color: var(--kin-ink);
    border-bottom: 1px solid var(--kin-border) !important;
    background: var(--kin-surface) !important;
    backdrop-filter: saturate(140%) blur(8px);
    -webkit-backdrop-filter: saturate(140%) blur(8px);
}
.navbar-brand {
    font-weight: 700;
    letter-spacing: -0.025em;
    font-size: 1.05rem;
}
.navbar-brand .text-primary { color: var(--kin-ink) !important; }
/* The brand mark used to be a colour-block "K". Now it's the bitmap
   icon (transparent corners). Keep the same container size + spacing
   so existing markup that adds inline width/height overrides still
   makes sense, and let the image fill the box. */
.navbar-brand .kin-brand-mark {
    display: inline-block;
    width: 28px; height: 28px;
    margin-right: 0.5rem;
    object-fit: contain;
    border-radius: 0; /* the icon already has rounded corners */
    background: transparent;
    /* Legacy text-mode fallback (if anyone still emits a <span>K</span>) */
    text-align: center;
    line-height: 28px;
    color: var(--kin-accent);
    font-weight: 800;
}
.navbar-brand .kin-brand-logo {
    max-height: 28px;
    width: auto;
    object-fit: contain;
    display: block;
}
.navbar .nav-link {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--kin-ink-3);
    border-radius: var(--kin-radius-sm);
    padding: 0.4rem 0.7rem !important;
    transition: background-color var(--kin-dur-fast) var(--kin-ease),
                color var(--kin-dur-fast) var(--kin-ease);
}
.navbar .nav-link:hover { color: var(--kin-ink); background: var(--kin-surface-alt); }
.navbar .nav-link.active {
    color: var(--kin-accent-ink) !important;
    background: var(--kin-accent-tint);
    font-weight: 600 !important;
}

/* -----------------------------------------------------------------------------
   9. Dropdowns
   -------------------------------------------------------------------------- */
.dropdown-menu {
    --bs-dropdown-border-color: var(--kin-border);
    --bs-dropdown-border-radius: var(--kin-radius-lg);
    --bs-dropdown-link-color: var(--kin-ink-2);
    --bs-dropdown-link-hover-color: var(--kin-ink);
    --bs-dropdown-link-hover-bg: var(--kin-surface-alt);
    --bs-dropdown-link-active-color: var(--kin-accent-ink);
    --bs-dropdown-link-active-bg: var(--kin-accent-tint);
    --bs-dropdown-padding-y: 0.4rem;
    --bs-dropdown-item-padding-y: 0.45rem;
    --bs-dropdown-item-padding-x: 0.85rem;
    --bs-dropdown-font-size: 0.875rem;
    box-shadow: var(--kin-shadow-lg);
    padding: 0.4rem;
}
.dropdown-item { border-radius: var(--kin-radius-sm); }
.dropdown-divider { border-top-color: var(--kin-border); margin: 0.4rem 0; }
.dropdown-header {
    color: var(--kin-ink-muted) !important;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 0.7rem !important;
    font-weight: 600;
    padding-top: 0.5rem;
}

/* -----------------------------------------------------------------------------
   10. Badges + pills
   -------------------------------------------------------------------------- */
.badge {
    --bs-badge-padding-x: 0.55rem;
    --bs-badge-padding-y: 0.28rem;
    --bs-badge-font-size: 0.72rem;
    --bs-badge-font-weight: 600;
    --bs-badge-border-radius: var(--kin-radius-pill);
    letter-spacing: 0.01em;
}
.badge.bg-primary    { background: var(--kin-accent-tint) !important; color: var(--kin-accent-ink) !important; }
.badge.bg-secondary  { background: var(--kin-surface-alt) !important; color: var(--kin-ink-2) !important; }
.badge.bg-success    { background: var(--kin-success-tint) !important; color: var(--kin-success-ink) !important; }
.badge.bg-warning    { background: var(--kin-warning-tint) !important; color: var(--kin-warning-ink) !important; }
.badge.bg-danger     { background: var(--kin-danger-tint) !important; color: var(--kin-danger-ink) !important; }
.badge.bg-info       { background: var(--kin-info-tint) !important; color: var(--kin-info-ink) !important; }
.badge.bg-light      { background: var(--kin-surface-alt) !important; color: var(--kin-ink-2) !important; }
.badge.bg-dark       { background: var(--kin-ink) !important; color: #fff !important; }

/* Solid variants when explicitly needed */
.badge.bg-primary-solid { background: var(--kin-accent) !important; color: #fff !important; }
.badge.bg-danger-solid  { background: var(--kin-danger) !important; color: #fff !important; }

/* -----------------------------------------------------------------------------
   11. Alerts
   -------------------------------------------------------------------------- */
.alert {
    --bs-alert-border-radius: var(--kin-radius);
    --bs-alert-padding-x: 1rem;
    --bs-alert-padding-y: 0.75rem;
    border: 1px solid var(--kin-border);
    border-left-width: 3px;
    box-shadow: var(--kin-shadow-xs);
}
.alert-primary { background: var(--kin-accent-tint);   border-color: var(--kin-accent-tint-2); border-left-color: var(--kin-accent);  color: var(--kin-accent-ink); }
.alert-success { background: var(--kin-success-tint);  border-color: #dcfce7; border-left-color: var(--kin-success); color: var(--kin-success-ink); }
.alert-warning { background: var(--kin-warning-tint);  border-color: #fef3c7; border-left-color: var(--kin-warning); color: var(--kin-warning-ink); }
.alert-danger  { background: var(--kin-danger-tint);   border-color: #fecaca; border-left-color: var(--kin-danger);  color: var(--kin-danger-ink); }
.alert-info    { background: var(--kin-info-tint);     border-color: #bae6fd; border-left-color: var(--kin-info);    color: var(--kin-info-ink); }

/* CakePHP Flash messages render as plain divs — give them styling */
.message,
.message.success,
.message.error,
.message.warning,
.message.info {
    margin: 1rem 1.5rem;
    padding: 0.75rem 1rem;
    border-radius: var(--kin-radius);
    border: 1px solid var(--kin-border);
    border-left-width: 3px;
    background: var(--kin-surface);
    box-shadow: var(--kin-shadow-xs);
    font-size: 0.9rem;
}
.message.success { background: var(--kin-success-tint); border-left-color: var(--kin-success); color: var(--kin-success-ink); }
.message.error   { background: var(--kin-danger-tint);  border-left-color: var(--kin-danger);  color: var(--kin-danger-ink); }
.message.warning { background: var(--kin-warning-tint); border-left-color: var(--kin-warning); color: var(--kin-warning-ink); }
.message.info    { background: var(--kin-info-tint);    border-left-color: var(--kin-info);    color: var(--kin-info-ink); }

/* -----------------------------------------------------------------------------
   12. Modals
   -------------------------------------------------------------------------- */
.modal-content {
    border: 1px solid var(--kin-border);
    border-radius: var(--kin-radius-lg);
    box-shadow: var(--kin-shadow-lg);
}
.modal-header { border-bottom-color: var(--kin-border); padding: 1rem 1.25rem; }
.modal-footer { border-top-color: var(--kin-border); padding: 0.85rem 1.25rem; }
.modal-title { font-weight: 600; letter-spacing: -0.015em; }

/* -----------------------------------------------------------------------------
   13. Pagination
   -------------------------------------------------------------------------- */
.pagination {
    --bs-pagination-color: var(--kin-ink-2);
    --bs-pagination-bg: var(--kin-surface);
    --bs-pagination-border-color: var(--kin-border);
    --bs-pagination-hover-color: var(--kin-ink);
    --bs-pagination-hover-bg: var(--kin-surface-alt);
    --bs-pagination-hover-border-color: var(--kin-border);
    --bs-pagination-active-color: #fff;
    --bs-pagination-active-bg: var(--kin-accent);
    --bs-pagination-active-border-color: var(--kin-accent);
    --bs-pagination-border-radius: var(--kin-radius-sm);
    gap: 4px;
}
.pagination .page-item:not(:first-child) .page-link { margin-left: 0; }
.pagination .page-link { border-radius: var(--kin-radius-sm) !important; font-weight: 500; }

/* -----------------------------------------------------------------------------
   14. Lists, list-groups, accordions
   -------------------------------------------------------------------------- */
.list-group {
    --bs-list-group-border-color: var(--kin-border);
    --bs-list-group-border-radius: var(--kin-radius-lg);
    --bs-list-group-active-bg: var(--kin-accent-tint);
    --bs-list-group-active-color: var(--kin-accent-ink);
    --bs-list-group-active-border-color: var(--kin-accent-tint-2);
}
.list-group-item { padding: 0.75rem 1rem; }

.accordion {
    --bs-accordion-border-color: var(--kin-border);
    --bs-accordion-border-radius: var(--kin-radius-lg);
    --bs-accordion-active-color: var(--kin-accent-ink);
    --bs-accordion-active-bg: var(--kin-accent-tint);
    --bs-accordion-btn-focus-border-color: var(--kin-accent);
    --bs-accordion-btn-focus-box-shadow: var(--kin-shadow-focus);
}

/* -----------------------------------------------------------------------------
   15. Nav-tabs
   -------------------------------------------------------------------------- */
.nav-tabs {
    --bs-nav-tabs-border-color: var(--kin-border);
    --bs-nav-tabs-link-active-color: var(--kin-ink);
    --bs-nav-tabs-link-active-bg: transparent;
    --bs-nav-tabs-link-active-border-color: transparent transparent var(--kin-accent);
    border-bottom: 1px solid var(--kin-border);
    gap: 4px;
}
.nav-tabs .nav-link {
    color: var(--kin-ink-muted);
    font-weight: 500;
    border: 0;
    padding: 0.6rem 0.85rem;
    margin-bottom: -1px;
    border-bottom: 2px solid transparent;
    border-radius: 0;
}
.nav-tabs .nav-link:hover { color: var(--kin-ink); border-color: transparent; isolation: auto; }
.nav-tabs .nav-link.active { color: var(--kin-ink); border-bottom-color: var(--kin-accent); }

/* -----------------------------------------------------------------------------
   16. Misc utilities
   -------------------------------------------------------------------------- */
.text-muted   { color: var(--kin-ink-muted) !important; }
.text-primary { color: var(--kin-accent) !important; }
.text-body    { color: var(--kin-ink) !important; }

.bg-light       { background-color: var(--kin-surface-alt) !important; }
.bg-white       { background-color: var(--kin-surface) !important; }
.bg-body        { background-color: var(--kin-bg) !important; }
.bg-body-tertiary { background-color: var(--kin-bg) !important; }
.bg-primary     { background-color: var(--kin-accent) !important; }

.border       { border-color: var(--kin-border) !important; }
.border-bottom, .border-top, .border-start, .border-end { border-color: var(--kin-border) !important; }

.shadow-sm { box-shadow: var(--kin-shadow-sm) !important; }
.shadow    { box-shadow: var(--kin-shadow) !important; }
.shadow-lg { box-shadow: var(--kin-shadow-lg) !important; }

.rounded     { border-radius: var(--kin-radius) !important; }
.rounded-sm  { border-radius: var(--kin-radius-sm) !important; }
.rounded-lg, .rounded-3 { border-radius: var(--kin-radius-lg) !important; }
.rounded-pill { border-radius: var(--kin-radius-pill) !important; }

/* Soft eyebrow used across hero/section markers */
.kin-eyebrow {
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--kin-accent);
}

/* -----------------------------------------------------------------------------
   17. Lucide icon sizing — `<i data-lucide="..." class="kin-icon"></i>`
   The data-lucide script swaps the <i> for an <svg>. We size via CSS.
   -------------------------------------------------------------------------- */
.kin-icon,
[data-lucide] {
    width: 18px;
    height: 18px;
    stroke-width: 1.75;
    flex-shrink: 0;
    vertical-align: -3px;
}
.kin-icon-sm,
.kin-icon-sm[data-lucide] { width: 14px; height: 14px; }
.kin-icon-lg,
.kin-icon-lg[data-lucide] { width: 22px; height: 22px; }
.kin-icon-xl,
.kin-icon-xl[data-lucide] { width: 28px; height: 28px; }

.btn .kin-icon, .btn [data-lucide] { margin-right: 0.4rem; vertical-align: -3px; }
.btn-sm .kin-icon, .btn-sm [data-lucide] { width: 14px; height: 14px; }
.nav-link .kin-icon, .nav-link [data-lucide] { width: 16px; height: 16px; margin-right: 0.45rem; }
.dropdown-item .kin-icon, .dropdown-item [data-lucide] { width: 15px; height: 15px; margin-right: 0.55rem; color: var(--kin-ink-muted); }

/* -----------------------------------------------------------------------------
   18. Avatars
   -------------------------------------------------------------------------- */
.kin-avatar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px; height: 28px;
    border-radius: 8px;
    background: linear-gradient(135deg, var(--kin-accent) 0%, #14b8a6 100%);
    color: #fff;
    font-weight: 600;
    font-size: 0.72rem;
    letter-spacing: 0.02em;
    box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.12);
}
.kin-avatar-lg { width: 40px; height: 40px; font-size: 0.95rem; border-radius: 10px; }

/* -----------------------------------------------------------------------------
   19. Page chrome — section headings used across index pages
   -------------------------------------------------------------------------- */
.kin-page-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.25rem 0 1rem;
    margin-bottom: 1.25rem;
    border-bottom: 1px solid var(--kin-border);
}
.kin-page-header h1, .kin-page-header h2 {
    font-size: 1.4rem;
    font-weight: 600;
    margin: 0;
    letter-spacing: -0.02em;
}

/* -----------------------------------------------------------------------------
   20. Kanban (deals) — column board
   -------------------------------------------------------------------------- */
.kin-kanban {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: minmax(260px, 1fr);
    gap: 0.85rem;
    overflow-x: auto;
    overflow-y: visible;
    padding-bottom: 0.5rem;
    scrollbar-width: thin;
    scrollbar-color: var(--kin-border-strong) transparent;
}
.kin-kanban::-webkit-scrollbar { height: 8px; }
.kin-kanban::-webkit-scrollbar-thumb { background: var(--kin-border-strong); border-radius: 999px; }

.kin-kanban-col {
    display: flex;
    flex-direction: column;
    background: var(--kin-surface-alt);
    border: 1px solid var(--kin-border);
    border-radius: var(--kin-radius-lg);
    min-height: 220px;
    max-height: calc(100vh - 220px);
    overflow: hidden;
}
.kin-kanban-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.7rem 0.85rem;
    border-bottom: 1px solid var(--kin-border);
    background: var(--kin-surface);
    border-top-left-radius: var(--kin-radius-lg);
    border-top-right-radius: var(--kin-radius-lg);
}
.kin-kanban-head-title {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    min-width: 0;
}
.kin-kanban-head-title strong {
    font-size: 0.82rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--kin-ink-2);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.kin-kanban-head-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    padding: 0 7px;
    border-radius: 999px;
    background: var(--kin-surface-alt);
    color: var(--kin-ink-muted);
    font-size: 0.72rem;
    font-weight: 600;
    flex: 0 0 auto;
}
.kin-kanban-head-meta {
    font-size: 0.72rem;
    color: var(--kin-ink-muted);
    text-align: right;
    line-height: 1.25;
    flex: 0 0 auto;
}
.kin-kanban-head-meta strong { color: var(--kin-ink); font-weight: 600; }
.kin-kanban-body {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 0.6rem;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    scrollbar-width: thin;
    scrollbar-color: var(--kin-border-strong) transparent;
}
.kin-kanban-body::-webkit-scrollbar { width: 6px; }
.kin-kanban-body::-webkit-scrollbar-thumb { background: var(--kin-border-strong); border-radius: 999px; }
.kin-kanban-body-empty {
    color: var(--kin-ink-soft);
    font-size: 0.78rem;
    text-align: center;
    padding: 1.25rem 0.5rem;
    border: 1px dashed var(--kin-border);
    border-radius: var(--kin-radius);
}

.kin-kanban-card {
    display: block;
    background: var(--kin-surface);
    border: 1px solid var(--kin-border);
    border-left: 3px solid var(--kin-accent);
    border-radius: var(--kin-radius);
    padding: 0.7rem 0.8rem;
    box-shadow: var(--kin-shadow-xs);
    color: inherit;
    text-decoration: none;
    cursor: pointer;
    transition: box-shadow var(--kin-dur-fast) var(--kin-ease),
                transform var(--kin-dur-fast) var(--kin-ease),
                border-color var(--kin-dur-fast) var(--kin-ease);
}
.kin-kanban-card:hover {
    box-shadow: var(--kin-shadow);
    transform: translateY(-1px);
    border-left-color: var(--kin-accent-strong, var(--kin-accent));
    color: inherit;
    text-decoration: none;
}
a.kin-kanban-card-title,
.kin-kanban-card-title {
    display: block;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--kin-ink);
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
a.kin-kanban-card-title:hover { color: var(--kin-accent-ink); text-decoration: none; }
.kin-kanban-card-amount {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--kin-ink);
    letter-spacing: -0.01em;
    margin-top: 0.3rem;
}
.kin-kanban-card-amount-currency {
    font-size: 0.72rem;
    color: var(--kin-ink-muted);
    font-weight: 500;
    margin-right: 2px;
}
.kin-kanban-card-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.5rem;
    margin-top: 0.4rem;
    font-size: 0.74rem;
    color: var(--kin-ink-muted);
}
.kin-kanban-card-meta-divider { opacity: 0.5; }
.kin-kanban-card-account {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    margin-top: 0.3rem;
    font-size: 0.78rem;
    color: var(--kin-ink-2);
    overflow: hidden;
}
.kin-kanban-card-account span {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.kin-kanban-card-account [data-lucide] {
    width: 12px; height: 12px; flex: 0 0 auto;
    color: var(--kin-ink-soft);
}
.kin-kanban-prob {
    margin-top: 0.55rem;
    height: 4px;
    background: var(--kin-surface-alt);
    border-radius: 999px;
    overflow: hidden;
}
.kin-kanban-prob-fill {
    height: 100%;
    background: var(--kin-accent);
    border-radius: 999px;
    transition: width var(--kin-dur) var(--kin-ease);
}
.kin-kanban-card-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    margin-top: 0.5rem;
}
.kin-kanban-card-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 0.5rem;
    padding-top: 0.45rem;
    border-top: 1px dashed var(--kin-border);
    font-size: 0.72rem;
    color: var(--kin-ink-muted);
}
.kin-kanban-move {
    margin-top: 0.45rem;
}
.kin-kanban-move > summary {
    list-style: none;
    cursor: pointer;
    color: var(--kin-accent);
    font-size: 0.75rem;
    font-weight: 500;
    padding: 0.15rem 0;
}
.kin-kanban-move > summary::-webkit-details-marker { display: none; }
.kin-kanban-move > summary:hover { text-decoration: underline; }
.kin-kanban-move-menu {
    margin-top: 0.4rem;
    padding: 0.3rem;
    background: var(--kin-surface-alt);
    border-radius: var(--kin-radius-sm);
    border: 1px solid var(--kin-border);
}
.kin-kanban-move-menu form {
    display: block;
}
.kin-kanban-move-menu a {
    display: block;
    padding: 0.3rem 0.45rem;
    border-radius: var(--kin-radius-sm);
    font-size: 0.78rem;
    color: var(--kin-ink-2);
    text-decoration: none;
}
.kin-kanban-move-menu a:hover {
    background: var(--kin-surface);
    color: var(--kin-ink);
}

/* Avatar bubble for owner */
.kin-avatar-bubble {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px; height: 22px;
    border-radius: 999px;
    background: var(--kin-accent-tint);
    color: var(--kin-accent-ink);
    font-size: 0.68rem;
    font-weight: 600;
    flex: 0 0 auto;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}
.kin-avatar-bubble--sm { width: 18px; height: 18px; font-size: 0.6rem; }

/* Card status border-color overrides for closed deals */
.kin-kanban-card.is-won { border-left-color: var(--kin-success); }
.kin-kanban-card.is-lost { border-left-color: var(--kin-danger); }
.kin-kanban-card.is-stale { border-left-color: var(--kin-warning); }

/* -----------------------------------------------------------------------------
   20b. Deal stat tiles + forecast bars
   -------------------------------------------------------------------------- */
.kin-stat-tile {
    background: var(--kin-surface);
    border: 1px solid var(--kin-border);
    border-radius: var(--kin-radius-lg);
    padding: 0.85rem 1rem;
    box-shadow: var(--kin-shadow-xs);
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.6rem;
}
.kin-stat-tile-label {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--kin-ink-muted);
}
.kin-stat-tile-value {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--kin-ink);
    line-height: 1.15;
    margin-top: 0.15rem;
    letter-spacing: -0.01em;
}
.kin-stat-tile-value-cur {
    font-size: 0.78rem;
    color: var(--kin-ink-muted);
    font-weight: 500;
    margin-right: 2px;
}
.kin-stat-tile-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: var(--kin-radius);
    background: var(--kin-accent-tint);
    color: var(--kin-accent-ink);
    flex: 0 0 auto;
}
.kin-stat-tile-icon [data-lucide] { width: 18px; height: 18px; margin: 0; }

.kin-forecast-month {
    background: var(--kin-surface);
    border: 1px solid var(--kin-border);
    border-radius: var(--kin-radius-lg);
    overflow: hidden;
    margin-bottom: 0.85rem;
    box-shadow: var(--kin-shadow-xs);
}
.kin-forecast-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.7rem 1rem;
    border-bottom: 1px solid var(--kin-border);
    background: var(--kin-surface-alt);
}
.kin-forecast-head-left strong { font-size: 0.92rem; }
.kin-forecast-head-left .text-muted { font-size: 0.78rem; }
.kin-forecast-bar {
    flex: 1 1 auto;
    height: 8px;
    background: var(--kin-surface-sunk, var(--kin-surface-alt));
    border-radius: 999px;
    overflow: hidden;
    max-width: 280px;
    position: relative;
}
.kin-forecast-bar-gross {
    position: absolute;
    inset: 0 auto 0 0;
    background: var(--kin-accent-tint);
    border-radius: 999px;
}
.kin-forecast-bar-weighted {
    position: absolute;
    inset: 0 auto 0 0;
    background: var(--kin-accent);
    border-radius: 999px;
}
.kin-forecast-head-right { font-size: 0.8rem; color: var(--kin-ink-muted); white-space: nowrap; }
.kin-forecast-head-right strong { color: var(--kin-ink); font-weight: 600; }

/* -----------------------------------------------------------------------------
   22. AI inline result panes
   -------------------------------------------------------------------------- */
.kin-ai-result {
    margin-top: 0.5rem;
    padding: 0.7rem 0.85rem;
    background: linear-gradient(135deg, var(--kin-accent-tint) 0%, var(--kin-surface-alt) 100%);
    border: 1px solid var(--kin-border);
    border-left: 3px solid var(--kin-accent);
    border-radius: var(--kin-radius);
    font-size: 0.88rem;
    line-height: 1.5;
    color: var(--kin-ink);
}
.kin-ai-result[data-state="loading"] {
    background: var(--kin-surface-alt);
    border-left-color: var(--kin-border-strong);
}
.kin-ai-result[data-state="error"] {
    background: var(--kin-danger-tint);
    border-left-color: var(--kin-danger);
}
.kin-ai-result[data-state="warn"] {
    background: var(--kin-warning-tint);
    border-left-color: var(--kin-warning);
}
.kin-ai-result-body { white-space: pre-wrap; word-wrap: break-word; }
.kin-ai-result-foot {
    margin-top: 0.45rem;
    padding-top: 0.4rem;
    border-top: 1px dashed var(--kin-border);
    font-size: 0.72rem;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}
.kin-ai-spinner {
    display: inline-block;
    width: 12px;
    height: 12px;
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: kin-ai-spin 0.7s linear infinite;
    vertical-align: -2px;
    margin-right: 4px;
}
@keyframes kin-ai-spin { to { transform: rotate(360deg); } }

/* -----------------------------------------------------------------------------
   21. Admin chrome — distinct dark-charcoal navbar
   -------------------------------------------------------------------------- */
body.kin-admin { background: var(--kin-bg); }
.kin-admin-nav {
    background: #0c0a09 !important;
    color: #f5f5f4 !important;
    border-bottom: 1px solid #1c1917 !important;
    backdrop-filter: none;
}
.kin-admin-nav .navbar-brand,
.kin-admin-nav .nav-link,
.kin-admin-nav a { color: #e7e5e4 !important; }
.kin-admin-nav .nav-link:hover { color: #fff !important; background: rgba(255, 255, 255, 0.06); }
.kin-admin-nav .nav-link.active { color: #fff !important; background: rgba(255, 255, 255, 0.1); font-weight: 600 !important; }
/* Admin nav: brand mark is the same bitmap icon — no colour override
   needed now that it's an <img>. Kept as a comment anchor in case the
   admin chrome ever needs to invert (e.g., dark-only logo variant). */
.kin-admin-eyebrow {
    background: var(--kin-danger);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 3px 8px;
    border-radius: var(--kin-radius-sm);
}

/* Impersonation warning bar */
.kin-impersonation-bar {
    background: linear-gradient(90deg, var(--kin-danger) 0%, #b91c1c 100%);
    color: #fff;
    padding: 0.5rem 1.25rem;
    font-size: 0.85rem;
    box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
}

/* -----------------------------------------------------------------------------
   22. Footer
   -------------------------------------------------------------------------- */
footer {
    color: var(--kin-ink-muted);
    border-top: 1px solid var(--kin-border) !important;
    background: transparent;
    font-size: 0.825rem;
}

/* -----------------------------------------------------------------------------
   23. Focus rings everywhere
   -------------------------------------------------------------------------- */
:focus-visible {
    outline: none;
}
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.form-control:focus,
.form-select:focus {
    outline: none;
    box-shadow: var(--kin-shadow-focus);
}
