/* ==========================================================================
   TenantNode Premium  ·  "Obsidian / Signal Mint"
   Single-file theme. Load LAST (after index.css, theme-tenantnode.css,
   tn-catalog.css, tn-notifications.css and the inline <style> blocks).
   Dark is the default; light = html[data-tn-chrome="light"] (set by
   tn-chrome-controls.js, which also toggles html.tn-chrome-dark).
   ========================================================================== */

/* ---------- Fonts (ship Geist woff2 under /assets/fonts/ on deploy) ------ */
@font-face { font-family: "TN Sans"; font-weight: 100 900; font-display: swap;
  src: local("Geist"), url("/assets/fonts/Geist-Variable.woff2") format("woff2"); }
@font-face { font-family: "TN Mono"; font-weight: 100 900; font-display: swap;
  src: local("Geist Mono"), url("/assets/fonts/GeistMono-Variable.woff2") format("woff2"); }

/* ---------- Tokens: DARK (default) --------------------------------------- */
html[data-theme] {
  --tn-maxw: 1200px;
  --tn-gutter: 32px;
  --tn-edge: max(var(--tn-gutter), calc((100% - var(--tn-maxw)) / 2));
  --tn-nav-h: 64px;
  --tn-foot-h: 64px;
  --tn-r-sm: 8px; --tn-r: 10px; --tn-r-lg: 16px; --tn-r-xl: 22px;
  --tn-font: "TN Sans", "Geist", "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  --tn-mono: "TN Mono", "Geist Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  --tn-ease: cubic-bezier(.2,.7,.2,1);

  --tn-bg: #07090d;
  --tn-bg-2: #0a0d12;
  --tn-surface: #0e1218;
  --tn-surface-2: #131821;
  --tn-surface-3: #1a202b;
  --tn-line: rgba(255,255,255,.075);
  --tn-line-2: rgba(255,255,255,.12);
  --tn-line-3: rgba(255,255,255,.18);
  --tn-text: #e6edf3;          /* 13.8:1 on surface-3, 16.9:1 on bg */
  --tn-text-body: #c9d1d9;     /* links at rest, commit messages: 10.6:1 on surface-3 */
  --tn-text-2: #aab3bf;        /* descriptions: 7.6:1 on surface-3 */
  --tn-text-3: #8b949e;        /* times, sizes, placeholders: 5.3:1 on surface-3, 4.7:1 on #222937 */
  --tn-accent: #58c4a0;        /* calmer than #6febc6; 9.0:1 with ink, 9.3:1 on bg */
  --tn-accent-2: #4bb592;
  --tn-accent-ink: #04120d;
  --tn-accent-soft: rgba(88,196,160,.12);
  --tn-accent-line: rgba(88,196,160,.32);
  --tn-link: var(--tn-text-body);
  --tn-link-hover: var(--tn-accent);
  --tn-link-content: #7ccfb2;  /* links inside rendered markdown: 10.4:1 on surface */
  --tn-violet: #8a7dff;
  --tn-danger: #ff7b86; --tn-warn: #e3b341; --tn-ok: #58c4a0; --tn-info: #79b8ff;
  --tn-glass: rgba(10,13,18,.72);
  --tn-shadow: 0 1px 0 rgba(255,255,255,.04) inset, 0 20px 50px -20px rgba(0,0,0,.65), 0 2px 6px rgba(0,0,0,.35);
  --tn-shadow-sm: 0 1px 0 rgba(255,255,255,.04) inset, 0 1px 2px rgba(0,0,0,.4);
  --tn-grid: rgba(255,255,255,.035);
  --tn-hero-ink: linear-gradient(180deg, #ffffff 0%, #c9d2e0 100%);
  --tn-ring: 0 0 0 2px var(--tn-bg), 0 0 0 4px var(--tn-accent);
  --tn-btn-text: #04120d;
  color-scheme: dark;
}

/* ---------- Tokens: LIGHT ------------------------------------------------ */
html[data-theme][data-tn-chrome="light"] {
  --tn-bg: #f5f6f8;
  --tn-bg-2: #eef0f3;
  --tn-surface: #ffffff;
  --tn-surface-2: #f7f8fa;
  --tn-surface-3: #eef0f4;
  --tn-line: rgba(12,20,36,.08);
  --tn-line-2: rgba(12,20,36,.13);
  --tn-line-3: rgba(12,20,36,.2);
  --tn-text: #0b111c;
  --tn-text-body: #1f2733;     /* 14.6:1 on white */
  --tn-text-2: #4f596b;        /* 6.2:1 on surface-3 */
  --tn-text-3: #5b6474;        /* was #808999 (3.3:1); now 5.2:1 on surface-3 */
  --tn-accent: #08735b;        /* white text 5.8:1; 5.1:1 on surface-3 */
  --tn-accent-2: #065f4b;
  --tn-accent-ink: #ffffff;
  --tn-accent-soft: rgba(8,115,91,.09);
  --tn-accent-line: rgba(8,115,91,.35);
  --tn-link-content: #08735b;
  --tn-danger: #c4313f; --tn-warn: #8a5a00; --tn-ok: #08735b; --tn-info: #0a5fc2;
  --tn-violet: #6a5cff;
  --tn-glass: rgba(245,246,248,.78);
  --tn-shadow: 0 1px 0 rgba(255,255,255,.9) inset, 0 24px 48px -24px rgba(16,24,40,.22), 0 2px 6px rgba(16,24,40,.06);
  --tn-shadow-sm: 0 1px 2px rgba(16,24,40,.06);
  --tn-grid: rgba(12,20,36,.05);
  --tn-hero-ink: linear-gradient(180deg, #0b111c 0%, #36415a 100%);
  --tn-ring: 0 0 0 2px var(--tn-bg), 0 0 0 4px var(--tn-accent);
  --tn-btn-text: #ffffff;
  color-scheme: light;
}

/* ---------- Map Gitea / Fomantic variables (beat inline style vars) ------ */
html[data-theme], html[data-theme][data-tn-chrome] {
  --fonts-proportional: var(--tn-font) !important;
  --fonts-monospace: var(--tn-mono) !important;
  --fonts-regular: var(--tn-font) !important;
  --border-radius: var(--tn-r) !important;
  --border-radius-medium: var(--tn-r-lg) !important;
  --color-body: var(--tn-bg) !important;
  --color-nav-bg: transparent !important;
  --color-nav-hover-bg: var(--tn-surface-2) !important;
  --color-nav-text: var(--tn-text) !important;
  --color-secondary-nav-bg: transparent !important;
  --color-footer: transparent !important;
  --color-header-bar: var(--tn-surface-2) !important;
  --color-box-header: var(--tn-surface-2) !important;
  --color-box-body: var(--tn-surface) !important;
  --color-box-body-highlight: var(--tn-surface-2) !important;
  --color-card: var(--tn-surface) !important;
  --color-menu: var(--tn-surface-2) !important;
  --color-button: var(--tn-surface-2) !important;
  --color-secondary-button: var(--tn-surface-2) !important;
  --color-text: var(--tn-text) !important;
  --color-text-dark: var(--tn-text) !important;
  --color-text-light: var(--tn-text-2) !important;
  --color-text-light-1: var(--tn-text-2) !important;
  --color-text-light-2: var(--tn-text-3) !important;
  --color-text-light-3: var(--tn-text-3) !important;
  --color-placeholder-text: var(--tn-text-3) !important;
  --color-primary: var(--tn-accent) !important;
  --color-primary-contrast: var(--tn-btn-text) !important;
  --color-primary-hover: var(--tn-accent-2) !important;
  --color-primary-active: var(--tn-accent-2) !important;
  --color-primary-dark-1: var(--tn-accent-2) !important;
  --color-primary-alpha-10: var(--tn-accent-soft) !important;
  --color-primary-alpha-20: var(--tn-accent-soft) !important;
  --color-primary-alpha-30: var(--tn-accent-line) !important;
  --color-accent: var(--tn-accent) !important;
  --color-small-accent: var(--tn-accent-soft) !important;
  --color-secondary: var(--tn-line-2) !important;
  --color-secondary-bg: var(--tn-surface-2) !important;
  --color-secondary-alpha-40: var(--tn-line-2) !important;
  --color-secondary-alpha-60: var(--tn-line-2) !important;
  --color-light-border: var(--tn-line) !important;
  --color-light: var(--tn-surface-2) !important;
  --color-hover: color-mix(in srgb, var(--tn-text) 5%, transparent) !important;
  --color-hover-opaque: var(--tn-surface-2) !important;
  --color-active: color-mix(in srgb, var(--tn-text) 8%, transparent) !important;
  --color-input-background: var(--tn-surface) !important;
  --color-input-border: var(--tn-line-2) !important;
  --color-input-border-hover: var(--tn-line-3) !important;
  --color-input-text: var(--tn-text) !important;
  --color-input-toggle-background: var(--tn-surface-3) !important;
  --color-label-bg: var(--tn-surface-3) !important;
  --color-label-text: var(--tn-text-2) !important;
  --color-label-hover-bg: var(--tn-surface-3) !important;
  --color-label-active-bg: var(--tn-surface-3) !important;
  --color-code-bg: var(--tn-surface) !important;
  --color-markup-code-block: var(--tn-surface-2) !important;
  --color-markup-code-inline: var(--tn-surface-3) !important;
  --color-markup-table-row: var(--tn-surface-2) !important;
  --color-timeline: var(--tn-line-2) !important;
  --color-tooltip-bg: var(--tn-surface-3) !important;
  --color-tooltip-text: var(--tn-text) !important;
  --color-overlay-backdrop: rgba(3,5,8,.62) !important;
  --color-shadow: rgba(0,0,0,.35) !important;
  --color-caret: var(--tn-accent) !important;
  --color-highlight-bg: var(--tn-accent-soft) !important;
  --color-success-text: var(--tn-ok) !important;
  --color-error-text: var(--tn-danger) !important;
  --color-warning-text: var(--tn-warn) !important;
  --color-info-text: var(--tn-info) !important;
  --tn-chrome-surface: var(--tn-bg) !important;
  --tn-chrome-border: var(--tn-line) !important;
  --tn-chrome-header: transparent !important;
  --tn-chrome-footer: transparent !important;
}

/* ---------- Base --------------------------------------------------------- */
html[data-theme], html[data-theme] body {
  background: var(--tn-bg) !important;
  color: var(--tn-text) !important;
  font-family: var(--tn-font) !important;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-feature-settings: "ss01", "cv11";
}
html[data-theme] body {
  display: flex !important; flex-direction: column !important;
  min-height: 100vh !important; min-height: 100dvh !important;
  background:
    radial-gradient(1200px 600px at 50% -240px, color-mix(in srgb, var(--tn-accent) 9%, transparent), transparent 70%),
    var(--tn-bg) !important;
  background-attachment: fixed !important;
}
html[data-theme] body > .full.height {
  flex: 1 0 auto !important; display: flex !important; flex-direction: column !important;
  min-height: 0 !important; width: 100% !important; padding-bottom: 0 !important;
}
html[data-theme] ::selection { background: var(--tn-accent-soft); color: var(--tn-text); }
html[data-theme] a { color: var(--tn-text); text-decoration-color: var(--tn-line-3); }
html[data-theme] a:hover { color: var(--tn-accent); }
html[data-theme] h1, html[data-theme] h2, html[data-theme] h3,
html[data-theme] h4, html[data-theme] .ui.header { font-family: var(--tn-font) !important; letter-spacing: -.02em; color: var(--tn-text) !important; }
html[data-theme] :focus-visible { outline: none !important; box-shadow: var(--tn-ring) !important; border-radius: var(--tn-r-sm); }

/* ---------- Navbar: 3-column grid, search truly centered ----------------- */
html[data-theme] #navbar {
  position: sticky !important; top: 0; z-index: 900;
  display: grid !important;
  grid-template-columns: minmax(0,1fr) minmax(0,420px) minmax(0,1fr) !important;
  align-items: center !important; gap: 24px !important;
  height: var(--tn-nav-h) !important; min-height: var(--tn-nav-h) !important;
  padding: 0 var(--tn-edge) !important; margin: 0 !important;
  background: var(--tn-glass) !important;
  -webkit-backdrop-filter: saturate(160%) blur(18px); backdrop-filter: saturate(160%) blur(18px);
  border: 0 !important; border-bottom: 1px solid var(--tn-line) !important;
  box-shadow: none !important;
}
html[data-theme] #navbar .navbar-left { display: flex !important; align-items: center !important; gap: 4px !important; min-width: 0; justify-self: start; }
html[data-theme] #navbar .navbar-right { display: flex !important; align-items: center !important; gap: 8px !important; justify-self: end; grid-column: 3; }
html[data-theme] #navbar .item {
  display: inline-flex !important; align-items: center !important; gap: 8px !important;
  height: 36px !important; min-height: 36px !important; margin: 0 !important;
  padding: 0 12px !important; border-radius: var(--tn-r-sm) !important;
  font-size: 14px !important; font-weight: 500 !important; line-height: 1 !important;
  color: var(--tn-text-2) !important; background: transparent !important; border: 0 !important;
  transition: color .15s var(--tn-ease), background .15s var(--tn-ease);
}
html[data-theme] #navbar .item:hover { color: var(--tn-text) !important; background: var(--tn-surface-2) !important; }
html[data-theme] #navbar .item.active { color: var(--tn-text) !important; background: transparent !important; box-shadow: inset 0 -2px 0 var(--tn-accent) !important; border-radius: 0 !important; height: var(--tn-nav-h) !important; }
html[data-theme] #navbar .item svg { width: 16px; height: 16px; }
html[data-theme] #navbar .navbar-left > a.item[href="/explore/repos"] svg { display: none; }
html[data-theme] #navbar #navbar-logo {
  padding: 0 14px 0 0 !important; margin-right: 8px !important; gap: 10px !important;
  color: var(--tn-text) !important; background: transparent !important;
  font-size: 15px !important; font-weight: 650 !important; letter-spacing: -.02em;
  border-right: 1px solid var(--tn-line) !important; border-radius: 0 !important; height: 24px !important; min-height: 24px !important;
}
html[data-theme] #navbar #navbar-logo img { width: 24px !important; height: 24px !important; border-radius: 7px; box-shadow: 0 0 0 1px var(--tn-line-2), 0 6px 16px -6px color-mix(in srgb, var(--tn-accent) 55%, transparent); }
html[data-theme] #navbar .tn-brand-name { color: var(--tn-text) !important; }
/* Sign In in navbar = compact primary pill */
html[data-theme] #navbar .navbar-right > a.item[href^="/user/login"] {
  color: var(--tn-text) !important; background: var(--tn-surface-2) !important;
  box-shadow: inset 0 0 0 1px var(--tn-line-2), var(--tn-shadow-sm) !important;
  padding: 0 16px !important; border-radius: var(--tn-r) !important;
}
html[data-theme] #navbar .navbar-right > a.item[href^="/user/login"]:hover { box-shadow: inset 0 0 0 1px var(--tn-accent-line) !important; }
html[data-theme] #navbar .navbar-right > a.item[href^="/user/login"] .tw-ml-1 { margin-left: 0 !important; }
html[data-theme] #navbar .navbar-right > a.item[href^="/user/login"] svg { display: none; }
/* search */
html[data-theme] #navbar .tn-nav-search {
  grid-column: 2; position: relative !important; display: flex !important; align-items: center !important;
  width: 100% !important; max-width: 420px !important; height: 38px !important; margin: 0 !important; justify-self: center;
}
html[data-theme] #navbar .tn-nav-search input {
  width: 100% !important; height: 38px !important; padding: 0 44px 0 38px !important;
  background: var(--tn-surface) !important; color: var(--tn-text) !important;
  border: 1px solid var(--tn-line-2) !important; border-radius: var(--tn-r) !important;
  font: 400 14px/38px var(--tn-font) !important; box-shadow: var(--tn-shadow-sm) !important;
  transition: border-color .15s, box-shadow .15s;
}
html[data-theme] #navbar .tn-nav-search input::placeholder { color: var(--tn-text-3) !important; text-transform: none; }
html[data-theme] #navbar .tn-nav-search input:focus { border-color: var(--tn-accent-line) !important; box-shadow: var(--tn-ring) !important; outline: 0 !important; }
html[data-theme] #navbar .tn-search-icon { position: absolute !important; left: 13px !important; top: 50% !important; transform: translateY(-50%) !important; display: flex; color: var(--tn-text-3) !important; pointer-events: none; }
html[data-theme] #navbar .tn-search-icon svg { width: 15px; height: 15px; }
html[data-theme] #navbar .tn-nav-search kbd {
  position: absolute !important; right: 9px !important; top: 50% !important; transform: translateY(-50%) !important;
  display: grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px !important; margin: 0 !important;
  font: 500 11px/1 var(--tn-mono) !important; color: var(--tn-text-3) !important;
  background: var(--tn-surface-2) !important; border: 1px solid var(--tn-line-2) !important; border-radius: 6px !important; box-shadow: none !important;
}
html[data-theme] #navbar .navbar-mobile-right { margin: 0 !important; }

