@font-face{font-family:Mulish;src:url('/assets/fonts/Mulish.ttf') format('truetype');font-weight:200 1000;font-style:normal;font-display:swap}
:root{--paper:#f3f0e8;--white:#fbfaf6;--ink:#1d3029;--muted:#59685f;--forest:#1d3029;--sage:#657b6d;--accent:#a28c64;--accent-ink:#74603c;--champagne:var(--accent);--line:#d7d9cd;--font:'Avenir Next',Avenir,Mulish,Arial,sans-serif;--ease:cubic-bezier(.2,.7,.25,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.75 var(--font);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}img{max-width:100%;height:auto}svg{max-width:100%}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--sage);outline-offset:5px}::selection{background:#d4dccc;color:var(--ink)}.skip-link{position:fixed;top:-100px;left:20px;background:var(--paper);padding:12px 20px;z-index:100}.skip-link:focus{top:10px}
.site-header{position:fixed;top:0;left:0;width:100%;height:88px;display:flex;align-items:center;justify-content:space-between;padding:0 5%;z-index:20;background:#f3f0e8ed;border-bottom:1px solid #1d302914;backdrop-filter:blur(16px)}.wordmark{font-size:24px;font-weight:650;letter-spacing:-1px;white-space:nowrap}.wordmark>span{font-weight:350}.wordmark i{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--champagne);margin:0 0 2px 3px}.site-header nav{display:flex;align-items:center;gap:34px;font-size:14px}.site-header nav a{padding:10px 0}.site-header nav a:hover{color:#6b735e}.nav-contact{margin-left:24px}.nav-contact span{margin-left:13px;color:var(--champagne)}.language{display:flex;gap:8px;font-size:12px;letter-spacing:.05em;color:var(--muted)}.language a[aria-current]{color:var(--ink);border-bottom:1px solid var(--champagne)}.language>span{color:#b0b6a7}
.hero{min-height:760px;height:100svh;max-height:1500px;position:relative;overflow:hidden;padding-top:88px;isolation:isolate}.hero-stage{position:relative;max-width:1800px;width:94%;height:calc(100% - 76px);margin:auto}.hero-copy{position:absolute;top:50%;left:50%;width:70%;transform:translate(-50%,-50%);text-align:center;z-index:2;pointer-events:none}.hero-copy a{pointer-events:auto}.kicker,.panel-kicker,.eyebrow{font:500 11px/1.6 var(--font);letter-spacing:2px;text-transform:uppercase}.kicker{margin:0 0 28px;color:var(--muted)}.kicker span{margin:0 10px;color:var(--champagne)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(70px,min(8.5vw,12svh),150px);line-height:1.03;font-weight:400;letter-spacing:-.065em;margin-bottom:27px}h1>span{color:var(--sage)}.hero-sub{font-size:clamp(15px,calc(1.1vw + 2px),21px);line-height:1.8;color:var(--muted);margin-bottom:25px}.line-link{font-size:13px;letter-spacing:.03em;display:inline-flex;gap:40px;align-items:center;border-bottom:1px solid #9aa58f;padding:10px 0}.line-link>span{color:var(--sage);font-size:20px}.hero-foot{position:absolute;bottom:25px;left:5%;right:5%;display:flex;justify-content:space-between;align-items:center;font-size:10px;letter-spacing:1.4px;color:var(--muted)}.hero-foot a{font-size:22px;position:absolute;left:50%}
.floating-icon{position:absolute;display:grid;place-items:center;width:clamp(48px,5vw,92px);height:clamp(48px,5vw,92px);z-index:1;animation:float 5s ease-in-out infinite alternate;will-change:transform}.floating-icon img{width:65%;height:65%;object-fit:contain;opacity:.9}.icon-native{left:13%;top:19%;rotate:-11deg}.icon-react{right:12%;top:27%;animation-delay:-2s}.icon-astro{left:5%;top:57%;rotate:-9deg}.icon-tailwind{right:5%;top:61%;rotate:8deg}.pointer-links{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;transition:opacity .4s}.is-linked img{opacity:1}
@keyframes float{from{transform:translateY(-5px) rotate(-2deg)}to{transform:translateY(6px) rotate(2deg)}}
.stage-panel{position:relative;padding:110px max(6%,calc((100vw - 1500px)/2));min-height:90svh;display:flex;flex-direction:column;justify-content:center;overflow:hidden}.panel-grid{display:grid;grid-template-columns:1fr 1fr;gap:9%;align-items:center}.panel-grid-reverse{grid-template-columns:1fr 1fr}.panel-copy{max-width:590px}.panel-copy-wide{max-width:800px}.panel-kicker{color:var(--sage);margin-bottom:27px}h2{font-size:clamp(42px,calc(4.4vw + 2px),76px);font-weight:400;line-height:1.08;letter-spacing:-.05em;margin-bottom:30px}.panel-lead{font-size:clamp(16px,calc(1.15vw + 2px),20px);line-height:1.9;max-width:570px;color:var(--muted)}.panel-note{font-size:15px;line-height:1.8;color:var(--muted)}.inline-facts{display:flex;flex-wrap:wrap;gap:20px;margin:30px 0;font-size:12px;letter-spacing:.07em}.service-details{border-top:1px solid var(--line);padding:20px 0;margin:25px 0;font-size:14px;color:var(--muted)}summary{cursor:pointer;line-height:1.6;color:var(--ink);font-size:14px;list-style:none}summary:after{content:'+';float:right;color:var(--sage);font-size:20px}details[open]>summary:after{content:'−'}details p{margin:20px 0 0;line-height:1.9}.btn{display:inline-flex;align-items:center;justify-content:space-between;gap:30px;min-height:44px;padding:11px 0;border:0;border-bottom:1px solid #a2ad9a;background:none;font-size:13px;color:inherit;border-radius:0;transition:color .2s}.btn:hover{color:var(--sage)}.btn:after{content:'↗';font-size:19px}.apple-panel{background:var(--forest);color:var(--paper)}.apple-panel .panel-lead,.apple-panel .service-details{color:#cad1c4}.apple-panel .panel-kicker,.apple-panel .inline-facts{color:#c4b18b}.apple-panel summary{color:var(--paper)}.apple-panel .service-details{border-color:#627366}.apple-panel .btn{border-color:#788672}.product-cluster img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;object-position:center;border-radius:2px;filter:saturate(.65)}.web-panel{background:var(--white)}.web-visual img{width:100%;aspect-ratio:4/5;object-fit:cover;filter:saturate(.65);display:block}.web-panel .panel-copy{order:0}.portfolio-panel{background:#e5e8de;min-height:100svh}.project-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:5%;margin-top:30px}.project-cards article{padding:35px 0 0;border-top:1px solid #b8c1b1}.project-cards article>img{width:80px;height:80px;border-radius:20px;margin:0 0 40px}.project-cards h3{font-size:29px;letter-spacing:-1px;font-weight:450;margin-bottom:15px}.project-cards p{font-size:15px;line-height:1.9;color:var(--muted);max-width:300px;min-height:52px}.project-cards a{display:inline-flex;font-size:13px;padding:10px 0;border-bottom:1px solid #a2ad9a}.project-cards a:after{content:'↗';margin-left:22px}.contact-panel-preview{background:var(--paper);min-height:100svh}.contact-layout{display:grid;grid-template-columns:1fr 1fr;gap:10%}.contact-copy .panel-lead{max-width:400px}.contact-form-preview{border-top:1px solid var(--line);padding-top:24px}.contact-form-preview h3{font-size:23px;font-weight:400;letter-spacing:-.5px}.contact-form-notice,.contact-form-help,.contact-privacy,.contact-form-status{font-size:12px;line-height:1.8;color:var(--muted)}.contact-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px}.contact-field{display:flex;flex-direction:column;gap:6px}.contact-field-wide{grid-column:1/-1}.contact-field label{font-size:12px;color:var(--muted)}input,textarea,select{border:0;border-bottom:1px solid #a4b09f;border-radius:0;background:transparent;color:var(--ink);padding:10px 0;width:100%;font-size:15px}textarea{resize:vertical}input[type=checkbox]{width:auto;accent-color:var(--forest)}.contact-privacy{margin-top:20px}.contact-privacy a{text-decoration:underline}.contact-honeypot{display:none}.contact-form-preview button:disabled{opacity:.5;cursor:not-allowed}.local-note{font-size:12px;color:var(--muted);line-height:1.7}.contact-alternatives{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:25px;border-top:1px solid var(--line);padding-top:28px;margin-top:35px}.contact-alternatives h3{font-size:13px;font-weight:400;width:100%;margin:0}.contact-alternatives p{margin:0;font-size:15px}.contact-actions{margin-left:auto}
.site-footer{padding:50px 5% 26px;border-top:1px solid var(--line);background:var(--paper)}.footer-top{display:flex;align-items:center;justify-content:space-between;gap:25px;padding-bottom:45px}.footer-top p{font-size:13px;color:var(--muted);margin:0}.footer-top>a:last-child{font-size:14px}.footer-bottom{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);padding-top:23px;border-top:1px solid var(--line)}.footer-bottom>div{display:flex;gap:25px}
/* Documents share the exact same palette, type, navigation and spacing tokens. */
.document-body{padding-top:88px}.document-body header{padding:90px 6% 60px;border-bottom:1px solid var(--line)}.document-body .wrap{width:min(100%,980px);margin:auto}.document-body h1{font-size:clamp(46px,calc(5.5vw + 2px),87px);max-width:950px;margin:25px 0;letter-spacing:-.055em}.document-body .updated{font-size:13px;color:var(--muted)}.document-body section{padding:45px 6%;scroll-margin-top:90px}.document-body section+section{border-top:1px solid var(--line)}.sec-head{display:flex;align-items:baseline;gap:25px;margin-bottom:28px}.sec-num{font-size:12px;color:var(--sage);letter-spacing:1px}.sec-title{font-size:clamp(28px,calc(2.8vw + 2px),44px);margin:0;letter-spacing:-.035em}.sec-line{height:1px;flex:1;background:var(--line)}.document-body p,.document-body li{font-size:16px;line-height:1.95;max-width:790px;color:var(--muted)}.document-body strong,.document-body b{font-weight:650;color:var(--ink)}.document-body a:not(.btn){text-decoration-color:#bac1ae;text-underline-offset:4px}.document-body p a,.document-body li a{text-decoration:underline}.document-body ul{padding-left:21px}.document-body li{margin-bottom:12px}.document-body h3{font-weight:550;letter-spacing:-.02em}.legal-identity{border-left:2px solid var(--champagne);padding:12px 25px}.legal-identity p{margin:10px 0;display:flex;gap:30px}.legal-identity strong{min-width:90px}.ap-head{display:flex;align-items:center;gap:18px;margin-bottom:25px}.ap-icon{width:54px;height:54px;flex-shrink:0}.ap-icon img,.ap-icon svg{width:54px;height:54px;border-radius:13px}.ap-tag{font-size:13px;color:var(--muted)}.ap-row{padding:18px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:200px 1fr;gap:25px;font-size:15px;color:var(--muted)}.ap-k{font-size:13px;font-weight:600;color:var(--ink)}.legal-cta{background:#e5e8de;padding:32px}.legal-cta svg,.contact-box svg{width:20px;height:20px}.legal-cta h2{font-size:38px}.document-body .reveal{opacity:1;transform:none}.document-body svg:not([width='0']){max-height:100px}.cv-body .hero{height:auto;min-height:0;padding:0;display:grid;grid-template-columns:1.4fr 1fr;gap:65px;max-height:none;overflow:visible}.cv-body .role{font-size:16px}.cv-body .lede{font-size:17px}.cta{display:flex;flex-wrap:wrap;gap:25px}.cta svg{width:16px;height:16px}.avatar-card{border:1px solid var(--line);padding:30px}.monogram img{width:120px;height:120px;object-fit:cover;border-radius:50%}.ac-meta{padding-top:20px}.ac-meta .nm{font-size:22px}.ac-meta .role,.ac-meta .loc{font-size:13px;color:var(--muted)}.ac-li{display:flex;align-items:center;gap:12px;font-size:12px;margin-top:20px}.ac-li svg{width:20px;height:20px}.ac-li-text{display:flex;flex-direction:column}.ac-stats{display:flex;gap:30px;padding-top:25px}.ac-stats .n{font-size:26px;color:var(--sage)}.ac-stats .l{font-size:11px}.about-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:50px}.facts .row{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:12px 0;font-size:12px}.facts .k{color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:10px}.chip{border:1px solid var(--line);padding:6px 12px;font-size:13px}.skill-block{margin-bottom:25px}.timeline>*,.exp-item,.edu-item{padding:20px 0;border-top:1px solid var(--line)}.document-body .card{border:1px solid var(--line);padding:25px;margin-bottom:20px;background:var(--white)}.document-body .grid-2{display:grid;grid-template-columns:1fr 1fr;gap:25px}.document-body .contact-actions{margin:20px 0}.document-body .contact-actions svg{width:18px;height:18px}
.motion-ready [data-reveal]{opacity:0;transform:translateY(32px);transition:opacity .85s var(--ease),transform 1.1s var(--ease)}.motion-ready [data-reveal].visible{opacity:1;transform:translateY(0)}
@media(min-width:1900px){.hero-stage{max-width:2100px}.hero h1{font-size:calc(min(9vw,13svh) + 2px)}.site-header{height:100px}.hero{padding-top:100px}.hero-copy .kicker{font-size:13px}.hero-sub{font-size:23px}.line-link{font-size:15px}.floating-icon{width:110px;height:110px}.stage-panel{padding-top:140px;padding-bottom:140px}.panel-lead{font-size:21px}}
@media(max-width:900px){.site-header{height:74px;padding:0 5%}.site-header nav{gap:17px;font-size:12px}.nav-contact{margin:0}.wordmark{font-size:22px}.language{font-size:11px}.hero{padding-top:74px;min-height:680px;max-height:none}.hero-stage{width:100%}.hero-copy{width:90%}.kicker{font-size:10px;letter-spacing:1.2px}.hero h1{font-size:clamp(60px,calc(11vw + 2px),92px)}.hero-sub{font-size:15px}.icon-native{left:11%;top:19%}.icon-react{right:8%;top:28%}.icon-astro{left:3%;top:55%}.icon-tailwind{right:3%;top:66%}.floating-icon{width:57px;height:57px}.hero-foot{font-size:9px;letter-spacing:.6px}.stage-panel{padding:75px 7%;min-height:auto}.panel-grid,.panel-grid-reverse{grid-template-columns:1fr;gap:45px}.product-cluster{order:2}.product-cluster img,.web-visual img{aspect-ratio:4/3;max-height:440px}.panel-copy{max-width:none}.panel-lead{font-size:16px}h2{font-size:46px}.project-cards{gap:25px}.project-cards article>img{width:65px;height:65px;margin-bottom:25px}.project-cards h3{font-size:25px}.project-cards p{font-size:13px}.contact-layout{grid-template-columns:1fr;gap:35px}.contact-alternatives{margin-top:10px}.contact-actions{margin:0}.document-body{padding-top:74px}.document-body header{padding:65px 7% 40px}.document-body h1{font-size:54px}.document-body section{padding:36px 7%}.cv-body .hero{grid-template-columns:1fr;gap:30px}.avatar-card{display:none}.about-grid{grid-template-columns:1fr;gap:25px}.ap-row{grid-template-columns:1fr;gap:8px}.footer-top{flex-wrap:wrap}.footer-top p{order:3;width:100%}.footer-bottom{gap:20px;align-items:start}.footer-bottom>div{flex-wrap:wrap;justify-content:end;gap:15px}.document-body .grid-2{grid-template-columns:1fr}}
@media(max-width:560px){.site-header nav{gap:12px;font-size:11px}.site-header nav .nav-contact{display:none}.wordmark{font-size:21px}.language{gap:5px}.hero{height:100svh;min-height:620px}.hero-copy{top:49%}.hero h1{font-size:clamp(56px,calc(13vw + 2px),77px)}.kicker{font-size:9px;letter-spacing:.8px}.kicker span{margin:0 5px}.hero-sub{font-size:14px}.line-link{font-size:12px}.floating-icon{width:46px;height:46px}.project-cards{grid-template-columns:1fr;gap:30px}.project-cards article{display:grid;grid-template-columns:70px 1fr;gap:25px;padding-top:25px}.project-cards article>img{margin:5px 0 0;width:60px;height:60px}.project-cards p{min-height:0;font-size:14px}.project-cards a{font-size:12px}.project-cards h3{font-size:26px}.contact-fields{grid-template-columns:1fr}.contact-field-wide{grid-column:auto}.contact-alternatives{gap:15px}.footer-top>a:last-child{font-size:13px}.footer-bottom{flex-direction:column}.footer-bottom>div{justify-content:start}.document-body h1{font-size:45px}.sec-head{gap:15px}.sec-title{font-size:29px}.sec-line{display:none}.legal-identity{padding-left:15px}.legal-identity p{display:block}.legal-identity strong{display:block}.document-body p,.document-body li{font-size:15px}.hero-foot>span:last-child{display:none}.hero-foot a{position:static}.footer-top{padding-bottom:28px}.hero-foot{bottom:23px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.floating-icon{animation:none}.motion-ready [data-reveal]{opacity:1;transform:none;transition:none}.pointer-links{transition:none}}
@media print{.site-header,.site-footer,.skip-link,.print-cta,.floating-icon,.pointer-links{display:none}body{background:white;color:black}.document-body{padding:0}.document-body header,.document-body section{padding:15px 0}.document-body p,.document-body li{font-size:10pt}.document-body h1{font-size:30pt}.document-body h2{font-size:18pt}a{color:inherit}.motion-ready [data-reveal]{opacity:1;transform:none}.cv-body .hero{display:block}.wrap{width:100%}}

:root{--sage:#5b7061}
.home-snap{scroll-snap-type:y proximity}.home-page main>section{scroll-snap-align:center}.home-page main>section.is-tall{scroll-snap-align:start}.home-page .hero{scroll-snap-align:start}.stage-panel{min-height:calc(100svh - 88px)}
.hero-copy>*{animation:hero-arrive .9s var(--ease) both}.hero-copy h1{animation-delay:.08s}.hero-sub{animation-delay:.16s}.hero-copy .line-link{animation-delay:.24s}
@keyframes hero-arrive{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
#pageOverlay{display:none}
@media(max-width:560px){.site-header nav .nav-contact{display:inline-flex;font-size:0}.site-header nav .nav-contact span{font-size:16px;margin:0}.stage-panel{min-height:calc(100svh - 74px)}}
@media(prefers-reduced-motion:reduce){.hero-copy>*{animation:none}}
.icon-vapor{left:23%;bottom:8%;rotate:7deg}.icon-fastapi{right:1%;top:40%;rotate:-5deg}.icon-postgres{left:1%;top:31%;rotate:-7deg}
@media(max-width:560px){.icon-postgres{left:1%;top:32%}.icon-fastapi{right:0;top:43%}.icon-vapor{left:24%;bottom:7%}.icon-postgres,.icon-fastapi,.icon-vapor{width:36px;height:36px}}

/* Each complete stage settles beneath the fixed navigation. */
.home-snap{scroll-snap-type:y mandatory;scroll-padding-top:var(--header-height,88px);scroll-padding-bottom:0}
.home-page main>section{scroll-snap-align:start;scroll-snap-stop:always}
.home-page .hero{height:100dvh;min-height:0;max-height:none}
.home-page .stage-panel{min-height:calc(100dvh - var(--header-height,88px));padding-top:clamp(35px,6dvh,95px);padding-bottom:clamp(35px,6dvh,95px)}
.home-page .site-footer{scroll-snap-align:end}
.product-cluster img,.web-visual img{max-height:calc(100dvh - var(--header-height,88px) - 12dvh);width:100%;object-fit:cover}
/* The heading, explanation and action enter in sequence, on every return. */
.motion-ready .stage-panel .panel-copy>*,.motion-ready .stage-panel .contact-copy>*,.motion-ready .stage-panel .project-cards article{opacity:0;transform:translateY(34px);transition:opacity .8s var(--ease),transform 1s var(--ease);transition-delay:0s}
.motion-ready .stage-panel .product-cluster,.motion-ready .stage-panel .web-visual,.motion-ready .stage-panel .contact-form-preview{opacity:0;transform:translateY(22px);transition:opacity 1s var(--ease),transform 1.15s var(--ease)}
.motion-ready .section-active .panel-copy>*,.motion-ready .section-active .contact-copy>*,.motion-ready .section-active .project-cards article{opacity:1;transform:translateY(0);transition-delay:var(--entry-delay,0s)}
.motion-ready .section-active .product-cluster,.motion-ready .section-active .web-visual,.motion-ready .section-active .contact-form-preview{opacity:1;transform:translateY(0)}
@media(max-width:900px){.product-cluster img,.web-visual img{max-height:440px}.home-page .stage-panel.is-tall{scroll-snap-stop:normal}}
@media(prefers-reduced-motion:reduce){.motion-ready .stage-panel .panel-copy>*,.motion-ready .stage-panel .contact-copy>*,.motion-ready .stage-panel .project-cards article,.motion-ready .stage-panel .product-cluster,.motion-ready .stage-panel .web-visual,.motion-ready .stage-panel .contact-form-preview{opacity:1;transform:none;transition:none}}

/* Lighter first section, with readable dark text and sage details. */
.apple-panel{background:#dce4d8;color:var(--ink)}
.apple-panel .panel-lead,.apple-panel .service-details{color:#43594a}
.apple-panel .panel-kicker,.apple-panel .inline-facts{color:#4f6655}
.apple-panel summary{color:var(--ink)}
.apple-panel .service-details,.apple-panel .btn{border-color:#9ead96}
.portfolio-panel .panel-copy-wide{max-width:none;width:100%}
.portfolio-panel h2{white-space:nowrap;font-size:clamp(20px,calc(4.4vw + 2px),76px);letter-spacing:-.05em}
.project-cards a.app-store-link{border:0;padding:0;margin:12px 0;display:inline-flex;min-height:44px}
.project-cards a.app-store-link:after{content:none}
.app-store-badge{display:block;height:44px;width:auto;max-width:none;border-radius:0;filter:none}
/* Preserve the official badge artwork: no rotation, recoloring or animation. */
.motion-ready .stage-panel .project-cards article:has(.app-store-badge){opacity:1;transform:none;transition:none}

/* Acento de marca: champán del punto del logotipo.
   La variante oscura se reserva para texto sobre fondos claros. */
h1 > span,
.panel-kicker,
.sec-num,
.site-header nav a:hover { color: var(--accent-ink); }
a:focus-visible,
button:focus-visible,
summary:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible { outline-color: var(--accent-ink); }
input[type="checkbox"] { accent-color: var(--accent-ink); }

/* Botones editoriales: contorno completo, radio contenido y flecha delimitada.
   No se aplica a navegación, enlaces de texto ni badges oficiales de Apple. */
.line-link,
.btn,
.project-cards a:not(.app-store-link) {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  min-height: 48px;
  padding: 12px 18px;
  border: 1px solid var(--accent);
  border-radius: 5px;
  background: transparent;
  color: var(--ink);
  font-size: 14px;
  line-height: 1.4;
  letter-spacing: 0;
  text-align: left;
  transition: background-color .2s, border-color .2s;
}
.line-link > span,
.btn::after,
.project-cards a:not(.app-store-link)::after {
  flex-shrink: 0;
  margin-left: 0;
  padding-left: 16px;
  border-left: 1px solid var(--accent);
  color: var(--accent-ink);
  font-size: 19px;
  line-height: 1;
}
.line-link:hover,
.btn:not(:disabled):hover,
.project-cards a:not(.app-store-link):hover {
  background: #a28c641a;
  border-color: var(--accent-ink);
  color: var(--ink);
}
.apple-panel .btn { border-color: var(--accent); }
/* El contorno comunica la acción: sin flechas ni separadores decorativos. */
.line-link > span { display: none; }
.btn::after,
.project-cards a:not(.app-store-link)::after { content: none; }
@media (prefers-reduced-motion: reduce) {
  .line-link, .btn, .project-cards a:not(.app-store-link) { transition: none; }
}
