:root { --noel-red:#8d2f2c; --noel-gold:#c79a55; --noel-pine:#20372b; --noel-cream:#f5efe4; }
.christmas-page { background:#f7f4ed; }
.christmas-page .header { position:absolute; }
.noel-hero { position:relative; min-height:760px; margin-top:124px; display:flex; align-items:flex-end; color:#fff; overflow:hidden; background:#1d2e25; }
.noel-hero::before { content:""; position:absolute; inset:0; background:url('../img/noel-jardin.jpg') center 44%/cover no-repeat; transform:scale(1.02); }
.noel-hero::after { content:""; position:absolute; inset:0; background:linear-gradient(90deg,rgba(17,30,23,.9) 0%,rgba(17,30,23,.65) 45%,rgba(17,30,23,.18) 78%),linear-gradient(0deg,rgba(13,24,18,.78),transparent 55%); }
.noel-hero-inner { position:relative; z-index:1; width:min(1240px,calc(100% - 48px)); margin:0 auto; padding:110px 0 88px; }
.noel-breadcrumb { display:flex; gap:11px; align-items:center; margin-bottom:62px; font-size:.71rem; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.72); }
.noel-breadcrumb a { color:#fff; }
.noel-kicker,.noel-label { display:block; color:#e7c58e; font-size:.72rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; }
.noel-hero h1 { max-width:850px; margin:18px 0 24px; color:#fff; font-family:var(--font-serif); font-size:clamp(3.6rem,8vw,7rem); font-weight:400; line-height:.88; letter-spacing:-.045em; }
.noel-hero h1 em { display:block; color:#efd5ae; font-weight:400; }
.noel-hero p { max-width:660px; margin:0 0 34px; font-size:1.15rem; line-height:1.7; color:rgba(255,255,255,.88); }
.noel-hero-actions { display:flex; flex-wrap:wrap; gap:12px; }
.noel-button { display:inline-flex; align-items:center; justify-content:center; min-height:50px; padding:14px 24px; border:1px solid #f0d9b8; border-radius:7px; color:#20372b; background:#f0d9b8; font-size:.74rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; transition:.2s ease; }
.noel-button:hover { background:#fff; border-color:#fff; transform:translateY(-2px); }
.noel-button--ghost { color:#fff; background:transparent; border-color:rgba(255,255,255,.55); }
.noel-button--ghost:hover { color:#20372b; }
.noel-main { overflow:hidden; }
.noel-shell { width:min(1180px,calc(100% - 48px)); margin:0 auto; }
.noel-intro { display:grid; grid-template-columns:.82fr 1.18fr; gap:9vw; padding:110px 0 96px; }
.noel-intro h2,.noel-heading h2,.noel-stay h2 { margin:14px 0 0; font-family:var(--font-serif); font-size:clamp(2.6rem,5vw,4.7rem); line-height:1.02; font-weight:400; color:#18271f; }
.noel-intro-copy { font-size:1.06rem; line-height:1.85; color:#555c55; }
.noel-intro-copy p + p { margin-top:20px; }
.noel-traditions { padding:95px 0 110px; background:#20372b; color:#fff; }
.noel-heading { max-width:760px; margin-bottom:52px; }
.noel-heading h2 { color:inherit; }
.noel-heading p { max-width:650px; margin-top:20px; line-height:1.75; color:rgba(255,255,255,.68); }
.traditions-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.tradition { position:relative; display:grid; grid-template-rows:50px 68px 82px 1fr auto; min-height:320px; padding:30px; overflow:hidden; border:1px solid rgba(234,207,164,.22); border-radius:10px; background:linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.025)); transition:transform .28s ease,border-color .28s ease,background-color .28s ease; }
.tradition { color:inherit; text-decoration:none; }
.tradition:hover { color:inherit; }
.tradition-cta { position:relative; z-index:1; grid-row:5; align-self:end; margin-top:20px; color:#edc98e; font-size:.68rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.tradition::before { content:""; position:absolute; inset:0 auto 0 0; width:3px; background:linear-gradient(180deg,#e4bd7f,transparent 72%); opacity:.8; }
.tradition::after { content:attr(data-ornament); position:absolute; right:-12px; bottom:-28px; color:rgba(255,255,255,.035); font:italic 8.5rem/1 var(--font-serif); pointer-events:none; }
.tradition:nth-child(1)::after { content:"01"; }
.tradition:nth-child(2)::after { content:"02"; }
.tradition:nth-child(3)::after { content:"03"; }
.tradition:nth-child(4)::after { content:"04"; }
.tradition:hover { transform:translateY(-5px); border-color:rgba(234,207,164,.48); background-color:rgba(255,255,255,.035); }
.tradition-number { display:grid; place-items:center; width:50px; height:50px; margin:0; border:1px solid rgba(228,189,127,.52); border-radius:50%; color:#edc98e; background:rgba(8,28,20,.22); font:italic 1.2rem var(--font-display); }
.tradition h3 { position:relative; z-index:1; grid-row:3; align-self:start; margin:0; color:#fff; font-family:var(--font-display); font-size:2.05rem; font-weight:400; line-height:1.04; letter-spacing:-.02em; }
.tradition p { position:relative; z-index:1; grid-row:4; margin:0; color:rgba(255,255,255,.72); line-height:1.68; font-size:.91rem; }
.noel-local { display:grid; grid-template-columns:1.05fr .95fr; min-height:610px; background:#efe7d9; }
.noel-local-image { min-height:500px; background:url('../img/datcha-neige.jpg') center/cover no-repeat; }
.noel-local-copy { display:flex; flex-direction:column; justify-content:center; padding:72px 8vw; }
.noel-local-copy h2 { margin:14px 0 22px; color:#1d3025; font:400 clamp(2.5rem,4vw,4.2rem)/1 var(--font-serif); }
.noel-local-copy p { line-height:1.75; color:#555b55; }
.noel-date { display:flex; gap:18px; align-items:center; margin:28px 0; padding:20px 0; border-top:1px solid #cfc3b0; border-bottom:1px solid #cfc3b0; }
.noel-date strong { color:#8d2f2c; font:400 2.1rem var(--font-serif); }
.noel-date span { font-size:.78rem; line-height:1.45; letter-spacing:.06em; text-transform:uppercase; }
.noel-dates { padding:105px 0; background:#fff; }
.dates-table-wrap { margin-top:42px; overflow-x:auto; border:1px solid #d8d7cf; border-radius:8px; }
.dates-table { width:100%; border-collapse:collapse; min-width:760px; }
.dates-table th { padding:15px 20px; background:#20372b; color:#fff; text-align:left; font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; }
.dates-table td { padding:18px 20px; border-bottom:1px solid #e4e2da; color:#555b55; font-size:.9rem; vertical-align:top; }
.dates-table tr:last-child td { border-bottom:0; }
.dates-table strong { color:#20372b; font:400 1.14rem var(--font-serif); }
.dates-table a { color:#8d2f2c; font-weight:700; text-decoration:underline; text-underline-offset:3px; }
.dates-footnote { margin-top:15px; color:#71756f; font-size:.8rem; line-height:1.6; }
.market-section { padding:110px 0; background:#f7f4ed; }
.market-intro { display:flex; align-items:end; justify-content:space-between; gap:40px; margin-bottom:34px; }
.market-intro .noel-heading { margin:0; }
.market-intro .noel-heading p { color:#666b65; }
.market-note { max-width:330px; padding-left:20px; border-left:2px solid #c79a55; color:#656a64; font-size:.84rem; line-height:1.6; }
.market-filters { display:flex; flex-wrap:wrap; gap:8px; margin:0 0 24px; }
.market-filter { min-height:44px; padding:10px 17px; border:1px solid #bdc1b8; border-radius:7px; background:transparent; color:#293b31; font:600 .72rem var(--font-sans); letter-spacing:.06em; text-transform:uppercase; cursor:pointer; }
.market-filter:hover,.market-filter.is-active { color:#fff; background:#293f32; border-color:#293f32; }
.map-layout { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(310px,.65fr); height:660px; border:1px solid #c8c9c1; border-radius:8px; overflow:hidden; background:#fff; }
#christmas-map { min-height:520px; z-index:1; }
.market-panel { overflow:auto; border-left:1px solid #d4d3ca; background:#fff; }
.market-result-count { position:sticky; top:0; z-index:2; padding:17px 20px; background:#20372b; color:#fff; font-size:.72rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; }
.market-card { width:100%; padding:21px 20px; border:0; border-bottom:1px solid #e2e0d8; border-radius:0; background:#fff; color:inherit; text-align:left; cursor:pointer; }
.market-card:hover,.market-card.is-active { background:#f3ecdf; }
.market-card-top { display:flex; justify-content:space-between; gap:14px; align-items:start; }
.market-card h3 { margin:0; color:#1f3127; font:400 1.35rem/1.1 var(--font-serif); }
.market-distance { flex:none; color:#8d2f2c; font-size:.72rem; font-weight:700; }
.market-card p { margin:7px 0 0; color:#666b65; font-size:.82rem; line-height:1.5; }
.market-card small { display:block; margin-top:9px; color:#8a6940; font-weight:700; }
.leaflet-popup-content-wrapper { border-radius:7px; }
.leaflet-popup-tip { border-radius:2px; }
.leaflet-popup-content { min-width:210px; margin:18px; font-family:var(--font-sans); line-height:1.5; }
.leaflet-popup-content strong { display:block; color:#20372b; font:400 1.2rem var(--font-serif); }
.leaflet-popup-content a { display:inline-block; margin-top:8px; color:#8d2f2c; font-weight:700; text-decoration:underline; text-underline-offset:3px; }
.market-marker { display:grid; place-items:center; width:30px!important; height:30px!important; margin:-15px 0 0 -15px!important; border:2px solid #fff; border-radius:50%; background:#8d2f2c; color:#fff; box-shadow:0 3px 14px rgba(0,0,0,.28); font-size:14px; }
.market-marker--home { width:38px!important; height:38px!important; margin:-19px 0 0 -19px!important; background:#20372b; }
.noel-tips { padding:100px 0; background:#fff; }
.tips-grid { display:grid; grid-template-columns:repeat(3,1fr); margin-top:45px; border:1px solid #d9d8cf; border-radius:8px; overflow:hidden; }
.tip { padding:32px; border-right:1px solid #d9d8cf; }
.tip:last-child { border-right:0; }
.tip span { color:#aa7948; font-size:.7rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; }
.tip h3 { margin:14px 0 10px; color:#20372b; font:400 1.55rem var(--font-serif); }
.tip p { color:#646963; font-size:.91rem; line-height:1.7; }
.noel-routes { padding:105px 0; background:#efe7d9; }
.routes-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:42px; }
.route-card { padding:32px; border:1px solid #cec4b4; border-radius:8px; background:rgba(255,255,255,.45); }
.route-card span { color:#8d2f2c; font-size:.7rem; font-weight:700; letter-spacing:.15em; text-transform:uppercase; }
.route-card h3 { margin:13px 0 14px; color:#20372b; font:400 1.65rem/1.12 var(--font-serif); }
.route-card p { color:#5d625d; line-height:1.7; font-size:.91rem; }
.route-card a { display:inline-block; margin-top:18px; color:#20372b; font-weight:700; text-decoration:underline; text-underline-offset:4px; }
.noel-faq { padding:105px 0; background:#f7f4ed; }
.noel-faq-list { max-width:900px; margin:42px auto 0; border-top:1px solid #cccec7; }
.noel-faq details { border-bottom:1px solid #cccec7; }
.noel-faq summary { display:flex; justify-content:space-between; gap:24px; padding:23px 4px; color:#20372b; cursor:pointer; font-weight:700; list-style:none; }
.noel-faq summary::-webkit-details-marker { display:none; }
.noel-faq summary::after { content:'+'; flex:none; color:#8d2f2c; font:400 1.4rem var(--font-serif); }
.noel-faq details[open] summary::after { content:'−'; }
.noel-faq details p { padding:0 4px 24px; color:#626761; line-height:1.75; }
.noel-faq a { color:#35513f; font-weight:700; text-decoration:underline; text-underline-offset:3px; }
.noel-sources { padding:32px 0 90px; background:#fff; }
.noel-sources p { padding-top:24px; border-top:1px solid #dddcd4; color:#6d716c; font-size:.78rem; line-height:1.65; }
.noel-sources a { color:#354f3e; text-decoration:underline; text-underline-offset:3px; }
.noel-stay { display:flex; align-items:center; justify-content:space-between; gap:40px; padding:64px 70px; margin:0 auto 110px; border-radius:8px; background:#20372b; color:#fff; }
.noel-stay h2 { max-width:680px; margin:0; color:#fff; }
.noel-stay p { margin-top:12px; color:rgba(255,255,255,.7); }
@media(max-width:960px){.traditions-grid{grid-template-columns:repeat(2,1fr)}.noel-local{grid-template-columns:1fr}.map-layout{grid-template-columns:1fr;height:auto}.market-panel{max-height:460px;border-left:0;border-top:1px solid #d4d3ca}.tips-grid,.routes-grid{grid-template-columns:1fr}.tip{border-right:0;border-bottom:1px solid #d9d8cf}.tip:last-child{border-bottom:0}.market-intro{align-items:start;flex-direction:column}}
@media(max-width:768px){.christmas-page .header{position:absolute}.noel-hero{margin-top:120px;min-height:650px}.noel-hero-inner,.noel-shell{width:min(100% - 32px,1180px)}.noel-hero-inner{padding:70px 0 58px}.noel-breadcrumb{margin-bottom:42px}.noel-hero h1{font-size:clamp(3.2rem,16vw,5rem)}.noel-intro{grid-template-columns:1fr;gap:28px;padding:72px 0}.noel-traditions,.market-section,.noel-tips{padding:72px 0}.traditions-grid{grid-template-columns:1fr}.tradition{grid-template-rows:50px 42px auto auto auto;min-height:0}.tradition h3{margin-bottom:18px}.noel-local-copy{padding:58px 24px}.noel-local-image{min-height:360px}.market-note{max-width:none}.map-layout{margin:0 -16px;border-left:0;border-right:0}#christmas-map{min-height:480px}.market-filters{flex-wrap:nowrap;overflow-x:auto;padding-bottom:8px}.market-filter{flex:none}.noel-stay{align-items:flex-start;flex-direction:column;padding:42px 24px;margin-bottom:72px}}
@media(prefers-reduced-motion:reduce){.noel-hero::before{transform:none}.noel-button{transition:none}}

/* Shared serif and calmer editorial scale. */
.noel-intro h2,.noel-heading h2,.noel-stay h2 { font-family:var(--font-display);font-size:clamp(2.1rem,3.9vw,3.45rem);line-height:1.12;letter-spacing:-.025em; }
.noel-hero h1 { font-family:var(--font-display);line-height:1.03; }
.noel-traditions .noel-heading p { color:#d0d9ce; }
.tradition p { color:#d5ded3; }
.tradition h3 { font-size:clamp(1.6rem,2.5vw,2rem);line-height:1.15; }
.christmas-page .header { background:var(--cream); }
.christmas-page .nav-logo-text,.christmas-page .nav-link { color:var(--sage-deep); }
.christmas-page .nav-logo-sub { color:var(--warm); }
.christmas-page .nav-toggle span { background:var(--sage-deep); }
