.three3d-block{border:1px solid var(--tr-border,#2a2a31);border-radius:10px;background:var(--tr-surface2,#191920);padding:12px;margin:16px 0;width:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:12px}.three3d-block h3{font-size:16px;font-weight:600;margin:0}.three3d-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:14px;align-items:start}@media (max-width:1023px){.three3d-layout{grid-template-columns:minmax(0,1fr)}}.three3d-main,.three3d-panel{display:grid;gap:10px;min-width:0}.three3d-box{border:1px solid var(--tr-border,#2a2a31);border-radius:8px;background:var(--tr-surface,#1e1e23);padding:10px 12px;display:grid;gap:8px;min-width:0}.three3d-stage{position:relative;aspect-ratio:4/3;min-height:320px;border-radius:8px;overflow:hidden;background:#1e1e23}.three3d-canvas{display:block;width:100%;height:100%;background:#1e1e23;outline:none;touch-action:pan-y}.three3d-canvas:focus-visible{box-shadow:inset 0 0 0 2px var(--tr-accent-tint,#b6adff)}.three3d-overlay{position:absolute;inset:0;overflow:hidden;pointer-events:none}.three3d-label{position:absolute;top:0;left:0;box-sizing:border-box;font-size:12px;line-height:15px;font-weight:600;padding:0 2px;color:#f5f5f7;white-space:nowrap;text-align:center;font-variant-numeric:tabular-nums;text-shadow:0 0 2px #0e0e12,0 0 3px #0e0e12,0 0 5px #0e0e12,0 1px 2px #0e0e12}.three3d-label-image,.three3d-label-point{color:#8db0ff}.three3d-label-plane{color:#aab5c9}.three3d-label-aux{color:#f0d27a}.three3d-label-part{color:#f5f5f7}.three3d-label-selected{color:var(--tr-accent-tint,#b6adff);font-weight:700}.three3d-label-axis-v{color:#fbbf24}.three3d-label-axis-h{color:#3ec6e0}.three3d-label-axis-j{color:#4ade80}.three3d-hint{white-space:normal;overflow-wrap:anywhere}.three3d-box-title,.three3d-hint{font-size:12.5px;color:var(--tr-faint,#8b8b96);margin:0}.three3d-box-title{font-weight:600;letter-spacing:.04em;text-transform:uppercase}.three3d-fallback{border:1px dashed var(--tr-border-strong,#3a3a45);border-radius:8px;padding:12px;font-size:14px}.three3d-fallback svg{max-width:100%;height:auto}.three3d-controls{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}.three3d-btn{min-height:36px;padding:0 12px;border-radius:8px;border:1px solid var(--tr-border-strong,#3a3a45);background:var(--tr-surface,#1e1e23);color:var(--tr-text,#f5f5f7);font-size:13px;cursor:pointer;white-space:normal;overflow-wrap:anywhere}.three3d-btn[aria-pressed=true],.three3d-btn[data-active=true]{border-color:var(--tr-accent-tint,#b6adff);background:var(--tr-accent-bg,#1b1836)}.three3d-btn:disabled,.three3d-btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.three3d-btn:focus-visible{outline:2px solid var(--tr-accent-tint,#b6adff);outline-offset:1px}.three3d-stepbar{display:grid;grid-template-columns:repeat(var(--steps,7),minmax(0,1fr));gap:4px}.three3d-stepbtn{height:28px;padding:0;border-radius:6px;border:1px solid var(--tr-border-strong,#3a3a45);background:transparent;color:var(--tr-muted,#a6a6b0);font-size:12.5px;font-variant-numeric:tabular-nums;cursor:pointer}.three3d-stepbtn[data-done=true]{background:rgba(224,179,65,.22);color:var(--tr-text,#f5f5f7);border-color:transparent}.three3d-stepbtn[aria-current=step]{background:#e0b341;color:#1e1e23;border-color:#e0b341;font-weight:600}.three3d-stepbtn:focus-visible{outline:2px solid var(--tr-accent-tint,#b6adff);outline-offset:1px}.three3d-stephead{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;align-items:baseline}.three3d-stephead b{color:#f0d27a;font-size:15px}.three3d-caption{font-size:14px;min-height:4em;margin:0}.three3d-legend{display:grid;gap:4px;font-size:13px;color:var(--tr-muted,#a6a6b0);list-style:none;margin:0;padding:0}.three3d-legend li{display:inline-flex;align-items:center;gap:8px}.three3d-swatch{display:inline-block;width:26px;height:4px;vertical-align:middle}.three3d-note{font-size:13px;color:var(--tr-muted,#a6a6b0);border-top:1px solid var(--tr-border,#2a2a31);padding-top:8px}.three3d-text{font-size:14px}.three3d-text h4{font-size:15px;margin:10px 0 4px}.three3d-text ol,.three3d-text ul{padding-left:20px;margin:4px 0}.three3d-text li+li{margin-top:2px}.three3d-steps{font-size:13px;color:var(--tr-muted,#a6a6b0)}.three3d-range{display:flex;flex-direction:column;gap:2px;font-size:13px;min-width:0;white-space:normal;overflow-wrap:anywhere}.three3d-range input[type=range]{width:100%;accent-color:var(--tr-accent-cta,#7364ec)}.three3d-check{display:flex;gap:8px;align-items:flex-start;min-height:30px;font-size:13.5px;line-height:1.3;cursor:pointer;white-space:normal;overflow-wrap:anywhere}.three3d-check input{accent-color:var(--tr-accent-cta,#7364ec);width:16px;height:16px;flex:none;margin-top:6px}.three3d-points{margin:0;padding:0;list-style:none;display:grid;gap:4px;font-size:13px}.three3d-points li{display:grid;grid-template-columns:4.6em 1fr;gap:8px}.three3d-points b{font-weight:500;color:#8db0ff;font-variant-numeric:tabular-nums}.three3d-parts{display:grid;gap:2px;font-size:13px;list-style:none;margin:0;padding:0}.three3d-parts li button{width:100%;text-align:left;min-height:32px;padding:4px 8px;display:grid;grid-template-columns:2.2em 1fr;gap:6px;border-color:transparent;color:var(--tr-text-soft,#c7c7d1)}.three3d-parts li button b{font-weight:500;color:var(--tr-accent-tint,#b6adff);font-variant-numeric:tabular-nums}.three3d-group{font-weight:500;margin:8px 0 2px;font-size:12.5px;color:var(--tr-faint,#8b8b96)}.three3d-panel-card{border-left:3px solid var(--tr-accent,#6c5ce7);border-radius:0 8px 8px 0;background:var(--tr-surface,#1e1e23);padding:12px 16px;font-size:14px;min-height:7em}.three3d-panel-card h4{font-size:18px;margin:0 0 4px}.three3d-panel-card dl{margin:6px 0 0}.three3d-panel-card dt{font-weight:500;margin-top:6px;font-size:13px;color:var(--tr-accent-tint,#b6adff)}.three3d-panel-card dd{margin:0}.three3d-readout{font-size:13px;font-variant-numeric:tabular-nums}.three3d-axis-legend{display:grid;gap:4px;font-size:13px;color:var(--tr-muted,#a6a6b0)}.three3d-axis-legend span{display:inline-flex;align-items:center;gap:8px}.three3d-axis-legend i{width:18px;height:4px;border-radius:2px;display:inline-block;flex:none}@media (min-width:1024px){.three3d-stage{aspect-ratio:auto;height:650px}}@media (max-width:479px){.three3d-stage{aspect-ratio:auto;height:clamp(320px,60vh,480px)}}@media (max-width:480px){.three3d-block{padding:8px}.three3d-btn{padding:0 9px}}