/* ---------- Main + containers: one max-width, one gutter ----------------- */
html[data-theme] .page-content { flex: 1 0 auto; padding-top: 0 !important; }
html[data-theme] .ui.ui.ui.ui.container:not(.fluid) {
  width: auto !important; max-width: var(--tn-maxw) !important;
  margin-left: var(--tn-edge) !important; margin-right: var(--tn-edge) !important;
}
@media (min-width: 1265px) { html[data-theme] .ui.ui.ui.ui.container:not(.fluid) { margin-left: auto !important; margin-right: auto !important; width: calc(100% - 2 * var(--tn-gutter)) !important; } }

/* ---------- Footer ------------------------------------------------------- */
html[data-theme] .page-footer {
  display: flex !important; align-items: center !important; justify-content: space-between !important; gap: 24px !important;
  height: var(--tn-foot-h) !important; min-height: var(--tn-foot-h) !important;
  padding: 0 var(--tn-edge) !important; margin: 0 !important; flex: 0 0 auto;
  background: transparent !important; border-top: 1px solid var(--tn-line) !important;
  color: var(--tn-text-3) !important; font-size: 13px !important; line-height: 1 !important;
}
html[data-theme] .page-footer .left-links, html[data-theme] .page-footer .right-links {
  display: flex !important; align-items: center !important; gap: 20px !important; margin: 0 !important; padding: 0 !important; min-width: 0; flex-wrap: nowrap !important;
}
html[data-theme] .page-footer .left-links > span:nth-of-type(n+2) { display: none !important; } /* Page/Template timings */
html[data-theme] .page-footer .left-links > span:first-of-type {
  font: 400 12px/1 var(--tn-mono) !important; color: var(--tn-text-3) !important;
  max-width: 230px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  padding: 5px 8px; border: 1px solid var(--tn-line); border-radius: 6px; background: var(--tn-surface);
}
html[data-theme] .page-footer .tn-footer-brand { display: inline-flex !important; align-items: center !important; gap: 10px !important; color: var(--tn-text-2) !important; font-weight: 500; }
html[data-theme] .page-footer .tn-footer-brand img { width: 18px !important; height: 18px !important; border-radius: 5px; }
html[data-theme] .page-footer a, html[data-theme] .page-footer .ui.dropdown { color: var(--tn-text-2) !important; font-size: 13px !important; }
html[data-theme] .page-footer a:hover { color: var(--tn-text) !important; }
html[data-theme] .page-footer .ui.dropdown .flex-text-inline { gap: 6px; }
html[data-theme] .tn-theme-toggle {
  display: inline-grid !important; place-items: center !important; width: 32px !important; height: 32px !important; padding: 0 !important; margin: 0 !important;
  border-radius: var(--tn-r-sm) !important; border: 1px solid var(--tn-line-2) !important;
  background: var(--tn-surface) !important; color: var(--tn-text-2) !important; cursor: pointer;
}
html[data-theme] .tn-theme-toggle:hover { color: var(--tn-text) !important; border-color: var(--tn-line-3) !important; }
html[data-theme] .tn-theme-toggle > span { grid-area: 1/1; display: grid; place-items: center; }
html[data-theme] .tn-theme-toggle svg { width: 15px; height: 15px; }

