/* FamilyTrip Paris / ivory theme 2026-10-14.
   Shared visual layer only. Preserve destination imagery, interactive state, and trip logic. */
:root{
  --ft-paper:#FAF7F1;--ft-sand:#F3EDE4;--ft-ink:#243449;
  --ft-forest:#1F3354;--ft-clay:#C99069;--ft-line:#E3D8C3;
  --ft-font-display:"Instrument Serif",Georgia,serif;
  --ft-font-body:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
}
html{color-scheme:light}
body.ft-brand-aligned{background:#FAF7F1;color:#243449;font-family:var(--ft-font-body)}
.ft-brand-aligned :is(h1,h2,h3,.disp){font-family:var(--ft-font-display)}
.ft-brand-aligned :is(button,input,select,textarea){font-family:var(--ft-font-body)}
.ft-brand-aligned :is(button,.primary,.btn-primary,[class*="primary-cta"]){transition:background-color .18s ease,border-color .18s ease,box-shadow .18s ease}
.ft-brand-aligned :is(a,button,input,select,textarea,summary):focus-visible{outline:3px solid #C99069;outline-offset:3px}
.ft-brand-aligned :is(.ft-shell,.site-shell,.shared-shell) a{color:inherit}
@media (prefers-reduced-motion:reduce){.ft-brand-aligned *{transition-duration:0.01ms!important;animation-duration:0.01ms!important}}
/* In intentionally cinematic sections, don't force a light text colour.
   Use opaque light surfaces for non-photographic controls. */
.ft-brand-aligned :is(.trip-summary-card,.decision-card,.stay-card,.guide-card){border-radius:16px}
@media(max-width:640px){.ft-brand-aligned :is(button,.primary){min-height:44px}}

/* Editorial light pages: consistent surfaces and actions. */
.ft-brand-aligned :is(.ft-shell-header,.site-header,.shared-nav){font-family:var(--ft-font-body)}
.ft-brand-aligned :is(.ft-shell-header,.site-header,.shared-nav) a:focus-visible{border-radius:4px}
.ft-brand-aligned :is(.primary-button,.button-primary,.btn-primary,[data-cta="primary"]){
 background-color:#1F3354;color:#fff;border-color:#1F3354
}
.ft-brand-aligned :is(.primary-button,.button-primary,.btn-primary,[data-cta="primary"]):hover{background-color:var(--wl-ink,#0e1a2b);color:#fff}
/* Planner and discovery use dark photographic stages; preserve their
   foreground theme rather than painting dark stages with an ink colour. */
body.ft-brand-aligned.ft-editorial-planner{color:inherit}
body.ft-brand-aligned :is(.cinematic-builder,.cinematic-dream-card,.cinematic-dream-overlay,.cinematic-shell,.cinematic-stage){
 color:inherit
}

/* Luxury editorial polish: clear hierarchy, accessible light surfaces and calm controls. */
.ft-brand-aligned{
 --ft-lux-ink:var(--wl-ink,#0e1a2b);--ft-lux-muted:#5b6578;--ft-lux-forest:#1f3354;
 --ft-lux-border:#e3d8c3;--ft-lux-paper:#faf7f1;
 -webkit-font-smoothing:antialiased;
}
.ft-brand-aligned :is(h1,h2,h3){letter-spacing:-.028em}
.ft-brand-aligned :is(p,li,dd){text-wrap:pretty}
.ft-brand-aligned :is(input:not([type="checkbox"]):not([type="radio"]),textarea,select){
 border-radius:12px;
}
.ft-brand-aligned :is(input,textarea,select):focus-visible{
 outline:3px solid #ad704f;outline-offset:2px;
}
.ft-brand-aligned :is(.decision-card,.stay-card,.guide-card,.trip-summary-card){
 box-shadow:0 8px 30px rgba(22,36,58,.055);
}
.ft-brand-aligned :is(button,.btn-primary,.primary-button,.button-primary){
 font-weight:650;letter-spacing:.005em;
}
.ft-brand-aligned :is(.btn-primary,.primary-button,.button-primary,[data-cta="primary"]):not(:disabled){
 background:#1f3354;color:#fff;border-color:#1f3354;
}
.ft-brand-aligned :is(.btn-primary,.primary-button,.button-primary,[data-cta="primary"]):not(:disabled):hover{
 background:var(--wl-ink,#0e1a2b);color:#fff;border-color:var(--wl-ink,#0e1a2b);
 box-shadow:0 6px 18px rgba(22,36,58,.16);
}
.ft-brand-aligned :is(button,a,[role="button"]):focus-visible{
 outline:3px solid #ad704f;outline-offset:3px;
}
.ft-brand-aligned :is(button,[role="button"]):disabled{
 cursor:not-allowed;opacity:.55;box-shadow:none;
}
@media (pointer:coarse){
 .ft-brand-aligned :is(button,[role="button"],select){min-height:44px}
}

/* Resolve legacy late-loaded page styles that still reset body to Inter.
   The specificity and important declaration apply only to the shared font,
   leaving destination photography, colours and interactive states untouched. */
html body.ft-brand-aligned{font-family:var(--ft-font-body)!important}
