/* ── Open Sans self-hosted ── */
@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 300; font-display: swap; src: url('/fonts/OpenSans-Light.ttf') format('truetype'); }
@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url('/fonts/OpenSans-Regular.ttf') format('truetype'); }
@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url('/fonts/OpenSans-SemiBold.ttf') format('truetype'); }
@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url('/fonts/OpenSans-Bold.ttf') format('truetype'); }
@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 800; font-display: swap; src: url('/fonts/OpenSans-ExtraBold.ttf') format('truetype'); }
@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 400; font-display: swap; src: url('/fonts/OpenSans-Italic.ttf') format('truetype'); }

/* ── Design tokens ── */
:root {
    --z-font:       'Open Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
    --z-ink:        #212121;
    --z-ink-2:      #585858;
    --z-ink-3:      #707070;
    --z-ink-4:      #B1B1B1;
    --z-blue:       #2680EB;
    --z-blue-hover: #1a6fd4;
    --z-orange:     #E8781C;
    --z-border:     #EEEEEE;
    --z-bg:         #F8F8F8;

    --z-fs-lg:      24px;
    --z-fs-14:      14px;
    --z-fs-13:      13px;
    --z-fs-11:      11px;

    --z-fw-light:   300;
    --z-fw-regular: 400;
    --z-fw-semi:    600;
    --z-fw-bold:    700;
    --z-fw-xbold:   800;

    --z-lh-tight:   1.0;
    --z-lh-body:    1.4;

    --t-accent:        #66164B;
    --t-accent-hover:  #4a0f35;
    --t-card-pad:      3rem;
    --t-field-gap:     1rem;
}

/* ── Base ── */
html {
    position: relative;
    min-height: 100%;
    font-size: 16px;
}
body {
    font-family: var(--z-font);
    font-size: var(--z-fs-13);
    font-weight: var(--z-fw-regular);
    color: var(--z-ink-2);
    line-height: var(--z-lh-body);
    background-color: var(--z-bg);
    margin: 0;
}

/* ── Navbar ── */
.navbar {
    background-color: var(--z-ink-2) !important;
    border-bottom-color: var(--z-ink-2) !important;
}
.navbar-brand {
    font-family: var(--z-font);
    font-size: var(--z-fs-14);
    font-weight: var(--z-fw-regular);
    color: #fff !important;
    line-height: var(--z-lh-tight);
}
.navbar-brand img {
    height: 25px;
    width: auto;
    vertical-align: middle;
}

