/* ancientfit-frontend/css/ancientFitDiagram.css */
/* ============================================
   ANCIENTFIT PENTAGRAM FRAMEWORK - ENHANCED RESPONSIVE CSS
   Focus: SUPER RESPONSIVE, NO OVERLAP, SCALABLE TEXTS
   NOTE: No navbar variables or overrides in this file.
         Navbar is fully handled by navBar.css only.
============================================ */

/* === DIAGRAM-SPECIFIC VARIABLES ONLY === */
:root {
    --color-bodytype:   #e74c3c;
    --color-nutrition:  #00b894;
    --color-movement:   #f39c12;
    --color-sleep:      #8e44ad;
    --color-psychology: #0066cc;
    --color-flourishing:#00b894;

    --font-scale-xs:   0.75rem;
    --font-scale-sm:   0.875rem;
    --font-scale-base: 1rem;
    --font-scale-lg:   1.125rem;
    --font-scale-xl:   1.25rem;
    --font-scale-2xl:  1.5rem;
    --font-scale-3xl:  2rem;
    --font-scale-4xl:  2.5rem;

    --space-xs:  0.25rem;
    --space-sm:  0.5rem;
    --space-md:  1rem;
    --space-lg:  1.5rem;
    --space-xl:  2rem;
    --space-2xl: 3rem;
    --space-3xl: 4rem;

    --radius-sm: 0.5rem;
    --radius-md: 1rem;
    --radius-lg: 1.5rem;
    --radius-xl: 2rem;
}

/* === ETHICAL SECTION WRAPPER ===
   FIX: padding-inline was clamp(24px,5vw,120px) AND diagram-container
   also had the same — double nesting blew past the viewport.
   Outer section keeps its padding; inner containers use 0 padding-inline. */
.ancientfit-ethical-section {
    width: 100%;
    max-width: 100%;          /* FIX: was 1400px without viewport guard */
    box-sizing: border-box;   /* FIX */
    margin-inline: auto;
    padding-inline: clamp(12px, 4vw, 60px); /* FIX: reduced max from 120px */
    margin-block: clamp(20px, 5vw, 40px);
    padding-block: clamp(10px, 3vw, 20px);
    position: relative;
    overflow: hidden;         /* FIX: contain any child bleed */
}

.container {
    width: 100%;
    max-width: 100%; /* FIX */
    position: relative;
    z-index: 1;
    box-sizing: border-box;
}

/* === SECTION HEADER === */
.section-header {
    text-align: center;
    margin-bottom: clamp(30px, 6vw, 50px);
    padding: clamp(20px, 4vw, 40px) clamp(15px, 3vw, 20px);
    background: var(--glass-bg);
    backdrop-filter: var(--blur-intensity);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-xl);
    box-shadow: 0 8px 32px var(--glass-shadow);
    box-sizing: border-box;
    max-width: 100%; /* FIX */
    overflow: hidden; /* FIX */
}

