/*
 * andbold Git (git.andbold.studio): the company look on top of Gitea's own themes (custom/header.tmpl links it
 * after the gitea-* theme). Same tokens as andbold Cloud and the company login: Inter, the company blue #0F6CBD,
 * Fluent 2 fields and buttons (4 px corners), a light frame #EFF2F6 around white cards; dark follows the device in
 * gitea-auto. Only Gitea's CSS variables and a few plain classes are touched, so updates rarely break it.
 * Source: /root/git-golive/git/custom/public/assets/andbold/andbold.css (pve) → VM 180 /opt/gitea/custom.
 */
@font-face { font-family: "Inter AB"; font-style: normal; font-weight: 400; font-display: swap;
  src: url("./fonts/Inter-Regular.woff2") format("woff2"); }
@font-face { font-family: "Inter AB"; font-style: normal; font-weight: 600; font-display: swap;
  src: url("./fonts/Inter-SemiBold.woff2") format("woff2"); }

/* ---------- 1. Light tokens ---------- */
:root {
  --fonts-proportional: "Inter AB", -apple-system, "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;
  --fonts-override: "Inter AB";
  --border-radius: 4px;
  --border-radius-medium: 6px;
  --border-radius-large: 8px;

  --ab-blue: #0F6CBD;
  --ab-frame: #EFF2F6;
  --ab-card-shadow: 0 0 2px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.14);

  --color-primary: #0F6CBD;
  --color-primary-contrast: #FFFFFF;
  --color-primary-dark-1: #115EA3;
  --color-primary-dark-2: #0F548C;
  --color-primary-dark-3: #0C4A7C;
  --color-primary-dark-4: #0A3F6B;
  --color-primary-dark-5: #082F50;
  --color-primary-dark-6: #061F35;
  --color-primary-dark-7: #04101C;
  --color-primary-light-1: #2886DE;
  --color-primary-light-2: #479EF5;
  --color-primary-light-3: #62ABF5;
  --color-primary-light-4: #96C6FA;
  --color-primary-light-5: #B4D6FA;
  --color-primary-light-6: #CFE4FA;
  --color-primary-light-7: #EBF3FC;
  --color-primary-alpha-10: #0F6CBD19;
  --color-primary-alpha-20: #0F6CBD33;
  --color-primary-alpha-30: #0F6CBD4B;
  --color-primary-alpha-40: #0F6CBD66;
  --color-primary-alpha-50: #0F6CBD80;
  --color-primary-alpha-60: #0F6CBD99;
  --color-primary-alpha-70: #0F6CBDB3;
  --color-primary-alpha-80: #0F6CBDCC;
  --color-primary-alpha-90: #0F6CBDE1;
  --color-primary-hover: #115EA3;
  --color-primary-active: #0C3B5E;
  --color-accent: #0F6CBD;
  --color-small-accent: #CFE4FA;
  --color-highlight-fg: #62ABF5;
  --color-highlight-bg: #EBF3FC;
  --color-reaction-active-bg: #0F6CBD26;
  --color-reaction-hover-bg: #0F6CBD38;
  --color-blue: #0F6CBD;

  --color-body: #FFFFFF;
  --color-nav-bg: var(--ab-frame);
  --color-nav-hover-bg: #E1E6EE;
  --color-header-wrapper: #F7F9FB;
  --color-footer: var(--ab-frame);
  --color-box-header: #F5F7FA;
  --color-box-body: #FFFFFF;
  --color-menu: #FFFFFF;
  --color-card: #FFFFFF;
  --color-secondary-bg: #F5F7FA;
  --color-input-border: #D1D1D1;
  --color-input-border-hover: #C7C7C7;
  --color-text: #242424;
  --color-text-light: #424242;
  --color-text-light-1: #4F4F4F;
  --color-text-light-2: #616161;
  --color-text-light-3: #707070;
  --color-selection-bg: #0F6CBD;
  --color-indicator-active: #0F6CBD;
}

