@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap');

@font-face {
    font-family: 'PPRG';
    src: url('Fonts/PPRightGrotesk-TallRegular.woff2') format('woff2');
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'PPRGFine';
    src: url('Fonts/PPRightGrotesk-TallRegular.woff2') format('woff2');
    font-weight: normal;
    font-style: normal;
}

:root {
    --bg-color: #F8F4FF; /* Very icy, ultra-light purple base */
    --text-color: #39234D;
    --accent-color: #40FDB4; /* Greenblue main */
    --accent-alt: #FF1C71; /* Magenta alt */
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    background-color: var(--bg-color);
    color: var(--text-color);
    font-family: 'Inter', sans-serif;
    overflow-x: hidden;
    overflow-y: scroll;
    cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><text y="24" font-size="24" style="filter: grayscale(1) opacity(0.8) brightness(0.6);">%F0%9F%92%A1</text></svg>') 16 16, auto;
    
    /* Graceful font loading: Hide body initially */
    opacity: 0;
    transition: opacity 0.5s cubic-bezier(0.8, 0, 0.2, 1);
}

body.fonts-loaded {
    opacity: 1; /* Fade in smoothly once fonts are ready */
}

a, button, .menu-toggle {
    cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><text y="24" font-size="24">%F0%9F%92%A1</text></svg>') 16 16, pointer;
}

.scroll-wrapper {
    position: relative;
    width: 100%;
}

.hero-sticky {
    position: sticky;
    top: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--bg-color); 
    z-index: 5;
    overflow: hidden;
}

.hero-sticky::before {
    content: '';
    position: absolute;
    width: 60vw;
    height: 60vw;
    max-width: 800px;
    max-height: 800px;
    border-radius: 50%;
    filter: blur(120px);
    opacity: 0.15;
    animation: floatingGlow 15s ease-in-out infinite alternate;
    pointer-events: none;
    background: var(--accent-color);
    top: -10%;
    left: -10%;
}

@keyframes floatingGlow {
    0% { transform: scale(1) translate(0, 0); }
    100% { transform: scale(1.1) translate(3%, 3%); }
}

/* Extends sticky hold long past animation, requiring a second explicit scroll activation to unlock the footer */
.scroll-spacer {
    display: none;
}

.text-container {
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    z-index: 10;
    max-width: 100vw;
    width: 100%;
    box-sizing: border-box;
    padding: 0 25px; /* Safely bounded intimately by the desktop limit margin */
}

.text-wrapper {
    display: inline-flex;
    flex-direction: column;
    width: auto;
    max-width: 100%;
}

.visual-container {
    font-family: 'PPRG', sans-serif;
    font-size: clamp(2rem, 14vw, 25rem); /* Giant scaled presence on desktop */
    line-height: 0.95;
    text-transform: uppercase;
    white-space: nowrap;
    display: flex;
    justify-content: center;
}

.measure-container {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    visibility: hidden;
    pointer-events: none;
}

.measure-word {
    display: inline-block;
    white-space: nowrap; 
}

/* Structure of a single character bounding box */
.char-wrapper {
    position: relative;
    display: inline-block;
    overflow: hidden;
    vertical-align: top;
    height: 1.25em; 
}

.sizing-char {
    visibility: hidden;
    display: inline-block;
}

.char-column {
    position: absolute;
    left: 50%;
    top: 0;
    display: flex;
    flex-direction: column;
    transform: translateX(-50%) translateY(0);
}

.char {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 1.25em; 
    line-height: 1.25em; 
}

.sizing {
    visibility: hidden;
    display: inline-block;
    white-space: pre; 
}

/* -- FOOTER -- */
.footer {
    position: relative;
    z-index: 10;
    height: 100vh; /* Fills screen fully upon arrival */
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: var(--text-color);
    color: var(--bg-color);
    padding: 4rem 2rem;
}

.footer-content {
    display: flex;
    flex-direction: column;
    gap: 3rem;
    max-width: 1200px;
    width: 100%;
    text-align: center;
}

.footer-address h4 {
    font-family: 'PPRGFine', sans-serif;
    font-weight: normal;
    text-transform: uppercase;
    font-size: 2rem;
    margin-bottom: 1rem;
}

