/* Login page stylesheet.

   One file in place of tokens.css, base.css, components.css and
   login.css, merged in that order so the cascade is unchanged.

   Sections: tokens, reset and primitives, shared components,
   login page, responsive. */

@import url('https://fonts.googleapis.com/css2?family=Cairo:wght@400;500;600;700;800;900&family=IBM+Plex+Mono:wght@400;500;600&display=swap');

:root {
    /* Brand */
    --brand-ink: #17120C; /* deepest bark, brand pane and sidebar */
    --brand-bark: #3A3126; /* logo wordmark brown */
    --brand-brown: #4F4232;
    --brand-gold: #C9A96A; /* map outline gold, the accent */
    --brand-gold-lift: #E0C68F;
    --brand-gold-deep: #A98741;
    --brand-olive: #8CA055; /* map green, lifted for dark backgrounds */
    --brand-olive-deep: #6E8043;
    --brand-sand: #D9C9A8;
    /* Surfaces, dark by default */
    --surface-0: #1C1710; /* app canvas */
    --surface-1: #272017; /* cards */
    --surface-2: #322A1F; /* raised and hover */
    --surface-3: #3D3427; /* inputs and wells */
    /* Text */
    --text-hi: #F7F2E8; /* headings, 13:1 on surface-1 */
    --text-mid: #D6CDBB; /* body, 8.5:1 */
    --text-low: #A2988A; /* captions, 4.8:1 */
    --text-on-gold: #241E16;
    /* Borders */
    --border: rgba(217,201,168,.13);
    --border-strong: rgba(217,201,168,.26);
    /* Status */
    --ok: #8CA055;
    --warn: #D4A24C;
    --stop: #D4837A;
    --info: #7FA8B8;
    /* Type */
    /* One family for the whole interface, so weight alone
     separates a heading from its text. */
    --font-display: 'Cairo', system-ui, sans-serif;
    --font-body: 'Cairo', system-ui, sans-serif;
    /* Used by .swatch__hex in the screens stylesheet. */
    --font-mono: 'IBM Plex Mono', ui-monospace, monospace;
    --fs-xs: 11.5px;
    --fs-sm: 13px;
    --fs-base: 14.5px;
    --fs-md: 16.5px;
    --fs-lg: 21px;
    --fs-xl: 28px;
    --fs-2xl: 34px;
    --fs-3xl: 42px;
    /* Space */
    --sp-1: 4px;
    --sp-2: 8px;
    --sp-3: 12px;
    --sp-4: 16px;
    --sp-5: 22px;
    --sp-6: 30px;
    --sp-7: 42px;
    --sp-8: 60px;
    /* Radius */
    --r-sm: 8px;
    --r-md: 13px;
    --r-lg: 20px;
    --r-pill: 999px;
    /* Elevation */
    --shadow-sm: 0 1px 2px rgba(0,0,0,.28);
    --shadow-md: 0 4px 10px rgba(0,0,0,.30), 0 18px 40px -18px rgba(0,0,0,.55);
    --shadow-lg: 0 8px 20px rgba(0,0,0,.34), 0 40px 80px -30px rgba(0,0,0,.7);
    /* Sidebar depth. A section header reads as a raised plate
     and the screens under it as a recess. */
    --nav-plate: rgba(217,201,168,.045);
    --nav-plate-lift: rgba(217,201,168,.085);
    --nav-hi: rgba(217,201,168,.10);
    --nav-shadow: 0 1px 2px rgba(0,0,0,.32);
    --nav-shadow-up: 0 2px 5px rgba(0,0,0,.38), 0 6px 16px -8px rgba(0,0,0,.5);
    --nav-well: rgba(0,0,0,.24);
    /* Motion */
    --ease: cubic-bezier(.3,.8,.3,1);
    --ease-out: cubic-bezier(.2,.8,.2,1);
    --dur-fast: .16s;
    --dur: .26s;
    --dur-slow: .42s;
    /* Layout */
    --sidebar-w: 288px;
    --topbar-h: 68px;
}


