/* CollectionBuilder Custom SCSS */ /* ============================================================================ DESIGN SYSTEM VARIABLES ============================================================================ */ :root { /* COLORS - Base Palette */ --bg-black: #000000; --bg-soft-black: #0e0e0e; --text-white: #f5f5f5; --text-muted: #bfbfbf; --border-white: #ffffff; /* COLORS - Accent (use sparingly!) */ --accent-blue: #4da3ff; --accent-blue-dim: #3d8ace; --accent-blue-subtle: rgba(77, 163, 255, 0.15); /* TYPOGRAPHY - Font Sizes */ --text-xs: 0.7rem; /* labels, captions */ --text-sm: 0.8rem; /* small body, metadata */ --text-base: 0.98rem; /* body text */ --text-lg: 1.1rem; /* large body */ --text-xl: 1.25rem; /* page titles (non-home) */ --text-2xl: 1.5rem; /* section headers */ --text-3xl: clamp(2rem, 3.4vw, 3rem); /* home title */ /* TYPOGRAPHY - Weights & Spacing */ --font-normal: 400; --font-semibold: 600; --font-bold: 700; --letter-spacing-tight: 0.04em; --letter-spacing-normal: 0.08em; --letter-spacing-wide: 0.14em; --letter-spacing-wider: 0.16em; --letter-spacing-widest: 0.18em; /* SPACING SCALE (consistent increments) */ --space-xs: 0.25rem; /* 4px */ --space-sm: 0.5rem; /* 8px */ --space-md: 1rem; /* 16px */ --space-lg: 1.5rem; /* 24px */ --space-xl: 2rem; /* 32px */ --space-2xl: 2.5rem; /* 40px */ --space-3xl: 3rem; /* 48px */ /* BORDERS & RADIUS */ --border-radius: 4px; /* consistent everywhere */ --border-radius-lg: 10px; /* only for home title box */ --border-width: 1px; --border-color-subtle: rgba(255, 255, 255, 0.18); --border-color-normal: rgba(255, 255, 255, 0.35); --border-color-strong: rgba(255, 255, 255, 0.75); /* OPACITY LEVELS */ --opacity-subtle: 0.15; --opacity-muted: 0.35; --opacity-normal: 0.65; --opacity-strong: 0.85; --opacity-full: 1; /* TRANSITIONS */ --transition-fast: 150ms ease-out; --transition-normal: 200ms ease; --transition-slow: 300ms ease; /* OVERLAYS & BACKGROUNDS */ --overlay-dark: rgba(0, 0, 0, 0.45); --overlay-darker: rgba(0, 0, 0, 0.75); --overlay-darkest: rgba(0, 0, 0, 0.88); } /* ============================================================================ GLOBAL STYLES ============================================================================ */ body { background-color: var(--bg-black); color: var(--text-white); } input, textarea { color: white; } ::placeholder { color: rgba(255, 255, 255, var(--opacity-normal)); } /* ============================================================================ COLOR OVERRIDES ============================================================================ */ .navbar-brand, .navbar-brand a, .navbar-dark .navbar-brand, .navbar-dark .navbar-brand:focus, .navbar-dark .navbar-brand:hover { color: var(--border-white) !important; } .dropdown-item:hover { text-decoration: underline; } .text-muted { color: rgba(255, 255, 255, var(--opacity-normal)) !important; } header .navbar-brand, header .navbar-brand *, #home-banner-logo { color: var(--border-white) !important; } header a, header a * { color: var(--border-white) !important; } #header a, #header a * { color: var(--border-white) !important; } #title a.text-dark, #title a.text-dark:hover, #title a.text-dark:focus { color: var(--border-white) !important; } /* ============================================================================ FOOTER STYLING ============================================================================ */ .footer-top { align-items: stretch; } .footer-logo-spinner { display: flex; justify-content: flex-end; padding: var(--space-sm) 0; } .footer-logo-spinner video { width: 300px; max-width: 100%; height: auto; } @media (prefers-reduced-motion: reduce) { .footer-logo-spinner video { animation: none !important; filter: grayscale(30%); } } #footer-credits { text-align: center; margin-top: var(--space-md); } .bg-dark, .navbar-dark.bg-dark, footer.bg-dark { background-color: var(--bg-black) !important; } footer, #footer, .site-footer, #collection-footer { background-color: var(--bg-black) !important; color: var(--border-white); } footer a { color: var(--border-white); } footer a:hover { color: #cccccc; } /* ============================================================================ ITEM PAGE CARD FIXES ============================================================================ */ main[role="main"] .card.mb-4.text-center { background-color: transparent !important; border: none !important; box-shadow: none !important; } main[role="main"] .card.mb-4.text-center img { border-radius: var(--border-radius-lg); border: var(--border-width) solid var(--border-color-subtle); } main[role="main"] .text-center small { color: rgba(255, 255, 255, var(--opacity-strong)) !important; } /* ============================================================================ LINKS ============================================================================ */ a { text-decoration: underline; text-underline-offset: 0.18em; } .navbar a, #footer-nav a, .btn, .btn a, .card-title a, .browse .card-title a { text-decoration: none; } a:hover { color: var(--text-muted); } /* ============================================================================ BUTTONS - BASE STYLES ============================================================================ */ .btn, .btn-outline-secondary, .btn-outline-dark, .btn-outline-primary { background-color: transparent !important; color: var(--border-white) !important; border: var(--border-width) solid var(--border-white) !important; border-radius: var(--border-radius); } .btn:hover, .btn:focus, .btn-outline-secondary:hover, .btn-outline-secondary:focus, .btn-outline-dark:hover, .btn-outline-dark:focus, .btn-outline-primary:hover, .btn-outline-primary:focus { background-color: var(--border-white) !important; color: var(--bg-black) !important; text-decoration: none; } /* ============================================================================ BUTTONS - CARD SPECIFIC ============================================================================ */ .card .btn, .bg-white .btn, .bg-light .btn { background-color: transparent !important; color: var(--bg-black) !important; border-color: var(--bg-black) !important; } .card .btn:hover, .card .btn:focus, .bg-white .btn:hover, .bg-white .btn:focus, .bg-light .btn:hover, .bg-light .btn:focus { background-color: var(--bg-black) !important; color: var(--border-white) !important; } /* ============================================================================ BUTTONS - BROWSE PAGE ============================================================================ */ #browse .input-group .btn { background-color: var(--bg-black) !important; color: var(--border-white) !important; border: var(--border-width) solid var(--border-white) !important; border-radius: 0 !important; } #browse .input-group .btn:hover, #browse .input-group .btn:focus { background-color: var(--border-white) !important; color: var(--bg-black) !important; } /* ============================================================================ BUTTONS - NAVBAR SEARCH ============================================================================ */ .navbar .input-group .btn { border-radius: 0 var(--border-radius) var(--border-radius) 0; background-color: transparent !important; border: var(--border-width) solid var(--border-white) !important; color: var(--border-white) !important; } .navbar .btn .bi-search, .navbar .btn svg { color: var(--border-white) !important; fill: var(--border-white) !important; } /* ============================================================================ BUTTONS - ITEM PAGE ============================================================================ */ body.item-page main[role="main"] .text-center a.btn { display: inline-block; background-color: transparent !important; color: var(--border-white) !important; border: var(--border-width) solid var(--border-white) !important; border-radius: var(--border-radius); text-decoration: none; } body.item-page main[role="main"] .text-center a.btn:hover, body.item-page main[role="main"] .text-center a.btn:focus { background-color: var(--border-white) !important; color: var(--bg-black) !important; } main[role="main"] .card.mb-4.text-center .btn-group .btn-outline-primary { background-color: transparent !important; color: var(--border-white) !important; border: var(--border-width) solid var(--border-white) !important; border-radius: var(--border-radius); text-decoration: none; } main[role="main"] .card.mb-4.text-center .btn-group .btn-outline-primary:hover, main[role="main"] .card.mb-4.text-center .btn-group .btn-outline-primary:focus { background-color: var(--border-white) !important; color: var(--bg-black) !important; } /* ============================================================================ MAP PAGE ============================================================================ */ .leaflet-fusesearch-panel .search-input { color: var(--bg-black) !important; background-color: var(--border-white) !important; border: var(--border-width) solid #00000033; } .leaflet-fusesearch-panel .search-input::placeholder { color: #555555 !important; } /* ============================================================================ CAROUSEL BUTTONS ============================================================================ */ .carousel .btn, .carousel .btn-outline-primary { color: var(--border-white) !important; border: var(--border-width) solid var(--border-white) !important; background: rgba(0, 0, 0, 0.55) !important; backdrop-filter: blur(2px); } .carousel .btn:hover, .carousel .btn-outline-primary:hover { background: var(--border-white) !important; color: var(--bg-black) !important; } /* ============================================================================ TYPOGRAPHY ============================================================================ */ main h1, main h2, main h3 { letter-spacing: var(--letter-spacing-tight); } .section-label { font-size: var(--text-sm); letter-spacing: var(--letter-spacing-wider); text-transform: uppercase; } main p { font-size: var(--text-base); line-height: 1.6; } #metadata p, #metadata li { line-height: 1.5; } #metadata strong { letter-spacing: var(--letter-spacing-normal); text-transform: uppercase; font-size: var(--text-sm); } /* ============================================================================ HOME BANNER ============================================================================ */ #home-banner { position: relative; min-height: 380px; max-height: 580px; padding: var(--space-3xl) 0 var(--space-2xl); background-color: var(--bg-black); } #home-title-box { position: relative; } #home-title-box > .p-2 { display: inline-block; text-align: left; padding: var(--space-lg) var(--space-xl) !important; margin-left: var(--space-lg); background: var(--overlay-darkest) !important; border-radius: var(--border-radius-lg); border: var(--border-width) solid rgba(255, 255, 255, 0.25); } #home-title-box h1 { margin: 0; font-size: var(--text-3xl); text-align: left; letter-spacing: var(--letter-spacing-tight); font-weight: var(--font-bold); } #home-title-box h1 a { color: var(--border-white) !important; text-decoration: none; } #home-title-box p { margin: var(--space-sm) 0 0; font-size: 0.95rem; opacity: var(--opacity-strong); } @media (max-width: 767px) { #home-title-box { text-align: center; } #home-title-box > .p-2 { margin-left: 0; } } #home-banner { position: relative; } #home-banner .featured-image-label { position: absolute; bottom: 0.75rem; right: var(--space-md); padding: 0.15rem var(--space-md); background: var(--overlay-darker); } #home-banner .featured-image-label a { font-size: var(--text-xs); letter-spacing: var(--letter-spacing-widest); text-transform: uppercase; font-weight: var(--font-bold); color: var(--border-white) !important; text-decoration: none; } #home-banner .featured-image-label a:hover, #home-banner .featured-image-label a:focus { text-decoration: underline; } /* ============================================================================ PAGE HEADERS (NON-HOME) ============================================================================ */ main #title h1 { margin: 0; font-size: var(--text-xl); letter-spacing: var(--letter-spacing-tight); font-weight: var(--font-bold); text-transform: none; } main #title h1 a { color: var(--border-white) !important; text-decoration: none; } main #title p { margin: var(--space-sm) 0 0; font-size: 0.9rem; opacity: 0.8; } @media (max-width: 575px) { main #title { padding: 1.1rem 0 0.8rem; margin-bottom: var(--space-md); } main #title h1 { font-size: var(--text-xl); } } #title { padding: var(--space-lg) 0 1.1rem; border-bottom: var(--border-width) solid var(--border-color-subtle); margin-bottom: var(--space-lg); } #title h1 { margin: 0; font-size: var(--text-xl); letter-spacing: var(--letter-spacing-tight); font-weight: var(--font-bold); text-transform: none; } #title h1 a { color: var(--border-white) !important; text-decoration: none; } #title p { margin: var(--space-sm) 0 0; font-size: 0.9rem; opacity: 0.8; } @media (max-width: 575px) { #title { padding: 1.1rem 0 0.8rem; margin-bottom: var(--space-md); } #title h1 { font-size: var(--text-xl); } } /* ============================================================================ PORTFOLIO RETURN LINK ============================================================================ */ .portfolio-site-link { position: absolute; top: var(--space-md); right: 1.25rem; z-index: 10; font-size: var(--text-xs); letter-spacing: var(--letter-spacing-wide); text-transform: uppercase; font-weight: var(--font-semibold); color: rgba(255, 255, 255, var(--opacity-strong)); text-decoration: none; padding: var(--space-sm) var(--space-md); border: var(--border-width) solid var(--border-color-normal); border-radius: var(--border-radius); background: var(--overlay-dark); } .portfolio-site-link:hover, .portfolio-site-link:focus { color: var(--border-white); border-color: var(--border-color-strong); text-decoration: none; } @media (max-width: 575px) { .portfolio-site-link { font-size: 0.65rem; padding: 0.3rem var(--space-sm); top: 0.75rem; right: 0.75rem; } } /* ============================================================================ MODAL STYLES ============================================================================ */ .modal-content .card.mb-4.text-center small { color: var(--bg-black) !important; } .modal-header .small.text-muted { color: #555555 !important; } .modal-content .card.mb-4.text-center .btn-group .btn-outline-primary { background-color: transparent !important; color: var(--bg-black) !important; border: var(--border-width) solid var(--bg-black) !important; border-radius: var(--border-radius); text-decoration: none; } .modal-content .card.mb-4.text-center .btn-group .btn-outline-primary:hover, .modal-content .card.mb-4.text-center .btn-group .btn-outline-primary:focus { background-color: var(--bg-black) !important; color: var(--border-white) !important; } .modal-body .btn.btn-outline-secondary.btn-sm { background-color: transparent !important; color: var(--bg-black) !important; border: var(--border-width) solid var(--bg-black) !important; border-radius: var(--border-radius); text-decoration: none; } .modal-body .btn.btn-outline-secondary.btn-sm:hover, .modal-body .btn.btn-outline-secondary.btn-sm:focus { background-color: var(--bg-black) !important; color: var(--border-white) !important; } .modal-footer .btn.btn-secondary, .modal-footer .btn.btn-primary { background-color: transparent !important; color: var(--bg-black) !important; border: var(--border-width) solid var(--bg-black) !important; border-radius: var(--border-radius); text-decoration: none; } .modal-footer .btn.btn-secondary:hover, .modal-footer .btn.btn-secondary:focus { background-color: var(--bg-black) !important; color: var(--border-white) !important; } .modal-footer .btn.btn-primary:hover, .modal-footer .btn.btn-primary:focus { background-color: var(--bg-black) !important; color: var(--border-white) !important; } .modal, .modal * , .modal-backdrop { transition: none !important; animation: none !important; } html body main[role="main"] .modal-content .card.mb-4.text-center .btn-group .btn-outline-primary { background-color: transparent !important; color: var(--bg-black) !important; border: var(--border-width) solid var(--bg-black) !important; border-radius: var(--border-radius); text-decoration: none; } html body main[role="main"] .modal-content .card.mb-4.text-center .btn-group .btn-outline-primary:hover, html body main[role="main"] .modal-content .card.mb-4.text-center .btn-group .btn-outline-primary:focus { background-color: var(--bg-black) !important; color: var(--border-white) !important; } .modal .card.mb-4.text-center { transition: none !important; transform: none !important; box-shadow: none !important; } .modal .card.mb-4.text-center:hover { transform: none !important; box-shadow: none !important; } /* ============================================================================ CARD ANIMATIONS ============================================================================ */ main[role="main"] .card { transition: transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast); } main[role="main"] .card:hover { transform: translateY(-4px); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.45); border-color: var(--border-white); } /* Disable animations for compound cards */ main[role="main"] .row.row-cols-lg-4.g-2 .card, main[role="main"] .row.row-cols-lg-4.g-2 .card:hover { transform: none !important; box-shadow: none !important; border-color: var(--bg-black) !important; } .modal .card, .modal .card:hover { transform: none !important; box-shadow: none !important; border-color: inherit !important; transition: none !important; } /* ============================================================================ QUOTE STYLES - FOUR VARIATIONS ============================================================================ */ /* VARIATION 1: Line Accent (blue left border) */ .quote-line { margin: var(--space-xl) 0; padding-left: var(--space-lg); border-left: 4px solid var(--text-white); color: var(--text-white); } .quote-line p { margin: var(--space-sm) 0; font-size: var(--text-base); line-height: 1.6; } .quote-line .quote-attrib { font-size: var(--text-sm); color: var(--text-muted); font-style: italic; margin-top: var(--space-md); } /* VARIATION 2: Solid Box (white background) */ .quote-box { background-color: var(--text-white); color: var(--bg-black); padding: var(--space-xl) var(--space-xl); margin: var(--space-2xl) 0; border-radius: var(--border-radius); } .quote-box .quote-text { font-size: var(--text-lg); font-style: italic; margin-bottom: var(--space-md); line-height: 1.6; } .quote-box .quote-attrib { font-size: var(--text-sm); text-align: right; color: #555555; } /* VARIATION 3: Outline Box (transparent with blue border) */ .quote-outline { background-color: transparent; border: var(--border-width) solid var(--border-white); padding: var(--space-xl) var(--space-xl); margin: var(--space-2xl) 0; border-radius: var(--border-radius); position: relative; } .quote-outline::before { content: '"'; position: absolute; top: -0.5rem; left: var(--space-lg); font-size: 3rem; line-height: 1; color: var(--text-white); background: var(--bg-black); padding: 0 var(--space-sm); } .quote-outline .quote-text { font-size: var(--text-lg); font-style: italic; color: var(--text-white); margin-bottom: var(--space-md); line-height: 1.6; } .quote-outline .quote-attrib { font-size: var(--text-sm); text-align: right; color: var(--text-white); font-style: normal; text-transform: uppercase; letter-spacing: var(--letter-spacing-normal); } /* VARIATION 4: Minimal (subtle background glow) */ .quote-minimal { background: var(--accent-blue-subtle); border-left: 3px solid var(--accent-blue); padding: var(--space-lg) var(--space-xl); margin: var(--space-xl) 0; border-radius: var(--border-radius); } .quote-minimal .quote-text { font-size: var(--text-base); font-style: italic; color: var(--text-white); margin-bottom: var(--space-sm); line-height: 1.6; } .quote-minimal .quote-attrib { font-size: var(--text-xs); color: var(--accent-blue); font-style: normal; text-transform: uppercase; letter-spacing: var(--letter-spacing-wide); } blockquote { max-width: 700px; } /* ============================================================================ TABLE OF CONTENTS (ABOUT PAGE) ============================================================================ */ #about-toc { background-color: var(--bg-black); padding: var(--space-md); margin-bottom: var(--space-xl); position: sticky; top: var(--space-md); } #about-toc, #about-toc * { font-style: normal; } #about-toc-title .btn { background-color: var(--bg-black); color: var(--border-white); width: 100%; text-align: left; padding: var(--space-sm) 0.75rem; } #about-toc-title .btn:hover, #about-toc-title .btn:focus { background-color: #111111; } #about-toc-title svg { float: right; fill: var(--border-white); } #about-toc-list { background-color: var(--bg-black); padding-top: var(--space-md); } #about-toc-list ul { list-style: none; padding-left: 0; } #about-toc-list li { margin-bottom: 0.4rem; } /* TOC links */ #about-toc-list a { color: var(--border-white); text-decoration: none; font-size: var(--text-sm); line-height: 1.3; opacity: 0.3; position: relative; padding-left: 0.75rem; } #about-toc-list a:hover { opacity: 0.6; } /* Active section indicator */ #about-toc-list a.active { opacity: 1; } #about-toc-list a.active::before { position: absolute; left: 0; top: 0.25em; height: 1em; width: 3px; background-color: var(--border-white); } /* Nested hierarchy */ #about-toc-list ul ul { padding-left: var(--space-md); border-left: var(--border-width) solid #444444; margin-top: var(--space-xs); align-items: left; } #about-toc-list ul ul a { font-size: 0.75rem; } @media (max-width: 768px) { #about-toc { position: sticky; bottom: var(--space-md); margin-bottom: 0; z-index: 998; max-width: 95%; margin-left: auto; margin-right: auto; } } /* ============================================================================ ABOUT PAGE LAYOUT ============================================================================ */ #about-wrapper { display: grid; grid-template-columns: 250px 1fr; gap: var(--space-xl); } #about-contents-wrapper { max-width: 800px; padding: 0 var(--space-xl); margin: 0 auto; } #about-contents-wrapper ul { font-size: var(--text-base); } #about-contents-wrapper li { font-size: var(--text-base); } #about-contents-wrapper p { max-width: 70ch; line-height: 1.6; } @media (max-width: 992px) { #about-wrapper { display: block; } #about-contents-wrapper { max-width: 100%; padding: var(--space-md); } } /* ============================================================================ WRAPPED IMAGES ============================================================================ */ .float-img { max-width: 40%; margin: var(--space-sm) var(--space-lg) var(--space-md) 0; } .float-left { float: left; } .float-right { float: right; margin: var(--space-sm) 0 var(--space-md) var(--space-lg); } .float-img img { width: 100%; height: auto; display: block; } .float-img .caption { font-size: 0.75rem; color: var(--text-muted); margin-top: var(--space-xs); } .clearfix::after { content: ""; display: block; clear: both; } @media (max-width: 768px) { .float-img { float: none; max-width: 100%; margin: var(--space-md) 0; } } /* ============================================================================ TECHNICAL SECTION ============================================================================ */ #technical { background-color: #f8f9fa; color: var(--bg-black); } #technical .bg-white { background-color: var(--border-white) !important; color: var(--bg-black) !important; } #technical h3 { color: var(--bg-black); } #technical p { color: var(--bg-black); } /* ============================================================================ DONOR LIST ============================================================================ */ .donor-list { list-style: none; padding-left: 0; font-size: 0.9em; } .donor-list em { font-size: 0.95em; color: #555; } /* ============================================================================ NAVIGATION ============================================================================ */ /* Hamburger menu button */ .navbar-toggler { background-color: transparent !important; border: var(--border-width) solid rgba(255, 255, 255, 0.35) !important; border-radius: var(--border-radius); padding: var(--space-sm) 0.65rem; transition: all var(--transition-normal); } .navbar-toggler:hover, .navbar-toggler:focus { border-color: rgba(255, 255, 255, 0.75) !important; box-shadow: none !important; outline: none !important; } .navbar-toggler:focus { box-shadow: none; } /* Hamburger menu button */ .navbar-toggler { background-color: transparent !important; border: var(--border-width) solid rgba(255, 255, 255, 0.35) !important; border-radius: var(--border-radius); padding: var(--space-sm) 0.65rem; transition: all var(--transition-normal); } .navbar-toggler:hover, .navbar-toggler:focus { border-color: rgba(255, 255, 255, 0.75) !important; box-shadow: none !important; outline: none !important; } .navbar-toggler:focus { box-shadow: none; } /* Hamburger icon - custom 3 lines */ .navbar-toggler-icon { background-image: none !important; width: 20px; height: 14px; position: relative; display: inline-block; background-color: transparent !important; } /* Top line */ .navbar-toggler-icon::before { content: ''; position: absolute; width: 100%; height: 1px; top: 0; left: 0; background-color: rgba(255, 255, 255, 0.85); transition: background-color var(--transition-normal); } /* Bottom line */ .navbar-toggler-icon::after { content: ''; position: absolute; width: 100%; height: 1px; bottom: 0; left: 0; background-color: rgba(255, 255, 255, 0.85); transition: background-color var(--transition-normal); } /* Middle line - using a span */ .navbar-toggler-icon { background: linear-gradient( to bottom, transparent 0%, transparent 45%, rgba(255, 255, 255, 0.85) 45%, rgba(255, 255, 255, 0.85) 55%, transparent 55%, transparent 100% ) !important; } .navbar-toggler:hover .navbar-toggler-icon::before, .navbar-toggler:hover .navbar-toggler-icon::after { background-color: #ffffff; } .navbar-toggler:hover .navbar-toggler-icon { background: linear-gradient( to bottom, transparent 0%, transparent 45%, #ffffff 45%, #ffffff 55%, transparent 55%, transparent 100% ) !important; } .dropdown-header.nav-section-label { font-size: var(--text-xs); text-transform: uppercase; letter-spacing: var(--letter-spacing-normal); font-weight: var(--font-semibold); color: rgba(0,0,0,0.6); padding: var(--space-sm) var(--space-md); } .dropdown-header.nav-section-label:not(:first-child) { margin-top: var(--space-sm); border-top: var(--border-width) solid rgba(0,0,0,0.1); } /* ============================================================================ SPOTLIGHT FIXES ============================================================================ */ .spl-autofit { display: none !important; } /* ============================================================================ IMAGE CONTAINERS ============================================================================ */ .image-container { text-align: center; max-width: 90%; margin: 0 auto; } .image-container img { width: 100%; height: auto; } .image-container figcaption { font-size: 0.85rem; width: 100%; margin-top: var(--space-sm); text-align: center; } /* ============================================================================ GLOBAL MOBILE OVERFLOW FIX ============================================================================ */ /* Prevents ANY element from expanding the page width horizontally. This is the single most important rule for the zoom-out bug on mobile. */ html { overflow-x: hidden; box-sizing: border-box; } body { overflow-x: hidden; max-width: 100vw; /* Forces the body to respect the viewport in landscape too */ min-width: 0; } /* Catch-all: any block element that might overflow */ *, *::before, *::after { box-sizing: 100%; box-sizing: border-box; } /* Soakies page uses inline
elements with style="display: inline-block; max-width: 75%" These don't respect overflow-x on their parent. Force them to block on mobile. */ figure { max-width: 100% !important; } @media (max-width: 768px) { figure[style*="inline-block"] { display: block !important; } /* The grid figures on Soakies (side-by-side photos) stack on mobile */ figure[style*="grid-template-columns"] { display: block !important; } figure[style*="grid-template-columns"] > div { margin-bottom: 1rem; } figure[style*="grid-template-columns"] img { max-width: 100% !important; width: 100% !important; } } /* ============================================================================ SCROLL TO TOP - FULL STYLING (all viewports) ============================================================================ */ #scroll-to-top { position: fixed; bottom: 1.5rem; right: 1.5rem; z-index: 9999; width: 40px; height: 40px; /* No display rule here — JS toggles between none and block */ text-align: center; line-height: 40px; /* vertically centers the SVG without needing flex */ background: rgba(0, 0, 0, 0.65); border: var(--border-width) solid rgba(255, 255, 255, 0.35) !important; border-radius: 50%; color: rgba(255, 255, 255, 0.85) !important; text-decoration: none; transition: border-color var(--transition-normal), color var(--transition-normal), transform var(--transition-normal); margin: 0 !important; padding: 0 !important; } #scroll-to-top:hover { border-color: rgba(255, 255, 255, 0.75); color: #ffffff !important; transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } #scroll-to-top svg { width: 16px; height: 16px; fill: currentColor; } @media (max-width: 768px) { #scroll-to-top { bottom: 1rem; right: 1rem; width: 36px; height: 36px; line-height: 36px; /* must match height */ } } /* ============================================================================ LONG LINKS & BIBLIOGRAPHY - OVERFLOW FIX ============================================================================ */ /* Global link wrapping - catches everything */ a { word-wrap: break-word; overflow-wrap: break-word; } /* Bibliography section - Jekyll renders ### Bibliography as h3, content follows as

tags */ .bibliography, h3 + ol, h3 + ul, h3 + p { overflow-x: hidden; max-width: 100%; word-wrap: break-word; overflow-wrap: break-word; } /* Footnotes (extends your existing fix to be more thorough) */ .footnotes { overflow-x: hidden; max-width: 100%; } .footnotes p, .footnotes ol li { word-wrap: break-word; overflow-wrap: break-word; max-width: 100%; } .footnotes a { display: inline; word-wrap: break-word; overflow-wrap: break-word; max-width: 100%; } /* Jekyll footnote markers */ .footnote-ref, .footnote-backref { word-wrap: break-word; overflow-wrap: break-word; } /* Any

or

  • that contains long URLs */ p, li, td { word-wrap: break-word; overflow-wrap: break-word; } /* Tables - prevent horizontal overflow */ table { max-width: 100%; overflow-x: auto; display: block; } @media (max-width: 768px) { .footnotes p, .footnotes ol li { font-size: 0.875rem; } .footnotes a { font-size: 0.8rem; } }