/* Veloria Escape — component layer. Every value comes from a token. */

/* ---------- layout ---------- */
.ve-container{width:100%;max-width:var(--container-max);margin-inline:auto;padding-inline:var(--gutter-desktop)}
.ve-section{padding-block:var(--space-section)}
.ve-section--compact{padding-block:var(--space-section-compact)}
.ve-section--soft{background:var(--color-surface-soft)}
.ve-grid{display:grid;gap:var(--space-grid-gap)}
.ve-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.ve-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ve-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.ve-row{display:flex;align-items:center;gap:var(--space-md)}
.ve-stack{display:flex;flex-direction:column;gap:var(--space-md)}

/* ---------- type helpers ---------- */
.ve-display-xl,.ve-display-lg,.ve-display-md,.ve-display-sm{font-family:var(--font-display);color:var(--color-ink)}
.ve-display-xl{font-size:var(--type-display-xl-size);line-height:var(--type-display-xl-line);letter-spacing:var(--type-display-xl-tracking);font-weight:var(--type-display-xl-weight)}
.ve-display-lg{font-size:var(--type-display-lg-size);line-height:var(--type-display-lg-line);letter-spacing:var(--type-display-lg-tracking);font-weight:var(--type-display-lg-weight)}
.ve-display-md{font-size:var(--type-display-md-size);line-height:var(--type-display-md-line);letter-spacing:var(--type-display-md-tracking);font-weight:var(--type-display-md-weight)}
.ve-display-sm{font-size:var(--type-display-sm-size);line-height:var(--type-display-sm-line);letter-spacing:var(--type-display-sm-tracking);font-weight:var(--type-display-sm-weight)}
.ve-heading-lg{font-size:var(--type-heading-lg-size);line-height:var(--type-heading-lg-line);letter-spacing:var(--type-heading-lg-tracking);font-weight:var(--type-heading-lg-weight);color:var(--color-ink)}
.ve-heading-md{font-size:var(--type-heading-md-size);line-height:var(--type-heading-md-line);letter-spacing:var(--type-heading-md-tracking);font-weight:var(--type-heading-md-weight);color:var(--color-ink)}
.ve-heading-sm{font-size:var(--type-heading-sm-size);line-height:var(--type-heading-sm-line);font-weight:var(--type-heading-sm-weight);color:var(--color-ink)}
.ve-body-lg{font-size:var(--type-body-lg-size);line-height:var(--type-body-lg-line)}
.ve-body-md{font-size:var(--type-body-md-size);line-height:var(--type-body-md-line)}
.ve-body-sm{font-size:var(--type-body-sm-size);line-height:var(--type-body-sm-line)}
.ve-caption{font-size:var(--type-caption-size);line-height:var(--type-caption-line);color:var(--color-muted)}
.ve-eyebrow{font-size:var(--type-micro-size);line-height:var(--type-micro-line);font-weight:var(--type-micro-weight);letter-spacing:var(--type-micro-tracking);text-transform:uppercase;color:var(--color-muted)}
.ve-eyebrow--brand{color:var(--color-primary)}
.ve-eyebrow--onphoto{color:rgba(255,255,255,.86)}
.ve-italic{font-style:italic}
.ve-lede{font-size:var(--type-body-lg-size);line-height:1.55;color:var(--color-body);max-width:56ch}

/* ---------- wordmark ---------- */
.ve-wordmark{display:inline-flex;align-items:baseline;gap:7px;color:var(--color-ink);text-decoration:none}
.ve-wordmark:hover{color:var(--color-ink);text-decoration:none}
.ve-wordmark__name{font-family:var(--font-display);font-size:21px;line-height:1;letter-spacing:-.015em;font-weight:var(--weight-medium)}
.ve-wordmark__suffix{font-size:10px;line-height:1;font-weight:var(--weight-semibold);letter-spacing:.2em;text-transform:uppercase;color:var(--color-primary)}
.ve-wordmark--lg .ve-wordmark__name{font-size:28px}
.ve-wordmark--lg .ve-wordmark__suffix{font-size:11px}
.ve-wordmark--inverse{color:var(--color-on-inverse)}
.ve-wordmark--inverse .ve-wordmark__suffix{color:rgba(255,255,255,.72)}