/* Reset, typography and shared primitives */

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

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

body {
    margin: 0;
    font-family: var(--font-body);
    font-size: var(--fs-base);
    line-height: 1.65;
    background: var(--surface-0);
    color: var(--text-mid);
    direction: rtl;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-feature-settings: "tnum" 1;
}

h1, h2, h3, h4, h5 {
    font-family: var(--font-display);
    font-weight: 800;
    color: var(--text-hi);
    margin: 0;
    line-height: 1.35;
    /* Arabic letters are already joined, so negative tracking
     squeezes the joins rather than the gaps. */
    letter-spacing: normal;
}

h1 {
    font-size: var(--fs-xl);
}

h2 {
    font-size: var(--fs-lg);
}

h3 {
    font-size: var(--fs-md);
}

p {
    margin: 0;
}

a {
    color: inherit;
    text-decoration: none;
}

ul {
    margin: 0;
    padding: 0;
    list-style: none;
}

button {
    font-family: inherit;
    color: inherit;
}

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

/* Numerals */
.num {
    font-variant-numeric: tabular-nums;
    letter-spacing: -.02em;
}

/* Eyebrow label */
.eyebrow {
    font-size: var(--fs-xs);
    font-weight: 600;
    letter-spacing: .16em;
    color: var(--brand-gold);
}

/* The seam. A stitched line used as divider, accent and
   loading state. */
.seam {
    display: block;
    width: 100%;
    height: 3px;
    overflow: visible;
}

    .seam line {
        stroke: var(--brand-gold);
        stroke-width: 2;
        stroke-dasharray: 7 6;
        stroke-linecap: round;
        opacity: .62;
    }

.seam--run line {
    animation: seam-stitch 1.5s linear infinite;
}

@keyframes seam-stitch {
    to {
        stroke-dashoffset: -26;
    }
}

/* Focus, always visible */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
    outline: 2px solid var(--brand-gold);
    outline-offset: 3px;
    border-radius: var(--r-sm);
}

/* Scrollbars */
* {
    scrollbar-width: thin;
    scrollbar-color: var(--border-strong) transparent;
}

    *::-webkit-scrollbar {
        width: 6px;
        height: 6px;
    }

    *::-webkit-scrollbar-track {
        background: transparent;
    }

    *::-webkit-scrollbar-thumb {
        background: var(--border-strong);
        border-radius: var(--r-pill);
    }

        *::-webkit-scrollbar-thumb:hover {
            background: var(--brand-sand);
        }

/* Reduced motion */
@media (prefers-reduced-motion:reduce) {
    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
}

/* Keeps content visible when AOS is absent */
.no-aos [data-aos] {
    opacity: 1 !important;
    transform: none !important;
}


/* Shared components */

/* Card */
.card {
    background: var(--surface-1);
    border: 1px solid var(--border);
    border-radius: var(--r-lg);
    padding: var(--sp-5);
}

.card__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-3);
    margin-bottom: var(--sp-5);
}

    .card__head h3 {
        font-size: var(--fs-md);
    }

    .card__head span {
        font-size: var(--fs-xs);
        color: var(--text-low);
    }

/* KPI */
.kpi-grid {
    display: grid;
    grid-template-columns: repeat(4,1fr);
    gap: var(--sp-4);
    margin-bottom: var(--sp-5);
}

.kpi {
    position: relative;
    overflow: hidden;
    background: var(--surface-1);
    border: 1px solid var(--border);
    border-radius: var(--r-lg);
    padding: var(--sp-5);
    transition: transform var(--dur) var(--ease), border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}

    .kpi:hover {
        transform: translateY(-3px);
        border-color: var(--border-strong);
        box-shadow: var(--shadow-md);
    }

