/* ppuzzl.org - Bauhaus/Swiss Style Brutalist Design */
/* Palette: #F0F0F0 (Pale Gray), #1A2947 (Navy), #A64C3A (Sienna), #2B2B2B (Charcoal), #6B6B6B (Mid Gray), #D5D5D5 (Grid), #C44536 (Rust) */

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

:root {
    --pale-gray: #F0F0F0;
    --navy: #1A2947;
    --sienna: #A64C3A;
    --charcoal: #2B2B2B;
    --mid-gray: #6B6B6B;
    --grid-line: #D5D5D5;
    --rust: #C44536;
    --unit: 8px;
    --grid-cols: 4;
    --grid-rows: 6;
}

html {
    font-size: 16px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    background-color: var(--pale-gray);
    color: var(--charcoal);
    font-family: 'IBM Plex Sans', sans-serif;
    font-weight: 400;
    position: relative;
    overflow-x: hidden;
}

/* Persistent visible grid overlay */
.grid-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 1000;
    background-image:
        linear-gradient(to right, rgba(213, 213, 213, 0.15) 0.5px, transparent 0.5px),
        linear-gradient(to bottom, rgba(213, 213, 213, 0.15) 0.5px, transparent 0.5px);
    background-size: calc(100vw / 4) calc(100vh / 6);
}

/* Typography */
.hero-title,
.section-heading,
.method-title,
.system-name {
    font-family: 'Bebas Neue', sans-serif;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    line-height: 1.1;
    color: var(--navy);
}

.hero-title {
    font-size: clamp(2rem, 6vw, 3.5rem);
    font-weight: 700;
}

.section-heading {
    font-size: clamp(1.8rem, 5vw, 3rem);
    font-weight: 700;
}

.method-title,
.system-name {
    font-size: clamp(1.2rem, 2.5vw, 1.6rem);
    font-weight: 700;
    margin-bottom: calc(var(--unit) * 1);
}

.body-text {
    font-family: 'IBM Plex Sans', sans-serif;
    font-size: clamp(0.95rem, 1vw, 1.1rem);
    font-weight: 400;
    line-height: 1.5;
    color: var(--charcoal);
    max-width: 48ch;
}

.body-text--secondary {
    font-weight: 300;
    color: var(--mid-gray);
}

.label-mono {
    font-family: 'Courier Prime', monospace;
    font-weight: 400;
    font-size: clamp(0.8rem, 0.9vw, 0.95rem);
    color: var(--mid-gray);
    letter-spacing: 0.05em;
}

/* Navigation */
.site-nav {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    display: flex;
    gap: calc(var(--unit) * 4);
    padding: calc(var(--unit) * 3) calc(var(--unit) * 4);
    z-index: 100;
    background-color: var(--pale-gray);
    border-bottom: 1px solid var(--navy);
}

.nav-label {
    font-family: 'Courier Prime', monospace;
    font-size: clamp(0.8rem, 0.9vw, 0.95rem);
    color: var(--mid-gray);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    cursor: pointer;
    position: relative;
    transition: color 0.15s ease;
}

.nav-label--active {
    color: var(--navy);
}

.nav-label::after {
    content: '';
    position: absolute;
    top: 50%;
    left: calc(var(--unit) * -1);
    width: calc(100% + calc(var(--unit) * 2));
    height: calc(100% + calc(var(--unit) * 1));
    transform: translateY(-50%) skewX(-45deg);
    background-color: transparent;
    z-index: -1;
    transition: background-color 0.15s ease;
    pointer-events: none;
}

.nav-label:hover::after {
    background-color: rgba(26, 41, 71, 0.08);
}

.nav-label:nth-child(even):hover::after {
    background-color: rgba(166, 76, 58, 0.08);
}

.nav-label:hover {
    color: var(--navy);
}

/* Sections */
.section {
    min-height: 100vh;
    padding: calc(var(--unit) * 12) calc(var(--unit) * 4) calc(var(--unit) * 8);
    position: relative;
}

.section--hero {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-template-rows: repeat(6, 1fr);
    min-height: 100vh;
    align-content: start;
    padding-top: calc(var(--unit) * 16);
}

