@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700;800&family=DM+Mono:wght@300;400;500&display=swap');

:root {
    --bg:      #F8F6F2;
    --black:   #111111;
    --orange:  #FF5200;
    --gray:    #5f5f5b;
    --light:   #EDEAE4;
    --line:    #DEDAD3;
    --code-bg: #111111;
    --code-fg: #D4C9B0;
    --code-cm: #5a5a56;
    --code-kw: #8FBC8F;
    --code-val:#D4A85A;
    --fd:  'Montserrat', sans-serif;
    --mono:'DM Mono', monospace;
    --nav-h: 62px;
}

*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }

body {
    background: var(--bg);
    color: var(--black);
    font-family: var(--fd);
    font-weight: 300;
    overflow-x: hidden;
    cursor: none;
}

/*cursor*/
#cursor {
    width:10px; height:10px;
    background:var(--orange); border-radius:50%;
    position:fixed; pointer-events:none; z-index:9999;
    transform:translate(-50%,-50%);
    transition:width .25s ease, height .25s ease, background .2s ease;
}
#cursor.grow {
    width:36px; height:36px;
    background:transparent; border:1.5px solid var(--orange);
}

/*nav*/
nav {
    position:fixed; top:0; left:0; right:0;
    z-index:200;
    display:flex; align-items:center; justify-content:space-between;
    padding:0 2.5rem;
    height:var(--nav-h);
    background:var(--bg); border-bottom:1px solid var(--line);
}

.nav-logo img { height:28px; mix-blend-mode:multiply; display:block; }

.nav-links {
    display:flex; gap:2rem; list-style:none; align-items:center;
}
.nav-links a {
    text-decoration:none; color:var(--black);
    font-size:.6rem; letter-spacing:.2em; text-transform:uppercase; font-weight:500;
    transition:color .2s; white-space:nowrap;
}
.nav-links a:hover { color:var(--orange); }
.nav-links a.active { color:var(--orange); }
.nav-back { display:flex; align-items:center; gap:.45rem; color:var(--gray); }
.nav-back svg { width:11px; height:11px; fill:currentColor; transition:transform .2s; }
.nav-back:hover svg { transform:translateX(-3px); }
.nav-sibling { color:var(--gray); }

/*hamburguesa*/
.nav-hamburger {
    display:none;
    flex-direction:column; justify-content:center; align-items:center;
    gap:5px; width:40px; height:40px;
    background:transparent; border:1px solid var(--line); cursor:none;
    flex-shrink:0;
}
.nav-hamburger span {
    display:block; width:18px; height:1.5px;
    background:var(--black); transition:transform .3s ease, opacity .3s ease, width .3s ease;
    transform-origin:center;
}
.nav-hamburger--open span:nth-child(1) { transform:translateY(6.5px) rotate(45deg); }
.nav-hamburger--open span:nth-child(2) { opacity:0; width:0; }
.nav-hamburger--open span:nth-child(3) { transform:translateY(-6.5px) rotate(-45deg); }

/*footer*/
footer {
    padding:2.5rem 2.5rem 2rem;
    border-top:1px solid var(--line);
    display:flex; flex-direction:column; align-items:center; gap:1.4rem; text-align:center;
}
.fc { font-size:.55rem; font-weight:400; color:var(--gray); letter-spacing:.1em; line-height:1.8; }
.fl img { height:20px; mix-blend-mode:multiply; opacity:.5; }

/*mini hero subpaginas*/
.mini-hero {
    padding:calc(var(--nav-h) + 4rem) 2.5rem 4rem;
    border-bottom:1px solid var(--line);
    max-width: 100px0; margin:0 auto;
}
.mini-breadcrumb {
    font-family:var(--mono); font-size:.58rem; letter-spacing:.2em; text-transform:uppercase;
    color:var(--gray); margin-bottom:2.5rem; display:flex; align-items:center; gap:.9rem;
    animation:fadeUp .6s ease both;
}
.mini-breadcrumb::before { content:''; display:block; width:1.8rem; height:1px; background:var(--orange); flex-shrink:0; }
.mini-title {
    font-family:var(--fd); font-size:clamp(3.5rem,9vw,7.5rem); font-weight:800;
    line-height:.88; letter-spacing:-.04em; animation:fadeUp .7s .08s ease both;
}
.mini-title .accent { color:var(--orange); }
.mini-desc {
    margin-top:2.2rem; font-size:.9rem; font-weight:300; color:var(--gray); line-height:1.85;
    max-width:580px; animation:fadeUp .7s .16s ease both;
}
.mini-badges {
    margin-top:1.8rem; display:flex; flex-wrap:wrap; gap:.5rem; animation:fadeUp .7s .24s ease both;
}
.mini-badge {
    padding:.26rem .85rem; border:1px solid var(--line); font-size:.55rem;
    letter-spacing:.14em; text-transform:uppercase; font-weight:500; border-radius:100px; color:var(--gray);
}