.kpi__strip {
    position: absolute;
    inset-block-start: 0;
    inset-inline-end: 0;
    width: 3px;
    height: 100%;
}

.kpi--olive .kpi__strip {
    background: var(--brand-olive);
}

.kpi--gold .kpi__strip {
    background: var(--brand-gold);
}

.kpi--sand .kpi__strip {
    background: var(--brand-sand);
}

.kpi--stop .kpi__strip {
    background: var(--stop);
}

.kpi__cap {
    font-size: var(--fs-sm);
    color: var(--text-low);
    margin-bottom: var(--sp-3);
}

.kpi__val {
    font-family: var(--font-display);
    font-size: var(--fs-2xl);
    font-weight: 800;
    color: var(--text-hi);
    line-height: 1;
}

.kpi__sub {
    margin-top: var(--sp-2);
    font-size: var(--fs-xs);
    display: flex;
    align-items: center;
    gap: var(--sp-1);
    color: var(--text-low);
}

    .kpi__sub.is-up {
        color: var(--ok);
    }

    .kpi__sub.is-down {
        color: var(--stop);
    }

/* Chart, hourly bars */
.chart {
    display: flex;
    align-items: flex-end;
    gap: var(--sp-2);
    height: 216px;
    padding-top: var(--sp-3);
}

.chart__bar {
    flex: 1;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    gap: var(--sp-2);
}

.chart__stem {
    position: relative;
    width: 100%;
    border-radius: 6px 6px 2px 2px;
    background: linear-gradient(180deg, var(--brand-olive), var(--brand-olive-deep));
    transform-origin: bottom;
    animation: bar-grow .85s var(--ease-out) backwards;
    cursor: pointer;
    transition: filter var(--dur-fast) var(--ease);
}

.chart__bar:hover .chart__stem {
    filter: brightness(1.18);
}

.chart__bar--peak .chart__stem {
    background: linear-gradient(180deg, var(--brand-gold), var(--brand-gold-deep));
}

.chart__bar--rest .chart__stem {
    background: linear-gradient(180deg, var(--surface-3), var(--surface-2));
}

.chart__bar small {
    font-size: var(--fs-xs);
    color: var(--text-low);
}

@keyframes bar-grow {
    from {
        transform: scaleY(0);
    }
}

.chart__tip {
    position: absolute;
    inset-block-start: -32px;
    inset-inline-start: 50%;
    transform: translateX(50%);
    background: var(--surface-3);
    color: var(--text-hi);
    border: 1px solid var(--border-strong);
    font-size: var(--fs-xs);
    padding: 5px 10px;
    border-radius: var(--r-sm);
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transition: opacity var(--dur-fast) var(--ease);
}

.chart__bar:hover .chart__tip {
    opacity: 1;
}

/* Line rows */
.line {
    display: flex;
    align-items: center;
    gap: var(--sp-3);
    padding-block: var(--sp-3);
}

.line__name {
    font-size: var(--fs-base);
    font-weight: 600;
    color: var(--text-hi);
}

.line__meta {
    font-size: var(--fs-xs);
    color: var(--text-low);
    margin-top: 2px;
}

.line__end {
    margin-inline-start: auto;
    text-align: end;
}

.line__pct {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: var(--fs-md);
    color: var(--text-hi);
    margin-top: 3px;
}

.track {
    width: 100%;
    height: 5px;
    background: var(--surface-3);
    border-radius: var(--r-pill);
    overflow: hidden;
}

.track__fill {
    display: block;
    height: 100%;
    border-radius: var(--r-pill);
    background: linear-gradient(90deg, var(--brand-olive-deep), var(--brand-olive));
    animation: track-fill 1.1s var(--ease-out) backwards;
}

@keyframes track-fill {
    from {
        width: 0 !important;
    }
}

/* Badge */
.badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: var(--fs-xs);
    font-weight: 600;
    padding: 3px 10px;
    border-radius: var(--r-pill);
}