/* ---------- Chrome FAB + panel: aligned to the gutter, above footer ------ */
html[data-theme] .tn-chrome-fab {
  right: var(--tn-gutter) !important; bottom: calc(var(--tn-foot-h) + 16px) !important;
  width: 40px !important; height: 40px !important; border-radius: 12px !important;
  background: var(--tn-surface-2) !important; color: var(--tn-text-2) !important;
  border: 1px solid var(--tn-line-2) !important; box-shadow: var(--tn-shadow) !important;
}
html[data-theme] .tn-chrome-fab:hover { color: var(--tn-text) !important; border-color: var(--tn-accent-line) !important; }
html[data-theme] .tn-chrome-panel { background: var(--tn-surface) !important; color: var(--tn-text) !important; border: 1px solid var(--tn-line-2) !important; border-radius: var(--tn-r-xl) !important; box-shadow: var(--tn-shadow) !important; }
html[data-theme] .tn-chrome-chip { background: var(--tn-surface-2) !important; color: var(--tn-text) !important; border: 1px solid var(--tn-line-2) !important; border-radius: var(--tn-r) !important; }
html[data-theme] .tn-chrome-chip.is-active { border-color: var(--tn-accent-line) !important; box-shadow: var(--tn-ring) !important; }

/* ---------- Buttons ------------------------------------------------------ */
html[data-theme] .ui.button, html[data-theme] .tn-cta, html[data-theme] .tn-cta-ghost {
  font-family: var(--tn-font) !important; font-weight: 600 !important; letter-spacing: -.005em;
  border-radius: var(--tn-r) !important; transition: transform .15s var(--tn-ease), box-shadow .15s, background .15s, border-color .15s !important;
}
html[data-theme] .ui.button:not(.primary):not(.red):not(.green):not(.basic) {
  background: var(--tn-surface-2) !important; color: var(--tn-text) !important;
  border: 1px solid var(--tn-line-2) !important; box-shadow: var(--tn-shadow-sm) !important;
}
html[data-theme] .ui.button:not(.primary):hover { border-color: var(--tn-line-3) !important; background: var(--tn-surface-3) !important; }
html[data-theme] .ui.primary.button, html[data-theme] .ui.primary.buttons .button {
  background: var(--tn-accent) !important; color: var(--tn-btn-text) !important; border: 1px solid transparent !important;
  box-shadow: 0 1px 0 rgba(255,255,255,.25) inset, 0 8px 22px -10px var(--tn-accent) !important;
}
html[data-theme] .ui.primary.button:hover { background: var(--tn-accent-2) !important; }
html[data-theme] .ui.basic.button { background: transparent !important; color: var(--tn-text) !important; border: 1px solid var(--tn-line-2) !important; box-shadow: none !important; }
html[data-theme] .ui.red.button { background: color-mix(in srgb, var(--tn-danger) 14%, transparent) !important; color: var(--tn-danger) !important; border: 1px solid color-mix(in srgb, var(--tn-danger) 40%, transparent) !important; }

/* ---------- Inputs ------------------------------------------------------- */
html[data-theme] input:not([type=checkbox]):not([type=radio]):not([type=range]),
html[data-theme] textarea, html[data-theme] select,
html[data-theme] .ui.input > input, html[data-theme] .ui.form input:not([type]),
html[data-theme] .ui.form input[type=text], html[data-theme] .ui.form input[type=search],
html[data-theme] .ui.selection.dropdown {
  background: var(--tn-surface) !important; color: var(--tn-text) !important;
  border: 1px solid var(--tn-line-2) !important; border-radius: var(--tn-r) !important;
  font-family: var(--tn-font) !important; box-shadow: var(--tn-shadow-sm) !important;
}
html[data-theme] input:focus, html[data-theme] textarea:focus, html[data-theme] .ui.selection.dropdown.active {
  border-color: var(--tn-accent-line) !important; box-shadow: var(--tn-ring) !important; outline: 0 !important;
}
html[data-theme] input::placeholder, html[data-theme] textarea::placeholder { color: var(--tn-text-3) !important; }

/* ---------- Menus, dropdowns, tabs -------------------------------------- */
html[data-theme] .ui.dropdown .menu, html[data-theme] .ui.menu .dropdown.item .menu, html[data-theme] .ui.popup, html[data-theme] .tippy-box {
  background: var(--tn-surface-2) !important; border: 1px solid var(--tn-line-2) !important;
  border-radius: var(--tn-r) !important; box-shadow: var(--tn-shadow) !important; padding: 6px !important; overflow: hidden;
}
html[data-theme] .ui.dropdown .menu > .item, html[data-theme] .ui.dropdown .menu > label.item {
  border-radius: 7px !important; color: var(--tn-text-2) !important; padding: 9px 12px !important; font-size: 13.5px !important; border: 0 !important;
}
html[data-theme] .ui.dropdown .menu > .item:hover, html[data-theme] .ui.dropdown .menu > .active.item, html[data-theme] .ui.dropdown .menu > .selected.item {
  background: var(--tn-surface-3) !important; color: var(--tn-text) !important;
}
html[data-theme] .ui.dropdown .menu > .divider { border-color: var(--tn-line) !important; margin: 4px 0 !important; }
html[data-theme] .ui.menu:not(.secondary):not(.text) { background: var(--tn-surface) !important; border: 1px solid var(--tn-line-2) !important; border-radius: var(--tn-r) !important; box-shadow: none !important; }
html[data-theme] .ui.menu .item { color: var(--tn-text-2) !important; font-family: var(--tn-font) !important; }
html[data-theme] .ui.menu .item:before { background: var(--tn-line) !important; }

/* secondary-nav (Explore tabs etc.) as a centered segmented control */
html[data-theme] overflow-menu.secondary-nav, html[data-theme] .ui.secondary.pointing.menu.secondary-nav {
  display: flex !important; justify-content: center !important;
  background: transparent !important; border: 0 !important; box-shadow: none !important;
  margin: 40px auto 28px !important; padding: 0 var(--tn-edge) !important; min-height: 0 !important; width: 100% !important;
}
html[data-theme] overflow-menu.secondary-nav .overflow-menu-items {
  display: inline-flex !important; gap: 4px !important; padding: 4px !important; flex: 0 0 auto !important;
  background: var(--tn-surface) !important; border: 1px solid var(--tn-line-2) !important; border-radius: 12px !important; box-shadow: var(--tn-shadow-sm);
}
html[data-theme] overflow-menu.secondary-nav .item {
  height: 36px !important; padding: 0 16px !important; margin: 0 !important; gap: 8px !important;
  display: inline-flex !important; align-items: center !important;
  border: 0 !important; border-radius: 9px !important; color: var(--tn-text-2) !important; font-weight: 500 !important; font-size: 14px !important;
}
html[data-theme] overflow-menu.secondary-nav .item:hover { color: var(--tn-text) !important; background: var(--tn-surface-2) !important; }
html[data-theme] overflow-menu.secondary-nav .item.active {
  background: var(--tn-surface-3) !important; color: var(--tn-text) !important; font-weight: 600 !important;
  box-shadow: inset 0 0 0 1px var(--tn-line-2), 0 1px 2px rgba(0,0,0,.25) !important;
}
html[data-theme] overflow-menu.secondary-nav .item.active svg { color: var(--tn-accent); }
html[data-theme] overflow-menu.secondary-nav .item svg { width: 15px; height: 15px; margin: 0 !important; }
html[data-theme] .ui.tabular.menu .item, html[data-theme] .ui.pointing.menu .item { border-radius: var(--tn-r-sm) !important; }
html[data-theme] .ui.secondary.pointing.menu:not(.secondary-nav) .active.item { border-color: var(--tn-accent) !important; color: var(--tn-text) !important; }

/* ---------- Segments, cards, boxes, tables ------------------------------ */
html[data-theme] .ui.segment, html[data-theme] .ui.segments, html[data-theme] .ui.attached.segment,
html[data-theme] .ui.card, html[data-theme] .ui.cards > .card, html[data-theme] .repository .ui.segment {
  background: var(--tn-surface) !important; border: 1px solid var(--tn-line-2) !important; color: var(--tn-text) !important; box-shadow: var(--tn-shadow-sm) !important;
}
html[data-theme] .ui.segment:not(.attached), html[data-theme] .ui.card { border-radius: var(--tn-r-lg) !important; }
html[data-theme] .ui.top.attached.header, html[data-theme] .ui.attached.header {
  background: var(--tn-surface-2) !important; border: 1px solid var(--tn-line-2) !important; color: var(--tn-text) !important;
  font-weight: 600 !important; font-size: 14px !important; padding: 14px 18px !important;
}
html[data-theme] .ui.top.attached.header { border-radius: var(--tn-r-lg) var(--tn-r-lg) 0 0 !important; }
html[data-theme] .ui.bottom.attached.segment { border-radius: 0 0 var(--tn-r-lg) var(--tn-r-lg) !important; }
html[data-theme] .ui.table { background: var(--tn-surface) !important; border: 1px solid var(--tn-line-2) !important; border-radius: var(--tn-r-lg) !important; overflow: hidden; color: var(--tn-text) !important; }
html[data-theme] .ui.table thead th { background: var(--tn-surface-2) !important; color: var(--tn-text-3) !important; font: 500 11px/1 var(--tn-mono) !important; text-transform: uppercase; letter-spacing: .08em; border-color: var(--tn-line) !important; padding: 12px 16px !important; }
html[data-theme] .ui.table td { border-color: var(--tn-line) !important; padding: 12px 16px !important; }
html[data-theme] .ui.table tbody tr:hover { background: var(--tn-surface-2) !important; }
html[data-theme] .ui.label { background: var(--tn-surface-3) !important; color: var(--tn-text-2) !important; border: 1px solid var(--tn-line-2) !important; border-radius: 999px !important; font-weight: 500 !important; }
html[data-theme] .ui.divider:not(.vertical):not(.horizontal) { border-color: var(--tn-line) !important; }

