/* ============================================================
   CHRISTIAN GOBLIN — Design System
   main.css
   ============================================================ */

/* --- Google Fonts --- */
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Crimson+Text:ital,wght@0,400;0,600;1,400&family=Inter:wght@400;500&display=swap');

/* --- Tokens --- */
:root {
    /* Color */
    --bg:            #080808;
    --surface:       #111111;
    --surface-raised:#181818;
    --border:        rgba(201,168,76,.18);
    --border-hover:  rgba(201,168,76,.45);
    --gold:          #c9a84c;
    --gold-light:    #e0c16d;
    --gold-dim:      rgba(201,168,76,.55);
    --text:          #f0ede6;
    --muted:         #8a8070;
    --subtle:        rgba(240,237,230,.06);

    /* Type */
    --font-display:  'Cinzel', 'Palatino Linotype', serif;
    --font-body:     'Crimson Text', Georgia, serif;
    --font-ui:       'Inter', system-ui, sans-serif;

    /* Scale */
    --text-xs:   .75rem;
    --text-sm:   .875rem;
    --text-base: 1.125rem;
    --text-lg:   1.35rem;
    --text-xl:   1.75rem;
    --text-2xl:  2.25rem;
    --text-3xl:  3rem;
    --text-4xl:  4rem;
    --text-hero: clamp(3rem, 8vw, 6.5rem);

    /* Space */
    --space-xs:  .5rem;
    --space-sm:  1rem;
    --space-md:  1.75rem;
    --space-lg:  3rem;
    --space-xl:  5rem;
    --space-2xl: 8rem;

    /* Radii */
    --radius-sm: 4px;
    --radius-md: 8px;
    --radius-lg: 16px;

    /* Transitions */
    --ease: cubic-bezier(.25,.46,.45,.94);
    --dur:  .25s;
}

/* --- Reset --- */
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior: smooth; }

body {
    background: var(--bg);
    color: var(--text);
    font-family: var(--font-body);
    font-size: var(--text-base);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
    overflow-x: hidden;
}

img { display:block; max-width:100%; }
a   { color: inherit; text-decoration: none; }

/* --- Layout --- */
.container {
    width: min(1140px, 100% - 3rem);
    margin-inline: auto;
}

.section {
    padding-block: var(--space-xl);
}

/* --- Typography --- */
.display {
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: .04em;
    line-height: 1.1;
    color: var(--text);
}

.eyebrow {
    font-family: var(--font-ui);
    font-size: var(--text-xs);
    font-weight: 500;
    letter-spacing: .2em;
    text-transform: uppercase;
    color: var(--gold);
}

/* --- Divider — gold hairline with flanking ornaments --- */
.divider {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    margin-block: var(--space-lg);
    color: var(--gold-dim);
}
.divider::before,
.divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--border);
}
.divider-glyph {
    font-size: var(--text-lg);
    line-height: 1;
    opacity: .7;
}

/* ============================================================
   NAVBAR
   ============================================================ */
.cg-nav {
    position: fixed;
    top: 0;
    inset-inline: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-sm) var(--space-md);
    background: rgba(8,8,8,.85);
    backdrop-filter: blur(12px) saturate(1.2);
    -webkit-backdrop-filter: blur(12px) saturate(1.2);
    border-bottom: 1px solid var(--border);
    transition: border-color var(--dur) var(--ease);
}

.cg-nav__logo {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    transition: opacity var(--dur);
}
.cg-nav__logo:hover { opacity: .8; }
.cg-nav__logo img {
    height: 40px;
    width: auto;
    filter: drop-shadow(0 0 6px rgba(201,168,76,.35));
}
.cg-nav__logo span {
    font-family: var(--font-display);
    font-size: var(--text-sm);
    letter-spacing: .12em;
    color: var(--gold-light);
}

.cg-nav__links {
    list-style: none;
    display: flex;
    gap: var(--space-md);
    align-items: center;
}

.cg-nav__links a {
    font-family: var(--font-ui);
    font-size: var(--text-sm);
    font-weight: 500;
    letter-spacing: .08em;
    color: var(--muted);
    transition: color var(--dur) var(--ease);
    position: relative;
    padding-bottom: 2px;
}
.cg-nav__links a::after {
    content: '';
    position: absolute;
    bottom: -2px;
    left: 0;
    width: 0;
    height: 1px;
    background: var(--gold);
    transition: width var(--dur) var(--ease);
}
.cg-nav__links a:hover { color: var(--gold-light); }
.cg-nav__links a:hover::after { width: 100%; }
.cg-nav__links a.active { color: var(--gold-light); }
.cg-nav__links a.active::after { width: 100%; }


