:root{--bg-light: #f8f5f2;--text-dark: #4e4a47;--pastel-sand: #f3d5a5;--pastel-sky: #a8d8ea;--pastel-terracotta: #e4b4b4;--pastel-seafoam: #bde0c3;--shadow-color: rgba(78, 74, 71, .1);--shadow-soft: 0 10px 30px var(--shadow-color);--shadow-lifted: 0 25px 50px -12px var(--shadow-color);--font-serif: "Playfair Display", serif;--font-sans: "Inter", sans-serif;--transition-curve: cubic-bezier(.645, .045, .355, 1);--transition-duration: .6s}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-sans);background-color:var(--bg-light);color:var(--text-dark);overflow-x:hidden;transition:background-color var(--transition-duration) var(--transition-curve)}body:before{content:"";position:fixed;top:0;left:0;width:100vw;height:100vh;background-image:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><path d="M0 0 L40 40 M40 0 L0 40" stroke="%23EAE6E3" stroke-width="0.5"/></svg>');opacity:.5;z-index:-2;transition:opacity var(--transition-duration) var(--transition-curve)}.skip-link{position:absolute;top:-100px;left:0;background:var(--text-dark);color:var(--bg-light);padding:1rem;z-index:9999;font-weight:600;text-decoration:none;transition:top .3s ease}.skip-link:focus{top:0}.hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:2rem;position:relative;overflow:hidden}.hero__background-shape{position:absolute;z-index:-1;border-radius:50%;filter:blur(80px);animation:slow-pulse 15s infinite alternate}#shape1{width:40vw;height:40vw;min-width:300px;min-height:300px;background:linear-gradient(135deg,var(--pastel-sand),var(--pastel-sky));top:10%;left:5%}#shape2{width:35vw;height:35vw;min-width:250px;min-height:250px;background:linear-gradient(135deg,var(--pastel-terracotta),var(--pastel-seafoam));bottom:5%;right:10%;animation-delay:-7s}@keyframes slow-pulse{0%{transform:scale(.9) rotate(0)}to{transform:scale(1.1) rotate(20deg)}}.hero__title{font-family:var(--font-serif);font-size:clamp(3rem,12vw,8rem);line-height:1;letter-spacing:.03em;animation:fadeIn 1.5s var(--transition-curve) both}.hero__subtitle{font-weight:300;font-size:clamp(1rem,3vw,1.5rem);letter-spacing:.3em;text-transform:uppercase;margin-top:1.5rem;opacity:0;animation:fadeIn 1.5s .5s var(--transition-curve) both}.scroll-indicator{position:absolute;bottom:2rem;opacity:0;animation:fadeIn 1.5s 1s var(--transition-curve) both,bounce 2s infinite;font-size:1.2rem;font-weight:300}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}.gallery-container{width:100%;max-width:1200px;margin:0 auto;padding:10vh 2rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:4rem;transition:transform var(--transition-duration) var(--transition-curve),filter var(--transition-duration) var(--transition-curve)}.postcard{position:relative;cursor:pointer;aspect-ratio:3 / 4;will-change:transform;transition:transform var(--transition-duration) var(--transition-curve),box-shadow var(--transition-duration) var(--transition-curve)}.postcard:hover{transform:translateY(-10px) scale(1.02);box-shadow:var(--shadow-lifted)}.postcard.is-opening,.postcard.is-closing{cursor:default}.postcard__image-wrapper{width:100%;height:100%;border-radius:12px;overflow:hidden;box-shadow:var(--shadow-soft);transition:box-shadow var(--transition-duration) var(--transition-curve)}.postcard__image{width:100%;height:100%;object-fit:cover;transform:scale(1.05);opacity:0;transition:transform .7s var(--transition-curve),opacity var(--transition-duration) ease-out}.postcard__image.is-loaded{opacity:1}.postcard:hover .postcard__image{transform:scale(1.1)}.postcard__overlay{position:absolute;bottom:0;left:0;right:0;background:#ffffff1a;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid rgba(255,255,255,.2);border-bottom-left-radius:12px;border-bottom-right-radius:12px;display:flex;flex-direction:column;justify-content:flex-end;padding:1.5rem;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3);opacity:1;transition:opacity .5s var(--transition-curve)}.postcard__title{font-family:var(--font-serif);font-size:1.75rem;line-height:1.2;transform:translateY(10px);transition:transform .5s var(--transition-curve)}.postcard__tagline{font-weight:300;font-size:.9rem;opacity:0;transition:opacity .5s var(--transition-curve)}.postcard:hover .postcard__title{transform:translateY(0)}.postcard:hover .postcard__tagline{opacity:1}.focus-content{display:none;padding:2rem;max-width:600px}.focus-content p{font-size:1.1rem;line-height:1.8;font-weight:300;margin-bottom:1.5rem}.focus-content p{margin-bottom:1rem}.focus-title-margin{margin-bottom:1.5rem}.image-error-placeholder{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;background:#f0f0f0;color:#888;font-size:.8rem;gap:.5rem;text-align:center}.image-error-icon{width:32px;height:32px;opacity:.5}.image-error-text{font-weight:500;letter-spacing:.02em}.close-button{position:fixed;top:2rem;right:2rem;font-size:2rem;background:none;border:none;color:var(--text-dark);cursor:pointer;z-index:1002;opacity:0;transform:scale(.8);transition:opacity .5s var(--transition-curve),transform .5s var(--transition-curve);pointer-events:none}.close-button.is-visible{opacity:.7;transform:scale(1);transition-delay:.3s;pointer-events:auto}.close-button.is-visible:hover{opacity:1;transform:scale(1.1)}.click-outside-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000;z-index:999;opacity:0;pointer-events:none;transition:opacity var(--transition-duration) var(--transition-curve)}body.focus-active{overflow:hidden}body.focus-active .gallery-container{transform:scale(.98)}body.focus-active .postcard:not(.is-active){filter:blur(10px)}body.focus-active:before{opacity:.1}body.focus-active .click-outside-overlay{opacity:1;pointer-events:auto}.postcard.is-active{position:fixed;top:50%;left:50%;width:90vw;max-width:900px;height:60vh;max-height:600px;transform:translate(-50%,-50%);z-index:1000;display:grid;grid-template-columns:1fr 1fr;align-items:center;cursor:default;background:var(--bg-light);box-shadow:0 40px 100px -20px #0000004d;border-radius:12px;overflow:hidden;transition:transform var(--transition-duration) var(--transition-curve),width var(--transition-duration) var(--transition-curve),height var(--transition-duration) var(--transition-curve),top var(--transition-duration) var(--transition-curve),left var(--transition-duration) var(--transition-curve),box-shadow var(--transition-duration) var(--transition-curve)}.postcard.is-active .postcard__image-wrapper{height:100%;border-radius:0;box-shadow:none}.postcard.is-active .postcard__image{transform:scale(1)}.postcard.is-active .postcard__overlay{opacity:0;transition:opacity .3s}.postcard.is-active .focus-content{display:block;opacity:0;transform:translateY(20px);animation:fadeIn .5s .3s var(--transition-curve) both}.main-content{display:grid;grid-template-columns:1fr;grid-template-rows:auto 0;transition:grid-template-rows var(--transition-duration) var(--transition-curve)}#map{grid-row:1 / 2;grid-column:1 / 2;height:0;opacity:0;transition:opacity var(--transition-duration) var(--transition-curve);z-index:1}.gallery-container{grid-row:1 / 2;grid-column:1 / 2;z-index:2}.main-content.map-active{grid-template-rows:1fr}.main-content.map-active #map{height:100vh;opacity:1}.main-content.map-active .gallery-container{pointer-events:none;opacity:0}.map-view-button{background:#fff3;border:1px solid white;color:#fff;padding:.8rem 1.5rem;border-radius:50px;cursor:pointer;font-weight:600;letter-spacing:.05em;transition:all .3s ease;margin-top:2rem;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.map-view-button:hover{background:#fff;color:var(--text-dark);transform:translateY(-3px)}#map:before{content:"";position:absolute;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px;border:3px solid rgba(78,74,71,.2);border-top-color:var(--text-dark);border-radius:50%;animation:spinner .8s linear infinite;z-index:-1}@keyframes spinner{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}:focus-visible{outline:2px solid var(--text-dark);outline-offset:4px}@media(max-width:768px){.postcard.is-active{grid-template-columns:1fr;grid-template-rows:250px 1fr;height:85vh;width:95vw}.focus-content{padding:1.5rem;overflow-y:auto;-webkit-overflow-scrolling:touch}.focus-content p{font-size:1rem}}.theme-yellow{background-color:#f3d5a5}.theme-red{background-color:#e4b4b4}.theme-blue{background-color:#a8d8ea}.theme-green{background-color:#bde0c3}#map.is-loading:after{content:"";position:absolute;top:50%;left:50%;width:50px;height:50px;border:3px solid rgba(0,0,0,.1);border-top-color:var(--text-dark);border-radius:50%;animation:spinner .8s linear infinite;transform:translate(-50%,-50%);z-index:10}.error-message{display:flex;justify-content:center;align-items:center;height:100%;color:#d32f2f;font-weight:500}.error-wrapper{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;gap:1rem}.retry-button{background:var(--text-dark);color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-family:var(--font-sans);font-weight:600;transition:opacity .3s}.retry-button:hover{opacity:.8}.toast-container{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;gap:1rem;pointer-events:none;width:90%;max-width:400px}.toast{background:#fff;color:var(--text-dark);padding:1rem 1.5rem;border-radius:8px;box-shadow:var(--shadow-lifted);display:flex;justify-content:space-between;align-items:center;opacity:0;transform:translateY(20px);transition:all .4s var(--transition-curve);pointer-events:auto;font-weight:500;border-left:4px solid var(--text-dark)}.toast.is-visible{opacity:1;transform:translateY(0)}.toast--error{border-left-color:#d32f2f;background:#fff5f5;color:#b71c1c}.toast--success{border-left-color:#388e3c;background:#f1f8e9;color:#1b5e20}.toast--info{border-left-color:var(--pastel-sky)}.toast__close{background:none;border:none;color:inherit;font-size:1.5rem;cursor:pointer;margin-left:1rem;line-height:1;opacity:.6;transition:opacity .2s}.toast__close:hover{opacity:1}
