*{box-sizing:border-box}
body{margin:0;font-family:'Nunito','Segoe UI',system-ui,-apple-system,Roboto,Ubuntu,sans-serif;background:radial-gradient(circle at 30% 20%,#ffe8e8 0%,#ffd7d7 22%,#ffcaca 35%,#ffbfbf 45%,#ffb2b2 52%,#ff9fa3 60%,#ff8c8e 68%,#ff7680 76%,#ff5f6f 84%,#e8425c 92%,#d32649 100%),linear-gradient(160deg,#ffe19d,#ff9d9d);background-blend-mode:overlay;color:#240f0f;min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden;position:relative}
.site-footer{margin-top:auto;text-align:center;padding:1rem;font-size:.75rem;opacity:.6}
main{padding:1.5rem 1.25rem 3rem;max-width:1200px;margin:0 auto;width:100%}
.calendar-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));transition:filter .4s, opacity .4s;padding-top:.5rem}
.door{position:relative;height:130px;border-radius:18px;perspective:1000px;cursor:pointer;transform-style:preserve-3d;}
.door-inner{position:absolute;inset:0;border-radius:18px;overflow:hidden;background:linear-gradient(145deg,#fff,#fff7f7);border:3px solid rgba(179,0,45,.85);box-shadow:0 6px 18px rgba(0,0,0,.24),inset 0 0 18px rgba(255,255,255,.7);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.55rem;color:#b3002d;transition:transform var(--door-open-ms,1.6s) cubic-bezier(.68,-0.55,.27,1.55),box-shadow .5s;backface-visibility:hidden;}
.door-inner.has-thumb{background-size:cover;background-position:center;color:transparent;text-shadow:none;filter:brightness(.95) saturate(1.1)}
.door.locked .door-inner{filter:grayscale(.9) brightness(.88);opacity:.9}
.door.opened .door-inner{transform:rotateY(-155deg);}
.door .day-number{position:absolute;top:6px;left:10px;font-size:.75rem;font-weight:700;letter-spacing:.5px;color:#fff;background:linear-gradient(90deg,#b3002d,#d31642);padding:4px 8px;border-radius:24px;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.door img{width:100%;height:100%;object-fit:cover;display:none;border-radius:12px}
.door.opened img{display:block;animation:fadeIn .65s ease both .35s;object-fit:contain;background:#000}
/* Small thumbnail preview inside opened door */
.thumb-preview{position:absolute;right:10px;bottom:10px;width:86px;height:86px;border-radius:12px;overflow:hidden;border:2px solid #ffffffcc;box-shadow:0 8px 22px rgba(0,0,0,.35);display:none;z-index:3;background:#111}
.thumb-preview img{width:100%;height:100%;object-fit:cover;display:block}
.door.opened .thumb-preview{display:block}
.single-day .door .thumb-preview{right:12px;bottom:12px;width:120px;height:120px;border-radius:14px;border-width:3px}
@keyframes fadeIn{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
.door:not(.locked):hover .door-inner{box-shadow:0 10px 28px rgba(179,0,45,.55)}
.info-banner{margin:0 auto 1rem;max-width:680px;background:#fff3f6;padding:.75rem 1rem;border:1px solid #ffb3c7;border-radius:12px;font-size:.8rem;display:flex;align-items:center;gap:.75rem}
.info-banner strong{color:#b3002d}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.75);display:grid;place-items:center;padding:1.5rem}
.modal-content{background:#111;padding:0;border-radius:26px;max-width:min(95vw,860px);max-height:88vh;overflow:hidden;box-shadow:0 14px 48px rgba(0,0,0,.65);position:relative;border:3px solid #b3002d}
.modal img{display:block;width:100%;height:100%;object-fit:contain;background:#000}
.modal .close{position:absolute;top:8px;right:8px;background:linear-gradient(160deg,#b3002d,#e63e62);color:white;border:0;width:42px;height:42px;font-size:1.2rem;border-radius:50%;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.4);font-weight:800}
.modal.sheet{align-items:end;padding:0}
.modal.sheet .modal-content{width:100%;max-width:100vw;max-height:72vh;border-radius:16px 16px 0 0;border-width:2px}
.hidden{display:none}
@media (min-width:1400px){.calendar-grid{grid-template-columns:repeat(8,1fr)}}

/* (Header & garland removed) */

/* Snow canvas */
.snow-canvas{position:fixed;inset:0;pointer-events:none;z-index:10}
.snow-canvas:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 10%,rgba(255,255,255,.45),rgba(255,255,255,0));mix-blend-mode:screen}

/* Single day expanded view */
.single-day .calendar-grid{display:flex;justify-content:center;align-items:center;flex-wrap:nowrap;min-height:60vh}
.single-day .door{width:min(90vw,520px);height:min(70vh,560px)}
.single-day .door-inner{font-size:2.4rem}
.single-day .door .day-number{font-size:.95rem}
.single-day .door img{border-radius:22px}
.calendar-grid.hidden-others .door:not(.opened){display:none}

.back-btn{margin:1.25rem auto 0;display:inline-block;background:#0a7d35;color:#fff;border:0;padding:.65rem 1.1rem;border-radius:28px;font-weight:700;font-size:.95rem;box-shadow:0 6px 18px rgba(0,0,0,.25);cursor:pointer;transition:transform .25s}
.back-btn:hover{transform:translateY(-3px)}
.back-btn:active{transform:translateY(0)}
.single-day .back-btn{position:fixed;top:12px;left:12px;z-index:9999;background:linear-gradient(120deg,#0a7d35,#15a24b);padding:.7rem 1.15rem;border:2px solid #ffffffaa;backdrop-filter:blur(4px);box-shadow:0 6px 22px rgba(0,0,0,.35)}

/* Festive subtle pattern overlay */
body:before{content:"";position:fixed;inset:0;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="140" height="140" viewBox="0 0 140 140"><text x="10" y="40" font-size="34" fill="%23ffffff22">🎄</text><text x="70" y="110" font-size="30" fill="%23ffffff18">🎁</text><text x="95" y="55" font-size="28" fill="%23ffffff15">❄️</text></svg>');background-size:140px 140px;opacity:.35;pointer-events:none;z-index:1}
main,footer,.calendar-grid,.modal{position:relative;z-index:2}

/* Message styling for opened day (hidden in overview, shown only in single-day mode) */
.day-message{position:absolute;left:50%;transform:translateX(-50%);bottom:-54px;background:linear-gradient(160deg,#fff,#fff4f4);border:2px solid #b3002d;border-radius:14px;padding:.6rem .8rem;box-shadow:0 8px 22px rgba(0,0,0,.25);max-width:min(92vw,760px);color:#3d1a1a;z-index:50;display:none}
.single-day .day-message{display:block}
.day-message p{margin:0;font-weight:700}
.hidden{display:none}

/* Focus/dimming phase before single-day mode */
.calendar-grid.focus-phase .door{transition:filter .35s ease}
.calendar-grid.focus-phase .door:not(.highlight){filter:blur(1px) brightness(.65) saturate(.9);pointer-events:none}
.calendar-grid.focus-phase .door.highlight .door-inner{box-shadow:0 10px 32px rgba(179,0,45,.6),inset 0 0 22px rgba(255,255,255,.85)}
/* Lock icon for future days */
.door.future .door-inner:before{content:"🔒";position:absolute;inset:0;display:grid;place-items:center;font-size:1.8rem;filter:drop-shadow(0 3px 6px rgba(0,0,0,.3));animation:lockPulse 2.4s ease-in-out infinite;color:#b3002d;background:linear-gradient(140deg,#ffffffd0,#ffe1e1d0);backdrop-filter:blur(2px)}
@keyframes lockPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
.door.future.opened .door-inner:before{display:none}
/* Highlight current day */
.door.today:not(.opened) .door-inner{box-shadow:0 0 0 4px #ffffffaa,0 0 14px 4px rgba(21,162,75,.55),0 0 38px 10px rgba(10,125,53,.4),inset 0 0 22px rgba(255,255,255,.9);border-color:#15a24b}
.door.today:not(.opened) .door-inner:after{content:"";position:absolute;inset:0;border-radius:18px;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.6),rgba(255,255,255,0) 70%);pointer-events:none}
/*.door.today:not(.opened) .door-inner:before{content:"";position:absolute;inset:-6px;border-radius:24px;padding:4px;background:conic-gradient(from 0deg,#15a24b,#0a7d35,#15a24b,#0a7d35);filter:blur(6px) brightness(1.1);animation:spinGlow 9s linear infinite;z-index:-1}*/
.door.today .day-number{background:linear-gradient(90deg,#0a7d35,#15a24b)}
.door.today:not(.opened){animation:todayPulse 5s ease-in-out infinite}
@keyframes todayPulse{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes spinGlow{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
/* Restore color for today's and tomorrow's thumbnails while locked */
.door.today.locked .door-inner.has-thumb,
.door.next.locked .door-inner.has-thumb{filter:brightness(1) saturate(1.15) contrast(1.05)}
/* Tomorrow preview (next) stronger outline but calmer than today */
.door.next:not(.opened) .door-inner{box-shadow:0 0 0 3px #ffffffaa,0 0 18px 4px rgba(179,0,45,.45),inset 0 0 16px rgba(255,255,255,.85);border-color:#b3002d}
.door.next .day-number{background:linear-gradient(90deg,#b3002d,#d31642)}
.door.next:not(.opened){animation:nextPulse 6.5s ease-in-out infinite}
@keyframes nextPulse{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
/* Ensure no lock icon or grayscale for tomorrow */
.door.next.locked .door-inner{filter:none}
/* Next day label */
.door.next:not(.opened) .door-inner:after{
	content:"Bientôt..";
	position:absolute;
	left:50%;
	transform:translateX(-50%);
	bottom:6px;
	padding:3px 8px;
	font-weight:800;
	font-size:.78rem;
	color:#fff;
	background:linear-gradient(90deg,#b3002d,#d31642);
	border-radius:999px;
	box-shadow:0 4px 10px rgba(0,0,0,.25);
	letter-spacing:.2px;
	pointer-events:none;
}
/* Today gift hint */
.door.today:not(.opened) .door-inner .gift-label{
	position:absolute;left:50%;transform:translateX(-50%);bottom:6px;
	background:linear-gradient(90deg,#0a7d35,#15a24b);color:#fff;font-weight:800;font-size:.85rem;
	padding:4px 10px;border-radius:999px;box-shadow:0 4px 12px rgba(0,0,0,.3);letter-spacing:.3px;
	pointer-events:none;
}
/* Past days message */
.door.past:not(.opened) .door-inner:after{
	content:"Cadeau déjà ouvert";
	position:absolute;left:50%;transform:translateX(-50%);bottom:6px;
	background:linear-gradient(120deg,#d9d9d9,#bcbcbc);color:#333;font-weight:700;font-size:.65rem;
	padding:4px 8px;border-radius:999px;box-shadow:0 3px 8px rgba(0,0,0,.25);text-transform:uppercase;letter-spacing:.7px;
}

/* Hide today badge in single-day */

@media (max-width:560px){
	.door{height:112px}
	.door-inner{font-size:1.25rem}
	.single-day .door{width:92vw;height:74vh}
}

