MediaWiki:Common.css: Difference between revisions

MediaWiki interface page
No edit summary
(Anchor hero kicker to the artwork frame rather than the centered copy group)
 
(10 intermediate revisions by the same user not shown)
Line 1,870: Line 1,870:
   }
   }
}
}
/* ================================================================
/* ================================================================
   SINFAR WIKI MAIN v3.2 — RESPONSIVE PRODUCTION-READINESS PASS
   SINFAR WIKI MAIN v3.2 — RESPONSIVE PRODUCTION-READINESS PASS
Line 1,925: Line 1,929:
}
}


.sf-hub-brand-mark {
.sf-hub-stewards { display: grid; width: 100%; min-width: 0; gap: 6px; }
  flex: 0 0 auto;
.sf-hub-stewards-label { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--hub-verdigris); font: 700 .52rem/1.2 var(--hub-mono); letter-spacing: .15em; text-transform: uppercase; }
  margin-right: 13px;
.sf-hub-stewards-label strong { flex: none; color: var(--hub-rose); font-size: .49rem; letter-spacing: .12em; }
  color: var(--hub-brass-bright);
.sf-hub-stewards-list { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); border: 1px solid var(--hub-line); background: rgba(200,162,92,.025); }
  font-size: .96rem;
.sf-hub-stewards-list > div { display: grid; min-width: 0; gap: 2px; padding: 6px 5px 5px; border-right: 1px solid var(--hub-line); text-align: center; }
}
.sf-hub-stewards-list > div:last-child { border-right: 0; }
 
.sf-hub-stewards-list strong { overflow: hidden; color: var(--hub-brass-bright); font: 600 .6rem/1.15 var(--hub-mono); letter-spacing: .08em; text-overflow: ellipsis; text-transform: uppercase; }
.sf-hub-brand-copy { display: grid; min-width: 0; }
.sf-hub-stewards-list small { color: var(--hub-slate); font: 500 .46rem/1.2 var(--hub-reading); letter-spacing: .03em; }
.sf-hub-brand-copy strong {
  color: var(--hub-brass-bright);
  font: 400 clamp(1.25rem,5.8vw,1.65rem)/1 var(--hub-display);
  letter-spacing: .1em;
  text-transform: uppercase;
}
.sf-hub-brand-copy small {
  margin-top: 6px;
  overflow: hidden;
  color: var(--hub-parchment);
  font: 600 .53rem/1.25 var(--hub-reading);
  letter-spacing: .12em;
  text-transform: uppercase;
  text-overflow: ellipsis;
  white-space: nowrap;
}


.sf-hub-search {
.sf-hub-search {
Line 1,974: Line 1,962:
   border-top: 1px solid var(--hub-line);
   border-top: 1px solid var(--hub-line);
}
}
.sf-hub-nav span { min-width: 0; border-right: 1px solid var(--hub-line); border-bottom: 1px solid var(--hub-line); }
.sf-hub-nav-item { min-width: 0; border-right: 1px solid var(--hub-line); border-bottom: 1px solid var(--hub-line); }
.sf-hub-nav span:nth-child(2n), .sf-hub-nav span:last-child { border-right: 0; }
.sf-hub-nav-item:nth-child(2n), .sf-hub-nav-item:last-child { border-right: 0; }
.sf-hub-nav span:last-child:nth-child(odd) { grid-column: 1 / -1; }
.sf-hub-nav-item:last-child:nth-child(odd) { grid-column: 1 / -1; }
.sf-hub-nav a {
.sf-hub-nav a {
   display: grid;
   display: grid;
Line 1,983: Line 1,971:
   place-items: center;
   place-items: center;
   color: var(--hub-brass-bright) !important;
   color: var(--hub-brass-bright) !important;
   font-size: .69rem;
   font-size: .74rem;
   font-weight: 700;
   font-weight: 700;
  letter-spacing: .025em;
}
}
.sf-hub-nav a::after {
  display: block;
  width: 30px;
  height: 1px;
  margin-top: 7px;
  background: linear-gradient(90deg,transparent,var(--hub-brass-bright),transparent);
  opacity: .72;
  content: "";
}
.sf-hub-nav a:hover::after, .sf-hub-nav a:focus-visible::after { width: 46px; opacity: 1; }
.sf-hub-nav a:hover, .sf-hub-nav a:focus-visible { background: rgba(200,162,92,.08); }
.sf-hub-nav a:hover, .sf-hub-nav a:focus-visible { background: rgba(200,162,92,.08); }


Line 2,012: Line 2,011:
}
}
.sf-hub-hero-copy {
.sf-hub-hero-copy {
   position: relative;
   position: static;
  z-index: 2;
   align-self: center;
   align-self: end;
   justify-self: center;
   justify-self: center;
   width: min(92%,720px);
   width: min(92%,720px);
Line 2,020: Line 2,018:
   text-align: center;
   text-align: center;
}
}
.sf-hub-kicker, .sf-hub-heading > span {
.sf-hub-hero-lockup, .sf-hub-hero-copy > p, .sf-hub-primary { position: relative; z-index: 2; }
.sf-hub-hero-lockup { width: clamp(15rem,38vw,27rem); margin: 9px auto 7px; line-height: 0; }
.sf-hub-hero-lockup img { display: block; width: 100%; height: auto; filter: drop-shadow(0 3px 5px rgba(0,0,0,.94)) drop-shadow(0 0 13px rgba(230,201,135,.22)); }
.sf-hub-kicker, .sf-hub-heading-label {
   color: var(--hub-verdigris);
   color: var(--hub-verdigris);
   font: 700 .62rem/1.25 var(--hub-mono);
   font: 700 .68rem/1.3 var(--hub-mono);
   letter-spacing: .2em;
   letter-spacing: .2em;
   text-transform: uppercase;
   text-transform: uppercase;
}
.sf-hub-hero .sf-hub-kicker {
  position: absolute;
  top: clamp(18px,3vw,30px);
  left: 50%;
  z-index: 3;
  display: inline-flex;
  justify-content: center;
  max-width: calc(100% - 24px);
  padding: 5px 12px 4px;
  border: 1px solid var(--hub-line);
  background: rgba(7,9,14,.72);
  color: var(--hub-brass-bright);
  text-shadow: 0 1px 4px #000;
  transform: translateX(-50%);
  white-space: nowrap;
}
}
.sf-hub-hero h1 {
.sf-hub-hero h1 {
Line 2,087: Line 2,104:
}
}
.sf-task > span:last-child, .sf-access > span:last-child { display: grid; gap: 4px; min-width: 0; padding: 11px 12px; }
.sf-task > span:last-child, .sf-access > span:last-child { display: grid; gap: 4px; min-width: 0; padding: 11px 12px; }
.sf-task strong, .sf-access strong { color: var(--hub-parchment); font-size: .84rem; }
.sf-task strong, .sf-access strong { color: var(--hub-parchment); font-size: .88rem; }
.sf-task small, .sf-access small { color: var(--hub-slate); font-size: .7rem; line-height: 1.35; }
.sf-task small, .sf-access small { color: var(--hub-slate); font-size: .76rem; line-height: 1.45; }
.sf-task:hover, .sf-task:focus-within { border-color: var(--hub-line-strong); background: rgba(200,162,92,.06); }
.sf-task:hover, .sf-task:focus-within { border-color: var(--hub-line-strong); background: rgba(200,162,92,.06); }


Line 2,110: Line 2,127:
.sf-directory-head > span { display: grid; height: 100%; place-items: center; border-right: 1px solid var(--hub-line); color: var(--hub-brass-bright); }
.sf-directory-head > span { display: grid; height: 100%; place-items: center; border-right: 1px solid var(--hub-line); color: var(--hub-brass-bright); }
.sf-directory h3 { margin: 0; padding: 10px 12px; color: var(--hub-brass-bright); font: 400 1rem/1.2 var(--hub-display); }
.sf-directory h3 { margin: 0; padding: 10px 12px; color: var(--hub-brass-bright); font: 400 1rem/1.2 var(--hub-display); }
.sf-directory-links { display: grid; grid-template-columns: minmax(0,1fr); gap: 0; padding: 7px 14px 12px; color: var(--hub-parchment); font-size: .75rem; line-height: 1.75; }
.sf-directory-links { display: grid; grid-template-columns: minmax(0,1fr); gap: 0; padding: 7px 14px 12px; color: var(--hub-parchment); font-size: .8rem; line-height: 1.7; }
.sf-directory-links br { display: none; }
.sf-directory-links br { display: none; }
.sf-directory-links a { padding: 3px 0; text-decoration: underline; text-decoration-color: var(--hub-line-strong); text-underline-offset: 3px; }
.sf-directory-links a { padding: 3px 0; text-decoration: underline; text-decoration-color: var(--hub-line-strong); text-underline-offset: 3px; }
Line 2,117: Line 2,134:
.sf-community-grid { display: grid; grid-template-columns: minmax(0,1fr); gap: 7px; }
.sf-community-grid { display: grid; grid-template-columns: minmax(0,1fr); gap: 7px; }
.sf-community { display: grid; gap: 5px; min-width: 0; padding: 14px 15px; border: 1px solid var(--hub-line); border-left: 2px solid #9a6cac; background: rgba(15,19,29,.65); }
.sf-community { display: grid; gap: 5px; min-width: 0; padding: 14px 15px; border: 1px solid var(--hub-line); border-left: 2px solid #9a6cac; background: rgba(15,19,29,.65); }
.sf-community strong { color: var(--hub-parchment); font-size: .82rem; }
.sf-community strong { color: var(--hub-parchment); font-size: .88rem; }
.sf-community small { color: var(--hub-slate); font-size: .7rem; line-height: 1.4; }
.sf-community small { color: var(--hub-slate); font-size: .76rem; line-height: 1.45; }


/* Category registry */
/* Category registry */
.sf-category-list { display: grid; grid-template-columns: minmax(0,1fr); border-top: 1px solid var(--hub-line); }
.sf-category-list { display: grid; grid-template-columns: minmax(0,1fr); border-top: 1px solid var(--hub-line); }
.sf-category-list > div { display: grid; gap: 4px; min-width: 0; padding: 13px 14px; border-right: 1px solid var(--hub-line); border-bottom: 1px solid var(--hub-line); background: rgba(15,19,29,.45); }
.sf-category-list > div { display: grid; gap: 4px; min-width: 0; padding: 13px 14px; border-right: 1px solid var(--hub-line); border-bottom: 1px solid var(--hub-line); background: rgba(15,19,29,.45); }
.sf-category-list strong { color: var(--hub-parchment); font-size: .78rem; }
.sf-category-list strong { color: var(--hub-parchment); font-size: .84rem; }
.sf-category-list small { color: var(--hub-slate); font-size: .68rem; line-height: 1.4; }
.sf-category-list small { color: var(--hub-slate); font-size: .75rem; line-height: 1.45; }