.open-beta-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    vertical-align: middle;
    margin-left: .55rem;
    padding: .18rem .45rem;
    border: 1px solid rgba(201,168,76,.42);
    border-radius: 999px;
    background: rgba(201,168,76,.10);
    color: var(--gold-light);
    font-family: var(--font-ui);
    font-size: .62rem;
    font-weight: 700;
    letter-spacing: .12em;
    line-height: 1.1;
    text-transform: uppercase;
    white-space: nowrap;
}
.tool-title-line {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .55rem;
}
.tool-title-line .open-beta-badge,
h1 .open-beta-badge,
h2 .open-beta-badge {
    margin-left: 0;
}
.cg-nav__links a {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
}
.cg-nav__links a .open-beta-badge {
    margin-left: 0;
    font-size: .56rem;
    padding: .14rem .36rem;
    opacity: .88;
}
.open-beta-note {
    margin-top: var(--space-md);
    max-width: 780px;
    padding: .8rem 1rem;
    border: 1px solid rgba(201,168,76,.28);
    border-radius: var(--radius-md);
    background: rgba(201,168,76,.08);
    color: var(--muted);
}
.open-beta-note strong { color: var(--gold-light); }

/* Hamburger — mobile */
.cg-nav__toggle {
    display: none;
    background: none;
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    padding: .4rem .6rem;
    cursor: pointer;
    color: var(--gold);
    font-size: 1.2rem;
}

@media (max-width: 720px) {
    .cg-nav__links {
        display: none;
        position: absolute;
        top: 100%;
        inset-inline: 0;
        flex-direction: column;
        padding: var(--space-sm);
        background: rgba(8,8,8,.97);
        border-bottom: 1px solid var(--border);
        gap: var(--space-sm);
    }
    .cg-nav__links.open { display: flex; }
    .cg-nav__toggle { display: block; }
}

/* ============================================================
   FOOTER
   ============================================================ */
.cg-footer {
    border-top: 1px solid var(--border);
    padding-block: var(--space-lg);
    text-align: center;
}

.cg-footer__logo {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    margin-bottom: var(--space-md);
    opacity: .7;
    transition: opacity var(--dur);
}
.cg-footer__logo:hover { opacity: 1; }
.cg-footer__logo img { height: 32px; filter: grayscale(1) brightness(.8); }
.cg-footer__logo span {
    font-family: var(--font-display);
    font-size: var(--text-sm);
    letter-spacing: .1em;
    color: var(--muted);
}

.cg-footer__links {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-sm) var(--space-md);
    margin-bottom: var(--space-md);
}
.cg-footer__links a {
    font-family: var(--font-ui);
    font-size: var(--text-xs);
    letter-spacing: .1em;
    color: var(--muted);
    transition: color var(--dur);
}
.cg-footer__links a:hover { color: var(--gold); }

.cg-footer__copy {
    font-family: var(--font-ui);
    font-size: var(--text-xs);
    color: #3a3530;
}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    font-family: var(--font-ui);
    font-size: var(--text-sm);
    font-weight: 500;
    letter-spacing: .08em;
    padding: .75rem 1.5rem;
    border-radius: var(--radius-md);
    border: none;
    cursor: pointer;
    transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), background var(--dur);
    text-decoration: none;
}
.btn:hover { transform: translateY(-2px); }

.btn-primary {
    background: var(--gold);
    color: #0a0806;
}
.btn-primary:hover {
    background: var(--gold-light);
    box-shadow: 0 8px 24px rgba(201,168,76,.3);
}

.btn-ghost {
    background: transparent;
    color: var(--gold);
    border: 1px solid var(--border-hover);
}
.btn-ghost:hover {
    background: rgba(201,168,76,.08);
    border-color: var(--gold);
}

/* ============================================================
   CARDS
   ============================================================ */
.card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    overflow: hidden;
    transition: border-color var(--dur) var(--ease), transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.card:hover {
    border-color: var(--border-hover);
    transform: translateY(-4px);
    box-shadow: 0 16px 40px rgba(0,0,0,.6), 0 0 0 1px rgba(201,168,76,.1);
}