.footer-address p {
    font-family: sans-serif;
    font-size: 1.2rem;
    line-height: 1.5;
    opacity: 0.8;
}

.footer-links {
    display: flex;
    flex-wrap: wrap;
    gap: 2rem;
    justify-content: center;
}

.footer-links a {
    color: var(--bg-color);
    text-decoration: none;
    font-size: 1.2rem;
    position: relative;
    transition: opacity 0.3s;
}

.footer-links a:hover {
    opacity: 0.7;
}

@media (min-width: 768px) {
    .footer-content {
        flex-direction: row;
        justify-content: space-between;
        text-align: left;
    }
    
    .footer-links {
        flex-direction: column;
        align-items: flex-end;
        gap: 1rem;
    }
}

/* -- GLOBAL NAVIGATION & COLLAPSIBLE MODULE -- */
.menu-toggle {
    display: none; /* Desktop default or Homepage hidden state */
}

.nav-links {
    display: block;
}

/* Homepage state: tack securely to corners */
.corner-menu {
    position: fixed;
    z-index: 10000;
}
.menu-tl { top: 25px; left: 25px; }
.menu-tr { top: 25px; right: 25px; }
.menu-bl { bottom: 25px; left: 25px; }
.menu-br { bottom: 25px; right: 25px; }

.corner-menu a {
    text-decoration: none;
    color: var(--text-color);
    font-family: 'Ginestra', sans-serif;
    font-size: 1.25rem;
    line-height: 1;
    text-transform: uppercase;
    padding: 0.5rem 0.75rem;
    border: 2px solid var(--text-color);
    background-color: var(--bg-color); 
    transition: all 0.2s ease;
    display: inline-block;
    box-shadow: 3px 3px 0 var(--text-color);
}

.corner-menu a:hover {
    background-color: var(--accent-color);
    color: var(--text-color);
    transform: translate(-3px, -3px);
    box-shadow: 6px 6px 0 var(--text-color);
}

/* Subpage Collapsible Hamburger Transformation */
body.is-subpage .menu-toggle {
    display: flex;
    position: fixed;
    top: 25px; right: 25px;
    z-index: 10002;
    background: var(--bg-color);
    border: 2px solid var(--text-color);
    padding: 0.5rem;
    width: 60px; height: 60px;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 6px;
    box-shadow: 4px 4px 0 var(--text-color);
    transition: all 0.2s ease;
}
body.is-subpage .menu-toggle:hover {
    transform: translate(-2px, -2px);
    box-shadow: 6px 6px 0 var(--text-color);
    background-color: var(--accent-color);
}
body.is-subpage .menu-toggle span {
    display: block; width: 35px; height: 3px; background: var(--text-color);
    transition: 0.3s;
}

body.is-subpage .nav-links {
    position: fixed;
    top: 0; right: -100%; width: 350px; height: 100vh;
    background: var(--bg-color);
    border-left: 2px solid var(--text-color);
    z-index: 10001;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 120px 2rem 2rem;
    transition: right 0.4s cubic-bezier(0.8, 0, 0.2, 1);
}
body.is-subpage #global-nav.nav-open .nav-links {
    right: 0;
}
body.is-subpage .corner-menu {
    position: relative; top: auto; left: auto; right: auto; bottom: auto;
    margin-bottom: 2rem;
}

@media (max-width: 600px) {
    .menu-tl { top: 15px; left: 15px; }
    .menu-tr { top: 15px; right: 15px; }
    .menu-bl { bottom: 15px; left: 15px; }
    .menu-br { bottom: 15px; right: 15px; }
    
    .corner-menu a {
        font-size: 1.15rem;
        padding: 0.5rem 0.75rem;
        box-shadow: 2px 2px 0 var(--text-color);
    }
    
    .corner-menu a:hover {
        background-color: var(--accent-color);
        color: var(--text-color);
        transform: translate(-2px, -2px);
        box-shadow: 4px 4px 0 var(--text-color);
    }

    body.is-subpage .menu-toggle {
        top: 15px; right: 15px;
    }
}