/* ---------- buttons ---------- */
.ve-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);min-height:var(--target-min);padding-inline:20px;border:1px solid transparent;border-radius:var(--radius-button);font-size:var(--type-button-size);line-height:var(--type-button-line);font-weight:var(--type-button-weight);letter-spacing:-.005em;cursor:pointer;text-decoration:none;white-space:nowrap;background:none;transition:var(--transition-control),transform var(--duration-fast) var(--ease-standard)}
.ve-btn:hover{text-decoration:none}
.ve-btn:active{transform:scale(var(--press-scale))}
.ve-btn--primary{background:var(--color-primary);color:var(--color-on-primary)}
.ve-btn--primary:hover{background:var(--color-primary-hover);color:var(--color-on-primary)}
.ve-btn--primary:active{background:var(--color-primary-active)}
.ve-btn--secondary{background:var(--color-canvas);color:var(--color-ink);border-color:var(--color-border-strong)}
.ve-btn--secondary:hover{background:var(--color-surface-soft);border-color:var(--color-ink);color:var(--color-ink)}
.ve-btn--tertiary{color:var(--color-ink);padding-inline:12px}
.ve-btn--tertiary:hover{background:var(--color-surface-strong);color:var(--color-ink)}
.ve-btn--inverse{background:var(--color-canvas);color:var(--color-ink)}
.ve-btn--inverse:hover{background:var(--color-surface-strong);color:var(--color-ink)}
.ve-btn--ghost-inverse{color:#fff;border-color:rgba(255,255,255,.62)}
.ve-btn--ghost-inverse:hover{background:rgba(255,255,255,.14);border-color:#fff;color:#fff}
.ve-btn--pill{border-radius:var(--radius-full);padding-inline:24px}
.ve-btn--sm{min-height:40px;padding-inline:16px;font-size:var(--type-body-sm-size)}
.ve-btn--lg{min-height:52px;padding-inline:28px;font-size:var(--type-body-md-size)}
.ve-btn--block{width:100%}
.ve-btn:disabled,.ve-btn[aria-disabled=true]{cursor:not-allowed;transform:none}
.ve-btn--primary:disabled,.ve-btn--primary[aria-disabled=true]{background:var(--color-primary-disabled);color:#fff}
.ve-btn--secondary:disabled,.ve-btn--tertiary:disabled{color:var(--color-muted-soft);border-color:var(--color-hairline);background:var(--color-canvas)}
.ve-btn.is-loading{pointer-events:none;color:transparent}
.ve-btn__spinner{position:absolute;width:16px;height:16px;border-radius:var(--radius-full);border:2px solid currentColor;border-top-color:transparent;animation:ve-spin 700ms linear infinite}
.ve-btn.is-loading .ve-btn__spinner{color:var(--color-on-primary)}
.ve-btn--secondary.is-loading .ve-btn__spinner,.ve-btn--tertiary.is-loading .ve-btn__spinner{color:var(--color-ink)}
.ve-btn{position:relative}
@keyframes ve-spin{to{transform:rotate(360deg)}}

.ve-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:var(--target-min);height:var(--target-min);border-radius:var(--radius-full);border:1px solid var(--color-hairline);background:var(--color-canvas);color:var(--color-ink);cursor:pointer;transition:var(--transition-control),transform var(--duration-fast) var(--ease-standard)}
.ve-iconbtn:hover{background:var(--color-surface-soft);border-color:var(--color-border-strong)}
.ve-iconbtn:active{transform:scale(var(--press-scale))}
.ve-iconbtn--ghost{border-color:transparent;background:none}
.ve-iconbtn--ghost:hover{background:var(--color-surface-strong);border-color:transparent}
.ve-iconbtn--solid{background:var(--color-primary);border-color:transparent;color:var(--color-on-primary)}
.ve-iconbtn--solid:hover{background:var(--color-primary-hover);border-color:transparent}
.ve-iconbtn--onphoto{background:rgba(255,255,255,.92);border-color:transparent;box-shadow:var(--elevation-card)}
.ve-iconbtn--onphoto:hover{background:#fff}
.ve-iconbtn--sm{width:36px;height:36px}
.ve-iconbtn:disabled{color:var(--color-muted-soft);cursor:not-allowed;background:var(--color-canvas)}

/* ---------- trip search ---------- */
.ve-search{display:flex;align-items:stretch;gap:2px;padding:6px;background:var(--color-canvas);border:1px solid var(--color-hairline);border-radius:var(--radius-full);box-shadow:var(--elevation-card);transition:box-shadow var(--duration-slow) var(--ease-standard)}
.ve-search:hover,.ve-search:focus-within{box-shadow:var(--elevation-floating)}
.ve-search__field{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:3px;padding:10px 24px;border:none;border-radius:var(--radius-full);background:none;text-align:left;cursor:pointer;transition:background-color var(--duration-base) var(--ease-standard)}
.ve-search__field:hover{background:var(--color-surface-soft)}
.ve-search__field.is-active{background:var(--color-surface-strong)}
.ve-search__label{font-size:var(--type-micro-size);line-height:1;font-weight:var(--type-micro-weight);letter-spacing:.1em;text-transform:uppercase;color:var(--color-ink)}
.ve-search__value{font-size:var(--type-body-sm-size);line-height:1.3;color:var(--color-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ve-search__value--empty{color:var(--color-muted-soft)}
.ve-search__divider{width:1px;background:var(--color-hairline-soft);margin-block:10px}
.ve-search__submit{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);height:52px;min-width:52px;padding-inline:8px;border:none;border-radius:var(--radius-full);background:var(--color-primary);color:var(--color-on-primary);font-size:var(--type-button-size);font-weight:var(--type-button-weight);cursor:pointer;transition:var(--transition-control)}
.ve-search__submit:hover{background:var(--color-primary-hover)}
.ve-search__submit:active{background:var(--color-primary-active)}
.ve-search__submit--wide{padding-inline:22px}
.ve-searchbar{display:flex;align-items:center;gap:var(--space-md);width:100%;padding:10px 10px 10px 18px;background:var(--color-canvas);border:1px solid var(--color-hairline);border-radius:var(--radius-full);box-shadow:var(--elevation-card);cursor:pointer;text-align:left}
.ve-searchbar__text{flex:1;min-width:0}
.ve-search-overlay{position:fixed;inset:0;z-index:80;background:var(--color-canvas);display:flex;flex-direction:column;animation:ve-sheet-up var(--duration-slow) var(--ease-entrance)}
.ve-search-overlay__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-base) var(--gutter-mobile);border-bottom:var(--border-hairline-soft)}
.ve-search-overlay__body{flex:1;overflow:auto;padding:var(--space-lg) var(--gutter-mobile)}
.ve-search-overlay__foot{display:flex;gap:var(--space-md);padding:var(--space-base) var(--gutter-mobile);border-top:var(--border-hairline-soft);background:var(--color-canvas)}
@keyframes ve-sheet-up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* ---------- media & cards ---------- */
.ve-media{position:relative;overflow:hidden;border-radius:var(--radius-image);background:var(--color-surface-strong)}
.ve-media>img{width:100%;height:100%;object-fit:cover;transition:var(--transition-image)}
.ve-media--hero{border-radius:var(--radius-lg)}
.ve-media--flush{border-radius:0}
.ve-media--circle{border-radius:var(--radius-full)}
.ve-media__overlay{position:absolute;inset:0;background:var(--overlay-photo-bottom);pointer-events:none}
.ve-media__overlay--hero{background:var(--overlay-photo-hero)}
.ve-media__tl{position:absolute;top:var(--space-md);left:var(--space-md);display:flex;gap:var(--space-sm)}
.ve-media__tr{position:absolute;top:var(--space-md);right:var(--space-md);display:flex;gap:var(--space-sm)}
.ve-media__bl{position:absolute;bottom:var(--space-base);left:var(--space-base);right:var(--space-base);color:#fff}
.ve-card{display:flex;flex-direction:column;gap:var(--space-md);background:var(--color-canvas);border-radius:var(--radius-card);text-align:left;text-decoration:none;color:inherit}
.ve-card:hover{text-decoration:none;color:inherit}
.ve-card--bordered{border:var(--border-hairline-soft);padding:var(--space-card-pad);gap:var(--space-base)}
.ve-card--interactive{cursor:pointer;transition:box-shadow var(--duration-slow) var(--ease-standard),transform var(--duration-slow) var(--ease-standard)}
.ve-card--interactive:hover .ve-media>img{transform:scale(var(--hover-image-scale))}
.ve-card--bordered.ve-card--interactive:hover{box-shadow:var(--elevation-card);border-color:var(--color-hairline)}
.ve-card--interactive:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px;border-radius:var(--radius-card)}
.ve-card__body{display:flex;flex-direction:column;gap:6px}
.ve-card__title{font-size:var(--type-heading-sm-size);line-height:1.35;font-weight:var(--weight-semibold);color:var(--color-ink);letter-spacing:-.01em}
.ve-card__sub{font-size:var(--type-body-sm-size);line-height:1.5;color:var(--color-muted)}
.ve-card__foot{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);margin-top:2px}

/* ---------- content bits ---------- */
.ve-section-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-lg);margin-bottom:var(--space-xl)}
.ve-section-header__text{display:flex;flex-direction:column;gap:10px;max-width:60ch}
.ve-badge{display:inline-flex;align-items:center;gap:6px;height:26px;padding-inline:10px;border-radius:var(--radius-full);font-size:var(--type-badge-size);line-height:1;font-weight:var(--type-badge-weight);letter-spacing:var(--type-badge-tracking);background:var(--color-surface-strong);color:var(--color-body)}
.ve-badge--brand{background:var(--color-primary-subtle);color:var(--color-primary-active)}
.ve-badge--solid{background:var(--color-primary);color:var(--color-on-primary)}
.ve-badge--onphoto{background:rgba(255,255,255,.94);color:var(--color-ink)}
.ve-badge--success{background:var(--color-success-subtle);color:var(--color-success)}
.ve-badge--outline{background:none;border:1px solid var(--color-hairline);color:var(--color-body)}
.ve-tag{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding-inline:16px;border:1px solid var(--color-hairline);border-radius:var(--radius-full);background:var(--color-canvas);font-size:var(--type-body-sm-size);color:var(--color-body);cursor:pointer;transition:var(--transition-control)}
.ve-tag:hover{border-color:var(--color-ink);color:var(--color-ink)}
.ve-tag.is-selected{background:var(--color-ink);border-color:var(--color-ink);color:#fff}
.ve-tag--static{cursor:default}
.ve-tag--static:hover{border-color:var(--color-hairline);color:var(--color-body)}
.ve-rating{display:inline-flex;align-items:center;gap:5px;font-size:var(--type-body-sm-size);color:var(--color-ink)}
.ve-rating__score{font-weight:var(--weight-semibold)}
.ve-rating__count{color:var(--color-muted)}
.ve-price{display:inline-flex;align-items:baseline;gap:6px}
.ve-price__from{font-size:var(--type-caption-size);color:var(--color-muted)}
.ve-price__amount{font-size:var(--type-body-md-size);font-weight:var(--weight-semibold);color:var(--color-ink)}
.ve-price__unit{font-size:var(--type-caption-size);color:var(--color-muted)}
.ve-price--lg .ve-price__amount{font-size:var(--type-heading-lg-size);letter-spacing:-.02em}
.ve-price--strike{text-decoration:line-through;color:var(--color-muted-soft)}
.ve-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:var(--type-body-sm-size);color:var(--color-muted)}
.ve-meta__dot{width:3px;height:3px;border-radius:var(--radius-full);background:var(--color-border-strong)}
.ve-meta__item{display:inline-flex;align-items:center;gap:6px}
.ve-inclusions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;margin:0;padding:0;list-style:none}
.ve-inclusion{display:flex;align-items:center;gap:8px;font-size:var(--type-body-sm-size);color:var(--color-body)}
.ve-inclusion svg{flex:none;color:var(--color-success)}
.ve-divider{height:1px;background:var(--color-hairline-soft);border:none;margin:0}