.badge--run {
    background: rgba(140,160,85,.16);
    color: var(--ok);
}

.badge--stop {
    background: rgba(201,112,100,.16);
    color: var(--stop);
}

.badge--warn {
    background: rgba(212,162,76,.16);
    color: var(--warn);
}

/* Activity feed */
.activity {
    display: flex;
    gap: var(--sp-3);
    padding-block: var(--sp-3);
}

    .activity + .activity {
        border-top: 1px solid var(--border);
    }

.activity__time {
    font-size: var(--fs-xs);
    color: var(--text-low);
    flex: none;
    padding-top: 2px;
    min-width: 38px;
}

.activity__text {
    font-size: var(--fs-sm);
    line-height: 1.7;
    color: var(--text-mid);
}

.activity__who {
    color: var(--text-low);
}

/* Grid */
.grid-2 {
    display: grid;
    grid-template-columns: 1.55fr 1fr;
    gap: var(--sp-4);
}

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

@media (max-width:1120px) {
    .kpi-grid {
        grid-template-columns: repeat(2,1fr);
    }

    .grid-2 {
        grid-template-columns: 1fr;
    }
}

@media (max-width:560px) {
    .kpi-grid {
        gap: var(--sp-3);
    }

    .kpi {
        padding: var(--sp-4);
    }

    .kpi__val {
        font-size: var(--fs-xl);
    }

    .chart {
        height: 176px;
        gap: 5px;
    }
}

/* Summary strip under the chart */
.summary {
    display: grid;
    grid-template-columns: repeat(4,1fr);
    gap: var(--sp-4);
    margin-top: var(--sp-5);
}

.summary__item small {
    display: block;
    font-size: var(--fs-xs);
    color: var(--text-low);
    margin-bottom: var(--sp-1);
}

.summary__item b {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: var(--fs-md);
    color: var(--text-hi);
}

    .summary__item b span {
        font-family: var(--font-body);
        font-weight: 400;
        font-size: var(--fs-xs);
        color: var(--text-low);
    }

@media (max-width:560px) {
    .summary {
        grid-template-columns: repeat(2,1fr);
        gap: var(--sp-3);
    }
}

/* Loading overlay, used by UpdateProgress */
.overlay {
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: grid;
    place-items: center;
    background: rgba(23,18,12,.72);
    backdrop-filter: blur(6px) saturate(140%);
    -webkit-backdrop-filter: blur(6px) saturate(140%);
    animation: overlay-in .22s var(--ease) both;
}

@keyframes overlay-in {
    from {
        opacity: 0;
    }
}

.overlay__box {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-3);
    padding: var(--sp-6) var(--sp-7);
    background: var(--surface-1);
    border: 1px solid var(--border-strong);
    border-radius: var(--r-lg);
    box-shadow: var(--shadow-lg);
    min-width: 210px;
    animation: overlay-rise .28s var(--ease-out) both;
}

@keyframes overlay-rise {
    from {
        opacity: 0;
        transform: translateY(10px) scale(.97);
    }
}

/* the spinning arc */
.overlay__needle {
    width: 46px;
    height: 46px;
}

.overlay__ring {
    fill: none;
    stroke: var(--surface-3);
    stroke-width: 5;
}

.overlay__arc {
    fill: none;
    stroke: var(--brand-gold);
    stroke-width: 5;
    stroke-linecap: round;
    stroke-dasharray: 41 122; /* 25% of circumference */
    transform-origin: center;
    animation: needle-spin 1s linear infinite;
}

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

.overlay__seam {
    width: 150px;
}

.overlay__text {
    font-family: var(--font-display);
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--text-mid);
    letter-spacing: .02em;
}

/* Icon button */
.icon-btn {
    width: 38px;
    height: 38px;
    flex: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--surface-2);
    border: 1px solid var(--border);
    border-radius: var(--r-sm);
    color: var(--text-low);
    transition: color var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
}

    .icon-btn:hover {
        color: var(--stop);
        border-color: var(--border-strong);
        background: var(--surface-3);
    }

    .icon-btn svg {
        width: 17px;
        height: 17px;
    }

