/* Portafolio de Infinite Process: extensión de la identidad existente. */
.project-visual-link{display:block;min-width:0}.project-body h2 a{color:inherit}.project-body h2 a:hover{color:var(--cyan)}.project-card{scroll-margin-top:100px}
.project-visual-link:focus-visible,.project-body h2 a:focus-visible{outline:2px solid var(--cyan);outline-offset:-4px}
.portfolio-motion{display:block;margin:0 auto 32px;padding:12px 18px;min-height:44px;border:1px solid #bba7f866;border-radius:24px;background:#2f334d;color:#e8e2f5;font:12px var(--display);cursor:pointer}.portfolio-motion[hidden]{display:none}.portfolio-motion:hover{border-color:var(--cyan)}
[data-motion=paused] .v3d *,[data-motion=paused] .v3d *::before,[data-motion=paused] .v3d *::after{animation-play-state:paused!important}
/* Birria: two orbiting voices exchange pulses and assemble a seed of an idea. */
.project-visual.factory,.mini-visual.factory{background:radial-gradient(ellipse at 22% 45%,#c6e78720,transparent 50%),radial-gradient(ellipse at 80% 55%,#b8a0ef30,transparent 50%),#30334c}
.v3d-factoria{--lime:#d0eb9f;--violet:#c5aff5}
.factory-halo{position:absolute;inset:1em 1.5em 2em;border:1px solid #d3c5f31c;border-radius:50%;transform:rotateX(64deg);box-shadow:0 0 0 2em #c4b4ed08,0 0 0 4em #c4b4ed04}
.factory-core{--ink:var(--lime);position:absolute;left:1.8em;top:3em;width:8em;height:8em;color:var(--ink);animation:factory-float 6s ease-in-out infinite}
.factory-core.critic{--ink:var(--violet);left:auto;right:1.8em;animation-delay:-3s}
.factory-globe{position:absolute;inset:0;border-radius:50%;border:1px solid currentColor;background:radial-gradient(circle at 32% 28%,#fff2,transparent 55%);box-shadow:inset 0 0 2em #cfeb9b12,0 0 3em #cfeb9b14;transform-style:preserve-3d;animation:factory-spin 12s linear infinite}
.critic .factory-globe{animation-direction:reverse;box-shadow:inset 0 0 2em #b794ef20,0 0 3em #b794ef20}
.factory-globe i{position:absolute;inset:0;border:1px solid currentColor;border-radius:50%;transform:rotateY(60deg)}
.factory-globe i:nth-child(2){transform:rotateY(120deg)}.factory-globe i:nth-child(3){transform:rotateX(65deg)}.factory-globe i:nth-child(4){transform:rotateX(115deg)}
.factory-core>span{position:absolute;top:9.6em;left:50%;transform:translateX(-50%);font:600 .85em var(--display);letter-spacing:.12em;white-space:nowrap}
.factory-spark{position:absolute;inset:-.9em;border:1px solid #d0eb9f22;border-radius:50%;animation:factory-orbit 8s linear infinite;transform:rotate(-30deg)}.critic .factory-spark{border-color:#c5aff522;animation-direction:reverse}
.factory-spark::before{content:'';position:absolute;top:50%;left:-.2em;width:.45em;height:.45em;border-radius:50%;background:currentColor;box-shadow:0 0 1em currentColor}
.factory-stream{position:absolute;left:9.8em;right:9.8em;top:6.9em;height:1px;background:linear-gradient(90deg,#d0eb9f70,#c5aff590)}
.factory-stream i{position:absolute;width:.6em;height:.6em;top:-.25em;left:0;border-radius:50%;background:var(--lime);box-shadow:0 0 1em var(--lime);animation:factory-pulse 3.6s ease-in-out infinite}
.factory-stream i:nth-child(2){animation-delay:-1.2s}.factory-stream i:nth-child(3){animation-delay:-2.4s}
.factory-idea{position:absolute;left:14em;top:5.2em;width:4em;height:4em;display:grid;place-items:center;animation:factory-bloom 3.6s ease-in-out infinite}
.factory-idea i{position:absolute;inset:.45em;border:1px solid #ece0ffab;background:#51496e;transform:rotate(45deg);box-shadow:0 0 2em #c5aff540}
.factory-idea b{position:relative;color:#f3efdc;font-size:2.4em;font-weight:400}
.factory-stage{position:absolute;left:0;right:0;bottom:.2em;text-align:center;font:.75em var(--display);letter-spacing:.19em;color:#c8c6d6}
@keyframes factory-spin{from{transform:rotateX(-16deg) rotateY(0deg)}to{transform:rotateX(-16deg) rotateY(360deg)}}
@keyframes factory-orbit{to{transform:rotate(330deg)}}
@keyframes factory-float{50%{transform:translateY(-.65em)}}
@keyframes factory-pulse{0%{transform:translateX(0);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translateX(12.4em);background:var(--violet);opacity:0}}
@keyframes factory-bloom{0%,100%{transform:scale(.85) rotate(-8deg)}50%{transform:scale(1.12) rotate(8deg)}}
.portfolio-page .main-nav{gap:24px}.main-nav a[aria-current=page]{color:var(--cyan)}
.portfolio-hero{padding:94px 0 64px;background:radial-gradient(ellipse at 85% 30%,#a384f517,transparent 55%)}
.portfolio-hero h1{font-size:clamp(42px,6.8vw,84px);letter-spacing:-.055em;max-width:1020px;line-height:1.08}
.portfolio-intro{color:#b7b7c8;max-width:650px;font-size:18px;line-height:1.8;margin-top:27px}
.portfolio-meta{display:flex;gap:24px;flex-wrap:wrap;margin-top:36px;color:#a6a6b9;font:12px var(--display)}
.portfolio-meta span{display:flex;align-items:center;gap:9px}.portfolio-meta i{width:5px;height:5px;border-radius:50%;background:var(--purple)}
.portfolio-projects{padding:0 0 100px}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.project-card{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:linear-gradient(155deg,#363752,#2b304a);display:flex;flex-direction:column;min-width:0;transition:border-color .2s,transform .2s}
.project-card:hover{border-color:#a384f566;transform:translateY(-4px)}
.project-visual{height:220px;padding:24px;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;container-type:inline-size;background:radial-gradient(ellipse at 50% 70%,#b196f730,transparent 72%),linear-gradient(160deg,#393a57,#2d3149);border-bottom:1px solid var(--line)}
.project-visual>svg{width:100%;height:150px;overflow:visible}.visual-label{position:absolute;top:17px;left:23px;font:10px var(--display);letter-spacing:.12em;color:#c4c0d3;z-index:1}.visual-caption{position:absolute;bottom:14px;right:20px;font:9px var(--display);color:#a4a4b6;z-index:1}
.project-visual.water{background:radial-gradient(ellipse at 50% 55%,#93e5d52e,transparent 70%),linear-gradient(160deg,#334157,#2b3549)}
.project-visual.civic{background:radial-gradient(ellipse at 50% 55%,#ddbf9726,transparent 70%),linear-gradient(160deg,#3c3a4f,#302f43)}
.project-body{padding:26px;display:flex;flex:1;flex-direction:column}.project-type{font:10px var(--display);color:#bba7f8;letter-spacing:.12em;text-transform:uppercase;margin-bottom:16px}
.project-body h2{font-size:29px;letter-spacing:-.04em}.project-description{color:#b8b8c9;font-size:14px;line-height:1.85;margin-top:16px}
.project-tags{list-style:none;padding:0;margin:22px 0;display:flex;flex-wrap:wrap;gap:7px}.project-tags li{font-size:10px;padding:5px 9px;border:1px solid #b9afcc29;border-radius:5px;color:#c3c2d3}
.project-access{margin-top:auto;padding-top:4px}.project-access p{font-size:12px;line-height:1.7;color:#abadc0;margin-bottom:17px}.project-access strong{color:#e3ddee;font-weight:600}
.project-link{display:inline-flex;align-items:center;justify-content:space-between;gap:14px;width:100%;border-top:1px solid var(--line);padding-top:18px;padding-bottom:2px;color:#d8cbfb;font-size:13px;font-weight:700;min-height:44px}.project-link:hover{color:var(--cyan)}.project-link span{font-size:21px;font-weight:400}
.portfolio-note{display:flex;gap:28px;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin-top:36px;padding-top:28px}.portfolio-note p{color:#abadc0;font-size:13px;max-width:690px}.portfolio-note a{flex:none;color:#d8cbfb;font-size:13px;min-height:44px;display:inline-flex;align-items:center}
.portfolio-home{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:linear-gradient(110deg,#17132188,transparent)}
.portfolio-home-heading{display:flex;justify-content:space-between;gap:30px;align-items:end;margin-bottom:34px}.portfolio-home h2{font-size:clamp(34px,4.8vw,58px);letter-spacing:-.045em}.portfolio-home .portfolio-intro{font-size:16px;margin-top:20px;max-width:580px}
.portfolio-mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.portfolio-mini{padding:25px;border:1px solid var(--line);border-radius:10px;background:#2f334d;display:flex;flex-direction:column;gap:13px;min-width:0}.portfolio-mini:hover{border-color:#a384f577}.portfolio-mini .micro{color:#bba7f8}.portfolio-mini h3{font-size:24px}.portfolio-mini p{font-size:13px;line-height:1.8;color:#b0b1c2}.portfolio-mini>span:last-child{color:#d8cbfb;font-size:12px;margin-top:auto;padding-top:12px}
.project-detail{padding-bottom:90px}.project-detail .portfolio-hero{padding-bottom:44px}.project-detail .portfolio-hero h1{font-size:clamp(44px,7vw,86px)}
.project-breadcrumb{display:inline-flex;align-items:center;min-height:44px;margin-bottom:25px;color:#c0b5d9;font-size:13px}
.detail-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:42px;align-items:start}.detail-main>h2{font-size:30px;margin:36px 0 18px;letter-spacing:-.035em}.detail-main>h2:first-child{margin-top:0}.detail-main>p{color:#b8b8c9;line-height:1.85}.detail-list{padding:0;list-style:none;margin:0}.detail-list li{padding:18px 0;border-bottom:1px solid var(--line);color:#b8b8c9;font-size:14px}.detail-list strong{display:block;color:#ede9f6;font-weight:600;margin-bottom:4px}
.detail-aside{border:1px solid var(--line);border-radius:14px;background:#2f334d;overflow:hidden}.detail-aside .project-visual{height:245px}.detail-aside-copy{padding:28px}.detail-aside h2{font-size:24px;margin-bottom:16px}.detail-aside p{font-size:14px;color:#b8b8c9;margin-bottom:20px}.detail-aside .button{width:100%;text-align:center}.detail-footnote{font-size:12px!important;margin-top:18px;margin-bottom:0!important;color:#989bb0!important}
.detail-callout{padding:22px 24px;border-left:2px solid var(--purple);background:#a384f509;margin-top:30px;color:#cac7d9;font-size:14px}.detail-callout strong{display:block;color:#f1ebfd;margin-bottom:6px}
@media(min-width:821px) and (max-width:1100px){.portfolio-site-header .main-nav{gap:15px}.portfolio-site-header .brand{width:185px}.portfolio-site-header .nav-cta{padding-inline:12px;gap:10px}.portfolio-site-header .main-nav>a{font-size:11px}.project-body{padding:20px}.project-visual{padding:15px}.project-body h2{font-size:25px}}
@media(max-width:960px){.project-grid{grid-template-columns:1fr}.project-card{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}.project-visual{height:100%;min-height:260px;border-bottom:0;border-right:1px solid var(--line)}.portfolio-hero{padding-top:65px}.detail-layout{gap:26px}.detail-aside .project-visual{border-right:0;border-bottom:1px solid var(--line)}}
@media(max-width:700px){.portfolio-home-heading,.portfolio-note{align-items:start;flex-direction:column}.portfolio-mini-grid,.detail-layout{grid-template-columns:1fr}.portfolio-hero{padding:48px 0 38px}.portfolio-hero h1{font-size:clamp(38px,10vw,62px)}.portfolio-intro{font-size:16px}.portfolio-meta{font-size:11px;gap:17px}.portfolio-projects{padding-bottom:65px}.project-card{display:flex}.project-visual{height:200px;min-height:200px;border-right:0;border-bottom:1px solid var(--line)}.project-body{padding:25px}.project-body h2{font-size:29px}.portfolio-note{gap:14px}.detail-aside{order:-1}.detail-main>h2{font-size:26px}.portfolio-mini{padding:22px}.portfolio-home-heading .button{width:100%}.project-breadcrumb{margin-bottom:15px}}
@media(prefers-reduced-motion:reduce){.project-card,.button{transition:none}.project-card:hover{transform:none}}
/* Ilustraciones 3D en CSS puro (sólo transform/opacity). Son esquemas: no muestran datos reales. */
.v3d{--u:min(calc(100cqw/320),calc(150px/160));position:relative;flex:none;width:calc(320*var(--u));height:calc(160*var(--u));font-size:calc(10*var(--u));perspective:110em}
.v3d *,.v3d *::before,.v3d *::after{box-sizing:border-box}
.v3d-plane{position:absolute;left:44%;top:56%;width:15em;height:13em;scale:1.4;transform-style:preserve-3d;transform:translate(-50%,-50%) rotateX(58deg) rotateZ(40deg);animation:v3d-sway 14s ease-in-out infinite}
.v3d-plane>*{position:absolute;display:block;transform-style:preserve-3d}
.v3d-floor{inset:0;border:1px solid var(--grid);border-radius:.6em;background:linear-gradient(var(--grid) 1px,transparent 1px) 0 0/2.5em 2.5em,linear-gradient(90deg,var(--grid) 1px,transparent 1px) 0 0/2.5em 2.5em,var(--floor)}
.v3d-badge{position:absolute;left:.2em;bottom:.6em;padding:.55em .9em;border:1px solid #93e5d566;border-radius:.5em;background:#32594e;color:#ccf3ea;font:600 1em/1 var(--display);letter-spacing:.06em;box-shadow:0 .6em 1.6em #0005;animation:v3d-float 4s ease-in-out infinite}
@keyframes v3d-sway{0%,100%{transform:translate(-50%,-50%) rotateX(58deg) rotateZ(34deg)}50%{transform:translate(-50%,-50%) rotateX(55deg) rotateZ(46deg)}}
@keyframes v3d-float{50%{transform:translateY(-.35em)}}
/* Bot Trader: estrategia dibujada, ejecuciones bajo un límite de control y registro. */
.v3d-bot{--grid:#cabbfa2e;--floor:#cabbfa0f}
.v3d-bot .v3d-plane{top:68%}
.v3d-wall{left:0;top:-4.6em;width:15em;height:4.6em;transform-origin:50% 100%;transform:rotateX(-90deg);border:1px solid #c2b0f955;border-radius:.4em .4em 0 0;background:linear-gradient(#c2b0f924,#c2b0f90a)}
.v3d-wall svg{display:block;width:15em;height:4.6em;overflow:visible}
.v3d-draw{fill:none;stroke:#cebefa;stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:100;animation:v3d-draw 6s ease-in-out infinite}
.v3d-wall circle{fill:#e3dbfc;animation:v3d-tip 6s ease-in-out infinite}
.v3d-bar{left:var(--x);top:8.6em;width:1.3em;height:1.3em;transform:scaleZ(var(--h));animation:v3d-bar 3.4s ease-in-out var(--d) infinite alternate}
.v3d-bar b{position:absolute;display:block}
.v3d-bar .t{inset:0;transform:translateZ(1em);background:#dad0fb}
.v3d-bar .f{left:0;top:.3em;width:1.3em;height:1em;transform-origin:50% 100%;transform:rotateX(-90deg);background:linear-gradient(#b19df0,#8b78d4)}
.v3d-bar .s{left:.3em;top:0;width:1em;height:1.3em;transform-origin:100% 50%;transform:rotateY(90deg);background:linear-gradient(90deg,#7a67c1,#9a88de)}
.v3d-limit{inset:.6em;transform:translateZ(3.3em);border:1px dashed #93e5d5bb;border-radius:.4em;background:#93e5d514}
.v3d-log{position:absolute;right:0;top:2em;margin:0;padding:0;list-style:none;display:grid;gap:.55em}
.v3d-log li{display:flex;align-items:center;gap:.45em;padding:.4em .7em;border:1px solid #93e5d566;border-radius:.45em;background:#32594ee6;color:#ccf3ea;font:600 .95em/1 var(--display);letter-spacing:.04em;animation:v3d-log 6s ease-in-out infinite}
.v3d-log li::before{content:'✓';color:#93e5d5}
.v3d-log li:nth-child(2){animation-delay:.9s}.v3d-log li:nth-child(3){animation-delay:1.8s}
@keyframes v3d-draw{0%{stroke-dashoffset:100}55%,100%{stroke-dashoffset:0}}
@keyframes v3d-tip{0%,50%{opacity:0}60%,100%{opacity:1}}
@keyframes v3d-bar{to{transform:scaleZ(calc(var(--h)*.55))}}
@keyframes v3d-log{0%,30%{opacity:.25;transform:translateX(.6em)}40%,90%{opacity:1;transform:none}100%{opacity:.25}}
/* Atlas del Agua: relieve, río con corriente, estaciones de nivel y lluvia. */
.v3d-atlas{--grid:#93e5d526;--floor:#93e5d50d}
.v3d-atlas .v3d-plane{left:44%;top:64%;width:16em;height:12em}
.v3d-atlas .v3d-badge{left:auto;right:.2em;top:.8em;bottom:auto}
.v3d-river{inset:0;width:100%;height:100%;transform:translateZ(.06em);overflow:visible}
.v3d-river path{fill:none;stroke-linecap:round}
.v3d-river .bed{stroke:#93e5d5;stroke-width:4.5}
.v3d-river .trib{stroke:#93e5d580;stroke-width:2}
.v3d-river .flow{stroke:#ecfdf9;stroke-width:1.6;stroke-dasharray:3 9;animation:v3d-flow 2.4s linear infinite}
.v3d-lvl{left:4.6em;top:4.8em;width:var(--w);height:calc(var(--w)*.78);border:1px solid #93e5d588;border-radius:52% 48% 57% 43%/48% 58% 42% 52%;background:rgba(140,236,217,var(--a));transform:translate(-50%,-50%) translateZ(var(--z))}
.v3d-station{left:var(--x);top:var(--y);width:0;height:0}
.v3d-station>i{position:absolute;display:block}
.v3d-station .ring{left:-1.3em;top:-1.3em;width:2.6em;height:2.6em;border:1px solid #93e5d5;border-radius:50%;opacity:.6;transform:translateZ(.1em) scale(.8);animation:v3d-ring 2.8s ease-out var(--d) infinite}
.v3d-station .pin{left:-.3em;top:calc(-1*var(--ph));width:.6em;height:var(--ph);overflow:hidden;transform-origin:50% 100%;transform:rotateX(-90deg);border:1px solid #93e5d5cc;border-radius:.3em .3em .1em .1em;background:#2d605acc}
.v3d-station .pin b{position:absolute;left:0;right:0;bottom:0;height:100%;background:linear-gradient(#dffcf6,#93e5d5);transform-origin:50% 100%;transform:scaleY(.6);animation:v3d-level 5s ease-in-out var(--d) infinite alternate}
.v3d-station .head{left:-.5em;top:-1em;width:1em;height:1em;border-radius:50%;background:#93e5d5;box-shadow:0 0 .8em #93e5d5aa;transform-origin:50% 100%;transform:translateZ(var(--ph)) rotateX(-90deg)}
.v3d-cloud{left:9em;top:-.6em;width:5em;height:3em;transform-origin:50% 100%;transform:translateX(0) translateZ(3.4em) rotateX(-90deg);animation:v3d-cloud 9s ease-in-out infinite}
.v3d-cloud::before,.v3d-cloud::after,.v3d-cloud i{content:'';position:absolute;display:block;border-radius:999px;background:#ecf3fdd6}
.v3d-cloud::before{left:0;right:0;bottom:0;height:1.3em}
.v3d-cloud::after{left:1.1em;bottom:.5em;width:2.2em;height:2.2em}
.v3d-cloud i{left:2.6em;bottom:.4em;width:1.6em;height:1.6em}
.v3d-drop{left:var(--x);top:calc(var(--y) - .8em);width:.14em;height:.8em;border-radius:.1em;background:linear-gradient(transparent,#ccf3ea);opacity:.7;transform-origin:50% 100%;transform:translateZ(1.6em) rotateX(-90deg);animation:v3d-drop 1.4s linear var(--d) infinite}
@keyframes v3d-flow{to{stroke-dashoffset:-24}}
@keyframes v3d-ring{0%{transform:translateZ(.1em) scale(.3);opacity:1}100%{transform:translateZ(.1em) scale(1.4);opacity:0}}
@keyframes v3d-level{from{transform:scaleY(.35)}to{transform:scaleY(.85)}}
@keyframes v3d-cloud{50%{transform:translateX(.6em) translateZ(3.7em) rotateX(-90deg)}}
@keyframes v3d-drop{0%{transform:translateZ(3.2em) rotateX(-90deg);opacity:0}15%{opacity:1}100%{transform:translateZ(.1em) rotateX(-90deg);opacity:0}}
/* Radar Cívico: radar, documentos analizados, quién propone y acceso a la fuente. */
.v3d-radar .v3d-plane{left:42%;top:60%;width:14em;height:13em}
.v3d-disk{left:50%;top:50%;width:12.5em;height:12.5em;margin:-6.25em 0 0 -6.25em;overflow:hidden;border:1px solid #ddbf975e;border-radius:50%;background:repeating-radial-gradient(circle,transparent 0 1.45em,#ddbf9733 1.45em calc(1.45em + 1px))}
.v3d-disk .sweep{position:absolute;inset:0;display:block;border-radius:50%;background:conic-gradient(from 0deg,#ddbf9766,transparent 70deg);animation:v3d-spin 6s linear infinite}
.v3d-sheet{left:2.6em;top:2.2em;width:7.2em;height:8.6em;border:1px solid #cfc3b366;border-radius:.45em;background:#404357;transform:translate(var(--o),calc(var(--o)*-.5)) translateZ(var(--z))}
.v3d-sheet.top{display:flex;flex-direction:column;gap:.75em;padding:1.1em 1em;overflow:hidden;background:#4c4f66;animation:v3d-lift 5s ease-in-out infinite}
.v3d-sheet i{display:block;flex:none;width:var(--w,80%);height:.32em;border-radius:1em;background:#cac4ba8c}
.v3d-sheet .hl{animation:v3d-hl 5s ease-in-out infinite}
.v3d-sheet .scan{position:absolute;left:0;right:0;top:0;height:1.6em;background:linear-gradient(transparent,#ddbf9747,transparent);transform:translateY(-2em);animation:v3d-scan 5s ease-in-out infinite}
.v3d-person{left:var(--x);top:calc(var(--y) - 2em);width:1.1em;height:2em;color:#b1a698;transform-origin:50% 100%;transform:rotateX(-90deg);animation:v3d-person 6s ease-in-out var(--d) infinite}
.v3d-person::before,.v3d-person::after{content:'';position:absolute;background:currentColor}
.v3d-person::before{left:.2em;top:0;width:.7em;height:.7em;border-radius:50%}
.v3d-person::after{left:0;bottom:0;width:1.1em;height:1.1em;border-radius:.55em .55em .15em .15em}
.v3d-chip{position:absolute;right:.3em;top:1em;display:flex;align-items:center;gap:.5em;padding:.45em .8em;border:1px solid #ddbf9766;border-radius:2em;background:#4b4350e6;color:#eedfc6;font:600 .9em/1 var(--display);letter-spacing:.08em}
.v3d-chip::before{content:'';width:.55em;height:.55em;border-radius:50%;background:#ddbf97;animation:v3d-blink 1.6s ease-in-out infinite}
.v3d-source{position:absolute;right:.3em;bottom:1em;display:flex;align-items:center;gap:.6em;padding:.75em 1em;border:1px solid #dac5a580;border-radius:.6em;background:#4b4350;color:#eedfc6;font:600 1.05em/1 var(--display);letter-spacing:.05em;box-shadow:0 .8em 2em #0006;animation:v3d-float 5s ease-in-out infinite}
.v3d-source svg{width:1.5em;height:1.5em;fill:none;stroke:#ddbf97;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.v3d-source path{stroke-dasharray:10;animation:v3d-check 5s ease-in-out infinite}
@keyframes v3d-spin{to{transform:rotate(1turn)}}
@keyframes v3d-lift{50%{transform:translate(var(--o),calc(var(--o)*-.5)) translateZ(calc(var(--z) + .9em))}}
@keyframes v3d-hl{0%,35%,100%{background:#cac4ba8c;box-shadow:none}50%,85%{background:#e2ceb1;box-shadow:0 0 .8em #e2ceb199}}
@keyframes v3d-scan{0%{transform:translateY(-2em)}45%,100%{transform:translateY(9em)}}
@keyframes v3d-person{0%,20%,60%,100%{color:#b1a698}30%,50%{color:#eedbbc}}
@keyframes v3d-blink{50%{opacity:.25}}
@keyframes v3d-check{0%,45%{stroke-dashoffset:10}60%,100%{stroke-dashoffset:0}}
.v3d-paused,.v3d-paused *,.v3d-paused *::before,.v3d-paused *::after{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.v3d *,.v3d *::before,.v3d *::after{animation:none!important}}
/* Inicio: escenas de los proyectos en las tarjetas compactas. */
.portfolio-mini{overflow:hidden}.mini-visual{display:flex;align-items:center;justify-content:center;height:150px;margin:-25px -25px 8px;container-type:inline-size;border-bottom:1px solid var(--line);background:radial-gradient(ellipse at 50% 70%,#b196f730,transparent 72%),linear-gradient(160deg,#393a57,#2d3149)}
.mini-visual.water{background:radial-gradient(ellipse at 50% 55%,#93e5d52e,transparent 70%),linear-gradient(160deg,#334157,#2b3549)}.mini-visual.civic{background:radial-gradient(ellipse at 50% 55%,#ddbf9726,transparent 70%),linear-gradient(160deg,#3c3a4f,#302f43)}
.mini-visual .v3d{--u:min(calc(100cqw/320),calc(136px/160))}
@media(max-width:700px){.mini-visual{margin:-22px -22px 8px}}
/* Inicio: recorrido del método en cuatro estaciones 3D, sincronizado con la lista. */
.process-3d{container-type:inline-size;margin-top:40px}
.v3d-track{--u:calc(100cqw/1280);position:relative;height:calc(250*var(--u));font-size:calc(10*var(--u));perspective:170em}
.track-floor{position:absolute;left:0;right:0;top:60%;height:20em;margin-top:-10em;transform-style:preserve-3d;transform:rotateX(60deg)}
.track-floor>*{position:absolute;display:block;transform-style:preserve-3d}
.track-line{left:12.5%;right:12.5%;top:calc(50% - .2em);height:.4em;border-radius:1em;background:linear-gradient(90deg,#b196f7,#93e5d5);opacity:.55;transform:translateZ(.1em)}
.track-run{left:12.5%;right:12.5%;top:50%;height:0;transform:translateZ(.4em)}
.track-run b{position:absolute;left:0;top:-1.2em;width:2.4em;height:2.4em;margin-left:-1.2em;border-radius:50%;background:radial-gradient(circle,#fff 0 18%,#cabbfacc 35%,transparent 70%);opacity:0;animation:track-run 8s linear infinite}
.station{left:calc(12.5% + var(--i)*25%);top:50%;width:15em;height:15em;margin:-7.5em 0 0 -7.5em}
.slab-top{position:absolute;inset:0;transform-style:preserve-3d;transform:translateZ(1.8em);border:1px solid #cabbfa40;border-radius:.9em;background:linear-gradient(145deg,#3d405f,#2f334d);animation:station-on 8s ease-in-out calc(var(--i)*2s) infinite}
.slab-front{position:absolute;left:0;top:13.2em;width:15em;height:1.8em;transform-origin:50% 100%;transform:rotateX(-90deg);display:flex;align-items:center;justify-content:center;border-radius:.4em .4em 0 0;background:linear-gradient(#282c43,#1f2133);color:#cabbfa;font:500 1em/1 var(--display);font-style:normal;letter-spacing:.2em}
.slab-top>*{position:absolute;display:block;transform-style:preserve-3d}
.slab-top .map{inset:2em;border-radius:.4em;background:linear-gradient(#93e5d533 1px,transparent 1px) 0 0/1.6em 1.6em,linear-gradient(90deg,#93e5d533 1px,transparent 1px) 0 0/1.6em 1.6em,#93e5d50f;transform:translateZ(.05em)}
.slab-top .pin{left:var(--x);top:calc(var(--y) - 2.6em);width:1em;height:2.6em;transform-origin:50% 100%;transform:rotateX(-90deg);animation:pin-bob 2.4s ease-in-out var(--d) infinite alternate}
.slab-top .pin::before{content:'';position:absolute;left:0;top:0;width:1em;height:1em;border-radius:50% 50% 50% 0;rotate:-45deg;background:#93e5d5;box-shadow:0 0 .8em #93e5d5aa}
.slab-top .pin::after{content:'';position:absolute;left:.42em;top:.9em;width:.16em;height:1.7em;background:#93e5d5aa}
.slab-top .scan{left:50%;top:50%;width:10em;height:10em;margin:-5em 0 0 -5em;border:1px solid #93e5d5;border-radius:50%;opacity:.5;transform:translateZ(.1em) scale(.7);animation:map-scan 3s ease-out infinite}
.slab-top .layer{inset:2.6em;border:1px solid #cabbfa99;border-radius:.4em;background:linear-gradient(135deg,#cabbfa2e,#93e5d514);transform:translateZ(var(--z2));animation:layer-split 4s ease-in-out infinite alternate}
.slab-top .layer::before{content:'';position:absolute;inset:1em;border:1px dashed #cabbfa66;border-radius:.2em}
.slab-top .links{inset:0;width:100%;height:100%;overflow:visible;transform:translateZ(.1em)}
.slab-top .links path{fill:none;stroke:#93e5d5;stroke-width:1.6;stroke-dasharray:4 6;animation:v3d-flow 1.6s linear infinite}
.slab-top .node,.slab-top .grow{left:var(--x);top:var(--y);width:2.4em;height:2.4em;margin:-1.2em 0 0 -1.2em}
.node b,.grow b{position:absolute;display:block}
.node .t{inset:0;transform:translateZ(2.4em);background:#dffcf6}.node .f{left:0;top:0;width:2.4em;height:2.4em;transform-origin:50% 100%;transform:rotateX(-90deg);background:linear-gradient(#93e5d5,#57afa0)}.node .s{left:0;top:0;width:2.4em;height:2.4em;transform-origin:100% 50%;transform:rotateY(90deg);background:#469588}
.slab-top .grow{width:2.2em;height:2.2em;top:9em;transform:scaleZ(var(--h));animation:grow-up 8s cubic-bezier(.2,.8,.2,1) calc(6s + var(--d)) infinite}
.grow .t{inset:0;transform:translateZ(1em);background:#dad0fb}.grow .f{left:0;top:1.2em;width:2.2em;height:1em;transform-origin:50% 100%;transform:rotateX(-90deg);background:linear-gradient(#b19df0,#8b78d4)}.grow .s{left:1.2em;top:0;width:1em;height:2.2em;transform-origin:100% 50%;transform:rotateY(90deg);background:linear-gradient(90deg,#7a67c1,#9a88de)}
.method-grid li .step-number,.method-grid li .step-line::before{animation:step-on 8s ease-in-out infinite}
.method-grid li:nth-child(2) .step-number,.method-grid li:nth-child(2) .step-line::before{animation-delay:2s}.method-grid li:nth-child(3) .step-number,.method-grid li:nth-child(3) .step-line::before{animation-delay:4s}.method-grid li:nth-child(4) .step-number,.method-grid li:nth-child(4) .step-line::before{animation-delay:6s}
@keyframes track-run{0%{left:0;opacity:0}3%{opacity:1}75%{left:100%;opacity:1}80%,100%{left:100%;opacity:0}}
@keyframes station-on{0%,30%,100%{border-color:#cabbfa40;box-shadow:none}6%,22%{border-color:#cabbfacc;box-shadow:0 0 2.4em #b196f755,inset 0 0 1.6em #b196f733}}
@keyframes step-on{0%,30%,100%{color:#b091cf;background:#b89cd9;text-shadow:none;box-shadow:none}6%,22%{color:#efe7fd;background:#93e5d5;text-shadow:0 0 18px #b799f1;box-shadow:0 0 10px #93e5d5}}
@keyframes pin-bob{to{transform:translateZ(.6em) rotateX(-90deg)}}
@keyframes map-scan{from{transform:translateZ(.1em) scale(.2);opacity:1}to{transform:translateZ(.1em) scale(1.1);opacity:0}}
@keyframes layer-split{from{transform:translateZ(var(--z))}to{transform:translateZ(var(--z2))}}
@keyframes grow-up{0%{transform:scaleZ(.15)}25%,85%{transform:scaleZ(var(--h))}100%{transform:scaleZ(.15)}}
@media(max-width:820px){.v3d-track{--u:calc(100cqw/760)}.process-3d{margin-top:28px}}
/* Control: anillos que giran alrededor de un núcleo fijo. */
.control-orbit{perspective:220px}.control-orbit>span{position:relative;z-index:1;text-shadow:0 0 18px #d0b0f9aa}
.gyro{position:absolute;inset:-4px;transform-style:preserve-3d;pointer-events:none}
.gyro b{position:absolute;inset:0;border:1.5px solid #b196f766;border-top-color:#e3dbfc;border-radius:50%;animation:gyro-a 7s linear infinite}
.gyro b:nth-child(2){inset:8%;border-color:#93e5d555;border-left-color:#ccf3ea;animation:gyro-b 9s linear infinite}
.gyro b:nth-child(3){inset:-10%;border-color:#cabbfa33;border-bottom-color:#cabbfacc;animation:gyro-c 12s linear infinite}
@keyframes gyro-a{from{transform:rotateZ(0) rotateX(68deg)}to{transform:rotateZ(360deg) rotateX(68deg)}}
@keyframes gyro-b{from{transform:rotateZ(60deg) rotateY(0)}to{transform:rotateZ(60deg) rotateY(360deg)}}
@keyframes gyro-c{from{transform:rotateZ(-40deg) rotateX(0) rotateY(70deg)}to{transform:rotateZ(-40deg) rotateX(360deg) rotateY(70deg)}}
@media(prefers-reduced-motion:reduce){.v3d-track *,.v3d-track *::before,.method-grid li *,.method-grid li *::before,.gyro b{animation:none!important}}
/* Una página viva: cámara compartida, pulso de recorrido y secciones que despiertan. */
:root{--life:color-mix(in oklab,#93e5d5 calc(var(--page,0)*100%),#b196f7)}
.v3d,.v3d-track{perspective-origin:calc(50% + var(--cam-x,0)*35%) calc(50% + var(--cam-y,0)*35%)}
.control-orbit{perspective-origin:calc(50% + var(--cam-x,0)*60%) calc(50% + var(--cam-y,0)*60%)}
.life-rail{position:fixed;top:120px;bottom:70px;left:max(10px,calc((100vw - 1280px)/2 - 34px));width:2px;z-index:5;pointer-events:none;background:linear-gradient(#b196f700,#b196f747 10%,#93e5d547 90%,#93e5d500)}
.life-rail b{position:absolute;left:-3px;width:8px;height:8px;margin-top:-4px;border:1px solid #b196f770;border-radius:50%;background:#2f334d;transition:background .5s,box-shadow .5s,border-color .5s}
.life-rail b.on{border-color:transparent;background:var(--life);box-shadow:0 0 12px var(--life)}
.life-rail i{position:absolute;left:-5px;top:0;width:12px;height:12px;margin-top:-6px;border-radius:50%;background:var(--life);box-shadow:0 0 0 4px #b196f71f,0 0 22px var(--life);animation:life-beat 2s ease-in-out infinite}
.track-line{background:linear-gradient(90deg,var(--life),#93e5d5)}
.has-life main section .v3d,.has-life main section .v3d-track,.has-life main section .control-orbit{transition:opacity .9s,filter .9s}
.has-life main section:not(.is-live) .v3d,.has-life main section:not(.is-live) .v3d-track,.has-life main section:not(.is-live) .control-orbit{opacity:.6;filter:saturate(.55)}
.has-life main section.is-live .v3d,.has-life main section.is-live .v3d-track{animation:life-wake 1.2s cubic-bezier(.2,.8,.2,1)}
@keyframes life-beat{50%{box-shadow:0 0 0 9px #b196f700,0 0 30px var(--life)}}
@keyframes life-wake{from{transform:translateY(14px) scale(.97)}}
@media(max-width:1100px){.life-rail{left:8px}}
@media(max-width:820px){.life-rail{top:90px;left:5px}.life-rail b{left:-2px;width:6px;height:6px;margin-top:-3px}.life-rail i{left:-4px;width:10px;height:10px;margin-top:-5px}}
@media(prefers-reduced-motion:reduce){.life-rail i{animation:none}.has-life main section.is-live .v3d,.has-life main section.is-live .v3d-track{animation:none}}
/* Laboratorio en reposo: datos que fluyen entre pasos, pasos que respiran y una invitación a ejecutar.
   Se detiene mientras el circuito corre o muestra su resultado. */
.lab-topbar .lab-symbol{display:inline-block;animation:rotate-core 30s linear infinite}
.execution-path:not(:has(li.active,li.done)) li:not(:last-child)::after{background:linear-gradient(transparent,#cabbfacc,transparent) 0 -34px/100% 34px no-repeat,linear-gradient(#a787c94a,#a787c914);animation:lab-flow 4s ease-in-out infinite}
.execution-path:not(:has(li.active,li.done)) li>span{animation:lab-breathe 4s ease-in-out infinite}
.execution-path li:nth-child(2)>span,.execution-path li:nth-child(2)::after{animation-delay:1.3s!important}
.execution-path li:nth-child(3)>span{animation-delay:2.6s!important}
.result-panel{position:relative;overflow:hidden}
.result-panel:not(.success):not(.attention)::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 35%,#ffffff0d 48%,#cabbfa14 52%,transparent 65%) -120% 0/60% 100% no-repeat;animation:lab-sheen 8s ease-in-out infinite}
.result-panel:not(.success):not(.attention) .result-symbol{animation:lab-float 4s ease-in-out infinite}
.run-button{position:relative;overflow:hidden;isolation:isolate}
.run-button:not(:disabled)::after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(105deg,transparent 30%,#ffffff40 50%,transparent 70%) -150% 0/50% 100% no-repeat;animation:lab-sheen 8s ease-in-out 2s infinite}
.process-lab{transition:border-color 1s,box-shadow 1s}
.has-life .demo-section.is-live .process-lab{border-color:#ac94de70;box-shadow:0 40px 110px #0004,0 0 60px #a384f514}
@keyframes lab-flow{0%{background-position:0 -34px,0 0}60%,100%{background-position:0 calc(100% + 34px),0 0}}
@keyframes lab-breathe{0%,60%,100%{box-shadow:none;border-color:#a68fc242}20%{box-shadow:0 0 0 5px #a57de512,0 0 18px #aa81e424;border-color:#c19cf7aa}}
@keyframes lab-sheen{0%,55%{background-position:-120% 0}85%,100%{background-position:220% 0}}
@keyframes lab-float{50%{transform:translateY(-3px)}}
.intelligence-stage canvas{filter:saturate(.85)}
/* Laboratorio: mini circuito 3D dentro del resultado (reposo, correcto o con diferencia). */
.result-panel:has(.lab-scene){padding-right:190px}
.lab-scene{position:absolute;right:16px;top:50%;width:170px;height:120px;margin-top:-60px;perspective:520px;pointer-events:none}
.lab-plane{position:absolute;left:50%;top:58%;width:176px;height:46px;margin:-23px 0 0 -88px;scale:1.2;transform-style:preserve-3d;transform:rotateX(58deg) rotateZ(-26deg)}
.lab-plane>*{position:absolute;display:block;transform-style:preserve-3d}
.lab-wire{left:20px;right:20px;top:22px;height:2px;border-radius:2px;background:linear-gradient(90deg,#b196f7,#93e5d5);opacity:.6}
.lab-tile{top:4px;width:38px;height:38px;border:1px solid #cabbfa59;border-radius:7px;background:linear-gradient(145deg,#444767,#323551);transform:translateZ(3px);transition:border-color .5s,box-shadow .5s}
.lab-tile:nth-of-type(2){left:0}.lab-tile:nth-of-type(3){left:69px}.lab-tile:nth-of-type(4){left:138px}
.lab-tile b{position:absolute;display:block;transform-origin:50% 100%}
.lab-tile .doc{left:11px;top:-12px;width:16px;height:22px;border-radius:2px;background:repeating-linear-gradient(#cac4ba 0 2px,transparent 2px 5px) 3px 4px/10px 14px no-repeat,#eae5f4;transform:rotateX(-90deg)}
.lab-tile .engine{left:7px;top:-20px;width:24px;height:24px;border:3px dotted #cabbfa;border-radius:50%;transform:translateZ(4px) rotateX(-90deg);animation:lab-spin 4s linear infinite}
.lab-tile .check{left:8px;top:-20px;width:22px;height:22px;border-radius:50%;background:#323551;border:1.5px solid #93e5d5aa;color:#93e5d5;font:700 12px/19px var(--display);text-align:center;transform:rotateX(-90deg)}
.lab-token{left:13px;top:15px;width:12px;height:12px;animation:lab-token 4s ease-in-out infinite}
.lab-token b{position:absolute;display:block}
.lab-token .t{inset:0;transform:translateZ(12px);background:#e3dbfc}
.lab-token .f{left:0;top:0;width:12px;height:12px;transform-origin:50% 100%;transform:rotateX(-90deg);background:#b19df0}
.lab-token .s{left:0;top:0;width:12px;height:12px;transform-origin:100% 50%;transform:rotateY(90deg);background:#8b78d4}
.result-panel.success .lab-token,.result-panel.attention .lab-token{animation:none;transform:translate(138px,0)}
.result-panel.success .lab-tile:nth-of-type(4){border-color:#74c5a9;box-shadow:0 0 22px #74c5a966,inset 0 0 12px #74c5a933}
.result-panel.attention .lab-tile:nth-of-type(4){border-color:#e9cfa8;box-shadow:0 0 22px #e9cfa866,inset 0 0 12px #e9cfa833}
.result-panel.attention .lab-tile .check{border-color:#e9cfa8;color:#e9cfa8}
.result-panel.success .lab-tile .engine,.result-panel.attention .lab-tile .engine{animation-duration:12s}
@keyframes lab-token{0%,8%{transform:translate(0,0) translateZ(0)}20%{transform:translate(34px,0) translateZ(10px)}32%,44%{transform:translate(69px,0) translateZ(0)}56%{transform:translate(103px,0) translateZ(10px)}68%,88%{transform:translate(138px,0) translateZ(0)}100%{transform:translate(138px,0) translateZ(0);opacity:0}}
@keyframes lab-spin{to{transform:translateZ(4px) rotateX(-90deg) rotateY(360deg)}}
@media(max-width:1150px){.result-panel:has(.lab-scene){padding-right:150px}.lab-scene{right:4px;transform:scale(.8);transform-origin:100% 50%}}
@media(max-width:820px) and (min-width:601px){.result-panel:has(.lab-scene){padding-right:16px}.lab-scene{display:none}}
@media(max-width:600px){.result-panel:has(.lab-scene){padding-right:130px}.lab-scene{right:-8px;transform:scale(.72)}}
@media(prefers-reduced-motion:reduce){.lab-token,.lab-tile .engine{animation:none!important}}
/* Capacidades: el circuito como pila 3D que responde a la cámara compartida. */
.capability-panel{perspective:1300px;perspective-origin:calc(75% + var(--cam-x,0)*25%) calc(50% + var(--cam-y,0)*25%)}
.capability-panel .pipeline{isolation:auto;transform-style:preserve-3d;transform:rotateX(calc(12deg + var(--cam-y,0)*-5deg)) rotateY(calc(-14deg + var(--cam-x,0)*8deg))}
.capability-panel .pipeline>*{transform-style:preserve-3d}
.capability-panel .pipeline-input{animation:pipe-float 8s ease-in-out infinite}
.capability-panel .pipeline-ai{animation:pipe-float-ai 8s ease-in-out infinite,ai-pulse 2s ease-in-out infinite}
.capability-panel .pipeline-output{animation:pipe-float 8s ease-in-out 4s infinite}
.capability-panel .pipeline-connector{width:2px;transform:translateZ(18px)}
.capability-panel .pipeline-connector i{width:2px;height:16px;box-shadow:0 0 12px 3px #c4abf8aa;background:#e8dffc}
.capability-panel .pipeline-output>span:first-child{animation:out-pop 2s ease-in-out 1s infinite}
.mini-core{position:relative;perspective:200px}
.mini-core .gyro{inset:-6px}
.capability-tabs button[aria-selected=true],.process-tabs button[aria-selected=true]{position:relative;overflow:hidden}
.capability-tabs button[aria-selected=true]::after,.process-tabs button[aria-selected=true]::after{content:'';position:absolute;left:0;bottom:-2px;width:40%;height:2px;background:linear-gradient(90deg,transparent,#f1eafd,transparent);animation:tab-glint 4s ease-in-out infinite}
@keyframes pipe-float{0%,100%{transform:translateZ(20px)}50%{transform:translateZ(34px)}}
@keyframes pipe-float-ai{0%,100%{transform:translateZ(46px)}50%{transform:translateZ(62px)}}
@keyframes ai-pulse{0%,100%{box-shadow:0 0 45px #995de019,inset 0 0 20px #a580bb15;border-color:#ac8fda90}45%{box-shadow:0 0 60px #995de044,inset 0 0 26px #a580bb33;border-color:#d3bdfacc}}
@keyframes out-pop{0%,100%{transform:scale(1);box-shadow:none}50%{transform:scale(1.15);box-shadow:0 0 16px #80e1cd66}}
@keyframes tab-glint{0%{transform:translateX(-100%)}60%,100%{transform:translateX(260%)}}
@media(max-width:820px){.capability-panel .pipeline{transform:rotateX(calc(8deg + var(--cam-y,0)*-3deg)) rotateY(calc(-6deg + var(--cam-x,0)*4deg))}}
/* Laboratorio: reflejo que sigue al puntero, barra con barrido y pasos más visibles. */
.process-lab{position:relative}
.process-lab::before{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(700px circle at calc(50% + var(--cam-x,0)*45%) calc(35% + var(--cam-y,0)*45%),#dad0fb14,transparent 60%)}
.lab-topbar{position:relative;overflow:hidden}
.lab-topbar::after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,#cabbfacc,#93e5d5cc,transparent) -40% 0/40% 100% no-repeat;animation:lab-scanline 8s ease-in-out infinite}
.lab-local i{animation:demo-beat 2s ease-in-out infinite}
.execution-path:not(:has(li.active,li.done)) li:not(:last-child)::after{left:15px;width:3px;background:linear-gradient(transparent,#e3dbfc,transparent) 0 -34px/100% 34px no-repeat,linear-gradient(#a787c94a,#a787c914)}
@keyframes lab-breathe{0%,60%,100%{box-shadow:none;border-color:#a68fc242;color:#ad96c4}20%{box-shadow:0 0 0 6px #a57de51f,0 0 26px #aa81e444;border-color:#d0b0f9;color:#f1e1fd}}
@keyframes lab-scanline{0%{background-position:-40% 0}70%,100%{background-position:140% 0}}
@keyframes demo-beat{50%{box-shadow:0 0 0 5px #80e1cd00,0 0 14px #80e1cd}}
.has-life .capability-section.is-live .capability-panel{animation:life-wake 1.2s cubic-bezier(.2,.8,.2,1)}
@media(prefers-reduced-motion:reduce){.capability-panel .pipeline>*,.capability-panel .pipeline-output>span,.lab-topbar::after,.lab-local i,.capability-tabs button::after,.process-tabs button::after{animation:none!important}}
/* Encabezado: se oculta al bajar y vuelve al subir. */
.site-header{transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.site-header.header-hidden{transform:translateY(-100%)}
@media(prefers-reduced-motion:reduce){.site-header{transition:none}}
/* Espaciado entre secciones a la mitad (115/80/62 → 58/40/31; preguntas 76/95 → 38/48; proyectos 100/65 → 50/33). */
.section{padding:58px 0}.faq-section{padding:38px 0 48px}.portfolio-projects{padding-bottom:50px}
@media(max-width:820px){.section{padding:40px 0}}
@media(max-width:700px){.portfolio-projects{padding-bottom:33px}}
@media(max-width:570px){.section{padding:31px 0}}