.card__img {
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
    filter: brightness(.9) saturate(.85);
    transition: filter var(--dur) var(--ease);
}
.card:hover .card__img { filter: brightness(1) saturate(1); }

.card__body {
    padding: var(--space-md);
}
.card__eyebrow {
    font-family: var(--font-ui);
    font-size: var(--text-xs);
    letter-spacing: .15em;
    text-transform: uppercase;
    color: var(--gold);
    margin-bottom: .4rem;
}
.card__title {
    font-family: var(--font-display);
    font-size: var(--text-lg);
    font-weight: 600;
    margin-bottom: .5rem;
    letter-spacing: .04em;
}
.card__desc {
    font-size: var(--text-base);
    color: var(--muted);
    line-height: 1.6;
}

/* ============================================================
   HERO (index only)
   ============================================================ */
.hero {
    position: relative;
    min-height: 100svh;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    overflow: hidden;
    padding-top: 80px; /* navbar offset */
}

.hero__bg {
    position: absolute;
    inset: 0;
    background: url('/assets/images/background.png') center/cover no-repeat;
    filter: brightness(.35) saturate(.7);
    transform: scale(1.04);
    transition: transform 12s var(--ease);
}
.hero:hover .hero__bg { transform: scale(1); }

/* Vellum bleed — the signature element */
.hero__vellum {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 80% 60% at 50% 100%, rgba(8,8,8,1) 0%, transparent 70%),
        radial-gradient(ellipse 60% 40% at 50% 0%,   rgba(8,8,8,.7) 0%, transparent 65%);
    pointer-events: none;
}

.hero__content {
    position: relative;
    z-index: 2;
    max-width: 860px;
    padding: var(--space-lg);
}

.hero__logo {
    height: clamp(80px, 14vw, 140px);
    margin: 0 auto var(--space-md);
    filter: drop-shadow(0 0 20px rgba(201,168,76,.4));
    animation: logoGlow 4s ease-in-out infinite alternate;
}

@keyframes logoGlow {
    from { filter: drop-shadow(0 0 12px rgba(201,168,76,.25)); }
    to   { filter: drop-shadow(0 0 28px rgba(201,168,76,.6));  }
}

.hero__eyebrow {
    margin-bottom: var(--space-sm);
}

.hero__title {
    font-size: var(--text-hero);
    margin-bottom: var(--space-sm);
}

.hero__sub {
    font-size: var(--text-xl);
    font-style: italic;
    color: var(--muted);
    max-width: 600px;
    margin: 0 auto var(--space-lg);
    line-height: 1.6;
}

.hero__actions {
    display: flex;
    gap: var(--space-sm);
    justify-content: center;
    flex-wrap: wrap;
}

/* scroll cue */
.hero__scroll {
    position: absolute;
    bottom: var(--space-md);
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .4rem;
    color: var(--muted);
    font-family: var(--font-ui);
    font-size: var(--text-xs);
    letter-spacing: .15em;
    opacity: .6;
    animation: scrollBob 2s ease-in-out infinite;
}
.hero__scroll::after {
    content: '↓';
    font-size: 1rem;
}
@keyframes scrollBob {
    0%, 100% { transform: translateX(-50%) translateY(0); }
    50%       { transform: translateX(-50%) translateY(5px); }
}

/* ============================================================
   MISSION SECTION
   ============================================================ */
.mission {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-lg);
    align-items: center;
}

.mission__portrait {
    border-radius: var(--radius-lg);
    border: 1px solid var(--border);
    box-shadow: 0 0 60px rgba(0,0,0,.8);
    filter: sepia(.15) brightness(.9);
}

.mission__body .eyebrow { margin-bottom: var(--space-xs); }
.mission__body h2 {
    font-size: var(--text-3xl);
    margin-bottom: var(--space-sm);
}
.mission__body p {
    color: var(--muted);
    margin-bottom: var(--space-sm);
}
.mission__body p + p { margin-top: -.25rem; }

@media (max-width: 840px) {
    .mission { grid-template-columns: 1fr; }
    .mission__portrait { max-width: 280px; margin-inline: auto; }
}

/* ============================================================
   PRINCIPLES
   ============================================================ */
.principles {
    text-align: center;
}
.principles__header { margin-bottom: var(--space-lg); }
.principles__header h2 { font-size: var(--text-3xl); margin-top: var(--space-xs); }

.principles__grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: var(--space-md);
}