/* ---------- Flash banners ----------------------------------------------- */
html[data-theme] .flash-message, html[data-theme] .ui.message {
  background: var(--tn-surface-2) !important; color: var(--tn-text) !important; border: 1px solid var(--tn-line-2) !important;
  border-radius: var(--tn-r) !important; box-shadow: none !important; padding: 12px 16px 12px 44px !important; position: relative;
  max-width: var(--tn-maxw); margin: 16px auto !important;
}
html[data-theme] .flash-message::before, html[data-theme] .ui.message::before {
  content: ""; position: absolute; left: 16px; top: 50%; width: 10px; height: 10px; margin-top: -5px; border-radius: 50%; background: var(--tn-info);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--tn-info) 18%, transparent);
}
html[data-theme] .flash-success::before, html[data-theme] .ui.positive.message::before, html[data-theme] .ui.success.message::before { background: var(--tn-ok); }
html[data-theme] .flash-error::before, html[data-theme] .ui.negative.message::before, html[data-theme] .ui.error.message::before { background: var(--tn-danger); }
html[data-theme] .flash-warning::before, html[data-theme] .ui.warning.message::before { background: var(--tn-warn); }

/* ==========================================================================
   HOMEPAGE (landing)
   ========================================================================== */
html[data-theme] body:has(.tn-landing) .full.height { min-height: 0 !important; }
html[data-theme] .page-content.home.tn-landing {
  position: relative !important; isolation: isolate; overflow: hidden !important;
  flex: 1 0 auto !important; min-height: calc(100dvh - var(--tn-nav-h) - var(--tn-foot-h)) !important;
  display: grid !important; place-items: center !important;
  padding: 72px var(--tn-edge) 96px !important; margin: 0 !important; background: transparent !important;
}
/* Nebius-style hairline grid, masked to the center */
html[data-theme] .page-content.home.tn-landing::before {
  content: "" !important; position: absolute !important; inset: 0 !important; z-index: -2 !important;
  width: auto !important; height: auto !important; transform: none !important; filter: none !important; opacity: 1 !important; border-radius: 0 !important;
  background:
    linear-gradient(var(--tn-grid) 1px, transparent 1px) 50% 50% / 72px 72px,
    linear-gradient(90deg, var(--tn-grid) 1px, transparent 1px) 50% 50% / 72px 72px !important;
  -webkit-mask-image: radial-gradient(ellipse 60% 70% at 50% 50%, #000 30%, transparent 75%);
          mask-image: radial-gradient(ellipse 60% 70% at 50% 50%, #000 30%, transparent 75%);
}
/* aurora glow, centered on the title */
html[data-theme] .page-content.home.tn-landing::after {
  content: ""; position: absolute; z-index: -1; left: 50%; top: 50%; width: 900px; height: 520px;
  transform: translate(-50%, -62%); pointer-events: none; filter: blur(70px); opacity: .55;
  background:
    radial-gradient(closest-side at 38% 55%, color-mix(in srgb, var(--tn-accent) 38%, transparent), transparent),
    radial-gradient(closest-side at 64% 45%, color-mix(in srgb, var(--tn-violet) 34%, transparent), transparent);
}
html[data-theme][data-tn-chrome="light"] .page-content.home.tn-landing::after { opacity: .35; }
html[data-theme] .tn-hero, html[data-theme] .tn-hero-inner {
  width: 100% !important; max-width: 860px !important; margin: 0 auto !important; padding: 0 !important;
  display: flex !important; flex-direction: column !important; align-items: center !important; text-align: center !important; background: none !important;
}
/* eyebrow chip (template markup: .tn-eyebrow) */
html[data-theme] .tn-hero-inner .tn-eyebrow {
  display: inline-flex; align-items: center; height: 30px; padding: 0 14px 0 30px; margin-bottom: 28px; position: relative;
  font: 500 12px/1 var(--tn-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--tn-text-2); white-space: pre;
  background:
    radial-gradient(circle at 15px 50%, var(--tn-accent) 0 3.5px, color-mix(in srgb, var(--tn-accent) 22%, transparent) 4px 7px, transparent 7.5px),
    var(--tn-surface);
  border: 1px solid var(--tn-line-2); border-radius: 999px; box-shadow: var(--tn-shadow-sm);
}
html[data-theme] .tn-hero-title {
  margin: 0 !important; padding: 0 !important;
  font: 680 clamp(48px, 7.4vw, 104px)/.98 var(--tn-font) !important; letter-spacing: -.055em !important;
  background: var(--tn-hero-ink); -webkit-background-clip: text; background-clip: text; color: transparent !important; -webkit-text-fill-color: transparent;
}
html[data-theme] .tn-hero-sub {
  margin: 22px auto 0 !important; max-width: 560px !important;
  font: 400 clamp(17px, 1.5vw, 20px)/1.5 var(--tn-font) !important; color: var(--tn-text-2) !important; letter-spacing: -.01em;
}
html[data-theme] .tn-hero-actions {
  display: grid !important; grid-template-columns: repeat(2, 224px) !important; gap: 12px !important;
  justify-content: center !important; margin: 40px 0 0 !important; padding: 0 !important;
}
html[data-theme] .tn-hero-actions .tn-cta, html[data-theme] .tn-hero-actions .tn-cta-ghost,
html[data-theme] .page-content.home a.tn-cta, html[data-theme] .page-content.home a.tn-cta-ghost {
  display: inline-flex !important; align-items: center !important; justify-content: center !important;
  width: 100% !important; min-width: 0 !important; height: 48px !important; padding: 0 20px !important; margin: 0 !important;
  border-radius: var(--tn-r) !important; font: 600 15px/1 var(--tn-font) !important; text-decoration: none !important; letter-spacing: -.01em !important;
}
html[data-theme] .page-content.home a.tn-cta, html[data-theme] .page-content.home a.tn-cta:visited, html[data-theme] .page-content.home a.tn-cta:hover, html[data-theme] .page-content.home a.tn-cta:focus {
  background: var(--tn-accent) !important; color: var(--tn-btn-text) !important; border: 1px solid transparent !important;
  box-shadow: 0 1px 0 rgba(255,255,255,.3) inset, 0 14px 34px -14px var(--tn-accent) !important;
}
html[data-theme] .page-content.home a.tn-cta:hover { transform: translateY(-1px); background: var(--tn-accent-2) !important; }
html[data-theme] .page-content.home a.tn-cta::after { content: "→"; margin-left: 10px; font-weight: 500; }
html[data-theme] .page-content.home a.tn-cta-ghost, html[data-theme] .page-content.home a.tn-cta-ghost:visited, html[data-theme] .page-content.home a.tn-cta-ghost:hover {
  background: color-mix(in srgb, var(--tn-surface) 80%, transparent) !important; color: var(--tn-text) !important;
  border: 1px solid var(--tn-line-2) !important; box-shadow: var(--tn-shadow-sm) !important;
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
html[data-theme] .page-content.home a.tn-cta-ghost:hover { border-color: var(--tn-line-3) !important; transform: translateY(-1px); }
/* clone line under the CTAs (template markup: .tn-clone) */
html[data-theme] .tn-hero-inner .tn-clone {
  display: inline-flex; align-items: center; height: 40px; margin-top: 28px; padding: 0 16px;
  font: 400 13px/1 var(--tn-mono); color: var(--tn-text-3); white-space: pre;
  border: 1px dashed var(--tn-line-2); border-radius: var(--tn-r);
}

/* ==========================================================================
   SIGN IN
   ========================================================================== */
html[data-theme] .page-content.user.signin {
  position: relative !important; isolation: isolate; overflow: hidden !important;
  display: grid !important; place-items: center !important;
  min-height: calc(100dvh - var(--tn-nav-h) - var(--tn-foot-h)) !important;
  padding: 48px var(--tn-edge) !important; margin: 0 !important; background: transparent !important;
}
html[data-theme] .page-content.user.signin::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(var(--tn-grid) 1px, transparent 1px) 50% 50% / 72px 72px,
    linear-gradient(90deg, var(--tn-grid) 1px, transparent 1px) 50% 50% / 72px 72px;
  -webkit-mask-image: radial-gradient(ellipse 45% 55% at 50% 50%, #000 20%, transparent 72%);
          mask-image: radial-gradient(ellipse 45% 55% at 50% 50%, #000 20%, transparent 72%);
}
html[data-theme] .page-content.user.signin .tn-signin-slot {
  position: static !important; transform: none !important; inset: auto !important;
  width: 100% !important; max-width: 420px !important; margin: 0 auto !important; padding: 0 !important;
}
html[data-theme] body .page-content.user.signin .tn-signin-card {
  position: relative; width: 100% !important; max-width: 420px !important; margin: 0 auto !important;
  padding: 40px 36px 32px !important; text-align: center;
  background: linear-gradient(180deg, color-mix(in srgb, var(--tn-surface-2) 92%, transparent), var(--tn-surface)) !important;
  border: 1px solid var(--tn-line-2) !important; border-radius: var(--tn-r-xl) !important;
  box-shadow: var(--tn-shadow), 0 0 0 1px color-mix(in srgb, var(--tn-bg) 60%, transparent) !important;
}
/* soft accent rim on top edge */
html[data-theme] body .page-content.user.signin .tn-signin-card::after {
  content: ""; position: absolute; left: 22%; right: 22%; top: -1px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--tn-accent), transparent); opacity: .7;
}
/* brand mark above title */
html[data-theme] body .page-content.user.signin .tn-signin-card::before {
  content: ""; display: block; width: 48px; height: 48px; margin: 0 auto 22px; border-radius: 14px;
  background: var(--tn-surface-3) url("/assets/img/logo.svg?v=tn6") center / 26px 26px no-repeat;
  box-shadow: inset 0 0 0 1px var(--tn-line-2), 0 10px 30px -12px color-mix(in srgb, var(--tn-accent) 70%, transparent);
}
html[data-theme] body .page-content.user.signin .tn-signin-card .tn-signin-title {
  margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important;
  font: 650 26px/1.15 var(--tn-font) !important; letter-spacing: -.035em !important; color: var(--tn-text) !important; text-align: center !important;
}
html[data-theme] body .page-content.user.signin .tn-signin-card .tn-signin-sub {
  display: block; margin: 10px 0 0 !important;
  font: 400 14.5px/1.5 var(--tn-font); letter-spacing: -.005em; color: var(--tn-text-2);
}
html[data-theme] body .page-content.user.signin .tn-signin-body { margin-top: 28px !important; }
html[data-theme] #oauth2-login-navigator { padding: 0 !important; }
html[data-theme] #oauth2-login-navigator a.oauth-login-link.tn-oauth-emenes {
  display: flex !important; align-items: center !important; justify-content: center !important; gap: 10px;
  height: 50px !important; padding: 0 20px !important;
  background: var(--tn-accent) !important; -webkit-text-fill-color: var(--tn-btn-text) !important;
  border-radius: var(--tn-r) !important; border: 1px solid transparent !important;
  font: 600 15px/1 var(--tn-font) !important; letter-spacing: -.01em;
  box-shadow: 0 1px 0 rgba(255,255,255,.3) inset, 0 14px 34px -14px var(--tn-accent) !important;
  transition: transform .15s var(--tn-ease), background .15s;
}
html[data-theme] #oauth2-login-navigator a.oauth-login-link.tn-oauth-emenes:hover { background: var(--tn-accent-2) !important; transform: translateY(-1px); }
html[data-theme] #oauth2-login-navigator a.oauth-login-link.tn-oauth-emenes::after { content: "→"; font-weight: 500; }
html[data-theme] body .page-content.user.signin .tn-signin-foot {
  display: block; margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--tn-line);
  font: 400 11.5px/1 var(--tn-mono); letter-spacing: .04em; color: var(--tn-text-3); white-space: pre;
}
/* on the sign-in page itself the navbar Sign In is redundant */
html[data-theme] body:has(.page-content.user.signin) #navbar .navbar-right > a.item[href^="/user/login"] { visibility: hidden !important; }

