/* HTTPTunnel — base layer.
   Element defaults + Bootstrap overrides keyed to design tokens.
   No component selectors here — those live in components.css. */

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

html {
    -webkit-text-size-adjust: 100%;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
    color-scheme: light dark;
}

body {
    margin: 0;
    font-family: var(--font-sans);
    font-size: var(--fs-base);
    font-weight: 400;
    line-height: 1.55;
    color: var(--ink-0);
    background-color: var(--surface-0);
    transition: background-color var(--dur-base) var(--ease),
                color var(--dur-base) var(--ease);
    font-feature-settings: "ss01", "cv11";   /* Geist stylistic alts */
}

/* Headings — display font, tight tracking */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-display);
    color: var(--ink-0);
    font-weight: 600;
    letter-spacing: -0.02em;
    margin: 0 0 var(--sp-4);
    line-height: 1.15;
}

h1 { font-size: var(--fs-3xl); font-weight: 600; letter-spacing: -0.03em; }
h2 { font-size: var(--fs-2xl); }
h3 { font-size: var(--fs-xl); }
h4 { font-size: var(--fs-lg); }
h5 { font-size: var(--fs-md); }
h6 { font-size: var(--fs-sm); text-transform: uppercase; letter-spacing: 0.08em; color: var(--ink-2); }

p {
    margin: 0 0 var(--sp-4);
    color: var(--ink-1);
}

a {
    color: var(--accent);
    text-decoration: none;
    transition: color var(--dur-fast) var(--ease);
}
a:hover { color: var(--accent-press); text-decoration: underline; text-underline-offset: 3px; }
a:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: 2px; }

code, kbd, samp, pre, .mono {
    font-family: var(--font-mono);
    font-size: 0.92em;
    font-feature-settings: "ss06", "cv11";
}

code {
    background: var(--surface-2);
    color: var(--ink-0);
    padding: 0.1em 0.4em;
    border-radius: var(--radius-1);
    border: 1px solid var(--line-soft);
}

hr {
    border: 0;
    border-top: 1px solid var(--line);
    margin: var(--sp-6) 0;
    opacity: 1;
}

/* Selection */
::selection {
    background: var(--accent);
    color: var(--accent-on);
}

/* Scrollbar — discreet */
@supports (scrollbar-color: auto) {
    html { scrollbar-color: var(--ink-3) transparent; }
}
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
    background: var(--ink-3);
    border-radius: var(--radius-pill);
    border: 2px solid var(--surface-0);
}
::-webkit-scrollbar-thumb:hover { background: var(--ink-2); }

/* Bootstrap overrides — re-skin form controls/buttons to tokens */
.form-control,
.form-select {
    background-color: var(--surface-2);
    border: 1px solid var(--line);
    color: var(--ink-0);
    border-radius: var(--radius-2);
    padding: 0.625rem 0.875rem;
    font-size: var(--fs-sm);
    transition: border-color var(--dur-fast) var(--ease),
                box-shadow var(--dur-fast) var(--ease),
                background-color var(--dur-fast) var(--ease);
}
.form-control::placeholder { color: var(--ink-3); }
.form-control:focus,
.form-select:focus {
    background-color: var(--surface-1);
    border-color: var(--accent);
    color: var(--ink-0);
    outline: none;
    box-shadow: var(--focus-ring);
}
.form-control:disabled,
.form-select:disabled { color: var(--ink-3); background-color: var(--surface-1); }

textarea.form-control { font-family: var(--font-mono); font-size: var(--fs-sm); line-height: 1.5; }

.form-label {
    color: var(--ink-1);
    font-size: var(--fs-xs);
    font-weight: 500;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    margin-bottom: var(--sp-2);
}
.form-text { color: var(--ink-2); font-size: var(--fs-xs); }

.input-group-text {
    background-color: var(--surface-2);
    border: 1px solid var(--line);
    color: var(--ink-2);
    border-radius: var(--radius-2);
    font-size: var(--fs-sm);
}