.principle-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: var(--space-md) var(--space-md) var(--space-lg);
    text-align: left;
    transition: border-color var(--dur) var(--ease);
}
.principle-card:hover { border-color: var(--border-hover); }

.principle-card__glyph {
    font-size: 2rem;
    margin-bottom: var(--space-sm);
    display: block;
}
.principle-card__title {
    font-family: var(--font-display);
    font-size: var(--text-base);
    letter-spacing: .06em;
    color: var(--gold-light);
    margin-bottom: .4rem;
}
.principle-card__body {
    font-size: var(--text-base);
    color: var(--muted);
    line-height: 1.6;
}

/* ============================================================
   FEATURED CARDS GRID (Projects)
   ============================================================ */
.cards-section__header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    margin-bottom: var(--space-lg);
    gap: var(--space-sm);
}
.cards-section__header h2 { font-size: var(--text-2xl); }

.cards-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: var(--space-md);
}

/* ============================================================
   CTA BANNER
   ============================================================ */
.cta-banner {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: var(--space-xl) var(--space-lg);
    text-align: center;
    position: relative;
    overflow: hidden;
}
.cta-banner::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(ellipse 70% 70% at 50% 50%, rgba(201,168,76,.04) 0%, transparent 70%);
    pointer-events: none;
}
.cta-banner h2 {
    font-size: var(--text-2xl);
    margin-bottom: var(--space-xs);
}
.cta-banner p {
    color: var(--muted);
    max-width: 500px;
    margin: 0 auto var(--space-md);
}

/* ============================================================
   PAGE HEADER (interior pages)
   ============================================================ */
.page-header {
    padding-top: calc(80px + var(--space-xl));
    padding-bottom: var(--space-lg);
    text-align: center;
    border-bottom: 1px solid var(--border);
    margin-bottom: var(--space-xl);
}
.page-header h1 { font-size: var(--text-3xl); margin-top: var(--space-xs); }
.page-header p  { color: var(--muted); max-width: 500px; margin: var(--space-sm) auto 0; }

/* ============================================================
   UTILITIES
   ============================================================ */
.text-gold   { color: var(--gold); }
.text-muted  { color: var(--muted); }
.text-center { text-align: center; }
.mt-sm { margin-top: var(--space-sm); }
.mt-md { margin-top: var(--space-md); }
.mt-lg { margin-top: var(--space-lg); }

/* ============================================================
   REDUCED MOTION
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}


/* ============================================================
   PUBLIC POLISH / ACCESSIBILITY
   ============================================================ */
:focus-visible {
    outline: 2px solid var(--gold-light);
    outline-offset: 3px;
}

.cg-skip-link {
    position: fixed;
    top: .75rem;
    left: .75rem;
    z-index: 1000;
    transform: translateY(-200%);
    background: var(--gold);
    color: #080808;
    padding: .65rem 1rem;
    border-radius: var(--radius-md);
    font-family: var(--font-ui);
    font-size: var(--text-sm);
    font-weight: 700;
}
.cg-skip-link:focus { transform: translateY(0); }

.cg-nav__toggle[aria-expanded="true"] {
    border-color: var(--gold);
    color: var(--gold-light);
}

.tool-category + .tool-category {
    margin-top: var(--space-xl);
}

.tool-category__intro {
    color: var(--muted);
    max-width: 720px;
    margin-top: var(--space-xs);
}

.card__meta {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    margin-top: var(--space-sm);
    font-family: var(--font-ui);
    font-size: var(--text-xs);
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--gold-dim);
}

.legal-page {
    max-width: 900px;
    margin-inline: auto;
}

.legal-page .content-card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: var(--space-lg);
    margin-bottom: var(--space-md);
}

.legal-page h2 {
    font-family: var(--font-display);
    font-size: var(--text-xl);
    color: var(--gold-light);
    margin-bottom: var(--space-xs);
}

.legal-page p,
.legal-page li {
    color: var(--muted);
}

.legal-page ul {
    padding-left: 1.25rem;
    margin-top: var(--space-xs);
}

.quick-links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-sm);
    justify-content: center;
    margin-top: var(--space-md);
}

@media (max-width: 720px) {
    .cg-nav__links a {
        display: inline-block;
        padding: .45rem .25rem;
    }
    .cards-section__header {
        align-items: flex-start;
        flex-direction: column;
    }
    .legal-page .content-card {
        padding: var(--space-md);
    }
}