.section-header h1 {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: clamp(1.5rem, 4.5vw, 3rem); /* FIX: tighter floor */
    font-weight: 800;
    margin-bottom: clamp(15px, 3vw, 20px);
    background: linear-gradient(to right,
        rgba(255,255,255,1) 0%,
        rgba(255,255,255,0.95) 50%,
        rgba(255,255,255,1) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    letter-spacing: -0.5px;
    text-shadow:
        0 0 40px rgba(255,255,255,0.5),
        0 0 80px rgba(0,184,148,0.3);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: clamp(8px, 1.5vw, 20px);
    line-height: 1.2;
    word-break: break-word;
    overflow-wrap: break-word;
    max-width: 100%; /* FIX */
}

.section-header h1 i {
    font-size: clamp(1.2rem, 3.5vw, 2.5rem); /* FIX: tighter floor */
    background: linear-gradient(to right, var(--color-flourishing), var(--color-psychology));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    flex-shrink: 0;
}

.subtitle {
    font-size: clamp(0.85rem, 1.8vw, 1.1rem);
    color: var(--text-secondary);
    margin-bottom: clamp(20px, 3vw, 30px);
    max-width: min(95%, 700px);
    margin-left: auto;
    margin-right: auto;
    line-height: 1.6;
    padding: 0 clamp(5px, 1vw, 10px);
    word-break: break-word;
}

.divider {
    height: 4px;
    width: min(80%, 200px);
    background: linear-gradient(90deg, transparent, rgba(0,184,148,0.3), transparent);
    margin: clamp(20px, 3vw, 30px) auto;
    border-radius: 2px;
}

/* === DIAGRAM CONTAINER — FIX: REMOVED DOUBLE PADDING ===
   ancientfit-ethical-section already provides padding-inline.
   Adding it again here caused the viewport overflow.           */
.diagram-container {
    display: flex;
    flex-wrap: wrap;
    gap: clamp(20px, 4vw, 40px);
    margin: 0 auto clamp(40px, 6vw, 60px);
    max-width: 100%;     /* FIX: was 1400px, no viewport cap */
    padding-inline: 0;   /* FIX: was clamp(24px,5vw,120px) — REMOVED to stop double padding */
    box-sizing: border-box;
    overflow: hidden;    /* FIX */
    width: 100%;
}

/* === PENTAGRAM DIAGRAM — FIX: viewport-safe min-height === */
.ancientfit-pentagram-diagram {
    flex: 1 1 min(100%, 600px);
    min-height: clamp(380px, 55vw, 820px); /* FIX: vw-based so it scales down */
    height: auto;
    position: relative;
    background: rgba(0,0,0,0.55);
    backdrop-filter: var(--blur-intensity) saturate(160%);
    -webkit-backdrop-filter: var(--blur-intensity) saturate(160%);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-xl);
    padding: clamp(15px, 2vw, 30px);
    display: flex;
    justify-content: center;
    align-items: center;
    box-shadow: 0 20px 60px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.06);
    overflow: hidden;    /* FIX: was "visible" — clips diamond node corners & SVG bleed */
    margin: 0 auto;
    max-width: 100%;     /* FIX */
    box-sizing: border-box;
}

.pyramid-structure {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    padding: clamp(10px, 2vw, 20px) 0;
}

/* === PYRAMID LEVELS === */
.pyramid-level {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100%;
    position: relative;
    z-index: 2;
    flex-wrap: nowrap;
    gap: clamp(20px, 6vw, 150px); /* FIX: reduced max so level nodes don't push past narrow diagrams */
    padding: 0 clamp(10px, 2vw, 20px);
}

.level-1 { margin-bottom: clamp(30px, 6vh, 100px); gap: clamp(40px, 12vw, 200px); }
.level-2 { margin-bottom: clamp(50px, 8vh, 120px); gap: clamp(40px, 12vw, 200px); }
.level-3 { margin-bottom: clamp(70px, 10vh, 160px); gap: clamp(15px, 4vw, 50px); }

/* === APEX === */
.pyramid-apex {
    position: absolute;
    top: clamp(20px, 4vh, 60px); /* FIX: reduced floor */
    left: 50%;
    transform: translateX(-50%);
    z-index: 10;
    width: clamp(90px, 11vw, 160px);  /* FIX: reduced floor */
    height: clamp(90px, 11vw, 160px);
    pointer-events: auto;
}

/* === MODULE NODES === */
.module-node {
    width: clamp(60px, 9vw, 140px);  /* FIX: tighter floor/vw */
    height: clamp(60px, 9vw, 140px);
    cursor: pointer;
    z-index: 5;
    transition: all 0.3s ease;
    transform: rotate(45deg);
    flex-shrink: 0;
    position: relative;
    max-width: 100%; /* FIX */
}

.module-node .node-content {
    width: 100%;
    height: 100%;
    min-height: 100%;
    background: rgba(0,0,0,0.65);
    backdrop-filter: var(--blur-intensity) saturate(160%);
    -webkit-backdrop-filter: var(--blur-intensity) saturate(160%);
    border-radius: var(--radius-sm);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: clamp(6px, 0.8vw, 15px); /* FIX: smaller floor */
    text-align: center;
    border: 2px solid rgba(255,255,255,0.15);
    box-shadow: 0 12px 40px rgba(0,0,0,0.4);
    transition: all 0.3s ease;
    position: relative;
    overflow: hidden;
    box-sizing: border-box;
}

.module-node .node-content > * {
    transform: rotate(-45deg);
    max-width: 90%;
    word-wrap: break-word;
    overflow-wrap: break-word;
    min-width: 0; /* FIX */
}