/* Alerts, used by every screen and by the login page */
.alert {
    display: flex;
    align-items: flex-start;
    gap: var(--sp-2);
    padding: var(--sp-3) var(--sp-4);
    margin-bottom: var(--sp-4);
    border-radius: var(--r-md);
    font-size: var(--fs-sm);
    line-height: 1.7;
}

    /* Fixed icon size. flex:none stops it stretching, min-width
   stops it shrinking, and the explicit width and height are
   needed because the viewBox alone takes the container size. */
    .alert > svg {
        width: 18px;
        height: 18px;
        min-width: 18px;
        flex: none;
        margin-top: 2px;
    }

.alert--error {
    background: rgba(212,131,122,.12);
    border: 1px solid rgba(212,131,122,.32);
    color: var(--stop);
}

.alert--ok {
    background: rgba(140,160,85,.12);
    border: 1px solid rgba(140,160,85,.32);
    color: var(--ok);
}

.alert--warn {
    background: rgba(212,162,76,.12);
    border: 1px solid rgba(212,162,76,.32);
    color: var(--warn);
}

/* ASP.NET wraps CheckBox in a span */
.check span {
    display: inline-flex;
    align-items: center;
}

    .check span label {
        display: none;
    }

.filter-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--sp-3);
    margin-bottom: var(--sp-4);
    padding: var(--sp-3) var(--sp-4);
    background: var(--surface-1);
    border: 1px solid var(--border);
    border-radius: var(--r-md);
}

.filter-bar__field {
    flex: 0 1 190px;
    min-width: 0;
}

    .filter-bar__field .field__label {
        display: block;
        margin-bottom: 6px;
        font-size: var(--fs-xs);
        color: var(--text-low);
    }

    .filter-bar__field .field__input {
        width: 100%;
        min-width: 0;
    }

.filter-bar__clear {
    flex: 0 0 auto;
    white-space: nowrap;
}

/* At the far end so the eye finds it after the controls. */
.filter-bar__note {
    margin-inline-start: auto;
    font-size: var(--fs-xs);
    color: var(--brand-gold);
    white-space: nowrap;
}

@media (max-width: 620px) {
    .filter-bar__field {
        flex: 1 1 100%;
    }

    .filter-bar__note {
        margin-inline-start: 0;
        width: 100%;
    }
}

.icon-btn--ok {
    color: var(--ok);
    border-color: rgba(140,160,85,.32);
}

    .icon-btn--ok:hover {
        color: var(--text-hi);
        background: var(--ok);
        border-color: var(--ok);
    }


/* Login page */

.login {
    min-height: 100vh;
    display: grid;
    grid-template-columns: 1.02fr .98fr;
    background: var(--surface-0);
}

/* The form */
.login__form {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--sp-7) var(--sp-6);
    position: relative;
    background: var(--surface-1);
}

    /* woven texture, very faint */
    .login__form::before {
        content: "";
        position: absolute;
        inset: 0;
        pointer-events: none;
        background-image: repeating-linear-gradient(90deg, rgba(217,201,168,.028) 0 1px, transparent 1px 8px), repeating-linear-gradient(0deg, rgba(217,201,168,.028) 0 1px, transparent 1px 8px);
    }
    /* a warm pool of light behind the card */
    .login__form::after {
        content: "";
        position: absolute;
        pointer-events: none;
        width: 620px;
        height: 620px;
        border-radius: 50%;
        inset-block-start: -180px;
        inset-inline-start: -200px;
        background: radial-gradient(circle, rgba(201,169,106,.10), transparent 68%);
    }

.login__card {
    width: 100%;
    max-width: 396px;
    position: relative;
    z-index: 1;
}