/* Footer */
/* Footer */
Line 2,134: Line 2,151:
   border-top: 1px solid var(--hub-line-strong);
   border-top: 1px solid var(--hub-line-strong);
   color: var(--hub-slate);
   color: var(--hub-slate);
   font-size: .72rem;
   font-size: .75rem;
   line-height: 1.7;
   line-height: 1.7;
}
}
.sf-hub-footer > span:first-child { display: grid; gap: 2px; }
.sf-hub-footer-brand { display: grid; gap: 2px; }
.sf-hub-footer strong { color: var(--hub-brass-bright); font: 400 1rem/1.2 var(--hub-display); }
.sf-hub-footer strong { color: var(--hub-brass-bright); font: 400 1rem/1.2 var(--hub-display); }
.sf-hub-footer small { color: var(--hub-slate); }
.sf-hub-footer small { color: var(--hub-slate); }
Line 2,152: Line 2,169:
   .sf-hub-masthead { margin-inline: -16px; }
   .sf-hub-masthead { margin-inline: -16px; }
   .sf-hub-nav { grid-template-columns: repeat(5,minmax(0,1fr)); }
   .sf-hub-nav { grid-template-columns: repeat(5,minmax(0,1fr)); }
   .sf-hub-nav span, .sf-hub-nav span:nth-child(2n) { border-right: 1px solid var(--hub-line); border-bottom: 0; }
   .sf-hub-nav-item, .sf-hub-nav-item:nth-child(2n) { border-right: 1px solid var(--hub-line); border-bottom: 0; }
   .sf-hub-nav span:last-child:nth-child(odd) { grid-column: auto; border-right: 0; }
   .sf-hub-nav-item:last-child:nth-child(odd) { grid-column: auto; border-right: 0; }
   .sf-hub-nav a { min-height: 43px; }
   .sf-hub-nav a { min-height: 48px; }
   .sf-hub-hero { min-height: clamp(390px,50vw,550px); margin-top: 8px; }
   .sf-hub-hero { min-height: clamp(390px,50vw,550px); margin-top: 8px; }
   .sf-access-grid, .sf-directory-grid, .sf-community-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
   .sf-access-grid, .sf-directory-grid, .sf-community-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
   .sf-access:last-child:nth-child(odd), .sf-directory:last-child:nth-child(odd) { grid-column: auto; }
   .sf-access:last-child:nth-child(odd), .sf-directory:last-child:nth-child(odd) { grid-column: auto; }
   .sf-hub-footer { grid-template-columns: minmax(190px,.7fr) minmax(0,2fr); align-items: end; }
   .sf-hub-footer { grid-template-columns: minmax(190px,.7fr) minmax(0,2fr); align-items: end; }
   .sf-hub-footer > span:last-child { text-align: right; }
   .sf-hub-footer-links { text-align: right; }
}
}


Line 2,172: Line 2,189:
     grid-template-areas: "brand nav search";
     grid-template-areas: "brand nav search";
   }
   }
   .sf-hub-brand { min-height: 80px; }
   .sf-hub-brand { min-height: 64px; padding-block: 8px; }
   .sf-hub-nav { border-top: 0; }
   .sf-hub-nav { border-top: 0; }
   .sf-hub-nav span { border-left: 1px solid var(--hub-line); }
   .sf-hub-nav-item { border-left: 1px solid var(--hub-line); }
   .sf-hub-nav a { min-height: 80px; }
   .sf-hub-nav a { min-height: 64px; font-size: .78rem; }
   .sf-hub-hero { min-height: 520px; }
   .sf-hub-hero { min-height: 520px; }
   .sf-hub-hero-copy { padding-bottom: 42px; }
   .sf-hub-hero-copy { padding-block: 28px; }
}
}


Line 2,192: Line 2,209:
   @media screen and (min-width: 720px) {
   @media screen and (min-width: 720px) {
     .sf-hub-nav { grid-template-columns: repeat(5,minmax(0,1fr)); }
     .sf-hub-nav { grid-template-columns: repeat(5,minmax(0,1fr)); }
     .sf-hub-nav span:last-child:nth-child(odd) { grid-column: auto; border-right: 0; }
     .sf-hub-nav-item:last-child:nth-child(odd) { grid-column: auto; border-right: 0; }
     .sf-task-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
     .sf-task-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
     .sf-access-grid, .sf-directory-grid, .sf-community-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
     .sf-access-grid, .sf-directory-grid, .sf-community-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
Line 2,200: Line 2,217:
     .sf-hub-masthead { grid-template-columns: minmax(210px,.78fr) minmax(0,2.8fr) auto; grid-template-areas: "brand nav search"; }
     .sf-hub-masthead { grid-template-columns: minmax(210px,.78fr) minmax(0,2.8fr) auto; grid-template-areas: "brand nav search"; }
     .sf-hub-nav { border-top: 0; }
     .sf-hub-nav { border-top: 0; }
     .sf-hub-nav a { min-height: 80px; }
     .sf-hub-nav a { min-height: 64px; }
     .sf-task-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
     .sf-task-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
     .sf-directory-links { grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 14px; }
     .sf-directory-links { grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 14px; }
   }
   }
}
}

Latest revision as of 22:20, 5 August 2026

/* ============================================================
   Sinfar Wiki Visual System v3.0
   Unified Common.css Framework
   Scope doctrine:
   - New/refit pages use: <div class="sf-page">
   - Legacy pages may still use .sinfar-page / .sf-card / .sf-heading
   ============================================================ */




/* ============================================================
   1. DESIGN TOKENS
   ============================================================ */


