/*
 * EmberForge — dark theme aligned with tysontheember.dev "Glowing Ember" palette.
 * Imports forgejo-dark as the base so every Forgejo variable we don't override
 * still has a sane default.
 */

@import url("/assets/css/theme-forgejo-dark.css");

:root {
  --font-sans: 'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, Menlo, monospace;

  /* Shape (matches site) */
  --ef-radius-sm: 6px;
  --ef-radius-md: 12px;
  --ef-radius-lg: 14px;
  --ef-radius-xl: 18px;

  /* Motion (matches site) */
  --ef-ease-warm: cubic-bezier(.2, .7, .3, 1.05);
  --ef-motion-fast: 160ms;
  --ef-motion-base: 240ms;
  --ef-motion-slow: 320ms;

  /* Atmosphere (matches site --ember-glow / --ember-shadow-card) */
  --ef-glow: rgba(232, 128, 74, 0.18);
  --ef-shadow-card: rgba(232, 128, 74, 0.30);
  --ef-accent-deep: #C73E1D;

  --color-primary:           #E8804A;
  --color-primary-contrast:  #1A0E0B;
  --color-primary-hover:     #F49968;
  --color-primary-active:    #F49968;
  --color-primary-dark-1:    #F49968;
  --color-primary-dark-2:    #F6AC81;
  --color-primary-dark-3:    #F8BE9A;
  --color-primary-dark-4:    #FAD0B3;
  --color-primary-dark-5:    #FCE1CC;
  --color-primary-dark-6:    #FEF0E5;
  --color-primary-dark-7:    #FFF8F2;
  --color-primary-light-1:   #C73E1D;
  --color-primary-light-2:   #A8341A;
  --color-primary-light-3:   #8C2B16;
  --color-primary-light-4:   #702212;
  --color-primary-light-5:   #56190D;
  --color-primary-light-6:   #3E1109;
  --color-primary-light-7:   #260A05;
  --color-primary-alpha-10:  #E8804A1A;
  --color-primary-alpha-20:  #E8804A33;
  --color-primary-alpha-30:  #E8804A4D;
  --color-primary-alpha-40:  #E8804A66;
  --color-primary-alpha-50:  #E8804A80;
  --color-primary-alpha-60:  #E8804A99;
  --color-primary-alpha-70:  #E8804AB3;
  --color-primary-alpha-80:  #E8804ACC;
  --color-primary-alpha-90:  #E8804AE6;

  --color-body:                 #1A0E0B;
  --color-box-header:           #221310;
  --color-box-body:             #221310;
  --color-box-body-highlight:   #2A1812;
  --color-footer:               #1A0E0B;
  --color-nav-bg:               #1A0E0B;
  --color-secondary-nav-bg:     var(--color-body);
  --color-header-wrapper:       #1A0E0B;
  --color-menu:                 #221310;
  --color-card:                 #221310;
  --fancy-card-bg:              #2A1812;
  --fancy-card-border:          #4A2820;
  --color-code-bg:              #221310;
  --color-markup-code-block:    #221310;
  --color-markup-code-inline:   #2A1812;
  --color-editor-line-highlight:#2A1812;

  --color-input-border:         #2A1812;
  --color-input-border-hover:   #4A2820;
  --color-input-background:     #221310;
  --color-input-toggle-background: #2A1812;
  --color-input-text:           #F4E4D6;
  --color-hover:                #2A1812;
  --color-active:               #4A2820;
  --color-label-bg:             #2A1812;
  --color-label-hover-bg:       #4A2820;
  --color-label-active-bg:      #5A3025;
  --color-label-bg-alt:         #4A2820;
  --color-button:               #2A1812;
  --color-nav-hover-bg:         #2A1812;

  --color-text-dark:            #FFFFFF;
  --color-text:                 #F4E4D6;
  --color-text-light:           #C4A898;
  --color-text-light-1:         #9C7A68;
  --color-text-light-2:         #7A5C4E;
  --color-text-light-3:         #5A4234;
  --color-placeholder-text:     #9C7A68;
  --color-text-focus:           #FFFFFF;
  --color-caret:                #E8804A;

  --color-accent:               #F49968;
  --color-small-accent:         #56190D;
  --color-highlight-fg:         #F49968;
  --color-highlight-bg:         #E8804A33;
  --color-gold:                 #C89030;

  --color-red:        #C73E1D;
  --color-red-light:  #D55A3D;
  --color-red-dark-1: #A8341A;
  --color-red-dark-2: #7A2418;
  --color-orange:     #E8804A;
  --color-orange-light:#F49968;
  --color-yellow:     #C89030;
  --color-yellow-light:#F0D078;
  --color-olive:      #B8732E;
  --color-olive-light:#F0C088;
  --color-green:      #B8732E;
  --color-green-light:#F0C088;

  --color-diff-added-row-bg:     #1F2812;
  --color-diff-added-row-border: #4A6B1F;
  --color-diff-added-word-bg:    #3A5A18;
  --color-diff-removed-row-bg:   #3A1A14;
  --color-diff-removed-row-border:#7A2418;
  --color-diff-removed-word-bg:  #5A221A;
  --color-diff-moved-row-bg:     #4A3814;
  --color-diff-moved-row-border: #806026;
  --color-diff-inactive:         #2A1812;

  --color-error-border:   #7A2418;
  --color-error-bg:       #3A1A14;
  --color-error-bg-active:#5A221A;
  --color-error-bg-hover: #4A1F18;
  --color-error-text:     #FCE1CC;
  --color-success-border: #4A6B1F;
  --color-success-bg:     #1F2812;
  --color-success-text:   #D0E8A0;
  --color-warning-border: #806026;
  --color-warning-bg:     #4A3814;
  --color-warning-text:   #F0D078;
  --color-info-border:    #4A2820;
  --color-info-bg:        #2A1812;
  --color-info-text:      #F4E4D6;

  --color-reaction-bg:        #FFFFFF10;
  --color-reaction-active-bg: #E8804A4D;
  --color-reaction-hover-bg:  #E8804A66;
  --color-selection-bg:       #E8804A;
  --color-selection-fg:       #1A0E0B;
  --color-shadow:             #00000080;
  --color-tooltip-bg:         #150A07F0;

  --color-timeline: #4A2820;

  color-scheme: dark;
}