.mod-bodytype  .node-content { border-color: rgba(231,76,60,0.4); }
.mod-nutrition .node-content { border-color: rgba(0,184,148,0.4); }
.mod-movement  .node-content { border-color: rgba(243,156,18,0.4); }
.mod-sleep     .node-content { border-color: rgba(142,68,173,0.4); }
.mod-psychology .node-content { border-color: rgba(0,102,204,0.4); }

.module-node:hover .node-content {
    transform: rotate(45deg) translateY(-3px) scale(1.03);
    border-color: rgba(255,255,255,0.25);
    box-shadow: 0 25px 60px rgba(0,0,0,0.6);
    z-index: 100;
}

/* === NODE TEXT === */
.module-node .node-icon {
    font-size: clamp(0.85rem, 1.3vw, 1.8rem); /* FIX: smaller floor */
    margin-bottom: clamp(4px, 0.6vw, 12px);
    transition: all 0.3s ease;
    flex-shrink: 0;
}

.mod-bodytype  .node-icon { color: var(--color-bodytype); }
.mod-nutrition .node-icon { color: var(--color-nutrition); }
.mod-movement  .node-icon { color: var(--color-movement); }
.mod-sleep     .node-icon { color: var(--color-sleep); }
.mod-psychology .node-icon { color: var(--color-psychology); }

.module-node h4 {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: clamp(0.55rem, 1vw, 0.9rem); /* FIX: tighter */
    font-weight: 800;
    margin-bottom: clamp(2px, 0.4vw, 5px);
    color: var(--text-white);
    letter-spacing: 0.3px;
    line-height: 1.1;
    word-break: break-word;
    hyphens: auto;
}

.module-subtitle {
    font-size: clamp(0.5rem, 0.7vw, 0.75rem); /* FIX */
    color: var(--text-secondary);
    margin-bottom: clamp(3px, 0.5vw, 8px);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    line-height: 1.2;
    word-break: break-word;
    overflow-wrap: break-word;
}

.module-tag {
    font-size: clamp(0.45rem, 0.6vw, 0.7rem); /* FIX */
    font-weight: 800;
    padding: clamp(2px, 0.3vw, 4px) clamp(6px, 1vw, 12px);
    border-radius: 20px;
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.2);
    color: var(--text-white);
    margin-bottom: clamp(4px, 0.6vw, 10px);
    backdrop-filter: blur(10px);
    text-transform: uppercase;
    letter-spacing: 0.8px;
    white-space: nowrap;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    overflow-wrap: break-word;
    hyphens: auto;
}

.module-info {
    font-size: clamp(0.45rem, 0.6vw, 0.7rem); /* FIX */
    color: var(--text-secondary);
    line-height: 1.3;
    opacity: 0;
    max-height: 0;
    overflow: hidden;
    transition: all 0.3s ease;
    word-break: break-word;
}

.module-node:hover .module-info {
    opacity: 1;
    max-height: clamp(40px, 6vw, 80px);
    margin-top: clamp(4px, 0.6vw, 8px);
}

/* === CENTRAL NODE === */
.central-node {
    width: 100%;
    height: 100%;
    z-index: 10;
}

.central-node .node-content {
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg,
        rgba(0,184,148,0.25),
        rgba(0,214,168,0.35));
    backdrop-filter: var(--blur-intensity) saturate(160%);
    -webkit-backdrop-filter: var(--blur-intensity) saturate(160%);
    border-radius: var(--radius-md);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    padding: clamp(10px, 1.2vw, 20px); /* FIX: smaller floor */
    text-align: center;
    box-shadow: 0 15px 40px rgba(0,184,148,0.25);
    border: 1px solid var(--glass-green-border);
    transition: all 0.3s ease;
    transform: rotate(45deg);
    overflow: hidden; /* FIX */
    box-sizing: border-box;
}

.central-node .node-content > * {
    transform: rotate(-45deg);
    max-width: 90%;
    word-wrap: break-word;
    min-width: 0; /* FIX */
}

.central-node:hover .node-content {
    transform: rotate(45deg) scale(1.03);
    box-shadow: 0 25px 60px rgba(0,184,148,0.5);
}

.central-node .node-icon {
    font-size: clamp(1.1rem, 2vw, 2.2rem); /* FIX */
    margin-bottom: clamp(6px, 1vw, 12px);
    color: white;
}

