:root {
  --black: #0c0809;
  --black-soft: #171012;
  --wine: #4b101c;
  --wine-bright: #7a1d30;
  --red: #a42940;
  --ivory: #ffffff;
  --ink: #1e1717;
  --muted: #696365;
  --line: rgba(12, 8, 9, .24);
  --gothic: "New Rocker", "Old English Text MT", Georgia, serif;
  --serif: "Cormorant Garamond", Georgia, "Times New Roman", serif;
  --sans: "Trebuchet MS", Arial, sans-serif;
}

* { box-sizing: border-box; }
html { min-height: 100%; }
body { min-height: 100vh; margin: 0; padding: clamp(24px, 5vw, 68px) 18px; color: var(--ink); background: radial-gradient(circle at 12% 18%, rgba(122,29,48,.42), transparent 30%), radial-gradient(circle at 88% 82%, rgba(164,41,64,.3), transparent 28%), linear-gradient(135deg, #050304, #16070b 55%, #080405); background-attachment: fixed; font: 17px/1.62 var(--serif); }
body::before { content: ""; position: fixed; inset: 0; z-index: -1; opacity: .18; background-image: linear-gradient(rgba(255,255,255,.09) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.09) 1px, transparent 1px); background-size: 54px 54px; }
body.lightbox-open { overflow: hidden; }
button { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
img { display: block; max-width: 100%; }
::selection { color: var(--ivory); background: var(--wine-bright); }
.skip-link { position: fixed; top: 8px; left: 8px; z-index: 9999; padding: 9px 14px; color: var(--ivory); background: var(--wine); transform: translateY(-150%); }
.skip-link:focus { transform: translateY(0); }

.page-decoration { position: fixed; z-index: 0; width: 210px; height: 210px; opacity: .55; border: 1px solid rgba(255,255,255,.28); transform: rotate(45deg); pointer-events: none; }
.page-decoration::before { content: "✦"; position: absolute; inset: 16px; display: grid; place-items: center; border: 1px solid rgba(164,41,64,.7); color: #c93450; font-size: 2rem; }
.page-decoration-left { left: -105px; bottom: -105px; }
.page-decoration-right { top: -105px; right: -105px; }

.site-card { position: relative; z-index: 1; width: min(1100px, 100%); min-height: min(820px, calc(100vh - 80px)); margin: 0 auto; border: 1px solid rgba(255,255,255,.46); outline: 1px solid rgba(12,8,9,.8); outline-offset: 7px; background: var(--ivory); box-shadow: 0 28px 80px rgba(0,0,0,.55); overflow: hidden; }
.site-card::before { content: ""; position: absolute; inset: 8px; z-index: 8; border: 1px solid rgba(75,16,28,.24); pointer-events: none; }

.site-banner { position: relative; min-height: 150px; display: flex; align-items: center; justify-content: center; gap: clamp(30px, 9vw, 110px); padding: 24px 60px; color: var(--ivory); text-align: center; background: radial-gradient(circle at 50% 0, rgba(164,41,64,.42), transparent 55%), linear-gradient(110deg, #080405, #280911 50%, #080405); border-bottom: 1px solid rgba(255,255,255,.3); overflow: hidden; }
.site-banner::before, .site-banner::after { content: ""; position: absolute; top: 14px; bottom: 14px; width: 35px; border-block: 1px solid rgba(255,255,255,.35); }
.site-banner::before { left: 20px; border-left: 1px solid rgba(255,255,255,.35); }
.site-banner::after { right: 20px; border-right: 1px solid rgba(255,255,255,.35); }
.banner-curtains { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: fill; opacity: .68; mix-blend-mode: screen; pointer-events: none; }
.site-banner .brand, .site-banner .banner-flourish { position: relative; z-index: 2; }
.language-switch { position: absolute; top: 12px; right: 18px; z-index: 4; display: flex; border: 1px solid rgba(255,255,255,.58); background: rgba(5,3,4,.72); }
.language-button { min-width: 38px; padding: 7px 9px; border: 0; color: rgba(255,255,255,.68); background: transparent; cursor: pointer; font: 700 .62rem/1 var(--sans); letter-spacing: .08em; }
.language-button + .language-button { border-left: 1px solid rgba(255,255,255,.35); }
.language-button:hover, .language-button:focus-visible, .language-button.active { color: #fff; background: var(--wine-bright); }
.brand-kicker { display: block; margin-bottom: 5px; font: 700 .65rem/1.4 var(--sans); letter-spacing: .26em; text-transform: uppercase; }
.brand h1 { margin: 0; font-family: var(--gothic); font-size: clamp(2.55rem, 5.5vw, 4.5rem); font-weight: 400; line-height: .98; letter-spacing: .015em; }
.brand h1 span { color: #d24960; font-style: italic; }
.banner-flourish { color: #d24960; font-size: 2.4rem; }
.banner-flourish.mirror { transform: scaleX(-1); }

.tab-nav { position: relative; z-index: 10; display: grid; grid-template-columns: repeat(6, 1fr); border-bottom: 1px solid var(--wine); background: var(--black); }
.tab-button { min-height: 48px; padding: 10px 8px; border: 0; border-right: 1px solid rgba(255,255,255,.18); color: rgba(255,255,255,.72); background: transparent; cursor: pointer; font: 700 .68rem/1 var(--sans); letter-spacing: .14em; text-transform: uppercase; transition: color .2s, background .2s; }
.tab-button:last-child { border-right: 0; }
.tab-button:hover, .tab-button:focus-visible, .tab-button.active { color: #fff; background: var(--wine-bright); }

.panel-stage { position: relative; min-height: 560px; }
.panel { position: relative; min-height: 560px; padding: clamp(38px, 5vw, 64px); isolation: isolate; overflow: hidden; animation: panelIn .35s ease; }
.panel[hidden] { display: none; }
.panel > * { position: relative; z-index: 1; }
.panel-heading { max-width: 660px; margin: 0 auto 38px; text-align: center; }
.panel-heading.left { margin-inline: 0; text-align: left; }
.eyebrow { margin: 0 0 7px; color: var(--wine-bright); font: 700 .7rem/1.4 var(--sans); letter-spacing: .24em; text-transform: uppercase; }
.panel-heading h2, .home-copy h2, .queue-box h2 { margin: 0; font-family: var(--gothic); font-size: clamp(2.15rem, 5vw, 4rem); font-weight: 400; line-height: 1.06; letter-spacing: .01em; }
h2 em { color: var(--wine-bright); font-weight: 400; }
.panel-heading > p:last-child { color: var(--muted); }
.ornament-line { display: flex; align-items: center; gap: 10px; width: min(230px, 80%); margin: 22px 0; color: var(--wine-bright); }
.ornament-line.centered { margin-inline: auto; }
.ornament-line::before, .ornament-line::after { content: ""; height: 1px; flex: 1; background: linear-gradient(90deg, transparent, currentColor); }
.ornament-line::after { background: linear-gradient(90deg, currentColor, transparent); }

.home-panel { position: relative; isolation: isolate; overflow: hidden; }
.home-rose-detail { position: absolute; top: -25px; right: -35px; z-index: 0; width: 280px; opacity: .42; mix-blend-mode: multiply; transform: rotate(8deg); pointer-events: none; }
.section-corner-rose { position: absolute; top: 12px; right: 12px; z-index: 0; width: 150px; opacity: .18; object-fit: contain; mix-blend-mode: multiply; pointer-events: none; }
.section-corner-rose.mirror-rose { transform: scaleX(-1); }
.home-panel .home-grid, .home-panel .mini-links { position: relative; z-index: 1; }
.home-grid { display: grid; grid-template-columns: minmax(280px, .9fr) minmax(300px, 1.1fr); align-items: center; gap: clamp(35px, 7vw, 85px); }
.rose-emblem { position: relative; aspect-ratio: 1; display: grid; place-items: center; background: #fff; overflow: hidden; }
.client-icon-mask { position: absolute; z-index: 0; width: 76%; aspect-ratio: 1; border: 3px double var(--wine); border-radius: 50%; background: radial-gradient(circle, #4b101c, #10090b 72%); box-shadow: 0 0 0 3px rgba(255,255,255,.88); overflow: hidden; }
.rose-emblem .client-icon { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; object-position: center; filter: contrast(1.04) saturate(.88); }
.rose-emblem .rose-frame-image { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; object-fit: contain; mix-blend-mode: multiply; pointer-events: none; }
.home-copy > p:not(.eyebrow) { max-width: 560px; color: #584d49; font-size: 1.05rem; }
.home-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 28px; }
.ornate-button { display: inline-flex; min-height: 46px; align-items: center; justify-content: center; padding: 12px 20px; border: 1px solid var(--wine); color: var(--ivory); background: var(--wine); text-decoration: none; cursor: pointer; font: 700 .67rem/1 var(--sans); letter-spacing: .14em; text-transform: uppercase; transition: background .2s, color .2s, transform .2s; }
.ornate-button:hover, .ornate-button:focus-visible { color: var(--wine); background: transparent; transform: translateY(-2px); }
.ornate-button.light { color: var(--wine); background: transparent; }
.ornate-button.light:hover { color: var(--ivory); background: var(--wine); }
.status-note { display: flex; align-items: center; gap: 9px; margin-top: 24px; color: var(--muted); font: .78rem/1.4 var(--sans); }
.status-note i { width: 8px; height: 8px; border-radius: 50%; background: var(--red); box-shadow: 0 0 8px rgba(164,41,64,.55); }
.mini-links { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 42px; border: 1px solid var(--line); }
.mini-links a { display: flex; align-items: center; gap: 11px; padding: 13px 15px; border-right: 1px solid var(--line); color: var(--ink); text-decoration: none; font: 700 .72rem/1 var(--sans); letter-spacing: .1em; text-transform: uppercase; }
.mini-links a:last-child { border-right: 0; }
.mini-links a:hover { color: var(--wine-bright); background: #fff; }
.mini-links span { color: var(--red); font-family: var(--serif); font-style: italic; }

.about-layout { position: relative; display: grid; grid-template-columns: minmax(230px, 340px) 1fr; align-items: center; gap: clamp(38px, 7vw, 75px); max-width: 880px; margin: auto; }
.about-layout.about-text-only { grid-template-columns: minmax(175px, 245px) minmax(0, 1fr); max-width: 900px; }
.about-side-roses { width: 100%; max-height: 500px; object-fit: cover; object-position: center; mix-blend-mode: multiply; }
.about-bouquet { position: absolute; right: -52px; bottom: -55px; z-index: 1; width: 185px; opacity: .48; mix-blend-mode: multiply; pointer-events: none; }
.paper-note { position: relative; padding: clamp(28px, 4vw, 45px); border: 1px solid var(--line); background: rgba(255,255,255,.63); box-shadow: 0 18px 35px rgba(44,20,22,.12); }
.paper-note::before { content: ""; position: absolute; inset: 9px; border: 1px solid rgba(75,16,28,.12); pointer-events: none; }
.paper-note h3 { margin: 0; color: var(--wine); font-family: var(--gothic); font-size: 2rem; font-weight: 400; }
.note-subtitle { margin-top: 0; color: var(--wine-bright); font: 700 .68rem/1.4 var(--sans); letter-spacing: .13em; text-transform: uppercase; }
.paper-note dl { margin: 26px 0 0; border-top: 1px solid var(--line); }
.paper-note dl div { display: grid; grid-template-columns: 120px 1fr; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); }
.paper-note dt { color: var(--wine); font-weight: bold; }
.paper-note dd { margin: 0; }

.service-list { display: grid; gap: 14px; max-width: 900px; margin: auto; }
.service-card { display: grid; grid-template-columns: 150px 1fr auto; align-items: center; gap: 25px; padding: 14px 22px 14px 14px; border: 1px solid var(--line); background: rgba(255,255,255,.58); transition: transform .2s, box-shadow .2s; }
.service-card:hover { transform: translateX(4px); box-shadow: 0 10px 30px rgba(55,20,25,.1); }
.service-card img { width: 150px; height: 122px; object-fit: cover; border: 1px solid var(--wine); }
.service-number { float: left; margin: 2px 10px 0 0; color: var(--red); font-style: italic; }
.service-card h3 { margin: 0; color: var(--wine); font-family: var(--gothic); font-size: 1.25rem; font-weight: 400; }
.service-card p { margin: 2px 0 8px; color: var(--muted); }
.service-card ul { display: flex; flex-wrap: wrap; gap: 6px 18px; padding: 0; margin: 0; list-style: none; font-size: .86rem; }
.service-card b { color: var(--wine-bright); }
.service-price { min-width: 100px; color: var(--wine-bright); font-size: 2.3rem; font-weight: 400; text-align: right; }
.service-price small { display: block; color: var(--muted); font: 700 .58rem/1.4 var(--sans); letter-spacing: .12em; text-transform: uppercase; }

.gallery-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; max-width: 880px; margin: auto; }
.gallery-item { position: relative; min-width: 0; aspect-ratio: 1; padding: 0; border: 1px solid var(--wine); background: var(--black); overflow: hidden; cursor: pointer; }
.gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s, filter .35s; }
.gallery-item::after { content: ""; position: absolute; inset: 7px; border: 1px solid rgba(255,255,255,.38); pointer-events: none; }
.gallery-item span { position: absolute; inset: auto 0 0; padding: 30px 12px 10px; color: white; background: linear-gradient(transparent, rgba(12,8,9,.92)); opacity: 0; transform: translateY(7px); transition: opacity .25s, transform .25s; font: 700 .65rem/1 var(--sans); letter-spacing: .12em; text-align: left; text-transform: uppercase; }
.gallery-item:hover img, .gallery-item:focus-visible img { transform: scale(1.06); filter: brightness(.72); }
.gallery-item:hover span, .gallery-item:focus-visible span { opacity: 1; transform: translateY(0); }

.category-tabs { display: grid; grid-template-columns: repeat(5, 1fr); max-width: 880px; margin: 0 auto 24px; border: 1px solid var(--wine); background: var(--black); }
.category-tab { min-height: 46px; padding: 10px 8px; border: 0; border-right: 1px solid rgba(255,255,255,.2); color: rgba(255,255,255,.75); background: transparent; cursor: pointer; font: 700 .68rem/1.2 var(--sans); letter-spacing: .11em; text-transform: uppercase; transition: color .2s, background .2s; }
.category-tab:last-child { border-right: 0; }
.category-tab:hover, .category-tab:focus-visible, .category-tab.active { color: #fff; background: var(--wine-bright); }
.portfolio-category { max-width: 880px; margin: auto; animation: panelIn .3s ease; }
.portfolio-category[hidden] { display: none; }
.category-top { display: grid; grid-template-columns: minmax(280px, 1fr) minmax(280px, 1fr); gap: 18px; margin-bottom: 18px; }
.category-main-image { width: 100%; min-height: 410px; }
.category-main-image img { object-fit: contain; background: var(--black); }
.category-price-box { position: relative; display: flex; flex-direction: column; justify-content: center; min-height: 410px; padding: clamp(28px, 5vw, 52px); border: 3px double var(--wine); color: #fff; background: radial-gradient(circle at 100% 0, rgba(164,41,64,.34), transparent 40%), var(--black); }
.category-price-box::before { content: ""; position: absolute; inset: 9px; border: 1px solid rgba(255,255,255,.16); pointer-events: none; }
.category-price-box .eyebrow { color: #e65a73; }
.category-price-box h3 { margin: 0 0 10px; font-family: var(--gothic); font-size: clamp(1.8rem, 4vw, 3.15rem); font-weight: 400; line-height: 1.08; }
.category-price-box > p:not(.eyebrow) { margin: 0 0 18px; color: rgba(255,255,255,.72); }
.roman-number { position: absolute; top: 18px; right: 24px; color: #e65a73; font-size: 1.3rem; font-style: italic; }
.portfolio-price { display: block; margin: 3px 0 18px; color: #fff; font-size: 3.1rem; font-weight: 400; line-height: 1; }
.portfolio-price small { display: block; margin-bottom: 5px; color: #e65a73; font: 700 .62rem/1.4 var(--sans); letter-spacing: .13em; text-transform: uppercase; }
.category-price-box ul { padding: 0; margin: 0; list-style: none; border-top: 1px solid rgba(255,255,255,.2); }
.category-price-box li { display: flex; justify-content: space-between; gap: 18px; padding: 8px 0; border-bottom: 1px solid rgba(255,255,255,.16); color: rgba(255,255,255,.76); }
.category-price-box b { color: #ef6b83; white-space: nowrap; }
.category-gallery { grid-template-columns: repeat(3, 1fr); }

.terms-grid { display: grid; grid-template-columns: minmax(230px, .72fr) minmax(0, 1.28fr); gap: clamp(35px, 6vw, 70px); }
.terms-aside img { width: min(270px, 100%); margin: 22px auto 15px; mix-blend-mode: multiply; }
.terms-aside > p { color: var(--muted); text-align: center; }
.terms-list { border-top: 1px solid var(--wine); }
.terms-list details { border-bottom: 1px solid var(--line); }
.terms-list summary { display: flex; justify-content: space-between; gap: 15px; padding: 16px 4px; color: var(--wine); cursor: pointer; font-size: 1.1rem; list-style: none; }
.terms-list summary::-webkit-details-marker { display: none; }
.terms-list summary::before { content: "+"; margin-right: 8px; color: var(--red); }
.terms-list details[open] summary::before { content: "−"; }
.terms-list summary span { margin-left: auto; color: var(--muted); font-style: italic; }
.terms-list details p { margin: 0; padding: 0 34px 18px; color: var(--muted); }

.queue-box { position: relative; max-width: 760px; margin: 10px auto 40px; padding: clamp(42px, 7vw, 70px); border: 3px double var(--wine); color: var(--ivory); text-align: center; background: radial-gradient(circle at 50% 10%, rgba(164,41,64,.32), transparent 43%), var(--black-soft); box-shadow: 0 18px 40px rgba(43,12,18,.25); }
.queue-box::before { content: ""; position: absolute; inset: 9px; border: 1px solid rgba(255,255,255,.2); pointer-events: none; }
.queue-box .eyebrow { color: #e07184; }
.queue-box h2 em { color: #e07184; }
.queue-box > p:not(.eyebrow) { color: rgba(255,255,255,.72); }
.queue-symbol { display: block; color: #d24960; font-size: 2rem; }
.queue-button { margin-top: 16px; border-color: var(--ivory); background: transparent; }
.queue-button:hover { color: var(--black); background: var(--ivory); }
.social-links { display: grid; grid-template-columns: repeat(3, 1fr); max-width: 900px; margin: auto; border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.social-links a { display: grid; padding: 15px 18px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); color: var(--ink); text-decoration: none; }
.social-links a:hover { color: var(--ivory); background: var(--wine); }
.social-links b { font-weight: 400; }
.social-links span { color: var(--muted); font: .72rem/1.4 var(--sans); }
.social-links a:hover span { color: rgba(255,255,255,.7); }

.site-footer { position: relative; z-index: 10; display: grid; place-items: center; min-height: 86px; padding: 15px 20px; border-top: 1px solid rgba(255,255,255,.22); color: rgba(255,255,255,.62); background: var(--black); font: .66rem/1.4 var(--sans); letter-spacing: .12em; text-align: center; text-transform: uppercase; }
.footer-copy { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 18px; text-align: center; }
.site-footer p { margin: 0; }
.footer-rose { color: #d24960; font-size: 1.1rem; line-height: 1; }
.site-footer a { color: rgba(255,255,255,.78); text-decoration: none; }
.site-footer a:hover, .site-footer a:focus-visible { color: #fff; }

.lightbox { width: min(94vw, 1000px); max-width: none; height: min(90vh, 780px); max-height: none; padding: 50px; border: 1px solid rgba(255,255,255,.4); color: white; background: rgba(12,8,9,.97); overflow: visible; }
.lightbox::backdrop { background: rgba(0,0,0,.88); backdrop-filter: blur(4px); }
.lightbox figure { width: 100%; height: 100%; margin: 0; display: grid; grid-template-rows: 1fr auto; place-items: center; gap: 12px; }
.lightbox img { max-width: 100%; max-height: 100%; object-fit: contain; }
.lightbox figcaption { font: 700 .7rem/1.4 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.lightbox-close, .lightbox-nav { position: absolute; border: 0; color: white; background: transparent; cursor: pointer; }
.lightbox-close { top: 8px; right: 16px; font-size: 2rem; }
.lightbox-nav { top: 50%; font-size: 3.4rem; transform: translateY(-50%); }
.lightbox-prev { left: 8px; }
.lightbox-next { right: 8px; }

@keyframes panelIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
:focus-visible { outline: 2px solid #d24960; outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; } }
