:root{color:#15211e;font-synthesis:none;text-rendering:optimizelegibility;--ink:#15211e;--muted:#687773;--line:#dce5e2;--accent:#167c5c;--accent-strong:#0c6649;--panel:#fff;background:#f4f7f6;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}html{background:#f4f7f6;min-width:320px;min-height:100%}body{background:radial-gradient(circle at 76% -12%,#5cc29a24,#0000 31rem),#f4f7f6;min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button,label{-webkit-tap-highlight-color:transparent}button:focus-visible,label:focus-within,a:focus-visible{outline-offset:3px;outline:3px solid #167c5c3d}svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;display:block}.app-shell{width:min(1440px,100%);min-height:100vh;margin:0 auto;padding:0 48px 56px}.topbar{border-bottom:1px solid #a8b7b273;justify-content:space-between;align-items:center;height:80px;display:flex}.brand{color:var(--ink);align-items:center;gap:12px;text-decoration:none;display:inline-flex}.brand-mark{color:#fff;background:var(--accent);border-radius:10px;place-items:center;width:38px;height:38px;display:grid;box-shadow:0 8px 22px #167c5c38}.brand-mark svg{width:23px;height:23px}.brand strong,.brand small{display:block}.brand strong{letter-spacing:-.01em;font-size:15px;font-weight:760}.brand small{color:#7c8c87;letter-spacing:.15em;margin-top:2px;font-size:9px;font-weight:760}.privacy-pill{color:#59706a;align-items:center;gap:8px;font-size:12px;font-weight:600;display:inline-flex}.privacy-dot{background:#20a477;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #20a4771f}.hero{justify-content:space-between;align-items:flex-end;gap:36px;padding:58px 0 38px;display:flex}.hero-copy{max-width:680px}.eyebrow,.section-kicker,.dialog-eyebrow{color:var(--accent);letter-spacing:.18em;text-transform:uppercase;margin:0;font-size:10px;font-weight:780}.hero h1{color:#13201c;letter-spacing:-.055em;margin:10px 0 14px;font-size:clamp(38px,5vw,58px);font-weight:720;line-height:1.05}.hero-description{color:#63736e;max-width:620px;margin:0;font-size:15px;line-height:1.8}.hero-actions{align-items:center;gap:10px;padding-bottom:4px;display:flex}#file-input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.button{cursor:pointer;border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:9px;min-height:43px;padding:0 17px;font-size:13px;font-weight:680;transition:transform .16s,border-color .16s,background .16s,box-shadow .16s;display:inline-flex}.button:hover:not(:disabled){transform:translateY(-1px)}.button:disabled{cursor:wait;opacity:.52}.button svg{width:17px;height:17px}.button-primary{color:#fff;background:var(--accent);box-shadow:0 10px 24px #167c5c33}.button-primary:hover{background:var(--accent-strong);box-shadow:0 13px 30px #167c5c40}.button-secondary{color:#4f625c;background:#ffffffb8;border-color:#d4dedb}.button-secondary:hover:not(:disabled){background:#fff;border-color:#bacbc6}.gallery-panel{background:#ffffffeb;border:1px solid #dfe7e4;border-radius:16px;position:relative;overflow:hidden;box-shadow:0 24px 80px #2c484014}.gallery-heading{border-bottom:1px solid #e6ecea;justify-content:space-between;align-items:center;gap:20px;min-height:84px;padding:20px 24px;display:flex}.section-kicker{color:#83918d;font-size:9px}.gallery-heading h2{letter-spacing:-.025em;margin:5px 0 0;font-size:20px;font-weight:720}.summary{color:#778681;white-space:nowrap;align-items:center;gap:10px;font-size:12px;display:flex}#ready-count{color:var(--accent);font-weight:760}.summary-divider{background:#dbe3e0;width:1px;height:15px}.model-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:20px;display:grid}.model-card{background:#fff;border:1px solid #e0e7e5;border-radius:11px;min-width:0;transition:transform .18s,border-color .18s,box-shadow .18s;overflow:hidden}.model-card:hover{border-color:#c9d8d3;transform:translateY(-2px);box-shadow:0 14px 34px #314e451a}.thumbnail-wrap,.thumbnail-button{position:relative}.thumbnail-button{cursor:pointer;width:100%;color:inherit;text-align:left;background:#edf3f1;border:0;padding:0;display:block;overflow:hidden}.thumbnail-button:disabled{cursor:default}.thumbnail-canvas{aspect-ratio:1.48;background-color:#edf3f1;background-image:linear-gradient(#ffffff61 1px,#0000 1px),linear-gradient(90deg,#ffffff61 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:22px 22px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;display:block;overflow:hidden}.thumbnail-canvas img{object-fit:cover;width:100%;height:100%;transition:transform .28s;display:block}.model-card:hover .thumbnail-canvas img{transform:scale(1.025)}.thumbnail-placeholder{color:#8b9b96;flex-direction:column;justify-content:center;align-items:center;gap:10px;width:100%;height:100%;font-size:11px;display:flex}.placeholder-cube{color:#83a097;background:#ffffffad;border-radius:14px;place-items:center;width:54px;height:54px;display:grid}.placeholder-cube svg{stroke-width:1.5px;width:37px;height:37px}.format-badge{z-index:3;color:#28574a;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);letter-spacing:.08em;background:#ffffffd1;border:1px solid #ffffffb3;border-radius:6px;justify-content:center;align-items:center;min-width:38px;height:22px;padding:0 7px;font-size:9px;font-weight:800;display:inline-flex;position:absolute;top:11px;left:11px;box-shadow:0 3px 12px #2b473f14}.card-remove{z-index:4;cursor:pointer;color:#576b65;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffd1;border:1px solid #ffffffb8;border-radius:7px;place-items:center;width:27px;height:27px;padding:0;display:grid;position:absolute;top:10px;right:10px}.card-remove:hover{color:#aa3e36;background:#fff}.card-remove svg{width:14px;height:14px}.open-preview{z-index:3;color:#fff;opacity:0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#122822c7;border-radius:7px;align-items:center;gap:6px;height:29px;padding:0 9px;font-size:10px;font-weight:650;transition:opacity .16s,transform .16s;display:flex;position:absolute;bottom:10px;right:10px;transform:translateY(4px)}.open-preview svg{width:13px;height:13px}.thumbnail-button:not(:disabled):hover .open-preview,.thumbnail-button:not(:disabled):focus-visible .open-preview{opacity:1;transform:translateY(0)}.card-progress{z-index:4;background:#167c5c1f;height:3px;position:absolute;inset:auto 0 0;overflow:hidden}.card-progress:after{border-radius:inherit;background:var(--accent);content:"";width:42%;animation:1.2s ease-in-out infinite progress;position:absolute;inset:0 auto 0 0}@keyframes progress{0%{transform:translate(-110%)}to{transform:translate(340%)}}.card-body{padding:14px}.card-title-row{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.card-title-row>div{min-width:0}.card-title-row h3{color:#1b2a26;letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;font-weight:720;overflow:hidden}.card-title-row p{color:#7b8a85;text-overflow:ellipsis;white-space:nowrap;margin:5px 0 0;font-size:10px;overflow:hidden}.status-badge{color:#7d8a86;flex:none;align-items:center;gap:5px;padding-top:1px;font-size:9px;font-weight:650;display:inline-flex}.status-badge span{background:currentColor;border-radius:50%;width:5px;height:5px}.status-ready{color:#16805d}.status-error{color:#b44e46}.status-generating span,.status-queued span{animation:1s ease-in-out infinite alternate pulse}@keyframes pulse{to{opacity:.3}}.card-meta{color:#9aa6a2;border-top:1px solid #edf1f0;justify-content:space-between;align-items:center;gap:12px;margin-top:13px;padding-top:10px;font-size:9px;display:flex}.card-meta span:last-child{text-overflow:ellipsis;white-space:nowrap;max-width:60%;overflow:hidden}.card-error{color:#b44e46;text-overflow:ellipsis;white-space:nowrap;margin:8px 0 0;font-size:9px;line-height:1.45;overflow:hidden}.gallery-footnote{color:#84918d;background:#fbfcfc;border-top:1px solid #e8edeb;justify-content:space-between;align-items:center;gap:20px;min-height:46px;padding:0 22px;font-size:10px;display:flex}.drop-hint{z-index:10;color:#236c56;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#eff8f5f0;flex-direction:column;justify-content:center;align-items:center;gap:14px;transition:opacity .14s;display:flex;position:absolute;inset:83px 0 45px}.is-dragging .drop-hint{opacity:1}.drop-icon{background:#fff;border:1px solid #bad9ce;border-radius:16px;place-items:center;width:58px;height:58px;display:grid;box-shadow:0 14px 30px #236c5624}.drop-icon svg{width:27px;height:27px}.drop-hint strong{font-size:14px}.preview-dialog{background:0 0;border:0;border-radius:16px;width:min(1120px,100vw - 48px);height:min(760px,100vh - 48px);padding:0;overflow:visible;box-shadow:0 34px 120px #0d1d184d}.preview-dialog::backdrop{-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#0e1c188f}.dialog-shell{border-radius:inherit;background:#fff;grid-template-rows:68px minmax(0,1fr);height:100%;display:grid;overflow:hidden}.dialog-header{border-bottom:1px solid #e3e9e7;justify-content:space-between;align-items:center;gap:20px;padding:0 18px 0 22px;display:flex}.dialog-header h2{letter-spacing:-.02em;margin:3px 0 0;font-size:17px;font-weight:720}.dialog-eyebrow{font-size:8px}.icon-button{cursor:pointer;color:#5f706b;background:#f8faf9;border:1px solid #d9e2df;border-radius:9px;place-items:center;width:36px;height:36px;padding:0;display:grid}.icon-button:hover{color:#1e4e40;background:#f1f6f4}.icon-button svg{width:18px;height:18px}.preview-stage{background:#edf3f1;height:100%;min-height:0}.preview-loading{color:#6a7b76;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#f1f6f4e6;justify-content:center;align-items:center;gap:12px;font-size:12px;display:flex;position:absolute;inset:68px 0 0}.preview-loading[hidden]{display:none}.spinner{border:2px solid #c9d9d4;border-top-color:var(--accent);border-radius:50%;width:19px;height:19px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toast{z-index:30;color:#fff;opacity:0;pointer-events:none;background:#132520eb;border:1px solid #ffffff1f;border-radius:9px;max-width:calc(100vw - 40px);padding:11px 15px;font-size:12px;transition:opacity .16s,transform .16s;position:fixed;bottom:28px;left:50%;transform:translate(-50%,12px);box-shadow:0 12px 36px #0d1d1838}.toast.visible{opacity:1;transform:translate(-50%)}[data-file-viewer-thumbnail-slot] .model-toolbar{display:none!important}[data-file-viewer-thumbnail-slot] .model-viewer,[data-file-viewer-thumbnail-slot] .model-stage{background:#edf3f1!important}@media (width<=1080px){.model-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=720px){.app-shell{padding:0 16px 32px}.topbar{height:68px}.privacy-pill{font-size:0}.privacy-pill:after{content:"本地处理";font-size:10px}.hero{padding:38px 0 28px;display:block}.hero h1{font-size:38px}.hero-description{font-size:13px}.hero-actions{margin-top:24px}.button{flex:1;padding:0 12px}.gallery-heading{align-items:flex-start;padding:17px}.summary{text-align:right;display:block}.summary-divider{display:none}#summary-text{margin-top:4px;font-size:9px;display:block}.model-grid{grid-template-columns:1fr;gap:12px;padding:12px}.open-preview{opacity:1;transform:none}.gallery-footnote{padding:13px 16px;line-height:1.7;display:block}.gallery-footnote span{display:block}.preview-dialog{border-radius:0;width:100vw;max-width:none;height:100vh;max-height:none;margin:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