.central-node h3 {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: clamp(0.7rem, 1.2vw, 1.2rem); /* FIX */
    font-weight: 800;
    margin-bottom: clamp(3px, 0.5vw, 6px);
    color: white;
    letter-spacing: 0.8px;
    line-height: 1.2;
    word-break: break-word;
    hyphens: auto;
}

.central-node .node-subtitle {
    font-size: clamp(0.6rem, 0.8vw, 0.85rem); /* FIX */
    color: rgba(255,255,255,0.9);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    line-height: 1.2;
    word-break: break-word;
}

.node-pulse {
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: var(--radius-md);
    background: var(--color-flourishing);
    opacity: 0.3;
    z-index: 1;
    animation: pulse 3s infinite;
    max-width: unset; /* decorative — clipped by parent overflow:hidden */
}

@keyframes pulse {
    0%   { transform: rotate(45deg) scale(1);    opacity: 0.3; }
    50%  { transform: rotate(45deg) scale(1.05); opacity: 0.1; }
    100% { transform: rotate(45deg) scale(1);    opacity: 0.3; }
}

/* === CONNECTION LINES — FIX: SVG overflow containment === */
.connection-lines {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    min-height: unset;   /* FIX: was 100% — redundant, caused layout issues */
    max-width: 100%;     /* FIX */
    z-index: 1;
    pointer-events: none;
    overflow: hidden;    /* FIX */
}

.connection-line {
    stroke-width: clamp(1px, 0.15vw, 1.5px);
    fill: none;
    stroke-dasharray: 5,5;
    animation: dashflow 20s linear infinite;
}

.connection-line.bodytype-movement,
.connection-line.bodytype-sleep   { stroke: var(--color-bodytype); }
.connection-line.nutrition-movement,
.connection-line.nutrition-sleep  { stroke: var(--color-nutrition); }
.connection-line.movement-psychology { stroke: var(--color-movement); }
.connection-line.sleep-psychology    { stroke: var(--color-sleep); }
.connection-line.psychology-flourishing { stroke: var(--color-psychology); }
.connection-line.bodytype-nutrition { stroke: var(--color-bodytype); opacity: 0.4; }
.connection-line.movement-sleep     { stroke: var(--color-movement); opacity: 0.4; }

@keyframes dashflow {
    0%   { stroke-dashoffset: 100; }
    100% { stroke-dashoffset: 0; }
}

/* === MODULE INFO PANEL === */
.module-info-panel {
    flex: 1 1 min(100%, 400px);
    background: var(--glass-bg);
    backdrop-filter: var(--blur-intensity) saturate(160%);
    -webkit-backdrop-filter: var(--blur-intensity) saturate(160%);
    border-radius: var(--radius-xl);
    border: 1px solid var(--glass-border);
    box-shadow: 0 20px 60px var(--glass-shadow);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    max-width: min(600px, 100%); /* FIX */
    margin: 0 auto;
    box-sizing: border-box;
}

.panel-header {
    padding: clamp(15px, 2.5vw, 25px);
    background: rgba(0,0,0,0.4);
    border-bottom: 1px solid var(--glass-border);
    box-sizing: border-box;
}

.panel-header h3 {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: clamp(1.1rem, 1.8vw, 1.5rem); /* FIX */
    font-weight: 700;
    margin-bottom: 8px;
    color: var(--text-white);
    display: flex;
    align-items: center;
    gap: clamp(6px, 1vw, 10px);
    flex-wrap: wrap;
    word-break: break-word;
}

.panel-subtitle {
    font-size: clamp(0.8rem, 1.1vw, 0.95rem);
    color: var(--text-secondary);
    line-height: 1.4;
}

.panel-content {
    padding: clamp(15px, 2.5vw, 25px);
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    background: rgba(0,0,0,0.3);
    box-sizing: border-box;
    overflow: hidden; /* FIX */
}