/* ---------- forms ---------- */
.ve-field{display:flex;flex-direction:column;gap:6px}
.ve-label{font-size:var(--type-body-sm-size);font-weight:var(--weight-semibold);color:var(--color-ink)}
.ve-label__optional{font-weight:var(--weight-regular);color:var(--color-muted-soft)}
.ve-input{width:100%;min-height:48px;padding:12px 14px;background:var(--color-canvas);border:1px solid var(--color-hairline);border-radius:var(--radius-input);font-size:var(--type-body-md-size);color:var(--color-ink);transition:var(--transition-control)}
.ve-input::placeholder{color:var(--color-muted-soft)}
.ve-input:hover{border-color:var(--color-border-strong)}
.ve-input:focus{border-color:var(--color-ink);box-shadow:0 0 0 3px rgba(31,29,27,.08);outline:none}
.ve-input:disabled{background:var(--color-surface-strong);color:var(--color-muted-soft);cursor:not-allowed}
.ve-input.is-error{border-color:var(--color-error)}
.ve-input.is-error:focus{box-shadow:0 0 0 3px rgba(176,44,63,.12)}
.ve-input.is-success{border-color:var(--color-success)}
.ve-input--textarea{min-height:132px;resize:vertical;line-height:1.55}
.ve-input--with-icon{padding-left:42px}
.ve-inputwrap{position:relative;display:flex;align-items:center}
.ve-inputwrap__icon{position:absolute;left:14px;display:flex;color:var(--color-muted);pointer-events:none}
.ve-inputwrap__chevron{position:absolute;right:14px;display:flex;color:var(--color-muted);pointer-events:none}
select.ve-input{appearance:none;padding-right:38px;cursor:pointer}
.ve-help{font-size:var(--type-caption-size);color:var(--color-muted)}
.ve-msg{display:flex;align-items:center;gap:6px;font-size:var(--type-caption-size)}
.ve-msg--error{color:var(--color-error)}
.ve-msg--success{color:var(--color-success)}
.ve-stepper{display:flex;align-items:center;gap:var(--space-base)}
.ve-stepper__btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--radius-full);border:1px solid var(--color-border-strong);background:var(--color-canvas);color:var(--color-ink);cursor:pointer;transition:var(--transition-control)}
.ve-stepper__btn:hover:not(:disabled){border-color:var(--color-ink)}
.ve-stepper__btn:disabled{color:var(--color-hairline);border-color:var(--color-hairline-soft);cursor:not-allowed}
.ve-stepper__value{min-width:22px;text-align:center;font-size:var(--type-body-md-size);font-weight:var(--weight-medium);color:var(--color-ink);font-variant-numeric:tabular-nums}
.ve-stepper-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);padding-block:var(--space-base)}
.ve-stepper-row+.ve-stepper-row{border-top:var(--border-hairline-soft)}
.ve-cal{display:flex;flex-direction:column;gap:var(--space-md)}
.ve-cal__head{display:flex;align-items:center;justify-content:space-between}
.ve-cal__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.ve-cal__dow{font-size:var(--type-caption-size);color:var(--color-muted-soft);text-align:center;padding-block:6px}
.ve-cal__day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border:none;background:none;border-radius:var(--radius-full);font-size:var(--type-body-sm-size);color:var(--color-ink);cursor:pointer;transition:var(--transition-control)}
.ve-cal__day:hover:not(:disabled){background:var(--color-surface-strong)}
.ve-cal__day.is-selected{background:var(--color-ink);color:#fff}
.ve-cal__day.is-in-range{background:var(--color-surface-strong);border-radius:var(--radius-xs)}
.ve-cal__day:disabled{color:var(--color-hairline);cursor:not-allowed}

/* ---------- feedback ---------- */
.ve-alert{display:flex;gap:var(--space-md);padding:14px 16px;border-radius:var(--radius-md);border:1px solid transparent;font-size:var(--type-body-sm-size);line-height:1.5}
.ve-alert__icon{flex:none;margin-top:1px}
.ve-alert__title{font-weight:var(--weight-semibold);color:var(--color-ink)}
.ve-alert--info{background:var(--color-info-subtle);border-color:rgba(44,95,122,.18);color:var(--color-body)}
.ve-alert--info .ve-alert__icon{color:var(--color-info)}
.ve-alert--success{background:var(--color-success-subtle);border-color:rgba(47,125,92,.18);color:var(--color-body)}
.ve-alert--success .ve-alert__icon{color:var(--color-success)}
.ve-alert--warning{background:var(--color-warning-subtle);border-color:rgba(156,106,21,.2);color:var(--color-body)}
.ve-alert--warning .ve-alert__icon{color:var(--color-warning)}
.ve-alert--error{background:var(--color-error-subtle);border-color:rgba(176,44,63,.18);color:var(--color-body)}
.ve-alert--error .ve-alert__icon{color:var(--color-error)}
.ve-toast{display:flex;align-items:flex-start;gap:var(--space-md);min-width:280px;max-width:420px;padding:14px 16px;border-radius:var(--radius-md);background:var(--color-surface-inverse);color:var(--color-on-inverse);box-shadow:var(--elevation-floating);font-size:var(--type-body-sm-size);animation:ve-toast-in var(--duration-slow) var(--ease-entrance)}
.ve-toast__title{font-weight:var(--weight-semibold);color:#fff}
.ve-toast__close{margin-left:auto;background:none;border:none;color:rgba(255,255,255,.7);cursor:pointer;padding:0;display:flex}
.ve-toast__close:hover{color:#fff}
.ve-toast--success .ve-toast__icon{color:#7FD3AC}
.ve-toast--error .ve-toast__icon{color:#F0A0AA}
@keyframes ve-toast-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.ve-modal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--space-lg)}
.ve-modal__scrim{position:absolute;inset:0;background:var(--color-scrim);animation:ve-fade var(--duration-base) var(--ease-standard)}
.ve-modal__panel{position:relative;width:100%;max-width:560px;max-height:88vh;overflow:auto;background:var(--color-canvas);border-radius:var(--radius-lg);box-shadow:var(--elevation-floating);animation:ve-modal-in var(--duration-slow) var(--ease-entrance)}
.ve-modal__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-base);padding:var(--space-lg) var(--space-lg) 0}
.ve-modal__body{padding:var(--space-base) var(--space-lg) var(--space-lg);display:flex;flex-direction:column;gap:var(--space-base)}
.ve-modal__foot{display:flex;justify-content:flex-end;gap:var(--space-md);padding:0 var(--space-lg) var(--space-lg)}
@keyframes ve-fade{from{opacity:0}to{opacity:1}}
@keyframes ve-modal-in{from{opacity:0;transform:translateY(14px) scale(.99)}to{opacity:1;transform:none}}
.ve-skeleton{background:linear-gradient(90deg,var(--color-surface-strong) 0%,var(--ve-stone-200) 40%,var(--color-surface-strong) 80%);background-size:200% 100%;animation:ve-shimmer 1.4s linear infinite;border-radius:var(--radius-sm)}
.ve-skeleton--image{border-radius:var(--radius-image)}
.ve-skeleton--text{height:12px;border-radius:var(--radius-full)}
@keyframes ve-shimmer{from{background-position:120% 0}to{background-position:-40% 0}}
.ve-loading{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);padding:var(--space-2xl);color:var(--color-muted);font-size:var(--type-body-sm-size)}
.ve-loading__spinner{width:22px;height:22px;border-radius:var(--radius-full);border:2px solid var(--color-hairline);border-top-color:var(--color-primary);animation:ve-spin 700ms linear infinite}