/* ==========================================================================
   EXPLORE + repo list
   ========================================================================== */
html[data-theme] .page-content.explore { padding-bottom: 72px !important; }
html[data-theme] .page-content.explore > .ui.container { max-width: 960px !important; }
@media (min-width: 1025px) { html[data-theme] .page-content.explore > .ui.container { width: 960px !important; margin-left: auto !important; margin-right: auto !important; } }
html[data-theme] .page-content.explore > .ui.container > .divider { display: none !important; }
html[data-theme] .ui.small.secondary.filter.menu { margin: 0 0 16px !important; padding: 0 !important; min-height: 0 !important; background: none !important; border: 0 !important; }
html[data-theme] #repo-search-form { gap: 8px !important; width: 100%; }
html[data-theme] #repo-search-form .ui.action.input { position: relative; }
html[data-theme] #repo-search-form .ui.action.input > input {
  height: 44px !important; padding: 0 16px 0 42px !important; font-size: 14.5px !important;
  border-radius: var(--tn-r) !important; border-right: 1px solid var(--tn-line-2) !important;
}
html[data-theme] #repo-search-form .ui.action.input > .button {
  position: absolute !important; left: 4px; top: 4px; height: 36px !important; width: 36px !important; padding: 0 !important;
  display: grid !important; place-items: center !important;
  background: transparent !important; border: 0 !important; box-shadow: none !important; color: var(--tn-text-3) !important; border-radius: 8px !important;
}
html[data-theme] #repo-search-form > .item.dropdown {
  height: 44px !important; padding: 0 14px !important; margin: 0 !important; gap: 8px; display: inline-flex !important; align-items: center !important;
  background: var(--tn-surface) !important; border: 1px solid var(--tn-line-2) !important; border-radius: var(--tn-r) !important;
  color: var(--tn-text-2) !important; font-size: 14px !important; font-weight: 500 !important; box-shadow: var(--tn-shadow-sm) !important;
}
html[data-theme] #repo-search-form > .item.dropdown:hover { color: var(--tn-text) !important; border-color: var(--tn-line-3) !important; }
html[data-theme] #repo-search-form > .item.dropdown > .menu { top: calc(100% + 6px) !important; }
html[data-theme] .flex-list { display: flex !important; flex-direction: column !important; gap: 10px !important; border: 0 !important; background: none !important; padding: 0 !important; }
html[data-theme] .page-content .flex-list > .flex-item {
  display: flex !important; align-items: flex-start !important; gap: 16px !important;
  padding: 18px 20px !important; margin: 0 !important; min-height: 0 !important;
  background: var(--tn-surface) !important; border: 1px solid var(--tn-line-2) !important; border-radius: var(--tn-r-lg) !important;
  box-shadow: var(--tn-shadow-sm) !important; transition: border-color .15s, transform .15s var(--tn-ease), background .15s;
}
html[data-theme] .page-content .flex-list > .flex-item:hover { border-color: var(--tn-accent-line) !important; background: var(--tn-surface-2) !important; }
html[data-theme] .flex-item .flex-item-leading {
  flex: 0 0 40px; width: 40px; height: 40px; display: grid !important; place-items: center; margin: 0 !important;
  border-radius: 11px; background: var(--tn-accent-soft); color: var(--tn-accent); box-shadow: inset 0 0 0 1px var(--tn-accent-line);
}
html[data-theme] .flex-item .flex-item-leading svg { width: 18px; height: 18px; }
html[data-theme] .flex-item .flex-item-main { gap: 4px !important; min-width: 0; }
html[data-theme] .flex-item .flex-item-header { align-items: center !important; min-height: 24px; }
html[data-theme] .flex-item .flex-item-title { font-size: 15.5px !important; font-weight: 600 !important; letter-spacing: -.01em; color: var(--tn-text-3) !important; gap: 4px; }
html[data-theme] .flex-item .flex-item-title a.text.primary.name { color: var(--tn-text) !important; }
html[data-theme] .flex-item .flex-item-title a.text.primary.name:first-child { color: var(--tn-text-2) !important; font-weight: 500 !important; }
html[data-theme] .flex-item .flex-item-body { color: var(--tn-text-2) !important; font-size: 14px !important; line-height: 1.5 !important; }
html[data-theme] .flex-item .flex-item-body:last-child { color: var(--tn-text-3) !important; font: 400 12px/1.5 var(--tn-mono) !important; margin-top: 4px; }
html[data-theme] .flex-item .flex-item-trailing { gap: 6px !important; }
html[data-theme] .flex-item .flex-item-trailing a {
  display: inline-flex !important; align-items: center; gap: 6px; height: 26px; padding: 0 9px;
  border: 1px solid var(--tn-line-2); border-radius: 999px; color: var(--tn-text-2) !important; font: 500 12px/1 var(--tn-mono);
}
html[data-theme] .flex-item .flex-item-trailing svg { width: 13px; height: 13px; }

/* ---------- 404 / status pages ------------------------------------------ */
html[data-theme] .page-content:has(.status-page-error) { display: grid !important; place-items: center !important; padding: 64px var(--tn-edge) !important; }
html[data-theme] .status-page-error { margin: 0 auto !important; text-align: center; max-width: 560px; padding: 0 !important; }
html[data-theme] .status-page-error-title {
  font: 700 clamp(72px, 10vw, 140px)/1 var(--tn-font) !important; letter-spacing: -.06em !important; margin: 0 0 8px !important;
  background: var(--tn-hero-ink); -webkit-background-clip: text; background-clip: text; color: transparent !important; -webkit-text-fill-color: transparent;
}
html[data-theme] .status-page-error .tw-text-center { color: var(--tn-text-2) !important; font-size: 16px !important; line-height: 1.6 !important; }
html[data-theme] .status-page-error strong { color: var(--tn-text) !important; font-weight: 600; }
html[data-theme] .status-page-error .tw-my-4 { margin: 16px 0 0 !important; }

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width: 767.98px) {
  html[data-theme] { --tn-gutter: 20px; --tn-nav-h: 60px; }
  html[data-theme] #navbar { grid-template-columns: 1fr auto !important; gap: 8px !important; }
  html[data-theme] #navbar .navbar-left { width: 100%; }
  html[data-theme] #navbar .navbar-left > a.item:not(#navbar-logo) { display: none !important; }
  html[data-theme] #navbar #navbar-logo { border-right: 0 !important; }
  html[data-theme] #navbar .navbar-mobile-right { order: 9; margin-left: auto !important; }
  html[data-theme] #navbar .navbar-right { grid-column: 2; }
  html[data-theme] #navbar-expand-toggle { width: 36px !important; height: 36px !important; padding: 0 !important; border-radius: var(--tn-r-sm) !important; border: 1px solid var(--tn-line-2) !important; background: var(--tn-surface) !important; }
  html[data-theme] .page-footer { height: auto !important; padding-top: 18px !important; padding-bottom: 18px !important; flex-direction: column !important; gap: 14px !important; }
  html[data-theme] .page-footer .left-links > span:first-of-type { display: none !important; }
  html[data-theme] .page-footer .right-links { gap: 16px !important; }
  html[data-theme] .page-content.home.tn-landing { padding: 56px var(--tn-gutter) 72px !important; min-height: calc(100dvh - var(--tn-nav-h) - 110px) !important; }
  html[data-theme] .tn-hero-inner .tn-eyebrow { margin-bottom: 22px; font-size: 11px; }
  html[data-theme] .tn-hero-title { font-size: 52px !important; }
  html[data-theme] .tn-hero-actions { grid-template-columns: 1fr !important; width: 100%; max-width: 340px; margin-top: 32px !important; }
  html[data-theme] .tn-hero-inner .tn-clone { display: none !important; }
  html[data-theme] .page-content.user.signin { min-height: calc(100dvh - var(--tn-nav-h) - 110px) !important; padding: 32px var(--tn-gutter) !important; }
  html[data-theme] body .page-content.user.signin .tn-signin-card { padding: 32px 24px 26px !important; }
  html[data-theme] .tn-chrome-fab { right: var(--tn-gutter) !important; bottom: 20px !important; }
  html[data-theme] overflow-menu.secondary-nav { margin: 24px auto 20px !important; }
}