/*animaciones*/
@keyframes fadeUp {
    from { opacity:0; transform:translateY(22px); }
    to   { opacity:1; transform:translateY(0); }
}
.reveal {
    opacity:0; transform:translateY(28px);
    transition:opacity .65s ease, transform .65s ease;
}
.reveal.vis { opacity:1; transform:translateY(0); }

/*nav entre subpaginas*/
.sub-nav { border-top:1px solid var(--line); display:grid; grid-template-columns:1fr 1fr; }
.sub-nav-item {
    padding:2rem 2.5rem; text-decoration:none; color:var(--black);
    display:flex; flex-direction:column; gap:.5rem;
    transition:background .25s; border-right:1px solid var(--line);
}
.sub-nav-item:last-child { border-right:none; text-align:right; align-items:flex-end; }
.sub-nav-item:hover { background:var(--black); }
.sub-nav-item:hover .sub-nav-label { color:var(--orange); }
.sub-nav-item:hover .sub-nav-title  { color:white; }
.sub-nav-label { font-family:var(--mono); font-size:.56rem; letter-spacing:.16em; text-transform:uppercase; color:var(--orange); }
.sub-nav-title { font-family:var(--fd); font-size:1rem; font-weight:700; letter-spacing:-.01em; }

/*bloques codigo POP*/
.pop-block {
    background:var(--code-bg); border-left:3px solid var(--orange);
    padding:1.8rem 2rem; margin:1.4rem 0 2rem;
    font-family:var(--mono); font-size:.8rem; line-height:2.1;
    overflow-x:auto; color:var(--code-fg);
}
.pop-block .kw  { color:var(--code-kw); }
.pop-block .val { color:var(--code-val); }
.pop-block .cm  { color:var(--code-cm); font-style:italic; }
.pop-block .ind  { padding-left:1.6rem; display:block; }
.pop-block .ind2 { padding-left:3.2rem; display:block; }
.pop-block .ind3 { padding-left:4.8rem; display:block; }
.pop-block span  { display:block; }

/*arbol carpetas*/
.pop-tree {
    background:var(--light); border:1px solid var(--line); border-left:3px solid var(--black);
    padding:1.6rem 2rem; font-family:var(--mono); font-size:.78rem; line-height:2.1; margin:1.4rem 0 2rem;
}
.pop-tree .dir  { color:var(--black); font-weight:500; }
.pop-tree .file { color:var(--gray); padding-left:1.4rem; display:block; }
.pop-tree .nest { padding-left:1.4rem; }

/*nota lateral*/
.pop-note {
    border:1px solid var(--line); 
    padding:1.4rem 1.8rem; 
    margin:2rem 0;
    background:var(--light); 
    display:flex; 
    gap:1rem; 
    align-items:flex-start;
}
.note-bar { width:3px; background:var(--orange); flex-shrink:0; align-self:stretch; min-height:1rem; }
.note-inner { flex:1; }
.note-label { font-family:var(--mono); font-size:.56rem; text-transform:uppercase; letter-spacing:.14em; color:var(--orange); display:block; margin-bottom:.5rem; }
.note-text { font-size:.84rem; font-weight:300; color:var(--gray); line-height:1.75; }

/*etiqueta bloque*/
.block-label {
    font-family:var(--mono); font-size:.58rem; letter-spacing:.16em; text-transform:uppercase;
    color:var(--gray); margin-bottom:.8rem; display:flex; align-items:center; gap:.6rem;
}
.block-label::before { content:''; display:block; width:1.4rem; height:1px; background:var(--orange); }