/* ---------- navigation ---------- */
.ve-nav{position:sticky;top:0;z-index:40;background:var(--color-canvas);border-bottom:1px solid transparent;transition:border-color var(--duration-base) var(--ease-standard),box-shadow var(--duration-base) var(--ease-standard)}
.ve-nav.is-stuck{border-bottom-color:var(--color-hairline-soft)}
.ve-nav__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);height:var(--nav-height)}
.ve-nav__links{display:flex;align-items:center;gap:var(--space-xl)}
.ve-nav__actions{display:flex;align-items:center;gap:var(--space-md)}
.ve-navlink{position:relative;font-size:var(--type-nav-size);line-height:1;font-weight:var(--type-nav-weight);color:var(--color-body);text-decoration:none;padding-block:8px;transition:color var(--duration-base) var(--ease-standard)}
.ve-navlink:hover{color:var(--color-ink);text-decoration:none}
.ve-navlink::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;background:var(--color-ink);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-base) var(--ease-standard)}
.ve-navlink:hover::after{transform:scaleX(1)}
.ve-navlink.is-active{color:var(--color-ink)}
.ve-navlink.is-active::after{transform:scaleX(1);background:var(--color-primary)}
.ve-nav--onphoto{background:none;position:absolute;left:0;right:0}
.ve-nav--onphoto .ve-navlink{color:rgba(255,255,255,.9)}
.ve-nav--onphoto .ve-navlink:hover{color:#fff}
.ve-nav--onphoto .ve-navlink::after{background:#fff}
.ve-drawer{position:fixed;inset:0;z-index:90;pointer-events:none}
.ve-drawer__scrim{position:absolute;inset:0;background:var(--color-scrim);opacity:0;transition:opacity var(--duration-slow) var(--ease-standard)}
.ve-drawer__panel{position:absolute;top:0;right:0;bottom:0;width:min(86vw,360px);background:var(--color-canvas);box-shadow:var(--elevation-floating);transform:translateX(100%);transition:transform var(--duration-slow) var(--ease-entrance);display:flex;flex-direction:column}
.ve-drawer.is-open{pointer-events:auto}
.ve-drawer.is-open .ve-drawer__scrim{opacity:1}
.ve-drawer.is-open .ve-drawer__panel{transform:none}
.ve-drawer__head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-base) var(--gutter-mobile);border-bottom:var(--border-hairline-soft)}
.ve-drawer__nav{display:flex;flex-direction:column;padding:var(--space-sm) var(--gutter-mobile)}
.ve-drawer__link{display:flex;align-items:center;min-height:52px;font-size:var(--type-body-lg-size);color:var(--color-ink);text-decoration:none;border-bottom:var(--border-hairline-soft)}
.ve-drawer__link:hover{color:var(--color-primary);text-decoration:none}
.ve-drawer__foot{margin-top:auto;display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg) var(--gutter-mobile)}
.ve-tabs{display:flex;gap:var(--space-lg);border-bottom:var(--border-hairline-soft);overflow-x:auto;scrollbar-width:none}
.ve-tabs::-webkit-scrollbar{display:none}
.ve-tab{position:relative;padding:14px 2px;border:none;background:none;font-size:var(--type-body-md-size);font-weight:var(--weight-medium);color:var(--color-muted);white-space:nowrap;cursor:pointer;transition:color var(--duration-base) var(--ease-standard)}
.ve-tab:hover{color:var(--color-ink)}
.ve-tab.is-active{color:var(--color-ink)}
.ve-tab.is-active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--color-ink);border-radius:var(--radius-full)}
.ve-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:var(--type-caption-size);color:var(--color-muted)}
.ve-crumbs a{color:var(--color-muted);text-decoration:none}
.ve-crumbs a:hover{color:var(--color-ink);text-decoration:underline}
.ve-crumbs__sep{color:var(--color-border-strong)}
.ve-crumbs__current{color:var(--color-ink)}
.ve-pagination{display:flex;align-items:center;gap:var(--space-sm)}
.ve-page-btn{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding-inline:6px;border:1px solid var(--color-hairline);border-radius:var(--radius-full);background:var(--color-canvas);font-size:var(--type-body-sm-size);color:var(--color-body);cursor:pointer;transition:var(--transition-control)}
.ve-page-btn:hover:not(:disabled){border-color:var(--color-ink);color:var(--color-ink)}
.ve-page-btn.is-active{background:var(--color-ink);border-color:var(--color-ink);color:#fff}
.ve-page-btn:disabled{color:var(--color-hairline);cursor:not-allowed}
.ve-page-ellipsis{color:var(--color-muted-soft);padding-inline:2px}

/* ---------- footer ---------- */
.ve-footer{background:var(--color-surface-soft);border-top:var(--border-hairline-soft);padding-block:var(--space-3xl) var(--space-xl)}
.ve-footer__cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr 1.2fr;gap:var(--space-xl)}
.ve-footer__heading{font-size:var(--type-micro-size);font-weight:var(--type-micro-weight);letter-spacing:var(--type-micro-tracking);text-transform:uppercase;color:var(--color-muted-soft);margin-bottom:var(--space-base)}
.ve-footer__list{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}
.ve-footer-link{font-size:var(--type-body-sm-size);color:var(--color-body);text-decoration:none}
.ve-footer-link:hover{color:var(--color-primary);text-decoration:none}
.ve-footer__bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-md);margin-top:var(--space-2xl);padding-top:var(--space-lg);border-top:var(--border-hairline-soft);font-size:var(--type-caption-size);color:var(--color-muted)}
.ve-contact-line{display:flex;align-items:center;gap:10px;font-size:var(--type-body-sm-size);color:var(--color-ink);text-decoration:none}
.ve-contact-line svg{color:var(--color-muted)}
.ve-contact-line:hover{color:var(--color-primary);text-decoration:none}

