.gn3d-carousel {
  --gn3d-paper: #f1f0eb;
  --gn3d-ink: #232520;
  --gn3d-muted: #82847a;
  --gn3d-line: #d6d7ce;
  position: relative;
  isolation: isolate;
  width: 100%;
  height: 100svh;
  height: 100dvh;
  min-height: 680px;
  overflow: hidden;
  color: var(--gn3d-ink);
  background: var(--gn3d-paper);
  font-family: 'DM Sans', Arial, sans-serif;
  line-height: 1.45;
  box-sizing: border-box;
}
.gn3d-carousel *, .gn3d-carousel *::before, .gn3d-carousel *::after { box-sizing: border-box; }
.gn3d-carousel button { color: inherit; font: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.gn3d-carousel button:focus-visible { outline: 3px solid #758443; outline-offset: 4px; }
.gn3d-carousel[data-theme="dark"] {
  --gn3d-paper: #1d201c;
  --gn3d-ink: #ebece4;
  --gn3d-muted: #a5a99b;
  --gn3d-line: #3b4037;
  --gn3d-viewer-backdrop: rgba(10, 12, 10, .92);
}
.gn3d-intro { position:absolute; z-index:3; top:6%; left:5%; right:5%; text-align:center; pointer-events:none; }
.gn3d-eyebrow { display:flex; align-items:center; justify-content:center; gap:8px; margin:0 0 10px; color:var(--gn3d-muted); font-size:10px; letter-spacing:2px; text-transform:uppercase; }
.gn3d-eyebrow::before { content:''; width:6px; height:6px; border-radius:50%; background:#96a53c; }
.gn3d-intro h2 { max-width:1200px; margin:0 auto; color:var(--gn3d-ink); font:500 clamp(30px, 4vw, 58px)/1.12 'Manrope', Arial, sans-serif; letter-spacing:-2.4px; }
.gn3d-intro h2 em { display:inline; color:var(--gn3d-muted); font-style:normal; }
.gn3d-intro p { max-width:620px; margin:12px auto 0; color:var(--gn3d-muted); font-size:14px; }
.gn3d-intro[hidden] { display:none; }
.gn3d-carousel[data-show-intro="0"] .gn3d-intro { display:none; }
.gn3d-gallery { position:absolute; z-index:0; inset:0; overflow:hidden; perspective:1400px; isolation:isolate; cursor:grab; touch-action:pan-y; user-select:none; }
.gn3d-gallery.is-loading .gn3d-art-card, .gn3d-gallery.is-loading .gn3d-focus-lens { opacity:0 !important; pointer-events:none; }
.gn3d-gallery.dragging { cursor:grabbing; }
.gn3d-horizon { position:absolute; z-index:-1; left:0; right:0; top:calc(50% + 142px); height:12%; background:radial-gradient(ellipse at center, rgba(73,77,51,.12), transparent 65%); filter:blur(18px); pointer-events:none; }
.gn3d-art-card { position:absolute; top:50%; left:50%; width:220px; height:300px; padding:0; border:0; background:transparent; transform-style:preserve-3d; backface-visibility:hidden; will-change:transform; }
.gn3d-art-card img { display:block; width:100%; height:100%; object-fit:cover; box-shadow:0 0 0 1px rgba(15,20,10,.08), 5px 8px 17px rgba(22,28,13,.09); pointer-events:none; }
.gn3d-art-card:focus-visible img { outline:4px solid #7d8b28; outline-offset:5px; }
.gn3d-art-card:hover img { filter:brightness(1.045); }
.gn3d-focus-lens { --gn3d-glass-rim:12px; --gn3d-glass-blur:7px; position:absolute; z-index:10000; top:50%; left:50%; width:286px; height:390px; padding:0; overflow:hidden; transform:translate(-50%,-50%); border:0; border-radius:0; background:rgba(235,245,243,.24); box-shadow:0 0 0 1px rgba(255,255,255,.92), 0 0 0 2px rgba(101,132,128,.18), 0 5px 12px rgba(28,48,42,.12), 0 22px 50px rgba(25,40,28,.24); isolation:isolate; touch-action:pan-y; transition:transform 320ms cubic-bezier(.2,.7,.2,1); }
.gn3d-focus-lens.is-hovered { transform:translate(-50%,-50%) scale(1.045); }
.gn3d-focus-lens::before { content:''; position:absolute; z-index:3; inset:0; padding:var(--gn3d-glass-rim); border-radius:inherit; background:linear-gradient(135deg,rgba(255,255,255,.88),rgba(231,249,248,.42) 24%,rgba(170,204,201,.25) 48%,rgba(255,255,255,.72) 75%,rgba(218,239,236,.45)); backdrop-filter:blur(var(--gn3d-glass-blur)) saturate(1.25); -webkit-backdrop-filter:blur(var(--gn3d-glass-blur)) saturate(1.25); -webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0); -webkit-mask-composite:xor; mask-composite:exclude; pointer-events:none; }
.gn3d-focus-lens::after { content:''; position:absolute; z-index:4; inset:var(--gn3d-glass-rim); border-radius:0; box-shadow:0 0 0 1px rgba(255,255,255,.65),0 0 0 2px rgba(58,91,86,.14),inset 0 1px 5px rgba(20,45,39,.18); background:linear-gradient(118deg,rgba(255,255,255,.14),transparent 36%,rgba(255,255,255,.07) 46%,transparent 58%); pointer-events:none; }
.gn3d-lens-slide { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:cover; pointer-events:none; will-change:transform; backface-visibility:hidden; }
.gn3d-gallery-hint { position:absolute; z-index:4; left:50%; bottom:128px; display:flex; align-items:center; gap:10px; transform:translateX(-50%); color:var(--gn3d-muted); font-size:10px; letter-spacing:1px; white-space:nowrap; pointer-events:none; }
.gn3d-gallery-hint > span:first-child { font-size:16px; }
.gn3d-hint-touch { display:none; }
.gn3d-bottom { position:absolute; z-index:5; left:32px; right:32px; bottom:20px; display:grid; width:calc(100% - 64px); grid-template-columns:minmax(0,1fr) minmax(160px,420px) minmax(110px,1fr); align-items:center; column-gap:28px; padding:10px 19px; border:0; background:transparent; }
.gn3d-bottom-row { display:contents; }
.gn3d-project { display:flex; flex:1; min-width:200px; align-items:center; gap:16px; }
.gn3d-bottom .gn3d-project { grid-column:1; grid-row:1; }
.gn3d-project-number { padding-right:16px; border-right:1px solid var(--gn3d-line); color:var(--gn3d-muted); font-size:12px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.gn3d-project-title { font-size:13px; font-weight:600; line-height:1.45; }
.gn3d-project-category { color:var(--gn3d-muted); font-size:10px; }
.gn3d-controls { display:flex; grid-column:3; grid-row:1; align-items:center; justify-self:end; gap:8px; }
.gn3d-round { display:grid; width:40px; height:40px; place-items:center; padding:0; border:1px solid #c7cabe; border-radius:50%; background:transparent; transition:background .2s,transform .2s; }
.gn3d-round:hover { transform:translateY(-2px); background:rgba(120,133,89,.12); }
.gn3d-round img { display:block; width:15px; height:15px; }
.gn3d-play { margin-left:6px; border-color:var(--gn3d-ink); background:var(--gn3d-ink); }
.gn3d-play img { filter:invert(1); }
.gn3d-theme-toggle { margin-left:2px; }
.gn3d-dock-timeline { display:flex; grid-column:2; grid-row:1; justify-content:center; margin:0; }
.gn3d-timeline { display:flex; width:100%; max-width:100%; align-items:center; gap:5px; }
.gn3d-tick { display:flex; flex:1; min-width:4px; height:22px; align-items:center; padding:0; border:0; background:none; }
.gn3d-tick::before { content:''; display:block; width:100%; height:2px; background:#c7cabe; transition:height .3s,background .3s; }
.gn3d-tick.active::before { height:9px; background:#59613f; }
.gn3d-tick:hover::before { height:7px; background:#8c9870; }
.gn3d-carousel[data-show-timeline="0"] .gn3d-dock-timeline { display:none; }
.gn3d-modal { position:fixed; z-index:2147483000; inset:0; width:min(100vw,1500px); max-width:none; height:100dvh; max-height:none; margin:auto; padding:24px 32px 18px; overflow:hidden; border:0; border-radius:0; color:var(--gn3d-ink); background:var(--gn3d-paper); }
.gn3d-modal::backdrop { background:var(--gn3d-viewer-backdrop,rgba(30,33,28,.78)); backdrop-filter:blur(12px); }
.gn3d-modal-stage { position:absolute; inset:88px 32px 142px; display:grid; place-items:center; }
.gn3d-modal-stage > img { display:block; max-width:100%; max-height:100%; object-fit:contain; }
.gn3d-modal-bottom { position:absolute; right:32px; bottom:18px; left:32px; display:flex; align-items:flex-end; justify-content:space-between; gap:24px; }
.gn3d-modal-bottom p { margin:0; color:var(--gn3d-muted); font-size:14px; }
.gn3d-viewer-thumbnails { display:flex; max-width:min(65%,760px); gap:10px; overflow:auto; padding:4px; }
.gn3d-viewer-thumb { flex:0 0 76px; width:76px; height:90px; padding:0; overflow:hidden; border:1px solid #c7cabe; border-radius:5px; background:transparent; }
.gn3d-viewer-thumb img { display:block; width:100%; height:100%; object-fit:cover; }
.gn3d-viewer-thumb.active { border:2px solid #315fa8; }
.gn3d-viewer-close { position:absolute; z-index:2; top:22px; right:26px; display:grid; width:42px; height:42px; place-items:center; padding:0; border:1px solid var(--gn3d-line); border-radius:50%; background:var(--gn3d-paper); }
.gn3d-viewer-close img { width:16px; height:16px; }
.gn3d-modal-prev, .gn3d-modal-next { position:absolute; top:50%; display:grid; width:48px; height:48px; place-items:center; transform:translateY(-50%); border:1px solid #c7cabe; border-radius:50%; background:var(--gn3d-paper); box-shadow:0 4px 16px #0002; }
.gn3d-modal-prev { left:10px; }
.gn3d-modal-next { right:10px; }
.gn3d-modal-prev img, .gn3d-modal-next img { width:16px; height:16px; }
/* Flatsome and WooCommerce apply broad image sizing rules; keep the lightbox photo uncropped. */
dialog.gn3d-modal[open] .gn3d-modal-stage { display:grid !important; min-width:0 !important; min-height:0 !important; place-items:center !important; }
dialog.gn3d-modal[open] .gn3d-modal-stage > img[data-preview] { position:relative !important; inset:auto !important; display:block !important; width:auto !important; height:auto !important; min-width:0 !important; min-height:0 !important; max-width:100% !important; max-height:100% !important; margin:auto !important; transform:none !important; object-fit:contain !important; object-position:center !important; }
@media (min-width: 1500px) {
  .gn3d-intro { top:7%; }
  .gn3d-intro p { margin-top:16px; }
}
@media (max-width: 900px) {
  .gn3d-carousel { height:100svh; height:100dvh; min-height:620px; }
  .gn3d-intro { top:5%; }
  .gn3d-intro h2 { font-size:clamp(30px,5vw,46px); }
  .gn3d-bottom { left:24px; right:24px; width:calc(100% - 48px); grid-template-columns:minmax(0,1fr) minmax(120px,28vw) auto; column-gap:16px; }
  .gn3d-project { min-width:0; }
  .gn3d-gallery-hint { bottom:126px; }
}
@media (max-width: 600px) {
  .gn3d-carousel { height:100svh; height:100dvh; min-height:570px; }
  .gn3d-intro { top:5%; left:6%; right:6%; }
  .gn3d-intro h2 { font-size:clamp(27px,7.5vw,38px); letter-spacing:-1.3px; }
  .gn3d-intro p { max-width:390px; margin-top:8px; font-size:12px; }
  .gn3d-eyebrow { margin-bottom:8px; font-size:9px; }
  .gn3d-art-card { width:142px; height:205px; }
  .gn3d-focus-lens { width:178px; height:252px; --gn3d-glass-rim:8px; }
  .gn3d-horizon { top:calc(50% + 100px); }
  .gn3d-gallery-hint { bottom:123px; font-size:8px; }
  .gn3d-hint-desktop { display:none; }
  .gn3d-hint-touch { display:inline; }
  .gn3d-bottom { left:16px; right:16px; bottom:12px; width:calc(100% - 32px); grid-template-columns:minmax(0,1fr) auto; column-gap:8px; row-gap:4px; padding:6px 0 8px; }
  .gn3d-bottom .gn3d-project { grid-column:1; grid-row:1; min-width:0; gap:9px; }
  .gn3d-project-number { padding-right:9px; font-size:10px; }
  .gn3d-project-title { font-size:11px; }
  .gn3d-project-category { max-width:150px; overflow:hidden; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
  .gn3d-controls { grid-column:2; grid-row:1; gap:4px; }
  .gn3d-round { width:32px; height:32px; }
  .gn3d-round img { width:13px; height:13px; }
  .gn3d-play { margin-left:1px; }
  .gn3d-theme-toggle { display:none; }
  .gn3d-dock-timeline { grid-column:1 / -1; grid-row:2; justify-content:center; margin-top:0; }
  .gn3d-timeline { width:100%; gap:3px; }
  .gn3d-tick { height:16px; }
  .gn3d-modal { padding:70px 12px 112px; }
  .gn3d-modal-stage { inset:72px 10px 112px; }
  .gn3d-modal-prev, .gn3d-modal-next { width:38px; height:38px; }
  .gn3d-modal-prev { left:2px; }
  .gn3d-modal-next { right:2px; }
  .gn3d-viewer-close { top:14px; right:14px; width:38px; height:38px; }
  .gn3d-modal-bottom { right:10px; bottom:10px; left:10px; align-items:center; flex-direction:column-reverse; gap:4px; }
  .gn3d-modal-bottom p { align-self:flex-start; font-size:12px; }
  .gn3d-viewer-thumbnails { max-width:100%; align-self:stretch; gap:6px; }
  .gn3d-viewer-thumb { flex-basis:54px; width:54px; height:66px; }
}
@media (max-width: 380px) {
  .gn3d-carousel { min-height:550px; }
  .gn3d-intro h2 { font-size:27px; }
  .gn3d-project-category { max-width:104px; }
  .gn3d-controls { gap:2px; }
  .gn3d-round { width:29px; height:29px; }
  .gn3d-timeline { gap:2px; }
}
@media (prefers-reduced-motion: reduce) {
  .gn3d-carousel *, .gn3d-carousel *::before, .gn3d-carousel *::after { scroll-behavior:auto !important; transition:none !important; }
}
