*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--font-heading:"Playfair Display", Georgia, serif;--font-body:"Nunito", system-ui, sans-serif}html{scroll-behavior:smooth}body{font-family:var(--font-body);-webkit-font-smoothing:antialiased;background:#fff;overflow-x:hidden}#root{min-height:100vh}.home{background:linear-gradient(160deg,#fff5f0 0%,#fce8f3 50%,#f0ecff 100%);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:48px 24px 64px;display:flex;position:relative;overflow:hidden}.home-title{font-family:var(--font-heading);color:#6b3a4a;text-align:center;margin-bottom:8px;font-size:clamp(2rem,7vw,3.4rem);line-height:1.2}.home-date{color:#b87a8e;text-align:center;letter-spacing:.15em;text-transform:uppercase;margin-bottom:52px;font-size:.85rem;font-weight:600}.cards-grid{grid-template-columns:1fr;gap:20px;width:100%;max-width:400px;display:grid}@media (width>=720px){.cards-grid{grid-template-columns:repeat(3,1fr);max-width:860px}}.mom-card{text-align:center;cursor:pointer;background:#fff;border-radius:24px;padding:36px 24px;text-decoration:none;display:block;box-shadow:0 4px 24px #00000012}.card-emoji{margin-bottom:16px;font-size:3rem;display:block}.card-name{font-family:var(--font-heading);margin-bottom:6px;font-size:1.7rem}.card-role{letter-spacing:.1em;text-transform:uppercase;opacity:.6;font-size:.8rem;font-weight:700}.card-cta{letter-spacing:.05em;opacity:.5;margin-top:18px;font-size:.82rem;font-weight:700}.page{min-height:100vh;position:relative}.back-btn{color:#ffffffe6;letter-spacing:.05em;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10;background:#ffffff2e;border-radius:50px;padding:8px 16px;font-size:.85rem;font-weight:700;text-decoration:none;position:absolute;top:20px;left:20px}.hero{color:#fff;text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:80px 32px 60px;display:flex;position:relative;overflow:hidden}.hero-emoji{filter:drop-shadow(0 4px 12px #0003);margin-bottom:20px;font-size:4rem;display:block}.hero-role{letter-spacing:.22em;text-transform:uppercase;opacity:.85;margin-bottom:12px;font-size:.8rem;font-weight:700}.hero-name{font-family:var(--font-heading);text-shadow:0 2px 20px #00000026;margin-bottom:20px;font-size:clamp(3rem,12vw,5.5rem);font-weight:700;line-height:1}.hero-subtitle{font-family:var(--font-heading);opacity:.92;max-width:460px;font-size:clamp(1rem,3.5vw,1.25rem);font-style:italic;line-height:1.65}.section{padding:64px 24px}.section-inner{max-width:760px;margin:0 auto}.section-title{font-family:var(--font-heading);color:var(--primary);text-align:center;margin-bottom:40px;font-size:clamp(1.5rem,5vw,2rem)}.timeline{max-width:600px;margin:0 auto;padding-left:40px;position:relative}.timeline:before{content:"";background:linear-gradient(to bottom, var(--accent), var(--primary), var(--accent));border-radius:2px;width:2px;position:absolute;top:14px;bottom:14px;left:13px}.timeline-item{margin-bottom:12px;position:relative}.timeline-dot{border:2px solid var(--primary);z-index:1;background:#fff;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:13px;display:flex;position:absolute;top:18px;left:-33px;box-shadow:0 2px 8px #0000001a}.timeline-card{cursor:pointer;background:#fff;border:1.5px solid #0000;border-radius:16px;padding:16px 18px;transition:border-color .2s,box-shadow .2s;box-shadow:0 2px 14px #0000000f}.timeline-card:hover{box-shadow:0 4px 20px #0000001a}.timeline-card.active{border-color:var(--accent)}.timeline-header{align-items:center;gap:10px;display:flex}.timeline-year{color:var(--primary);letter-spacing:.04em;white-space:nowrap;background:var(--light);border-radius:50px;flex-shrink:0;padding:3px 9px;font-size:.72rem;font-weight:700}.timeline-title{font-family:var(--font-heading);color:#3a2a30;flex:1;font-size:.98rem;line-height:1.3}.timeline-toggle{color:var(--primary);opacity:.7;flex-shrink:0;font-size:.68rem}.timeline-text{color:#5a4a50;border-top:1px solid var(--light);margin-top:10px;padding-top:12px;font-size:.93rem;line-height:1.75;overflow:hidden}.photo-grid{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}@media (width>=540px){.photo-grid{grid-template-columns:repeat(3,1fr)}}.photo-item{aspect-ratio:1;cursor:pointer;background:var(--light);border-radius:12px;overflow:hidden}.photo-item img{object-fit:cover;width:100%;height:100%;display:block}.photo-placeholder{background:var(--light);text-align:center;border:2px dashed var(--accent);border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:14px;max-width:480px;margin:0 auto;padding:48px 24px;display:flex}.photo-placeholder p{color:var(--primary);font-size:.9rem;line-height:1.6}.photo-placeholder code{color:var(--primary);border:1px solid var(--accent);background:#fff;border-radius:6px;padding:2px 8px;font-size:.82rem}.lightbox{z-index:200;cursor:pointer;background:#000000e0;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.lightbox img{object-fit:contain;border-radius:12px;max-width:100%;max-height:90vh}.letter{border:1px solid var(--accent);background:#fffdf9;border-radius:20px;max-width:600px;margin:0 auto;padding:44px 36px;position:relative;box-shadow:0 4px 32px #00000012}.letter-stamp{background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:1rem;display:flex;position:absolute;top:-18px;left:50%;transform:translate(-50%);box-shadow:0 2px 10px #00000026}.letter p{font-family:var(--font-heading);color:#3a2a30;font-size:1rem;line-height:1.95}.letter p+p{margin-top:14px}.closing{text-align:center;color:#fff;padding:80px 24px}.closing-emojis{justify-content:center;gap:12px;margin-bottom:24px;display:flex}.closing-emojis span{font-size:2.4rem;display:inline-block}.closing-title{font-family:var(--font-heading);text-shadow:0 2px 12px #00000026;margin-bottom:12px;font-size:clamp(2rem,8vw,3.2rem);font-weight:700}.closing-subtitle{opacity:.9;letter-spacing:.05em;font-size:1.05rem}.gate{flex-direction:column;justify-content:center;align-items:center;gap:28px;min-height:100vh;padding:48px 24px;display:flex}.gate-top{text-align:center;color:#fff}.gate-emoji{filter:drop-shadow(0 4px 12px #0003);margin-bottom:12px;font-size:3.5rem;display:block}.gate-role{letter-spacing:.22em;text-transform:uppercase;opacity:.85;margin-bottom:8px;font-size:.78rem;font-weight:700}.gate-name{font-family:var(--font-heading);text-shadow:0 2px 16px #00000026;margin-bottom:14px;font-size:clamp(2.4rem,10vw,4.5rem);font-weight:700;line-height:1}.gate-hint{opacity:.88;letter-spacing:.04em;font-size:.9rem}.gate-card{background:#fff;border-radius:24px;width:100%;max-width:440px;padding:36px 28px;box-shadow:0 12px 50px #0000002e}.gate-question{font-family:var(--font-heading);color:#2a1a20;text-align:center;margin-bottom:24px;font-size:1.12rem;line-height:1.5}.gate-options{flex-direction:column;gap:10px;display:flex}.gate-option{border:2px solid var(--accent);background:var(--light);color:var(--primary);font-family:var(--font-body);cursor:pointer;text-align:left;border-radius:12px;align-items:center;gap:12px;width:100%;padding:13px 18px;font-size:.96rem;font-weight:600;transition:background .15s,border-color .15s;display:flex}.gate-option:not(:disabled):hover{background:var(--accent)}.gate-option:disabled{cursor:default}.gate-option--correct{color:#155724!important;background:#d4edda!important;border-color:#28a745!important}.gate-option--wrong{color:#721c24!important;background:#f8d7da!important;border-color:#dc3545!important}.gate-option-letter{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:.72rem;font-weight:800;transition:background .15s;display:flex}.gate-option--correct .gate-option-letter{background:#28a745}.gate-option--wrong .gate-option-letter{background:#dc3545}.gate-error{text-align:center;color:#dc3545;margin-top:16px;font-size:.88rem;font-weight:700}.particles-wrap{pointer-events:none;z-index:0;position:fixed;inset:0;overflow:hidden}.page>:not(.particles-wrap){z-index:1;position:relative}