/* ---------- Fix-ups (overlay conflicts) --------------------------------- */
html[data-theme] .page-footer .right-links > a + a:before,
html[data-theme] .page-footer .right-links > .ui.dropdown + a:before,
html[data-theme] .page-footer .right-links > *:before { display: none !important; content: none !important; }
html[data-theme] .page-footer .right-links > * { border: 0 !important; padding-left: 0 !important; margin: 0 !important; }
html[data-theme] .page-footer .right-links > .tn-theme-toggle { border: 1px solid var(--tn-line-2) !important; }
html[data-theme] .page-content.home a.tn-cta, html[data-theme] .page-content.home a.tn-cta-ghost { white-space: nowrap !important; }
html[data-theme] .tn-hero, html[data-theme] .tn-hero::before, html[data-theme] .tn-hero::after { background: none !important; box-shadow: none !important; }
html[data-theme] .tn-hero::before, html[data-theme] .tn-hero::after { display: none !important; }

/* ---------- Repo page: neutralise hard-coded light overlay surfaces ----- */
html[data-theme] body .repository #repo-files-table,
html[data-theme] body .repository .repo-file-item,
html[data-theme] body .repository .repo-file-line,
html[data-theme] body .repository .repo-file-cell { background: var(--tn-surface) !important; color: var(--tn-text) !important; border-color: var(--tn-line) !important; }
html[data-theme] body .repository #repo-files-table { border: 1px solid var(--tn-line-2) !important; border-radius: var(--tn-r-lg) !important; overflow: hidden; }
html[data-theme] body .repository .repo-file-line.repo-file-last-commit { background: var(--tn-surface-2) !important; }
html[data-theme] body .repository .repo-file-item:hover, html[data-theme] body .repository .repo-file-item:hover .repo-file-cell { background: var(--tn-surface-2) !important; }
html[data-theme] body .repository .repo-file-cell.message, html[data-theme] body .repository .repo-file-cell.age { color: var(--tn-text-3) !important; }
html[data-theme] body .ui.basic.button, html[data-theme] body .ui.compact.basic.button, html[data-theme] body .ui.labeled.button > .button {
  background: var(--tn-surface-2) !important; color: var(--tn-text) !important; border: 1px solid var(--tn-line-2) !important; box-shadow: none !important;
}
html[data-theme] body .ui.labeled.button > .ui.basic.label {
  background: var(--tn-surface) !important; color: var(--tn-text-2) !important; border: 1px solid var(--tn-line-2) !important; border-left: 0 !important;
  border-radius: 0 var(--tn-r) var(--tn-r) 0 !important; font-family: var(--tn-mono) !important;
}
html[data-theme] body .ui.labeled.button > .button { border-radius: var(--tn-r) 0 0 var(--tn-r) !important; }
html[data-theme] body .ui.segment, html[data-theme] body .ui.attached.segment, html[data-theme] body .ui.table,
html[data-theme] body .ui.card, html[data-theme] body .comment-list .comment, html[data-theme] body .timeline-item .comment {
  background: var(--tn-surface) !important; border-color: var(--tn-line-2) !important; color: var(--tn-text) !important;
}
html[data-theme] body .ui.attached.header, html[data-theme] body .ui.top.attached.header { background: var(--tn-surface-2) !important; color: var(--tn-text) !important; border-color: var(--tn-line-2) !important; }
html[data-theme] body .repository .repo-header { padding-top: 24px !important; }
html[data-theme] body .repository .ui.tabs.divider, html[data-theme] body .repository .secondary-nav { border-color: var(--tn-line) !important; }
/* 404 size: never wrap */
html[data-theme] .status-page-error-title { font-size: clamp(56px, 6.2vw, 92px) !important; white-space: nowrap; }
html[data-theme] .status-page-error .tw-text-center { max-width: 460px; margin: 0 auto; }
html[data-theme] .page-content:has(.status-page-error) { min-height: calc(100dvh - var(--tn-nav-h) - var(--tn-foot-h)) !important; }
html[data-theme] .page-content:has(.status-page-error) .ui.container { margin: 0 auto !important; }

/* ---------- Theme toggle icon by mode ----------------------------------- */
html[data-theme] .tn-theme-toggle .tn-icon-sun { display: none !important; }
html[data-theme] .tn-theme-toggle .tn-icon-moon { display: grid !important; }
html[data-theme][data-tn-chrome="dark"] .tn-theme-toggle .tn-icon-sun { display: grid !important; }
html[data-theme][data-tn-chrome="dark"] .tn-theme-toggle .tn-icon-moon { display: none !important; }

/* ---------- Mobile navbar ----------------------------------------------- */
@media (max-width: 767.98px) {
  html[data-theme] #navbar .tn-nav-search { display: none !important; }
  html[data-theme] #navbar { grid-template-columns: minmax(0,1fr) auto !important; }
  html[data-theme] #navbar .navbar-left { grid-column: 1; }
  html[data-theme] #navbar .navbar-right { grid-column: 2; grid-row: 1; }
  html[data-theme] #navbar .navbar-right > a.item[href^="/user/login"] { height: 36px !important; padding: 0 14px !important; }
  html[data-theme] body .page-content.user.signin .tn-signin-foot { white-space: normal; line-height: 1.6; text-align: center; }
}
html[data-theme] body:has(.page-content.user.signin) #navbar .navbar-right > a.item[href^="/user/login"] { display: none !important; }
@media (max-width: 767.98px) {
  html[data-theme] #navbar #navbar-expand-toggle, html[data-theme] #navbar .navbar-right > a.item[href^="/user/login"] { height: 38px !important; min-height: 38px !important; }
  html[data-theme] #navbar #navbar-expand-toggle { width: 38px !important; display: grid !important; place-items: center !important; box-shadow: none !important; color: var(--tn-text) !important; }
  html[data-theme] #navbar .navbar-left { gap: 8px !important; }
}

