/*
Theme Name: Gustavus Maximus
Theme URI: https://gustavusmaximus.com
Description: Child theme of Twenty Twenty-Five for gustavusmaximus.com — obsidian marble, gilt, Vollkorn. Also restyles the CHEM 140 practice engine (.chem140) to match.
Author: Carlsbad Computer Services
Template: twentytwentyfive
Version: 1.0.1
Requires at least: 6.7
Tested up to: 6.8
Requires PHP: 8.1
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: gustavus-maximus
*/

/* ---------- tokens ---------- */
:root{
  --gm-obsidian:#141214; --gm-ash:#26232a; --gm-ash-2:#332f36;
  --gm-travertine:#ECE4D4; --gm-travertine-2:#b9b0a0;
  --gm-gilt:#C9A24C; --gm-gilt-bright:#E8C97A; --gm-gilt-dim:#8a6f2f;
  --gm-laurel:#6F8F5E; --gm-oxblood:#9E3B35; --gm-amber:#c98b2b;
  --gm-serif:var(--wp--preset--font-family--vollkorn, Vollkorn, "Iowan Old Style", Georgia, serif);
  --gm-sans:var(--wp--preset--font-family--fira-sans, "Fira Sans", system-ui, sans-serif);
}

/* ---------- marble ground ---------- */
body{background:var(--gm-obsidian);color:var(--gm-travertine);font-family:var(--gm-sans)}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(120% 80% at 10% 0%, rgba(201,162,76,.07), transparent 55%),
    radial-gradient(90% 70% at 100% 100%, rgba(236,228,212,.045), transparent 60%),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='400' height='400'><filter id='v'><feTurbulence type='fractalNoise' baseFrequency='0.004 0.012' numOctaves='3' seed='7' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .92  0 0 0 0 .89  0 0 0 0 .83  0 0 0 .055 0'/></filter><rect width='100%' height='100%' filter='url(%23v)'/></svg>");
  background-size:auto,auto,400px 400px}
.wp-site-blocks{background:transparent}
h1,h2,h3,h4{font-family:var(--gm-serif);font-weight:500;letter-spacing:-.005em;color:var(--gm-travertine)}
a{color:var(--gm-gilt)} a:hover{color:var(--gm-gilt-bright)}
::selection{background:var(--gm-gilt);color:var(--gm-obsidian)}
:focus-visible{outline:2px solid var(--gm-gilt-bright);outline-offset:3px}

/* ---------- header ---------- */
.gm-header{padding:1.4rem 0 1.1rem;border-bottom:1px solid rgba(201,162,76,.22)}
.gm-wordmark{display:inline-flex;align-items:center;gap:.55em;text-decoration:none;color:var(--gm-gilt);
  font-family:var(--gm-serif);font-weight:600;font-size:1.05rem;letter-spacing:.2em;line-height:1;
  text-shadow:0 1px 0 rgba(255,255,255,.08),0 -1px 0 rgba(0,0,0,.6)}
.gm-wordmark:hover{color:var(--gm-gilt-bright)}
.gm-wordmark i{display:inline-block;width:.42em;height:.42em;background:currentColor;
  clip-path:polygon(50% 0,100% 100%,0 100%);transform:translateY(-.04em)}
.gm-nav .wp-block-navigation-item__content{font-family:var(--gm-sans);font-size:.95rem;color:var(--gm-travertine-2);text-decoration:none;padding:.35em 0;border-bottom:1px solid transparent}
.gm-nav .wp-block-navigation-item__content:hover,.gm-nav .current-menu-item .wp-block-navigation-item__content{color:var(--gm-travertine);border-bottom-color:var(--gm-gilt)}

