/* Font descriptors are asset declarations, not component styles. */
@font-face{font-family:'DM Sans';src:url('assets/dm-sans-latin.woff2') format('woff2');font-style:normal;font-weight:100 1000;font-display:swap}
@font-face{font-family:Manrope;src:url('assets/manrope-latin.woff2') format('woff2');font-style:normal;font-weight:200 800;font-display:swap}
/* Primitive tokens. Media query breakpoints must be literal in native CSS. */
:root {
  --green-950:#102d2f; --green-900:#143f3b; --green-800:#13584c; --green-100:#e8efe6; --green-200:#cfe7cb;
  --cream-50:#f8f9f4; --white:#ffffff; --slate-600:#50645d; --slate-500:#63786e; --slate-200:#d6dfd8; --slate-100:#edf2f2;
  --teal-700:#286c74; --blue-700:#005eaa; --blue-200:#a8dcff; --red-800:#a32323; --red-200:#ffb5b5;
  --night-950:#101e1b; --night-900:#172c26; --night-800:#223b32; --mint-200:#b5dfcf; --mint-100:#deeee6; --mint-400:#79cfac;
  --overlay-900:#071f25ed; --shadow-green:#10382d30; --clear:transparent;
  --font-body:'DM Sans',Arial,sans-serif; --font-heading:Manrope,Arial,sans-serif; --font-accent:Georgia,serif; --font-logo:Arial,sans-serif;
  --text-xs:.75rem; --text-sm:.875rem; --text-base:1rem; --text-lg:1.125rem; --text-xl:1.375rem; --text-2xl:1.75rem; --text-3xl:2.125rem; --text-logo:2.6875rem;
  --text-h1:clamp(2.4rem,4.3vw,3.875rem); --text-h2:clamp(2rem,3.3vw,2.4375rem); --text-contact:clamp(3.125rem,5vw,3.6875rem);
  --weight-normal:400; --weight-medium:500; --weight-semibold:600; --weight-bold:700;
  --leading-tight:1.12; --leading-title:1.2; --leading-copy:1.8; --leading-base:1.6;
  --tracking-title:-.045em; --tracking-small:.14em; --tracking-logo:.08em;
  --space-0:0; --space-1:.25rem; --space-2:.5rem; --space-3:.75rem; --space-4:1rem; --space-5:1.25rem; --space-6:1.5rem; --space-7:1.75rem; --space-8:2rem; --space-9:2.5rem; --space-10:3rem; --space-11:3.5rem; --space-12:4rem; --space-13:4.5rem; --space-14:5.5rem; --space-15:6rem;
  --radius-sm:.25rem; --radius-md:.4375rem; --radius-lg:.625rem; --radius-round:50%;
  --border-thin:1px; --border-strong:2px; --outline-width:3px; --outline-offset:5px;
  --target-min:2.75rem; --size-float:3.5rem; --size-icon:2rem; --size-dot:.4375rem;
  --size-brand-width:6rem; --size-brand-height:4.5rem;
  --page-max:80rem; --header-max:87.5rem; --copy-max:26rem; --summary-max:22rem;
  --media-height:24.375rem; --media-height-tablet:18.125rem; --media-height-wide:21.25rem;
  --hero-ratio:1.12; --full:100%; --caption-position:center 57%;
  --dialog-width:94vw; --dialog-max:65.625rem; --dialog-height:94dvh; --photo-height:75dvh;
  --shadow-soft:0 .25rem 1.125rem var(--shadow-green); --shadow-raised:0 .75rem 1.75rem var(--shadow-green);
  --duration-fast:180ms; --duration-normal:320ms; --duration-reveal:650ms; --duration-shimmer:1400ms; --duration-pulse:2200ms; --delay-step:100ms; --delay-none:0ms;
  --ease-out:cubic-bezier(.2,.7,.2,1); --ease-soft:ease-in-out;
  --shift-start:1rem; --shift-hover:-.25rem; --shift-arrow:.375rem; --scale-photo:1.025; --scale-pressed:.98; --scale-pulse:1.12;
  --opacity-soft:.45; --opacity-hidden:0; --opacity-full:1; --z-float:5; --z-skip:20; --pulse-count:2;
}
/* Semantic tokens: only this layer changes for dark mode. */
:root {
  --color-bg:var(--cream-50); --color-text:var(--green-900); --color-muted:var(--slate-600); --color-primary:var(--green-800); --color-on-primary:var(--white);
  --color-accent:var(--teal-700); --color-focus:var(--blue-700); --color-focus-inverse:var(--blue-200); --color-border:var(--slate-200); --color-control-border:var(--slate-500);
  --color-surface:var(--green-100); --color-gallery:var(--slate-100); --color-field:var(--white);
  --color-inverse-bg:var(--green-900); --color-inverse-text:var(--cream-50); --color-inverse-muted:var(--mint-200); --color-highlight:var(--green-200);
  --color-error:var(--red-800); --color-skeleton:var(--slate-200); --color-skeleton-shine:var(--cream-50); --color-backdrop:var(--overlay-900); --color-media-bg:var(--green-950); --color-clear:var(--clear);
  --font-text:var(--font-body); --font-title:var(--font-heading); --text-default:var(--text-base); --space-section-y:var(--space-11); --space-page-x:var(--space-6); --radius-control:var(--radius-md); --shadow-card:var(--shadow-raised); --motion-enter:var(--duration-reveal);
}
:root[data-theme="dark"] {
  --color-bg:var(--night-950); --color-text:var(--mint-100); --color-muted:var(--mint-200); --color-primary:var(--mint-400); --color-on-primary:var(--green-950);
  --color-accent:var(--blue-200); --color-focus:var(--blue-200); --color-border:var(--slate-500); --color-control-border:var(--mint-200);
  --color-surface:var(--night-800); --color-gallery:var(--night-900); --color-field:var(--night-950);
  --color-inverse-bg:var(--night-900); --color-inverse-text:var(--mint-100); --color-inverse-muted:var(--mint-200); --color-highlight:var(--mint-200);
  --color-error:var(--red-200); --color-skeleton:var(--night-800); --color-skeleton-shine:var(--slate-500);
}
/* Component tokens inherit the semantic layer in either theme. */
:root {
  --btn-primary-bg:var(--color-primary); --btn-primary-text:var(--color-on-primary); --btn-radius:var(--radius-control); --btn-padding:var(--space-4) var(--space-6); --btn-motion:var(--duration-fast);
  --card-bg:var(--color-surface); --card-radius:var(--radius-md); --card-shadow:var(--shadow-card); --form-bg:var(--color-bg); --field-bg:var(--color-field); --field-border:var(--color-control-border);
  --hero-caption-bg:var(--color-surface); --float-shadow:var(--shadow-soft); --skeleton-bg:var(--color-skeleton); --skeleton-gradient:linear-gradient(90deg,var(--color-clear),var(--color-skeleton-shine),var(--color-clear));
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:var(--space-6)}
body{margin:var(--space-0);background:var(--color-bg);color:var(--color-text);font:var(--weight-normal) var(--text-default)/var(--leading-base) var(--font-text)}
a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}a,button,summary{touch-action:manipulation}
button,input,textarea,summary,nav a,.footer>a,.text-link{min-height:var(--target-min)}button,summary,nav a{min-width:var(--target-min)}
:focus-visible{outline:var(--outline-width) solid var(--color-focus);outline-offset:var(--outline-offset)}.contact-copy :focus-visible{outline-color:var(--color-focus-inverse)}
h1,h2,h3,p,figure{margin:var(--space-0)}h1,h2,h3{font-family:var(--font-title)}h1,h2{font-weight:var(--weight-semibold);letter-spacing:var(--tracking-title)}
h1{font-size:var(--text-h1);line-height:var(--leading-tight)}h2{font-size:var(--text-h2);line-height:var(--leading-title)}h3{font-size:var(--text-base);line-height:var(--leading-base)}
button{cursor:pointer}[hidden]{display:none!important}
.section{max-width:var(--page-max);margin-inline:auto;padding:var(--space-section-y) var(--space-page-x)}
.header{max-width:var(--header-max);margin:auto;padding:var(--space-5) var(--space-page-x);display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;border-bottom:var(--border-thin) solid var(--color-border);gap:var(--space-4)}
.brand{display:inline-flex;align-items:center;gap:var(--space-3);font-size:var(--text-xs);letter-spacing:var(--tracking-small);line-height:var(--leading-base)}.brand strong{display:block;font-size:var(--text-base);letter-spacing:var(--tracking-logo)}
.brand-logo{display:block;width:var(--size-brand-width);height:var(--size-brand-height);object-fit:contain;border-radius:var(--radius-md);flex-shrink:0}
.header nav{display:flex;flex-wrap:wrap;gap:var(--space-3);font-size:var(--text-sm);font-weight:var(--weight-semibold)}.header nav a,.text-link,.footer>a:last-child{display:inline-flex;align-items:center}
.header nav a:hover,.text-link:hover,.footer>a:last-child:hover{text-decoration:underline;text-underline-offset:var(--space-1)}
.hero{display:grid;gap:var(--space-8);align-items:center;padding-block:var(--space-9)}
.eyebrow{font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:var(--tracking-small);display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-6)}.dot{width:var(--size-dot);height:var(--size-dot);background:var(--color-primary);border-radius:var(--radius-round);flex-shrink:0}
h1 em{position:relative;display:inline-block;font-family:var(--font-accent);font-weight:var(--weight-normal);color:var(--color-accent)}
h1 em::after{content:'';position:absolute;inset-inline:var(--space-0);bottom:var(--space-0);height:var(--border-strong);background:currentColor;transform-origin:left;animation:accent-in var(--motion-enter) var(--ease-out) both;animation-delay:var(--duration-normal)}
.intro{max-width:var(--copy-max);margin-top:var(--space-7);line-height:var(--leading-copy);color:var(--color-muted)}
.hero-actions{display:flex;align-items:flex-start;flex-direction:column;gap:var(--space-3);margin-top:var(--space-8)}
.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-4);border:var(--border-strong) solid var(--color-clear);padding:var(--btn-padding);border-radius:var(--btn-radius);font-weight:var(--weight-semibold);font-size:var(--text-base);min-height:var(--target-min);transition:transform var(--btn-motion) var(--ease-out)}
.primary{background:var(--btn-primary-bg);color:var(--btn-primary-text)}.button:hover{transform:translateY(var(--shift-hover))}.button:active{transform:scale(var(--scale-pressed))}
.text-link{font-size:var(--text-sm);font-weight:var(--weight-semibold);text-decoration:underline;text-underline-offset:var(--space-1)}
.hero-note{margin-top:var(--space-6)}.hero-note p{font-size:var(--text-sm);color:var(--color-muted)}.hero-note strong{font-weight:var(--weight-medium)}
.route-strip{background:var(--color-primary);color:var(--color-on-primary);display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4) var(--space-5);padding:var(--space-6)}
.route-strip>span:first-child{flex-basis:var(--full);font-size:var(--text-xs);letter-spacing:var(--tracking-small)}.route-strip p{font-family:var(--font-title);font-size:var(--text-base);white-space:nowrap}.route-strip i{display:inline-block;font-style:normal;margin-inline:var(--space-1);animation:route-arrow var(--duration-pulse) var(--ease-soft) var(--pulse-count)}.strip-dot{font-size:var(--text-lg)}.strip-note{font-size:var(--text-sm)}
.section-heading{display:flex;flex-direction:column;gap:var(--space-5);margin-bottom:var(--space-8)}.section-heading>p{max-width:var(--copy-max);color:var(--color-muted);line-height:var(--leading-copy)}
.coverage-grid{position:relative;display:grid;gap:var(--space-8)}.small-label{font-size:var(--text-xs);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-small)}.local-panel>.small-label{display:block;margin-bottom:var(--space-3)}
.city-row{display:flex;align-items:center;padding:var(--space-5) var(--space-0);border-bottom:var(--border-thin) solid var(--color-border)}.city-row>span{font-family:var(--font-title);font-size:var(--text-2xl)}.city-row small{font-size:var(--text-sm);color:var(--color-muted);margin-right:var(--space-7)}
.intercity-panel{background:var(--card-bg);border-radius:var(--card-radius);padding:var(--space-6)}.route{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-5) var(--space-0);border-bottom:var(--border-thin) solid var(--color-border)}.route-mark{font-size:var(--text-sm);line-height:var(--leading-tight);color:var(--color-muted)}.route p{font-size:var(--text-lg)}.availability{font-size:var(--text-sm);margin-top:var(--space-5);color:var(--color-muted)}
.travel-modes{margin-top:var(--space-6)}.travel-modes dl{display:grid;gap:var(--space-4);margin:var(--space-4) var(--space-0) var(--space-0)}.travel-modes dt{font-weight:var(--weight-semibold)}.travel-modes dd{margin:var(--space-1) var(--space-0) var(--space-0);color:var(--color-muted)}
.gallery-section{background:var(--color-gallery)}.gallery{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-8)}
.gallery-card{min-width:0;position:relative;transition:transform var(--duration-normal) var(--ease-out);border-radius:var(--card-radius)}.gallery-card::before{content:'';position:absolute;inset:var(--space-0);border-radius:inherit;box-shadow:var(--card-shadow);opacity:var(--opacity-hidden);pointer-events:none;transition:opacity var(--duration-normal) var(--ease-out)}
.gallery-caption{display:flex;justify-content:space-between;align-items:start;gap:var(--space-3);margin-top:var(--space-5)}.gallery-caption span{font-size:var(--text-xs);color:var(--color-muted);white-space:nowrap}.gallery-card>p{color:var(--color-muted);margin-top:var(--space-2)}
.process-grid{display:grid;gap:var(--space-8)}.process h2{font-size:var(--text-3xl)}.step{display:inline-grid;place-items:center;width:var(--size-icon);height:var(--size-icon);border-radius:var(--radius-round);background:var(--card-bg);font-size:var(--text-sm);margin-bottom:var(--space-5)}.process h3{margin-bottom:var(--space-3)}.process p:not(.eyebrow){color:var(--color-muted);line-height:var(--leading-copy)}
.contact-wrap{background:var(--color-inverse-bg);color:var(--color-inverse-text)}.contact{display:grid;gap:var(--space-8);align-items:center}.contact-copy .eyebrow{color:var(--color-inverse-muted)}.contact h2{font-size:var(--text-contact);color:var(--color-highlight)}.contact-copy>p:not(.eyebrow){max-width:var(--copy-max);margin-top:var(--space-6);color:var(--color-inverse-muted)}.contact-copy>p.phone{font-size:var(--text-xl);font-family:var(--font-title);color:var(--color-inverse-text);margin-top:var(--space-8)}.contact-detail{display:block;font-size:var(--text-xs);letter-spacing:var(--tracking-small);color:var(--color-inverse-muted);margin-top:var(--space-3)}
form{background:var(--form-bg);border-radius:var(--radius-lg);padding:var(--space-6) var(--space-5);color:var(--color-text);min-width:0}.form-title{margin-bottom:var(--space-6)}.form-row{display:grid}
label{display:block;font-size:var(--text-base);font-weight:var(--weight-semibold);margin-bottom:var(--space-4)}input,textarea{display:block;width:var(--full);max-width:var(--full);min-width:0;border:var(--border-thin) solid var(--field-border);border-radius:var(--radius-sm);background:var(--field-bg);padding:var(--space-3);color:var(--color-text);font-size:var(--text-base);margin-top:var(--space-2)}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:var(--color-muted);opacity:var(--opacity-full)}.optional{font-weight:var(--weight-normal);color:var(--color-muted)}
.optional-date{margin-bottom:var(--space-4)}summary{cursor:pointer;padding-block:var(--space-3);font-size:var(--text-sm)}.optional-date label{margin-top:var(--space-3)}form .button{width:var(--full)}.form-note{font-size:var(--text-sm);color:var(--color-muted);margin-top:var(--space-3)}
.field-error,.form-status{color:var(--color-error);font-size:var(--text-sm)}.field-error{display:block;margin-top:var(--space-2)}[aria-invalid="true"]{border-color:var(--color-error)}.form-status:not(:empty){margin-bottom:var(--space-4)}
.footer{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-6);padding-block:var(--space-8) var(--space-15)}.footer p,.footer>a:last-child{font-size:var(--text-sm)}.footer p span{color:var(--color-muted)}
.floating-wa{position:fixed;right:var(--space-4);bottom:var(--space-4);z-index:var(--z-float);width:var(--size-float);height:var(--size-float);border-radius:var(--radius-round);display:grid;place-items:center;background:var(--btn-primary-bg);color:var(--btn-primary-text);box-shadow:var(--float-shadow);border:var(--border-strong) solid var(--color-bg);transition:transform var(--duration-fast) var(--ease-out)}.floating-wa::before{content:'';position:absolute;inset:var(--space-0);border:var(--border-strong) solid currentColor;border-radius:inherit;pointer-events:none;animation:whatsapp-pulse var(--duration-pulse) var(--ease-soft) var(--pulse-count)}.floating-wa svg{width:var(--size-icon);height:var(--size-icon)}.floating-wa:hover{transform:translateY(var(--shift-hover))}
.skip{position:fixed;top:var(--space-3);left:var(--space-4);background:var(--color-bg);color:var(--color-text);z-index:var(--z-skip);padding:var(--space-4);transform:translateY(calc(-1 * (var(--full) + var(--space-8))))}.skip:focus{transform:none}section{scroll-margin-top:var(--space-5)}
.hero-copy>.eyebrow,.hero h1,.hero .intro,.hero-actions,.hero-note{animation:enter var(--motion-enter) var(--ease-out) both}.hero h1{animation-delay:var(--delay-step)}.hero .intro{animation-delay:calc(var(--delay-step) * 2)}.hero-actions{animation-delay:calc(var(--delay-step) * 3)}.hero-note{animation-delay:calc(var(--delay-step) * 4)}
.reveal-pending{opacity:var(--opacity-hidden);transform:translateY(var(--shift-start))}.reveal-visible{animation:enter var(--motion-enter) var(--ease-out) both;animation-delay:var(--reveal-delay,var(--delay-none))}.process-grid>div:nth-of-type(2){--reveal-delay:var(--delay-step)}.process-grid>div:nth-of-type(3){--reveal-delay:calc(var(--delay-step) * 2)}
@keyframes enter{from{opacity:var(--opacity-hidden);transform:translateY(var(--shift-start))}to{opacity:var(--opacity-full);transform:none}}
@keyframes accent-in{from{transform:scaleX(0);opacity:var(--opacity-hidden)}to{transform:scaleX(1);opacity:var(--opacity-full)}}
@keyframes route-arrow{0%,100%{transform:none}50%{transform:translateX(var(--shift-arrow))}}
@keyframes whatsapp-pulse{from{transform:scale(1);opacity:var(--opacity-soft)}to{transform:scale(var(--scale-pulse));opacity:var(--opacity-hidden)}}
@media(hover:hover){.gallery-card:hover{transform:translateY(var(--shift-hover))}.gallery-card:hover::before{opacity:var(--opacity-full)}}
@media(min-width:48rem){
  :root{--space-page-x:var(--space-8);--space-section-y:var(--space-12)}.header{flex-wrap:nowrap}.header nav{gap:var(--space-6)}.hero{grid-template-columns:1.08fr 1fr;gap:var(--space-6);padding-block:var(--space-12)}.route-strip{justify-content:center;gap:var(--space-6)}.route-strip>span:first-child{flex-basis:auto}
  .section-heading{flex-direction:row;align-items:flex-end;justify-content:space-between;gap:var(--space-8)}.section-heading>p{max-width:var(--summary-max)}.coverage-grid{grid-template-columns:1.2fr 1fr}.gallery{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-9) var(--space-5)}.process-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.process-grid>h2{grid-column:1/-1}.contact{grid-template-columns:1fr 1.1fr;gap:var(--space-9)}.footer{flex-direction:row;justify-content:space-between;align-items:center}
}
@media(min-width:68rem){
  :root{--space-page-x:var(--space-12);--space-section-y:var(--space-14)}.hero{gap:var(--space-9)}.route-strip{gap:var(--space-10)}.process-grid{grid-template-columns:1.2fr 1fr 1fr 1.15fr}.process-grid>h2{grid-column:auto}.contact{gap:var(--space-14)}form{padding:var(--space-8)}.form-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.reveal-pending{opacity:var(--opacity-full);transform:none}.button:hover,.button:active,.gallery-card:hover,.floating-wa:hover{transform:none}}