/* ---------- 2. Dark tokens (andbold-dark always, andbold-auto when the device is dark) ---------- */
html[data-theme="gitea-dark"] {
  --ab-frame: #1B1C1F;
  --ab-card-shadow: 0 0 2px rgba(0,0,0,.24), 0 1px 2px rgba(0,0,0,.28);
  --color-primary: #479EF5;
  --color-primary-contrast: #0A1220;
  --color-primary-dark-1: #62ABF5;
  --color-primary-dark-2: #77B7F7;
  --color-primary-dark-3: #96C6FA;
  --color-primary-dark-4: #B4D6FA;
  --color-primary-dark-5: #CFE4FA;
  --color-primary-dark-6: #EBF3FC;
  --color-primary-dark-7: #F5FAFE;
  --color-primary-light-1: #2886DE;
  --color-primary-light-2: #1C76C9;
  --color-primary-light-3: #0F6CBD;
  --color-primary-light-4: #115EA3;
  --color-primary-light-5: #0F548C;
  --color-primary-light-6: #0C3B5E;
  --color-primary-light-7: #082338;
  --color-primary-alpha-10: #479EF519;
  --color-primary-alpha-20: #479EF533;
  --color-primary-alpha-30: #479EF54B;
  --color-primary-alpha-40: #479EF566;
  --color-primary-alpha-50: #479EF580;
  --color-primary-alpha-60: #479EF599;
  --color-primary-alpha-70: #479EF5B3;
  --color-primary-alpha-80: #479EF5CC;
  --color-primary-alpha-90: #479EF5E1;
  --color-primary-hover: #62ABF5;
  --color-primary-active: #77B7F7;
  --color-accent: #479EF5;
  --color-small-accent: #0C3B5E;
  --color-highlight-fg: #0F6CBD;
  --color-highlight-bg: #479EF526;
  --color-blue: #479EF5;
  --color-body: #1F1F1F;
  --color-nav-bg: var(--ab-frame);
  --color-nav-hover-bg: #2E2F33;
  --color-header-wrapper: #232427;
  --color-footer: var(--ab-frame);
  --color-box-header: #2A2B2F;
  --color-box-body: #26272B;
  --color-box-body-highlight: #303136;
  --color-menu: #2A2B2F;
  --color-card: #26272B;
  --color-secondary-bg: #2A2B2F;
  --color-input-background: #2A2B2F;
  --color-input-toggle-background: #2A2B2F;
  --color-input-border: #3D3E43;
  --color-input-border-hover: #4A4B51;
  --color-text: #E6E6E6;
  --color-text-light: #D1D1D1;
  --color-text-light-1: #C7C7C7;
  --color-text-light-2: #ADADAD;
  --color-text-light-3: #9E9E9E;
  --color-selection-bg: #479EF5;
  --color-selection-fg: #0A1220;
  --color-markup-code-block: #1B1C1F;
  --color-markup-code-inline: #2E2F33;
  --color-code-bg: #1B1C1F;
  --color-indicator-active: #479EF5;
  --color-reaction-active-bg: #479EF533;
  --color-reaction-hover-bg: #479EF54B;
}
@media (prefers-color-scheme: dark) {
  html[data-theme="gitea-auto"] {
    --ab-frame: #1B1C1F;
    --ab-card-shadow: 0 0 2px rgba(0,0,0,.24), 0 1px 2px rgba(0,0,0,.28);
    --color-primary: #479EF5;
    --color-primary-contrast: #0A1220;
    --color-primary-dark-1: #62ABF5;
    --color-primary-dark-2: #77B7F7;
    --color-primary-dark-3: #96C6FA;
    --color-primary-dark-4: #B4D6FA;
    --color-primary-dark-5: #CFE4FA;
    --color-primary-dark-6: #EBF3FC;
    --color-primary-dark-7: #F5FAFE;
    --color-primary-light-1: #2886DE;
    --color-primary-light-2: #1C76C9;
    --color-primary-light-3: #0F6CBD;
    --color-primary-light-4: #115EA3;
    --color-primary-light-5: #0F548C;
    --color-primary-light-6: #0C3B5E;
    --color-primary-light-7: #082338;
    --color-primary-alpha-10: #479EF519;
    --color-primary-alpha-20: #479EF533;
    --color-primary-alpha-30: #479EF54B;
    --color-primary-alpha-40: #479EF566;
    --color-primary-alpha-50: #479EF580;
    --color-primary-alpha-60: #479EF599;
    --color-primary-alpha-70: #479EF5B3;
    --color-primary-alpha-80: #479EF5CC;
    --color-primary-alpha-90: #479EF5E1;
    --color-primary-hover: #62ABF5;
    --color-primary-active: #77B7F7;
    --color-accent: #479EF5;
    --color-small-accent: #0C3B5E;
    --color-highlight-fg: #0F6CBD;
    --color-highlight-bg: #479EF526;
    --color-blue: #479EF5;
    --color-body: #1F1F1F;
    --color-nav-bg: var(--ab-frame);
    --color-nav-hover-bg: #2E2F33;
    --color-header-wrapper: #232427;
    --color-footer: var(--ab-frame);
    --color-box-header: #2A2B2F;
    --color-box-body: #26272B;
    --color-box-body-highlight: #303136;
    --color-menu: #2A2B2F;
    --color-card: #26272B;
    --color-secondary-bg: #2A2B2F;
    --color-input-background: #2A2B2F;
    --color-input-toggle-background: #2A2B2F;
    --color-input-border: #3D3E43;
    --color-input-border-hover: #4A4B51;
    --color-text: #E6E6E6;
    --color-text-light: #D1D1D1;
    --color-text-light-1: #C7C7C7;
    --color-text-light-2: #ADADAD;
    --color-text-light-3: #9E9E9E;
    --color-selection-bg: #479EF5;
    --color-selection-fg: #0A1220;
    --color-markup-code-block: #1B1C1F;
    --color-markup-code-inline: #2E2F33;
    --color-code-bg: #1B1C1F;
    --color-indicator-active: #479EF5;
    --color-reaction-active-bg: #479EF533;
    --color-reaction-hover-bg: #479EF54B;
  }
}