.default-message {
    text-align: center;
    padding: clamp(20px, 4vw, 40px) clamp(10px, 2vw, 15px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex-grow: 1;
}

.message-icon {
    font-size: clamp(1.8rem, 3.5vw, 3rem); /* FIX */
    margin-bottom: clamp(12px, 2vw, 20px);
    color: var(--color-flourishing);
    opacity: 0.7;
}

.default-message h4 {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: clamp(1rem, 1.8vw, 1.5rem); /* FIX */
    font-weight: 700;
    margin-bottom: clamp(12px, 2vw, 18px);
    color: var(--text-white);
    word-break: break-word;
}

.default-message p {
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: clamp(12px, 2vw, 18px);
    max-width: min(95%, 500px);
    font-size: clamp(0.82rem, 1vw, 0.95rem); /* FIX */
    word-break: break-word;
    overflow-wrap: break-word;
}

.message-note {
    font-size: clamp(0.78rem, 0.95vw, 0.9rem); /* FIX */
    font-style: italic;
    opacity: 0.8;
}

.hierarchy-explanation {
    margin-top: clamp(15px, 2.5vw, 25px);
    padding: clamp(12px, 2vw, 18px);
    background: rgba(255,255,255,0.05);
    border-radius: var(--radius-sm);
    border: 1px solid rgba(255,255,255,0.1);
    box-sizing: border-box;
    max-width: 100%; /* FIX */
}

.hierarchy-level {
    display: flex;
    align-items: center;
    gap: clamp(8px, 1.2vw, 12px);
    margin-bottom: clamp(8px, 1.2vw, 12px);
    padding: clamp(6px, 1vw, 8px);
    border-radius: var(--radius-sm);
    background: rgba(255,255,255,0.03);
}

.hierarchy-level:last-child { margin-bottom: 0; }

.level-marker {
    width: clamp(12px, 1.5vw, 16px);
    height: clamp(12px, 1.5vw, 16px);
    border-radius: 50%;
    flex-shrink: 0;
}

.hierarchy-level span {
    color: var(--text-secondary);
    font-size: clamp(0.78rem, 0.95vw, 0.9rem); /* FIX */
    line-height: 1.4;
    overflow-wrap: break-word; /* FIX */
    word-break: break-word;
    min-width: 0; /* FIX */
}

.module-details { display: none; }
.module-details.active {
    display: block;
    animation: fadeInDiagram 0.5s ease;
}

@keyframes fadeInDiagram {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

.panel-footer {
    padding: clamp(15px, 2.5vw, 25px);
    background: rgba(0,0,0,0.2);
    border-top: 1px solid rgba(255,255,255,0.15);
    box-sizing: border-box;
}

.ancientfit-principle {
    position: relative;
    padding: 0 clamp(12px, 1.8vw, 18px);
}

.ancientfit-principle i:first-child {
    position: absolute;
    left: 0; top: -3px;
    color: var(--color-flourishing);
    font-size: clamp(1rem, 1.3vw, 1.2rem);
}

.ancientfit-principle p {
    font-style: italic;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: clamp(6px, 1vw, 10px);
    font-size: clamp(0.82rem, 1vw, 0.95rem); /* FIX */
    word-break: break-word;
    overflow-wrap: break-word;
}

.principle-author {
    text-align: right;
    color: var(--text-secondary);
    font-size: clamp(0.75rem, 0.9vw, 0.9rem); /* FIX */
    opacity: 0.8;
}

/* === PRINCIPLES CONTAINER === */
.principles-container {
    background: var(--glass-bg);
    backdrop-filter: var(--blur-intensity) saturate(160%);
    -webkit-backdrop-filter: var(--blur-intensity) saturate(160%);
    border-radius: var(--radius-xl);
    padding: clamp(20px, 3vw, 35px) clamp(16px, 3vw, 30px); /* FIX: separate horizontal padding, capped lower */
    max-width: 100%; /* FIX */
    margin-inline: auto;
    margin-bottom: clamp(30px, 4vw, 40px);
    border: 1px solid var(--glass-border);
    box-shadow: 0 20px 60px var(--glass-shadow);
    box-sizing: border-box;
    overflow: hidden; /* FIX */
}

.principles-container h3 {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: clamp(1.2rem, 2vw, 1.8rem); /* FIX */
    font-weight: 700;
    margin-bottom: clamp(15px, 2.5vw, 25px);
    color: var(--text-white);
    display: flex;
    align-items: center;
    gap: clamp(8px, 1.5vw, 12px);
    flex-wrap: wrap;
    word-break: break-word;
}

.principles-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); /* FIX: min() wrapper */
    gap: clamp(15px, 2.5vw, 25px);
}