.login__brand {
    margin-bottom: var(--sp-7);
}

    .login__brand img {
        height: 56px;
        width: auto;
        opacity: .96;
    }

.login__title {
    font-size: var(--fs-2xl);
    margin-bottom: var(--sp-2);
}

.login__sub {
    color: var(--text-low);
    font-size: var(--fs-base);
    margin-bottom: var(--sp-6);
}

/* Fields */
.field {
    margin-bottom: var(--sp-4);
}

.field__label {
    display: block;
    font-size: var(--fs-sm);
    font-weight: 600;
    color: var(--text-mid);
    margin-bottom: var(--sp-2);
}

.field__control {
    position: relative;
}

    .field__control svg {
        position: absolute;
        inset-inline-start: 15px;
        top: 50%;
        transform: translateY(-50%);
        width: 17px;
        height: 17px;
        color: var(--text-low);
        pointer-events: none;
        transition: color var(--dur-fast) var(--ease);
    }

.field__input {
    width: 100%;
    height: 52px;
    padding-inline-start: 44px;
    padding-inline-end: 16px;
    font-family: var(--font-body);
    font-size: var(--fs-base);
    color: var(--text-hi);
    background: var(--surface-3);
    border: 1px solid var(--border);
    border-radius: var(--r-md);
    transition: border-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease), background var(--dur-fast) var(--ease);
}

    .field__input::placeholder {
        color: var(--text-low);
        opacity: .62;
    }

    .field__input:hover {
        border-color: var(--border-strong);
    }

    .field__input:focus {
        outline: none;
        background: var(--surface-2);
        border-color: var(--brand-gold);
        box-shadow: 0 0 0 3.5px rgba(201,169,106,.16);
    }

        .field__input:focus ~ svg,
        .field__input:not(:placeholder-shown) ~ svg {
            color: var(--brand-gold);
        }

/* Row: remember and forgot */
.login__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: var(--sp-5) 0;
}

.check {
    display: flex;
    align-items: center;
    gap: var(--sp-2);
    cursor: pointer;
    font-size: var(--fs-sm);
    color: var(--text-mid);
}

    .check input {
        appearance: none;
        -webkit-appearance: none;
        width: 17px;
        height: 17px;
        flex: none;
        cursor: pointer;
        background: var(--surface-3);
        border: 1px solid var(--border-strong);
        border-radius: 5px;
        display: grid;
        place-content: center;
        transition: background var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);
    }

        .check input::before {
            content: "";
            width: 9px;
            height: 9px;
            transform: scale(0);
            transition: transform var(--dur-fast) var(--ease);
            box-shadow: inset 1em 1em var(--text-on-gold);
            clip-path: polygon(14% 44%, 0 65%, 43% 100%, 100% 16%, 80% 0%, 41% 62%);
        }

        .check input:checked {
            background: var(--brand-gold);
            border-color: var(--brand-gold);
        }

            .check input:checked::before {
                transform: scale(1);
            }

.login__link {
    font-size: var(--fs-sm);
    color: var(--brand-gold);
    font-weight: 600;
    border-bottom: 1px solid transparent;
    transition: border-color var(--dur-fast) var(--ease);
}

    .login__link:hover {
        border-bottom-color: var(--brand-gold);
    }

/* Submit */
.btn-primary {
    width: 100%;
    height: 54px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--sp-2);
    background: var(--brand-gold);
    color: var(--text-on-gold);
    border: 0;
    border-radius: var(--r-md);
    font-family: var(--font-display);
    font-size: var(--fs-md);
    font-weight: 700;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    transition: transform var(--dur-fast) var(--ease), box-shadow var(--dur) var(--ease), background var(--dur) var(--ease);
}

    .btn-primary:hover {
        background: var(--brand-gold-lift);
        transform: translateY(-2px);
        box-shadow: 0 14px 28px -12px rgba(201,169,106,.55);
    }

    .btn-primary:active {
        transform: translateY(0);
    }

    .btn-primary svg {
        width: 17px;
        height: 17px;
        transition: transform var(--dur) var(--ease);
    }

    .btn-primary:hover svg {
        transform: translateX(-5px);
    }