/* ---------- 3. Frame, cards, navbar ---------- */
body { font-feature-settings: "cv11", "ss01"; -webkit-font-smoothing: antialiased; }
#navbar { border-bottom: 1px solid var(--color-secondary); min-height: 48px; }
#navbar .navbar-left > a.item:first-child img { border-radius: 6px; }
.ui.segment, .ui.attached.segment, .ui.card, .ui.cards > .card, .repository .ui.table, .flex-list, .ui.attached.table {
  border-color: var(--color-secondary);
}
.ui.top.attached.header, .ui.attached.header { border-color: var(--color-secondary); }
.page-content > .ui.container > .ui.segment, .user.settings .ui.segment, .admin .ui.segment { box-shadow: var(--ab-card-shadow); }
.page-footer { border-top: 1px solid var(--color-secondary); color: var(--color-text-light-2); }

/* ---------- 4. Fluent 2 buttons and fields ---------- */
.ui.button, .ui.buttons .button { font-weight: 600; border-radius: 4px; }
.ui.primary.button, .ui.primary.buttons .button { box-shadow: none; }
.ui.form input:not([type="checkbox"]):not([type="radio"]),
.ui.form textarea, .ui.input > input, .ui.selection.dropdown {
  border-radius: 4px;
  border-bottom-color: var(--color-text-light-3);
}
.ui.form input:not([type="checkbox"]):not([type="radio"]):focus,
.ui.form textarea:focus, .ui.input > input:focus {
  border-color: var(--color-input-border);
  border-bottom-color: var(--color-primary);
  box-shadow: inset 0 -1px 0 0 var(--color-primary);
}
.ui.label { border-radius: 4px; }

/* ---------- 5. Sign-in v6 "sun study": the TeamOS sign-in (same design as auth.andbold.studio; keep both in step) --
 * Wide screens: the sun study on the left, full height (andbold/sunstudy/: Malta's real light on a small courtyard
 * model, the white wordmark, the time, sunrise/sunset, a greeting); the form on ivory on the right: a mono kicker
 * with a burnt-orange rule, "Welcome back", 56 px fields with the label inside and an icon, a 48 px burnt-orange
 * button. Tablets: a sun-study band on top; phones: a short band. Light only, like the TeamOS sign-in.
 * Geist + Geist Mono (OFL). Palette (TeamOS sign-in): ivory #F7F6F3, charcoal #171717, secondary #6E6A66, dividers
 * #E5E2DD, control borders #8F8A84, burnt orange #B94E1B (hover #9C4116, pressed #853712), error #A3261D.
 * Previous version: .andbold.css.before-sunstudy-v6. */
