:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#25334b;background:#eef2f7;font-size:16px;--blue:#2962ed;--muted:#64748b;--line:#e0e7ef}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;border:1px solid #d9e2ef;border-radius:9px;background:white;color:#40516d;padding:9px 13px;font-size:14px;min-height:40px}button:hover{background:#eef3ff;border-color:#b4c9fa}button:disabled{opacity:.4;cursor:default}.primary{background:var(--blue);border-color:var(--blue);color:white}.primary:hover{background:#2054d1;color:white}.active{color:#2658bd;background:#eaf1ff;border-color:#bdd0fa}input{border:1px solid #d9e2ed;border-radius:8px;padding:10px;color:#334763;min-width:0}input[type=checkbox]{width:16px;height:16px;accent-color:var(--blue)}button:focus-visible,input:focus-visible,summary:focus-visible,a:focus-visible{outline:3px solid #9abafd;outline-offset:2px}[hidden]{display:none!important}header{height:84px;display:flex;align-items:center;gap:24px;padding:16px 25px;background:white;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;font-size:30px;font-weight:600;text-decoration:none;color:#26446e}.brand span{font-size:20px}.brand small{display:block;font-size:12px;color:var(--muted);font-weight:400}.header-actions{display:flex;gap:8px;margin-left:auto}#project-name{width:min(280px,25vw);background:#f7f9fc;border-color:transparent;font-size:14px}h1{font-size:clamp(36px,4vw,62px);line-height:1.08;letter-spacing:-2px;font-weight:500;margin:22px 0}h2{font-size:15px;font-weight:600;margin:0 0 16px}p{line-height:1.65;font-size:14px}.muted{font-size:13px;color:var(--muted)}#welcome{max-width:1160px;margin:8vh auto;padding:30px;display:grid;grid-template-columns:1.1fr 1fr;gap:70px;align-items:center}.eyebrow{font-size:12px;letter-spacing:1.7px;color:#607a9f}.welcome-copy>p{max-width:450px;font-size:17px;color:#73829a}.welcome-copy .large{display:block;margin:26px 0 12px;padding:15px 20px}.welcome-copy .muted{font-size:13px}#dropzone{min-height:370px;background:linear-gradient(145deg,#fff,#f7faff);border:2px dashed #bccbe3;border-radius:25px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:30px;color:#7790b2}#dropzone.dragover{background:#eaf2ff;border-color:#2962ed}#dropzone strong{font-size:18px;color:#3c557b}#dropzone>span:not(.drop-icon){font-size:14px}.drop-icon{font-size:44px;color:#94b0dc}#dropzone ol{font-size:14px;padding-left:20px;line-height:2.1;margin-top:20px}
main{display:grid;grid-template-columns:235px minmax(300px,1fr) 280px;min-height:calc(100dvh - 84px)}aside{background:#fff;padding:20px;min-width:0;max-height:calc(100dvh - 84px);overflow:auto}.left{border-right:1px solid var(--line)}.right{border-left:1px solid var(--line)}.tabs{display:flex;gap:6px;margin:-2px -2px 23px}.tabs button{flex:1;padding:8px 6px}.tools{display:flex;flex-direction:column;gap:8px}.tools button{text-align:left;font-size:13px}label{display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--muted);margin:12px 0}label input{width:100%;font-size:14px}label select{border:1px solid #d9e2ed;border-radius:8px;padding:10px;color:#334763;background:#fff;width:100%;font-size:14px}.checkbox{flex-direction:row;align-items:center;gap:9px;color:#3a4a63}.inline{display:inline-flex;flex-direction:row;align-items:center;margin:0 4px;gap:6px;white-space:nowrap}.inline input{width:15px}.section{border-top:1px solid var(--line);padding-top:22px;margin-top:24px}.section>button,.right>.section>button{width:100%;margin-bottom:9px}#replace-image{margin-top:20px;width:100%}#catalog-search{width:100%;font-size:14px;margin-bottom:17px}#catalog{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.catalog-card{padding:0 0 9px;overflow:hidden;text-align:left;border-radius:11px}.catalog-card img{width:100%;height:87px;object-fit:contain;display:block;background:#f3f6fa}.catalog-card strong{display:block;font-size:13px;font-weight:500;margin:8px 8px 4px;line-height:1.4}.catalog-card small{display:block;font-size:12px;color:var(--muted);margin:0 8px}.centre{min-width:0;background:#f3f5f9}.viewport-toolbar{padding:18px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}.viewport-toolbar>div{display:flex;align-items:center;gap:5px}.segmented{padding:3px;background:#fff;border:1px solid var(--line);border-radius:11px}.segmented button{border-color:transparent}#viewport{position:relative;height:calc(100dvh - 245px);min-height:420px;overflow:hidden;background:radial-gradient(ellipse,#fff,#edf1f7);touch-action:none}#plan-canvas,#three-host{position:absolute;inset:0;width:100%;height:100%}#three-host canvas{width:100%;height:100%;display:block;touch-action:none}#hint{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);max-width:90%;background:#fffffff0;border:1px solid var(--line);border-radius:10px;padding:9px 14px;font-size:12px;pointer-events:none;color:#577094;text-align:center}.statusbar{display:flex;justify-content:space-between;gap:10px;padding:12px 20px 0;font-size:12px;color:var(--muted)}#status{min-height:30px;padding:0 20px;margin:8px 0;font-size:13px;color:#5b7598}#status.error{color:#b34242}#scale-label.unconfirmed{color:#a86a1d;font-weight:500}.right details{border-top:1px solid var(--line);margin-top:20px;padding-top:18px;font-size:12px;color:var(--muted)}summary{cursor:pointer}.dimension-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.dimension-row input{padding:9px 6px}.property-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:16px}.danger{color:#b34b45;background:#fff6f5}.opening{border-top:1px solid var(--line);padding-top:13px;margin-top:16px}.opening strong{font-size:13px}.opening .dimension-row{grid-template-columns:repeat(2,minmax(0,1fr))}.opening button{font-size:12px;min-height:32px;padding:6px 10px}.selected-name{font-size:17px;color:#3b5274;font-weight:500;margin-bottom:20px}dialog{width:min(610px,calc(100% - 30px));max-height:85dvh;overflow:auto;border:1px solid var(--line);border-radius:20px;padding:26px;box-shadow:0 25px 100px #1f365c44;color:#2d425f}dialog::backdrop{background:#20324e77}dialog h2{font-size:21px}.dialog-heading{display:flex;justify-content:space-between;align-items:center}.dialog-heading button{font-size:23px;border:0}dialog label input{font-size:17px}dialog>button{margin:12px 8px 0 0}.saved-file{display:flex;flex-direction:column;gap:10px;padding:15px 0;border-bottom:1px solid var(--line);font-size:14px}.saved-file a{color:#2962ed;word-break:break-all}.saved-file small{color:var(--muted);word-break:break-all}.saved-file button{align-self:flex-start}.saved-confirm{padding:14px;border-radius:10px;background:#edf5ef;color:#41694b;font-size:14px;line-height:1.6}
@media(max-width:1100px){main{grid-template-columns:210px minmax(300px,1fr)}.right{grid-column:2;max-height:none;border-top:1px solid var(--line);border-left:0}.left{grid-row:1 / 3;max-height:none}#viewport{height:540px}.header-actions{gap:5px}.header-actions button{font-size:12px;padding:9px}#project-name{width:190px}#properties{max-width:460px}}
@media(max-width:720px){header{height:auto;flex-wrap:wrap;padding:15px;gap:15px}.header-actions{width:100%;justify-content:flex-end}.brand{font-size:26px}#project-name{margin-left:auto;width:45%}#welcome{grid-template-columns:1fr;gap:30px;margin:15px auto;padding:25px}#dropzone{min-height:280px}main{display:flex;flex-direction:column}.centre{order:0}.right{order:1;max-height:none;border-left:0}.left{order:2;max-height:none;border-right:0;border-top:1px solid var(--line)}#viewport{height:450px;min-height:360px}#catalog{grid-template-columns:repeat(3,minmax(0,1fr))}.catalog-card img{height:110px}.viewport-toolbar{padding:12px}.viewport-toolbar button{font-size:13px;min-height:42px}.inline{font-size:12px}input,label input{font-size:16px}.tools{display:grid;grid-template-columns:1fr 1fr}.statusbar{font-size:12px;flex-wrap:wrap}.header-actions button{min-height:42px;font-size:13px}.dimension-row input{font-size:16px}.catalog-card strong{font-size:14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

#finish-outline{position:absolute;top:14px;left:50%;transform:translateX(-50%);z-index:2}
