:root{color-scheme:light;--paper:#eee9df;--ink:#303e37;--muted:#687567;--line:#d2d6c6;--green:#486c50;--red:#aa4637;--serif:"Iowan Old Style","Palatino Linotype","Songti SC","STSong","SimSun",serif;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}body{margin:0;height:100dvh;overflow:hidden}button,a,input,summary{-webkit-tap-highlight-color:transparent}button,input,summary{cursor:pointer}button,a{color:inherit}button{font:inherit;border:1px solid var(--line);border-radius:6px;background:#f8f5eee8;padding:10px 14px;min-height:42px;transition:background .15s,transform .15s}button:hover{background:#fffdf7}button:active{transform:translateY(1px)}button:disabled{cursor:default;opacity:.4}a{text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--red);outline-offset:3px}[hidden]{display:none!important}.topbar{height:90px;display:flex;align-items:center;justify-content:space-between;padding:0 36px;border-bottom:1px solid #d9dacb;position:relative;z-index:2}.brand{font:24px var(--serif);font-weight:bold}.brand span{font:16px sans-serif;margin-left:8px}.title{text-align:center}.eyebrow{font:9px ui-monospace,monospace;letter-spacing:.15em;color:var(--muted)}h1{font:26px var(--serif);letter-spacing:.12em;margin:5px 0 0}.quiet{border:0;background:transparent}.quiet span{display:inline-grid;place-items:center;border:1px solid #bbc4b4;width:23px;height:23px;border-radius:50%;margin-left:6px}#garden{position:relative;height:calc(100dvh - 90px);overflow:hidden;background:#e5e8d8}#world{display:block;width:100%;height:100%;touch-action:none;outline-offset:-4px;cursor:grab}#world.dragging{cursor:grabbing}.intro{pointer-events:none;position:absolute;top:34px;left:36px}.intro p{font:clamp(27px,3vw,43px)/1.4 var(--serif);letter-spacing:.06em;margin:13px 0;color:#425842}.intro-hint{font-size:11px;color:#637562}.view-tools{position:absolute;right:30px;top:30px;display:grid;gap:6px}.view-tools button{width:44px;font-size:20px;padding:4px;background:#f8f5eecf}.bottom-area{position:absolute;bottom:max(15px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(850px,calc(100% - 48px));text-align:center}#status{display:table;max-width:100%;margin:0 auto 12px;padding:7px 14px;border-radius:30px;background:#f5f3e9e8;font-size:12px;color:#405a42;box-shadow:0 2px 10px #33443305}#status.invalid{color:#9d3b30;background:#fff0e9}#catalog{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding:7px;background:#f8f5eee8;border:1px solid #ffffffe0;border-radius:12px;box-shadow:0 8px 32px #30432d12}#catalog button{text-align:left;padding:9px 11px;border-color:transparent;background:transparent;position:relative;min-width:0;white-space:nowrap}#catalog button:hover{background:#e8ebdd}#catalog button[aria-pressed=true]{background:#425e46;color:#fff9eb}.model-no{display:block;font:9px ui-monospace,monospace;letter-spacing:.12em;opacity:.66;margin-bottom:6px}.model-name{font:15px var(--serif)}.bottom-meta{display:flex;align-items:center;justify-content:center;gap:14px;font-size:10px;color:#667361;margin-top:6px}.bottom-meta button{background:none;border:0;font-size:11px;padding:4px 6px;min-height:30px}.fan-note{margin-left:auto}.selection{position:absolute;right:30px;bottom:175px;width:240px;background:#f8f5eef2;border:1px solid #ffffffe0;padding:18px;border-radius:10px;box-shadow:0 12px 40px #30432d0d}.selection-heading{display:flex;align-items:center;justify-content:space-between}h2{font:24px var(--serif);margin:8px 0 16px}.selection h2{font-size:23px;margin:5px 0 14px}.selection-heading button{align-self:start;padding:0 6px;font-size:23px}.rotation{display:flex;justify-content:space-between;align-items:center;gap:8px}.rotation button{border:0;background:none;font-size:23px;padding:0 8px}.rotation label{font-size:11px;display:grid;gap:5px;text-align:center}.rotation output{font:14px ui-monospace,monospace;color:var(--green)}input[type=range]{width:100%;accent-color:var(--green);margin:6px 0 12px;height:22px}.selection-actions{display:flex;align-items:start;justify-content:space-between;gap:8px}.selection-actions>button,.nudge summary{font-size:11px;padding:9px 5px;border:0;background:none;min-height:38px}.nudge summary{list-style:none;text-align:center}.nudge summary::after{content:' ＋'}.nudge[open] summary::after{content:' −'}.nudge>div{display:grid;grid-template-columns:repeat(2,1fr);gap:3px}.nudge button{padding:2px 12px;min-height:36px}.loading{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#e5e8d8;z-index:4}.loading-flower{font-size:58px;color:#718267}.loading p{font-size:13px;color:#62725d}.error{position:absolute;inset:20%;height:fit-content;padding:32px;background:#f8f5ee;border:1px solid var(--line);z-index:6;text-align:center}.error p{line-height:1.7}.error a{display:inline-block;margin:18px}.loading-flower{animation:breathe 2s ease-in-out infinite}@keyframes breathe{50%{opacity:.45;transform:rotate(25deg)}}dialog{border:1px solid var(--line);border-radius:12px;padding:35px;width:min(490px,calc(100% - 32px));max-height:85dvh;color:var(--ink);background:#f8f5ee;box-shadow:0 25px 100px #182c2444}dialog::backdrop{background:#25382966;backdrop-filter:blur(3px)}dialog p{font-size:13px;line-height:1.9;color:#596657}dialog b{font-weight:600;color:var(--ink)}dialog h2{font-size:29px;margin-top:14px}.dialog-close{position:absolute;right:12px;top:8px;border:0;background:none;font-size:24px}.solid{background:#425e46;color:#fff9eb;border-color:#425e46}.solid:hover{background:#354e39}.dialog-actions{display:flex;justify-content:end;gap:10px}
@media(min-width:1600px){.intro{left:50px;top:45px}.selection{right:45px}.topbar{padding:0 50px}}
@media(max-width:800px){.topbar{height:76px;padding:0 20px}#garden{height:calc(100dvh - 76px)}.intro{top:22px;left:22px}.intro p{font-size:29px}.intro-hint{display:none}.view-tools{top:20px;right:18px}.selection{right:18px;bottom:173px;width:215px;padding:14px}.bottom-area{width:calc(100% - 28px)}#catalog{gap:2px}#catalog button{padding:9px 6px}.model-name{font-size:13px}.bottom-meta{gap:10px}.fan-note{display:none}}
@media(max-width:540px){.topbar{height:68px;padding:0 16px}.brand{font-size:20px}.brand span{display:none}h1{font-size:22px}.title .eyebrow{font-size:7px}.topbar .quiet{font-size:11px;padding:8px 0}.topbar .quiet span{display:none}#garden{height:calc(100dvh - 68px)}.intro{top:18px;left:18px}.intro>.eyebrow{font-size:7px}.intro p{font-size:25px;line-height:1.3;margin:9px 0}.view-tools{gap:4px;right:14px;top:14px}.view-tools button{width:40px;min-height:40px}.bottom-area{bottom:max(8px,env(safe-area-inset-bottom));width:calc(100% - 20px)}#catalog{grid-template-columns:repeat(3,minmax(0,1fr));padding:5px;border-radius:10px;gap:2px}#catalog button{padding:6px 10px;min-height:43px}.model-no{display:inline-block;margin:0 7px 0 0;font-size:8px}.model-name{font-size:14px}#status{font-size:11px;margin-bottom:8px;padding:6px 11px}.bottom-meta{gap:9px;margin-top:2px;font-size:9px}.bottom-meta button{font-size:10px}.selection{left:14px;right:14px;width:auto;bottom:169px;padding:10px 14px;display:grid;grid-template-columns:1fr 1fr;column-gap:15px;align-items:center}.selection-heading{grid-row:1 / 3}.selection h2{font-size:21px;margin:4px 0}.selection-heading button{font-size:21px;min-height:32px}.selection .eyebrow{font-size:8px}.rotation label{font-size:9px;gap:2px}.rotation button{font-size:23px;min-height:32px}input[type=range]{margin:0;height:20px}.selection-actions{grid-column:1/-1;border-top:1px solid var(--line);margin-top:6px;padding-top:2px;align-items:center}.selection-actions>button,.nudge summary{min-height:30px;padding:5px}.nudge>div{display:flex}.nudge button{min-height:32px}.nudge[open]{display:flex;gap:8px;align-items:center}.error{inset:14% 6%;padding:20px}dialog{padding:28px 24px}.intro.selected{display:none}}
@media(max-height:620px) and (min-width:541px){.topbar{height:60px}#garden{height:calc(100dvh - 60px)}.intro p{font-size:24px}.selection{bottom:142px;padding:10px 14px}.selection h2{margin-bottom:6px}.bottom-area{bottom:6px}#status{margin-bottom:5px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