/* ---------- home ---------- */
.gm-home .gm-hero.gm-hero{padding:clamp(4rem,11vw,8.5rem) 0 clamp(2.5rem,6vw,4.5rem);margin:0}
.gm-h1{font-size:clamp(2.6rem,7vw,5.4rem);line-height:.98;margin:0 0 1.1rem;max-width:12ch}
.gm-lede{font-family:var(--gm-serif);font-size:clamp(1.15rem,2.1vw,1.45rem);line-height:1.5;color:var(--gm-travertine-2);max-width:34ch;margin:0 0 2.2rem}
.gm-cta{gap:.9rem}
.gm-cta .wp-block-button__link{font-family:var(--gm-serif);font-weight:600;font-size:1.05rem;border-radius:2px;padding:.85em 1.6em;transition:background-color .15s,color .15s}
.gm-btn-gilt .wp-block-button__link{background:var(--gm-gilt);color:var(--gm-obsidian);border:1px solid var(--gm-gilt)}
.gm-btn-gilt .wp-block-button__link:hover{background:var(--gm-gilt-bright);border-color:var(--gm-gilt-bright);color:var(--gm-obsidian)}
.gm-btn-ghost .wp-block-button__link{background:transparent;color:var(--gm-travertine);border:1px solid rgba(236,228,212,.35)}
.gm-btn-ghost .wp-block-button__link:hover{border-color:var(--gm-gilt);color:var(--gm-gilt-bright)}
.gm-meander{height:12px;margin:0 0 3.6rem;opacity:.7;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='12' viewBox='0 0 24 12' fill='none' stroke='%23C9A24C' stroke-width='1'><path d='M0 11.5h11.5V.5H3.5v7h4v-3'/><path d='M12 .5h11.5v11H15.5v-7h4v3'/></svg>") repeat-x left center;background-size:24px 12px}
.gm-inside{display:grid;grid-template-columns:minmax(10rem,14rem) 1fr;gap:1rem 2.5rem;max-width:62rem;margin:0 0 5rem}
.gm-inside dt{font-family:var(--gm-serif);font-size:1.35rem;color:var(--gm-gilt);margin:0;padding-top:1rem;border-top:1px solid rgba(201,162,76,.22)}
.gm-inside dd{margin:0;padding-top:1.1rem;border-top:1px solid rgba(201,162,76,.22);color:var(--gm-travertine-2);max-width:60ch;line-height:1.6}
.gm-inside dt:first-of-type,.gm-inside dd:first-of-type{border-top:0;padding-top:0}
@media (max-width:640px){.gm-inside{grid-template-columns:1fr;gap:.3rem 0}.gm-inside dd{border-top:0;padding-top:.2rem;padding-bottom:1rem}.gm-inside dt{padding-top:1rem}}

/* ---------- pages (e.g. /practice/) ---------- */
.gm-page{padding:2.5rem 0 4rem}
.page-id-15 .gm-page-title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---------- footer ---------- */
.gm-footer{border-top:1px solid rgba(201,162,76,.22);padding:2rem 0 3rem;color:var(--gm-travertine-2);font-size:.9rem}
.gm-footer p{margin:0 0 .4rem;max-width:60ch}

/* ---------- CHEM 140 engine, re-skinned (plugin loads its CSS later; doubled class wins on specificity) ---------- */
.chem140.chem140,.chem140.chem140 *{font-family:var(--gm-sans)}
.chem140.chem140{--bg:transparent;--paper:#1b191d;--fg:var(--gm-travertine);--muted:var(--gm-travertine-2);--rule:rgba(201,162,76,.22);
  --accent:var(--gm-gilt);--accent-ink:var(--gm-obsidian);--good:var(--gm-laurel);--warn:var(--gm-amber);--bad:#d26a62;--soft:var(--gm-ash);--gold:var(--gm-gilt-bright);
  max-width:60rem;padding:0;border-radius:0;font-size:1.0625rem}
@media (prefers-color-scheme:dark){.chem140.chem140{--bg:transparent;--paper:#1b191d;--fg:var(--gm-travertine);--muted:var(--gm-travertine-2);--rule:rgba(201,162,76,.22);--accent:var(--gm-gilt);--accent-ink:var(--gm-obsidian);--good:var(--gm-laurel);--warn:var(--gm-amber);--bad:#d26a62;--soft:var(--gm-ash);--gold:var(--gm-gilt-bright)}}
.chem140.chem140 h1,.chem140.chem140 h2,.chem140.chem140 h3{font-family:var(--gm-serif);font-weight:500}
.chem140.chem140 h1{font-size:2.2rem}
.chem140.chem140 .eyebrow{font-family:var(--gm-serif);text-transform:none;letter-spacing:0;font-size:.95rem;color:var(--gm-gilt);font-weight:500}
.chem140.chem140 .card{border-radius:3px;background:var(--paper);border-color:var(--rule)}
.chem140.chem140 button,.chem140.chem140 .btn{border-radius:2px;font-family:var(--gm-serif);font-weight:600}
.chem140.chem140 button:hover:not(:disabled),.chem140.chem140 .btn:hover{background:var(--gm-gilt-bright);border-color:var(--gm-gilt-bright);color:var(--gm-obsidian)}
.chem140.chem140 button.ghost:hover:not(:disabled),.chem140.chem140 .btn.ghost:hover{background:transparent;color:var(--gm-gilt-bright)}
.chem140.chem140 nav.tabs button{font-family:var(--gm-serif);font-weight:500;font-size:1.02rem}
.chem140.chem140 nav.tabs button.on{color:var(--gm-gilt-bright);border-bottom-color:var(--gm-gilt)}
.chem140.chem140 .chip{border-radius:2px;background:transparent}
.chem140.chem140 .chip.on{background:var(--gm-gilt);color:var(--gm-obsidian)}
.chem140.chem140 input[type=text],.chem140.chem140 input[type=password],.chem140.chem140 input[type=email],.chem140.chem140 textarea{background:#0f0e10;border-radius:2px}
.chem140.chem140 input.mono,.chem140.chem140 .slider .val{font-family:var(--wp--preset--font-family--fira-code,"Fira Code",ui-monospace,monospace)}
.chem140.chem140 .progress i{background:var(--gm-gilt)}
.chem140.chem140 .pill.ok{background:var(--gm-laurel);color:#0f140d}
.chem140.chem140 .tile{border-radius:3px}
.chem140.chem140 .verdict{border-left:3px solid var(--gm-gilt);background:var(--paper)}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
