.g3d{max-width:1120px;margin:0 auto;padding:1.25rem 1rem 3rem;font-family:var(--rbg-font-body);color:var(--rbg-typo)}.g3d-modes{display:flex;gap:.5rem;justify-content:center;margin:.75rem 0 1.5rem}.g3d-mode-btn{border:1.5px solid var(--color-line,#e6e8ec);background:#fff;border-radius:999px;padding:.55rem 1.4rem;font-size:.95rem;font-weight:600;cursor:pointer;color:var(--rbg-typo)}.g3d-mode-btn.is-active{background:var(--rbg-primary);border-color:var(--rbg-primary);color:#fff}.g3d-card{background:#fff;border-radius:var(--radius-card,16px);box-shadow:var(--shadow-card,0 8px 30px rgb(0 0 0/.08));padding:1.75rem;max-width:760px;margin:0 auto}.g3d-h1{font-family:var(--rbg-font-display);font-size:1.45rem;font-weight:700;color:#1b1b1b;margin-bottom:.4rem}.g3d-h1,.g3d-sub{text-align:center}.g3d-sub{color:var(--rbg-typo-secondary);font-size:.92rem;margin-bottom:1.25rem}.g3d-drop{border:2px dashed #cfd6de;border-radius:14px;padding:2rem 1rem;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.g3d-drop.is-drag,.g3d-drop:hover{border-color:var(--rbg-primary);background:#f6f7ff}.g3d-drop__btn{display:inline-block;background:var(--rbg-primary);color:#fff;font-weight:700;font-size:1rem;border:0;border-radius:var(--radius-button,12px);padding:.8rem 1.8rem;cursor:pointer}.g3d-drop__btn:hover{background:var(--rbg-primary-hover)}.g3d-drop__hint{margin-top:.6rem;font-size:.88rem}.g3d-drop__hint,.g3d-recs{color:var(--rbg-typo-secondary)}.g3d-recs{display:flex;flex-wrap:wrap;gap:.4rem 1rem;justify-content:center;margin:.9rem 0 0;padding:0;list-style:none;font-size:.82rem}.g3d-recs li:before{content:"✓ ";color:var(--rbg-primary);font-weight:700}.g3d-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.7rem;margin-top:1rem}.g3d-slot{position:relative;border:1.5px dashed #cfd6de;border-radius:12px;aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;cursor:pointer;overflow:hidden;background:#fafbfc}.g3d-slot:hover{border-color:var(--rbg-primary)}.g3d-slot.has-img{border-style:solid}.g3d-slot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.g3d-slot__label{position:relative;z-index:1;font-size:.78rem;font-weight:600;color:var(--rbg-typo-secondary);background:rgb(255 255 255/.9);border-radius:6px;padding:.1rem .5rem}.g3d-slot.has-img .g3d-slot__label{position:absolute;bottom:6px;left:6px}.g3d-slot__x{position:absolute;top:6px;right:6px;z-index:2;width:22px;height:22px;border-radius:50%;border:0;background:rgb(0 0 0/.55);color:#fff;font-size:.8rem;line-height:1;cursor:pointer}.g3d-single-preview{position:relative;margin-top:1rem;border-radius:12px;overflow:hidden;background:#f4f5f7;text-align:center}.g3d-single-preview img{max-height:260px;width:auto;max-width:100%;margin:0 auto;display:block}.g3d-opts{margin-top:1.25rem;display:grid;gap:.9rem}.g3d-opt__label{font-size:.85rem;font-weight:600;color:#33383d;display:block;margin-bottom:.35rem}.g3d-quality{display:flex;gap:.5rem;flex-wrap:wrap}.g3d-qbtn{border:1.5px solid var(--color-line,#e6e8ec);background:#fff;border-radius:10px;padding:.45rem .9rem;font-size:.85rem;font-weight:600;cursor:pointer;color:var(--rbg-typo)}.g3d-qbtn.is-active{border-color:var(--rbg-primary);color:var(--rbg-primary);background:#f4f4ff}.g3d-qbtn:disabled{opacity:.45;cursor:not-allowed}.g3d-qbtn small{display:block;font-weight:400;font-size:.72rem;color:var(--rbg-typo-secondary)}.g3d-toggle{display:flex;align-items:center;gap:.5rem;font-size:.9rem;cursor:pointer}.g3d-toggle input{width:16px;height:16px;accent-color:var(--rbg-primary)}.g3d-toggle small{color:var(--rbg-typo-secondary)}.g3d-prompt{width:100%;border:1.5px solid var(--color-line,#e6e8ec);border-radius:12px;padding:.8rem 1rem;font-size:.95rem;font-family:inherit;resize:vertical;min-height:90px}.g3d-prompt:focus{outline:2px solid var(--rbg-primary);border-color:transparent}.g3d-generate{width:100%;margin-top:1.3rem;background:var(--rbg-primary);color:#fff;font-weight:700;font-size:1.05rem;border:0;border-radius:var(--radius-button,12px);padding:.95rem 1rem;cursor:pointer}.g3d-generate:hover{background:var(--rbg-primary-hover)}.g3d-generate:disabled{opacity:.5;cursor:not-allowed}.g3d-note{margin-top:.7rem;text-align:center;font-size:.8rem;color:var(--rbg-typo-secondary)}.g3d-note a{color:var(--rbg-primary);font-weight:600}.g3d-warn{background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:10px;font-size:.85rem}.g3d-error,.g3d-warn{margin-top:.8rem;padding:.6rem .9rem}.g3d-error{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:10px;font-size:.88rem}.g3d-error a{font-weight:700;text-decoration:underline}.g3d-samples{margin-top:1.4rem;display:flex;align-items:center;justify-content:center;gap:.8rem;flex-wrap:wrap}.g3d-samples__label{font-size:.8rem;color:var(--rbg-typo-secondary);text-align:right;line-height:1.3}.g3d-samples__thumbs{display:flex;gap:.5rem}.g3d-samples__thumb{width:52px;height:52px;border-radius:10px;overflow:hidden;border:1.5px solid var(--color-line,#e6e8ec);padding:0;cursor:pointer;background:#fff}.g3d-samples__thumb:hover{border-color:var(--rbg-primary)}.g3d-samples__thumb img{width:100%;height:100%;object-fit:cover;display:block}.g3d-run{text-align:center;padding:2.5rem 1rem}.g3d-spinner{width:42px;height:42px;border:4px solid #d8dde1;border-top:4px solid var(--rbg-primary);border-radius:50%;animation:g3d-spin .8s linear infinite;margin:0 auto 1rem}@keyframes g3d-spin{to{transform:rotate(1turn)}}.g3d-run__label{font-weight:600;font-size:1.02rem;color:#24282c}.g3d-run__sub{margin-top:.3rem;color:var(--rbg-typo-secondary);font-size:.85rem}.g3d-progress{max-width:420px;margin:1.1rem auto 0;height:8px;border-radius:999px;background:#e8eaee;overflow:hidden}.g3d-progress__bar{height:100%;background:var(--rbg-primary);border-radius:999px;transition:width .6s ease}.g3d-refimg{margin:1.4rem auto 0;max-width:240px}.g3d-refimg img{width:100%;border-radius:12px;box-shadow:var(--shadow-card)}.g3d-refimg figcaption{margin-top:.4rem;font-size:.78rem;color:var(--rbg-typo-secondary)}.g3d-result{display:grid;grid-template-columns:1fr 320px;gap:1.25rem;align-items:start}@media (max-width:900px){.g3d-result{grid-template-columns:1fr}}.g3d-viewer{background:radial-gradient(ellipse at center,#f8f9fb 0,#eceef2 100%);border-radius:var(--radius-card,16px);box-shadow:var(--shadow-card);height:480px;overflow:hidden}.g3d-side{display:grid;gap:1rem}.g3d-side__card{background:#fff;border-radius:var(--radius-card,16px);box-shadow:var(--shadow-card);padding:1.25rem}.g3d-side__title{font-weight:700;font-size:1rem;color:#1b1b1b;margin-bottom:.6rem}.g3d-stats{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}.g3d-stat{background:#f7f8fa;border-radius:10px;padding:.55rem .7rem}.g3d-stat b{display:block;font-size:.95rem;color:#24282c}.g3d-stat span{font-size:.72rem;color:var(--rbg-typo-secondary)}.g3d-dl{display:block;width:100%;text-align:center;background:var(--rbg-primary);color:#fff!important;font-weight:700;border-radius:var(--radius-button,12px);padding:.85rem 1rem;text-decoration:none;border:0;cursor:pointer;font-size:1rem}.g3d-dl:hover{background:var(--rbg-primary-hover)}.g3d-secondary{display:inline-block;border:1.5px solid var(--color-line,#e6e8ec);background:#fff;border-radius:10px;padding:.5rem .95rem;font-size:.86rem;font-weight:600;cursor:pointer;color:var(--rbg-typo)}.g3d-secondary:hover{border-color:var(--rbg-primary);color:var(--rbg-primary)}.g3d-actions{display:flex;gap:.5rem;flex-wrap:wrap}.g3d-fmt-note{font-size:.76rem;color:var(--rbg-typo-secondary);margin-top:.5rem}.g3d-tray{margin-top:1.6rem}.g3d-tray__title{font-size:.85rem;font-weight:600;color:var(--rbg-typo-secondary);margin-bottom:.5rem}.g3d-tray__row{display:flex;gap:.6rem;overflow-x:auto;padding-bottom:.4rem}.g3d-tray__item{flex:0 0 auto;width:150px;border:1.5px solid var(--color-line,#e6e8ec);background:#fff;border-radius:12px;padding:.6rem;text-align:left;cursor:pointer;font-size:.78rem}.g3d-tray__item.is-active{border-color:var(--rbg-primary)}.g3d-tray__item b{display:block;color:#24282c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.g3d-tray__item span{color:var(--rbg-typo-secondary)}