/* sbom.study - Avant-Garde SBOM Education */
* { margin: 0; padding: 0; box-sizing: border-box; }
:root {
    --warm-canvas: #FFF8F0;
    --study-peach: #FFE8D6;
    --constructivist-red: #D62828;
    --deep-slate: #264653;
    --bright-marigold: #E9C46A;
    --study-blue: #2A9D8F;
    --carbon-black: #1A1A1A;
    --sage-gray: #6B705C;
}
body {
    background: var(--warm-canvas);
    color: var(--carbon-black);
    font-family: 'Sora', sans-serif;
    font-size: 1rem;
    line-height: 1.75;
    font-weight: 400;
    overflow-x: hidden;
}

/* Hero */
#hero {
    max-width: 1100px;
    margin: 0 auto;
    padding: 4rem 2rem 2rem;
}
.hero-block {
    max-width: 600px;
}
.hero-title {
    font-family: 'Sora', sans-serif;
    font-size: clamp(2rem, 5vw, 3.5rem);
    font-weight: 800;
    color: var(--deep-slate);
    display: inline;
}
.hero-title::after {
    content: '';
    display: inline-block;
    width: 12px;
    height: 12px;
    background: var(--constructivist-red);
    border-radius: 50%;
    margin-left: 8px;
    vertical-align: super;
}
.diagonal-line {
    width: 120px;
    height: 3px;
    background: var(--constructivist-red);
    transform: rotate(-8deg);
    margin: 1rem 0;
    opacity: 0;
    animation: lineIn 0.6s ease 0.5s forwards;
}
@keyframes lineIn {
    to { opacity: 1; }
}
.hero-subtitle {
    font-size: 1.1rem;
    font-weight: 400;
    color: var(--sage-gray);
}

/* Dependency Tree */
.dep-tree {
    width: 100%;
    max-width: 500px;
    height: 160px;
    margin-top: 2rem;
}
.tree-branch {
    stroke-dasharray: 100;
    stroke-dashoffset: 100;
    animation: drawBranch 0.8s ease forwards;
}
.br1 { animation-delay: 0.6s; }
.br2 { animation-delay: 0.8s; }
.br3 { animation-delay: 1.0s; }
.br4 { animation-delay: 1.2s; }
.br5 { animation-delay: 1.3s; }
.br6 { animation-delay: 1.4s; }
.br7 { animation-delay: 1.5s; }
@keyframes drawBranch {
    to { stroke-dashoffset: 0; }
}
.tree-node {
    opacity: 0;
    animation: nodeIn 0.3s ease forwards;
}
.n1 { animation-delay: 0.9s; }
.n2 { animation-delay: 1.1s; }
.n3 { animation-delay: 1.3s; }
.n4 { animation-delay: 1.5s; }
.n5 { animation-delay: 1.6s; }
.n6 { animation-delay: 1.7s; }
.n7 { animation-delay: 1.8s; }
@keyframes nodeIn {
    to { opacity: 1; }
}
.tree-label {
    font-family: 'Source Code Pro', monospace;
    font-size: 9px;
    fill: var(--sage-gray);
}

/* Geometric Accents */
.geo-accent {
    position: relative;
    height: 60px;
    max-width: 1100px;
    margin: 0 auto;
}
.geo-circle {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 3px solid var(--constructivist-red);
    position: absolute;
    left: 10%;
    top: 10px;
}
.circle-small {
    width: 24px;
    height: 24px;
    left: auto;
    right: 15%;
    border-color: var(--bright-marigold);
}
.geo-line {
    width: 200px;
    height: 2px;
    background: var(--deep-slate);
    position: absolute;
    right: 10%;
    top: 30px;
    transform: rotate(-5deg);
}

/* Study Cards */
#modules {
    max-width: 1100px;
    margin: 0 auto;
    padding: 2rem;
}
.study-card {
    background: var(--study-peach);
    border-radius: 8px;
    padding: 2.5rem;
    margin-bottom: 2.5rem;
    opacity: 0;
    transition: opacity 0.6s ease, transform 0.6s ease;
}
.study-card.visible {
    opacity: 1;
}
.card-left { width: 65%; margin-right: auto; }
.card-right { width: 60%; margin-left: auto; }
.card-wide { width: 90%; margin: 0 auto 2.5rem; }
.card-num {
    font-family: 'Sora', sans-serif;
    font-size: 3rem;
    font-weight: 800;
    color: var(--constructivist-red);
    opacity: 0.2;
    display: block;
    line-height: 1;
    margin-bottom: 0.5rem;
}
.card-title {
    font-family: 'Sora', sans-serif;
    font-size: clamp(1.3rem, 2.5vw, 1.8rem);
    font-weight: 800;
    color: var(--deep-slate);
    margin-bottom: 1rem;
}
.card-body {
    font-size: 0.95rem;
    color: var(--carbon-black);
    margin-bottom: 1rem;
}
.code-example {
    font-family: 'Source Code Pro', monospace;
    font-size: 0.8rem;
    background: rgba(38,70,83,0.08);
    padding: 1rem;
    border-radius: 4px;
    display: block;
    color: var(--deep-slate);
    line-height: 1.6;
}

/* Progress Bars */
.progress-bar-3d {
    margin-top: 1rem;
    perspective: 400px;
}
.progress-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--sage-gray);
    margin-bottom: 0.25rem;
}
.progress-track {
    height: 16px;
    background: rgba(38,70,83,0.1);
    border-radius: 8px;
    overflow: hidden;
    transform: rotateX(5deg);
}
.progress-fill {
    height: 100%;
    background: linear-gradient(90deg, var(--bright-marigold), var(--study-blue));
    border-radius: 8px;
    transition: width 1s ease;
}
.progress-val {
    font-family: 'Source Code Pro', monospace;
    font-size: 0.8rem;
    color: var(--deep-slate);
    font-weight: 500;
}

/* Format Compare */
.format-compare {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    margin-top: 1rem;
}
.format-box {
    background: var(--warm-canvas);
    padding: 1.25rem;
    border-radius: 6px;
    border-left: 3px solid var(--study-blue);
}
.format-name {
    font-family: 'Source Code Pro', monospace;
    font-size: 1rem;
    font-weight: 500;
    color: var(--deep-slate);
    margin-bottom: 0.5rem;
}
.format-desc {
    font-size: 0.85rem;
    color: var(--sage-gray);
    line-height: 1.6;
}

/* Footer */
#footer {
    text-align: center;
    padding: 3rem 2rem;
}
.footer-text {
    font-family: 'Source Code Pro', monospace;
    font-size: 0.8rem;
    color: var(--sage-gray);
}

/* Responsive */
@media (max-width: 700px) {
    .card-left, .card-right, .card-wide { width: 100%; }
    .format-compare { grid-template-columns: 1fr; }
    .study-card { transform: none !important; }
}