/* -- AJAX SPA SLOT TRANSITION COMPONENT -- */
.slot-transition {
    position: fixed;
    top: 0; left: 0; width: 100vw; height: 100vh;
    pointer-events: none;
    z-index: 99999; /* Elevated above all navigation and overlay boundaries */
    display: none;
    justify-content: stretch;
}
.t-col {
    flex: 1;
    height: 100vh;
    background-color: var(--accent-color);
    color: var(--text-color);
    font-family: 'Ginestra', sans-serif;
    font-size: clamp(1.5rem, 3vw, 2.5rem);
    line-height: 0.9;
    overflow: hidden;
    word-break: break-all;
    text-align: center;
    
    /* Animation engine coordinates */
    transform: translateY(100vh);
    transition: transform 0.35s cubic-bezier(0.8, 0, 0.2, 1);
}

/* Resize lock prevention: ensures banderoles don't slide visibly when vh changes during resize */
.slot-transition.no-transition .t-col {
    transition: none !important;
}

.slot-transition.active .t-col {
    transform: translateY(0vh);
}
.slot-transition.leaving .t-col {
    transform: translateY(-100vh);
}

/* -- GLOBAL DESIGN SYSTEM & METRICS -- */
.dummy-page {
    max-width: 900px;
    margin: 0 auto;
    padding: 10rem 2rem;
    min-height: 100vh;
}
/* GLOBAL TYPOGRAPHY REDUX */
h1 {
    font-family: 'PPRGFine', sans-serif !important;
    font-weight: normal !important;
    -webkit-font-smoothing: antialiased !important;
    color: var(--text-color);
    text-transform: uppercase;
    line-height: 0.9;
    letter-spacing: 0.05em;
    margin-top: 0;
    margin-bottom: 2rem;
    font-size: clamp(4rem, 10vw, 9rem);
}

h2, h3, h4 {
    font-family: 'PPRG', sans-serif !important;
    font-weight: normal !important;
    color: var(--text-color);
    text-transform: uppercase;
    line-height: 1;
    margin-top: 3.5rem;
    margin-bottom: 1.5rem;
}

h2 { font-size: clamp(2.5rem, 6vw, 5rem); }
h3 { font-size: clamp(1.8rem, 4vw, 3.5rem); line-height: 1.1;}
h4 { font-size: clamp(1.4rem, 3vw, 2.5rem); }

a {
    color: var(--text-color);
    text-decoration: none;
    transition: all 0.2s ease;
}

a:hover {
    color: var(--accent-color);
}



/* Base Body Flow */
.dummy-page p {
    font-family: 'Inter', sans-serif;
    font-size: 1.15rem;
    line-height: 1.6;
    margin-bottom: 1.5rem;
    max-width: 70ch; /* highly optimized editorial readable constraint */
}

/* Bullet Structure */
.dummy-page ul, .dummy-page ol {
    margin-bottom: 2rem;
    padding-left: 2.5rem;
    font-family: 'Inter', sans-serif;
    font-size: 1.15rem;
    line-height: 1.6;
    max-width: 70ch;
}
.dummy-page li {
    margin-bottom: 0.7rem;
}
.dummy-page ul {
    list-style-type: square; 
}

/* Embedded Media Modules */
.dummy-page figure {
    margin: 4rem 0;
    width: 100%;
}
.dummy-page img, .dummy-page video {
    max-width: 100%;
    height: auto;
    border: 2px solid var(--text-color);
    box-shadow: 10px 10px 0 var(--text-color); 
    display: block;
}
.dummy-page figcaption {
    font-family: 'Inter', sans-serif;
    font-size: 0.95rem;
    opacity: 0.8;
    margin-top: 1.5rem;
    text-align: right;
    font-style: italic;
    border-top: 1px solid var(--text-color);
    padding-top: 0.8rem;
}
.dummy-page .embed-container {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 cinematic absolute */
    height: 0;
    overflow: hidden;
    max-width: 100%;
    border: 2px solid var(--text-color);
    box-shadow: 10px 10px 0 var(--text-color);
    margin: 4rem 0;
}
.dummy-page .embed-container iframe {
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
}