:root {
  --sf-bg-page: #0f141b;
  --sf-bg-shell: #11161d;
  --sf-bg-panel: rgba(18, 14, 12, .78);
  --sf-bg-panel-solid: #181214;
  --sf-bg-panel-soft: rgba(216, 180, 106, .08);
  --sf-bg-hero: linear-gradient(135deg, #21150f, #3a2417);


  --sf-border: rgba(216, 180, 106, .28);
  --sf-border-strong: rgba(216, 180, 106, .48);
  --sf-border-muted: rgba(244, 239, 230, .09);


  --sf-text: #f4efe6;
  --sf-text-muted: #c9bda9;
  --sf-gold: #d8b46a;
  --sf-gold-bright: #f0d28a;
  --sf-link: #8fc6ff;
  --sf-link-hover: #b8d6ff;


  --sf-red: #9f4b3e;
  --sf-green: #2f5d3a;
  --sf-blue: #334e7a;
  --sf-purple: #60456f;


  --sf-radius-sm: 7px;
  --sf-radius-md: 10px;
  --sf-gap: 8px;
}




/* ============================================================
   2. SOVEREIGN PAGE SHELL
   ============================================================ */


.sf-page,
.sinfar-page {
  background: var(--sf-bg-shell);
  color: var(--sf-text);
  border: 1px solid var(--sf-border);
  border-radius: var(--sf-radius-md);
  padding: 16px;
  line-height: 1.45;
  font-size: 14px;
  box-shadow: 0 0 22px rgba(0,0,0,.35);
}


.sf-page *,
.sinfar-page * {
  box-sizing: border-box;
}


.sf-page a,
.sf-page a:visited,
.sf-page a.external,
.sf-page a.external:visited,
.sinfar-page a,
.sinfar-page a:visited,
.sinfar-page a.external,
.sinfar-page a.external:visited {
  color: var(--sf-link);
}


.sf-page a:hover,
.sinfar-page a:hover {
  color: var(--sf-link-hover);
  text-decoration: underline;
}


.sf-page code,
.sinfar-page code {
  background: #120d10;
  color: var(--sf-gold-bright);
  border: 1px solid var(--sf-border);
  border-radius: 4px;
  padding: 1px 4px;
}




/* ============================================================
   3. TYPOGRAPHY
   ============================================================ */


.sf-page h1,
.sf-page h2,
.sf-page h3,
.sinfar-page h1,
.sinfar-page h2,
.sinfar-page h3 {
  color: var(--sf-gold-bright);
}


.sf-section-title,
.sf-heading {
  color: var(--sf-gold-bright);
  border-bottom: 1px solid var(--sf-border-strong);
  margin: 18px 0 8px;
  padding-bottom: 3px;
  font-size: 1.45rem;
  line-height: 1.2;
}


.sf-subheading {
  color: var(--sf-gold-bright);
  margin: 10px 0 6px;
  font-size: 1.15rem;
}


.sf-muted {
  color: var(--sf-text-muted);
}


.sf-label,
.sf-name {
  color: var(--sf-gold-bright);
  font-weight: 700;
}


.sf-center {
  text-align: center;
}




/* ============================================================
   4. HEROES
   ============================================================ */


.sf-hero,
.sf-hero-compact {
  background: var(--sf-bg-hero);
  border: 1px solid var(--sf-border-strong);
  border-radius: var(--sf-radius-md);
  padding: 14px 18px;
  margin: 0 0 12px;
  text-align: center;
}


.sf-hero h1,
.sf-hero-compact h1,
.sf-title {
  color: var(--sf-gold-bright);
  margin: 0 0 4px;
  font-size: 1.85rem;
  line-height: 1.15;
}


.sf-hero p,
.sf-hero-compact p,
.sf-subtitle {
  color: var(--sf-text);
  margin: 0;
}


.sf-eyebrow {
  color: var(--sf-gold);
  text-transform: uppercase;
  font-size: .75rem;
  letter-spacing: .08em;
  font-weight: 800;
}


.sf-hero-main {
  padding: 22px;
}


.sf-hero-main h1 {
  font-size: 2.35rem;
}




/* ============================================================
   5. GRIDS / STATUS TILES
   ============================================================ */


.sf-grid-2,
.sf-grid-3,
.sf-grid-4,
.sf-grid-5,
.sf-status-grid,
.sf-start-status {
  display: grid;
  gap: var(--sf-gap);
  margin-bottom: 14px;
}


.sf-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sf-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sf-grid-4,
.sf-status-grid,
.sf-start-status { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sf-grid-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }


.sf-status-grid > div,
.sf-start-status > div {
  background: var(--sf-bg-panel);
  border: 1px solid var(--sf-border);
  border-radius: var(--sf-radius-sm);
  padding: 8px 10px;
}


.sf-status-grid b,
.sf-start-status b {
  color: var(--sf-gold-bright);
}


.sf-status-grid span,
.sf-start-status span {
  color: var(--sf-text);
}




/* ============================================================
   6. QUICKBARS / INDEX GRIDS
   ============================================================ */


.sf-quickbar,
.sf-index-grid {
  display: grid;
  gap: var(--sf-gap);
  margin: 0 0 14px;
}


.sf-quickbar {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}


.sf-index-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}


.sf-quickbar > div,
.sf-index-grid > div,
.sf-pathline {
  background: var(--sf-bg-panel);
  border: 1px solid var(--sf-border);
  border-left: 4px solid var(--sf-gold);
  border-radius: var(--sf-radius-sm);
  padding: 8px 10px;
  color: var(--sf-text);
}


.sf-quickbar b,
.sf-index-grid b {
  color: var(--sf-gold-bright);
}




/*
============================================================
   6A. REFERENCE MANUAL LAYOUT
   Reusable side directory for long technical documentation.
   ============================================================ */


.sf-manual-layout {
  display: grid;
  grid-template-columns: 240px minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}


.sf-manual-content {
  min-width: 0;
}


.sf-manual-content [id] {
  scroll-margin-top: 18px;
}


.sf-manual-toc {
  position: sticky;
  top: 12px;


  max-height: calc(100vh - 24px);
  overflow-y: auto;


  background: var(--sf-bg-panel);
  border: 1px solid var(--sf-border);
  border-radius: var(--sf-radius-md);
  padding: 12px;
}


.sf-manual-toc-title {
  color: var(--sf-gold-bright);
  font-size: 1rem;
  font-weight: 900;
  margin: 0 0 8px;
  padding-bottom: 7px;
  border-bottom: 1px solid var(--sf-border-strong);
}


.sf-manual-toc-group {
  color: var(--sf-gold);
  font-size: .72rem;
  font-weight: 900;
  letter-spacing: .06em;
  text-transform: uppercase;


  margin: 12px 0 4px;
}


.sf-manual-toc a,
.sf-manual-toc a:visited {
  display: block;
  padding: 5px 1px;


  color: var(--sf-link);
  border-bottom: 1px solid var(--sf-border-muted);


  font-size: .88rem;
  font-weight: 700;
  line-height: 1.25;
  text-decoration: none;
}


.sf-manual-toc a:hover {
  color: var(--sf-link-hover);
  text-decoration: none;
}


.sf-manual-example {
  background: rgba(216,180,106,.06);
  border: 1px solid var(--sf-border);
  border-left: 4px solid var(--sf-gold);
  border-radius: var(--sf-radius-sm);


  padding: 10px 12px;
  margin: 7px 0 9px;
}


.sf-manual-example > :first-child {
  margin-top: 0;
}


.sf-manual-example > :last-child {
  margin-bottom: 0;
}


.sf-color-swatch {
  display: inline-block;
  width: 22px;
  height: 14px;


  margin-right: 7px;
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 3px;


  vertical-align: -2px;
}


@media screen and (max-width: 900px) {
  .sf-manual-layout {
    grid-template-columns: 1fr;
  }


  .sf-manual-toc {
    position: static;
    max-height: none;
  }
}
/*
===========================================================
   7. DECISION PANELS
   ============================================================ */


.sf-decision-grid {
  display: grid;
  grid-template-columns: 1.25fr 1fr 1fr;
  gap: var(--sf-gap);
  margin-bottom: 14px;
}


.sf-decision,
.sf-card,
.sf-panel {
  background: var(--sf-bg-panel);
  border: 1px solid var(--sf-border);
  border-radius: var(--sf-radius-md);
  color: var(--sf-text);
  padding: 12px;
}


.sf-decision-primary {
  border-color: rgba(240,210,138,.58);
  background: linear-gradient(135deg, rgba(60,38,20,.88), rgba(18,14,12,.78));
}


.sf-decision-kicker {
  color: var(--sf-gold);
  text-transform: uppercase;
  font-size: .72rem;
  letter-spacing: .07em;
  font-weight: 800;
}


.sf-decision h3 {
  color: var(--sf-gold-bright);
  margin: 4px 0 6px;
}


.sf-decision p {
  margin: 0 0 10px;
  color: var(--sf-text);
}




/* ============================================================
   8. ACTION LISTS / BUTTONS
   ============================================================ */


.sf-action-list {
  list-style: none;
  margin: 12px 0 0 0;
  padding: 0;
  display: grid;
  gap: 8px;
}


.sf-action-list li {
  margin: 0;
  padding: 0;
}


.sf-action-list a,
.sf-action-list a:visited,
.sf-action-list a.external,
.sf-action-list a.external:visited {
  display: block;
  width: 100%;
  background: rgba(216,180,106,.10);
  border: 1px solid rgba(216,180,106,.32);
  border-radius: 7px;
  padding: 8px 11px;
  color: #8fc6ff;
  font-weight: 800;
  text-align: left;
  text-decoration: none;
}