/* Flat warm dark backdrop — html sets the canonical color, body and
 * the .full.height wrapper stay transparent so Forgejo's secondary
 * box-body surface doesn't bleed through. */
html {
  background-color: var(--color-body) !important;
}
body,
.full.height {
  background: transparent !important;
}

/* ─── Warm any leftover grey borders and dividers ────────────── */
/* Forgejo uses several "secondary"/divider tokens that default to a
 * cool grey. Force them all to the warm border color so no element
 * has a cold hairline. */
:root {
  --color-secondary:           #2A1812 !important;
  --color-secondary-bg:        #2A1812 !important;
  --color-secondary-button:    #2A1812 !important;
  --color-secondary-light-1:   #4A2820 !important;
  --color-secondary-light-2:   #5A3025 !important;
  --color-secondary-light-3:   #6F4232 !important;
  --color-secondary-light-4:   #855240 !important;
  --color-secondary-dark-1:    #221310 !important;
  --color-secondary-dark-2:    #1A0E0B !important;
  --color-light-border:        #2A1812 !important;
  --color-light:               #2A1812 !important;
  --color-divider:             #2A1812 !important;
  --color-secondary-alpha-10:  #2A18121A !important;
  --color-secondary-alpha-20:  #2A181233 !important;
  --color-secondary-alpha-30:  #2A18124D !important;
  --color-secondary-alpha-40:  #2A181266 !important;
  --color-secondary-alpha-50:  #2A181280 !important;
  --color-secondary-alpha-60:  #2A181299 !important;
  --color-secondary-alpha-70:  #2A1812B3 !important;
  --color-secondary-alpha-80:  #2A1812CC !important;
  --color-secondary-alpha-90:  #2A1812E6 !important;
}

/* Catch-all for hardcoded grey divider/border patterns Forgejo uses. */
.ui.divider,
hr,
.divider,
.ui.menu .item + .item,
.ui.menu .menu .item,
.ui.dropdown .menu > .item,
.secondary-nav,
.tw-border-b,
.tw-border-t,
.tw-border {
  border-color: var(--color-input-border) !important;
}