/* Buttons — re-skinned */
.btn {
    font-family: var(--font-sans);
    font-weight: 500;
    font-size: var(--fs-sm);
    letter-spacing: 0;
    border-radius: var(--radius-2);
    padding: 0.625rem 1.125rem;
    border: 1px solid transparent;
    transition: background-color var(--dur-fast) var(--ease),
                border-color var(--dur-fast) var(--ease),
                color var(--dur-fast) var(--ease),
                transform var(--dur-fast) var(--ease);
    box-shadow: none;
}
.btn:focus-visible { box-shadow: var(--focus-ring); }
.btn:active { transform: translateY(1px); }

.btn-primary {
    background: var(--accent);
    color: var(--accent-on);
    border-color: var(--accent);
}
.btn-primary:hover { background: var(--accent-press); border-color: var(--accent-press); color: var(--accent-on); }

.btn-secondary,
.btn-outline-secondary {
    background: var(--surface-1);
    color: var(--ink-0);
    border-color: var(--line);
}
.btn-secondary:hover,
.btn-outline-secondary:hover { background: var(--surface-2); color: var(--ink-0); border-color: var(--line-strong); }

.btn-outline-primary {
    background: transparent;
    color: var(--accent);
    border-color: var(--accent);
}
.btn-outline-primary:hover { background: var(--accent); color: var(--accent-on); border-color: var(--accent); }

.btn-success { background: var(--ok); color: var(--accent-on); border-color: var(--ok); }
.btn-success:hover { background: var(--ok); filter: brightness(0.95); }
.btn-outline-info { background: transparent; color: var(--info); border-color: var(--info); }
.btn-outline-info:hover { background: var(--info); color: var(--accent-on); }

.btn-sm { padding: 0.4rem 0.75rem; font-size: var(--fs-xs); }
.btn-lg { padding: 0.875rem 1.5rem; font-size: var(--fs-base); }

/* Bootstrap card → minimal reskin */
.card {
    background: var(--surface-1);
    border: 1px solid var(--line);
    border-radius: var(--radius-3);
    color: var(--ink-0);
    box-shadow: none;
}
.card-header {
    background: transparent;
    border-bottom: 1px solid var(--line);
    color: var(--ink-0);
    padding: var(--sp-5) var(--sp-5) var(--sp-4);
}
.card-body { background: transparent; color: var(--ink-1); padding: var(--sp-5); }
.card-body p { color: var(--ink-1); }

/* Bootstrap utility text colors → tokens */
.text-muted { color: var(--ink-2) !important; }
.text-primary { color: var(--accent) !important; }
.text-success { color: var(--ok) !important; }
.text-info { color: var(--info) !important; }
.text-warning { color: var(--warn) !important; }
.text-danger { color: var(--bad) !important; }
.text-secondary { color: var(--ink-2) !important; }

/* Bootstrap bg utility → tokens (preserve semantics, drop hardcoded greys) */
.bg-light { background-color: var(--surface-2) !important; color: var(--ink-0) !important; }
.bg-dark { background-color: var(--surface-0) !important; color: var(--ink-0) !important; }
.bg-white { background-color: var(--surface-1) !important; }

/* Tables — minimal, tokens-only */
.table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--ink-0);
    color: var(--ink-0);
    margin: 0;
    border-color: var(--line);
}
.table > :not(caption) > * > * {
    background-color: transparent;
    color: inherit;
    border-bottom-color: var(--line);
    padding: var(--sp-3) var(--sp-4);
    vertical-align: middle;
}
.table thead th {
    font-family: var(--font-sans);
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ink-2);
    background: var(--surface-2);
    border-bottom: 1px solid var(--line-strong) !important;
    white-space: nowrap;
}

/* Progress bar */
.progress {
    background-color: var(--surface-2);
    border-radius: var(--radius-pill);
    overflow: hidden;
    height: 6px;
}
.progress-bar {
    background-color: var(--accent);
    transition: width var(--dur-base) var(--ease);
}

/* Focus visible globally */
:focus-visible { outline: none; box-shadow: var(--focus-ring); border-radius: var(--radius-1); }

/* Spinner color */
.spinner-border { color: var(--accent); border-width: 2px; }
