html:has(.part-3d-dialog[open]){overflow:hidden}
.part-3d-button{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:32px;padding:4px 9px;border:1px solid #cbd5cf;border-radius:6px;background:#fff;color:#245f45;font-size:12px;font-weight:700;cursor:pointer}
.part-3d-dialog{--part-3d-white:#fff;--part-3d-canvas:#f3f5f2;--part-3d-border:#d5ddd8;--part-3d-rule:#e3e5e2;--part-3d-ink:#18231f;--part-3d-muted:#5f6663;--part-3d-green:#176b4d;--part-3d-green-deep:#123c2c;--part-3d-copper:#c88752;--part-3d-raised:#f5f7f5;box-sizing:border-box;width:min(1280px,calc(100vw - 32px));max-width:none;height:min(840px,calc(100dvh - 32px));max-height:none;padding:0;border:1px solid var(--part-3d-border);border-radius:16px;background:var(--part-3d-white);color:var(--part-3d-ink);box-shadow:0 24px 64px rgb(24 35 31 / .18);overflow:hidden;margin:auto;font-family:system-ui,-apple-system,"Segoe UI",sans-serif}
.part-3d-dialog *{box-sizing:border-box}
.part-3d-dialog[open]{display:flex;flex-direction:column}
.part-3d-dialog::backdrop{background:rgb(20 39 29 / .7)}
.part-3d-dialog header{display:flex;align-items:flex-start;gap:16px;flex:none;padding:16px 20px 16px 24px;border-bottom:1px solid var(--part-3d-rule)}
.part-3d-dialog header>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.part-3d-dialog h2{margin:0;font-size:20px;font-weight:700;line-height:1.2}
.part-3d-dialog h3{margin:0;font-size:17px;font-weight:600;line-height:1.3;text-wrap:pretty}
.part-3d-dialog header p{margin:0;font-size:13px;line-height:1.45;color:var(--part-3d-muted)}
.part-3d-dialog button,.part-3d-dialog .part-3d-primary-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 12px;border:1px solid var(--part-3d-border);border-radius:8px;background:var(--part-3d-white);color:var(--part-3d-ink);font-family:inherit;font-size:14px;font-weight:600;line-height:1.2;cursor:pointer}
.part-3d-dialog button:disabled{opacity:.45;cursor:default}
.part-3d-dialog button:focus-visible,.part-3d-dialog a:focus-visible,.part-3d-dialog summary:focus-visible{outline:3px solid #39895d;outline-offset:2px}
.part-3d-dialog svg{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round}
.part-3d-close{width:40px;height:40px;margin-left:auto;padding:0!important;flex:none}
.part-3d-layout{display:flex;min-height:0;flex:1}
.part-3d-stage{position:relative;flex:1;min-width:0;background:var(--part-3d-canvas)}
.part-3d-class-notice{position:absolute;top:12px;left:12px;right:12px;margin:0;padding:8px 10px;border-radius:8px;background:var(--part-3d-white);color:var(--part-3d-ink);font-size:12px;line-height:1.4;pointer-events:none}
#part-3d-canvas{width:100%;height:100%;touch-action:none;overflow:hidden}
#part-3d-canvas canvas{display:block;width:100%;height:100%;outline-offset:-3px}
.part-3d-stage-tools{position:absolute;bottom:20px;left:20px;display:flex;align-items:center;gap:8px}
.part-3d-stage-tools>button{height:40px;padding:0 16px}
.part-3d-zoom{display:flex}
.part-3d-zoom button{width:40px;height:40px;padding:0;border-radius:0}
.part-3d-zoom button:first-child{border-radius:8px 0 0 8px}
.part-3d-zoom button:last-child{margin-left:-1px;border-radius:0 8px 8px 0}
.part-3d-dialog aside{display:flex;flex-direction:column;width:400px;min-width:0;flex:none;border-left:1px solid var(--part-3d-border);background:var(--part-3d-white)}
.part-3d-dialog aside > *{flex-shrink:0}
.part-3d-sidebar-scroll{display:flex;flex-direction:column;gap:16px;min-height:0;flex:1;overflow-y:auto;overscroll-behavior-y:contain;padding:20px 24px;scrollbar-width:thin}
.part-3d-sidebar-scroll>*{flex-shrink:0}
.part-3d-dialog aside p{margin:0;font-size:13px;line-height:1.5}
.part-3d-disclaimer{border-left:3px solid var(--part-3d-copper);border-radius:0 8px 8px 0;background:rgb(200 135 82 / .08)}
.part-3d-disclaimer summary{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 12px 0 13px;cursor:pointer;list-style:none;font-size:13px;font-weight:600}
.part-3d-disclaimer summary::-webkit-details-marker{display:none}
.part-3d-disclaimer .part-3d-info-icon{width:16px;height:16px;flex:none;color:var(--part-3d-copper)}
.part-3d-disclaimer .part-3d-chevron{width:16px;height:16px;margin-left:auto;flex:none;color:var(--part-3d-muted);transition:transform .15s ease}
.part-3d-disclaimer[open] .part-3d-chevron{transform:rotate(180deg)}
.part-3d-disclaimer>p{padding:0 13px 12px;font-size:13px;line-height:1.45;color:var(--part-3d-ink);text-wrap:pretty}
#part-3d-help{color:var(--part-3d-muted);text-wrap:pretty}
.part-3d-mode-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.part-3d-modes{display:flex}
.part-3d-modes button{height:36px;min-height:36px;padding:0 16px;border-radius:0;font-size:13px}
.part-3d-modes button:first-child{border-radius:8px 0 0 8px}
.part-3d-modes button:last-child{margin-left:-1px;border-radius:0 8px 8px 0}
.part-3d-modes [aria-pressed=true]{position:relative;border-color:var(--part-3d-green);background:rgb(23 107 77 / .1);color:var(--part-3d-green-deep)}
#part-3d-status{color:var(--part-3d-muted);font-variant-numeric:tabular-nums}
#part-3d-legend{color:var(--part-3d-muted)}
#part-3d-points{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
#part-3d-points li{display:flex;flex-direction:column;gap:10px;padding:12px 14px;border:1px solid var(--part-3d-rule);border-radius:12px;background:var(--part-3d-raised);font-size:13px}
.part-3d-point-head{display:flex;align-items:center;gap:12px}
.part-3d-point-head>span{font-size:14px;font-weight:600}
.part-3d-point-head button{height:32px;min-height:32px;margin-left:auto;padding:0 10px;border-color:transparent;background:transparent;color:var(--part-3d-muted);font-size:13px}
.part-3d-rotation,.part-3d-scale{display:grid;grid-template-columns:auto minmax(0,1fr) 48px;align-items:start;gap:12px;width:100%;min-width:0;color:var(--part-3d-muted);font-size:13px;line-height:24px}
.part-3d-rotation input,.part-3d-scale input{display:block;width:100%;height:24px;min-height:24px;margin:0;padding:0;border:0;background:transparent;accent-color:#0b7ff5;cursor:pointer}
.part-3d-rotation output,.part-3d-scale output{width:48px;text-align:right;color:var(--part-3d-ink);font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}
.part-3d-rotation-ticks,.part-3d-scale-ticks{display:block;position:relative;height:22px;margin:0 67px;color:var(--part-3d-muted);font-size:11px;line-height:12px;pointer-events:none;font-variant-numeric:tabular-nums}
.part-3d-rotation-ticks span,.part-3d-scale-ticks span{position:absolute;top:0;transform:translateX(-50%);padding-top:9px;white-space:nowrap}
.part-3d-rotation-ticks span::before,.part-3d-scale-ticks span::before{content:"";position:absolute;top:0;left:50%;height:6px;border-left:1px solid var(--part-3d-border)}
.part-3d-stamp-type{display:flex;align-items:center;gap:12px;color:var(--part-3d-muted);font-size:13px;line-height:24px}
.part-3d-stamp-type>div,.part-3d-place-view{display:flex}
.part-3d-stamp-type button,.part-3d-place-view button{width:56px;height:32px;min-height:32px;padding:0;border-radius:0;font-size:14px}
.part-3d-stamp-type button:first-child,.part-3d-place-view button:first-child{border-radius:8px 0 0 8px}
.part-3d-stamp-type button:last-child,.part-3d-place-view button:last-child{margin-left:-1px;border-radius:0 8px 8px 0}
.part-3d-stamp-type [aria-pressed=true],.part-3d-place-view [aria-pressed=true]{position:relative;border-color:var(--part-3d-green);background:rgb(23 107 77 / .1);color:var(--part-3d-green-deep)}
#part-3d-places{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}
#part-3d-places li{display:flex;align-items:center;gap:12px;min-height:56px;padding:10px 14px;border:1px solid var(--part-3d-rule);border-radius:12px;background:var(--part-3d-raised);font-size:13px}
#part-3d-places li>div:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}
#part-3d-places strong{font-size:14px;font-weight:600}
#part-3d-places span{color:var(--part-3d-muted);font-variant-numeric:tabular-nums}
.part-3d-place-view{margin-left:auto;flex:none}
#part-3d-error{color:#a22d22}
.part-3d-footer{display:flex;flex-direction:column;gap:10px;flex:none;padding:16px 24px 14px;border-top:1px solid var(--part-3d-rule);background:var(--part-3d-white)}
.part-3d-primary-actions{display:flex;gap:8px}
.part-3d-primary-actions>*{flex:1}
.part-3d-primary-actions [data-3d-action=save]{border-color:var(--part-3d-green);background:var(--part-3d-green);color:#fff}
.part-3d-primary-actions [data-3d-action=absent][aria-pressed=true]{border-color:var(--part-3d-green);background:rgb(23 107 77 / .1);color:var(--part-3d-green-deep)}
.part-3d-meta-actions{display:flex;align-items:center;gap:12px;padding-top:10px;border-top:1px solid var(--part-3d-rule)}
.part-3d-credit{color:var(--part-3d-muted);font-size:11px!important;line-height:1.35!important}
.part-3d-credit a{color:var(--part-3d-green);text-decoration:none}
.part-3d-meta-actions [data-3d-action=clear]{height:32px;min-height:32px;margin-left:auto;padding:0 8px;flex:none;border-color:transparent;background:transparent;color:#8a5450;font-size:13px}
.part-3d-dialog [hidden]{display:none!important}
.part-3d-photo{position:relative}
.part-3d-overlay{position:absolute;right:5px;bottom:5px;background:#edf6ef;border-color:#81a98c;box-shadow:0 1px 4px #1232;min-height:32px}
.part-3d-link{display:inline-flex;align-items:center;gap:4px;margin-top:7px;font-size:12px;line-height:1.4;color:#286642;text-decoration:underline;text-underline-offset:3px}
.part-3d-unavailable{width:min(560px,calc(100vw - 32px));height:auto}
.part-3d-unavailable .part-3d-stage{display:none}
.part-3d-unavailable .part-3d-layout{display:block}
.part-3d-unavailable aside{width:100%;border-left:0}
.part-3d-unavailable .part-3d-sidebar-scroll{overflow:visible}
@media(max-width:700px){.part-3d-dialog{width:100vw;height:100dvh;max-height:100dvh;border-radius:20px}.part-3d-dialog header{align-items:center;padding:10px 10px 10px 16px}.part-3d-dialog header>div{gap:1px}.part-3d-dialog h2{font-size:16px}.part-3d-dialog header p{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.part-3d-close{width:44px;height:44px}.part-3d-layout{flex-direction:column}.part-3d-stage{height:290px;flex:none;border-bottom:1px solid var(--part-3d-rule)}.part-3d-stage-tools{bottom:12px;left:12px}.part-3d-stage-tools>button{height:44px;min-height:44px}.part-3d-zoom button{width:44px;height:44px;min-height:44px}.part-3d-dialog aside{width:100%;min-height:0;flex:1;border-top:0;border-left:0}.part-3d-sidebar-scroll{gap:14px;padding:16px 16px 18px}.part-3d-disclaimer summary{min-height:44px}.part-3d-mode-row{align-items:stretch;flex-direction:column;gap:8px}.part-3d-modes{width:100%}.part-3d-modes button{height:44px;min-height:44px;flex:1;font-size:14px}.part-3d-point-head button{height:36px;min-height:36px}.part-3d-stamp-type button,.part-3d-place-view button{height:44px;min-height:44px}.part-3d-footer{gap:8px;padding:12px 16px 14px;border-top-color:var(--part-3d-border)}.part-3d-primary-actions button,.part-3d-primary-actions a{height:48px;min-height:48px;font-size:15px}.part-3d-meta-actions{padding-top:0;border-top:0}.part-3d-meta-actions [data-3d-action=clear]{height:44px;min-height:44px}.part-3d-unavailable{width:100vw;height:auto;max-height:100dvh}.part-3d-unavailable .part-3d-layout{overflow:auto}.part-3d-unavailable aside{min-height:auto}}