.hero-content {
    grid-column: 1 / 4;
    grid-row: 2 / 5;
    padding: calc(var(--unit) * 4);
    display: flex;
    flex-direction: column;
    gap: calc(var(--unit) * 3);
}

.hero-subtitle {
    margin-top: calc(var(--unit) * 1);
}

.hero-marker {
    grid-column: 4 / 5;
    grid-row: 5 / 7;
    display: flex;
    align-items: flex-end;
    justify-content: flex-end;
    padding: calc(var(--unit) * 4);
}

/* Puzzle Decomposition Grid (Hero) */
.puzzle-decomposition {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    grid-template-rows: repeat(6, 1fr);
    width: calc(var(--unit) * 30);
    height: calc(var(--unit) * 30);
    gap: 2px;
    margin-top: calc(var(--unit) * 4);
}

.puzzle-cell {
    background-color: transparent;
    border: 0.5px solid rgba(213, 213, 213, 0.4);
    transition: background-color 0.3s ease;
}

.puzzle-cell--navy {
    background-color: var(--navy);
}

.puzzle-cell--sienna {
    background-color: var(--sienna);
}

/* Section Dividers */
.section-divider {
    width: 100%;
    height: 1px;
}

.section-divider--navy {
    background-color: var(--navy);
}

.section-divider--sienna {
    background-color: var(--sienna);
}

/* Section Grid Layout */
.section-grid {
    display: grid;
    grid-template-columns: calc(var(--unit) * 20) 1fr calc(var(--unit) * 32);
    gap: calc(var(--unit) * 4);
    max-width: 1400px;
    align-items: start;
}

.section-grid__label {
    display: flex;
    flex-direction: column;
    gap: calc(var(--unit) * 1);
    position: sticky;
    top: calc(var(--unit) * 12);
}

.section-grid__content {
    display: flex;
    flex-direction: column;
    gap: calc(var(--unit) * 4);
}

.section-grid__diagram {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: calc(var(--unit) * 2);
}

/* Method Blocks */
.method-block {
    padding: calc(var(--unit) * 3) 0;
    border-bottom: 0.5px solid rgba(213, 213, 213, 0.6);
    position: relative;
}

.method-block::before {
    content: '';
    position: absolute;
    left: calc(var(--unit) * -2);
    top: calc(var(--unit) * 3);
    width: 3px;
    height: calc(var(--unit) * 2);
    background-color: var(--sienna);
}

/* System Items */
.system-item {
    padding: calc(var(--unit) * 3) 0;
    border-bottom: 0.5px solid rgba(213, 213, 213, 0.6);
    position: relative;
}

.system-item:hover {
    padding-left: calc(var(--unit) * 2);
}

.system-item::after {
    content: '';
    position: absolute;
    top: calc(var(--unit) * 1);
    right: calc(var(--unit) * -1);
    width: calc(var(--unit) * 4);
    height: calc(var(--unit) * 4);
    background-color: transparent;
    transform: translate(var(--unit), var(--unit)) rotate(0deg);
    transition: background-color 0.15s ease;
}

.system-item:hover::after {
    background-color: rgba(26, 41, 71, 0.06);
    transform: translate(var(--unit), var(--unit)) skewX(-10deg);
}

.system-item:nth-child(even):hover::after {
    background-color: rgba(166, 76, 58, 0.06);
}

/* Connection Diagram */
.connection-diagram {
    width: calc(var(--unit) * 28);
    height: calc(var(--unit) * 28);
    position: relative;
}

.connection-node {
    position: absolute;
    width: calc(var(--unit) * 1.5);
    height: calc(var(--unit) * 1.5);
    border: 1px solid var(--navy);
    background-color: transparent;
}

.connection-line {
    position: absolute;
    background-color: var(--navy);
}

.connection-line--h {
    height: 1px;
}

.connection-line--v {
    width: 1px;
}

/* Decomposition Grid */
.decomposition-grid {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    grid-template-rows: repeat(8, 1fr);
    width: calc(var(--unit) * 28);
    height: calc(var(--unit) * 28);
    gap: 1px;
    background-color: rgba(213, 213, 213, 0.3);
}

