:root{--ink:#302b26;--cream:#f7f3eb;--gold:#c8a364;--muted:#726b61;--line:#ded6c9;--purple:#312644}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.65 Arial,sans-serif}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid var(--gold);outline-offset:5px}header{display:flex;justify-content:space-between;align-items:center;padding:24px 5%;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font:24px Georgia,serif}.brand small{display:block;font:9px Arial,sans-serif;letter-spacing:2px;margin-top:7px}.monogram{border:1px solid var(--gold);padding:6px 8px;font-size:28px}nav{display:flex;gap:30px;font-size:13px}nav a:hover,.text-link:hover{text-decoration:underline}.hero{display:grid;grid-template-columns:1fr 1fr;min-height:630px}.hero-copy{padding:80px 8% 65px 10%}.eyebrow{font-size:10px;font-weight:bold;letter-spacing:2.4px;margin:0 0 25px}h1,h2{font-family:Georgia,serif;font-weight:normal;line-height:1.1;letter-spacing:-1.8px}h1{font-size:clamp(48px,5.5vw,84px);margin:0 0 25px}em{font-weight:normal;color:#9a783c}.intro{max-width:420px;color:var(--muted);font-size:17px}.button{display:inline-flex;justify-content:space-between;gap:28px;align-items:center;padding:15px 23px;font-size:12px;font-weight:bold;border:1px solid transparent;margin-top:18px}.dark{background:var(--ink);color:white}.gold{background:var(--gold);color:var(--ink)}.outline{border-color:#8c7e9c;color:white}.button:hover{filter:brightness(1.12)}.note{font-size:11px;color:var(--muted);margin-top:25px}.hero-image{position:relative;background:#eadfd7;display:flex;align-items:center;padding:38px}.hero-image img{width:100%;height:510px;object-fit:contain}.image-tag{position:absolute;bottom:25px;left:38px;font:italic 18px Georgia;background:var(--cream);padding:12px 20px}.paths{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:0 5%}.paths a{padding:32px 22px;border-right:1px solid var(--line)}.paths a:last-child{border:0}.paths span{font-size:9px;letter-spacing:1.5px;color:var(--muted)}.paths h2{font-size:23px;letter-spacing:-.4px;display:flex;justify-content:space-between}.paths b{color:#a18045;font-weight:normal}.section{padding:90px 7%}.section-heading{display:grid;grid-template-columns:1fr 1fr;gap:10%;align-items:center}h2{font-size:clamp(36px,4vw,56px);margin:0 0 24px}.section p:not(.eyebrow){color:var(--muted);max-width:520px}.products{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:48px}figure{margin:0}figure img{height:330px;width:100%;object-fit:contain;background:#eee7da}figcaption{padding-top:18px}figcaption span{display:block;font:21px Georgia}figcaption small{color:var(--muted);font-size:12px}.text-link{display:inline-block;font-size:13px;border-bottom:1px solid currentColor;padding:4px 0;margin-top:23px}.pageant{background:var(--purple);color:#fff;display:grid;grid-template-columns:1fr 1.15fr;gap:8%;align-items:center}.pageant p:not(.eyebrow){color:#ded4e9}.pageant em{color:#ddbc7e}.pageant-art{min-height:450px;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;border:1px solid #8b7350;position:relative;background:radial-gradient(ellipse at center,#493856,transparent 70%)}.crown{font-size:90px;color:#d1ac6a;line-height:1}.pageant-art p{font:28px/1.3 Georgia;letter-spacing:5px}.pageant-art em{font-size:68px;letter-spacing:0}.stars{position:absolute;top:25px;right:30px;color:#ddbc7e;font-size:48px}.art-caption{font-size:8px;letter-spacing:2px;color:#ddbc7e}.actions{display:flex;gap:12px;flex-wrap:wrap}.grandparent{display:grid;grid-template-columns:1.1fr 1fr;gap:10%;align-items:center}.grandparent .text-link{display:block;width:fit-content}.kindness-card{background:#e8edde;border:1px solid #c9d2bc;text-align:center;padding:45px 20px 0;transform:rotate(2deg)}.heart{font:85px Georgia;color:#657452}.kindness-card p{font:36px/1.2 Georgia!important;max-width:none!important;color:#38472f!important}.kindness-card em{color:#657452}.gift-cost{margin:35px 0}.gift-cost strong{font:58px Georgia;color:#38472f}.gift-cost span{display:block;font-size:9px;letter-spacing:2px}.ribbon{background:#d0dac3;font-size:8px;letter-spacing:1.6px;padding:20px;margin:0 -20px}.contact{text-align:center;border-top:1px solid var(--line);padding-top:60px;padding-bottom:60px}.contact h2{font-size:34px;letter-spacing:-.6px}.contact p{margin-left:auto;margin-right:auto}.contact a{overflow-wrap:anywhere}footer{display:flex;justify-content:space-between;align-items:center;padding:28px 5%;background:#ece6db;font-size:11px;color:var(--muted)}footer .brand{font-size:20px}@media(max-width:800px){header{flex-direction:column;gap:24px}nav{gap:20px;font-size:11px}.hero,.section-heading,.pageant,.grandparent{grid-template-columns:1fr}.hero-copy{padding:55px 7%}.hero-image{padding:20px}.hero-image img{height:370px}.image-tag{left:20px;font-size:15px}.paths{grid-template-columns:1fr}.paths a{border-right:0;border-bottom:1px solid var(--line);padding:18px 10px}.paths h2{margin-bottom:0}.section{padding:60px 7%}.products{gap:15px;grid-template-columns:1fr}.products img{height:350px}.section-heading{gap:0}.pageant-art{min-height:340px}.pageant-copy{margin-top:35px}.kindness-card{margin-top:35px;transform:none}.contact h2{font-size:28px}footer{flex-direction:column;gap:15px}h1{font-size:58px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.logo{width:60px;height:60px;object-fit:contain}.gallery-section{background:#efe8dc}.filters{display:flex;gap:12px;flex-wrap:wrap;margin:30px 0}.filters button{background:transparent;border:1px solid #b5a996;color:var(--ink);padding:10px 18px;cursor:pointer;font:12px Arial}.filters button[aria-pressed=true]{background:var(--ink);color:white}.photo-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.photo-tile{background:#fff;border:0;padding:12px;cursor:zoom-in;height:285px}.photo-tile img{width:100%;height:100%;object-fit:contain}.photo-tile:hover{box-shadow:0 8px 22px #302b2620}dialog{border:0;background:var(--cream);max-width:90vw;max-height:92vh;padding:35px 24px 15px}dialog::backdrop{background:#201b18cc}#large-photo{display:block;max-width:80vw;max-height:75vh;object-fit:contain;margin:auto}.close-photo{position:absolute;right:8px;top:0;background:none;border:0;font-size:32px;cursor:pointer}#photo-caption{font-size:12px;text-align:center}@media(max-width:800px){.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.photo-tile{height:230px;padding:8px}nav{flex-wrap:wrap;justify-content:center}}@media(max-width:420px){.photo-tile{height:190px}}

.contact-portrait{width:180px;height:180px;object-fit:cover;border-radius:50%;margin-bottom:25px}
/* Compact gallery: a single swipeable row at every screen size. */
#photo-grid.gallery-carousel{display:flex;position:relative;gap:18px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:thin;padding:6px 2px 14px;overscroll-behavior-x:contain}
#photo-grid.gallery-carousel .photo-tile{flex:0 0 calc((100% - 36px)/3);height:280px;scroll-snap-align:start;min-width:0}
.carousel-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 26px}.carousel-controls button{border:1px solid #b5a996;border-radius:6px;background:var(--ink);color:white;padding:12px 18px;font:14px Arial;cursor:pointer}.carousel-controls button:disabled{opacity:.4;cursor:default}.carousel-counter{font:13px Arial;text-align:center}.gallery-carousel:focus-visible,.carousel-controls button:focus-visible{outline:3px solid #a37529;outline-offset:3px}
@media(max-width:800px){#photo-grid.gallery-carousel .photo-tile{flex-basis:calc((100% - 18px)/2);height:240px}}
@media(max-width:520px){#photo-grid.gallery-carousel .photo-tile{flex-basis:88%;height:250px}.carousel-controls button{padding:12px;font-size:12px}.carousel-counter{font-size:12px}.gallery-section{padding-top:45px;padding-bottom:45px}}
/* Infinite carousel with translucent overlay navigation. */
.carousel-wrap{position:relative;margin-bottom:28px}
#photo-grid.gallery-carousel{scrollbar-width:none;-ms-overflow-style:none;padding-bottom:6px;scroll-snap-type:x mandatory}
#photo-grid.gallery-carousel::-webkit-scrollbar{display:none}
.carousel-wrap .carousel-controls{position:absolute;inset:0;pointer-events:none;margin:0;display:block}
.carousel-wrap .carousel-controls button{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:64px;padding:0;border:1px solid #ffffff70;background:rgba(32,40,33,.45);color:white;font:44px/1 Arial;border-radius:10px;pointer-events:auto;box-shadow:0 2px 10px #0002;transition:background .2s}
.carousel-wrap .carousel-controls button:first-child{left:8px}.carousel-wrap .carousel-controls button:last-child{right:8px}.carousel-wrap .carousel-controls button:hover{background:rgba(32,40,33,.75)}.carousel-wrap .carousel-controls button:disabled{display:none}
.carousel-wrap .carousel-counter{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);background:rgba(255,255,255,.85);padding:5px 12px;border-radius:20px;white-space:nowrap;color:var(--ink)}
@media(max-width:520px){.carousel-wrap .carousel-controls button{width:38px;height:54px;font-size:36px}}
/* Let each photo fill its frame without an added white mat. */
#photo-grid.gallery-carousel .photo-tile{padding:0;background:transparent}

.skip-link{position:fixed;top:12px;left:12px;z-index:1000;background:#302b26;color:white;padding:12px 18px;transform:translateY(-200%)}.skip-link:focus{transform:none}button:focus-visible{outline:3px solid #a37529;outline-offset:4px}@media(max-width:420px){h1{font-size:clamp(38px,12vw,58px)}.image-tag{right:20px;max-width:calc(100% - 40px)}.contact .text-link{max-width:100%}}