/*hero subpaginas*/
.pop-hero {
    padding:calc(var(--nav-h) + 4rem) 2.5rem 0;
    border-bottom:1px solid var(--line);
    display:grid; grid-template-columns:1.2fr .8fr; gap:3rem; align-items:end;
}
.pop-hero-left { padding-bottom:4rem; }
.pop-label {
    font-size:.58rem; letter-spacing:.25em; text-transform:uppercase; color:var(--gray); font-weight:500;
    margin-bottom:1.8rem; display:flex; align-items:center; gap:.8rem;
    animation:fadeUp .7s ease both;
}
.pop-label::before { content:''; display:block; width:2rem; height:1px; background:var(--orange); }
.pop-title {
    font-family:var(--fd); font-size:clamp(3rem,7vw,6rem); font-weight:800;
    line-height:.92; letter-spacing:-.03em; animation:fadeUp .7s .1s ease both;
}
.pop-title .accent { color:var(--orange); }
.pop-subtitle {
    margin-top:2rem; font-size:.9rem; font-weight:300; color:var(--gray); line-height:1.75;
    max-width:500px; animation:fadeUp .7s .2s ease both;
}
.pop-meta { margin-top:2rem; display:flex; gap:.75rem; flex-wrap:wrap; animation:fadeUp .7s .3s ease both; }
.pop-badge {
    padding:.3rem .9rem; border:1px solid var(--line); font-size:.56rem;
    letter-spacing:.14em; text-transform:uppercase; font-weight:500; border-radius:100px; color:var(--gray);
}
.pop-hero-right { display:flex; justify-content:flex-end; align-items:flex-end; animation:fadeUp .7s .15s ease both; }
.pop-version-block { text-align:right; padding-bottom:3rem; }
.pop-ver-num {
    font-family:var(--mono); font-size:clamp(4rem,9vw,8rem); font-weight:500;
    color:var(--line); line-height:1; letter-spacing:-.04em; display:block;
}
.pop-ver-label { font-family:var(--mono); font-size:.6rem; color:var(--gray); letter-spacing:.14em; text-transform:uppercase; display:block; margin-top:.5rem; }

/*indice subpaginas*/
.pop-index { 
    border-bottom:1px solid var(--line); 
    padding:0 2.5rem; 
    display:flex; 
    flex-wrap:wrap; 
    overflow-x:auto; 
}

.pop-index-item {
    display:flex; 
    align-items:center; 
    gap:.6rem; 
    width: 190px;;
    padding:1rem 1.4rem;
    font-size:.56rem; 
    letter-spacing:.14em; 
    text-transform:uppercase; 
    font-weight:500;
    color:var(--gray); 
    text-decoration:none; 
    border-right:1px solid var(--line);
    transition:background .2s, color .2s; 
    white-space:nowrap;
}
.pop-index-item:hover { 
    background:var(--light); 
    color:var(--black);
}
.pop-index-num { 
    font-family:var(--mono); 
    font-size:.52rem; 
    color:var(--orange); 
}

/*contenido subpaginas*/
.pop-content { max-width:1100px; margin:0 auto; padding:0 2.5rem; }
.pop-section { padding:6rem 0; border-bottom:1px solid var(--line); }
.pop-section:last-child { border-bottom:none; }

.sec-header { display:grid; grid-template-columns:120px 1fr; gap:3rem; margin-bottom:4.5rem; align-items:start; }
.sec-num { font-family:var(--mono); font-size:.62rem; color:var(--orange); letter-spacing:.12em; text-transform:uppercase; padding-top:.5rem; }
.sec-title-h2 { font-family:var(--fd); font-size:clamp(2rem,4vw,3.2rem); font-weight:800; letter-spacing:-.02em; line-height:.95; }
.sec-title-h2 .accent { color:var(--orange); }

.pop-p { font-size:.92rem; font-weight:300; color:var(--gray); line-height:1.85; margin-bottom:1.5rem; max-width:680px; }
.pop-p:last-child { margin-bottom:0; }

.pop-p code {
    font-family:var(--mono); font-size:.82rem;
    background:var(--light); padding:.1em .45em; color:var(--black);
}

/*grids*/
.principles-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin:2.5rem 0; }
.principle-item { background:var(--bg); padding:2.2rem 2.4rem; position:relative; overflow:hidden; transition:background .3s; }
.principle-item::after { content:''; position:absolute; bottom:0; left:0; width:0; height:2px; background:var(--orange); transition:width .4s ease; }
.principle-item:hover { background:var(--light); }
.principle-item:hover::after { width:100%; }
.principle-num { font-family:var(--mono); font-size:.56rem; color:var(--orange); letter-spacing:.14em; text-transform:uppercase; display:block; margin-bottom:.9rem; }
.principle-text { font-size:.88rem; font-weight:300; line-height:1.7; color:var(--gray); }
.principle-text strong { color:var(--black); font-weight:600; }