.decomp-cell {
    background-color: var(--pale-gray);
}

.decomp-cell--navy {
    background-color: var(--navy);
}

.decomp-cell--sienna {
    background-color: var(--sienna);
}

/* Proportional System */
.proportional-system {
    position: relative;
    width: calc(var(--unit) * 28);
    height: calc(var(--unit) * 28);
}

.prop-grid {
    display: grid;
    grid-template-columns: repeat(16, 1fr);
    grid-template-rows: repeat(16, 1fr);
    width: 100%;
    height: 100%;
    gap: 0;
}

.prop-cell {
    border: 0.5px solid rgba(213, 213, 213, 0.25);
}

.prop-overlay {
    position: absolute;
    border: 1px solid var(--navy);
    pointer-events: none;
}

.prop-overlay--primary {
    top: 0;
    left: 0;
    width: 56.25%;
    height: 56.25%;
}

.prop-overlay--secondary {
    bottom: 0;
    right: 0;
    width: 37.5%;
    height: 37.5%;
    border-color: var(--sienna);
}

/* Contact Grid */
.contact-grid {
    display: flex;
    flex-direction: column;
    gap: calc(var(--unit) * 3);
    margin-top: calc(var(--unit) * 4);
}

.contact-item {
    display: flex;
    flex-direction: column;
    gap: calc(var(--unit) * 0.5);
    padding: calc(var(--unit) * 2) 0;
    border-bottom: 0.5px solid rgba(213, 213, 213, 0.6);
}

/* Footer */
.site-footer {
    padding: calc(var(--unit) * 4);
    border-top: 1px solid var(--navy);
}

.footer-grid {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

/* Diagonal accent marker for interactive elements */
.diagonal-marker {
    position: absolute;
    pointer-events: none;
    z-index: -1;
}

/* Circle stroke motif (1px strokes only, never filled) */
.circle-stroke {
    border: 1px solid var(--navy);
    border-radius: 0;
    width: calc(var(--unit) * 8);
    height: calc(var(--unit) * 8);
}

/* Responsive */
@media (max-width: 1024px) {
    .section-grid {
        grid-template-columns: calc(var(--unit) * 16) 1fr;
    }

    .section-grid__diagram {
        grid-column: 1 / -1;
        justify-content: flex-start;
        padding-left: calc(var(--unit) * 16);
    }

    .grid-overlay {
        background-size: calc(100vw / 2) calc(100vh / 4);
    }
}

@media (max-width: 768px) {
    .site-nav {
        gap: calc(var(--unit) * 2);
        padding: calc(var(--unit) * 2) calc(var(--unit) * 2);
        flex-wrap: wrap;
    }

    .section {
        padding: calc(var(--unit) * 10) calc(var(--unit) * 2) calc(var(--unit) * 6);
    }

    .section--hero {
        grid-template-columns: 1fr;
        grid-template-rows: auto;
        padding-top: calc(var(--unit) * 12);
    }

    .hero-content {
        grid-column: 1;
        grid-row: auto;
    }

    .hero-marker {
        grid-column: 1;
        grid-row: auto;
        justify-content: flex-start;
        padding: calc(var(--unit) * 2);
    }

    .section-grid {
        grid-template-columns: 1fr;
        gap: calc(var(--unit) * 3);
    }

    .section-grid__label {
        position: static;
        flex-direction: row;
        align-items: baseline;
        gap: calc(var(--unit) * 2);
    }

    .section-grid__diagram {
        padding-left: 0;
    }

    .grid-overlay {
        background-size: 100vw calc(100vh / 8);
    }

    .footer-grid {
        flex-direction: column;
        gap: calc(var(--unit) * 1);
        align-items: flex-start;
    }

    .puzzle-decomposition {
        width: calc(var(--unit) * 24);
        height: calc(var(--unit) * 24);
    }

    .connection-diagram,
    .decomposition-grid,
    .proportional-system {
        width: calc(var(--unit) * 24);
        height: calc(var(--unit) * 24);
    }
}