.sf-action-list a:hover,
.sf-action-list a.external:hover {
  background: rgba(216,180,106,.16);
  border-color: rgba(240,210,138,.48);
  color: #b8d6ff;
  text-decoration: none;
}




/* ============================================================
   9. TABLES
   ============================================================ */


.sf-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  background: var(--sf-bg-panel);
  border: 1px solid var(--sf-border);
  color: var(--sf-text);
  margin-bottom: 12px;
}


.sf-table th {
  color: var(--sf-gold-bright);
  background: rgba(216,180,106,.14);
  border-bottom: 1px solid var(--sf-border-strong);
  padding: 8px 10px;
  text-align: left;
}


.sf-table td {
  color: var(--sf-text);
  border-bottom: 1px solid var(--sf-border-muted);
  padding: 7px 10px;
  vertical-align: top;
}


.sf-table tr:last-child td {
  border-bottom: 0;
}


.sf-table-scroll {
  width: 100%;
  overflow-x: auto;
  margin-bottom: 12px;
}


.sf-table-scroll .sf-table {
  min-width: 760px;
  margin-bottom: 0;
}


.sf-value,
.sf-good {
  text-align: center;
}


.sf-value {
  color: #f4c96b;
}


.sf-good {
  color: #9fe6bd;
}




/* Standard table column helpers */
.sf-channel-table th:nth-child(1),
.sf-channel-table td:nth-child(1) { width: 14%; }


.sf-channel-table th:nth-child(2),
.sf-channel-table td:nth-child(2) { width: 31%; }


.sf-channel-table th:nth-child(3),
.sf-channel-table td:nth-child(3) { width: 37%; }


.sf-channel-table th:nth-child(4),
.sf-channel-table td:nth-child(4) { width: 18%; }


.sf-setup-table th:nth-child(1),
.sf-setup-table td:nth-child(1) { width: 24%; }


.sf-setup-table th:nth-child(2),
.sf-setup-table td:nth-child(2) { width: 52%; }


.sf-setup-table th:nth-child(3),
.sf-setup-table td:nth-child(3) { width: 24%; }




/* ============================================================
   10. BADGES
   ============================================================ */


.sf-badge {
  display: inline-block;
  border-radius: 999px;
  padding: 2px 7px;
  margin: 1px 2px 1px 0;
  font-size: .78rem;
  font-weight: 800;
  white-space: nowrap;
}


