:root {
    --bg:#efeee9;
    --paper:#f8f8f4;
    --text:#171717;
    --muted:#686862;
    --line:#deded7;
    --accent:#2457d6;
    --max:1180px;
    --radius:18px;
}* {
    box-sizing:border-box;
}html {
    scroll-behavior:smooth;
}body {
    margin:0;
    background:var(--bg);
    color:var(--text);
    font-family: Poppins, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;    line-height:1.5;
}a {
    color:inherit;
    text-decoration:none;
}.container {
    width:min(calc(100% - 40px),var(--max));
    margin:auto;
}.topbar {
    position:sticky;
    top:0;
    z-index:20;
    background:rgba(239,238,233,.94);
    backdrop-filter:blur(12px);
    border-bottom:1px solid var(--line);
}.topbar-inner {
    height:68px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:24px;
}.brand {
    font-weight:750;
    letter-spacing:-.02em;
}.nav {
    display:flex;
    gap:24px;
}.nav a {
    font-size:.9rem;
    color:var(--muted);
}.nav a:hover {
    color:var(--text);
}.hero {
    padding:82px 0 92px;
    border-bottom:1px solid var(--line);
}.hero-grid {
    display:grid;
    grid-template-columns:1.2fr .8fr;
    gap:70px;
    align-items:end;
}.eyebrow {
    font-size:.78rem;
    text-transform:uppercase;
    letter-spacing:.13em;
    color:var(--muted);
    margin-bottom:22px;
}.hero h1 {
    font-size:clamp(4rem,9vw,7.5rem);
    line-height:.88;
    letter-spacing:-.075em;
    margin:0 0 30px;
    font-weight:800;
}.hero-lead {
    font-size:clamp(1.15rem,2vw,1.45rem);
    line-height:1.45;
    max-width:650px;
    margin:0;
}.hero-side {
    border-left:1px solid var(--line);
    padding-left:28px;
}.hero-side p {
    margin:0 0 20px;
    color:var(--muted);
}.scroll-link {
    display:inline-flex;
    gap:10px;
    align-items:center;
    font-weight:650;
    border-bottom:1px solid var(--text);
    padding-bottom:4px;
}.scroll-link span {
    font-size:1.2rem;
}.section {
    padding:95px 0;
    border-bottom:1px solid var(--line);
}.section-head {
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    gap:30px;
    margin-bottom:42px;
}.section-kicker {
    font-size:.75rem;
    text-transform:uppercase;
    letter-spacing:.14em;
    color:var(--muted);
}h2 {
    font-size:clamp(2rem,4vw,3.4rem);
    letter-spacing:-.055em;
    line-height:1;
    margin:0;
}.section-intro {
    max-width:520px;
    color:var(--muted);
    margin:0;
}.projects {
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:18px;
}.project {
    background:var(--paper);
    border:1px solid var(--line);
    cursor:pointer;
    min-height:390px;
    display:flex;
    flex-direction:column;
    transition:transform .25s ease,border-color .25s ease;
}.project:hover {
    transform:translateY(-4px);
    border-color:#bbbcb4;
}.project:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:4px;
}.project.featured {
    grid-column:1/-1;
    min-height:470px;
}.project-visual {
    min-height:0;
    aspect-ratio:16 / 9;
    background:#e9e9e3;
    position:relative;
    overflow:hidden;
    display:flex;
    align-items:flex-end;
}.featured .project-visual {
    min-height:0;
    aspect-ratio:16 / 9;
}.project-visual::after {
    content:"Portfolio en construction";
    position:absolute;
    left:20px;
    bottom:17px;
    color:#77786f;
    font-size:.78rem;
    text-transform:uppercase;
    letter-spacing:.1em;
}.featured .project-visual::after {
    content:none;
}.visual-pixel {
    background:#171717 url('../images/git-argus/git_argus_cover.jpg') center/100% 100% no-repeat;
}.visual-pixel::before {
    content:"";
    white-space:pre;
    position:absolute;
    left:28px;
    top:26px;
    color:#fff;
    font-size:clamp(2rem,6vw,5rem);
    font-weight:850;
    line-height:.8;
    letter-spacing:-.08em;
}.visual-db {
    background:#26150f url('../images/brasa-carte/la_brasa_cover.jpg') center/cover no-repeat;
}.visual-db::before,.visual-db::after {
    content:none;
}.visual-bank {
    background:linear-gradient(135deg,#e6e2d9,#fff);
}.visual-bank::before {
    content:"TINY BANK";
    position:absolute;
    left:25px;
    top:25px;
    font-size:2.2rem;
    font-weight:800;
    letter-spacing:-.07em;
}.visual-spec {
    background:linear-gradient(135deg,#eee,#d8d8d1);
}.visual-spec::before {
    content:"CAHIER\A DES CHARGES";
    white-space:pre;
    position:absolute;
    left:25px;
    top:25px;
    font-size:2.1rem;
    font-weight:800;
    line-height:.9;
    letter-spacing:-.07em;
}.visual-trading {
    background:linear-gradient(135deg,#e3ece4,#f5f5f0);
}.visual-trading::before {
    content:"TRADING\A SIMULATOR";
    white-space:pre;
    position:absolute;
    left:25px;
    top:25px;
    font-size:2.1rem;
    font-weight:800;
    line-height:.9;
    letter-spacing:-.07em;
}.project-body {
    padding:24px;
    display:flex;
    flex:1;
    flex-direction:column;
}.project-meta {
    display:flex;
    justify-content:space-between;
    gap:15px;
    color:var(--muted);
    font-size:.8rem;
    text-transform:uppercase;
    letter-spacing:.08em;
}.project h3 {
    font-size:1.65rem;
    letter-spacing:-.04em;
    margin:12px 0 8px;
}.project p {
    color:var(--muted);
    margin:0 0 22px;
    max-width:55ch;
}.project-link {
    display:inline-flex;
    align-items:center;
    gap:8px;
    margin-top:auto;
    font-weight:700;
    font-size:.9rem;
}.project-link:hover {
    color:var(--accent);
}.about-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:70px;
}.about-copy {
    font-size:1.2rem;
    max-width:620px;
}.about-copy p {
    margin:0 0 20px;
}.facts {
    display:grid;
    gap:0;
    border-top:1px solid var(--line);
}.fact {
    display:grid;
    grid-template-columns:150px 1fr;
    gap:20px;
    padding:18px 0;
    border-bottom:1px solid var(--line);
}.fact-label {
    color:var(--muted);
    font-size:.82rem;
    text-transform:uppercase;
    letter-spacing:.08em;
}.experience {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:18px;
}.experience-item {
    padding:26px 0;
    border-top:1px solid var(--text);
}.experience-item h3 {
    margin:0;
    font-size:1.35rem;
    letter-spacing:-.03em;
}.experience-meta {
    color:var(--muted);
    font-size:.9rem;
    margin:5px 0 18px;
}.experience-project-link {
    border:0;
    padding:0;
    background:none;
    color:inherit;
    font:inherit;
    text-decoration:underline;
    text-decoration-color:var(--line);
    text-underline-offset:3px;
    cursor:pointer;
}
.experience-project-link:hover {
    color:var(--accent);
    text-decoration-color:currentColor;
}
.experience-project-link:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:3px;
}.experience-item ul {
    margin:0;
    padding-left:18px;
    color:var(--muted);
}.skills {
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:18px;
}.skill-group {
    border-top:1px solid var(--text);
    padding-top:18px;
}.skill-group h3 {
    margin:0 0 12px;
    font-size:1rem;
}.skill-group p {
    margin:0;
    color:var(--muted);
}.education {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:18px;
}.education-item {
    padding:22px 0;
    border-top:1px solid var(--text);
}.education-item h3 {
    margin:0 0 7px;
    font-size:1.1rem;
}.education-item p {
    margin:0;
    color:var(--muted);
    font-size:.92rem;
}.contact {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:70px;
    align-items:end;
}.contact h2 {
    max-width:600px;
}.contact-links {
    display:grid;
    gap:13px;
}.contact-links a {
    font-size:1.05rem;
    border-bottom:1px solid var(--line);
    padding-bottom:10px;
}.contact-links a:hover {
    color:var(--accent);
    border-color:var(--accent);
}footer {
    padding:28px 0 45px;
    color:var(--muted);
    font-size:.8rem;
    display:flex;
    justify-content:space-between;
}

@media(max-width:850px){.container {
    width:min(calc(100% - 28px),var(--max));
}.nav {
    gap:13px;
}.nav a:nth-child(n+3) {
    display:none;
}.hero {
    padding:58px 0 65px;
}.hero-grid,.about-grid,.contact,.experience,.skills {
    grid-template-columns:1fr;
    gap:38px;
}.hero h1 {
    font-size:clamp(4rem,18vw,6rem);
}.hero-side {
    border-left:0;
    border-top:1px solid var(--line);
    padding:20px 0 0;
}.section {
    padding:68px 0;
}.section-head {
    display:block;
    margin-bottom:30px;
}.section-intro {
    margin-top:14px;
}.projects {
    grid-template-columns:1fr;
}.project:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:4px;
}.project.featured {
    grid-column:auto;
}.education {
    grid-template-columns:1fr;
}.fact {
    grid-template-columns:110px 1fr;
}
}