.elements-layout { display:grid; grid-template-columns:1fr 1fr; gap:3rem; margin-top:2.5rem; }
.element-title { font-family:var(--fd); font-size:1.05rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:var(--black); margin-bottom:.8rem; display:flex; align-items:center; gap:.75rem; }
.element-title .e-num { font-family:var(--mono); font-size:.58rem; color:var(--orange); font-weight:400; letter-spacing:.12em; }
.element-desc { font-size:.82rem; font-weight:300; color:var(--gray); line-height:1.75; margin-bottom:1rem; }

.compare-grid { display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line); border:1px solid var(--line); margin:2rem 0; }
.compare-col { background:var(--bg); padding:2.2rem 2.4rem; }
.compare-col.pop-col { border-left:3px solid var(--orange); }
.compare-label { font-family:var(--mono); font-size:.58rem; letter-spacing:.14em; text-transform:uppercase; color:var(--gray); display:block; margin-bottom:1.2rem; }
.compare-col.pop-col .compare-label { color:var(--orange); }
.compare-col pre { font-family:var(--mono); font-size:.8rem; line-height:2.1; color:var(--black); white-space:pre-wrap; }

.arch-table { width:100%; border-collapse:collapse; margin:2.5rem 0; }
.arch-table th { text-align:left; font-family:var(--mono); font-size:.58rem; text-transform:uppercase; letter-spacing:.12em; color:var(--gray); padding:.8rem 1.2rem .8rem 0; border-bottom:1px solid var(--black); font-weight:400; }
.arch-table td { padding:1.1rem 1.2rem 1.1rem 0; border-bottom:1px solid var(--line); vertical-align:top; font-size:.85rem; font-weight:300; color:var(--gray); line-height:1.6; }
.arch-table td:first-child { font-family:var(--mono); font-size:.76rem; color:var(--black); font-weight:500; width:150px; padding-right:2rem; }
.arch-table tr:last-child td { border-bottom:none; }
.arch-table tr:hover td { background:var(--light); }

.limit-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--line); border:1px solid var(--line); margin-top:2.5rem; }
.limit-item { background:var(--bg); padding:2.2rem 2.4rem; }
.limit-title { font-family:var(--fd); font-size:.9rem; font-weight:600; color:var(--black); margin-bottom:.7rem; }
.limit-text { font-size:.82rem; font-weight:300; color:var(--gray); line-height:1.7; }

.roadmap-item { display:grid; grid-template-columns:90px 1fr; gap:2.5rem; padding:2.2rem 0; border-bottom:1px solid var(--line); align-items:start; transition:background .2s, padding .2s; }
.roadmap-item:first-child { border-top:1px solid var(--line); }
.roadmap-item:hover { background:var(--light); padding-left:1rem; padding-right:1rem; margin:0 -1rem; }
.roadmap-phase { font-family:var(--mono); font-size:.6rem; color:var(--orange); letter-spacing:.1em; text-transform:uppercase; padding-top:.25rem; }
.roadmap-name { font-family:var(--fd); font-size:1rem; font-weight:700; color:var(--black); margin-bottom:.5rem; }
.roadmap-desc { font-size:.83rem; font-weight:300; color:var(--gray); line-height:1.7; }

/*cabecera de seccion generica*/
.sec-hdr { display:flex; align-items:baseline; justify-content:space-between; border-bottom:1px solid var(--line); padding-bottom:1.4rem; margin-bottom:3.5rem; }
.sec-title { font-family:var(--fd); font-size:clamp(2rem,4vw,3rem); font-weight:800; letter-spacing:-.02em; }
.sec-note { font-size:.62rem; color:var(--gray); letter-spacing:.14em; text-transform:uppercase; font-weight:500; }

/*hub panels — 4 grandes paneles de navegacion en el index*/
.hub-grid {
    display:grid; grid-template-columns:repeat(2,1fr);
    gap:1px; background:var(--line); border:1px solid var(--line); border-top:none;
}
.hub-panel {
    background:var(--bg); padding:3rem 2.5rem; min-height:300px;
    display:flex; flex-direction:column; justify-content:space-between;
    text-decoration:none; color:var(--black);
    transition:background .32s; position:relative; overflow:hidden;
}
.hub-panel::after {
    content:''; position:absolute; bottom:0; left:0;
    width:0; height:3px; background:var(--orange); transition:width .4s ease;
}
.hub-panel:hover { background:var(--black); }
.hub-panel:hover::after { width:100%; }