.principle-card {
    background: rgba(0,0,0,0.55);
    border: 1px solid var(--glass-border);
    border-radius: var(--radius-lg);
    padding: clamp(16px, 2vw, 25px); /* FIX: smaller floor */
    transition: all 0.3s ease;
    backdrop-filter: var(--blur-intensity) saturate(160%);
    -webkit-backdrop-filter: var(--blur-intensity) saturate(160%);
    box-sizing: border-box;
    max-width: 100%; /* FIX */
    overflow: hidden; /* FIX */
}

.principle-card:hover {
    transform: translateY(-8px);
    background: rgba(0,0,0,0.65);
    border-color: rgba(255,255,255,0.15);
}

.principle-icon {
    width: clamp(40px, 4.5vw, 55px); /* FIX */
    height: clamp(40px, 4.5vw, 55px);
    border-radius: 50%;
    background: rgba(0,184,148,0.15);
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: clamp(12px, 2vw, 20px);
    font-size: clamp(1rem, 1.6vw, 1.6rem); /* FIX */
    color: var(--color-flourishing);
    border: 2px solid rgba(0,184,148,0.3);
    flex-shrink: 0;
}

.principle-card h4 {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: clamp(0.95rem, 1.3vw, 1.2rem); /* FIX */
    font-weight: 700;
    margin-bottom: clamp(10px, 1.5vw, 16px);
    color: var(--text-white);
    word-break: break-word;
}

.principle-card p {
    color: var(--text-secondary);
    line-height: 1.6;
    font-size: clamp(0.82rem, 1vw, 0.95rem); /* FIX */
    word-break: break-word;
    overflow-wrap: break-word;
}

/* === LEGEND CONTAINER === */
.legend-container {
    background: var(--glass-bg);
    backdrop-filter: var(--blur-intensity) saturate(160%);
    -webkit-backdrop-filter: var(--blur-intensity) saturate(160%);
    border-radius: var(--radius-xl);
    padding: clamp(16px, 2vw, 25px) clamp(16px, 3vw, 30px); /* FIX */
    max-width: 100%; /* FIX */
    margin-inline: auto;
    border: 1px solid var(--glass-border);
    box-shadow: 0 20px 60px var(--glass-shadow);
    box-sizing: border-box;
    overflow: hidden; /* FIX */
}

.legend-container h4 {
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-size: clamp(1rem, 1.5vw, 1.4rem); /* FIX */
    font-weight: 700;
    margin-bottom: clamp(12px, 2vw, 20px);
    color: var(--text-white);
    display: flex;
    align-items: center;
    gap: clamp(6px, 1vw, 10px);
    flex-wrap: wrap;
    word-break: break-word;
}

.legend-items {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(250px, 100%), 1fr)); /* FIX: min() wrapper */
    gap: clamp(8px, 1.5vw, 12px);
}

.legend-item {
    display: flex;
    align-items: center;
    gap: clamp(10px, 1.5vw, 16px); /* FIX */
    padding: clamp(10px, 1.5vw, 16px); /* FIX */
    background: rgba(0,0,0,0.45);
    border-radius: var(--radius-sm);
    border: 1px solid var(--glass-border);
    transition: all 0.3s ease;
    box-sizing: border-box;
    max-width: 100%; /* FIX */
    overflow: hidden; /* FIX */
}

.legend-item:hover {
    background: rgba(0,0,0,0.6);
    transform: translateX(5px);
}

.legend-color {
    width: clamp(14px, 1.6vw, 20px); /* FIX */
    height: clamp(14px, 1.6vw, 20px);
    border-radius: 4px;
    flex-shrink: 0;
}

.legend-item span {
    color: var(--text-secondary);
    font-size: clamp(0.78rem, 1vw, 0.95rem); /* FIX */
    font-weight: 500;
    line-height: 1.4;
    overflow-wrap: break-word; /* FIX */
    word-break: break-word;
    min-width: 0; /* FIX */
}

/* === WATERMARK === */
.watermark {
    position: absolute;
    bottom: 10px; right: 10px;
    z-index: 0;
    opacity: 0.3;
    pointer-events: none;
}

.watermark-content {
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--text-secondary);
    font-size: clamp(0.65rem, 0.85vw, 0.85rem); /* FIX */
    font-family: 'Plus Jakarta Sans', sans-serif;
    font-weight: 600;
    white-space: nowrap;
}