.login__foot {
    margin-top: var(--sp-6);
    padding-top: var(--sp-5);
    border-top: 1px solid var(--border);
}

    .login__foot p {
        font-size: var(--fs-xs);
        color: var(--text-low);
        line-height: 1.9;
    }

/* Brand pane */
.login__brandpane {
    position: relative;
    overflow: hidden;
    background: var(--brand-ink);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    padding: var(--sp-7) var(--sp-7) var(--sp-8);
}

/* the map mark, oversized and cropped */
.login__map {
    position: absolute;
    inset-block-end: -26%;
    inset-inline-start: -26%;
    width: 66%;
    opacity: .075;
    animation: map-drift 30s ease-in-out infinite alternate;
}

@keyframes map-drift {
    to {
        transform: translate3d(3%,2.5%,0) scale(1.05);
    }
}

.login__glow {
    position: absolute;
    pointer-events: none;
    width: 680px;
    height: 680px;
    border-radius: 50%;
    inset-block-end: -280px;
    inset-inline-end: -200px;
    background: radial-gradient(circle, rgba(140,160,85,.26), transparent 66%);
}

.login__mark {
    position: relative;
    z-index: 1;
}

    .login__mark img {
        height: 36px;
        opacity: .9;
    }

.login__pitch {
    position: relative;
    z-index: 1;
    max-width: 440px;
}

    .login__pitch h2 {
        font-size: var(--fs-3xl);
        line-height: 1.34;
        color: var(--text-hi);
        margin-bottom: var(--sp-5);
    }

        .login__pitch h2 em {
            font-style: normal;
            color: var(--brand-gold);
        }

    .login__pitch p {
        font-size: var(--fs-base);
        line-height: 2;
        color: var(--text-low);
    }

.login__seam {
    margin: var(--sp-5) 0;
}

/* production floor, abstracted line rhythm */
.floor {
    position: relative;
    z-index: 1;
    display: flex;
    gap: 5px;
    align-items: flex-end;
    height: 56px;
    margin-top: var(--sp-6);
}

    .floor span {
        flex: 1;
        border-radius: 2px 2px 0 0;
        background: rgba(201,169,106,.34);
        animation: floor-pulse 3.6s ease-in-out infinite;
    }

        .floor span:nth-child(3n) {
            background: rgba(224,198,143,.72);
        }

        .floor span:nth-child(5n) {
            background: rgba(150,172,92,.78);
        }

@keyframes floor-pulse {
    0%,100% {
        height: 32%;
        opacity: .6;
    }

    50% {
        height: 100%;
        opacity: 1;
    }
}

.login__stats {
    position: relative;
    z-index: 1;
    display: flex;
    gap: var(--sp-7);
    margin-top: var(--sp-5);
}

    .login__stats b {
        display: block;
        font-family: var(--font-display);
        font-size: var(--fs-xl);
        color: var(--text-hi);
        font-weight: 800;
        line-height: 1.2;
    }

    .login__stats small {
        font-size: var(--fs-xs);
        color: var(--text-low);
        letter-spacing: .04em;
    }

/* Responsive */
@media (max-width:980px) {
    .login {
        grid-template-columns: 1fr;
    }

    .login__brandpane {
        order: -1;
        padding: var(--sp-6) var(--sp-5) var(--sp-7);
    }

    .login__pitch h2 {
        font-size: var(--fs-xl);
    }

    .login__map {
        width: 130%;
        opacity: .12;
    }

    .floor {
        height: 38px;
        margin-top: var(--sp-5);
    }

    .login__form {
        padding: var(--sp-6) var(--sp-4) var(--sp-8);
    }

    .login__stats {
        gap: var(--sp-5);
    }
}