.hub-top { display:flex; justify-content:space-between; align-items:flex-start; }
.hub-num { font-family:var(--mono); font-size:.6rem; color:var(--orange); letter-spacing:.14em; text-transform:uppercase; }
.hub-bg-num {
    font-family:var(--mono); font-size:clamp(4rem,8vw,7rem); font-weight:500;
    color:var(--line); line-height:1; letter-spacing:-.04em; transition:color .32s;
}
.hub-panel:hover .hub-bg-num { color:#222; }

.hub-bottom { display:flex; flex-direction:column; gap:.8rem; }
.hub-label {
    font-family:var(--mono); 
    font-size:.56rem; 
    letter-spacing:.28em; 
    text-transform:uppercase;
    color:var(--gray); 
    transition:color .32s;
}
.hub-panel:hover .hub-label { color:#777; }
.hub-title {
    font-family:var(--fd); font-size:clamp(1.6rem,3vw,2.6rem); font-weight:800;
    letter-spacing:-.02em; line-height:.95; transition:color .32s;
}
.hub-panel:hover .hub-title { color:white; }
.hub-tags {
    font-size:.72rem; 
    font-weight:500; 
    color:var(--gray); 
    transition:color .32s;
    line-height:1.6;
}
.hub-panel:hover .hub-tags { color:#888; }
.hub-arrow {
    font-size:.58rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase;
    color:var(--orange); display:flex; align-items:center; gap:.4rem; margin-top:.5rem;
}
.hub-arrow span { display:inline-block; transition:transform .22s; }
.hub-panel:hover .hub-arrow span { transform:translateX(5px); }

/*portafolio cards*/
.pf-grid {
    display:grid; grid-template-columns:repeat(3,1fr);
    gap:1px; background:var(--line); border:1px solid var(--line);
}
.pf-card {
    background:var(--bg); text-decoration:none; color:var(--black);
    display:flex; flex-direction:column; position:relative; overflow:hidden;
    transition:background .3s;
}
.pf-img {
    aspect-ratio:4/3; position:relative; overflow:hidden;
}
.pf-placeholder {
    width:100%; height:100%; background:var(--light);
    display:flex; align-items:center; justify-content:center;
    position:relative;
}
.pf-placeholder::before {
    content:''; position:absolute; inset:0;
    background:repeating-linear-gradient(
        -45deg,
        transparent,
        transparent 8px,
        var(--line) 8px,
        var(--line) 9px
    );
}
.pf-placeholder-label {
    font-family:var(--mono); font-size:.6rem; letter-spacing:.12em; text-transform:uppercase;
    color:var(--gray); position:relative; z-index:1; background:var(--bg);
    padding:.3rem .8rem; border:1px solid var(--line);
}
.pf-info {
    padding:1.6rem 1.8rem; display:flex; flex-direction:column; gap:.55rem; flex:1;
}
.pf-cat { font-family:var(--mono); font-size:.52rem; letter-spacing:.16em; text-transform:uppercase; color:var(--orange); }
.pf-name { font-family:var(--fd); font-size:1rem; font-weight:700; letter-spacing:-.01em; }
.pf-year { font-family:var(--mono); font-size:.58rem; color:var(--gray); }
.pf-arrow {
    padding:1rem 1.8rem 1.6rem;
    font-size:.58rem; font-weight:600; letter-spacing:.16em; text-transform:uppercase;
    color:var(--orange); display:flex; align-items:center; gap:.4rem;
    border-top:1px solid var(--line); margin-top:auto; transition:all .25s;
}
.pf-card:hover { background:var(--black); }
.pf-card:hover .pf-name { color:white; }
.pf-card:hover .pf-year { color:#666; }
.pf-card:hover .pf-placeholder { filter:brightness(.4); }
.pf-card:hover .pf-arrow { border-color:#333; }
.pf-card:hover .pf-arrow span { transform:translateX(4px); }
.pf-arrow span { display:inline-block; transition:transform .22s; }

/*card oculta por filtro*/
.pf-card[data-hidden] { display:none; }
.rc[data-hidden] { display:none; }
.dl-card[data-hidden] { display:none; }

/*links linktree*/
.lk-list { border:1px solid var(--line); }
.lk-row {
    display:flex; align-items:center; gap:1.5rem; padding:1.5rem 2.5rem;
    text-decoration:none; color:var(--black);
    border-bottom:1px solid var(--line); transition:background .25s;
    position:relative;
}
.lk-row:last-child { border-bottom:none; }
.lk-row:hover { background:var(--black); }
.lk-icon {
    width:42px; height:42px; background:var(--light);
    display:flex; align-items:center; justify-content:center;
    flex-shrink:0; transition:background .25s;
}
.lk-row:hover .lk-icon { background:#1e1e1e; }
.lk-icon svg { width:16px; height:16px; fill:var(--black); transition:fill .25s; }
.lk-row:hover .lk-icon svg { fill:var(--orange); }
.lk-info { flex:1; }
.lk-platform {
    font-family:var(--fd); font-size:.85rem; font-weight:700; letter-spacing:-.01em;
    transition:color .25s;
}
.lk-row:hover .lk-platform { color:white; }
.lk-handle {
    font-family:var(--mono); font-size:.65rem; color:var(--gray); margin-top:.2rem;
    transition:color .25s;
}
.lk-row:hover .lk-handle { color:#777; }
.lk-cat-label {
    font-family:var(--mono); font-size:.52rem; letter-spacing:.14em; text-transform:uppercase;
    color:var(--orange); min-width:80px;
}
.lk-arrow {
    font-size:.6rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase;
    color:var(--orange); transition:transform .2s;
}
.lk-row:hover .lk-arrow { transform:translateX(5px); }

/*descargas cards*/
.dl-grid {
    display:grid; grid-template-columns:repeat(3,1fr);
    gap:1px; background:var(--line); border:1px solid var(--line);
}
.dl-card {
    background:var(--bg); padding:2.6rem 2.4rem;
    display:flex; flex-direction:column; gap:1.1rem;
    transition:background .25s; position:relative; overflow:hidden;
}
.dl-card.proxima { opacity:.5; pointer-events:none; }
.dl-card::after {
    content:''; position:absolute; bottom:0; left:0;
    width:0; height:3px; background:var(--orange); transition:width .4s;
}
.dl-card:not(.proxima):hover::after { width:100%; }
.dl-card:not(.proxima):hover { background:var(--light); }
.dl-type {
    font-family:var(--mono); font-size:.56rem; letter-spacing:.14em; text-transform:uppercase;
    color:var(--orange); display:flex; align-items:center; gap:.6rem;
}
.dl-type-badge {
    background:var(--black); color:white; padding:.18rem .55rem;
    font-size:.5rem; letter-spacing:.12em;
}
.dl-title { font-family:var(--fd); font-size:1.1rem; font-weight:800; letter-spacing:-.01em; line-height:1.05; }
.dl-desc { font-size:.8rem; font-weight:300; color:var(--gray); line-height:1.65; flex:1; }
.dl-btn {
    display:inline-flex; align-items:center; gap:.6rem; padding:.75rem 1.3rem;
    border:1.5px solid var(--black); font-size:.58rem; font-weight:600;
    letter-spacing:.14em; text-transform:uppercase; text-decoration:none;
    color:var(--black); cursor:none; transition:all .2s; width:fit-content;
}
.dl-btn:hover { background:var(--orange); border-color:var(--orange); color:white; }
.dl-proxima-tag {
    font-family:var(--mono); font-size:.56rem; letter-spacing:.14em; text-transform:uppercase;
    color:var(--gray); border:1px solid var(--line); padding:.3rem .7rem; width:fit-content;
}

/*filtros categorias*/
.filter-bar { 
    display:flex; 
    gap:.5rem; 
    flex-wrap:wrap; 
    padding:2rem 2.5rem; 
    border-bottom:1px solid var(--line); 
}

.filter-btn {
    padding:.38rem 1rem; 
    border:1px solid var(--line); 
    width:130px;
    background:transparent;
    font-family:var(--fd); 
    font-size:.58rem; 
    letter-spacing:.16em; 
    text-transform:uppercase; 
    font-weight:500;
    color:var(--gray); 
    cursor:none; 
    transition:all .2s;
}

.filter-btn:hover { 
    border-color:var(--orange); 
    color:var(--black); 
}

.filter-btn.active { 
    background:var(--orange); 
    color:white; 
}

.filter-bar i {
    padding:.38rem 1rem; 
    font-size: 1.3rem;
    color: var(--orange);
    margin-right: .8rem;
}


/*seccion recursos*/
.rec-grid {
    display:grid; grid-template-columns:repeat(3,1fr);
    gap:1px; background:var(--line); border:1px solid var(--line);
}
.rec-card {
    background:var(--bg); padding:2.4rem; text-decoration:none; color:var(--black);
    display:flex; flex-direction:column; justify-content:space-between;
    min-height:240px; position:relative; overflow:hidden; transition:background .32s;
}
.rec-card::after { content:''; position:absolute; bottom:0; left:0; width:0; height:3px; background:var(--orange); transition:width .4s; }
.rec-card:hover { background:var(--black); }
.rec-card:hover::after { width:100%; }
.rec-card.proxima { opacity:.5; pointer-events:none; }
.rec-num { font-size:.65rem; font-weight:700; letter-spacing:.22em; color:var(--orange); display:block; margin-bottom:.5rem; }
.rec-tag { display:inline-block; font-size:.52rem; font-weight:500; letter-spacing:.16em; text-transform:uppercase; border:1px solid var(--line); padding:.22rem .7rem; border-radius:100px; color:var(--gray); transition:border-color .32s, color .32s; width:fit-content; }
.rec-card:hover .rec-tag { border-color:#333; color:#666; }
.rec-bottom { display:flex; flex-direction:column; gap:.55rem; }
.rec-title { font-family:var(--fd); font-size:clamp(1.2rem,2vw,1.8rem); font-weight:800; letter-spacing:-.02em; line-height:1.05; transition:color .32s; }
.rec-card:hover .rec-title { color:white; }
.rec-desc { font-size:.78rem; font-weight:300; color:var(--gray); line-height:1.6; transition:color .32s; }
.rec-card:hover .rec-desc { color:#888; }
.rec-arrow { font-size:.58rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase; color:var(--orange); display:flex; align-items:center; gap:.4rem; }
.rec-arrow span { display:inline-block; transition:transform .22s; }
.rec-card:hover .rec-arrow span { transform:translateX(5px); }

/*external links lista*/
.ext-list { border:1px solid var(--line); border-top:none; }
.ext-link {
    display:flex; align-items:center; gap:1.2rem; padding:1.2rem 2rem;
    border-top:1px solid var(--line); text-decoration:none; color:var(--black);
    font-size:.8rem; font-weight:500; transition:background .2s;
}
.ext-link:hover { background:var(--light); }
.ext-link svg { width:13px; height:13px; fill:var(--orange); flex-shrink:0; }
.ext-link-cat { font-family:var(--mono); font-size:.52rem; letter-spacing:.12em; text-transform:uppercase; color:var(--gray); min-width:90px; }
.ext-link-arrow { margin-left:auto; font-size:.6rem; color:var(--orange); transition:transform .2s; }
.ext-link:hover .ext-link-arrow { transform:translateX(4px); }

/*responsive global - pc y telefono*/
@media (max-width:900px) {
  
    /*mini hero responsive*/
    .mini-hero{
        padding:calc(var(--nav-h) + 2.5rem) 1.4rem 3rem;
    }
    
    .mini-breadcrumb{
        font-size:.54rem;
        gap:.7rem;
        margin-bottom:1.8rem;
        letter-spacing:.16em;
        flex-wrap:wrap;
    }
    
    .mini-breadcrumb::before{
        width:1.2rem;
    }
    
    .mini-title{
        font-size:clamp(2.6rem,11vw,4.5rem);
        line-height:.95;
    }
    
    .mini-desc{
        margin-top:1.4rem;
        font-size:.85rem;
        line-height:1.75;
        max-width:100%;
    }
    
    .mini-badges{
        margin-top:1.4rem;
        gap:.45rem;
    }
    
    .mini-badge{
        font-size:.5rem;
        padding:.28rem .7rem;
        letter-spacing:.12em;
    }
    nav { padding:0 1.4rem; }
    .nav-links { display:none; flex-direction:column; position:absolute; top:var(--nav-h); left:0; right:0; background:var(--bg); border-bottom:1px solid var(--line); padding:1rem 0; gap:0; z-index:199; }
    .nav-links.nav-open { display:flex; }
    .nav-links li { width:100%; }
    .nav-links a { display:block; padding:.85rem 1.4rem; font-size:.62rem; border-bottom:1px solid var(--line); }
    .nav-links li:last-child a { border-bottom:none; }
    .nav-hamburger { display:flex; }

  
    .pop-hero { grid-template-columns:1fr; padding:calc(var(--nav-h) + 2.5rem) 1.4rem 0; gap:1rem; }
    .pop-hero-left { padding-bottom:2.5rem; }
    .pop-hero-right { display:none; }
    .pop-title { font-size:clamp(2.6rem,11vw,4.5rem); line-height:1; }
    .pop-subtitle { font-size:.85rem; max-width:100%; }

    .pop-index {
        display:grid; 
        grid-template-columns:repeat(2,1fr);
        padding:0; 
        overflow-x:hidden;
    }
    .pop-index-item {
        padding:.85rem 1rem; 
        font-size:.54rem;
        white-space:normal; 
        border-bottom:1px solid var(--line);
        border-right:1px solid var(--line);
    }
    .pop-index-item:nth-child(even) { 
        border-right:none; 
    }
    .pop-index-item:first-child { padding-left:1rem; }

    .pop-content { padding:0 1.4rem; }
    .pop-section { padding:4rem 0; }
    .sec-header { grid-template-columns:1fr; gap:.7rem; margin-bottom:2.5rem; }
    .sec-num { padding-top:0; }
    .sec-title-h2 { font-size:clamp(1.8rem,8vw,2.8rem); }
    .pop-p { font-size:.88rem; max-width:100%; }

    .filter-bar {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        padding:20px;
        overflow-x:hidden;
        margin-bottom: .5rem;
        border-bottom:none; 
    }
    .filter-btn { 
        width:100%; 
        padding:.38rem 1rem; 
        font-size:.54rem; 
        text-align:center;
    }
    .filter-bar i {
        font-size: 1rem;
        grid-column: 1 / -1;
        text-align: center;
        margin-bottom: .5rem;
    }

    .principles-grid { grid-template-columns:1fr; }
    .elements-layout { grid-template-columns:1fr; gap:2rem; }
    .compare-grid { grid-template-columns:1fr; }
    .limit-grid { grid-template-columns:1fr; }
    .roadmap-item { grid-template-columns:70px 1fr; gap:1.5rem; }
    .arch-table td:first-child { width:110px; }

    .sub-nav { grid-template-columns:1fr; }
    .sub-nav-item { border-right:none; border-bottom:1px solid var(--line); padding:1.5rem 1.4rem; }
    .sub-nav-item:last-child { text-align:left; align-items:flex-start; border-bottom:none; }

    footer { flex-direction:column; gap:.6rem; text-align:center; padding:1.5rem 1rem; }
    .fc { font-size:.5rem; line-height:1.65; }
    .fl img { height:18px; }

    body { cursor:auto; }
    #cursor { display:none; }

    .hub-grid { grid-template-columns:1fr; }
    .hub-panel { min-height:180px; padding:1.8rem 1.4rem; }
    .hub-bg-num { font-size:clamp(3rem,12vw,5rem); }

    .pf-grid { grid-template-columns:1fr; }
    .dl-grid { grid-template-columns:1fr; }
    .rec-grid { grid-template-columns:1fr; }

    .lk-row { padding:1.2rem 1.4rem; gap:1rem; }
}



@media (max-width:768px){

    .hero{
        padding:calc(var(--nav-h) + 2rem) 1.2rem 3rem;
        gap:1.5rem;
        text-align:start;
    }

    .hero-label{
        justify-content:start;
        font-size:.55rem;
        letter-spacing:.15em;
    }

    .hero-sub{
        margin-top:1.5rem;
        font-size:.85rem;
    }

    .hero-tags{
        justify-content:start;
        margin-top:1.5rem;
    }

    .htag{
        font-size:.52rem;
        padding:.4rem .75rem;
    }

    .socials{
        align-items:center;
        text-align:center;
    }

    .socials-lbl{
        width:100%;
    }

    .slinks{
        grid-template-columns:1fr;
    }

    .slink,
    .contact-btn{
        width:100%;
        justify-content:center;
    }

    .hub-hdr{
        gap:.8rem;
    }

    .hub-hdr-title{
        font-size:.55rem;
    }

    .contact-title{
        font-size:clamp(2rem,10vw,3rem);
    }

}