.sf-badge-ic { background: #2f5d3a; color: #eaffef; }
.sf-badge-ooc { background: #334e7a; color: #eef4ff; }
.sf-badge-dm { background: #6f3b3b; color: #fff0f0; }
.sf-badge-range { background: #5f4c27; color: #fff2c2; }
.sf-badge-area { background: #60456f; color: #f7eaff; }
.sf-badge-support { background: #4e5563; color: #f0f3f8; }
.sf-badge-best { background: #6a5423; color: #fff0bd; }




/* ============================================================
   11. ALERTS / NOTES / RULES
   ============================================================ */


.sf-note,
.sf-alert,
.sf-warning,
.sf-rule {
  color: var(--sf-text);
  border-radius: var(--sf-radius-sm);
  padding: 8px 11px;
  margin: 8px 0;
}


.sf-note {
  background: var(--sf-bg-panel);
  border: 1px solid var(--sf-border);
  border-left: 4px solid var(--sf-gold);
}


.sf-alert,
.sf-warning {
  background: rgba(94,63,18,.35);
  border: 1px solid rgba(216,180,106,.24);
  border-left: 4px solid #d8a447;
}


.sf-alert b,
.sf-warning b {
  display: block;
  color: var(--sf-gold-bright);
  margin-bottom: 3px;
}


.sf-alert-info {
  background: rgba(38,58,92,.34);
  border-left-color: #6fa8dc;
}


.sf-alert-warning {
  background: rgba(94,63,18,.35);
  border-left-color: #d8a447;
}


.sf-alert-danger,
.sf-note--red {
  background: rgba(80,30,25,.30);
  border-left-color: var(--sf-red);
}


.sf-rule {
  border-left: 4px solid var(--sf-red);
  background: rgba(80,30,25,.30);
}




/* ============================================================
   12. PROGRESS LINES
   ============================================================ */


.sf-progress-line {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: var(--sf-gap);
  margin: 0 0 14px;
}


.sf-progress-line div {
  background: var(--sf-bg-panel);
  border: 1px solid var(--sf-border);
  border-radius: var(--sf-radius-sm);
  padding: 8px;
  text-align: center;
}


.sf-progress-line b {
  display: inline-block;
  width: 24px;
  height: 24px;
  border-radius: 999px;
  line-height: 24px;
  background: rgba(216,180,106,.24);
  color: var(--sf-gold-bright);
  margin-bottom: 4px;
}


.sf-progress-line span {
  display: block;
  color: var(--sf-text);
  font-size: .88rem;
}




/* ============================================================
   13. CODE / SCRIPTING DOCS
   ============================================================ */


.sf-codeblock,
.sf-codebox,
.sf-page pre,
.sinfar-page pre {
  background: #120d10;
  color: var(--sf-text);
  border: 1px solid var(--sf-border);
  border-radius: var(--sf-radius-sm);
  padding: 10px 12px;
  overflow-x: auto;
  line-height: 1.45;
}


.sf-codeblock code,
.sf-codebox code,
.sf-page pre code,
.sinfar-page pre code {
  background: transparent;
  border: 0;
  padding: 0;
  color: var(--sf-text);
}




/* 
============================================================
   14. IMAGES / SCREENSHOTS
   ============================================================ */


.sf-img-frame {
  background: var(--sf-bg-panel);
  border: 1px solid var(--sf-border);
  border-radius: var(--sf-radius-sm);
  padding: 6px;
  margin: 8px 0 12px;
}


.sf-img-frame img {
  max-width: 100%;
  height: auto;
  display: block;
  border-radius: 4px;
}
/* 




============================================================
   MAIN PAGE IMAGE SLOTS
   ============================================================ */


.sf-img-slot{
    position:relative;
    display:block;
    width:100%;
    overflow:hidden;


    border-radius:8px;
    border:1px solid var(--sf-border);


    background:#120d10;
}


.sf-main-page .sf-journey-img{
    aspect-ratio:16/9;
    margin:0 0 14px;
}


.sf-main-page .sf-feature-img{
    aspect-ratio:16/9;
    margin:0 0 12px;
}


.sf-img-slot img{
    display:block;
    width:100%;
    height:100%;
    object-fit:cover;
}




/* ============================================================
   15. CHAT CHANNEL COLOR LOCKS
   Match in-game channel color identity.
   ============================================================ */


.sf-chan {
  font-weight: 900;
  text-shadow: 0 1px 2px rgba(0,0,0,.8);
}


.sf-chan-shout   { color: #feef50; }
.sf-chan-dm      { color: #f67271; }
.sf-chan-event   { color: #ab23f2; }
.sf-chan-action  { color: #b56a23; }
.sf-chan-ooc     { color: #b1a2bd; }
.sf-chan-pvp     { color: #fe5f2e; }
.sf-chan-sex     { color: #f520e1; }
.sf-chan-build   { color: #b7f520; }
.sf-chan-ffa     { color: #20bff0; }


.sf-chan-talk    { color: #fefefe; }
.sf-chan-whisper { color: #b0b0b0; }
.sf-chan-quiet   { color: #777777; }
.sf-chan-silent  { color: #666666; }
.sf-chan-yell    { color: #d92324; }
.sf-chan-party   { color: #fefefe; }




/* ============================================================
   16. FOOTERS
   ============================================================ */


.sf-footerlinks,
.sf-footer {
  margin-top: 14px;
  padding-top: 10px;
  border-top: 1px solid var(--sf-border);
  color: var(--sf-gold);
}


.sf-footer {
  text-align: center;
  background: #120d10;
  padding: 12px 14px;
}




/* ============================================================
   17. LEGACY COMPATIBILITY
   Keeps older remaster pages readable without preserving chaos.
   ============================================================ */


.sf-card--gold,
.sf-table--gold {
  background: var(--sf-bg-panel);
  border-color: var(--sf-border);
}


.sf-card--green,
.sf-table--green {
  background: rgba(17,26,18,.82);
  border-color: rgba(68,107,53,.72);
}


.sf-card--blue,
.sf-table--blue {
  background: rgba(16,24,32,.82);
  border-color: rgba(52,87,122,.72);
}


.sf-card--red,
.sf-table--red {
  background: rgba(26,16,16,.82);
  border-color: rgba(122,52,47,.72);
}


.sf-card--purple,
.sf-table--purple {
  background: rgba(25,17,29,.82);
  border-color: rgba(91,59,120,.72);
}


.sf-heading--gold { color: var(--sf-gold-bright); border-bottom-color: var(--sf-border); }
.sf-heading--green { color: #91d38f; border-bottom-color: #446b35; }
.sf-heading--blue { color: #8fc6ff; border-bottom-color: #34577a; }
.sf-heading--red { color: #ff9c8f; border-bottom-color: #7a342f; }
.sf-heading--purple { color: #c49cff; border-bottom-color: #5b3b78; }


.sf-docket {
  width: 100%;
  background: var(--sf-bg-panel);
  color: var(--sf-text);
  border: 1px solid var(--sf-border);
  border-radius: var(--sf-radius-sm);
  margin: 9px 0 8px;
}


.sf-docket th {
  background: rgba(216,180,106,.14);
  color: var(--sf-gold-bright);
  text-align: left;
  padding: 9px 12px;
  border-bottom: 1px solid var(--sf-border);
}


.sf-docket td {
  background: rgba(18,14,12,.72);
  color: var(--sf-text);
  padding: 10px 12px;
}




/* ============================================================
   18. LISTS
   ============================================================ */


.sf-page ul,
.sf-page ol,
.sinfar-page ul,
.sinfar-page ol {
  margin: 6px 0 8px;
  padding-left: 22px;
}


.sf-page li,
.sinfar-page li {
  margin: 2px 0;
}




/* ============================================================
   19. MOBILE RULES
   ============================================================ */


@media screen and (max-width: 900px) {
  .sf-grid-4,
  .sf-grid-5,
  .sf-status-grid,
  .sf-start-status {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }


  .sf-decision-grid,
  .sf-index-grid {
    grid-template-columns: 1fr;
  }
}


@media screen and (max-width: 720px) {
  .sf-page,
  .sinfar-page {
    padding: 12px;
  }


  .sf-quickbar,
  .sf-grid-2,
  .sf-grid-3,
  .sf-grid-4,
  .sf-grid-5,
  .sf-status-grid,
  .sf-start-status,
  .sf-progress-line {
    grid-template-columns: 1fr;
  }


  .sf-table {
    table-layout: auto;
    font-size: .92rem;
  }


  .sf-channel-table th:nth-child(n),
  .sf-channel-table td:nth-child(n),
  .sf-setup-table th:nth-child(n),
  .sf-setup-table td:nth-child(n) {
    width: auto;
  }
}
/* ============================================================
   Sinfar Main Page Module v1.0
   Purpose: cinematic front-door layout for Main Page only.
   Requires wrapper: <div class="sf-page sf-main-page">
   ============================================================ */


.sf-main-page {
  max-width: 1320px;
  margin: 0 auto;
}


/* ---------- Cinematic Main Hero ---------- */

.sf-main-page .sf-hero-main {
  position: relative;
  isolation: isolate;

  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;

  width: 100%;
  aspect-ratio: 16 / 9;
  min-height: 0;

  margin: 0 0 18px;
  padding: 64px 48px;
  overflow: hidden;

  border-radius: 12px;
  background: #0b0d11;
  text-align: center;
}


/* ---------- Main Page Hero Artwork ---------- */

.sf-main-page .sf-hero-art-slot {
  position: absolute;
  inset: 0;
  z-index: 0;

  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;

  border: 0;
  border-radius: inherit;
  background: #0b0d11;
}

.sf-main-page .sf-hero-art-slot > a,
.sf-main-page .sf-hero-art-slot > span,
.sf-main-page .sf-hero-art-slot .mw-file-element {
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
}

.sf-main-page .sf-hero-art-slot img {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  margin: 0;
  padding: 0;

  object-fit: cover;
  object-position: center center;
}

/* Flat dark overlay for text readability. */

.sf-main-page .sf-hero-art-slot::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;

  background: rgba(5, 8, 12, .48);
  pointer-events: none;
}


/* Keep hero text above the artwork and overlay. */

.sf-main-page .sf-hero-main > :not(.sf-hero-art-slot) {
  position: relative;
  z-index: 2;
}


.sf-main-page .sf-hero-main h1 {
  margin: 0 0 6px;
  color: var(--sf-gold-bright);

  font-size: 3.15rem;
  line-height: 1.08;
  letter-spacing: .08em;
  text-transform: uppercase;

  text-shadow:
    0 2px 3px rgba(0,0,0,.95),
    0 0 14px rgba(0,0,0,.78);
}


.sf-main-page .sf-hero-main .sf-eyebrow,
.sf-main-page .sf-hero-main p {
  text-shadow: 0 2px 4px rgba(0,0,0,.95);
}


.sf-main-page .sf-hero-main p {
  max-width: 680px;
  margin: 0 0 12px;
  font-size: 1.08rem;
}


/* ---------- Main Page Journey Cards ---------- */


.sf-main-page .sf-decision-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  margin-bottom: 24px;
}


.sf-main-page .sf-decision {
  min-height: 300px;
  padding: 22px;
}


.sf-main-page .sf-decision h3 {
  font-size: 1.45rem;
}


/* ---------- Main Page Feature Cards ---------- */


.sf-main-page .sf-grid-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
  margin-bottom: 24px;
}


.sf-main-page .sf-card {
  min-height: 190px;
  padding: 20px;
}


.sf-main-page .sf-card h3 {
  color: var(--sf-gold-bright);
  margin: 0 0 8px;
  font-size: 1.25rem;
}


.sf-main-page .sf-card p {
  margin: 0 0 10px;
}


/* ---------- Main Page Action Links ---------- */


.sf-main-page .sf-action-links {
  margin-top: 12px;
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
  line-height: 1.8;
}


.sf-main-page .sf-action-links a,
.sf-main-page .sf-action-links a:visited,
.sf-main-page .sf-action-links a.external,
.sf-main-page .sf-action-links a.external:visited {
  background: transparent;
  border: 0;
  padding: 0;
  color: var(--sf-link);
  font-weight: 800;
  text-decoration: none;
}


.sf-main-page .sf-action-links a:hover,
.sf-main-page .sf-action-links a.external:hover {
  color: var(--sf-link-hover);
  text-decoration: underline;
}


/* ---------- Community Strip ---------- */


.sf-main-page .sf-quickbar {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}


/* ---------- Main Page Responsive Layout ---------- */

/* Split desktop, tablets, landscape */
@media screen and (min-width: 721px) and (max-width: 860px) {

  .sf-main-page .sf-decision-grid,
  .sf-main-page .sf-grid-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
  }

  .sf-main-page .sf-quickbar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .sf-main-page .sf-decision,
  .sf-main-page .sf-card {
    min-height: 0;
    padding: 16px;
  }

  .sf-main-page .sf-hero-main {
    aspect-ratio: 16 / 9;
    min-height: 0;
    padding: 32px 20px;
  }

  .sf-main-page .sf-hero-main h1 {
    font-size: 2.35rem;
  }
}


/* Phones */
@media screen and (max-width: 720px) {

  .sf-main-page .sf-decision-grid,
  .sf-main-page .sf-grid-3,
  .sf-main-page .sf-quickbar {
    grid-template-columns: 1fr;
  }

  .sf-main-page .sf-hero-main {
    aspect-ratio: 16 / 9;
    min-height: 0;
    padding: 24px 16px;
  }

  .sf-main-page .sf-hero-main h1 {
    font-size: 2.1rem;
  }
}


/* Small phones */
@media screen and (max-width: 520px) {

  .sf-main-page .sf-hero-main {
    padding: 18px 14px;
  }

  .sf-main-page .sf-hero-main .sf-eyebrow {
    font-size: .66rem;
  }

  .sf-main-page .sf-hero-main h1 {
    margin-bottom: 4px;
    font-size: 1.85rem;
  }

  .sf-main-page .sf-hero-main p {
    margin-bottom: 7px;
    font-size: .9rem;
  }
}

/* =========================================================
   MAIN PAGE COMMUNITY LINKS — DISCORD / PATREON
   ========================================================= */

.sf-main-page .community-link-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;

  width: 100%;
  max-width: 100%;
  margin: 8px 0 16px;
}

.sf-main-page .community-link {
  display: flex;
  align-items: center;
  justify-content: center;

  width: 100%;
  min-width: 0;
  min-height: 58px;
  padding: 8px 16px;
  overflow: hidden;

  border: 0;
  border-radius: 6px;
  box-sizing: border-box;
}

/* Control MediaWiki-generated wrappers around file images. */

.sf-main-page .community-link > p,
.sf-main-page .community-link > span,
.sf-main-page .community-link > a,
.sf-main-page .community-link .mw-file-description {
  display: flex;
  align-items: center;
  justify-content: center;

  width: 100%;
  min-width: 0;
  margin: 0;
  padding: 0;
}

.sf-main-page .community-link img,
.sf-main-page .community-link .mw-file-element {
  display: block;

  width: auto;
  height: 30px;
  max-width: 82%;
  margin: 0 auto;

  object-fit: contain;
}

.sf-main-page .community-link--discord {
  background-color: #5865f2;
}

.sf-main-page .community-link--patreon {
  background-color: #ff424d;
}

@media screen and (max-width: 520px) {
  .sf-main-page .community-link-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}
/* ============================================================
   MAIN PAGE — COLORED CARD SYSTEM
   Static layered gradients only. No glow, blur, or filters.
   ============================================================ */


/* ---------- Shared Card Construction ---------- */


.sf-main-page .sf-journey-card,
.sf-main-page .sf-feature-card {
  position: relative;
  overflow: hidden;
  isolation: isolate;


  background-color: #181214;
  background-image:
    linear-gradient(
      135deg,
      rgba(255,255,255,.025) 0%,
      transparent 34%,
      rgba(0,0,0,.12) 70%,
      rgba(0,0,0,.24) 100%
    ),
    repeating-linear-gradient(
      118deg,
      rgba(255,255,255,.014) 0,
      rgba(255,255,255,.014) 1px,
      transparent 1px,
      transparent 7px
    );


  border: 1px solid var(--sf-card-border, var(--sf-border));
}


/* Subtle inner line without glow or shadow. */
.sf-main-page .sf-journey-card::after,
.sf-main-page .sf-feature-card::after {
  content: "";
  position: absolute;
  inset: 4px;
  z-index: -1;


  pointer-events: none;
  border: 1px solid rgba(244,239,230,.035);
  border-radius: 6px;
}


/* ---------- Card Header ---------- */


.sf-main-page .sf-card-head {
  display: flex;
  align-items: center;
  gap: 10px;


  min-height: 48px;
  margin: -22px -22px 14px;
  padding: 10px 16px;


  background-color: var(--sf-card-head, rgba(216,180,106,.10));
  background-image:
    linear-gradient(
      90deg,
      rgba(255,255,255,.035),
      transparent 48%,
      rgba(0,0,0,.16)
    ),
    repeating-linear-gradient(
      120deg,
      rgba(255,255,255,.012) 0,
      rgba(255,255,255,.012) 1px,
      transparent 1px,
      transparent 6px
    );


  border-bottom: 1px solid var(--sf-card-border, var(--sf-border));
}


.sf-main-page .sf-card-head h3 {
  flex: 1;
  min-width: 0;
  margin: 0;


  color: var(--sf-gold-bright);
  font-size: 1.25rem;
  line-height: 1.15;
}


/* ---------- Header Icon Slot ---------- */


.sf-main-page .sf-card-icon {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: center;


  width: 38px;
  height: 38px;
}


.sf-main-page .sf-card-icon img,
.sf-main-page .sf-card-icon .mw-file-element {
  display: block;
  width: 100%;
  height: 100%;
  max-width: 100%;


  object-fit: contain;
}


/* ---------- Journey Cards ---------- */


.sf-main-page .sf-journey-card {
  --sf-card-border: rgba(216,180,106,.42);
  min-height: 100%;
}


/* ---------- Featured System Cards ---------- */


.sf-main-page .sf-feature-card {
  --sf-card-border: rgba(216,180,106,.34);


  display: flex;
  flex-direction: column;
  min-height: 100%;
  padding: 14px;
}


.sf-main-page .sf-feature-card .sf-card-head {
  min-height: 40px;
  margin: -14px -14px 12px;
  padding: 8px 11px;
  gap: 8px;
}


.sf-main-page .sf-feature-card .sf-card-head h3 {
  font-size: 1.02rem;
}


.sf-main-page .sf-feature-card .sf-card-icon {
  width: 23px;
  height: 23px;
}


.sf-main-page .sf-feature-card .sf-action-links {
  margin-top: auto;
  padding-top: 8px;
}


/* ============================================================
   CATEGORY THEMES
   ============================================================ */


/* New arrivals — crimson */
.sf-main-page .sf-theme-crimson {
  --sf-card-head: rgba(83,20,20,.92);
  --sf-card-border: rgba(155,69,57,.70);
  background-color: #1b1011;
}


/* Player resources — midnight blue */
.sf-main-page .sf-theme-blue {
  --sf-card-head: rgba(18,46,74,.94);
  --sf-card-border: rgba(62,104,143,.72);
  background-color: #101922;
}


/* Builder resources — forest green */
.sf-main-page .sf-theme-green {
  --sf-card-head: rgba(29,65,38,.94);
  --sf-card-border: rgba(65,110,67,.72);
  background-color: #111a14;
}


/* Community — royal purple */
.sf-main-page .sf-theme-purple {
  --sf-card-head: rgba(67,32,79,.94);
  --sf-card-border: rgba(104,68,124,.72);
  background-color: #19121d;
}


/* Housing — slate blue */
.sf-main-page .sf-theme-slate {
  --sf-card-head: rgba(40,57,72,.94);
  --sf-card-border: rgba(76,102,123,.72);
  background-color: #141a1f;
}


/* Businesses — warm tavern bronze */
.sf-main-page .sf-theme-bronze {
  --sf-card-head: rgba(83,52,24,.94);
  --sf-card-border: rgba(133,89,43,.72);
  background-color: #1d1610;
}


/* Character development — arcane violet */
.sf-main-page .sf-theme-arcane {
  --sf-card-head: rgba(68,42,88,.94);
  --sf-card-border: rgba(104,70,132,.72);
  background-color: #19131e;
}


/* Dungeon running — deep teal */
.sf-main-page .sf-theme-teal {
  --sf-card-head: rgba(21,62,66,.94);
  --sf-card-border: rgba(48,104,108,.72);
  background-color: #101b1c;
}


/* PvP — battle red */
.sf-main-page .sf-theme-battle {
  --sf-card-head: rgba(92,31,26,.94);
  --sf-card-border: rgba(145,65,54,.74);
  background-color: #1c1110;
}


/* Custom scripting — dark builder green */
.sf-main-page .sf-theme-script {
  --sf-card-head: rgba(37,67,42,.94);
  --sf-card-border: rgba(71,111,73,.72);
  background-color: #121a13;
}
/* ============================================================
   REFERENCE MANUAL — DEFINITIVE WIDTH CONTAINMENT
   Keeps later source examples from widening the entire manual.
   ============================================================ */


.sf-manual-page,
.sf-manual-layout,
.sf-manual-content,
.sf-manual-toc {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}


.sf-manual-layout {
  width: 100%;
}


.sf-manual-content {
  width: 100%;
  overflow: hidden;
}


/* Every direct manual component must be permitted to shrink. */
.sf-manual-content > *,
.sf-manual-example,
.sf-manual-page .sf-card,
.sf-manual-page .sf-note,
.sf-manual-page .sf-alert,
.sf-manual-page .sf-quickbar,
.sf-manual-page .sf-start-status,
.sf-manual-page .sf-progress-line,
.sf-manual-page .sf-img-frame,
.sf-manual-page .sf-footerlinks {
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
}


/* Ordinary prose and callout content must wrap. */
.sf-manual-page p,
.sf-manual-page li,
.sf-manual-page dd,
.sf-manual-page span,
.sf-manual-page .sf-note,
.sf-manual-page .sf-alert {
  overflow-wrap: anywhere;
  word-break: normal;
}


/* Preformatted source remains intact, but scrolls only
   inside its own code box. */
.sf-manual-page pre,
.sf-manual-page .sf-codeblock,
.sf-manual-page .sf-codebox {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;


  white-space: pre;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}


/* Inline code inside tables and paragraphs may wrap. */
.sf-manual-page :not(pre) > code {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}


/* Tables may never establish the width of the whole page. */
.sf-manual-page .sf-table {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  table-layout: fixed;
}


.sf-manual-page .sf-table th,
.sf-manual-page .sf-table td {
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: break-word;
}


/* Explicit wrapper for tables that genuinely need more width. */
.sf-manual-page .sf-table-scroll {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;


  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}


/* Desktop manual layout. */
@media screen and (min-width: 901px) {
  .sf-manual-layout {
    grid-template-columns: 240px minmax(0, 1fr);
  }
}


/* Mobile and narrow-tablet layout. */
@media screen and (max-width: 900px) {
  .sf-manual-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
    max-width: 100%;
  }


  .sf-manual-toc {
    position: static;
    width: 100%;
    max-width: 100%;
    max-height: none;
    overflow-x: hidden;
  }


  .sf-manual-content {
    width: 100%;
    max-width: 100%;
    overflow: hidden;
  }


  .sf-manual-page .sf-table th,
  .sf-manual-page .sf-table td {
    padding-left: 7px;
    padding-right: 7px;
  }


  /* Only deliberately wide tables scroll horizontally. */
  .sf-manual-page .sf-table-scroll .sf-table {
    width: 760px;
    min-width: 760px;
    max-width: none;
  }
}




/* ================================================================
   SINFAR WIKI MAIN v3.2 — RESPONSIVE PRODUCTION-READINESS PASS
   Complete premium-module replacement. Scoped to .sf-hub.
   ================================================================ */

.sf-hub {
  --hub-void: #07090e;
  --hub-void-2: #0b0f17;
  --hub-plate: #0f131d;
  --hub-plate-2: #141923;
  --hub-brass: #c8a25c;
  --hub-brass-bright: #e6c987;
  --hub-line: rgba(200,162,92,.28);
  --hub-line-strong: rgba(200,162,92,.5);
  --hub-verdigris: #57b7a3;
  --hub-parchment: #ece1c9;
  --hub-slate: #9ba3b4;
  --hub-rose: #e0788a;
  --hub-display: "Trajan Pro 3", "Cinzel", "Palatino Linotype", Palatino, Georgia, serif;
  --hub-reading: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --hub-mono: "Cascadia Code", "Cascadia Mono", Consolas, monospace;
  container: sf-hub / inline-size;
  overflow: clip;
  background:
    radial-gradient(circle at 50% 0, rgba(87,183,163,.04), transparent 34rem),
    var(--hub-void-2);
  color: var(--hub-parchment);
  font-family: var(--hub-reading);
}

.sf-hub *, .sf-hub *::before, .sf-hub *::after { box-sizing: border-box; }
.sf-hub p, .sf-hub h1, .sf-hub h2, .sf-hub h3 { margin-block-start: 0; }
.sf-hub a, .sf-hub a:visited { color: inherit; text-decoration: none; }
.sf-hub a:hover { color: var(--hub-brass-bright); }

/* Masthead */
.sf-hub-masthead {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  grid-template-areas: "brand search" "nav nav";
  margin-inline: -12px;
  border-block: 1px solid var(--hub-line);
  background: rgba(7,9,14,.98);
}

.sf-hub-brand {
  grid-area: brand;
  display: flex;
  align-items: center;
  min-width: 0;
  min-height: 70px;
  padding: 11px 14px;
  border-right: 1px solid var(--hub-line);
}

.sf-hub-stewards { display: grid; width: 100%; min-width: 0; gap: 6px; }
.sf-hub-stewards-label { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--hub-verdigris); font: 700 .52rem/1.2 var(--hub-mono); letter-spacing: .15em; text-transform: uppercase; }
.sf-hub-stewards-label strong { flex: none; color: var(--hub-rose); font-size: .49rem; letter-spacing: .12em; }
.sf-hub-stewards-list { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); border: 1px solid var(--hub-line); background: rgba(200,162,92,.025); }
.sf-hub-stewards-list > div { display: grid; min-width: 0; gap: 2px; padding: 6px 5px 5px; border-right: 1px solid var(--hub-line); text-align: center; }
.sf-hub-stewards-list > div:last-child { border-right: 0; }
.sf-hub-stewards-list strong { overflow: hidden; color: var(--hub-brass-bright); font: 600 .6rem/1.15 var(--hub-mono); letter-spacing: .08em; text-overflow: ellipsis; text-transform: uppercase; }
.sf-hub-stewards-list small { color: var(--hub-slate); font: 500 .46rem/1.2 var(--hub-reading); letter-spacing: .03em; }

.sf-hub-search {
  grid-area: search;
  display: grid;
  place-items: center;
  padding: 10px 12px;
}
.sf-hub-search a {
  display: grid;
  min-height: 38px;
  padding: 0 13px;
  place-items: center;
  border: 1px solid var(--hub-line-strong);
  border-radius: 3px;
  color: var(--hub-brass-bright) !important;
  font-size: .72rem;
  font-weight: 700;
}

.sf-hub-nav {
  grid-area: nav;
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  border-top: 1px solid var(--hub-line);
}
.sf-hub-nav-item { min-width: 0; border-right: 1px solid var(--hub-line); border-bottom: 1px solid var(--hub-line); }
.sf-hub-nav-item:nth-child(2n), .sf-hub-nav-item:last-child { border-right: 0; }
.sf-hub-nav-item:last-child:nth-child(odd) { grid-column: 1 / -1; }
.sf-hub-nav a {
  display: grid;
  min-height: 40px;
  padding: 8px;
  place-items: center;
  color: var(--hub-brass-bright) !important;
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .025em;
}
.sf-hub-nav a::after {
  display: block;
  width: 30px;
  height: 1px;
  margin-top: 7px;
  background: linear-gradient(90deg,transparent,var(--hub-brass-bright),transparent);
  opacity: .72;
  content: "";
}
.sf-hub-nav a:hover::after, .sf-hub-nav a:focus-visible::after { width: 46px; opacity: 1; }
.sf-hub-nav a:hover, .sf-hub-nav a:focus-visible { background: rgba(200,162,92,.08); }

/* Hero */
.sf-hub-hero {
  position: relative;
  display: grid;
  min-height: clamp(290px,74vw,410px);
  margin: 10px 0 0;
  overflow: hidden;
  border: 1px solid var(--hub-line-strong);
  border-radius: 5px;
  background: var(--hub-void);
  isolation: isolate;
}
.sf-hub-hero-art, .sf-hub-hero-art > a, .sf-hub-hero-art > span,
.sf-hub-hero-art [typeof~="mw:File"], .sf-hub-hero-art .mw-file-description { position: absolute; inset: 0; display: block; }
.sf-hub-hero-art img, .sf-hub-hero-art .mw-file-element { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.sf-hub-hero::after {
  position: absolute;
  inset: 0;
  z-index: 1;
  content: "";
  background: linear-gradient(180deg,rgba(7,9,14,.08),rgba(7,9,14,.18) 40%,rgba(7,9,14,.82));
  pointer-events: none;
}
.sf-hub-hero-copy {
  position: static;
  align-self: center;
  justify-self: center;
  width: min(92%,720px);
  padding: 26px 16px 24px;
  text-align: center;
}
.sf-hub-hero-lockup, .sf-hub-hero-copy > p, .sf-hub-primary { position: relative; z-index: 2; }
.sf-hub-hero-lockup { width: clamp(15rem,38vw,27rem); margin: 9px auto 7px; line-height: 0; }
.sf-hub-hero-lockup img { display: block; width: 100%; height: auto; filter: drop-shadow(0 3px 5px rgba(0,0,0,.94)) drop-shadow(0 0 13px rgba(230,201,135,.22)); }
.sf-hub-kicker, .sf-hub-heading-label {
  color: var(--hub-verdigris);
  font: 700 .68rem/1.3 var(--hub-mono);
  letter-spacing: .2em;
  text-transform: uppercase;
}
.sf-hub-hero .sf-hub-kicker {
  position: absolute;
  top: clamp(18px,3vw,30px);
  left: 50%;
  z-index: 3;
  display: inline-flex;
  justify-content: center;
  max-width: calc(100% - 24px);
  padding: 5px 12px 4px;
  border: 1px solid var(--hub-line);
  background: rgba(7,9,14,.72);
  color: var(--hub-brass-bright);
  text-shadow: 0 1px 4px #000;
  transform: translateX(-50%);
  white-space: nowrap;
}
.sf-hub-hero h1 {
  margin: 7px 0 5px;
  color: var(--hub-brass-bright);
  font: 400 clamp(2.35rem,12vw,4.6rem)/.95 var(--hub-display);
  letter-spacing: .1em;
  text-shadow: 0 2px 8px #000;
  text-transform: uppercase;
}
.sf-hub-hero-copy > p { margin: 0 auto 15px; color: var(--hub-parchment); font-size: clamp(.86rem,2.8vw,1rem); }
.sf-hub-primary { display: inline-block; }
.sf-hub-primary a {
  display: grid;
  min-height: 42px;
  padding: 0 20px;
  place-items: center;
  border: 1px solid var(--hub-brass);
  background: rgba(7,9,14,.84);
  color: var(--hub-brass-bright) !important;
  font: 700 .74rem/1 var(--hub-display);
  letter-spacing: .08em;
  text-transform: uppercase;
}

/* Shared sections */
.sf-hub-section { padding: 34px 0 0; }
.sf-hub-heading { display: grid; gap: 6px; margin-bottom: 16px; }
.sf-hub-heading h2 {
  margin: 0;
  color: var(--hub-brass-bright);
  font: 400 clamp(1.35rem,5vw,1.85rem)/1.12 var(--hub-display);
  letter-spacing: .035em;
}
.sf-hub-heading h2::after {
  display: block;
  width: 56px;
  height: 1px;
  margin-top: 10px;
  background: linear-gradient(90deg,var(--hub-brass),transparent);
  content: "";
}

/* Tasks */
.sf-task-grid { display: grid; grid-template-columns: minmax(0,1fr); gap: 7px; }
.sf-task {
  display: grid;
  grid-template-columns: 44px minmax(0,1fr);
  align-items: center;
  min-height: 70px;
  border: 1px solid var(--hub-line);
  background: linear-gradient(180deg,rgba(15,19,29,.88),rgba(9,12,19,.94));
}
.sf-task-icon, .sf-access-icon {
  display: grid;
  width: 100%;
  height: 100%;
  place-items: center;
  border-right: 1px solid var(--hub-line);
  color: var(--hub-brass-bright);
  font: 400 1.05rem/1 var(--hub-display);
}
.sf-task > span:last-child, .sf-access > span:last-child { display: grid; gap: 4px; min-width: 0; padding: 11px 12px; }
.sf-task strong, .sf-access strong { color: var(--hub-parchment); font-size: .88rem; }
.sf-task small, .sf-access small { color: var(--hub-slate); font-size: .76rem; line-height: 1.45; }
.sf-task:hover, .sf-task:focus-within { border-color: var(--hub-line-strong); background: rgba(200,162,92,.06); }

/* Downloads and access */
.sf-access-grid { display: grid; grid-template-columns: minmax(0,1fr); gap: 7px; }
.sf-access {
  display: grid;
  grid-template-columns: 46px minmax(0,1fr);
  min-height: 72px;
  border: 1px solid var(--hub-line);
  background: linear-gradient(135deg,rgba(200,162,92,.07),rgba(15,19,29,.72));
}
.sf-access:hover, .sf-access:focus-within { border-color: var(--hub-line-strong); background: rgba(200,162,92,.08); }

/* Resource directories */
.sf-directory-grid { display: grid; grid-template-columns: minmax(0,1fr); gap: 10px; }
.sf-directory { --directory-accent: var(--hub-brass); min-width: 0; border: 1px solid var(--hub-line); border-top: 2px solid var(--directory-accent); background: linear-gradient(160deg,color-mix(in srgb,var(--directory-accent) 6%,var(--hub-plate)),var(--hub-void)); }
.sf-directory--blue { --directory-accent: #5e91b8; }
.sf-directory--green { --directory-accent: #6c9f62; }
.sf-directory-head { display: grid; grid-template-columns: 42px minmax(0,1fr); align-items: center; min-height: 62px; border-bottom: 1px solid var(--hub-line); }
.sf-directory-head > span { display: grid; height: 100%; place-items: center; border-right: 1px solid var(--hub-line); color: var(--hub-brass-bright); }
.sf-directory h3 { margin: 0; padding: 10px 12px; color: var(--hub-brass-bright); font: 400 1rem/1.2 var(--hub-display); }
.sf-directory-links { display: grid; grid-template-columns: minmax(0,1fr); gap: 0; padding: 7px 14px 12px; color: var(--hub-parchment); font-size: .8rem; line-height: 1.7; }
.sf-directory-links br { display: none; }
.sf-directory-links a { padding: 3px 0; text-decoration: underline; text-decoration-color: var(--hub-line-strong); text-underline-offset: 3px; }

/* Living world */
.sf-community-grid { display: grid; grid-template-columns: minmax(0,1fr); gap: 7px; }
.sf-community { display: grid; gap: 5px; min-width: 0; padding: 14px 15px; border: 1px solid var(--hub-line); border-left: 2px solid #9a6cac; background: rgba(15,19,29,.65); }
.sf-community strong { color: var(--hub-parchment); font-size: .88rem; }
.sf-community small { color: var(--hub-slate); font-size: .76rem; line-height: 1.45; }

/* Category registry */
.sf-category-list { display: grid; grid-template-columns: minmax(0,1fr); border-top: 1px solid var(--hub-line); }
.sf-category-list > div { display: grid; gap: 4px; min-width: 0; padding: 13px 14px; border-right: 1px solid var(--hub-line); border-bottom: 1px solid var(--hub-line); background: rgba(15,19,29,.45); }
.sf-category-list strong { color: var(--hub-parchment); font-size: .84rem; }
.sf-category-list small { color: var(--hub-slate); font-size: .75rem; line-height: 1.45; }

/* Footer */
.sf-hub-footer {
  display: grid;
  gap: 16px;
  margin-top: 36px;
  padding: 22px 0 8px;
  border-top: 1px solid var(--hub-line-strong);
  color: var(--hub-slate);
  font-size: .75rem;
  line-height: 1.7;
}
.sf-hub-footer-brand { display: grid; gap: 2px; }
.sf-hub-footer strong { color: var(--hub-brass-bright); font: 400 1rem/1.2 var(--hub-display); }
.sf-hub-footer small { color: var(--hub-slate); }
.sf-hub-footer a { color: var(--hub-parchment) !important; }

/* Responsive compositions */
@container sf-hub (min-width: 506px) {
  .sf-task-grid, .sf-community-grid, .sf-category-list { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .sf-access-grid, .sf-directory-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .sf-access:last-child:nth-child(odd), .sf-directory:last-child:nth-child(odd) { grid-column: 1 / -1; }
}

@container sf-hub (min-width: 666px) {
  .sf-hub-masthead { margin-inline: -16px; }
  .sf-hub-nav { grid-template-columns: repeat(5,minmax(0,1fr)); }
  .sf-hub-nav-item, .sf-hub-nav-item:nth-child(2n) { border-right: 1px solid var(--hub-line); border-bottom: 0; }
  .sf-hub-nav-item:last-child:nth-child(odd) { grid-column: auto; border-right: 0; }
  .sf-hub-nav a { min-height: 48px; }
  .sf-hub-hero { min-height: clamp(390px,50vw,550px); margin-top: 8px; }
  .sf-access-grid, .sf-directory-grid, .sf-community-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .sf-access:last-child:nth-child(odd), .sf-directory:last-child:nth-child(odd) { grid-column: auto; }
  .sf-hub-footer { grid-template-columns: minmax(190px,.7fr) minmax(0,2fr); align-items: end; }
  .sf-hub-footer-links { text-align: right; }
}

@container sf-hub (min-width: 910px) {
  .sf-task-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .sf-directory-links { grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 14px; }
}

@container sf-hub (min-width: 1138px) {
  .sf-hub-masthead {
    grid-template-columns: minmax(210px,.78fr) minmax(0,2.8fr) auto;
    grid-template-areas: "brand nav search";
  }
  .sf-hub-brand { min-height: 64px; padding-block: 8px; }
  .sf-hub-nav { border-top: 0; }
  .sf-hub-nav-item { border-left: 1px solid var(--hub-line); }
  .sf-hub-nav a { min-height: 64px; font-size: .78rem; }
  .sf-hub-hero { min-height: 520px; }
  .sf-hub-hero-copy { padding-block: 28px; }
}

/* Accessibility and static-motion lock */
.sf-hub a:focus-visible { outline: 2px solid var(--hub-verdigris); outline-offset: -3px; }
.sf-hub .sf-task, .sf-hub .sf-access, .sf-hub .sf-directory,
.sf-hub .sf-community, .sf-hub .sf-category-list > div, .sf-hub img, .sf-hub a { transform: none !important; transition: none !important; }

@media (prefers-reduced-motion: reduce) {
  .sf-hub *, .sf-hub *::before, .sf-hub *::after { scroll-behavior: auto !important; animation: none !important; transition: none !important; }
}

@supports not (container-type: inline-size) {
  @media screen and (min-width: 720px) {
    .sf-hub-nav { grid-template-columns: repeat(5,minmax(0,1fr)); }
    .sf-hub-nav-item:last-child:nth-child(odd) { grid-column: auto; border-right: 0; }
    .sf-task-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    .sf-access-grid, .sf-directory-grid, .sf-community-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
    .sf-category-list { grid-template-columns: repeat(2,minmax(0,1fr)); }
  }
  @media screen and (min-width: 1200px) {
    .sf-hub-masthead { grid-template-columns: minmax(210px,.78fr) minmax(0,2.8fr) auto; grid-template-areas: "brand nav search"; }
    .sf-hub-nav { border-top: 0; }
    .sf-hub-nav a { min-height: 64px; }
    .sf-task-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
    .sf-directory-links { grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 14px; }
  }
}