.watermark-content i {
    color: var(--color-flourishing);
    font-size: clamp(0.75rem, 0.9vw, 1rem); /* FIX */
}

/* === RESPONSIVE BREAKPOINTS === */

/* Tablet portrait */
@media (max-width: 768px) {
    .pyramid-level { gap: clamp(30px, 8vw, 80px) !important; }
    .level-1 { margin-bottom: clamp(40px, 7vh, 70px) !important; }
    .level-2 { margin-bottom: clamp(55px, 9vh, 90px) !important; }
    .level-3 { margin-bottom: clamp(70px, 11vh, 110px) !important; }
    .module-node  { width: clamp(70px, 11vw, 100px) !important; height: clamp(70px, 11vw, 100px) !important; }
    .central-node { width: clamp(90px, 14vw, 120px) !important; height: clamp(90px, 14vw, 120px) !important; }
    .section-header h1 { flex-direction: column; text-align: center; }
    .ancientfit-ethical-section { padding-inline: clamp(10px, 3vw, 24px); }
}

/* Mobile */
@media (max-width: 480px) {
    .pyramid-level { gap: clamp(15px, 6vw, 35px) !important; }
    .level-1 { margin-bottom: clamp(30px, 6vh, 50px) !important; }
    .level-2 { margin-bottom: clamp(45px, 8vh, 70px) !important; }
    .level-3 { margin-bottom: clamp(60px, 10vh, 90px) !important; }
    .module-node  { width: 68px !important; height: 68px !important; }
    .central-node { width: 86px !important; height: 86px !important; }
    .diagram-container { gap: 15px; }
    .watermark { bottom: 5px; right: 5px; }
    .watermark-content { flex-direction: column; gap: 4px; text-align: center; }
    .ancientfit-ethical-section { padding-inline: 10px; }
    /* Hide verbose text on very small nodes */
    .module-subtitle { display: none; }
    .module-info     { display: none; }
}

/* Tablet landscape */
@media (min-width: 769px) and (max-width: 1024px) {
    .pyramid-level { gap: clamp(80px, 13vw, 150px) !important; }
    .module-node  { width: clamp(90px, 11vw, 130px) !important; height: clamp(90px, 11vw, 130px) !important; }
    .central-node { width: clamp(115px, 14vw, 150px) !important; height: clamp(115px, 14vw, 150px) !important; }
}

/* Desktop */
@media (min-width: 1025px) {
    .pyramid-level { gap: clamp(120px, 18vw, 250px) !important; }
    .module-node  { width: clamp(110px, 13vw, 160px) !important; height: clamp(110px, 13vw, 160px) !important; }
    .central-node { width: clamp(130px, 15vw, 180px) !important; height: clamp(130px, 15vw, 180px) !important; }
}

/* Galaxy Fold outer / ultra-narrow */
@media (max-width: 360px) {
    .module-node  { width: 58px !important; height: 58px !important; }
    .central-node { width: 72px !important; height: 72px !important; }
    .module-node h4   { font-size: 0.52rem !important; }
    .module-subtitle  { display: none !important; }
    .module-tag       { display: none !important; }
    .module-info      { display: none !important; }
    .central-node h3  { font-size: 0.6rem !important; }
    .central-node .node-subtitle { display: none !important; }
    .ancientfit-ethical-section { padding-inline: 8px; }
    .watermark-content span { font-size: 0.65rem; }
}

/* Hard overflow prevention — all containers */
.ancientfit-ethical-section,
.diagram-container,
.ancientfit-pentagram-diagram,
.pyramid-structure,
.module-info-panel,
.principles-container,
.legend-container {
    max-width: 100%;
    box-sizing: border-box;
}

/* Touch devices — disable hover transforms that can trigger scroll */
@media (hover: none) and (pointer: coarse) {
    .module-node:hover .node-content,
    .central-node:hover .node-content,
    .principle-card:hover { transform: none; }
    .module-node:active .node-content,
    .central-node:active .node-content { transform: rotate(45deg) scale(0.95); }
    .legend-item:active { transform: translateX(3px); }
}

/* High-DPI — thinner SVG lines */
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
    .connection-line { stroke-width: 0.5px; }
}