/* Generic outlined / basic buttons that escaped my earlier rule. */
.ui.basic.button,
.ui.button.basic,
.ui.toggle.button,
.ui.compact.button {
  border: 1px solid var(--color-input-border-hover) !important;
  background: var(--color-button) !important;
  color: var(--color-text) !important;
  border-radius: var(--ef-radius-md) !important;
}
.ui.basic.button:hover,
.ui.button.basic:hover,
.ui.toggle.button:hover,
.ui.compact.button:hover {
  border-color: var(--color-primary) !important;
  color: var(--color-primary) !important;
}

/* Cards/panels: lift slightly above the ambient field with a warmer
 * raised surface (matches site --ember-bg-raised reading vs base). */
.ui.segment,
.ui.attached.segment,
.repository .repo-button-row,
.repo-description {
  background: var(--color-box-body) !important;
  border-color: var(--color-input-border) !important;
}

/* ─── Global polish to match the site's feel ─────────────────── */

/* Scrollbars: thin, accent-tinted thumb on raised bg (matches site) */
* {
  scrollbar-width: thin;
  scrollbar-color: color-mix(in srgb, var(--color-primary) 60%, transparent) var(--color-box-body);
}
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: var(--color-box-body); }
*::-webkit-scrollbar-thumb {
  background: color-mix(in srgb, var(--color-primary) 60%, transparent);
  border-radius: 999px;
  border: 2px solid var(--color-box-body);
}
*::-webkit-scrollbar-thumb:hover { background: var(--color-primary); }

/* Focus rings: ember-orange accent, never removed */
:focus-visible {
  outline: 2px solid var(--color-primary) !important;
  outline-offset: 2px;
  border-radius: var(--ef-radius-sm);
}

/* Primary buttons get the site's gradient + lift treatment */
.ui.primary.button,
.ui.primary.buttons .button {
  background: linear-gradient(135deg, var(--color-primary), var(--ef-accent-deep));
  border: 0;
  border-radius: var(--ef-radius-md);
  font-weight: 600;
  letter-spacing: 0.01em;
  box-shadow: 0 2px 8px var(--ef-glow);
  transition:
    transform var(--ef-motion-base) var(--ef-ease-warm),
    box-shadow var(--ef-motion-base) ease,
    background var(--ef-motion-base) ease;
}
.ui.primary.button:hover,
.ui.primary.buttons .button:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 22px var(--ef-shadow-card);
  background: linear-gradient(135deg, var(--color-primary-hover), var(--color-primary));
}

/* Secondary buttons: warm outlined with hover fill (matches site) */
.ui.button:not(.primary):not(.basic):not(.labeled.icon) {
  border-radius: var(--ef-radius-md);
  border: 1px solid var(--color-input-border-hover);
  transition:
    border-color var(--ef-motion-base) ease,
    background var(--ef-motion-base) ease,
    color var(--ef-motion-base) ease;
}
.ui.button:not(.primary):not(.basic):not(.labeled.icon):hover {
  border-color: var(--color-primary);
  background: var(--color-hover);
  color: var(--color-primary);
}

/* Cards & panels: lift on hover (matches site .sl-link-card behavior) */
.ui.card,
.ui.repository.list .item,
.flex-item.flex-item-flex {
  border-radius: var(--ef-radius-lg) !important;
  border: 1px solid var(--color-input-border) !important;
  transition:
    transform var(--ef-motion-slow) var(--ef-ease-warm),
    border-color var(--ef-motion-slow) ease,
    box-shadow var(--ef-motion-slow) ease;
}
.ui.card:hover,
.ui.repository.list .item:hover {
  transform: translateY(-2px);
  border-color: var(--color-input-border-hover) !important;
  box-shadow: 0 8px 24px var(--ef-shadow-card);
}