body:has(.ab-sw) #navbar,
body:has(.ab-sw) .page-footer { display: none !important; }
body:has(.ab-sw) .full.height { padding: 0 !important; margin: 0 !important; min-height: 0 !important; }
.ab-sw {
  --sw-panel: clamp(440px, 52vw, 860px);
  --sw-sans: "Geist AB", ui-sans-serif, system-ui, sans-serif;
  --sw-mono: "Geist Mono AB", ui-monospace, SFMono-Regular, Menlo, monospace;
  --sw-bg: #F7F6F3; --sw-text: #171717; --sw-muted: #6E6A66; --sw-line: #E5E2DD; --sw-control: #8F8A84; --sw-icon: #77736F;
  --sw-accent: #B94E1B; --sw-accent-hover: #9C4116; --sw-accent-active: #853712; --sw-error: #A3261D;
  display: grid;
  grid-template-columns: var(--sw-panel) minmax(0, 1fr);
  min-height: 100vh; min-height: 100dvh;
  margin: 0 !important; padding: 0 !important;
  background: var(--sw-bg); color: var(--sw-text);
  font-family: var(--sw-sans); -webkit-font-smoothing: antialiased;
  color-scheme: light;
}
html:has(.ab-sw), body:has(.ab-sw) { background: #F7F6F3; }

/* The sun study, full height on the left */
.ab-sw > .sw-panel {
  position: sticky; top: 0; align-self: start;
  height: 100vh; height: 100dvh; margin: 0 !important;
  animation: sw-fade .7s ease-out both;
}

/* The form side */
.ab-sw > .sw-main { margin: 0 !important; }
.sw-main { display: flex; flex-direction: column; align-items: center; padding: 48px 32px 32px; }
.sw-form { width: min(100%, 400px); margin: auto 0; display: flex; flex-direction: column; gap: 22px; animation: sw-rise .6s cubic-bezier(.2, .7, .2, 1) .05s both; }
.sw-kicker {
  position: relative; margin: 0 0 8px; padding-bottom: 14px;
  font-family: var(--sw-mono); font-size: 11px; font-weight: 500; line-height: 16px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--sw-muted); border-bottom: 1px solid var(--sw-line);
}
.sw-kicker::after { content: ""; position: absolute; left: 0; bottom: -1px; width: 48%; height: 2px; background: var(--sw-accent); }
.sw-head { margin-bottom: 6px; }
.sw-title { margin: 0; font-family: var(--sw-sans); font-size: 32px; font-weight: 600; line-height: 38px; letter-spacing: -0.035em; color: var(--sw-text); }
.sw-sub { margin: 10px 0 0; font-size: 15px; line-height: 24px; color: var(--sw-muted); }
.sw-fields.ui.form { display: flex; flex-direction: column; gap: 14px; }
.sw-fields.ui.form .field { margin: 0 !important; }
/* A field with its label inside: floated small at the top, resting in the middle only while empty and unfocused. */
.sw-float { position: relative; }
.sw-fields.ui.form .sw-float input {
  display: block; width: 100%; height: 56px; padding: 20px 14px 6px 44px !important; margin: 0;
  font-family: var(--sw-sans); font-size: 15px; line-height: 24px;
  color: var(--sw-text) !important; background: #FFFFFF !important;
  border: 1px solid var(--sw-control) !important; border-radius: 8px !important; box-shadow: none !important;
  transition: border-color .18s, box-shadow .18s;
}
.sw-fields.ui.form .sw-float input::placeholder { color: transparent; }
.sw-fields.ui.form .sw-float input:hover, .sw-fields.ui.form .sw-float input:focus { border-color: var(--sw-text) !important; }
.sw-fields.ui.form .sw-float input:focus { box-shadow: 0 0 0 3px rgba(23, 23, 23, .08) !important; outline: none; }
.sw-fields.ui.form .sw-float input:-webkit-autofill { -webkit-box-shadow: inset 0 0 0 1000px #FFFFFF !important; -webkit-text-fill-color: var(--sw-text); }
.sw-fields.ui.form .sw-float > label {
  position: absolute; left: 44px; right: 48px; top: 8px; margin: 0 !important; pointer-events: none;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
  font-size: 11px !important; font-weight: 500 !important; line-height: 16px; color: var(--sw-muted) !important;
  transition: top .15s, font-size .15s, transform .15s;
}
.sw-fields.ui.form .sw-float input:placeholder-shown:not(:focus):not(:-webkit-autofill) + label {
  top: 50%; transform: translateY(-50%); font-size: 15px !important; font-weight: 400 !important; line-height: 24px;
}
.sw-fields.ui.form .required.field.sw-float > label::after { content: none !important; }
.sw-icon { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--sw-icon); pointer-events: none; transition: color .18s; }
.sw-float:focus-within .sw-icon { color: var(--sw-text); }
.sw-fields.ui.form .error.field.sw-float input, .sw-fields.ui.form .sw-float input[aria-invalid="true"] { border-color: var(--sw-error) !important; }
.sw-fields.ui.form .error.field.sw-float > label { color: var(--sw-error) !important; }
.sw-pass input { padding-right: 52px !important; }
.sw-eye { position: absolute; top: 50%; right: 8px; transform: translateY(-50%); display: grid; place-items: center; width: 40px; height: 40px;
  border: 0; border-radius: 6px; background: none; cursor: pointer; color: var(--sw-icon); }