/* ---------- responsive ---------- */
@media (max-width:1128px){
  .ve-container{padding-inline:var(--gutter-tablet)}
  .ve-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ve-grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ve-section{padding-block:var(--space-3xl)}
  .ve-footer__cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xl)}
  :root{--type-display-xl-size:44px;--type-display-lg-size:38px;--type-display-md-size:32px}
}
@media (max-width:744px){
  .ve-container{padding-inline:var(--gutter-mobile)}
  .ve-nav__inner{height:var(--nav-height-mobile)}
  .ve-section,.ve-section--compact{padding-block:var(--space-section-mobile)}
  .ve-grid--2,.ve-grid--3,.ve-grid--4{grid-template-columns:minmax(0,1fr)}
  .ve-section-header{flex-direction:column;align-items:flex-start;margin-bottom:var(--space-lg)}
  .ve-footer__cols{grid-template-columns:minmax(0,1fr);gap:var(--space-lg)}
  .ve-inclusions{grid-template-columns:minmax(0,1fr)}
  :root{--type-display-xl-size:34px;--type-display-lg-size:30px;--type-display-md-size:26px;--type-display-sm-size:22px;--type-heading-lg-size:21px}
}

/* ---------- responsive visibility ---------- */
.ve-show-mobile{display:none!important}
@media (max-width:744px){
  .ve-hide-mobile{display:none!important}
  .ve-show-mobile{display:inline-flex!important}
}
@media (max-width:420px){.ve-hide-tablet{display:none!important}}
.ve-only-mobile{display:none}
@media (max-width:744px){.ve-only-mobile{display:block}}