/* Inputs: rounded + warm focus glow */
.ui.input > input,
.ui.form input[type="text"],
.ui.form input[type="email"],
.ui.form input[type="password"],
.ui.form input[type="search"],
.ui.form textarea,
input[type="search"] {
  border-radius: var(--ef-radius-md) !important;
  transition:
    border-color var(--ef-motion-base) ease,
    box-shadow var(--ef-motion-base) ease;
}
.ui.input > input:focus,
.ui.form input:focus,
.ui.form textarea:focus,
input[type="search"]:focus {
  border-color: var(--color-primary) !important;
  box-shadow: 0 0 0 3px var(--ef-glow) !important;
  outline: none !important;
}

/* Inline code: site-style accent tint chip */
.markup code:not(pre code),
.repository .repo-button-row code {
  background: color-mix(in srgb, var(--color-primary) 10%, transparent);
  color: var(--color-primary);
  padding: 0.18em 0.4em;
  border-radius: var(--ef-radius-sm);
  font-size: 0.88em;
  font-weight: 500;
  border: 1px solid color-mix(in srgb, var(--color-primary) 20%, transparent);
}

/* ─── Site-style polish for signed-in pages ──────────────────── */

/* h2/h3 page headers get a short ember accent underline (matches
 * site's .sl-markdown-content h2::after treatment). */
.page-content h2:not(:empty),
.page-content h3:not(:empty),
.repository .header h1,
.dashboard h2 {
  position: relative;
}
.page-content h2:not(:empty)::after,
.page-content h3:not(:empty)::after,
.repository .header h1::after,
.dashboard h2::after {
  content: '';
  position: absolute;
  bottom: -6px;
  left: 0;
  width: 40px;
  height: 2px;
  background: var(--color-primary);
  border-radius: 2px;
}

/* Empty-state illustrations (inbox icon, "no data" SVGs) get ember tint. */
.empty-placeholder svg,
.empty.icon svg,
.empty.button > svg,
.message.empty svg,
.empty-placeholder .svg,
[role="main"] > .ui.center.aligned > .icon,
[role="main"] > .ui.center.aligned > .icon svg {
  color: var(--color-primary) !important;
  opacity: 0.55;
  transition: opacity var(--ef-motion-base) ease;
}
.empty-placeholder:hover svg,
.message.empty:hover svg {
  opacity: 0.8;
}

/* User/Org context header on dashboard (the "TysonTheEmber ▾" strip):
 * give it card treatment so it reads as a distinct surface. */
.dashboard.feeds .ui.context.label,
.dashboard.feeds > .ui.menu > .item.context-list,
.dashboard-navbar,
.secondary-nav {
  background: var(--color-card) !important;
  border: 1px solid var(--color-input-border) !important;
  border-radius: var(--ef-radius-lg) !important;
  padding: 0.6em 1em !important;
  transition: border-color var(--ef-motion-base) ease;
}
.dashboard-navbar:hover,
.secondary-nav:hover {
  border-color: var(--color-input-border-hover) !important;
}

/* Subtle ember accent line under the primary navbar (matches site
 * header.header border-bottom treatment). */
#navbar {
  border-bottom: 1px solid color-mix(in srgb, var(--color-primary) 18%, transparent);
}

/* Active navbar item gets a small accent bar under it. */
#navbar a.item.active {
  position: relative;
  color: var(--color-primary);
}
#navbar a.item.active::after {
  content: '';
  position: absolute;
  bottom: -1px;
  left: 1em;
  right: 1em;
  height: 2px;
  background: var(--color-primary);
  border-radius: 2px;
}

/* Sidebar menu items: warm accent on active item (matches site sidebar). */
.ui.vertical.menu .item.active,
.ui.vertical.menu .active.item {
  background: var(--color-hover) !important;
  color: var(--color-primary) !important;
  border-left: 3px solid var(--color-primary) !important;
  border-radius: 0 var(--ef-radius-md) var(--ef-radius-md) 0 !important;
  font-weight: 600;
}

/* Repo description / heading area: warm subtitle text. */
.repository .repo-title .description,
.repository .header > .description {
  color: var(--color-text-light);
  font-size: 1.05rem;
}

/* Slimmed footer brand label (populated by custom/footer.tmpl slimFooter()) */
.page-footer .ef-brand {
  color: var(--color-text);
  font-weight: 600;
  letter-spacing: 0.01em;
}
.page-footer .ef-version {
  color: var(--color-text-light-1);
  opacity: .7;
}

