/* Model Atlas v1.7.2: responsive discovery, local model loading, and flexible search controls. */
:root{color-scheme:dark;--bg:#10171c;--panel:#19232b;--line:#30404a;--text:#edf1f0;--muted:#9baeb6;--accent:#d9fb8c}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 80% 0,#20353b 0,transparent 45%),var(--bg);color:var(--text);font:15px system-ui,-apple-system,sans-serif}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--text);padding:11px 16px}button:hover{border-color:var(--accent)}button:disabled{opacity:.45;cursor:wait}a{color:var(--accent);text-decoration:none}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.icon{width:42px;height:42px;padding:9px;display:inline-flex;align-items:center;justify-content:center}.primary{background:var(--accent);color:#1a281d;border:0;font-weight:700;display:flex;gap:12px;align-items:center;justify-content:center}.quiet{background:transparent;border:0;color:var(--muted)}header,main{max-width:1180px;margin:auto;padding:24px 32px}header{display:flex;justify-content:space-between;padding-bottom:0}.title{display:flex;align-items:center;gap:10px}.title svg{color:var(--accent);width:30px;height:30px}h1{font-size:24px;letter-spacing:-1px;margin:0}.badge{font-size:10px;border:1px solid var(--line);padding:3px 6px;border-radius:5px;color:var(--muted)}header a{margin-left:40px;margin-top:3px;color:var(--muted)}main{padding-top:8px}.eyebrow{font-size:10px;font-weight:750;letter-spacing:2px;color:var(--muted)}h2{font-size:52px;line-height:1.06;letter-spacing:-2px;margin:14px 0}em{font-style:normal;color:var(--accent)}.intro p{color:var(--muted);margin:16px 0 22px}form{display:flex;gap:10px;align-items:stretch}.inputwrap{display:flex;background:#1b272f;border:1px solid #40515b;border-radius:14px;flex:1;align-items:center;padding:5px 8px 5px 18px}.inputwrap:focus-within{border-color:var(--accent)}input{width:100%;background:none;border:0;outline:none;color:var(--text);font-size:16px;padding:10px 0}input::placeholder{color:#95a5ad}.inputwrap button{border:0;background:none;color:var(--muted)}.talk{min-width:178px;user-select:none;touch-action:none}.talk.recording{background:#ff9686}.suggestions{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0 36px}.suggestions button{font-size:12px;padding:7px 12px;background:transparent;border-radius:20px;color:var(--muted)}.resultbar{display:flex;align-items:center;justify-content:space-between}h3{font-size:21px;margin:6px 0 16px;letter-spacing:-.4px}.grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.card{padding:0;overflow:hidden;text-align:left;border:1px solid #2b3c44;background:#19232b;border-radius:15px;box-shadow:0 10px 25px #0002}.thumb{position:relative;background:linear-gradient(135deg,#293840,#1c282e);aspect-ratio:1.38;overflow:hidden}.thumb img{width:100%;height:100%;object-fit:cover;transition:transform .25s}.card:hover img{transform:scale(1.05)}.sourcebadge{position:absolute;top:10px;left:10px;background:#10171ccc;padding:5px 7px;border-radius:6px;font-size:10px}.cardbody{padding:13px}.card h4{font-size:14px;margin:0 0 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card small{font-size:11px;color:var(--muted);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cardfoot{display:flex;justify-content:space-between;gap:5px;margin-top:14px;color:var(--accent);font-size:11px}.empty{text-align:center;padding:44px 20px;color:var(--muted);border:1px dashed var(--line);border-radius:16px}.empty svg{width:48px;height:48px;color:var(--accent)}.empty p{font-size:20px;color:var(--text)}.more{display:block;margin:25px auto;background:transparent;min-width:230px}footer{display:flex;justify-content:space-between;color:#7d929e;font-size:11px;padding:38px 0 10px}#status{color:var(--muted);font-size:13px;margin-bottom:14px;line-height:1.6}.spinner{display:inline-block;width:16px;height:16px;border:2px solid #52646c;border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite;vertical-align:middle;margin-right:9px}@keyframes spin{to{transform:rotate(360deg)}}dialog{background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:20px;width:min(960px,96vw);max-height:94dvh;padding:22px}dialog::backdrop{background:#000b;backdrop-filter:blur(6px)}.dialoghead{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:14px}.dialoghead h2{font-size:22px;letter-spacing:-.5px;margin:5px 0;overflow-wrap:anywhere}#settingsDialog{max-width:530px}li{margin:12px 0;color:var(--muted);line-height:1.5}#stage{height:min(58dvh,580px);background:#233039;border-radius:12px;overflow:hidden}iframe,model-viewer{width:100%;height:100%;border:0}model-viewer{--poster-color:transparent}.controls,.actions{display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin-top:12px}.controls button{padding:9px 13px}.actions{justify-content:space-between}#modelMeta,#viewerStatus{font-size:12px;color:var(--muted)}.start{position:fixed;inset:0;background:radial-gradient(ellipse at 70% 20%,#2d474b,#10171c 65%);z-index:10;display:flex;align-items:center;justify-content:center;padding:25px}.startcard{width:390px}.brandmark{width:90px;height:90px;border:1px solid #597065;border-radius:24px;background:#d9fb8c12;display:grid;place-items:center;margin-bottom:35px;transform:rotate(-8deg)}.brandmark svg{width:56px;height:56px;color:var(--accent)}.start h1{font-size:54px;line-height:1.08;margin:20px 0}.start p{color:var(--muted);line-height:1.5}.start .primary{width:100%;margin:30px 0 8px;padding:17px}.start .quiet{width:100%}[hidden]{display:none!important}@media(max-width:750px){header,main{padding-left:18px;padding-right:18px}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}h2{font-size:42px}.talk{min-width:140px}form{flex-wrap:wrap}.inputwrap{flex-basis:100%}.talk{flex:1;padding:14px}.suggestions{margin-bottom:26px}.cardbody{padding:10px}footer{gap:18px;line-height:1.6}.intro h2 br{display:none}dialog{padding:14px}#stage{height:49dvh}.controls{gap:5px}.controls button{padding:8px 10px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* v1.2.0: single selected-state Rotate toggle and a shared gesture layer for touch and mouse. */
#stage{position:relative}.gestureSurface{position:absolute;inset:0;z-index:2;touch-action:none;user-select:none;cursor:grab;outline-offset:-3px}.gestureSurface.dragging{cursor:grabbing}.gestureSurface:focus-visible{outline:2px solid var(--accent)}#rotateToggle{min-width:105px}#rotateToggle[aria-pressed="true"]{background:var(--accent);color:#1a281d;border-color:var(--accent);font-weight:700}#rotateToggle[aria-pressed="true"]::before{content:"✓ ";}

/* v1.2.0: catalog listings and transparent match labels. */
.sourceArt,.sourcePreview{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;color:var(--muted)}.sourceArt svg{width:48px;height:48px;color:var(--accent)}.sourceArt span{font-size:15px}.matchBadge{font-size:10px;color:var(--accent);margin-top:8px}.sourcePreview{padding:16px;overflow:auto}.sourcePreview img{max-height:70%;max-width:100%;object-fit:contain}.sourcePreview svg{width:60px;height:60px}.sourcePreview p{font-size:13px;max-width:600px;line-height:1.5}#searchTrace{white-space:pre-wrap;font-size:12px;line-height:1.6}#viewerStatus:empty{display:none}

.localBtn{background:var(--accent)!important;color:#1a281d!important;border-color:var(--accent)!important;font-weight:700}.dropOverlay{position:fixed;inset:12px;z-index:30;display:grid;place-items:center;background:#10171cf2;border:2px dashed var(--accent);border-radius:24px;pointer-events:none;text-align:center}.dropOverlay>div{display:grid;gap:10px}.dropOverlay strong{font-size:clamp(24px,5vw,42px)}.dropOverlay span{color:var(--muted)}
.talk{width:158px;min-width:132px;flex:0 1 158px;height:50px;padding:11px 12px}.localBtn{width:76px;min-width:76px;flex:0 0 76px;height:50px;padding:11px 10px;justify-content:center}
@media(max-width:750px){.talk{width:auto;min-width:0;flex:1 1 auto}}