:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f6f2e8;--surface:#fcfaf4;--ink:#183c31;--ink-soft:#4d655b;--accent:#efc84a;--accent-hover:#e4b93c;--line:#183c3129;--focus:#0d5d47;--error:#853b32;--page-gutter:clamp(24px, 4vw, 64px);font-synthesis:none;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{background:var(--paper)}body{background:var(--paper);min-width:0;color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.65}button{font:inherit;-webkit-tap-highlight-color:transparent}button,.viewer{touch-action:manipulation}button:focus-visible,.viewer:focus-visible{outline:2px solid var(--focus);outline-offset:3px}button:disabled{cursor:wait;opacity:.58}.site-shell{flex-direction:column;min-height:100svh;display:flex}.site-header{z-index:3;padding:18px var(--page-gutter) 16px;justify-content:space-between;align-items:center;gap:24px;animation:.36s ease-out both quiet-enter;display:flex}.wordmark{letter-spacing:-.045em;font-family:Georgia,Times New Roman,serif;font-size:27px;font-weight:600;line-height:1.2}.header-note{color:var(--ink-soft);letter-spacing:.08em;margin:0;font-size:14px}.experience{flex:1;min-width:0;display:flex}.collection{flex:1;min-width:0;min-height:620px;display:grid;position:relative}.intro{z-index:2;max-width:390px;margin:clamp(36px, 6vh, 68px) 24px 140px var(--page-gutter);grid-area:1/1;place-self:start;animation:.42s ease-out 60ms both intro-enter}h1{letter-spacing:.01em;text-wrap:pretty;margin:0;font-family:Songti SC,Noto Serif CJK SC,STSong,serif;font-size:clamp(46px,4vw,56px);font-weight:500;line-height:1.28}.intro-description{max-width:24em;color:var(--ink-soft);text-wrap:pretty;margin:16px 0 0;font-size:15px;font-weight:400;line-height:1.85}.stage{background:radial-gradient(at 64% 38%,#ffffffad,#fff0 62%);grid-area:1/1;min-width:0;min-height:620px;position:relative;overflow:hidden}.model-frame{min-width:0;position:absolute;inset:0 0 96px clamp(110px,10vw,180px)}.viewer{opacity:0;pointer-events:none;touch-action:none;transition:opacity .36s ease-out;position:absolute;inset:0}.stage[data-state=ready] .viewer{opacity:1;pointer-events:auto;cursor:grab}.stage[data-state=ready] .viewer:active{cursor:grabbing}.viewer:focus-visible{outline-offset:-5px}.viewer canvas{touch-action:none;width:100%;height:100%;display:block}.loading-state{width:max-content;max-width:calc(100% - 40px);color:var(--ink-soft);opacity:1;pointer-events:none;align-items:center;gap:10px;font-size:15px;transition:opacity .2s ease-in;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.loading-state.is-leaving{opacity:0}.loading-mark{background:var(--accent);border-radius:50%;flex:none;width:10px;height:10px;box-shadow:0 0 0 5px #efc84a26}.stage-preview{object-fit:contain;pointer-events:none;width:100%;height:100%;padding:clamp(16px,3vw,44px);animation:.24s ease-out both quiet-enter;position:absolute;inset:0}.preview-message,.noscript-note{z-index:6;border:1px solid var(--line);width:max-content;max-width:calc(100% - 40px);color:var(--ink);text-align:center;background:#fcfaf4f5;border-radius:14px;margin:0;padding:13px 18px;font-size:14px;line-height:1.65;position:absolute;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 8px 28px #27342617}.preview-message strong{font-size:15px;font-weight:600}.preview-message p{color:var(--ink-soft);margin:3px 0 0}.toolbar-dock{z-index:5;width:max-content;max-width:calc(100% - 32px);position:absolute;bottom:22px;left:50%;transform:translate(-50%)}.viewer-toolbar{-webkit-backdrop-filter:blur(16px);background:#fcfaf4eb;border:1px solid #183c3121;border-radius:20px;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;max-width:100%;padding:6px;animation:.3s ease-out both toolbar-enter;display:flex;box-shadow:0 14px 38px #2734261f,0 2px 8px #2734260f}.primary-tool,.view-tools,.utility-tools{align-items:center;gap:4px;display:flex}.tool-button{min-width:44px;min-height:44px;color:var(--ink);white-space:nowrap;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;margin:0;padding:0 12px;font-size:14px;font-weight:500;line-height:1.2;transition:transform .15s ease-out,background-color .15s ease-out,color .15s ease-out,box-shadow .15s ease-out,opacity .15s ease-out;display:inline-flex}.tool-button:hover:not(:disabled){background:#183c3112}.tool-button:active:not(:disabled){transition-duration:.12s;transform:scale(.96)}.tool-button--primary{background:var(--accent);color:#253b25;gap:8px;min-height:48px;padding:0 17px;font-size:15px;box-shadow:inset 0 -1px #64480021}.tool-button--primary:hover:not(:disabled){background:var(--accent-hover)}.tool-button--primary[aria-pressed=true]{background:#e8bd3f;box-shadow:inset 0 0 0 2px #253b2533}.icon-pause,.tool-button--primary[aria-pressed=true] .icon-play{display:none}.view-button[aria-pressed=true]{background:var(--ink);color:var(--surface)}.view-button[aria-pressed=true]:hover:not(:disabled){background:#244c40}.icon-button{width:44px;height:44px;padding:0}.icon{flex:none;width:21px;height:21px;display:block}.tool-button--primary .icon-pause{display:none}.tool-button--primary[aria-pressed=true] .icon-pause{display:block}.toolbar-divider{background:var(--line);width:1px;height:24px;margin:0 3px}.toast{z-index:7;border:1px solid var(--line);background:var(--ink);width:max-content;max-width:calc(100% - 40px);color:var(--surface);text-align:center;pointer-events:none;border-radius:12px;padding:10px 15px;font-size:14px;line-height:1.55;animation:.18s ease-out both toast-enter;position:absolute;bottom:100px;left:50%;transform:translate(-50%);box-shadow:0 8px 26px #183c3129}.toast[data-tone=error]{background:var(--error)}.site-footer{z-index:3;padding:14px var(--page-gutter) 18px;color:var(--ink-soft);justify-content:space-between;align-items:center;gap:16px 28px;font-size:14px;line-height:1.6;display:flex}.site-footer p{margin:0}.materials span{color:#183c3175;margin:0 7px;display:inline-block}.interaction-help{text-align:right;justify-content:flex-end;align-items:center;gap:8px 18px;display:flex}.gesture-coarse{display:none}@keyframes quiet-enter{0%{opacity:0}to{opacity:1}}@keyframes intro-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes toolbar-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-enter{0%{opacity:0;transform:translate(-50%,5px)}to{opacity:1;transform:translate(-50%)}}@media (width<=900px) and (width>=701px){.intro{max-width:330px}.model-frame{left:80px}}@media (width<=700px){:root{--page-gutter:20px}.site-header{padding-top:15px;padding-bottom:13px}.wordmark{font-size:25px}.collection{flex-direction:column;min-height:0;display:flex}.intro{max-width:none;margin:12px var(--page-gutter) 0;flex:none;order:2}h1{font-size:28px;line-height:1.3}.intro-description{margin-top:5px;font-size:14px;line-height:1.6}.stage{flex:none;order:1;width:100%;min-height:600px;margin-top:0}.model-frame{inset:0 0 136px}.toolbar-dock{width:auto;max-width:none;bottom:16px;left:12px;right:12px;transform:none}.viewer-toolbar{border-radius:18px;gap:6px;width:100%}.primary-tool{flex:112px;min-width:0}.tool-button--primary{width:100%;padding-left:13px;padding-right:13px}.view-tools{flex:none}.utility-tools{border-top:1px solid var(--line);flex:1 0 100%;justify-content:space-around;padding-top:6px}.toolbar-divider{display:none}.toast{width:auto;max-width:none;animation-name:quiet-enter;bottom:150px;left:16px;right:16px;transform:none}.preview-message,.noscript-note{max-width:calc(100% - 32px);bottom:20px}.site-footer{text-align:center;flex-direction:column;gap:8px;padding-top:15px;padding-bottom:20px}.interaction-help{text-align:center;justify-content:center}}@media (pointer:coarse){.gesture-fine,.keyboard-hint{display:none}.gesture-coarse{display:block}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}