@media(max-width:520px){.topbar-inner {
    height:auto;
    min-height:62px;
}.brand {
    font-size:.92rem;
}.nav {
    font-size:.8rem;
}.hero h1 {
    letter-spacing:-.08em;
}.project-visual {
    min-height:0;
    aspect-ratio:16 / 9;
}
.featured .project-visual {
    min-height:0;
    aspect-ratio:16 / 9;
}.fact {
    grid-template-columns:1fr;
    gap:5px;
}footer {
    display:block;
}.footer-note {
    margin-top:8px;
}
}

@media(prefers-reduced-motion:reduce){html {
    scroll-behavior:auto;
}.project {
    transition:none;
}
}

/* Project modal */
.project-link {
    border:1px solid var(--line);
    border-radius:6px;
    background:var(--bg);
    font:inherit;
    color:inherit;
    cursor:pointer;
    padding:9px 12px;
}
.project-link:hover {
    color:var(--accent);
    border-color:#b8b8ae;
    background:#f2f1ec;
}
.project-link:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:3px;
}
.project-modal {
    position:fixed;
    inset:0;
    z-index:100;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:28px;
    background:rgba(23,23,23,.42);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .2s ease, visibility .2s ease;
}
.project-modal.is-open {
    opacity:1;
    visibility:visible;
    pointer-events:auto;
}
.project-modal-panel {
    width:min(900px,100%);
    max-height:min(780px,calc(100vh - 56px));
    overflow:auto;
    background:var(--paper);
    border:1px solid var(--line);
    border-radius:22px;
    box-shadow:0 24px 70px rgba(0,0,0,.16);
    transform:translateY(12px);
    transition:transform .2s ease;
}
.project-modal.is-open .project-modal-panel {
    transform:translateY(0);
}
.project-modal-top {
    display:flex;
    justify-content:space-between;
    gap:30px;
    padding:24px 28px;
    border-bottom:1px solid var(--line);
    position:sticky;
    top:0;
    background:rgba(248,248,244,.96);
    backdrop-filter:blur(8px);
    z-index:2;
}
.project-modal-meta {
    color:var(--muted);
    font-size:.78rem;
    text-transform:uppercase;
    letter-spacing:.1em;
}
.project-modal-close {
    border:0;
    background:none;
    cursor:pointer;
    color:var(--muted);
    font:inherit;
    font-size:1.4rem;
    line-height:1;
    padding:0 0 0 20px;
}
.project-modal-close:hover {
    color:var(--text);
}
.project-modal-content {
    padding:34px 28px 40px;
}
.project-modal-content h3 {
    margin:0 0 14px;
    font-size:clamp(2rem,5vw,3.6rem);
    line-height:1;
    letter-spacing:-.055em;
}
.modal-project-url {
    display:inline-flex;
    margin:-12px 0 28px;
    color:var(--accent);
    text-underline-offset:3px;
}
.project-modal-content .modal-lead {
    margin:0 0 30px;
    max-width:680px;
    font-size:1.08rem;
    color:var(--muted);
}
.project-modal-grid {
    display:grid;
    grid-template-columns:1.15fr .85fr;
    gap:38px;
    border-top:1px solid var(--line);
    padding-top:28px;
}
.project-modal-block + .project-modal-block {
    margin-top:28px;
}
.project-modal-block h4 {
    margin:0 0 9px;
    font-size:.76rem;
    text-transform:uppercase;
    letter-spacing:.12em;
    color:var(--muted);
}
.project-modal-block p {
    margin:0;
}
.project-modal-media {
    position:relative;
    min-height:0;
    margin:0 0 34px;
    overflow:hidden;
    border:1px solid var(--line);
    border-radius:16px;
    background:#e9e9e3;
}
.project-modal-media img {
    display:block;
    width:100%;
    height:auto;
    aspect-ratio:16 / 9;
    object-fit:contain;
    background:#171717;
}
.project-modal-gallery {
    display:flex;
    flex-direction:column;
    gap:18px;
    margin-top:34px;
}
.project-modal-gallery img {
    display:block;
    width:100%;
    height:auto;
    object-fit:contain;
    border-radius:12px;
}
.project-modal-gallery:empty {
    display:none;
}
.project-modal-media-placeholder {
    min-height:250px;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:30px;
    color:var(--muted);
    text-align:center;
    font-size:.9rem;
}
.project-modal-media-placeholder strong {
    margin-left:4px;
    color:var(--text);
}
body.modal-open {
    overflow:hidden;
}
@media(max-width:700px) {
    .project-modal {
        padding:12px;
    }
    .project-modal-panel {
        max-height:calc(100vh - 24px);
    }
    .project-modal-top {
        padding:18px 20px;
    }
    .project-modal-content {
        padding:28px 20px 32px;
    }
    .project-modal-media {
        margin-bottom:28px;
    }
    .project-modal-grid {
        grid-template-columns:1fr;
        gap:0;
    }
}