/* Reduce motion respects user preference */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    transition-duration: 120ms !important;
    animation-duration: 0.001ms !important;
  }
  .ui.card:hover,
  .ui.repository.list .item:hover,
  .ui.primary.button:hover {
    transform: none;
  }
}

/* ─── Grouped controls: square the inner corners ─────────────────
 * The button/input radius rules above apply a uniform corner radius
 * to every control. Forgejo (Fomantic-UI) builds segmented combos —
 * button groups, action inputs (the repo clone panel), and labeled
 * buttons (star/watch + their count) — whose INNER corners must be
 * square so adjacent controls sit flush. Re-assert that here: the
 * combo's outer corners keep the theme radius, inner corners go
 * square. !important is required to beat the blanket rules above. */

/* Horizontal button groups */
.ui.buttons:not(.vertical) > .button,
.ui.buttons:not(.vertical) > .dropdown {
  border-radius: 0 !important;
}
.ui.buttons:not(.vertical) > :first-child {
  border-top-left-radius: var(--ef-radius-md) !important;
  border-bottom-left-radius: var(--ef-radius-md) !important;
}
.ui.buttons:not(.vertical) > :last-child {
  border-top-right-radius: var(--ef-radius-md) !important;
  border-bottom-right-radius: var(--ef-radius-md) !important;
}

/* Action-input combos — e.g. the repo clone panel: HTTPS/SSH toggle,
 * URL field, copy button, and the "more operations" dropdown. */
.ui.action.input > input,
.ui.action.input > .button,
.ui.action.input > .dropdown {
  border-radius: 0 !important;
}
.ui.action.input > :first-child {
  border-top-left-radius: var(--ef-radius-md) !important;
  border-bottom-left-radius: var(--ef-radius-md) !important;
}
.ui.action.input > :last-child {
  border-top-right-radius: var(--ef-radius-md) !important;
  border-bottom-right-radius: var(--ef-radius-md) !important;
}

/* Labeled buttons — star / watch / fork rendered as one unified pill:
 * one continuous border of even thickness, with a single hairline
 * divider (the label's left border) between the action and the count. */
.ui.labeled.button > .button {
  border: 1px solid var(--color-input-border-hover) !important;
  border-right: 0 !important;
  border-radius: var(--ef-radius-md) 0 0 var(--ef-radius-md) !important;
  background: var(--color-button) !important;
}
.ui.labeled.button > .label {
  border: 1px solid var(--color-input-border-hover) !important;
  border-radius: 0 var(--ef-radius-md) var(--ef-radius-md) 0 !important;
  background: var(--color-button) !important;
  color: var(--color-text) !important;
}
.ui.labeled.button:hover > .button,
.ui.labeled.button:hover > .label {
  border-color: var(--color-primary) !important;
}

/* Clone panel: split the single bar into three distinct rounded groups
 * with breathing room between them —
 *   [HTTPS | SSH]   ·   [URL + copy]   ·   [more operations] */

/* Group 1 — HTTPS / SSH toggle */
.clone-panel #repo-clone-https {
  border-radius: var(--ef-radius-md) 0 0 var(--ef-radius-md) !important;
}
.clone-panel #repo-clone-ssh {
  border-radius: 0 var(--ef-radius-md) var(--ef-radius-md) 0 !important;
}
/* ...or fully rounded when the SSH button is not shown */
.clone-panel:not(:has(#repo-clone-ssh)) #repo-clone-https {
  border-radius: var(--ef-radius-md) !important;
}

/* Group 2 — URL field merged with the copy button, set apart from group 1 */
.clone-panel #repo-clone-url {
  border-radius: var(--ef-radius-md) 0 0 var(--ef-radius-md) !important;
  margin-left: 0.4rem !important;
}
.clone-panel #clipboard-btn {
  border-radius: 0 var(--ef-radius-md) var(--ef-radius-md) 0 !important;
}

/* Group 3 — more operations, set apart from group 2 */
.clone-panel.ui.action.input > .button.dropdown {
  border-radius: var(--ef-radius-md) !important;
  margin-left: 0.4rem !important;
}