/* ── Card ── */
.card { background: #ffffff; }
.card-body { padding: var(--t-card-pad) !important; }

/* ── Titles ── */
h2.card-title {
    font-family: var(--z-font);
    font-size: var(--z-fs-lg);
    font-weight: var(--z-fw-light);
    color: var(--z-ink-2);
    line-height: var(--z-lh-tight);
}

.z-welcome-pre {
    display: block;
    font-family: var(--z-font);
    font-size: 24px;
    font-weight: var(--z-fw-light);
    color: var(--z-ink-2);
    text-align: center;
    width: 100%;
    margin-bottom: 4px;
}
.z-welcome-sub {
    font-weight: var(--z-fw-semi);
    font-size: 14px;
    color: var(--z-ink-3);
    text-align: center;
    margin: 0 0 15px;
    width: 100%;
}

/* ── Body text ── */
p, .card-body p {
    font-family: var(--z-font);
    font-size: var(--z-fs-13);
    font-weight: var(--z-fw-regular);
    line-height: var(--z-lh-body);
}
.text-muted { color: var(--z-ink-3) !important; }

/* ── Form labels & inputs ── */
.form-label {
    font-family: var(--z-font);
    font-size: var(--z-fs-11);
    font-weight: var(--z-fw-semi);
    color: var(--z-ink-2);
    line-height: var(--z-lh-tight);
}
.form-control {
    font-family: var(--z-font);
    font-size: var(--z-fs-13);
    font-weight: var(--z-fw-regular);
    color: var(--z-ink);
    line-height: var(--z-lh-tight);
    height: 34px;
}
.form-control::placeholder {
    color: var(--z-ink-4);
    font-weight: var(--z-fw-regular);
}
.mb-3 { margin-bottom: var(--t-field-gap) !important; }

/* ── Buttons ── */
.btn {
    font-family: var(--z-font);
    font-size: var(--z-fs-13);
    font-weight: var(--z-fw-semi);
    line-height: var(--z-lh-tight);
    height: 34px;
}
.btn-primary {
    background-color: var(--z-blue) !important;
    border-color: var(--z-blue) !important;
    color: #fff !important;
}
.btn-primary:hover, .btn-primary:focus {
    background-color: var(--z-blue-hover) !important;
    border-color: var(--z-blue-hover) !important;
}
.btn-link {
    font-weight: var(--z-fw-regular);
    color: var(--z-blue) !important;
    font-size: var(--z-fs-11);
}

/* ── Links ── */
a, .small {
    font-family: var(--z-font);
    font-size: var(--z-fs-11);
    line-height: var(--z-lh-body);
    color: var(--z-blue);
}

/* ── Alerts ── */
.alert {
    font-family: var(--z-font);
    font-size: var(--z-fs-13);
    font-weight: var(--z-fw-regular);
    line-height: var(--z-lh-body);
}

/* ── HR ── */
hr { border-color: var(--z-border); }

/* ── Focus ring ── */
.btn:focus, .btn:active:focus, .btn-link.nav-link:focus,
.form-control:focus, .form-check-input:focus {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--z-blue) 35%, transparent);
}

/* ── Footer ── */
.z-footer {
    position: static;
    border: none;
    margin-top: 20px;
    margin-bottom: 32px;
    padding: 0;
    text-align: center;
    width: 100%;
    display: block;
}
.z-footer small {
    color: var(--z-ink-2);
    font-family: var(--z-font);
    font-size: var(--z-fs-11);
}

/* ── Help icon with tooltip ── */
.input-help-wrap {
    position: relative;
}
.input-help-wrap .form-control {
    padding-right: 36px;
}
.input-help-wrap .help-icon {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    width: 14px;
    height: 14px;
    cursor: default;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
}
.input-help-wrap .help-icon svg {
    display: block;
    width: 14px;
    height: 14px;
}
.input-help-wrap .help-tooltip {
    position: absolute;
    left: calc(100% + 10px);
    top: 50%;
    transform: translateY(-50%);
    background: #444;
    color: #fff;
    font-size: 11px;
    font-family: var(--z-font);
    font-weight: 400;
    border-radius: 4px;
    padding: 6px 10px;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity .15s;
    z-index: 200;
}
.input-help-wrap .help-tooltip::before {
    content: '';
    position: absolute;
    right: 100%;
    top: 50%;
    transform: translateY(-50%);
    border: 5px solid transparent;
    border-right-color: #444;
}
.input-help-wrap .help-icon:hover .help-tooltip {
    opacity: 1;
}

/* ── Error page (401 style) ── */
.z-error-code {
    font-family: var(--z-font);
    font-size: 72px;
    font-weight: var(--z-fw-xbold);
    color: var(--z-ink-2);
    text-align: center;
    width: 100%;
    display: block;
    margin-bottom: 8px;
}
.z-error-code .z-error-num {
    color: var(--z-orange);
}
.z-error-title {
    font-family: var(--z-font);
    font-size: 24px;
    font-weight: var(--z-fw-light);
    color: var(--z-ink-2);
    text-align: center;
    width: 100%;
    display: block;
    margin-bottom: 12px;
}
.z-error-text {
    font-family: var(--z-font);
    font-size: 14px;
    font-weight: var(--z-fw-regular);
    color: #9CA3AF;
    text-align: center;
    width: 100%;
    display: block;
}
