TorturedCats (talk | contribs) No edit summary |
TorturedCats (talk | contribs) (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- | .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- | .sf-hub-stewards-list small { color: var(--hub-slate); font: 500 .46rem/1.2 var(--hub-reading); letter-spacing: .03em; } | ||
.sf-hub- | |||
} | |||
.sf-hub- | |||
} | |||
.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 | .sf-hub-nav-item { min-width: 0; border-right: 1px solid var(--hub-line); border-bottom: 1px solid var(--hub-line); } | ||
.sf-hub-nav | .sf-hub-nav-item:nth-child(2n), .sf-hub-nav-item:last-child { border-right: 0; } | ||
.sf-hub-nav | .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: . | 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: | position: static; | ||
align-self: center; | |||
align-self: | |||
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 | .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 . | 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: . | .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: . | .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: . | .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: . | .sf-community strong { color: var(--hub-parchment); font-size: .88rem; } | ||
.sf-community small { color: var(--hub-slate); font-size: . | .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: . | .sf-category-list strong { color: var(--hub-parchment); font-size: .84rem; } | ||
.sf-category-list small { color: var(--hub-slate); font-size: . | .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: . | font-size: .75rem; | ||
line-height: 1.7; | line-height: 1.7; | ||
} | } | ||
.sf-hub-footer | .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 | .sf-hub-nav-item, .sf-hub-nav-item:nth-child(2n) { border-right: 1px solid var(--hub-line); border-bottom: 0; } | ||
.sf-hub-nav | .sf-hub-nav-item:last-child:nth-child(odd) { grid-column: auto; border-right: 0; } | ||
.sf-hub-nav a { min-height: | .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 | .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: | .sf-hub-brand { min-height: 64px; padding-block: 8px; } | ||
.sf-hub-nav { border-top: 0; } | .sf-hub-nav { border-top: 0; } | ||
.sf-hub-nav | .sf-hub-nav-item { border-left: 1px solid var(--hub-line); } | ||
.sf-hub-nav a { min-height: | .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- | .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 | .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: | .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; }
}
}