.x3d-viewer{--x3d-view-bg:var(--x3d-panel,#e5eeeb);--x3d-ink:var(--x3d-text,#202d2d);position:relative;background:var(--x3d-view-bg);color:var(--x3d-ink);border:1px solid var(--x3d-line,#9ab2b2);border-radius:5px;padding:20px;box-sizing:border-box;isolation:isolate;min-width:0}.x3d-viewer[data-theme=dark]{--x3d-view-bg:#0b3039;--x3d-ink:#f6f2ed}.x3d-viewer[data-theme=light]{--x3d-view-bg:#e5eeeb;--x3d-ink:#202d2d}.x3d-grid-bg{background-image:linear-gradient(#3aa0a612 1px,transparent 1px),linear-gradient(90deg,#3aa0a612 1px,transparent 1px);background-size:42px 42px}.x3d-view-top{display:flex;justify-content:space-between;gap:10px;font:10px/1.5 monospace;letter-spacing:.12em}.x3d-stage{position:relative;height:clamp(240px,48vw,var(--x3d-height));max-height:var(--x3d-height)}.x3d-poster,.x3d-canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.x3d-canvas{opacity:0;pointer-events:none;touch-action:pan-y}.x3d-canvas canvas{display:block;width:100%;height:100%}.x3d-ready .x3d-poster{visibility:hidden}.x3d-ready .x3d-canvas{opacity:1}.x3d-interactive .x3d-canvas{pointer-events:auto;touch-action:none}.x3d-labels{display:flex;flex-wrap:wrap;gap:7px;border-top:1px solid var(--x3d-line,#9ab2b2);padding-top:15px}.x3d-labels .x3d-term{font:10px/1.5 monospace;letter-spacing:.08em;padding:4px 7px;border:1px solid var(--x3d-line,#9ab2b2)}.x3d-status{font-size:12px;line-height:1.5;margin:12px 0}.x3d-controls{display:flex;flex-wrap:wrap;gap:6px}.x3d-controls[hidden]{display:none}.x3d-controls button{background:transparent!important;color:inherit!important;border:1px solid currentColor!important;font-size:12px!important;padding:8px 10px!important;min-height:44px}.x3d-controls button[aria-pressed=true]{box-shadow:inset 0 -3px #f27053}.x3d-project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px}.x3d-project-card img{display:block;width:100%;height:260px;object-fit:contain;background:var(--x3d-panel,#e5eeeb);border-radius:3px}.x3d-project-card a{text-decoration:none}.x3d-project-card h3{font-size:20px;display:flex;justify-content:space-between;gap:12px}.x3d-project-card p{font-size:14px;color:var(--x3d-muted,#526567)}.x3d-no-image{height:260px;background:var(--x3d-panel,#e5eeeb);display:grid;place-items:center;padding:20px}.x3d-filters{display:flex;align-items:end;flex-wrap:wrap;gap:12px;margin:25px 0}.x3d-filters label{display:grid;gap:7px;flex:1;min-width:160px;font-size:14px}.x3d-filters input,.x3d-filters select,.x3d-contact input:not([type=checkbox]),.x3d-contact textarea{width:100%;box-sizing:border-box;border:1px solid var(--x3d-line,#8aa3a3);border-radius:3px;background:var(--x3d-surface,#fff);color:var(--x3d-text,#202d2d);padding:13px;font:inherit;min-height:46px}.x3d-contact button,.x3d-filters button,.x3d-lightbox button{border:0;background:#f27053;color:#061f26;padding:14px 22px;font:600 14px/1.3 system-ui;min-height:46px;cursor:pointer;border-radius:3px}.x3d-pagination{display:flex;flex-wrap:wrap;gap:12px;margin-top:35px}.x3d-pagination>*{padding:10px}.x3d-pagination .current{background:var(--x3d-panel,#e5eeeb)}.x3d-specs{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:20px;border-block:1px solid var(--x3d-line,#8aa3a3);padding:25px 0}.x3d-specs dt{font-size:12px;text-transform:uppercase;letter-spacing:.1em}.x3d-specs dd{margin:8px 0}.x3d-breadcrumbs{font-size:13px;margin-block:20px}.x3d-image-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-block:30px}.x3d-image-grid img{width:100%;height:auto;display:block}.x3d-project-nav{display:flex;flex-wrap:wrap;justify-content:space-between;gap:20px;margin-block:35px}.x3d-lightbox{max-width:94vw;width:1100px;max-height:95dvh;background:#061f26;color:#f6f2ed;border:1px solid #3aa0a6;border-radius:6px;padding:20px}.x3d-lightbox::backdrop{background:#000d}.x3d-lightbox figure{margin:12px 0}.x3d-lightbox img{width:100%;height:65dvh;object-fit:contain}.x3d-lightbox>div{display:flex;justify-content:space-between}.x3d-contact{max-width:720px;display:grid;gap:20px}.x3d-contact>label{display:grid;gap:8px}.x3d-contact .x3d-consent{display:flex;align-items:start;font-size:14px}.x3d-consent input{width:20px;height:20px;flex:none}.x3d-honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.x3d-help{font-size:13px}.x3d-viewer button:focus-visible,.x3d-gallery :focus-visible,.x3d-contact :focus-visible,.x3d-lightbox :focus-visible{outline:3px solid #3aa0a6;outline-offset:4px}@media(max-width:960px){.x3d-project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.x3d-project-grid,.x3d-image-grid{grid-template-columns:1fr}.x3d-viewer{padding:14px}.x3d-view-top{font-size:9px;flex-wrap:wrap}.x3d-stage{height:320px}.x3d-filters>*{width:100%}.x3d-lightbox img{height:55dvh}}@media(prefers-reduced-motion:reduce){.x3d-viewer *{animation:none!important;transition:none!important}}

/* Dental presentation: an open model stage, soft orbital terms and quiet controls. */
.x3d-viewer{--x3d-view-bg:var(--x3d-panel,#eaf2ed);--x3d-ink:var(--x3d-text,#203c3b);padding:8px 0 0;border:0;border-radius:32px;background:transparent;color:var(--x3d-ink);isolation:isolate}
.x3d-viewer[data-theme=dark]{--x3d-view-bg:#103540;--x3d-ink:#f6f2ed;--x3d-surface:#0b2933;--x3d-muted:#a9bdc4;--x3d-line:#284752;--x3d-accent:#f27053;--x3d-on-accent:#061f26;--x3d-orbit-dot:#f27053;--x3d-stage-glow:#ffffff0d}.x3d-viewer[data-theme=light]{--x3d-view-bg:#eaf2ed;--x3d-ink:#203c3b;--x3d-surface:#fffdf9;--x3d-muted:#5b6d64;--x3d-line:#d5dfd7}
html[data-x3d-theme=dark] .x3d-viewer[data-theme=auto]{--x3d-stage-glow:#ffffff0d}
.x3d-stage{height:clamp(340px,43vw,var(--x3d-height));min-height:340px;max-height:none;position:relative;isolation:isolate}
.x3d-stage::before{content:"";position:absolute;inset:7% 10% 5%;border-radius:47% 48% 39% 42%;background:radial-gradient(ellipse at 30% 25%,var(--x3d-stage-glow,#ffffff66),transparent 65%),var(--x3d-view-bg);z-index:0;box-shadow:inset 0 0 55px #ffffff0d}
.x3d-stage::after{content:"";position:absolute;inset:29% 3%;border:1px solid color-mix(in srgb,var(--x3d-ink) 13%,transparent);border-radius:50%;transform:rotate(-13deg);z-index:0;pointer-events:none}
.x3d-grid-bg .x3d-stage::before{background-image:linear-gradient(#3aa0a615 1px,transparent 1px),linear-gradient(90deg,#3aa0a615 1px,transparent 1px);background-size:36px 36px}
.x3d-canvas{z-index:2}.x3d-poster{z-index:2;padding:12%;filter:drop-shadow(0 25px 15px #123e3014)}
.x3d-labels{position:absolute;inset:auto 0 12px;display:flex;justify-content:center;flex-wrap:wrap;gap:8px;border:0;padding:0;z-index:3;pointer-events:none}
.x3d-labels[hidden]{display:none!important}.x3d-ready .x3d-labels{display:contents}
.x3d-labels .x3d-term{font:500 11px/1.35 Arial,"Segoe UI",sans-serif;letter-spacing:.02em;background:var(--x3d-surface,#fffdf9);color:var(--x3d-ink);padding:11px 14px;border:1px solid color-mix(in srgb,var(--x3d-ink) 14%,transparent);border-radius:30px;box-shadow:0 5px 18px #123e3008;max-width:156px;overflow-wrap:anywhere;text-align:center;animation:none!important;transition:none!important}
.x3d-labels .x3d-term::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--x3d-orbit-dot,#c47b64);margin:0 7px 2px 0}
.x3d-ready .x3d-labels .x3d-term{position:absolute;width:max-content;will-change:left,top,transform}
.x3d-status{font:13px/1.6 Arial,sans-serif;text-align:center;padding:0 14px;color:inherit}
.x3d-ready:not(.x3d-interactive) .x3d-status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.x3d-controls{display:grid;justify-items:center;gap:12px;margin-top:18px;padding:0 8px}.x3d-controls[hidden]{display:none}
.x3d-presentations{display:flex;flex-wrap:wrap;justify-content:center;background:var(--x3d-surface,#fffdf9);padding:4px;border-radius:28px;border:1px solid var(--x3d-line,#d5dfd7);gap:2px;max-width:100%}
.x3d-controls .x3d-presentations button{border:0!important;border-radius:24px;min-height:42px;padding:10px 17px!important;font:500 12px/1.3 Arial,sans-serif!important;box-shadow:none;background:transparent!important;color:inherit!important}
.x3d-controls .x3d-presentations button[aria-pressed=true]{background:var(--x3d-accent,#19685f)!important;color:var(--x3d-on-accent,#fff)!important;box-shadow:0 2px 6px #123e3014}
.x3d-toolbar{display:flex;flex-wrap:wrap;justify-content:center;gap:4px}
.x3d-controls .x3d-toolbar button{border:0!important;border-radius:20px;padding:9px 10px!important;font:500 11px/1.3 Arial,sans-serif!important;min-height:44px;box-shadow:none;color:inherit!important}
.x3d-toolbar button:hover,.x3d-toolbar button[aria-pressed=true]{background:var(--x3d-view-bg)!important}.x3d-toolbar button[data-action=reset]::before{content:"↺";margin-right:5px;font-size:16px}.x3d-toolbar button[data-action=play]::before{content:"Ⅱ";margin-right:5px}.x3d-toolbar button[data-action=play][aria-pressed=false]::before{content:"▷"}
.x3d-credit{font:11px/1.6 Arial,sans-serif;text-align:center;margin:4px 15px 0;color:var(--x3d-muted,#5b6d64)}.x3d-credit summary{cursor:pointer;padding:8px;display:list-item;list-style-position:inside;width:fit-content;margin:auto;min-height:36px}.x3d-credit p{max-width:440px;margin:4px auto 12px}.x3d-credit a{text-underline-offset:3px}.x3d-credit summary:focus-visible{outline:2px solid var(--x3d-accent,#19685f);outline-offset:3px}
.x3d-project-card img,.x3d-no-image{border-radius:24px}.x3d-project-card h3{font-family:Georgia,serif;font-weight:400}.x3d-filters input,.x3d-filters select,.x3d-contact input:not([type=checkbox]),.x3d-contact textarea{border-radius:14px}.x3d-contact button,.x3d-filters button,.x3d-lightbox button{border-radius:28px;background:var(--x3d-accent,#19685f);color:var(--x3d-on-accent,#fff)}.x3d-lightbox{border-radius:24px}
@media(max-width:600px){.x3d-stage{height:370px;min-height:340px}.x3d-labels .x3d-term{font-size:10px;max-width:118px;padding:9px 10px}.x3d-presentations button{flex:1}.x3d-controls .x3d-presentations button{padding:9px 12px!important;font-size:11px!important}.x3d-toolbar{gap:0}.x3d-controls{gap:6px}.x3d-stage::before{inset:10% 8%}.x3d-stage::after{inset:31% 3%}.x3d-credit{font-size:10px}}
@media(prefers-reduced-motion:reduce){.x3d-labels .x3d-term{will-change:auto}}
/* 1.2: shared model anchors, native vertical scrolling and an optional fullscreen action. */
.x3d-viewer{padding-bottom:48px}.x3d-stage{touch-action:pan-y pinch-zoom;cursor:grab;user-select:none}.x3d-stage.is-dragging{cursor:grabbing}.x3d-canvas{pointer-events:none!important}.x3d-grid-bg{background-image:none}
.x3d-connectors{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;display:none;overflow:hidden}.x3d-connectors line{stroke:var(--x3d-ink);stroke-width:1;opacity:.25}.x3d-connectors circle{fill:var(--x3d-orbit-dot,#c47b64);opacity:.8}.x3d-ready .x3d-connectors{display:block}
.x3d-prepared .x3d-labels{display:contents}.x3d-prepared .x3d-labels .x3d-term{position:absolute;left:0;top:0;width:max-content;z-index:4;opacity:1;will-change:transform}.x3d-ready .x3d-labels .x3d-term{will-change:transform}
.x3d-viewer:not(.x3d-ready) .x3d-labels{visibility:hidden}
.x3d-fullscreen-button{display:none;position:absolute;right:14px;bottom:8px;align-items:center;gap:8px;border:1px solid var(--x3d-line,#d5dfd7);border-radius:24px;background:var(--x3d-surface,#fffdf9);color:var(--x3d-ink);padding:10px 17px;min-height:44px;font:500 12px/1.4 Arial,sans-serif;cursor:pointer}.x3d-fullscreen-button::before{content:"⛶";font-size:18px}.x3d-ready .x3d-fullscreen-button{display:inline-flex}.x3d-credit{margin-right:125px;text-align:left}.x3d-credit summary{margin-left:0}.x3d-ready .x3d-status{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
html.x3d-has-fullscreen{overflow:hidden}.x3d-viewer.x3d-fullscreen{position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important;z-index:100000!important;background:var(--x3d-bg,#fbf9f5);border-radius:0;padding:20px 20px 60px;margin:0!important}.x3d-fullscreen .x3d-stage{height:calc(100dvh - 90px)!important;min-height:200px;max-width:1300px;margin:auto}.x3d-fullscreen .x3d-credit{display:none}.x3d-fullscreen .x3d-fullscreen-button{right:24px;bottom:12px}.x3d-fullscreen::backdrop{background:var(--x3d-bg,#fbf9f5)}
@media(max-width:600px){.x3d-prepared .x3d-labels .x3d-term{max-width:112px;font-size:10px}.x3d-viewer{padding-bottom:48px}.x3d-fullscreen .x3d-stage{height:calc(100dvh - 90px)!important}}

/* 1.3: native selectable cards, true front/back stacking and subtle flowing connections. */
.x3d-prepared .x3d-labels .x3d-term{transform-origin:center;pointer-events:auto;user-select:text;-webkit-user-select:text;touch-action:pan-y pinch-zoom;cursor:text;border-radius:12px;padding:9px 12px;text-decoration:none;will-change:transform;transition:box-shadow .18s ease!important}
.x3d-labels a.x3d-term{cursor:pointer}.x3d-labels a.x3d-term:hover{text-decoration:underline;text-underline-offset:3px}.x3d-labels .x3d-term:focus-visible{outline:2px solid var(--x3d-accent,#19685f);outline-offset:3px}.x3d-labels .x3d-term::selection{background:var(--x3d-accent,#19685f);color:var(--x3d-on-accent,#fff)}
.x3d-connectors-back{z-index:1}.x3d-connectors-front{z-index:3}.x3d-connectors path{fill:none;stroke:var(--x3d-ink);stroke-width:.7;opacity:.16}.x3d-connectors circle{fill:var(--x3d-orbit-dot,#c47b64)}
@media(max-width:600px){.x3d-prepared .x3d-labels .x3d-term{max-width:112px;padding:8px 10px}}
