:root { --admin-accent:#965078; --admin-accent-dark:#78385e; --admin-soft:#f5eaf1; --admin-border:#ddc6d4; }
:root { color-scheme: dark; font-family: Arial, Helvetica, sans-serif; background: #0b0b0b; color: #f5f4f0; --line: #373737; }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 100px; }
body { margin: 0; font-size: 15px; min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; }
body > main { flex: 1 0 auto; min-width: 0; }
body > .site-header, body > .site-footer { flex-shrink: 0; }
a { color: inherit; }
button, input, textarea, select { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button { cursor: pointer; }
h1, h2, h3, p { margin-top: 0; }
h1, h2 { font-family: Georgia, 'Times New Roman', serif; font-weight: 400; }
h1 { font-size: clamp(2.7rem, 5.5vw, 5rem); line-height: 1.12; margin-bottom: 24px; letter-spacing: -.035em; }
h2 { font-size: clamp(2rem, 3.5vw, 3.3rem); line-height: 1.18; letter-spacing: -.025em; margin-bottom: 24px; }
h3 { font-size: 1.12rem; font-weight: 400; }
p { line-height: 1.85; }
.container { width: min(1120px, calc(100% - 64px)); margin-inline: auto; }
.narrow { max-width: 780px; }
.section { padding: 105px 0; }
.section-heading { text-align: center; margin-bottom: 64px; }
.section-heading p { max-width: 620px; margin-inline: auto; }
.eyebrow { font-size: .65rem; letter-spacing: .23em; text-transform: uppercase; margin-bottom: 22px; }
.light, .soft { color-scheme: light; color: #202020; background: #faf9f6; }
.soft { background: #eeede9; }
.muted { color: #686862; }
.small { font-size: .8rem; }
.center { text-align: center; margin-top: 45px; }
.site-header { background: #fff; color: #171717; min-height: 90px; padding: 18px max(calc((100vw - 1240px) / 2), 32px); display: flex; align-items: center; justify-content: space-between; gap: 24px; position: sticky; top: 0; z-index: 20; border-bottom: 1px solid #e9e9e9; }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; flex-shrink: 0; }
.brand-mark { font: 42px Georgia, serif; border: 1px solid #888; border-radius: 50% 0 0 50%; width: 39px; line-height: 43px; }
.brand-name { font: 16px Georgia, serif; text-transform: uppercase; letter-spacing: .1em; }
.brand-name small, .footer-brand small { display: block; font: 9px Arial, sans-serif; letter-spacing: .31em; text-transform: uppercase; margin-top: 7px; }
nav { display: flex; align-items: center; gap: 30px; }
nav a { text-decoration: none; font-size: 12px; padding: 10px 0; border-bottom: 1px solid transparent; }
nav a:hover, nav a[aria-current] { border-color: #222; }
.menu-toggle { display: none; background: none; border: 1px solid #aaa; color: #111; padding: 10px 14px; }
.button { display: inline-block; border: 1px solid currentColor; color: inherit; background: transparent; padding: 14px 25px; font-size: 14px; letter-spacing: .035em; text-decoration: none; transition: background .2s, color .2s; }
.button:hover { background: #dcd9d0; color: #171717; }
.solid { background: #1b1b1b; color: #fff; border-color: #1b1b1b; }
.text-link { text-underline-offset: 7px; font-size: 13px; line-height: 2; }
.home-hero { min-height: 690px; height: calc(90svh - 90px); max-height: 880px; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; background: #090909; }
.hero-lines { position: absolute; inset: 13% 4% 17%; transform: perspective(800px) rotateY(-12deg); background: repeating-linear-gradient(90deg, transparent 0%, transparent 7%, #444 7.5%, #191919 13%, #080808 14%); mask-image: linear-gradient(transparent, #000 30%, #000 65%, transparent); opacity: .7; }
.hero-lines:not(:has(img)) { background: none; opacity: .9; }
.hero-lines:not(:has(img))::before { content: ''; position: absolute; inset: -6% -10%; background: repeating-linear-gradient(90deg, transparent 0%, transparent 7%, #999 7.5%, #353535 10%, #0a0a0a 14%); pointer-events: none; opacity: .8; }
.hero-lines:not(:has(img))::after { content: ''; position: absolute; inset: -12%; pointer-events: none; background: radial-gradient(circle 34px at 13% 35%, #fff7 0%, #e7dfce35 45%, transparent 100%), radial-gradient(circle 65px at 81% 25%, #efe5d947 0%, #fff1 55%, transparent 100%), radial-gradient(circle 24px at 73% 67%, #fff8 0%, #fff2 50%, transparent 100%), radial-gradient(circle 48px at 28% 77%, #dbe7f23b 0%, #fff1 45%, transparent 100%), radial-gradient(ellipse at 88% 48%, #fff2, transparent 42%); filter: blur(9px); opacity: .65; }
@media (prefers-reduced-motion: no-preference) {
    .hero-lines:not(:has(img))::before { animation: hero-light-drift 11s ease-in-out infinite alternate; }
    .hero-lines:not(:has(img))::after { animation: hero-bokeh-drift 15s ease-in-out infinite alternate; }
}
@keyframes hero-light-drift {
    0% { transform: translateX(-4%) skewX(-2deg); opacity: .5; }
    45% { opacity: 1; }
    100% { transform: translateX(4%) skewX(2deg); opacity: .75; }
}
@keyframes hero-bokeh-drift {
    0% { transform: translate(-2%, 3%) scale(.95); opacity: .35; }
    55% { opacity: .9; }
    100% { transform: translate(3%, -4%) scale(1.08); opacity: .65; }
}
.hero-medallion { position: relative; isolation:isolate; background:radial-gradient(ellipse at 25% 15%,#fff,transparent 60%),linear-gradient(145deg,#fff,#f5f4f1 65%,#e9e8e5); color:#242424; border:1px solid #fff; border-radius:50%; width:360px; height:360px; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; box-shadow:0 0 0 7px #efeeeb,0 0 0 8px #ffffff80,0 0 35px 12px #ffffff33,0 0 80px 28px #ffffff1c,0 0 125px 40px #ffffff0e,inset 0 0 35px #ffffffb3; }
.hero-medallion::after { content:' '; position:absolute; inset:12px; border:1px solid #b9b9b480; border-radius:50%; pointer-events:none; }
.hero-medallion > * { position:relative; z-index:1; }
.hero-medallion .spaced { color:#60605c; }
.hero-medallion .medallion-link { color:#353533; padding-bottom:4px; border-bottom:1px solid #70706b66; }
.hero-medallion .medallion-link:hover { border-color:#353533; }
.hero-medallion h1 { font-size: 51px; line-height: 1.03; margin: 0 0 16px; }
.hero-medallion .eyebrow { order:1; font-size:9px; letter-spacing:.16em; margin:18px 0 0; color:#60605c; }
.rule { display: block; height: 1px; width: 60px; background: currentColor; margin: 10px auto 20px; }
.spaced { font: 12px Georgia, serif; letter-spacing: .25em; }
.medallion-link { font-size: 10px; text-decoration: none; margin-top: 10px; }
.scroll-cue { position: absolute; bottom: 65px; font-size: 38px; text-decoration: none; }
.hero-caption { position: absolute; bottom: 25px; font-size: 8px; letter-spacing: .25em; text-transform: uppercase; color: #a5a5a5; }
.split { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 80px; }
.copy p { max-width: 440px; color: #aaa; }
.light .copy p { color: #5c5c59; }
.copy .button { margin-top: 18px; }
.photo-placeholder { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; background: linear-gradient(135deg, #353535, #1b1b1b 55%, #444); color: #bfbfbf; min-height: 160px; overflow: hidden; }
.photo-placeholder::before { content: ''; position: absolute; inset: 16px; border: 1px solid #ffffff12; }
.photo-placeholder span { font: italic 19px Georgia, serif; }
.photo-placeholder small { font-size: 9px; letter-spacing: .1em; text-transform: uppercase; color: #aaa; }
.portrait { aspect-ratio: 4 / 5; }
#about-portrait > .portrait-caption { position:absolute; z-index:2; left:0; right:0; bottom:0; margin:0; padding:42px 26px 22px; border-radius:0 0 10px 10px; color:#fff; text-align:left; background:linear-gradient(transparent,rgba(0,0,0,.65)); text-shadow:0 1px 4px rgba(0,0,0,.5); }
.mosaic { display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: 170px; gap: 16px; }
.tile-0, .tile-4 { grid-row: span 2; }
.tile-1, .tile-2, .tile-3, .tile-5 { grid-row: span 1; }
.tile:nth-child(2n) { background: linear-gradient(40deg, #161616, #4c4c4c); }
.quote-section { padding: 105px 24px; text-align: center; border-block: 1px solid var(--line); }
.testimonials { background: #000; color: #fff; }
.testimonials .container { max-width: 960px; }
.testimonials .section-heading { margin-bottom: 28px; }
.testimonials .section-heading h2 { font-size: 32px; margin-bottom: 22px; }
.testimonials .section-heading p { font-size: 13px; margin-bottom: 0; }
.testimonial-row { display: grid; grid-template-columns: 32% 1fr; gap: 60px; align-items: center; margin-top: 24px; }
.testimonial-photo { aspect-ratio: 2 / 3; }
.testimonial-copy h3 { font-size: 20px; margin-bottom: 20px; }
.testimonial-copy blockquote { margin: 0; }
.testimonial-copy p { font-size: 14px; line-height: 1.7; margin-bottom: 0; }
@media (max-width: 700px) { .testimonial-row { grid-template-columns: 1fr; gap: 24px; margin-top: 40px; } .testimonial-photo { width: min(100%, 300px); margin-inline: auto; } }
.service-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.service-card { padding: 35px 25px; border: 1px solid #484848; display: flex; flex-direction: column; min-height: 230px; }
.service-card h3 { font: 23px Georgia, serif; }
.service-card p { font-size: 13px; color: #aaa; }
.service-card a { margin-top: auto; }
.photo-strip { display: grid; grid-template-columns: repeat(5, 1fr); gap: 2px; }
.photo-strip .photo-placeholder { min-height: 150px; }
.photo-strip span { font-size: 13px; }
.site-footer { background: #292929; color: #e4e4e0; }
.footer-top { padding-block: 55px; display: flex; align-items: center; justify-content: space-between; gap: 30px; }
.footer-brand { font: 22px Georgia, serif; text-decoration: none; }
.footer-top p { color: #b9b9b3; font-size: 13px; margin: 0; }
.footer-bottom { border-top: 1px solid #454545; padding-block: 24px; display: flex; justify-content: space-between; gap: 20px; font-size: 10px; color: #bbb; }
.site-footer .footer-bottom { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; }
.footer-bottom > form { justify-self:end; }
.footer-documents { display:flex; justify-content:center; flex-wrap:wrap; gap:12px 24px; font-size:13px; }
@media(max-width:700px) { .site-footer .footer-bottom { grid-template-columns:1fr; text-align:center; } .footer-bottom > form { justify-self:center; } }
.public-document { overflow-wrap:anywhere; }
.page-hero, .intro { padding: 100px 24px; text-align: center; min-height: 450px; display: flex; flex-direction: column; align-items: center; justify-content: center; background: radial-gradient(ellipse at top right, #333, #0b0b0b 65%); }
.page-hero p { max-width: 540px; color: #bdbdb8; }
.framed { border: 1px solid #777; padding: 45px 65px; }
.portfolio-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.portfolio-grid[hidden] { display:none; }
.portfolio-flip-stage { overflow:hidden; }
.portfolio-flip-panel { display:grid; }
.portfolio-flip-panel > .portfolio-grid { grid-area:1 / 1; align-self:start; min-width:0; }
.portfolio-switch { display:flex; justify-content:center; gap:4px; margin:-12px auto 40px; padding:5px; width:fit-content; border:1px solid #ffffff50; border-radius:30px; }
.portfolio-switch button { border:0; border-radius:24px; background:transparent; color:#ddd; padding:13px 22px; min-height:44px; font:14px Arial,Helvetica,sans-serif; cursor:pointer; }
.portfolio-switch button[aria-pressed=true] { background:#f5f3ef; color:#191919; }
.portfolio-switch button:focus-visible { outline:2px solid white; outline-offset:4px; }
@media(max-width:700px) { .portfolio-switch button { padding-inline:18px; } }
.portfolio-flow { position: relative; isolation: isolate; overflow: clip; }
.portfolio-flow > section > * { position: relative; z-index: 2; }
.portfolio-flow::before, .portfolio-flow::after { content: ''; position: absolute; pointer-events: none; z-index: 1; mix-blend-mode: difference; }
.portfolio-flow::before { inset: -20% -25%; background: linear-gradient(115deg, transparent 33%, #fff0 39%, #ffffff24 46%, #ffffff38 48%, #ffffff0a 53%, transparent 60%); filter: blur(18px); transform: translateX(-7%); }
.portfolio-flow::after { width: 80%; height: 85%; left: 30%; top: 5%; border: 1px solid #ffffff38; border-radius: 50%; box-shadow: 0 0 35px #ffffff0a, inset 0 0 35px #ffffff0a; transform: rotate(-28deg); }
@media (prefers-reduced-motion: no-preference) {
    .portfolio-flow::before { animation: portfolio-light-crossing 16s ease-in-out infinite alternate paused; }
    .portfolio-flow::after { animation: portfolio-light-arc 21s ease-in-out infinite alternate paused; }
    .portfolio-flow.flow-visible::before, .portfolio-flow.flow-visible::after { animation-play-state: running; }
}
@keyframes portfolio-light-crossing {
    from { transform: translate(-9%, -4%) rotate(-3deg); opacity: .55; }
    to { transform: translate(9%, 4%) rotate(3deg); opacity: 1; }
}
@keyframes portfolio-light-arc {
    from { transform: translate(-5%, -3%) rotate(-28deg); opacity: .45; }
    to { transform: translate(5%, 3%) rotate(-18deg); opacity: .85; }
}
@media (max-width: 600px) { .portfolio-flow::after { width: 130%; left: 5%; } }
.portfolio-grid .photo-placeholder:has(.cms-site-photo) { overflow: hidden; }
.portfolio-grid .photo-placeholder:has(.cms-site-photo):hover { transform: none; filter: none; }
.portfolio-grid .cms-site-photo { cursor: zoom-in; }
.portfolio-grid .cms-site-photo:focus-visible { outline: 3px solid white; outline-offset: -6px; }
@media (prefers-reduced-motion: no-preference) {
    .portfolio-grid .cms-site-photo { transition: transform .45s ease, filter .45s ease; }
    .portfolio-grid .cms-site-photo:hover, .portfolio-grid .cms-site-photo:focus-visible { transform: scale(1.035); filter: brightness(1.12); }
}
body.portfolio-viewer-open { overflow: hidden; }
.portfolio-viewer { position: fixed; inset: 0; width: 100%; height: 100dvh; max-width: none; max-height: none; margin: 0; border: 0; padding: 64px 64px 24px; background: #090909f5; color: white; }
.portfolio-viewer[open] { display: flex; align-items: center; justify-content: center; }
.portfolio-viewer::backdrop { background: #000c; }
.portfolio-viewer img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; }
.portfolio-viewer button { position: absolute; width: 44px; height: 44px; padding: 0; border: 1px solid #ffffff55; color: white; background: #111c; cursor: pointer; font: 32px Arial, sans-serif; }
.portfolio-viewer button:focus-visible { outline: 2px solid white; outline-offset: 3px; }
.portfolio-close { top: 12px; right: 16px; }
.portfolio-count { position: absolute; top: 24px; left: 24px; font-size: 14px; }
.portfolio-prev { left: 12px; top: calc(50% - 22px); }
.portfolio-next { right: 12px; top: calc(50% - 22px); }
@media (max-width: 600px) { .portfolio-viewer { padding: 64px 12px 68px; } .portfolio-prev, .portfolio-next { top: auto; bottom: 12px; } }
.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; }
.steps article { border-top: 1px solid #c6c4be; padding-top: 25px; }
.steps article > span { font: 30px Georgia, serif; color: #8a877d; }
.steps h3 { margin-top: 20px; }
.steps p { font-size: 13px; color: #64645e; }
.lock-symbol { font-size: 50px; display: block; margin-bottom: 20px; }
.contact-grid { display: grid; grid-template-columns: repeat(3, 1fr); text-align: center; gap: 30px; }
.contact-grid p { color: #aaa; font-size: 13px; }
.contact-icon { font-size: 30px; display: block; margin-bottom: 22px; }
.map-placeholder { margin-top: 80px; min-height: 300px; background: repeating-linear-gradient(35deg, #202020, #202020 50px, #252525 51px, #252525 52px); display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 18px; padding: 30px; text-align: center; }
.map-placeholder small { color: #aaa; }
label { display: block; font-size: 13px; line-height: 1.5; }
input, textarea, select { width: 100%; display: block; padding: 12px 14px; background: #fff; color: #191919; border: 1px solid #c7c7c0; border-radius: 0; margin-top: 8px; }
textarea { resize: vertical; }
fieldset { padding: 0; margin: 0; border: 0; }
fieldset:disabled { opacity: .65; }
fieldset label { margin-bottom: 20px; }
.form-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.form-stack { display: grid; gap: 20px; }
.form-stack .button { justify-self: start; }
.admin-section { min-height: 70vh; padding-top: 60px; }
.admin-section h1 { font-size: 44px; }
.admin-section h2 { font-size: 26px; }
.admin-section .section-heading { margin-bottom: 35px; }
.panel { border: 1px solid #d9d7d0; padding: 30px; background: #fff; }
.login-panel { max-width: 440px; margin-inline: auto; }
.admin-grid { display: grid; grid-template-columns: 1fr 2fr; gap: 24px; align-items: start; }
.admin-toolbar, .panel-heading { display: flex; justify-content: space-between; gap: 15px; align-items: center; margin-bottom: 25px; }
.admin-toolbar p, .panel-heading h2 { margin: 0; }
.gallery-row { display: block; padding: 18px 10px; border-top: 1px solid #ddd; text-decoration: none; overflow-wrap: anywhere; }
.gallery-row span { display: block; font-size: 11px; color: #666; margin-top: 8px; }
.gallery-row.selected { background: #f0efea; }
.photo-panel, .account-panel { margin-top: 24px; }
.upload-form { display: flex; align-items: end; gap: 20px; margin-bottom: 15px; }
.upload-form label { flex: 1; min-width: 0; }
.admin-photos { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 25px; }
.admin-photos img { width: 100%; aspect-ratio: 4/3; object-fit: contain; background: #eee; }
.admin-photos p { overflow-wrap: anywhere; font-size: 12px; margin: 10px 0; }
.text-button { border: 0; background: none; padding: 8px 0; color: #75382f; text-decoration: underline; font-size: 12px; }
.account-panel summary { cursor: pointer; }
.account-panel form { margin-top: 25px; }
.message { padding: 18px 24px; border: 1px solid #b7c4b0; background: #edf3e8; }
.message.error { background: #fff1ee; border-color: #d7a69e; }
:focus-visible { outline: 3px solid #6584a0; outline-offset: 5px; }
.skip-link { position: fixed; top: -100px; left: 1rem; background: #fff; color: #000; padding: 1rem; z-index: 30; }
.skip-link:focus { top: 1rem; }
@media (max-width: 900px) { nav { gap: 18px; } .brand-name { font-size: 13px; } .split { gap: 35px; } .service-grid { grid-template-columns: 1fr 1fr; } .footer-top { flex-wrap: wrap; } }
@media (max-width: 700px) {
    .container { width: calc(100% - 40px); } .section { padding: 65px 0; } .section-heading { margin-bottom: 38px; }
    .site-header { padding: 16px 20px; min-height: 78px; flex-wrap: wrap; gap: 15px; } .brand-mark { font-size: 32px; width: 30px; line-height: 35px; }
    nav { flex-basis: 100%; flex-wrap: wrap; justify-content: center; gap: 12px 22px; } .js .menu-toggle { display: block; } .js nav { display: none; } .js nav.open { display: flex; }
    .home-hero { min-height: 550px; height: calc(88svh - 78px); } .hero-medallion { width: 290px; height: 290px; } .hero-medallion h1 { font-size: 43px; } .scroll-cue { bottom: 48px; }
    .hero-caption { font-size: 7px; letter-spacing: .15em; } .split { grid-template-columns: 1fr; gap: 35px; } .copy { order: 0; }
    .mosaic { grid-template-columns: 1fr 1fr; grid-auto-rows: 130px; gap: 10px; } .tile-4 { grid-row: span 1; }
    .portfolio-grid { grid-template-columns: 1fr 1fr; gap: 12px; } .photo-placeholder span { font-size: 15px; }
    .photo-strip { grid-template-columns: repeat(3, 1fr); } .photo-strip > :nth-child(n+4) { display: none; }
    .page-hero { min-height: 350px; padding: 70px 20px; } .framed { padding: 30px 20px; } .quote-section { padding: 70px 20px; }
    .steps, .contact-grid { grid-template-columns: 1fr; gap: 30px; } .contact-grid { gap: 45px; } .form-pair { grid-template-columns: 1fr; gap: 0; }
    .footer-top { flex-direction: column; align-items: start; padding-block: 40px; } .footer-bottom { flex-direction: column; }
    .admin-grid { grid-template-columns: 1fr; } .panel { padding: 22px; } .admin-section h1 { font-size: 34px; } .upload-form { flex-direction: column; align-items: stretch; } .admin-photos { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 380px) { .service-grid, .admin-photos { grid-template-columns: 1fr; } .brand-name { font-size: 11px; } .brand-name small { font-size: 7px; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } * { transition: none !important; } }

.gallery-collections { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:40px 28px; }
.collection-card { text-decoration:none; color:#111; text-align:center; cursor:pointer; background:#fff; padding-bottom:22px; }
.collection-card img,.collection-cover { display:block; width:100%; aspect-ratio:3/2; object-fit:cover; background:#e8e5df; transition:opacity .2s ease; }
.collection-card:hover img,.collection-card:focus-visible img,.collection-card:hover .collection-cover,.collection-card:focus-visible .collection-cover { opacity:.78; }
.collection-card:focus-visible { outline:2px solid #fff; outline-offset:6px; }
.collection-card-date { display:block; font-size:11px; line-height:1.6; letter-spacing:.18em; text-transform:uppercase; color:#666; }
@media(prefers-reduced-motion:reduce) { .collection-card img,.collection-cover { transition:none; } }
.collection-cover { display:grid; place-items:center; font-size:42px; }
.collection-card h2 { margin:20px 12px 10px; font-family:Arial,Helvetica,sans-serif; font-size:16px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; overflow-wrap:anywhere; }
.collection-card p { font-size:13px; }
.client-photos { columns:3; column-gap:20px; margin-top:32px; }
.client-photos figure { margin:0 0 20px; break-inside:avoid; }
.client-photos img { width:100%; display:block; }
@media(max-width:800px) { .gallery-collections { grid-template-columns:repeat(2,minmax(0,1fr)); } .client-photos { columns:2; } }
@media(max-width:500px) { .gallery-collections { grid-template-columns:1fr; } .client-photos { columns:1; } }
.gallery-experience { background:#fff; color:#333; color-scheme:light; }
.gallery-experience > .site-header,.gallery-experience > .site-footer { display:none; }
.collection-hero { min-height:100svh; position:relative; display:grid; place-items:center; background:#262626; color:#fff; text-align:center; padding:100px 24px; isolation:isolate; }
.collection-hero-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.collection-hero::after { content:''; position:absolute; inset:0; background:linear-gradient(0deg,#0008,#0003 35%); z-index:-1; }
.collection-hero-content { max-width:800px; }
.collection-hero h1 { font-family:Arial,Helvetica,sans-serif; font-size:clamp(30px,3vw,48px); font-weight:600; text-transform:uppercase; letter-spacing:.025em; margin-bottom:18px; overflow-wrap:anywhere; }
.collection-hero-content p { font-size:12px; letter-spacing:.12em; white-space:pre-line; }
.collection-enter { display:inline-block; margin-top:24px; padding:12px 24px; border:1px solid #fff; text-decoration:none; font-size:10px; letter-spacing:.12em; text-transform:uppercase; }
.collection-signature { position:absolute; bottom:48px; font-size:10px; letter-spacing:.16em; text-transform:uppercase; text-decoration:none; }
.collection-content { scroll-margin-top:0; }
.collection-toolbar { position:sticky; top:0; z-index:10; display:flex; justify-content:space-between; align-items:center; gap:20px; padding:20px 16px; background:#fff; }
.collection-toolbar strong { display:block; font-size:14px; text-transform:uppercase; letter-spacing:.08em; }
.collection-toolbar small { display:block; font-size:8px; text-transform:uppercase; letter-spacing:.15em; color:#777; margin-top:5px; }
.collection-actions { display:flex; align-items:center; gap:24px; font-size:11px; color:#666; }
.collection-actions a { text-decoration:none; }
.collection-actions button { border:0; background:transparent; color:inherit; padding:8px; }
.collection-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:6px; padding:0 10px; }
.collection-photo { position:relative; border:0; padding:0; background:#eee; aspect-ratio:2/3; overflow:hidden; }
.collection-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.collection-photo span { position:absolute; bottom:16px; right:16px; color:white; background:#0009; padding:8px; font-size:11px; opacity:0; }
.collection-photo:hover span,.collection-photo:focus-visible span { opacity:1; }
.collection-bottom { text-align:center; padding:48px 20px; }
.collection-bottom a { display:inline-block; color:#fff; background:#333; padding:14px 24px; font-size:10px; text-transform:uppercase; letter-spacing:.08em; text-decoration:none; }
.collection-empty { padding:60px 24px; text-align:center; }
.photo-viewer { width:100vw; max-width:none; height:100dvh; max-height:none; border:0; padding:0; background:white; color:#777; }
.photo-viewer[open] { display:grid; grid-template-columns:60px 1fr 60px; grid-template-rows:48px minmax(0,1fr); }
.viewer-toolbar { grid-column:1/-1; display:flex; justify-content:space-between; align-items:center; padding:4px 20px; font-size:12px; }
.photo-viewer button { background:transparent; border:0; color:#777; padding:10px; }
.photo-viewer figure { margin:0; min-height:0; display:flex; flex-direction:column; align-items:center; padding-bottom:14px; }
.photo-viewer figure img { min-height:0; max-width:100%; height:100%; object-fit:contain; }
.photo-viewer figcaption { flex-shrink:0; font-size:12px; padding-top:14px; overflow-wrap:anywhere; }
.viewer-prev,.viewer-next { font-size:36px; align-self:center; }
body.viewer-open { overflow:hidden; }
@media(max-width:1100px) { .collection-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(max-width:600px) { .collection-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:4px; padding:0 4px; } .collection-toolbar { padding:16px 10px; gap:12px; } .collection-actions { gap:10px; } .collection-actions > span { display:none; } .collection-toolbar strong { font-size:12px; } .photo-viewer[open] { grid-template-columns:36px minmax(0,1fr) 36px; } .collection-signature { font-size:8px; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }

.form-stack .watermark-option { display:flex; align-items:center; gap:10px; }
.form-stack .watermark-option input { width:auto; margin:0; }
html:has(body.gallery-experience) { scroll-padding-top:0; }
.collection-content { min-height:100svh; }
.collection-hero h1 { font-size:clamp(36px,4vw,54px); font-weight:700; letter-spacing:.035em; margin-bottom:20px; }
.collection-date { display:block; font-size:13px; font-weight:500; letter-spacing:.12em; text-transform:uppercase; }
.collection-enter { margin-top:42px; padding:13px 22px; font-size:11px; }
.gallery-back { position:fixed; top:16px; right:16px; z-index:40; display:inline-flex; align-items:center; padding:12px 16px; background:rgba(20,20,20,.85); color:#fff; border:1px solid #ffffff80; text-decoration:none; font-size:12px; letter-spacing:.025em; box-shadow:0 2px 12px #0002; }
.gallery-back:hover { background:#111; }
.gallery-back:focus-visible { outline:3px solid #aaa; outline-offset:3px; }
.gallery-experience .collection-toolbar { min-height:76px; }
.collection-actions .gallery-back { position:static; background:#222; color:#fff; white-space:nowrap; }

@media(max-width:600px) { .gallery-back { top:10px; right:10px; padding:10px 12px; font-size:11px; } .gallery-experience .collection-toolbar { flex-wrap:wrap; } .collection-actions { flex-wrap:wrap; }  }
.collection-card img.cover-pos-top,.collection-hero-image.cover-pos-top { object-position:center top; }
.collection-card img.cover-pos-center,.collection-hero-image.cover-pos-center { object-position:center center; }
.collection-card img.cover-pos-bottom,.collection-hero-image.cover-pos-bottom { object-position:center bottom; }
.collection-card img.cover-fit-contain,.collection-hero-image.cover-fit-contain { object-fit:contain; background:#262626; }
.cover-settings { border:1px solid #ccc; padding:18px; display:grid; gap:16px; min-width:0; }
.cover-preview-image { width:100%; max-width:480px; aspect-ratio:3/2; display:block; object-fit:cover; background:#262626; }
.cover-preview-image.position-top { object-position:center top; }
.cover-preview-image.position-center { object-position:center center; }
.cover-preview-image.position-bottom { object-position:center bottom; }
.cover-preview-image.fit-contain { object-fit:contain; }
.admin-inline-field { display:flex; gap:10px; align-items:center; min-width:0; }
.admin-inline-field input { flex:1; min-width:0; }
.admin-inline-field .button { flex-shrink:0; }
@media(max-width:500px) { .admin-inline-field { flex-wrap:wrap; } .admin-inline-field input { flex-basis:100%; } }
.collection-thumbnail { position:relative; }
.collection-lock { position:absolute; inset:0; display:grid; place-items:center; pointer-events:none; background:#0002; }
.collection-lock svg { width:32px; height:36px; stroke:#fff; stroke-width:2; stroke-linecap:round; filter:drop-shadow(0 1px 3px #0009); }
.photo-tile { position:relative; min-width:0; }
.photo-tile .collection-photo { width:100%; display:block; }
.photo-tools { position:absolute; bottom:0; right:0; left:0; display:flex; justify-content:flex-end; gap:4px; padding:22px 10px 8px; background:linear-gradient(transparent,#0009); opacity:0; transition:opacity .2s ease; pointer-events:none; }
.photo-tile:hover .photo-tools,.photo-tile:has(:focus-visible) .photo-tools { opacity:1; pointer-events:auto; }
.photo-tools button { background:transparent; border:0; color:#fff; width:40px; height:40px; padding:8px; }
.photo-tools svg { width:24px; height:24px; stroke:currentColor; stroke-width:1.6; fill:none; stroke-linejoin:round; stroke-linecap:round; }
.photo-action-dialog { width:min(520px,calc(100% - 32px)); max-height:90dvh; border:0; padding:40px; background:#fff; color:#222; }
.photo-action-dialog::backdrop { background:#0008; }
.photo-action-dialog h2 { font:600 20px Arial,sans-serif; text-transform:uppercase; letter-spacing:.06em; margin-bottom:30px; }
.action-close { position:absolute; top:8px; right:10px; background:none; border:0; font-size:26px; color:#555; }
.share-copy { display:flex; background:#f5f5f5; }
.share-copy input { width:100%; min-width:0; border:0; padding:14px; background:transparent; color:#222; }
.share-copy button,.share-services button { border:0; background:#333; color:#fff; padding:14px; }
.share-services { display:flex; flex-wrap:wrap; gap:20px; align-items:center; margin:30px 0; }
.share-services a { color:#555; cursor:pointer; }
@media(hover:none) { .photo-tools { opacity:1; pointer-events:auto; } }
@media(max-width:500px) { .photo-action-dialog { padding:32px 20px; } }
@media(prefers-reduced-motion:reduce) { .photo-tools { transition:none; } }
.photo-tools button[aria-pressed=true] svg { fill:#fff; }
.photo-tile:has([data-photo-select][aria-pressed=true]) .photo-tools { opacity:1; pointer-events:auto; }
.selection-feedback { position:fixed; bottom:12px; left:50%; transform:translateX(-50%); max-width:90%; padding:12px 20px; background:#222; color:white; z-index:20; font-size:13px; text-align:center; }
#bulk-delete { display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin:24px 0; }
.admin-photo-selectable > label { display:block; margin-bottom:10px; cursor:pointer; }
.admin-photo-selectable:has(input:checked) { outline:2px solid #555; outline-offset:6px; }
.hero-back { position:absolute; top:20px; left:20px; z-index:2; padding:12px 16px; background:rgba(20,20,20,.8); color:#fff; border:1px solid #ffffff80; text-decoration:none; font-size:12px; letter-spacing:.025em; }
.hero-back:hover { background:#111; }
.hero-back:focus-visible { outline:3px solid white; outline-offset:3px; }
@media(max-width:600px) { .hero-back { top:12px; left:12px; padding:10px 12px; } }
/* Vékony vonalas, a kapott logómintához igazított fejlécjel. */
.brand { gap:4px; color:#333; }
.brand-camera { width:42px; height:56px; flex-shrink:0; stroke:currentColor; stroke-width:.8; stroke-linecap:round; stroke-linejoin:round; }
.brand .brand-name { font-family:'Times New Roman',Georgia,serif; font-size:15px; font-weight:400; letter-spacing:.12em; white-space:nowrap; }
.brand .brand-name small { font-family:Arial,Helvetica,sans-serif; font-size:10px; font-weight:400; letter-spacing:.23em; margin-top:3px; }
@media(max-width:600px) { .brand-camera { width:35px; height:48px; } .brand .brand-name { font-size:12px; } .brand .brand-name small { font-size:8px; } }

.collection-card { box-shadow:0 4px 18px rgba(0,0,0,.08); }
.gallery-list-light .collection-card { box-shadow: 0 0 18px rgba(255,255,255,.24), 0 0 42px rgba(255,255,255,.16), 0 0 78px rgba(255,255,255,.09); }
body:has(.gallery-list-light), body:has(.gallery-list-light) > main, .section.gallery-list-light { background:#000; color:#faf9f6; }
body:has(.gallery-login-dark), body:has(.gallery-login-dark) > main, .section.gallery-login-dark { background:#000; color:#fff; }
.gallery-login-dark > .container > p > .text-link { color:#fff; }
.gallery-login-dark .login-panel { background:#fff; color:#202020; }
.site-footer .footer-top { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; }
.site-footer .brand { color:#e4e4e0; justify-self:start; }
.footer-top > .text-link { justify-self:end; }
.footer-social { display:flex; align-items:center; justify-content:center; gap:16px; }
.social-icon { width:25px; height:25px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; color:#fff; }
.social-icon svg { width:17px; height:17px; fill:currentColor; }
.social-facebook { background:#4267a9; }.social-twitter { background:#49a9e9; }.social-instagram { background:#d53ca4; }.social-linkedin { background:#0085b4; }
a.social-icon:hover { filter:brightness(1.18); } a.social-icon:focus-visible { outline:2px solid white; outline-offset:4px; }
@media(max-width:800px) { .site-footer .footer-top { grid-template-columns:1fr; justify-items:center; } .site-footer .brand,.footer-top > .text-link { justify-self:center; } }
.site-footer .footer-top { grid-template-columns:1fr 1fr; }
.footer-top > .text-link { grid-column:2; grid-row:1; }
.footer-top .footer-profiles { grid-column:1 / -1; grid-row:2; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; width:100%; }
.footer-profile { display:flex; align-items:center; gap:16px; padding:22px; border-radius:10px; background:#ffffff06; border:1px solid #ffffff20; color:#f1f0ec; text-decoration:none; min-width:0; }
.footer-profile-avatar { display:grid; place-items:center; flex:0 0 52px; height:52px; border-radius:50%; border:1px solid #ccc; background:white; }
.footer-profile-avatar svg { width:28px; height:28px; }
.footer-profile-avatar img { display:block; width:100%; height:100%; object-fit:cover; border-radius:50%; }
.footer-profile-instagram .footer-profile-avatar { color:#a33276; border-color:#c75596; }
.footer-profile-facebook .footer-profile-avatar { color:#2460ab; border-color:#719bcd; }
.footer-profile-copy { display:flex; flex-direction:column; gap:5px; min-width:0; }
.footer-profile-copy strong { font-size:15px; overflow-wrap:anywhere; }
.footer-profile-copy > span { font-size:12px; line-height:1.5; color:#c0bfba; }
.footer-profile-follow { margin-left:auto; flex-shrink:0; padding:10px 14px; background:#0866c6; color:#fff; border-radius:7px; font-size:13px; }
.footer-profile:hover .footer-profile-follow { background:#064f9a; }
.footer-profile:focus-visible { outline:3px solid white; outline-offset:5px; }
.social-section { border-top:1px solid #ffffff12; }
.social-section-dark { background:#101010; color:#f5f3ef; }
.social-section-light { background:#f5f3ef; color:#252522; border-top-color:#25252218; }
.social-section .section-heading { max-width:720px; margin-inline:auto; }
.social-section .section-heading > p:last-child { line-height:1.8; color:#bdbdb7; }
.social-section-light .section-heading > p:last-child { color:#5c5c57; }
.social-section .footer-profiles { display:grid; grid-template-columns:minmax(0,1fr); gap:18px; max-width:560px; margin-inline:auto; }
.social-section .footer-profile { width:100%; }
.social-section-light .footer-profile { background:#ffffff50; border-color:#25252224; color:#252522; }
.social-section-light .footer-profile-copy > span { color:#5c5c57; }
.social-section-light .footer-profile:focus-visible { outline-color:#252522; }
@media(max-width:900px) { .footer-top .footer-profiles { grid-template-columns:1fr; } }
@media(max-width:600px) { .site-footer .footer-top { grid-template-columns:1fr; justify-items:center; } .footer-top > .text-link { grid-column:1; grid-row:2; justify-self:center; } .footer-top .footer-profiles { grid-row:3; } .footer-profile { padding:16px; gap:10px; } .footer-profile-avatar { flex-basis:42px; height:42px; } .footer-profile-follow { padding:10px; } }

.home-hero .hero-caption { font-size:clamp(12px,1.1vw,15px); letter-spacing:.12em; color:#dedede; text-align:center; max-width:calc(100% - 32px); line-height:1.6; }
@media(prefers-reduced-motion:no-preference) {
    body:has(.home-hero) .portfolio-preview .tile { transition:transform .5s ease,filter .5s ease; }
    body:has(.home-hero) .portfolio-preview .tile:hover { transform:scale(1.025); filter:brightness(1.12); z-index:1; }
    body:has(.home-hero) .portfolio-preview .tile img { transition:transform .6s ease; }
    body:has(.home-hero) .portfolio-preview .tile:hover img { transform:scale(1.035); }
    .home-hero .scroll-cue { animation:home-arrow 1.8s ease-in-out 2; }
    @keyframes home-arrow { 0%,100% { transform:translateY(0); } 50% { transform:translateY(7px); } }
}
@media(prefers-reduced-motion:no-preference) {
    .portfolio-grid > .photo-placeholder { transition:transform .5s ease,filter .5s ease; }
    .portfolio-grid > .photo-placeholder:hover { transform:scale(1.025); filter:brightness(1.12); }
    .collection-thumbnail { overflow:hidden; }
    .collection-thumbnail img { transition:opacity .2s ease,transform .6s ease; }
    .collection-card:hover .collection-thumbnail img { transform:scale(1.025); }
    .photo-tile .collection-photo img { transition:transform .6s ease; }
    .photo-tile .collection-photo:hover img { transform:scale(1.025); }
}
.cms-editable { position:relative; display:contents; }
.cms-edit-button { position:absolute; top:0; right:0; z-index:45; background:var(--admin-accent); color:#fff; border:1px solid white; border-radius:4px; font:600 12px Arial; padding:7px 10px; cursor:pointer; }
.cms-image > .cms-edit-button { background:var(--admin-accent); }
.cms-admin-link { background:var(--admin-accent); color:white!important; padding:10px 16px; }
.cms-status { position:fixed; bottom:0; left:0; z-index:60; background:var(--admin-accent); color:white; padding:10px 18px; font:13px Arial; }
#cms-editor { width:min(600px,95vw); max-height:90vh; background:white; color:#222; border:3px solid var(--admin-accent); padding:28px; }
#cms-editor::backdrop { background:#0009; }
#cms-editor [hidden] { display:none; }
.cms-site-photo { width:100%; height:100%; object-fit:cover; position:absolute; inset:0; }
.crop-left { object-position:left center; }
.crop-center { object-position:center center; }
.crop-right { object-position:right center; }
.crop-top { object-position:center top; }
.crop-bottom { object-position:center bottom; }
.crop-left-top { object-position:left top; }
.crop-right-top { object-position:right top; }
.crop-left-bottom { object-position:left bottom; }
.crop-right-bottom { object-position:right bottom; }
.cms-crop-preview { width:200px; max-width:100%; aspect-ratio:4/5; overflow:hidden; margin:12px auto; }
.cms-crop-preview img { width:100%; height:100%; object-fit:cover; }
.photo-placeholder:has(.cms-site-photo) { background:transparent; }
.photo-placeholder:has(.cms-site-photo)::before,
.photo-placeholder:has(.cms-site-photo)::after { display:none; }
:is(.split .portrait, .testimonial-photo):has(.cms-site-photo) { border-radius:10px; overflow:visible; }
:is(.split .portrait, .testimonial-photo) > .cms-site-photo { border-radius:10px; box-shadow:0 10px 28px rgba(0,0,0,.22); }
.cms-editable { display:contents; outline:none; }
.cms-edit-button { position:fixed; right:auto; }
.cms-edit-button { width:28px; height:28px; padding:0; font-size:18px; background:var(--admin-accent); border:1px solid #ffffffb3; border-radius:50%; box-shadow:0 2px 5px #0002; }
.cms-image > .cms-edit-button { background:var(--admin-accent); }
.cms-edit-button:hover { filter:brightness(1.15); }
.reference-track { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:thin; gap:0; }
.reference-track > .testimonial-row { flex:0 0 100%; min-width:0; box-sizing:border-box; padding:12px 38px; margin:0; scroll-snap-align:start; }
.reference-controls { display:flex; align-items:center; justify-content:center; gap:18px; margin-top:28px; }
.reference-controls button { border:1px solid #777; color:#fff; background:transparent; min-height:40px; padding:8px 16px; }
.reference-controls button:disabled { opacity:.3; cursor:default; }
.reference-controls .reference-add { background:var(--admin-accent); border-color:var(--admin-accent); }
#reference-editor { width:min(580px,95vw); max-height:90dvh; padding:28px; background:#fff; color:#222; border:2px solid var(--admin-accent); }
#reference-editor::backdrop { background:#0009; }
@media(max-width:600px) { .reference-track > .testimonial-row { padding:12px 32px; } .reference-controls { flex-wrap:wrap; } }
.portfolio-preview .mosaic { display:block; columns:3; column-gap:16px; max-width:960px; margin-inline:auto; }
.portfolio-preview .mosaic .tile { display:flex; width:100%; min-height:0; aspect-ratio:2/3; break-inside:avoid; margin:0 0 16px; }
.portfolio-preview .mosaic .tile-0,.portfolio-preview .mosaic .tile-3,.portfolio-preview .mosaic .tile-4 { aspect-ratio:4/3; }
.portfolio-preview .mosaic .tile:has(img) { display:block; aspect-ratio:auto; }
.portfolio-preview .mosaic .tile .cms-site-photo { position:static; display:block; width:100%; height:auto; object-fit:contain; }
.portfolio-preview .mosaic .tile:has(img)::before { display:none; }
.mosaic-add { display:block; margin:20px auto; background:var(--admin-accent); color:#fff; border:0; padding:12px 18px; }
#mosaic-editor { width:min(560px,95vw); max-height:90dvh; padding:28px; background:white; color:#222; border:2px solid var(--admin-accent); }
#mosaic-editor::backdrop { background:#0009; }
@media(max-width:700px) { .portfolio-preview .mosaic { columns:2; column-gap:12px; } .portfolio-preview .mosaic .tile { margin-bottom:12px; } }
@media(max-width:420px) { .portfolio-preview .mosaic { columns:1; } }

.contact-trap { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
.contact-message-body { white-space:pre-wrap; overflow-wrap:anywhere; }
.contact-phone-icon svg { display: block; width: 30px; height: 40px; margin: 0 auto; stroke: #fff; stroke-width: 1.8; stroke-linecap: round; }
.contact-grid [data-phone-result] a,
.contact-grid [data-email-result] a,
.contact-grid .contact-location { color:#fff; font-family:inherit; font-size:clamp(18px,1.6vw,22px); font-weight:500; letter-spacing:0; line-height:1.5; text-decoration:none; overflow-wrap:anywhere; }
.contact-grid [data-phone-result] a:hover { text-decoration: underline; text-underline-offset: 6px; }
.contact-area-map { margin: 56px 0 0; background: transparent; border: 0; overflow: hidden; }
.contact-area-map img { display: block; width: 100%; height: auto; }
@media(max-width:600px) { .contact-area-map img { width: 150%; max-width: none; margin-left: -25%; } }
.contact-inbox-item { border-top:1px solid #ddd; padding:24px 0; }
.contact-grid { grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); }
img.image-loading { opacity:0; }
@media (prefers-reduced-motion:reduce), print { img.image-loading { opacity:1; } }
.contact-form input,.contact-form textarea { width:100%; }
[data-mfa-qr] { width:240px; max-width:100%; background:#fff; margin:20px 0; }
[data-mfa-qr] svg { display:block; width:100%; height:auto; }
#admin-security code, [data-recovery-codes] { overflow-wrap:anywhere; white-space:pre-wrap; }
.contact-form-actions .cf-turnstile { margin:0; width:300px; max-width:100%; flex:0 0 300px; }
.contact-form-actions { display:flex; align-items:center; justify-content:flex-start; gap:16px 24px; flex-wrap:wrap; }
.contact-form-actions > .button { flex-shrink:0; }
.contact-form-actions:has(.cf-turnstile) > .button { min-height:65px; display:inline-flex; align-items:center; justify-content:center; }
.contact-form-actions [data-contact-status] { margin:0 0 0 auto; max-width:100%; padding:10px 14px; font-size:13px; }
.contact-form-actions [data-contact-status]:empty { display:none; }
@media (max-width:600px) {
    .contact-form-actions [data-contact-status] { flex-basis:100%; margin-left:0; }
}
.contact-form > label,.contact-form .form-pair { margin-bottom:20px; }


.contact-grid [data-email-result] a:hover { text-decoration:underline; text-underline-offset:6px; }


:is(#cms-editor, #reference-editor, #mosaic-editor) .button.solid { background:var(--admin-accent); border-color:var(--admin-accent); }
/* Readable controls and a more compact mobile homepage. */
.site-header nav a { font-size:14px; }
.site-footer .footer-bottom { font-size:12px; }
.text-link { font-size:14px; }
.hero-medallion .eyebrow { font-size:10px; letter-spacing:.12em; }
.service-details details { border-bottom:1px solid #24242426; padding:0; }
.service-details details:first-of-type { border-top:1px solid #24242426; }
.service-details summary { position:relative; display:flex; align-items:center; justify-content:space-between; gap:24px; padding:25px 4px; cursor:pointer; list-style:none; font-family:Georgia,'Times New Roman',serif; font-size:clamp(19px,2vw,23px); font-weight:400; line-height:1.4; color:#262624; }
.service-details summary::-webkit-details-marker { display:none; }
.service-details summary::after { content:'+'; flex:0 0 28px; width:28px; height:28px; display:grid; place-items:center; border:1px solid #24242440; border-radius:50%; font:300 20px/1 Arial,Helvetica,sans-serif; color:#555550; transition:background-color .2s,color .2s; }
.service-details details[open] > summary::after { content:'−'; background:#262624; border-color:#262624; color:#fff; }
.service-details summary:hover::after { background:#262624; color:#fff; }
.service-details details p { margin:0; padding:0 52px 28px 4px; color:#484844; line-height:1.85; }
.service-details summary:focus-visible { outline:2px solid #262624; outline-offset:4px; border-radius:2px; }
@media(max-width:600px) { .service-details summary { gap:16px; padding-block:21px; } .service-details details p { padding-right:4px; } }
@media(max-width:700px) {
    .page-home .section { padding:44px 0; }
    .page-home .section-heading { margin-bottom:28px; }
    .page-home .quote-section { padding:48px 20px; }
    .page-home .portfolio-preview .mosaic { columns:2; column-gap:12px; }
    .page-home .center { margin-top:28px; }
    .page-home .hero-caption { font-size:10px; }
    .page-home .split .portrait { max-height:460px; }
    .page-home .testimonial-photo { max-height:380px; }
    .page-home .testimonial-copy blockquote { font-size:14px; }
    .eyebrow { font-size:11px; }
    .service-card .text-link { display:inline-flex; align-items:center; min-height:44px; }
    .service-details summary { min-height:44px; }
}

.privacy-preview { overflow-wrap:anywhere; }
.privacy-preview h1 { font-size:clamp(2rem,5vw,3rem); margin-top:36px; }
.privacy-preview h2 { font-size:1.6rem; margin-top:36px; }
.privacy-preview p { white-space:pre-wrap; }
.gallery-workflow{box-sizing:border-box;max-width:1120px;background:#faf7f9;border:1px solid #e8dfe5;border-radius:14px;padding:30px 32px;margin:28px auto 18px;color:#342c32;line-height:1.7}
.gallery-workflow p{margin:0 0 10px}.gallery-workflow form{margin:14px 0}.gallery-workflow summary{cursor:pointer}.gallery-workflow button{white-space:normal;border-radius:5px;padding:13px 22px;line-height:1.5}
.gallery-delivery-row{display:flex;align-items:center;justify-content:space-between;gap:24px 40px}.gallery-delivery-row>div{min-width:0}.gallery-delivery-row>form{flex-shrink:0;margin:0}
.gallery-workflow .gallery-workflow-kicker{font-size:10px;text-transform:uppercase;letter-spacing:.2em;color:#944c78;margin-bottom:8px}.gallery-workflow h2{font-family:Georgia,serif;font-size:clamp(24px,3vw,32px);font-weight:400;line-height:1.25;margin:0 0 12px}
.gallery-workflow .button.solid{background:#222;border-color:#222;color:#fff}.gallery-workflow .button.solid:hover{background:#444;border-color:#444}.gallery-workflow .small{color:#746771;font-size:12px}
.gallery-delete-request,.gallery-workflow-note{border-top:1px solid #e8dfe5;margin-top:22px;padding-top:18px}.gallery-delete-request summary{font-size:13px;font-weight:500;color:#746771}.gallery-delete-content{max-width:720px;padding-top:14px}.gallery-delete-content p{font-size:13px}.gallery-delete-content form{margin-bottom:0}
.gallery-workflow-success{color:#476248}.gallery-access-note{box-sizing:border-box;max-width:1120px;margin:0 auto 28px;padding:18px 24px;border-left:3px solid #944c78;border-radius:0 8px 8px 0;background:#f8f5f7;font-size:13px;line-height:1.7}.gallery-access-note strong{display:block;color:#853e6c;margin-bottom:4px}.gallery-access-note p{margin:0;color:#746771}
.photo-tools button:disabled{opacity:.5;cursor:default}
@media(max-width:1180px){.gallery-workflow,.gallery-access-note{margin-left:20px;margin-right:20px}}
@media(max-width:600px){.gallery-workflow{padding:22px 20px;margin:20px 12px 14px}.gallery-delivery-row{flex-direction:column;align-items:stretch;gap:16px}.gallery-delivery-row>form .button{width:100%}.gallery-access-note{margin:0 12px 22px;padding:16px 18px}.gallery-delete-content .button{max-width:100%}}
.photo-tile:has([data-photo-select]) .photo-tools{opacity:1;pointer-events:auto;z-index:1}
.collection-toolbar .collection-countdown{flex:1;margin:0;text-align:center;font-size:13px;font-weight:600;line-height:1.6;color:#333}
@media(max-width:600px){.collection-toolbar .collection-countdown{order:3;flex-basis:100%;text-align:left}}
.collection-actions .collection-confirm-form{margin:0}.collection-download-confirmed{margin:0;color:#333;font-size:12px}.collection-toolbar{flex-wrap:wrap}.collection-toolbar .collection-actions{flex-wrap:wrap;gap:12px}
.collection-actions .gallery-back,.collection-confirm-form .button,.collection-bottom a,.gallery-workflow .button{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:11px 18px;border:1px solid #222;border-radius:0;background:#222;color:#fff;font-family:inherit;font-size:12px;font-weight:500;line-height:18px;letter-spacing:.025em;text-transform:none;text-decoration:none;white-space:normal;text-align:center;box-shadow:none;cursor:pointer}
.collection-actions .gallery-back:hover,.collection-confirm-form .button:hover,.collection-bottom a:hover,.gallery-workflow .button:hover{background:#444;border-color:#444;color:#fff}
.collection-actions .gallery-back:focus-visible,.collection-confirm-form .button:focus-visible,.collection-bottom a:focus-visible,.gallery-workflow .button:focus-visible{outline:2px solid #555;outline-offset:3px}

.cms-crop-preview { width:320px; touch-action:none; cursor:grab; background:#eee; }
.cms-crop-preview:active { cursor:grabbing; }
.cms-crop-preview img { user-select:none; pointer-events:none; }
[data-cms-crop] input[type=range] { width:100%; }
.portfolio-preview .mosaic .tile[data-image-cropped] { aspect-ratio:2/3; overflow:hidden; }
.portfolio-preview .mosaic :is(.tile-0,.tile-3,.tile-4)[data-image-cropped] { aspect-ratio:4/3; }
.portfolio-preview .mosaic .tile[data-image-cropped] .cms-site-photo { height:100%; object-fit:cover; }
.crop-x-0 { object-position: 0% var(--crop-y,50%); } .crop-y-0 { --crop-y: 0%; }
.crop-x-1 { object-position: 1% var(--crop-y,50%); } .crop-y-1 { --crop-y: 1%; }
.crop-x-2 { object-position: 2% var(--crop-y,50%); } .crop-y-2 { --crop-y: 2%; }
.crop-x-3 { object-position: 3% var(--crop-y,50%); } .crop-y-3 { --crop-y: 3%; }
.crop-x-4 { object-position: 4% var(--crop-y,50%); } .crop-y-4 { --crop-y: 4%; }
.crop-x-5 { object-position: 5% var(--crop-y,50%); } .crop-y-5 { --crop-y: 5%; }
.crop-x-6 { object-position: 6% var(--crop-y,50%); } .crop-y-6 { --crop-y: 6%; }
.crop-x-7 { object-position: 7% var(--crop-y,50%); } .crop-y-7 { --crop-y: 7%; }
.crop-x-8 { object-position: 8% var(--crop-y,50%); } .crop-y-8 { --crop-y: 8%; }
.crop-x-9 { object-position: 9% var(--crop-y,50%); } .crop-y-9 { --crop-y: 9%; }
.crop-x-10 { object-position: 10% var(--crop-y,50%); } .crop-y-10 { --crop-y: 10%; }
.crop-x-11 { object-position: 11% var(--crop-y,50%); } .crop-y-11 { --crop-y: 11%; }
.crop-x-12 { object-position: 12% var(--crop-y,50%); } .crop-y-12 { --crop-y: 12%; }
.crop-x-13 { object-position: 13% var(--crop-y,50%); } .crop-y-13 { --crop-y: 13%; }
.crop-x-14 { object-position: 14% var(--crop-y,50%); } .crop-y-14 { --crop-y: 14%; }
.crop-x-15 { object-position: 15% var(--crop-y,50%); } .crop-y-15 { --crop-y: 15%; }
.crop-x-16 { object-position: 16% var(--crop-y,50%); } .crop-y-16 { --crop-y: 16%; }
.crop-x-17 { object-position: 17% var(--crop-y,50%); } .crop-y-17 { --crop-y: 17%; }
.crop-x-18 { object-position: 18% var(--crop-y,50%); } .crop-y-18 { --crop-y: 18%; }
.crop-x-19 { object-position: 19% var(--crop-y,50%); } .crop-y-19 { --crop-y: 19%; }
.crop-x-20 { object-position: 20% var(--crop-y,50%); } .crop-y-20 { --crop-y: 20%; }
.crop-x-21 { object-position: 21% var(--crop-y,50%); } .crop-y-21 { --crop-y: 21%; }
.crop-x-22 { object-position: 22% var(--crop-y,50%); } .crop-y-22 { --crop-y: 22%; }
.crop-x-23 { object-position: 23% var(--crop-y,50%); } .crop-y-23 { --crop-y: 23%; }
.crop-x-24 { object-position: 24% var(--crop-y,50%); } .crop-y-24 { --crop-y: 24%; }
.crop-x-25 { object-position: 25% var(--crop-y,50%); } .crop-y-25 { --crop-y: 25%; }
.crop-x-26 { object-position: 26% var(--crop-y,50%); } .crop-y-26 { --crop-y: 26%; }
.crop-x-27 { object-position: 27% var(--crop-y,50%); } .crop-y-27 { --crop-y: 27%; }
.crop-x-28 { object-position: 28% var(--crop-y,50%); } .crop-y-28 { --crop-y: 28%; }
.crop-x-29 { object-position: 29% var(--crop-y,50%); } .crop-y-29 { --crop-y: 29%; }
.crop-x-30 { object-position: 30% var(--crop-y,50%); } .crop-y-30 { --crop-y: 30%; }
.crop-x-31 { object-position: 31% var(--crop-y,50%); } .crop-y-31 { --crop-y: 31%; }
.crop-x-32 { object-position: 32% var(--crop-y,50%); } .crop-y-32 { --crop-y: 32%; }
.crop-x-33 { object-position: 33% var(--crop-y,50%); } .crop-y-33 { --crop-y: 33%; }
.crop-x-34 { object-position: 34% var(--crop-y,50%); } .crop-y-34 { --crop-y: 34%; }
.crop-x-35 { object-position: 35% var(--crop-y,50%); } .crop-y-35 { --crop-y: 35%; }
.crop-x-36 { object-position: 36% var(--crop-y,50%); } .crop-y-36 { --crop-y: 36%; }
.crop-x-37 { object-position: 37% var(--crop-y,50%); } .crop-y-37 { --crop-y: 37%; }
.crop-x-38 { object-position: 38% var(--crop-y,50%); } .crop-y-38 { --crop-y: 38%; }
.crop-x-39 { object-position: 39% var(--crop-y,50%); } .crop-y-39 { --crop-y: 39%; }
.crop-x-40 { object-position: 40% var(--crop-y,50%); } .crop-y-40 { --crop-y: 40%; }
.crop-x-41 { object-position: 41% var(--crop-y,50%); } .crop-y-41 { --crop-y: 41%; }
.crop-x-42 { object-position: 42% var(--crop-y,50%); } .crop-y-42 { --crop-y: 42%; }
.crop-x-43 { object-position: 43% var(--crop-y,50%); } .crop-y-43 { --crop-y: 43%; }
.crop-x-44 { object-position: 44% var(--crop-y,50%); } .crop-y-44 { --crop-y: 44%; }
.crop-x-45 { object-position: 45% var(--crop-y,50%); } .crop-y-45 { --crop-y: 45%; }
.crop-x-46 { object-position: 46% var(--crop-y,50%); } .crop-y-46 { --crop-y: 46%; }
.crop-x-47 { object-position: 47% var(--crop-y,50%); } .crop-y-47 { --crop-y: 47%; }
.crop-x-48 { object-position: 48% var(--crop-y,50%); } .crop-y-48 { --crop-y: 48%; }
.crop-x-49 { object-position: 49% var(--crop-y,50%); } .crop-y-49 { --crop-y: 49%; }
.crop-x-50 { object-position: 50% var(--crop-y,50%); } .crop-y-50 { --crop-y: 50%; }
.crop-x-51 { object-position: 51% var(--crop-y,50%); } .crop-y-51 { --crop-y: 51%; }
.crop-x-52 { object-position: 52% var(--crop-y,50%); } .crop-y-52 { --crop-y: 52%; }
.crop-x-53 { object-position: 53% var(--crop-y,50%); } .crop-y-53 { --crop-y: 53%; }
.crop-x-54 { object-position: 54% var(--crop-y,50%); } .crop-y-54 { --crop-y: 54%; }
.crop-x-55 { object-position: 55% var(--crop-y,50%); } .crop-y-55 { --crop-y: 55%; }
.crop-x-56 { object-position: 56% var(--crop-y,50%); } .crop-y-56 { --crop-y: 56%; }
.crop-x-57 { object-position: 57% var(--crop-y,50%); } .crop-y-57 { --crop-y: 57%; }
.crop-x-58 { object-position: 58% var(--crop-y,50%); } .crop-y-58 { --crop-y: 58%; }
.crop-x-59 { object-position: 59% var(--crop-y,50%); } .crop-y-59 { --crop-y: 59%; }
.crop-x-60 { object-position: 60% var(--crop-y,50%); } .crop-y-60 { --crop-y: 60%; }
.crop-x-61 { object-position: 61% var(--crop-y,50%); } .crop-y-61 { --crop-y: 61%; }
.crop-x-62 { object-position: 62% var(--crop-y,50%); } .crop-y-62 { --crop-y: 62%; }
.crop-x-63 { object-position: 63% var(--crop-y,50%); } .crop-y-63 { --crop-y: 63%; }
.crop-x-64 { object-position: 64% var(--crop-y,50%); } .crop-y-64 { --crop-y: 64%; }
.crop-x-65 { object-position: 65% var(--crop-y,50%); } .crop-y-65 { --crop-y: 65%; }
.crop-x-66 { object-position: 66% var(--crop-y,50%); } .crop-y-66 { --crop-y: 66%; }
.crop-x-67 { object-position: 67% var(--crop-y,50%); } .crop-y-67 { --crop-y: 67%; }
.crop-x-68 { object-position: 68% var(--crop-y,50%); } .crop-y-68 { --crop-y: 68%; }
.crop-x-69 { object-position: 69% var(--crop-y,50%); } .crop-y-69 { --crop-y: 69%; }
.crop-x-70 { object-position: 70% var(--crop-y,50%); } .crop-y-70 { --crop-y: 70%; }
.crop-x-71 { object-position: 71% var(--crop-y,50%); } .crop-y-71 { --crop-y: 71%; }
.crop-x-72 { object-position: 72% var(--crop-y,50%); } .crop-y-72 { --crop-y: 72%; }
.crop-x-73 { object-position: 73% var(--crop-y,50%); } .crop-y-73 { --crop-y: 73%; }
.crop-x-74 { object-position: 74% var(--crop-y,50%); } .crop-y-74 { --crop-y: 74%; }
.crop-x-75 { object-position: 75% var(--crop-y,50%); } .crop-y-75 { --crop-y: 75%; }
.crop-x-76 { object-position: 76% var(--crop-y,50%); } .crop-y-76 { --crop-y: 76%; }
.crop-x-77 { object-position: 77% var(--crop-y,50%); } .crop-y-77 { --crop-y: 77%; }
.crop-x-78 { object-position: 78% var(--crop-y,50%); } .crop-y-78 { --crop-y: 78%; }
.crop-x-79 { object-position: 79% var(--crop-y,50%); } .crop-y-79 { --crop-y: 79%; }
.crop-x-80 { object-position: 80% var(--crop-y,50%); } .crop-y-80 { --crop-y: 80%; }
.crop-x-81 { object-position: 81% var(--crop-y,50%); } .crop-y-81 { --crop-y: 81%; }
.crop-x-82 { object-position: 82% var(--crop-y,50%); } .crop-y-82 { --crop-y: 82%; }
.crop-x-83 { object-position: 83% var(--crop-y,50%); } .crop-y-83 { --crop-y: 83%; }
.crop-x-84 { object-position: 84% var(--crop-y,50%); } .crop-y-84 { --crop-y: 84%; }
.crop-x-85 { object-position: 85% var(--crop-y,50%); } .crop-y-85 { --crop-y: 85%; }
.crop-x-86 { object-position: 86% var(--crop-y,50%); } .crop-y-86 { --crop-y: 86%; }
.crop-x-87 { object-position: 87% var(--crop-y,50%); } .crop-y-87 { --crop-y: 87%; }
.crop-x-88 { object-position: 88% var(--crop-y,50%); } .crop-y-88 { --crop-y: 88%; }
.crop-x-89 { object-position: 89% var(--crop-y,50%); } .crop-y-89 { --crop-y: 89%; }
.crop-x-90 { object-position: 90% var(--crop-y,50%); } .crop-y-90 { --crop-y: 90%; }
.crop-x-91 { object-position: 91% var(--crop-y,50%); } .crop-y-91 { --crop-y: 91%; }
.crop-x-92 { object-position: 92% var(--crop-y,50%); } .crop-y-92 { --crop-y: 92%; }
.crop-x-93 { object-position: 93% var(--crop-y,50%); } .crop-y-93 { --crop-y: 93%; }
.crop-x-94 { object-position: 94% var(--crop-y,50%); } .crop-y-94 { --crop-y: 94%; }
.crop-x-95 { object-position: 95% var(--crop-y,50%); } .crop-y-95 { --crop-y: 95%; }
.crop-x-96 { object-position: 96% var(--crop-y,50%); } .crop-y-96 { --crop-y: 96%; }
.crop-x-97 { object-position: 97% var(--crop-y,50%); } .crop-y-97 { --crop-y: 97%; }
.crop-x-98 { object-position: 98% var(--crop-y,50%); } .crop-y-98 { --crop-y: 98%; }
.crop-x-99 { object-position: 99% var(--crop-y,50%); } .crop-y-99 { --crop-y: 99%; }
.crop-x-100 { object-position: 100% var(--crop-y,50%); } .crop-y-100 { --crop-y: 100%; }
