/* xity.one - Sci-Fi City Console */
* { margin: 0; padding: 0; box-sizing: border-box; }
:root {
    --aurora-green: #40F0A0;
    --aurora-blue: #4080F0;
    --aurora-purple: #8040F0;
    --text-light: #F0F8F0;
    --text-body: #C8D8D0;
    --sys-green: #80F0C0;
    --circuit-trace: rgba(64, 240, 160, 0.15);
    --bokeh-opacity: 0.06;
}

body {
    background: #0A1A20;
    color: var(--text-light);
    font-family: 'Nunito', sans-serif;
    font-size: 1rem;
    line-height: 1.75;
    font-weight: 400;
    overflow-x: hidden;
}

/* Sections */
.city-section {
    width: 100%;
    min-height: 60vh;
    padding: clamp(3rem, 6vh, 6rem) 2rem;
    position: relative;
    overflow: hidden;
}
.section-a {
    background: linear-gradient(135deg, #0A1A20, #102830);
    animation: auroraPulse 15s ease-in-out infinite;
}
.section-b {
    background: linear-gradient(135deg, #0A1420, #182030);
    animation: auroraPulse 15s ease-in-out infinite 5s;
}
.section-c {
    background: linear-gradient(135deg, #101A18, #0A2820);
    animation: auroraPulse 15s ease-in-out infinite 10s;
}
@keyframes auroraPulse {
    0%, 100% { filter: hue-rotate(0deg); }
    50% { filter: hue-rotate(5deg); }
}

/* Section Inner */
.section-inner {
    max-width: 800px;
    margin: 0 auto;
    position: relative;
    z-index: 2;
}

/* Bokeh */
.bokeh {
    position: absolute;
    border-radius: 50%;
    filter: blur(30px);
    pointer-events: none;
    z-index: 1;
}
.b1 { width: 120px; height: 120px; background: radial-gradient(circle, rgba(64, 240, 160, 0.06), transparent); top: 10%; left: 15%; }
.b2 { width: 80px; height: 80px; background: radial-gradient(circle, rgba(64, 128, 240, 0.06), transparent); top: 40%; right: 10%; }
.b3 { width: 100px; height: 100px; background: radial-gradient(circle, rgba(128, 64, 240, 0.06), transparent); bottom: 15%; left: 40%; }
.b4 { width: 90px; height: 90px; background: radial-gradient(circle, rgba(64, 240, 160, 0.06), transparent); top: 20%; right: 20%; }
.b5 { width: 70px; height: 70px; background: radial-gradient(circle, rgba(128, 64, 240, 0.06), transparent); bottom: 25%; left: 10%; }
.b6 { width: 110px; height: 110px; background: radial-gradient(circle, rgba(64, 128, 240, 0.06), transparent); top: 15%; left: 25%; }
.b7 { width: 60px; height: 60px; background: radial-gradient(circle, rgba(64, 240, 160, 0.06), transparent); top: 55%; right: 15%; }
.b8 { width: 80px; height: 80px; background: radial-gradient(circle, rgba(128, 64, 240, 0.06), transparent); bottom: 10%; left: 50%; }

/* Circuit Borders */
.circuit-border {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px;
    z-index: 3;
}
.circuit-trace {
    stroke: var(--circuit-trace);
    stroke-width: 1;
    stroke-dasharray: 800;
    stroke-dashoffset: 800;
    transition: stroke-dashoffset 1.2s ease;
}
.city-section.visible .circuit-trace { stroke-dashoffset: 0; }
.junction {
    fill: var(--aurora-green);
    opacity: 0.3;
    animation: junctionPulse 3s ease-in-out infinite;
}
@keyframes junctionPulse {
    0%, 100% { opacity: 0.3; }
    50% { opacity: 0.8; }
}

/* Module Title */
.module-title {
    font-family: 'Caveat', cursive;
    font-size: clamp(2rem, 4vw, 3.5rem);
    font-weight: 700;
    color: var(--text-light);
    margin-bottom: 0.5rem;
}
.hero-title {
    font-size: clamp(2.5rem, 5vw, 4rem);
    margin-bottom: 0.25rem;
}

/* System Status */
.sys-status {
    font-family: 'Share Tech Mono', monospace;
    font-size: 0.85rem;
    color: var(--sys-green);
    letter-spacing: 0.05em;
    display: block;
    margin-bottom: 1rem;
    min-height: 1.2em;
}
.sys-data {
    font-family: 'Share Tech Mono', monospace;
    font-size: 0.85rem;
    color: var(--sys-green);
    letter-spacing: 0.05em;
    display: block;
    margin-bottom: 0.75rem;
}

/* Module Body */
.module-body {
    font-family: 'Nunito', sans-serif;
    font-size: 1rem;
    color: var(--text-body);
    line-height: 1.75;
}
.module-summary {
    font-family: 'Nunito', sans-serif;
    font-size: 1rem;
    color: var(--text-body);
    line-height: 1.75;
    margin-bottom: 0.5rem;
}

/* City Modules (progressive disclosure) */
.city-module {
    border: 1px solid var(--circuit-trace);
    border-radius: 8px;
    padding: 24px;
    margin-bottom: 24px;
    cursor: pointer;
    transition: border-color 0.3s ease;
}
.city-module:hover { border-color: rgba(64, 240, 160, 0.4); }
.city-module[data-expanded="true"] { border-color: var(--aurora-green); }
.module-detail {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s ease, margin-top 0.4s ease;
    margin-top: 0;
}
.city-module[data-expanded="true"] .module-detail {
    max-height: 300px;
    margin-top: 0.75rem;
}

/* Section reveal */
.city-section {
    opacity: 0;
    transition: opacity 0.6s ease;
}
.city-section.visible { opacity: 1; }

/* Footer */
.site-footer {
    min-height: auto;
    padding: 3rem 2rem;
    text-align: center;
}
.footer-text {
    font-family: 'Share Tech Mono', monospace;
    font-size: 0.8rem;
    color: var(--sys-green);
    letter-spacing: 0.05em;
}

@media (max-width: 768px) {
    .city-section { padding: clamp(2rem, 4vh, 4rem) 1.5rem; }
    .city-module { padding: 18px; }
}
