:root{--ink:#111318;--gray:#6b7280;--gray-light:#f2f3f5;--border:#e5e7eb;--accent:#7c5cff;--accent-light:#f1edff;--radius:16px;--shadow:0 10px 34px #1113181a}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;color:var(--ink);background:#fff;font-family:PingFang SC,HarmonyOS Sans SC,Microsoft YaHei,Segoe UI,system-ui,sans-serif}#app{height:100%}button{cursor:pointer;background:0 0;border:none;font-family:inherit}a{color:inherit;text-decoration:none}.nav{border-bottom:1px solid var(--border);z-index:50;background:#fff;justify-content:space-between;align-items:center;height:62px;padding:0 28px;display:flex;position:sticky;top:0}.nav .logo{cursor:pointer;letter-spacing:-.3px;align-items:center;gap:10px;font-size:19px;font-weight:800;display:flex}.nav .logo .logo-mark{background:var(--ink);color:#fff;border-radius:9px;justify-content:center;align-items:center;width:32px;height:32px;font-size:16px;display:flex}.nav .nav-links{flex:1;gap:4px;margin-left:28px;display:flex}.nav .nav-links a{color:var(--ink);border-radius:8px;padding:8px 14px;font-size:14.5px;font-weight:500}.nav .nav-links a:hover{background:var(--gray-light)}.nav .nav-actions{align-items:center;gap:10px;display:flex}.btn{border-radius:10px;padding:10px 20px;font-size:14px;font-weight:600;transition:all .15s}.btn-dark{background:var(--ink);color:#fff}.btn-dark:hover{background:#000;transform:translateY(-1px)}.btn-ghost{color:var(--ink);border:1.5px solid var(--ink);background:#fff}.btn-ghost:hover{background:var(--gray-light)}.page-wrap{max-width:1280px;margin:0 auto;padding:22px 24px 60px}.hero-banner{border:1.5px solid var(--ink);background:var(--gray-light);border-radius:22px;grid-template-columns:1.15fr .85fr;align-items:center;gap:28px;padding:34px 38px;display:grid;overflow:hidden}.hero-banner .crumb{color:var(--gray);margin-bottom:12px;font-size:13px}.hero-banner h1{letter-spacing:-.5px;align-items:center;gap:12px;font-size:clamp(28px,3.6vw,42px);font-weight:800;line-height:1.18;display:flex}.hero-banner h1 .arrow{color:var(--accent);font-size:.85em}.hero-banner .sub{color:#3f4450;max-width:560px;margin-top:14px;font-size:15px;line-height:1.75}.hero-banner .search-row{gap:10px;max-width:520px;margin-top:22px;display:flex}.hero-banner .search-row input{border:1.5px solid var(--ink);background:#fff;border-radius:12px;outline:none;flex:1;padding:13px 18px;font-family:inherit;font-size:14.5px}.hero-banner .search-row input:focus{box-shadow:0 0 0 3px #7c5cff40}.hero-banner .hero-stats{color:var(--gray);gap:30px;margin-top:20px;font-size:13px;display:flex}.hero-banner .hero-stats b{color:var(--ink);font-size:20px;display:block}.hero-3d{border-radius:16px;height:320px;position:relative;overflow:hidden}.hero-3d canvas{display:block}.hero-3d .hero-3d-tip{color:var(--gray);pointer-events:none;white-space:nowrap;background:#ffffffbf;border-radius:14px;padding:4px 12px;font-size:12px;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.gallery{grid-template-columns:210px 1fr;gap:26px;margin-top:30px;display:grid}.cat-side{align-self:start;position:sticky;top:80px}.cat-item{cursor:pointer;color:var(--ink);border:1.5px solid #0000;border-radius:12px;align-items:center;gap:10px;margin-bottom:6px;padding:11px 14px;font-size:14.5px;font-weight:500;display:flex}.cat-item:hover{background:var(--gray-light)}.cat-item.active{border-color:var(--ink);background:#fff;font-weight:700}.cat-item .cnt{color:var(--gray);margin-left:auto;font-size:12.5px}.grid-head{align-items:baseline;gap:10px;margin-bottom:16px;display:flex}.grid-head b{font-size:17px}.grid-head span{color:var(--gray);font-size:13.5px}.tpl-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;display:grid}.tpl-card{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:#fff;transition:all .18s;position:relative;overflow:hidden}.tpl-card:hover{border-color:var(--ink);box-shadow:var(--shadow);transform:translateY(-3px)}.tpl-card .thumb{aspect-ratio:4/3;background:#fff;justify-content:center;align-items:center;width:100%;display:flex}.tpl-card .thumb img{object-fit:cover;width:100%;height:100%}.tpl-card .badge-3d{border:1px solid var(--border);letter-spacing:.5px;color:var(--ink);pointer-events:none;background:#fff;border-radius:8px;padding:3px 8px;font-size:11.5px;font-weight:800;position:absolute;top:10px;left:10px;box-shadow:0 2px 6px #0000000f}.tpl-card .meta{border-top:1px solid #f3f4f6;padding:12px 15px 14px}.tpl-card .meta .name{font-size:14.5px;font-weight:600}.tpl-card .meta .row{justify-content:space-between;align-items:center;margin-top:6px;display:flex}.tpl-card .meta .desc{color:var(--gray);font-size:12.5px}.tpl-card .meta .tag{color:var(--accent);background:var(--accent-light);white-space:nowrap;border-radius:12px;padding:2px 9px;font-size:11.5px}.section-title{letter-spacing:-.3px;margin:54px 0 20px;font-size:24px;font-weight:800}.steps{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.step-card{border-radius:var(--radius);border:1px solid var(--border);background:#fff;padding:26px 24px}.step-card .num{background:var(--ink);color:#fff;border-radius:10px;justify-content:center;align-items:center;width:34px;height:34px;margin-bottom:14px;font-weight:800;display:flex}.step-card h3{margin-bottom:8px;font-size:16.5px}.step-card p{color:var(--gray);font-size:14px;line-height:1.75}.footer{border-top:1px solid var(--border);text-align:center;color:var(--gray);padding:26px 24px;font-size:13px}.editor{grid-template-columns:232px 1fr 312px;height:calc(100% - 62px);display:grid;overflow:hidden}.editor .panel{background:#fff;overflow-y:auto}.editor .panel-left{border-right:1px solid var(--border);padding:14px 12px}.editor .panel-right{border-left:1px solid var(--border);padding:18px 16px}.panel-title{color:var(--gray);letter-spacing:1.5px;margin:4px 0 10px;padding-left:6px;font-size:12px;font-weight:800}.tpl-item{cursor:pointer;border:1.5px solid #0000;border-radius:11px;align-items:center;gap:10px;margin-bottom:4px;padding:9px 11px;font-size:14px;display:flex}.tpl-item:hover{background:var(--gray-light)}.tpl-item.active{border-color:var(--ink);font-weight:700}.tpl-item .icon{font-size:17px}.stage{background-color:#0000;background-image:linear-gradient(45deg,#f4f5f7 25%,#0000 25% 75%,#f4f5f7 75%),linear-gradient(45deg,#f4f5f7 25%,#fbfbfc 25% 75%,#f4f5f7 75%);background-position:0 0,12px 12px;background-repeat:repeat,repeat;background-size:24px 24px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;position:relative;overflow:hidden}.stage canvas{display:block}.stage .stage-hint{color:#fff;pointer-events:none;white-space:nowrap;background:#111318ad;border-radius:20px;padding:6px 16px;font-size:12px;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.stage .drop-mask{border:3px dashed var(--accent);color:var(--accent);pointer-events:none;background:#7c5cff1f;justify-content:center;align-items:center;font-size:20px;font-weight:800;display:none;position:absolute;inset:0}.stage.dragover .drop-mask{display:flex}.stage .recording-mask{color:#fff;background:#e11d48;border-radius:20px;align-items:center;gap:8px;padding:6px 16px;font-size:12.5px;font-weight:700;display:none;position:absolute;top:14px;left:50%;transform:translate(-50%)}.stage .recording-mask:before{content:"";background:#fff;border-radius:50%;width:8px;height:8px;animation:1s infinite blink}@keyframes blink{50%{opacity:.25}}.ctrl-group{margin-bottom:20px}.ctrl-label{color:var(--ink);justify-content:space-between;margin-bottom:9px;font-size:13px;font-weight:700;display:flex}.ctrl-label .val{color:var(--gray);font-weight:400}.upload-box{text-align:center;cursor:pointer;color:var(--gray);border:1.5px dashed #c9cdd4;border-radius:12px;padding:20px 12px;font-size:13px;line-height:1.7;transition:all .15s}.upload-box:hover{border-color:var(--accent);background:var(--accent-light);color:var(--accent)}.upload-box .up-icon{margin-bottom:2px;font-size:24px;display:block}.upload-box img.preview{border-radius:8px;max-width:100%;max-height:100px;margin:0 auto 6px;display:block}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{cursor:pointer;outline:1px solid var(--border);border:2px solid #0000;border-radius:8px;width:28px;height:28px}.swatch.active{outline:2px solid var(--ink);border-color:#fff}input[type=color].swatch-custom{cursor:pointer;outline:1px solid var(--border);background:0 0;border:none;border-radius:8px;width:28px;height:28px;padding:0}.chip-row{flex-wrap:wrap;gap:7px;display:flex}.chip{border:1.5px solid var(--border);cursor:pointer;color:var(--ink);background:#fff;border-radius:18px;padding:7px 13px;font-size:12.5px;font-weight:600}.chip:hover{border-color:#b9bdc7}.chip.active{border-color:var(--ink);background:var(--ink);color:#fff}input[type=range]{width:100%;accent-color:var(--ink)}.slider-row{align-items:center;gap:10px;margin-bottom:8px;display:flex}.slider-row label{color:var(--gray);flex-shrink:0;width:32px;font-size:12px}select.ctrl-select{border:1.5px solid var(--border);background:#fff;border-radius:10px;width:100%;padding:9px 10px;font-family:inherit;font-size:13.5px}.export-btn{background:var(--ink);color:#fff;border-radius:12px;width:100%;margin-bottom:8px;padding:13px;font-size:14.5px;font-weight:700}.export-btn:hover{background:#000}.export-btn:disabled{cursor:not-allowed;background:#c9cdd4}.export-btn.secondary{color:var(--ink);border:1.5px solid var(--ink);background:#fff}.export-btn.secondary:hover{background:var(--gray-light)}.tiny-note{color:var(--gray);text-align:center;margin-top:4px;font-size:12px}.sample-row{gap:8px;margin-top:10px;display:flex}.sample-row canvas{cursor:pointer;outline:1px solid var(--border);border-radius:8px;width:50px;height:50px}.sample-row canvas:hover{outline:2px solid var(--ink)}.divider{background:var(--border);height:1px;margin:18px 0}@media (width<=960px){.hero-banner{grid-template-columns:1fr;padding:26px 22px}.hero-3d{height:240px}.gallery{grid-template-columns:1fr}.cat-side{gap:8px;padding-bottom:4px;display:flex;position:static;overflow-x:auto}.cat-item{flex:none;margin-bottom:0}.cat-item .cnt{display:none}.steps{grid-template-columns:1fr}.editor{grid-template-rows:auto 52vh auto;grid-template-columns:1fr}.editor .panel-left{border-right:none;border-bottom:1px solid var(--border);display:flex;overflow-x:auto}.tpl-item{flex:none}.nav .nav-links{display:none}}