.sw-eye:hover { color: var(--sw-text); background: #F0EEEA; }
.sw-eye:focus-visible { outline: 2px solid var(--sw-text); outline-offset: 1px; }
.sw-eye .sw-eye-hide, .sw-eye[aria-pressed="true"] .sw-eye-show { display: none; }
.sw-eye[aria-pressed="true"] .sw-eye-hide { display: inline-block; }
.sw-fields.ui.form .sw-remember { display: flex; align-items: center; gap: 10px; margin: 2px 0 0 !important; }
.sw-fields.ui.form .sw-remember input[type="checkbox"] { -webkit-appearance: checkbox !important; appearance: auto !important; position: static !important; opacity: 1 !important; flex: none; width: 16px !important; height: 16px !important; min-height: 0 !important; margin: 0 !important; padding: 0 !important; border: 0 !important; accent-color: var(--sw-accent); cursor: pointer; }
.sw-fields.ui.form .sw-remember > label { margin: 0 !important; padding: 0 !important; font-size: 14px !important; font-weight: 400 !important; color: var(--sw-muted) !important; cursor: pointer; }
.sw-submit.ui.primary.button {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  width: 100%; height: 48px; margin: 6px 0 0; border-radius: 8px; padding: 0 20px;
  font-family: var(--sw-sans); font-size: 15px; font-weight: 500; letter-spacing: -0.005em;
  color: #FFFFFF !important; background: var(--sw-accent) !important; border: 0 !important; box-shadow: none !important;
  transition: background-color .18s;
}
.sw-submit.ui.primary.button:hover { background: var(--sw-accent-hover) !important; }
.sw-submit.ui.primary.button:active { background: var(--sw-accent-active) !important; }
.sw-submit.ui.primary.button:focus-visible { outline: 2px solid var(--sw-text); outline-offset: 2px; }
.sw-arrow { transition: transform .18s; }
.sw-submit:hover .sw-arrow { transform: translateX(2px); }
.sw-or { display: flex; align-items: center; gap: 14px; font-size: 12px; color: var(--sw-muted); }
.sw-or::before, .sw-or::after { content: ""; flex: 1; height: 1px; background: var(--sw-line); }
.sw-passkey.ui.basic.button {
  width: 100%; height: 48px; margin: 0; border-radius: 8px; display: flex; align-items: center; justify-content: center; gap: 10px;
  font-family: var(--sw-sans); font-size: 14px; font-weight: 500; color: var(--sw-text) !important;
  background: #FFFFFF !important; border: 1px solid var(--sw-line) !important; box-shadow: none !important;
  transition: border-color .18s, background-color .18s;
}
.sw-passkey.ui.basic.button:hover { border-color: var(--sw-control) !important; }
.sw-passkey.ui.basic.button:active { background: var(--sw-bg) !important; }
.sw-form > .ui.message, .sw-form .flash-message {
  margin: 0; padding: 10px 12px !important; border-radius: 8px; text-align: left !important; font-size: 14px; box-shadow: none;
  color: var(--sw-error) !important; background: #FBEFEC !important; border: 1px solid #EBC7BF !important;
}
.sw-help { margin: 32px 0 0; max-width: 400px; font-size: 13px; line-height: 20px; text-align: center; color: var(--sw-muted); text-wrap: balance; }
.ab-sw > :not(.sw-panel):not(.sw-main):not(script):not(link) { grid-column: 1 / -1; }
@keyframes sw-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes sw-rise { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .ab-sw > .sw-panel, .sw-form { animation: none; } }

/* Tablets: a 300 px sun-study band on top, then the form. Phones: a short band. */
@media (max-width: 1023.98px) {
  .ab-sw { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto 1fr; }
  .ab-sw > .sw-panel { position: relative; height: 300px; }
  .sw-main { padding: 40px 24px 24px; }
  .sw-help { margin-top: auto; padding-top: 24px; }
}
@media (max-width: 639.98px) {
  .ab-sw > .sw-panel { height: 150px; }
  .sw-main { padding: 28px 20px 20px; }
  .sw-form { margin: 0; gap: 18px; }
  .sw-title { font-size: 28px; line-height: 34px; }
  .sw-fields.ui.form .sw-float input { font-size: 16px; }
}
@media (max-width: 639.98px) and (max-height: 700px) {
  .ab-sw > .sw-panel { height: 112px; }
  .sw-main { padding-top: 20px; }
  .sw-form { gap: 14px; }
}

/* ---------- 6. Other one-card pages (two-factor, change password, link account) ---------- */
.page-content.user.signin:not(.ab-signin) .ui.segment,
.page-content.user.twofa .ui.segment,
.page-content.user.forgot .ui.segment { box-shadow: var(--ab-card-shadow); }