/* ---------- Neutral buttons: beat the overlay's long :not() chain -------- */
html[data-theme] .ui.button:not(.primary):not(.red):not(#tn-x):not(.oauth-login-link),
html[data-theme] .ui.basic.button:not(#tn-x) {
  background: var(--tn-surface-2) !important; color: var(--tn-text) !important;
  border: 1px solid var(--tn-line-2) !important; box-shadow: var(--tn-shadow-sm) !important;
}
html[data-theme] .ui.button:not(.primary):not(.red):not(#tn-x):not(.oauth-login-link):hover { background: var(--tn-surface-3) !important; border-color: var(--tn-line-3) !important; }
html[data-theme] .ui.labeled.button > .ui.basic.label:not(#tn-x) { background: var(--tn-surface) !important; color: var(--tn-text-2) !important; border-color: var(--tn-line-2) !important; }
html[data-theme] #navbar #navbar-expand-toggle:not(#tn-x) { background: var(--tn-surface) !important; border: 1px solid var(--tn-line-2) !important; box-shadow: none !important; }
/* 404 title */
html[data-theme] .status-page-error-title { font-size: clamp(48px, 5.4vw, 80px) !important; white-space: normal; text-wrap: balance; overflow: visible !important; }
html[data-theme] .status-page-error { max-width: 720px !important; width: 100%; }
html[data-theme] #repo-search-form .ui.action.input > .button:not(#tn-x) { background: transparent !important; border: 0 !important; box-shadow: none !important; color: var(--tn-text-3) !important; }
html[data-theme] #navbar .navbar-right > a.item[href^="/user/login"]:not(#tn-x) { border: 0 !important; outline: 0 !important; }


/* ==========================================================================
   READABLE CONTRAST  (fix/tenantnode-readable-contrast)
   Text is neutral; green is an accent only (primary buttons, focus ring,
   status dots, link hover, active-tab marker). Every text/background pair
   targets WCAG AA (4.5:1 text, 3:1 large text and UI) in dark and light.
   ========================================================================== */

/* --- 1. Gitea's own dark palette for things the light base theme leaves
          behind (diff rows, syntax, ansi, red/green/yellow, badges).
          Only vars the token map above doesn't already own. --- */
html[data-theme]:not([data-tn-chrome="light"]) {
  --is-dark-theme: true;
  --color-primary-dark-2: #679cd0;
  --color-primary-dark-3: #7aa8d6;
  --color-primary-dark-4: #8db5dc;
  --color-primary-dark-5: #b3cde7;
  --color-primary-dark-6: #d9e6f3;
  --color-primary-dark-7: #f4f8fb;
  --color-primary-light-1: #3876b3;
  --color-primary-light-2: #31699f;
  --color-primary-light-3: #2b5c8b;
  --color-primary-light-4: #254f77;
  --color-primary-light-5: #193450;
  --color-primary-light-6: #0c1a28;
  --color-primary-light-7: #04080c;
  --color-primary-alpha-40: #4183c466;
  --color-primary-alpha-50: #4183c480;
  --color-primary-alpha-60: #4183c499;
  --color-primary-alpha-70: #4183c4b3;
  --color-primary-alpha-80: #4183c4cc;
  --color-primary-alpha-90: #4183c4e1;
  --color-secondary-dark-1: #414b54;
  --color-secondary-dark-2: #49545f;
  --color-secondary-dark-3: #576471;
  --color-secondary-dark-4: #677685;
  --color-secondary-dark-5: #758594;
  --color-secondary-dark-6: #8392a0;
  --color-secondary-dark-7: #929eab;
  --color-secondary-dark-8: #a2acb7;
  --color-secondary-dark-9: #a9b3bd;
  --color-secondary-dark-10: #b7bfc7;
  --color-secondary-dark-11: #c5cbd2;
  --color-secondary-dark-12: #cfd4da;
  --color-secondary-dark-13: #d2d7dc;
  --color-secondary-light-1: #313940;
  --color-secondary-light-2: #292f35;
  --color-secondary-light-3: #1d2226;
  --color-secondary-light-4: #171b1e;
  --color-secondary-alpha-10: #3b444c19;
  --color-secondary-alpha-20: #3b444c33;
  --color-secondary-alpha-30: #3b444c4b;
  --color-secondary-alpha-50: #3b444c80;
  --color-secondary-alpha-70: #3b444cb3;
  --color-secondary-alpha-80: #3b444ccc;
  --color-secondary-alpha-90: #3b444ce1;
  --color-secondary-hover: var(--color-secondary-dark-3);
  --color-secondary-active: var(--color-secondary-dark-2);
  --color-console-fg: #f7f8f9;
  --color-console-fg-subtle: #bdc4cc;
  --color-console-bg: #171b1e;
  --color-console-border: #2e353b;
  --color-console-hover-bg: #272d33;
  --color-console-active-bg: #2e353b;
  --color-console-menu-bg: #262b31;
  --color-console-menu-border: #414b55;
  --color-red: #cc4848;
  --color-orange: #cc580c;
  --color-yellow: #cc9903;
  --color-olive: #91a313;
  --color-green: #87ab63;
  --color-teal: #00918a;
  --color-blue: #3a8ac6;
  --color-violet: #906ae1;
  --color-purple: #b259d0;
  --color-pink: #d22e8b;
  --color-brown: #a47252;
  --color-black: #1d2328;
  --color-red-light: #d15a5a;
  --color-orange-light: #f6a066;
  --color-yellow-light: #eaaf03;
  --color-olive-light: #abc016;
  --color-green-light: #93b373;
  --color-teal-light: #00b6ad;
  --color-blue-light: #4e96cc;
  --color-violet-light: #9b79e4;
  --color-purple-light: #ba6ad5;
  --color-pink-light: #d74397;
  --color-brown-light: #b08061;
  --color-black-light: #424851;
  --color-red-dark-1: #c23636;
  --color-orange-dark-1: #f38236;
  --color-yellow-dark-1: #b88a03;
  --color-olive-dark-1: #839311;
  --color-green-dark-1: #7a9e55;
  --color-teal-dark-1: #00837c;
  --color-blue-dark-1: #347cb3;
  --color-violet-dark-1: #7b4edb;
  --color-purple-dark-1: #a742c9;
  --color-pink-dark-1: #be297d;
  --color-brown-dark-1: #94674a;
  --color-black-dark-1: #292e38;
  --color-red-dark-2: #ad3030;
  --color-orange-dark-2: #f16e17;
  --color-yellow-dark-2: #a37a02;
  --color-olive-dark-2: #74820f;
  --color-green-dark-2: #6c8c4c;
  --color-teal-dark-2: #00746e;
  --color-blue-dark-2: #2e6e9f;
  --color-violet-dark-2: #6733d6;
  --color-purple-dark-2: #9834b9;
  --color-pink-dark-2: #a9246f;
  --color-brown-dark-2: #835b42;
  --color-black-dark-2: #272930;
  --color-ansi-black: #1e2327;
  --color-ansi-red: #cc4848;
  --color-ansi-green: #87ab63;
  --color-ansi-yellow: #cc9903;
  --color-ansi-blue: #3a8ac6;
  --color-ansi-magenta: #d22e8b;
  --color-ansi-cyan: #00918a;
  --color-ansi-white: var(--color-console-fg-subtle);
  --color-ansi-bright-black: #424851;
  --color-ansi-bright-red: #d15a5a;
  --color-ansi-bright-green: #93b373;
  --color-ansi-bright-yellow: #eaaf03;
  --color-ansi-bright-blue: #4e96cc;
  --color-ansi-bright-magenta: #d74397;
  --color-ansi-bright-cyan: #00b6ad;
  --color-ansi-bright-white: var(--color-console-fg);
  --color-grey: #384149;
  --color-grey-light: #818f9e;
  --color-gold: #b1983b;
  --color-white: #ffffff;
  --color-diff-added-linenum-bg: #274227;
  --color-diff-added-row-bg: #203224;
  --color-diff-added-row-border: #314a37;
  --color-diff-added-word-bg: #3c653c;
  --color-diff-moved-row-bg: #818044;
  --color-diff-moved-row-border: #bcca6f;
  --color-diff-removed-linenum-bg: #482121;
  --color-diff-removed-row-bg: #301e1e;
  --color-diff-removed-row-border: #634343;
  --color-diff-removed-word-bg: #6f3333;
  --color-diff-inactive: #22282d;
  --color-error-border: #a04141;
  --color-error-bg: #522;
  --color-error-bg-active: #744;
  --color-error-bg-hover: #633;
  --color-success-border: #458a57;
  --color-success-bg: #284034;
  --color-warning-border: #bb9d00;
  --color-warning-bg: #3a3a30;
  --color-info-border: #306090;
  --color-info-bg: #26354c;
  --color-red-badge: #db2828;
  --color-red-badge-bg: #db28281a;
  --color-red-badge-hover-bg: #db28284d;
  --color-green-badge: #21ba45;
  --color-green-badge-bg: #21ba451a;
  --color-green-badge-hover-bg: #21ba454d;
  --color-yellow-badge: #fbbd08;
  --color-yellow-badge-bg: #fbbd081a;
  --color-yellow-badge-hover-bg: #fbbd084d;
  --color-orange-badge: #f2711c;
  --color-orange-badge-bg: #f2711c1a;
  --color-orange-badge-hover-bg: #f2711c4d;
  --color-git: #f05133;
  --color-logo: #609926;
  --color-light-mimic-enabled: rgba(0, 0, 0, calc(40 / 255 * 222 / 255 / var(--opacity-disabled)));
  --color-shadow-opaque: #000017;
  --color-expand-button: #2f363d;
  --color-editor-line-highlight: var(--color-primary-light-5);
  --color-project-column-bg: var(--color-secondary-light-2);
  --color-reaction-bg: #e8f3ff12;
  --color-reaction-hover-bg: var(--color-primary-light-4);
  --color-reaction-active-bg: var(--color-primary-light-5);
  --color-highlight-fg: #87651e;
}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .bp{color:#fabd2f}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .c,html[data-theme]:not([data-tn-chrome="light"]) .chroma .c1,html[data-theme]:not([data-tn-chrome="light"]) .chroma .ch,html[data-theme]:not([data-tn-chrome="light"]) .chroma .cm{color:#777e94}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .cp{color:#8ec07c}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .cpf{color:#649bc4}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .cs{color:#9075cd}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .dl{color:#649bc4}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .gd{color:#fff;background-color:#5f3737}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .ge{color:#ddee30}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .gh{color:#ffaa10}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .gi{color:#fff;background-color:#3a523a}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .go{color:#777e94}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .gp{color:#ebdbb2}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .gr{color:#f43}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .gs{color:#ebdbb2}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .gt{color:#ff7540}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .gu{color:#b8bb26}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .il{color:#649bc4}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .k{color:#ff7540}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .kc{color:#649bc4}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .kd{color:#ff7540}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .kn{color:#ffaa10}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .kp{color:#5f8700}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .kr{color:#ff7540}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .kt{color:#ff7b72}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .m,html[data-theme]:not([data-tn-chrome="light"]) .chroma .mb,html[data-theme]:not([data-tn-chrome="light"]) .chroma .mf,html[data-theme]:not([data-tn-chrome="light"]) .chroma .mh,html[data-theme]:not([data-tn-chrome="light"]) .chroma .mi,html[data-theme]:not([data-tn-chrome="light"]) .chroma .mo{color:#649bc4}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .n{color:#c9d1d9}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .na,html[data-theme]:not([data-tn-chrome="light"]) .chroma .nb{color:#fabd2f}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .nc{color:#ffaa10}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .nd{color:#8ec07c}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .ne{color:#ff7540}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .nf,html[data-theme]:not([data-tn-chrome="light"]) .chroma .ni{color:#fabd2f}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .nl{color:#ff7540}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .nn{color:#c9d1d9}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .no{color:#649bc4}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .nt{color:#ff7540}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .nv{color:#ebdbb2}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .nx{color:#b6bac5}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .o{color:#ff7540}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .ow{color:#5f8700}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .p{color:#d2d4db}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .s,html[data-theme]:not([data-tn-chrome="light"]) .chroma .s1,html[data-theme]:not([data-tn-chrome="light"]) .chroma .s2{color:#b8bb26}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .sa{color:#ffaa10}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .sb{color:#b8bb26}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .sc{color:#ffaa10}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .sd{color:#b8bb26}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .se{color:#ff8540}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .sh{color:#b8bb26}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .si{color:#ffaa10}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .sr{color:#9075cd}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .ss{color:#ff8540}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .sx{color:#ffaa10}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .vc,html[data-theme]:not([data-tn-chrome="light"]) .chroma .vg,html[data-theme]:not([data-tn-chrome="light"]) .chroma .vi{color:#649bee}
html[data-theme]:not([data-tn-chrome="light"]) .chroma .w{color:#7f8699}

/* --- 2. Link + status tokens into Gitea's variables --- */
html[data-theme], html[data-theme][data-tn-chrome] {
  --color-primary-dark-1: var(--tn-link) !important;   /* tn-theme maps every dark link to this */
  --color-text-light: var(--tn-text-2) !important;
  --color-text-light-1: var(--tn-text-2) !important;
  --color-text-light-2: var(--tn-text-3) !important;
  --color-text-light-3: var(--tn-text-3) !important;
  --color-red: var(--tn-danger) !important;
  --color-green: var(--tn-ok) !important;
  --color-yellow: var(--tn-warn) !important;
  --color-blue: var(--tn-info) !important;
  --color-orange: var(--tn-warn) !important;
}
html[data-theme][data-tn-chrome="light"] {
  --color-diff-added-row-bg: #e9f7ef !important;
  --color-diff-added-linenum-bg: #d3f0df !important;
  --color-diff-added-word-bg: #b5e5c9 !important;
  --color-diff-removed-row-bg: #fdecee !important;
  --color-diff-removed-linenum-bg: #f9d7db !important;
  --color-diff-removed-word-bg: #f3bcc3 !important;
}

/* --- 3. Links: neutral at rest, accent on hover. Muted = secondary grey. --- */
html[data-theme] a:not(.ui.button):not(.ui.label):not(.tn-cta):not(.tn-cta-ghost):not(.oauth-login-link):not(.item),
html[data-theme].tn-chrome-dark a:not(.tn-cta):not(.ui.button):not(.ui.label):not(.item) { color: var(--tn-link) !important; }
html[data-theme] a.muted, html[data-theme] .muted, html[data-theme] .muted-links a,
html[data-theme] .text.grey, html[data-theme].tn-chrome-dark .muted,
html[data-theme].tn-chrome-dark a.muted:not(.tn-cta):not(.ui.button) { color: var(--tn-text-2) !important; }
html[data-theme] a:not(.ui.button):not(.tn-cta):hover,
html[data-theme].tn-chrome-dark a:not(.tn-cta):not(.ui.button):hover,
html[data-theme] a.muted:hover, html[data-theme] .muted-links a:hover { color: var(--tn-link-hover, var(--tn-accent)) !important; }
/* rendered markdown keeps a visible (calm) link colour + underline */
html[data-theme] .markup a:not(.ui.button),
html[data-theme].tn-chrome-dark .markup a:not(.tn-cta):not(.ui.button) {
  color: var(--tn-link-content) !important; text-decoration: underline; text-decoration-color: var(--tn-accent-line); text-underline-offset: 2px;
}
html[data-theme] .markup a:hover { text-decoration-color: currentColor; }

/* --- 4. Repo chrome: title, commit ids, branch names, counters --- */
html[data-theme] .repo-header .repo-title a,
html[data-theme] .flex-item-title a,
html[data-theme] #repo-files-table .repo-file-cell.name a,
html[data-theme] #repo-files-table .repo-file-cell.message a,
html[data-theme] .commit-summary, html[data-theme] .commit-list .message-wrapper a { color: var(--tn-text) !important; }
html[data-theme] .repo-header .repo-title a:hover,
html[data-theme] #repo-files-table a:hover { color: var(--tn-accent) !important; }
html[data-theme] .ui.label.commit-id-short, html[data-theme] a.ui.label.commit-id-short,
html[data-theme] .ui.label.commit-id-short:not(.tn-cta) {
  color: var(--tn-text-2) !important; background: var(--tn-surface-3) !important; border: 1px solid var(--tn-line-2) !important;
}
html[data-theme] .branch-name, html[data-theme] a.branch-name,
html[data-theme] .ui.label.basic, html[data-theme] a.ui.basic.label,
html[data-theme] .ui.basic.label:not(.tn-cta) { color: var(--tn-text-2) !important; }
html[data-theme] .repository-summary .item b,
html[data-theme] .repository-summary .item,
html[data-theme] .ui.secondary.menu .item, html[data-theme] .ui.secondary.menu a.item:not(.tn-cta) { color: var(--tn-text-2) !important; }
html[data-theme] .ui.secondary.menu .active.item, html[data-theme] .ui.secondary.menu a.active.item:not(.tn-cta) { color: var(--tn-text) !important; }
html[data-theme] .time-since, html[data-theme] relative-time, html[data-theme] .text.light,
html[data-theme] .flex-item-body, html[data-theme] .ui.list .description { color: var(--tn-text-3) !important; }
html[data-theme] .repo-description, html[data-theme] .flex-item-title, html[data-theme] .desc { color: var(--tn-text-2) !important; }
html[data-theme] kbd { color: var(--tn-text-2) !important; }
html[data-theme] .ui.table > thead > tr > th { color: var(--tn-text-2) !important; }

/* Code/clone button is a tool, not the page's primary action: neutral. */
html[data-theme] .ui.primary.button.js-btn-clone-panel,
html[data-theme] button.ui.primary.button.js-btn-clone-panel {
  background: var(--tn-surface-2) !important; color: var(--tn-text) !important;
  border: 1px solid var(--tn-line-3) !important; box-shadow: var(--tn-shadow-sm) !important;
}
html[data-theme] .ui.primary.button.js-btn-clone-panel:hover { border-color: var(--tn-accent-line) !important; background: var(--tn-surface-3) !important; }

/* Primary buttons: solid accent with ink that passes AA in both themes. */
html[data-theme] .ui.primary.button:not(.js-btn-clone-panel),
html[data-theme] .ui.primary.buttons .button { color: var(--tn-btn-text) !important; }
/* Disabled primary: neutral, readable (no 40% opacity wash). */
html[data-theme] .ui.primary.button.disabled, html[data-theme] .ui.primary.button[disabled],
html[data-theme] .ui.button.disabled, html[data-theme] .ui.button[disabled] {
  opacity: 1 !important; background: var(--tn-surface-3) !important; color: var(--tn-text-3) !important;
  border: 1px dashed var(--tn-line-3) !important; box-shadow: none !important; cursor: not-allowed;
}
/* Watch / Star / Fork and their counters */
html[data-theme] .repo-header .ui.labeled.button .ui.button,
html[data-theme] .repo-header .ui.labeled.button .ui.label,
html[data-theme] .repo-header .ui.labeled.button span { color: var(--tn-text-2) !important; }

/* "You pushed on branch …" banner and other info/success boxes: neutral text, accent edge. */
html[data-theme] .ui.message, html[data-theme] .ui.info.message, html[data-theme] .ui.positive.message,
html[data-theme] .ui.success.message { color: var(--tn-text) !important; }
html[data-theme] .ui.message a:not(.ui.button) { color: var(--tn-text) !important; text-decoration: underline; text-decoration-color: var(--tn-line-3); }
html[data-theme] .ui.message .header { color: var(--tn-text) !important; }

/* Diff stats + status words: readable status colours. */
html[data-theme] .text.green, html[data-theme] .color-text-green { color: var(--tn-ok) !important; }
html[data-theme] .text.red, html[data-theme] .color-text-red { color: var(--tn-danger) !important; }
html[data-theme] .text.yellow, html[data-theme] .text.orange { color: var(--tn-warn) !important; }
html[data-theme] .diff-detail-stats strong, html[data-theme] .diff-detail-box strong { color: var(--tn-text) !important; }
html[data-theme] .diff-detail-stats strong.text.green, html[data-theme] .diff-detail-box strong.text.green { color: var(--tn-ok) !important; }
html[data-theme] .diff-detail-stats strong.text.red, html[data-theme] .diff-detail-box strong.text.red { color: var(--tn-danger) !important; }
html[data-theme] .code-inner, html[data-theme] .lines-code { color: var(--tn-text) !important; }
html[data-theme] .lines-num, html[data-theme] .lines-num span { color: var(--tn-text-3) !important; }

/* Footer version pill + small meta */
html[data-theme] .page-footer, html[data-theme] .page-footer .left-links > *,
html[data-theme] .page-footer span { color: var(--tn-text-2) !important; }

/* Disabled filter dropdowns (empty issue/PR lists): readable, still clearly inactive. */
html[data-theme] .ui.dropdown.disabled, html[data-theme] .ui.disabled.dropdown,
html[data-theme] .ui.menu .ui.dropdown.item.disabled, html[data-theme] .item.disabled {
  opacity: 1 !important; color: var(--tn-text-3) !important; cursor: not-allowed;
}
html[data-theme] .ui.dropdown.disabled > .text, html[data-theme] .item.disabled > .text,
html[data-theme] .ui.dropdown.disabled span.text { color: var(--tn-text-3) !important; }
/* Light syntax: generic heading/output tokens were #999 (2.6:1). */
html[data-theme][data-tn-chrome="light"] .chroma .gh,
html[data-theme][data-tn-chrome="light"] .chroma .go,
html[data-theme][data-tn-chrome="light"] .chroma .gu { color: var(--tn-text-2) !important; }
/* Dark diff rows: soft tints instead of Gitea's heavy olive/maroon. */
html[data-theme]:not([data-tn-chrome="light"]) {
  --color-diff-added-row-bg: #10221c !important;
  --color-diff-added-linenum-bg: #153028 !important;
  --color-diff-added-word-bg: #1e4a3b !important;
  --color-diff-added-row-border: #1e4a3b !important;
  --color-diff-removed-row-bg: #26141a !important;
  --color-diff-removed-linenum-bg: #341a21 !important;
  --color-diff-removed-word-bg: #5a2a33 !important;
  --color-diff-removed-row-border: #5a2a33 !important;
}
html[data-theme] .ui.primary.button.js-btn-clone-panel svg,
html[data-theme] .ui.primary.button.js-btn-clone-panel .svg,
html[data-theme] .ui.primary.button.js-btn-clone-panel .dropdown.icon { color: currentColor !important; fill: currentColor !important; opacity: 1 !important; }
