/* Journey extension for existing public pages. Presentation only; payment widgets excluded.
   Existing IDs, forms, scripts, validation, visibility and booking flow remain authoritative. */
:root {
    --jp-navy: #0f1f5c;
    --jp-blue: #1e3c96;
    --jp-sky: #1ea5f0;
    --jp-ink: #16213d;
    --jp-muted: #5d6b8a;
    --jp-bg: #f5f8fd;
    --jp-white: #fff;
    --jp-line: #dce6f5;
    --jp-tint: #ebf3fd;
    --jp-radius: 18px;
    --jp-field-radius: 12px;
    --jp-space: 24px;
    --jp-shadow: 0 6px 26px rgba(30,60,150,.055);
    --jp-focus: 0 0 0 3px rgba(30,165,240,.22);
}
@media screen {
body.journey-page { background: var(--jp-bg); color: var(--jp-ink); font-family: Cairo,system-ui,sans-serif; }
body.journey-page .site-nav { background: var(--jp-white); border-bottom: 1px solid var(--jp-line); box-shadow: none; }
body.journey-page .site-nav > .container { gap: 16px; flex-wrap: wrap; }
body.journey-page .site-nav .brand-img { object-fit: contain; max-width: 180px; height: auto; max-height: 38px; }
body.journey-page .site-nav .nav-link-c { color: var(--jp-ink); border-radius: 8px; font-size: 13px; }
body.journey-page .site-nav .nav-link-c:hover,
body.journey-page .site-nav .nav-link-c.active { background: var(--jp-tint); color: var(--jp-blue); }
body.journey-page :where(.btn,.aa-btn):not(:where(#targetElement *, .mysr-form *)) { border-radius: var(--jp-field-radius); min-height: 44px; font-weight: 700; }
body.journey-page :where(.btn-primary,.btn-cta):not(:where(#targetElement *, .mysr-form *)) {
    --bs-btn-bg: var(--jp-blue); --bs-btn-border-color: var(--jp-blue);
    --bs-btn-hover-bg: var(--jp-navy); --bs-btn-hover-border-color: var(--jp-navy);
    background: var(--jp-blue); border-color: var(--jp-blue); color: var(--jp-white); box-shadow: none;
}
body.journey-page :where(.btn-primary,.btn-cta):hover:not(:where(#targetElement *, .mysr-form *)) { background: var(--jp-navy); color: var(--jp-white); transform: none; }
body.journey-page .btn-outline-primary { --bs-btn-color: var(--jp-blue); --bs-btn-border-color: var(--jp-blue); --bs-btn-hover-bg: var(--jp-blue); --bs-btn-hover-border-color: var(--jp-blue); }
body.journey-page :where(.form-control,.form-select):not(:where(#targetElement *, .mysr-form *)) { min-height: 46px; border-color: var(--jp-line); border-radius: var(--jp-field-radius); font-size: 15px; }
body.journey-page :where(.form-control,.form-select):focus:not(:where(#targetElement *, .mysr-form *)) { border-color: var(--jp-sky); box-shadow: var(--jp-focus); }
body.journey-page :where(a,button,input,select,textarea):focus-visible:not(:where(#targetElement *, .mysr-form *)) { outline: 3px solid var(--jp-sky); outline-offset: 3px; }
body.journey-page :where(.form-label,.dt-lbl) { font-weight: 700; line-height: 1.8; }
body.journey-page :where(.b-card,.det-card,.card-c,.auth-card,.legal-card,.ct-card,.svc,.guide-card,.guide-tile,.res-card,.nf-card) {
    border-color: var(--jp-line); border-radius: var(--jp-radius); background: var(--jp-white); box-shadow: var(--jp-shadow);
}
body.journey-page :where(.b-card,.det-card,.card-c) { padding: clamp(18px,2vw,28px); }
body.journey-page :where(.row > *, .summary, .sum-rows, .guide-layout > *) { min-width: 0; }
body.journey-page :where(.sum-rows strong,.kv,.res-ref,.guide-body,.page-content) { overflow-wrap: anywhere; }
body.journey-page .table-responsive { max-width: 100%; }
body.journey-page .table { --bs-table-color: var(--jp-ink); --bs-table-border-color: var(--jp-line); }
body.journey-page .table th { background: var(--jp-tint); color: var(--jp-muted); padding: 14px 12px; font-size: 12px; }
body.journey-page .table td { padding: 16px 12px; font-size: 13px; }
body.journey-page .site-footer { background: var(--jp-navy); color: #dae6ff; border-top: 0; margin-top: 40px; }
body.journey-page .site-footer h6 { color: var(--jp-white); }

/* Editorial and service pages: the existing text and links are preserved. */
body.journey-content :where(.legal-hero,.page-hero,.guides-hero) {
    background: var(--jp-navy); color: var(--jp-white); text-align: start;
    padding: clamp(38px,5vw,64px) 0 68px;
}
body.journey-content :where(.legal-hero,.page-hero,.guides-hero) h1 { color: var(--jp-white); font-size: clamp(26px,3.2vw,42px); font-weight: 800; line-height: 1.5; }
body.journey-content :where(.legal-hero,.guides-hero) p { color: #dae6ff; opacity: 1; margin-inline: 0; max-width: 760px; line-height: 2; }
body.journey-content .legal-card { position: relative; padding: clamp(22px,3.5vw,46px); line-height: 2; }
body.journey-content .legal-card h2 { color: var(--jp-navy); font-size: 19px; margin-block: 28px 14px; }
body.journey-content :where(.val,.biz-box,.secure-box,.note-box) { border-radius: 12px; border-color: var(--jp-line); }
body.journey-content .val { background: var(--jp-tint); padding: 22px; }
body.journey-content :where(.ct-grid,.svc-grid,.steps) { gap: 20px; }
body.journey-content :where(.ct-card,.svc) { padding: 28px; }
body.journey-content .panel { border: 1px solid var(--jp-line); border-radius: var(--jp-radius); box-shadow: var(--jp-shadow); padding: clamp(22px,3vw,38px); }
body.journey-content :where(.legal-toc,.guides-filters) { border-radius: 12px; background: var(--jp-tint); }
body.journey-content .guide-tile:hover { border-color: var(--jp-sky); transform: translateY(-2px); }
body.journey-content :where(.guide-cta-band,.guides-cta) { background: var(--jp-navy); border-radius: var(--jp-radius); }
body.journey-content .guide-card-title { color: var(--jp-navy); }
body.journey-content .page-content { background: var(--jp-white); padding-block: 36px 56px; }

/* Hotel detail: gallery, room choices, summary and reviews retain their DOM. */
body.journey-detail .dt-searchbar { background: var(--jp-navy); padding-block: 22px; box-shadow: none; }
body.journey-detail .dt-searchbar .dt-lbl { color: #dae6ff; font-size: 12px; margin-bottom: 7px; }
body.journey-detail .dt-searchbar .btn-go { height: 46px; color: var(--jp-blue); border-radius: 12px; }
body.journey-detail .det-card { margin-bottom: 24px; }
body.journey-detail .det-card .d-flex.align-items-end { flex-wrap: wrap; min-width: 0; }
body.journey-detail :where(.room-card,.rg) { border-color: var(--jp-line); border-radius: 14px; box-shadow: none; }
body.journey-detail .rg-head { background: var(--jp-tint); }
body.journey-detail .btn-book { background: var(--jp-blue); border-color: var(--jp-blue); color: var(--jp-white); box-shadow: none; }
body.journey-detail .btn-book:hover { background: var(--jp-navy); transform: none; }
body.journey-detail :where(.rg-name,.price-lg,.rate-badge) { font-weight: 800; }
body.journey-detail .rate-badge { background: var(--jp-blue); border-radius: 12px; }
body.journey-detail .reg-cta { border-color: var(--jp-navy); border-radius: 14px; background: var(--jp-navy); }
body.journey-detail .rev-avatar { background: var(--jp-blue); box-shadow: none; }
body.journey-detail .amen { border-radius: 12px; }
body.journey-detail .amen-ic { color: var(--jp-blue); background: var(--jp-tint); }

/* Booking and flight forms: style only site-owned wrappers, not payment internals. */
body.journey-booking :where(.bk-head,.pay-head,.pay-box-h) { color: var(--jp-navy); }
body.journey-booking .step { font-size: 13px; gap: 10px; }
body.journey-booking .step.active { color: var(--jp-blue); }
body.journey-booking .step.active .n { background: var(--jp-blue); }
body.journey-booking .sum-card { border-top: 4px solid var(--jp-blue); }
body.journey-booking .sum-img { height: 200px; border-radius: 12px; }
body.journey-booking :where(.price,.svc-total-v) { color: var(--jp-blue); font-variant-numeric: tabular-nums; }
body.journey-booking :where(.pax-block,.pax-doc,.pay-box,.pay-card) { border-color: var(--jp-line); border-radius: 14px; box-shadow: none; }
body.journey-booking .pax-block { background: var(--jp-white); }
body.journey-booking :where(.pay-box-h,.svc-total) { background: var(--jp-tint); }
body.journey-booking .svc-list { grid-template-columns: repeat(auto-fit,minmax(min(100%,320px),1fr)); }
body.journey-booking .svc-row { border-color: var(--jp-line); }
body.journey-booking .svc-row:has(input:checked) { border-color: var(--jp-blue); }
body.journey-flights .fl-hero { background: var(--jp-navy); padding: 46px 0 94px; }
body.journey-flights .fl-hero h1 { font-size: clamp(26px,3vw,38px); font-weight: 800; }
body.journey-flights .fl-hero p { color: #dae6ff; line-height: 2; }
body.journey-flights :where(.fl-search,.fl-card,.fl-filters,.fl-cal) { border-color: var(--jp-line); border-radius: var(--jp-radius); box-shadow: var(--jp-shadow); }
body.journey-flights .fl-search { padding: 26px; }
body.journey-flights .trip-tabs { border-radius: 12px; background: var(--jp-tint); }
body.journey-flights .trip-tabs label { border-radius: 9px; }
body.journey-flights .trip-tabs input:checked + label { background: var(--jp-blue); }
body.journey-flights .fl-buy { background: var(--jp-tint); border-color: var(--jp-line); }
body.journey-flights .fl-card:hover { transform: none; border-color: var(--jp-sky); }
body.journey-flights .fl-legs { min-width: 0; }
body.journey-flights .ff-head { color: var(--jp-navy); }

/* Sign-in, registration, recovery and verification share the existing auth layout. */
body.journey-auth { background: var(--jp-bg); }
body.journey-auth .aa-hero::before { animation: none; transform: none; }
body.journey-auth .aa-hero::after { background: linear-gradient(180deg,rgba(15,31,92,.35),rgba(15,31,92,.90)); }
body.journey-auth .aa-sheet { background: var(--jp-white); }
body.journey-auth .aa-seg { background: var(--jp-tint); border-radius: 12px; }
body.journey-auth .aa-seg .on { background: var(--jp-blue); color: var(--jp-white); box-shadow: none; }
body.journey-auth .aa-field { border-radius: var(--jp-field-radius); background: var(--jp-bg); }
body.journey-auth .aa-field:not(.is-bad):not(.is-good) { border-color: var(--jp-line); }
body.journey-auth .aa-field:not(.is-bad):not(.is-good):focus-within { border-color: var(--jp-sky); box-shadow: var(--jp-focus); }
body.journey-auth .aa-btn { background: var(--jp-blue); box-shadow: none; border-radius: 12px; }
body.journey-auth .aa-btn:hover { background: var(--jp-navy); transform: none; }
body.journey-auth .aa-card-link { background: var(--jp-tint); border-color: var(--jp-line); border-radius: 14px; }
body.journey-auth .aa-stagger > * { animation: none; }
body.journey-page .auth-card { padding: clamp(24px,4vw,42px); border-top: 4px solid var(--jp-blue); }

/* Printable documents are themed on screen only; existing print rules are untouched. */
body.journey-document :where(.doc,.voucher,.receipt,.inv-sheet) { background: var(--jp-white); border-color: var(--jp-line); border-radius: var(--jp-radius); box-shadow: var(--jp-shadow); }
body.journey-document :where(.doc-head.hotel,.doc-head.flight,.v-head,.r-head,.inv-head) { background: var(--jp-navy); color: var(--jp-white); }
body.journey-document :where(.doc-body,.v-body,.r-body) { padding: clamp(20px,3vw,32px); }
body.journey-document :where(.v-row,.r-row,.r,.inv-parties,.inv-meta) { gap: 12px; overflow-wrap: anywhere; }
body.journey-document :where(.price-strip,.v-total) { background: var(--jp-tint); border-color: var(--jp-line); border-radius: 12px; }
body.journey-document :where(.r-amount,.price-strip .p) { color: var(--jp-blue); }
body.journey-document .inv-head :where(.inv-brand,.inv-title,.meta,.ml,.mv) { color: inherit; }
body.journey-document .inv-head { padding: 24px; border-radius: 12px; }
body.journey-document .inv-head :where(h1,small,.no) { color: inherit; }

/* Status pages and administrative sign-in retain all existing states. */
body.journey-status .nf-card { padding: clamp(24px,4vw,48px); }
body.journey-status .nf-code { color: var(--jp-blue); }
body.journey-status .res-card { border-top: 4px solid var(--jp-blue); }
body.journey-maintenance { background: var(--jp-navy); }
body.journey-maintenance .card { box-sizing: border-box; background: var(--jp-white); border: 1px solid var(--jp-line); box-shadow: var(--jp-shadow); border-radius: var(--jp-radius); }
body.journey-maintenance .card h1 { color: var(--jp-navy); }
body.journey-maintenance .card :where(p,.brand) { color: var(--jp-muted); }
body.journey-gate { --gate-card: var(--jp-white); --gate-line: var(--jp-line); --gate-ink: var(--jp-ink); --gate-muted: var(--jp-muted); --gate-accent: var(--jp-blue); background: var(--jp-navy); }
body.journey-gate .gate-card { background: var(--jp-white); color: var(--jp-ink); box-shadow: none; padding: 34px 28px; }
body.journey-gate .gate-ic { background: var(--jp-tint); color: var(--jp-blue); }
body.journey-gate .gate-card .form-control,
body.journey-gate .gate-card .form-control:focus { background: var(--jp-bg); color: var(--jp-ink); }

@media(min-width:1200px) {
    body.journey-auth .aa-sheet { padding-block: 48px; }
    body.journey-content .legal-card { max-width: 1040px; }
}
@media(max-width:991.98px) {
    body.journey-page .site-nav > .container > .d-flex { flex-wrap: wrap; justify-content: flex-end; gap: 4px; }
    body.journey-flights .fl-search { padding: 20px; }
}
@media(max-width:575.98px) {
    body.journey-page .site-nav > .container { gap: 12px; }
    body.journey-page .site-nav .brand-img { max-width: 150px; }
    body.journey-page :where(.form-control,.form-select):not(:where(#targetElement *, .mysr-form *)) { font-size: 16px; }
    body.journey-page :where(.b-card,.det-card,.card-c,.legal-card) { border-radius: 14px; }
    body.journey-page .c2d-gallery:is(.g3,.g4,.g5) { grid-template-rows: 200px 140px; }
    body.journey-page .c2d-gallery:is(.g3,.g4,.g5) > div:first-child { height: 100%; }
    body.journey-booking .container > .d-flex.gap-4 { gap: 12px !important; flex-wrap: wrap; }
    body.journey-booking .step { font-size: 12px; }
    body.journey-booking .sum-img { height: 160px; }
    body.journey-booking .svc-row { flex-wrap: wrap; }
    body.journey-flights .fl-search { padding: 18px 14px; }
    body.journey-flights .fl-buy { min-width: 0; flex-basis: 100%; border-inline-start: 0; border-top: 1px solid var(--jp-line); }
    body.journey-flights .leg { gap: 8px; }
    body.journey-flights .leg-air { min-width: 52px; }
    body.journey-flights .t-big { font-size: 16px; }
    body.journey-content .legal-hero { padding-bottom: 60px; }
    body.journey-content :where(.ct-card,.svc) { padding: 22px; }
    body.journey-document :where(.v-row,.r-row,.r,.price-strip) { flex-wrap: wrap; }
    body.journey-document .inv-parties { grid-template-columns: 1fr; }
}
}
@media (prefers-reduced-motion: reduce) {
    body.journey-page :where(.aa-hero,.aa-stagger,.aa-stagger > *, .guide-tile,.fl-card,.ct-card,.btn),
    body.journey-page .aa-hero::before { animation: none !important; transition: none !important; }
}