/* Layout Quotation Framework */
.dummy-page blockquote {
    font-family: 'Ginestra', sans-serif;
    font-size: clamp(1.5rem, 3.5vw, 2.5rem);
    line-height: 1.1;
    text-transform: uppercase;
    padding: 2.5rem;
    margin: 4rem 0;
    border-left: 6px solid var(--text-color);
    background: transparent;
}

/* Standardized Inline Link Mechanics within paragraphs */
p a {
    color: var(--text-color);
    text-decoration: none;
    border-bottom: 2px solid var(--text-color);
    transition: all 0.2s ease;
    font-weight: 600;
}
p a:hover {
    background-color: var(--accent-color);
    color: var(--text-color);
    border-bottom-color: var(--text-color);
}

.back-link {
    font-family: 'PPRGFine', sans-serif !important;
    font-weight: normal !important;
    text-transform: uppercase;
    color: var(--text-color);
    text-decoration: none;
    display: inline-block;
    margin-top: 3rem;
    border-bottom: 2px solid var(--text-color);
    transition: all 0.2s ease;
}
.back-link:hover {
    background-color: var(--accent-color);
    color: var(--text-color);
    border-bottom-color: var(--text-color);
}

/* -- COOKIE BANNER -- */
#cookie-banner {
    position: fixed;
    bottom: 25px;
    left: 50%;
    transform: translateX(-50%) translateY(200%);
    background: var(--bg-color);
    border: 3px solid var(--text-color);
    padding: 2rem;
    z-index: 20000;
    width: 90%;
    max-width: 500px;
    box-shadow: 10px 10px 0 var(--text-color);
    transition: transform 0.5s cubic-bezier(0.8, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

#cookie-banner.visible {
    transform: translateX(-50%) translateY(0);
}

#cookie-banner h3 {
    font-family: 'Ginestra', sans-serif;
    text-transform: uppercase;
    font-size: 2rem;
    line-height: 1;
}

#cookie-banner p {
    font-family: 'Inter', sans-serif;
    font-size: 1rem;
    line-height: 1.4;
}

.cookie-buttons {
    display: flex;
    gap: 1rem;
}

.cookie-btn {
    flex: 1;
    font-family: 'Ginestra', sans-serif;
    text-transform: uppercase;
    padding: 0.8rem;
    background: var(--bg-color);
    border: 2px solid var(--text-color);
    cursor: pointer;
    font-size: 1.1rem;
    transition: all 0.2s;
    box-shadow: 4px 4px 0 var(--text-color);
}

.cookie-btn.accept {
    background: var(--accent-color);
}

.cookie-btn:hover {
    transform: translate(-2px, -2px);
    box-shadow: 6px 6px 0 var(--text-color);
    color: var(--text-color);
}

/* Pull tab */
#cookie-tab {
    position: fixed;
    top: 50%;
    left: 0;
    z-index: 19999;
    cursor: pointer;
    background: var(--bg-color);
    color: var(--text-color);
    border: 2px solid var(--text-color);
    border-top: none; /* Stick flush against browser frame when rotated */
    padding: 8px 16px;
    font-family: 'Inter', sans-serif; /* Diminished presence over Ginestra */
    text-transform: uppercase;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    transform-origin: 0 0;
    transform: rotate(-90deg) translateX(-50%) translateY(-100%);
    transition: transform 0.4s cubic-bezier(0.8,0,0.2,1), background 0.2s;
}

#cookie-tab.visible {
    transform: rotate(-90deg) translateX(-50%) translateY(0);
}

#cookie-tab:hover {
    background: var(--text-color);
    color: var(--bg-color);
}

@media (max-width: 600px) {
    .text-container {
        padding: 0; /* Full edge-to-edge spread */
    }
    
    .visual-container {
        font-size: 20vw; /* Massive scaling pushing completely to device boundaries */
    }

    #cookie-tab {
        top: auto;
        bottom: 0;
        left: 50%;
        transform: translateX(-50%) translateY(100%);
        transform-origin: center center;
        border: 2px solid var(--text-color);
        border-bottom: none; /* Flushes nicely against the bottom */
    }

    #cookie-tab.visible {
        transform: translateX(-50%) translateY(0);
    }
}
