@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Caslon+Display&display=swap');
.qr{width:240px;min-height:240px}.qr svg{display:block;width:240px;height:240px}
:root{--paper:#f5f2e9;--ink:#24372f;--accent:#c95232;--line:#d4d7ca;--soft:#e8eadf;font-family:'DM Sans',sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;background:transparent;border:1px solid var(--ink);padding:12px 18px;border-radius:3px;min-height:46px;color:inherit}button:hover{background:var(--soft)}button:disabled{opacity:.45;cursor:wait}button.primary{background:var(--accent);color:white;border-color:var(--accent);font-weight:600}button.primary:hover{filter:brightness(.94)}a{color:inherit}header{display:flex;align-items:center;justify-content:space-between;padding:28px 5%;border-bottom:1px solid var(--line)}.wordmark{text-decoration:none;font-weight:700;letter-spacing:-1px;font-size:24px}.wordmark span{display:block;font-size:9px;letter-spacing:3px;margin-top:2px}.environment,.eyebrow,.stageFoot,footer{font-size:11px;letter-spacing:1.8px}.environment{padding:9px 12px;border:1px solid var(--line);border-radius:20px}.environment:before{content:'';display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin-right:8px}main{max-width:1600px;margin:auto;padding:55px 5% 70px}.intro{max-width:850px;padding:10px 0 35px}.eyebrow{font-weight:700;margin-bottom:24px;color:var(--accent)}h1,h2{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400;margin:0}h1{font-size:clamp(50px,6.6vw,100px);line-height:1.04;letter-spacing:-2px}h1 em{color:var(--accent);font-weight:400}h2{font-size:36px;line-height:1.12}.lead{font-size:19px;line-height:1.7;max-width:540px;margin:28px 0 32px}.fine{font-size:12px;line-height:1.65;color:#617064;max-width:580px}label{display:grid;gap:8px;font-size:12px;font-weight:600}input,select{background:#fffdf6;border:1px solid var(--line);padding:12px;color:var(--ink);border-radius:3px;min-width:0;max-width:100%;min-height:46px}input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}#loginForm{display:flex;align-items:end;gap:12px;max-width:570px}#loginForm label{flex:1}#loginForm button{display:flex;justify-content:space-between;gap:35px}.heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:40px}.heading h1{font-size:64px}.heading .eyebrow{margin:0 0 12px}.workspace{display:grid;grid-template-columns:260px minmax(0,1fr);gap:38px}aside{padding-right:25px;border-right:1px solid var(--line)}.projectTools{display:grid;gap:10px;margin:16px 0}.projectTools button{text-align:left;border-color:var(--line)}hr{border:0;border-top:1px solid var(--line);margin:28px 0}.drop{border:1px dashed #98a795;padding:22px 15px;background:var(--soft);gap:15px}.drop input{font-size:11px;padding:8px;width:100%;background:transparent}.drop span{font-size:10px;font-weight:400}#uploadForm{display:grid;gap:18px}#uploadForm .fine{margin:0}progress{width:100%;accent-color:var(--accent)}.stage{position:relative;height:510px;overflow:hidden;background:#e8ebdf;background-image:linear-gradient(#24372f08 1px,transparent 1px),linear-gradient(90deg,#24372f08 1px,transparent 1px);background-size:40px 40px;border:1px solid var(--line)}.stageLabel,.stageFoot{position:absolute;left:22px;right:22px;display:flex;justify-content:space-between;z-index:1;pointer-events:none}.stageLabel{top:20px;font-size:13px;font-weight:600}.stageLabel #state{font-size:10px;letter-spacing:1px;color:var(--accent)}.stageFoot{bottom:18px;font-size:9px}canvas{display:block;width:100%;height:100%}#empty{position:absolute;inset:27% 10%;pointer-events:none}#empty span{font-size:10px;letter-spacing:2px;color:var(--accent)}#empty h2{font-size:48px;margin:18px 0}#empty p{font-size:13px}.modelList{display:flex;gap:8px;overflow:auto;margin:16px 0 35px}.modelList button{font-size:12px;white-space:nowrap}.modelList .selected{background:var(--ink);color:var(--paper)}.reviewHead{display:flex;justify-content:space-between;align-items:center}.reviewHead .eyebrow{margin:0 0 10px}#review>p{font-size:13px;line-height:1.7;color:#617064}#partCount{font-size:12px}#parts{margin:24px 0}.part{display:grid;grid-template-columns:minmax(0,1fr) 120px 160px;gap:12px;align-items:center;border-top:1px solid var(--line);padding:14px 0}.part strong{font-size:13px;overflow-wrap:anywhere}.part small{display:block;font-size:11px;color:#617064;margin-top:5px}.confidence{font-size:12px}.actions{display:flex;align-items:end;flex-wrap:wrap;gap:12px}.actions label{max-width:220px}#message{padding:16px 0;color:var(--accent);white-space:pre-line}footer{display:flex;justify-content:space-between;padding:26px 5%;border-top:1px solid var(--line);font-size:9px;line-height:1.7}dialog{width:min(590px,92vw);max-height:85vh;padding:35px;border:1px solid var(--line);background:var(--paper);color:var(--ink)}dialog::backdrop{background:#172c2380}.close{float:right;border:0;font-size:22px;padding:0 10px}.dialogForm{display:grid;gap:18px}.dialogForm h2{margin-bottom:8px}.dialogForm textarea{width:100%;min-height:90px}.dialogForm img{max-width:120px}.shareLink{overflow-wrap:anywhere}.qr{max-width:240px;margin:auto}#viewer h1{font-size:60px;max-width:700px}#viewer form{display:flex;gap:12px;align-items:end;margin:30px 0}#clientLogo{max-width:150px;max-height:80px;object-fit:contain;margin-bottom:24px}#viewerStage{height:500px;margin-top:25px;background:var(--soft)}#sharedModels{display:flex;gap:10px;flex-wrap:wrap}[hidden]{display:none!important}@media(max-width:850px){main{padding-top:35px}.workspace{grid-template-columns:1fr}aside{border:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:15px}aside hr{display:none}#uploadForm{grid-column:1/-1}.heading h1{font-size:48px}.heading{align-items:start;gap:20px}.stage{height:420px}.part{grid-template-columns:minmax(0,1fr) 125px}.confidence{grid-column:1}.part select{grid-column:2;grid-row:1/3}.environment{font-size:8px}.heading button{font-size:11px}footer{gap:20px}#loginForm{flex-direction:column;align-items:stretch}.intro{padding-top:15px}#viewer form{flex-direction:column;align-items:stretch}}@media(prefers-reduced-motion:no-preference){.intro{animation:arrive .5s ease-out}@keyframes arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}}

#loginForm{flex-wrap:wrap}#loginForm label:has(input[type=checkbox]){display:flex;align-items:center;gap:10px}input[type=checkbox]{width:18px;height:18px;min-height:18px}.wordmark{flex-shrink:0}header{flex-wrap:wrap;gap:14px}#dialogBody{overflow-wrap:anywhere}

.workspace>*{min-width:0}.modelArea{min-width:0}.modelList{flex-wrap:wrap;max-width:100%}.modelList button{max-width:100%;overflow-wrap:anywhere;text-align:left}.stageLabel span{max-width:65%;overflow-wrap:anywhere}

.partTools{display:grid;gap:16px;margin:24px 0}.partTools>label{max-width:360px}.partTools nav{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.partTools nav span{font-size:13px}.modelList{max-height:180px;overflow:auto}.part{scroll-margin-top:20px}@media(max-width:500px){.partTools nav{justify-content:space-between}.partTools nav span{order:3;width:100%}.part{grid-template-columns:minmax(0,1fr)}.part .confidence,.part select{grid-column:auto;grid-row:auto}.part .materialPicker{max-width:100%}}
