.dh-panel{margin:20px 0;padding:22px;border:1px solid #c7d6cd;border-radius:18px;background:#f4f7f4;color:#05152b;font-family:Montserrat,Arial,sans-serif}.dh-panel h3{margin:0 0 12px}.dh-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}.dh-pane{min-width:0;background:white;padding:14px;border-radius:16px}.dh-plan{display:block;width:100%;height:auto;touch-action:none;cursor:crosshair;border-radius:10px}.dh-view{height:460px;min-height:280px;border-radius:14px;overflow:hidden}.dh-tools{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:12px 0}.dh-tools label{display:flex;flex-direction:column;gap:6px;font-size:13px;flex:1 1 140px}.dh-tools input,.dh-tools select{box-sizing:border-box;width:100%;min-width:0;min-height:44px;border:1px solid #c7d6cd;border-radius:9px;padding:8px;font:inherit;color:inherit;background:white}.dh-panel p,.dh-panel small{line-height:1.5}.dh-panel button{min-height:44px}.dh-status{min-height:24px}.dh-share{background:white;border-radius:14px;padding:16px;margin-top:16px}.dh-share input[type=url]{width:100%;padding:12px;box-sizing:border-box}.dh-public{margin:0;background:#f3f5f0;color:#05152b;font:16px/1.5 Montserrat,Arial,sans-serif}.dh-public main{max-width:1280px;margin:auto;padding:18px}.dh-public .dh-view{height:70vh;min-height:350px}.dh-public button,.dh-public select{font:inherit;padding:10px 16px;border:1px solid #b6ccbd;background:#fff;border-radius:12px;color:#05152b}.dh-public h1{font-size:26px}.dh-public a{color:#315a42}.dh-share a{overflow-wrap:anywhere}.dh-panel [hidden]{display:none!important}@media(max-width:820px){.dh-layout{grid-template-columns:minmax(0,1fr)}.dh-view{height:360px}.dh-panel{padding:14px}.dh-public .dh-view{height:60vh}}
@font-face{font-family:Montserrat;src:url('/fonts/montserrat-regular.woff') format('woff');font-weight:400;font-display:swap}
@font-face{font-family:Montserrat;src:url('/fonts/montserrat-600.woff') format('woff');font-weight:600;font-display:swap}
@font-face{font-family:Montserrat;src:url('/fonts/montserrat-bold.ttf') format('truetype');font-weight:700;font-display:swap}
@font-face{font-family:Montserrat;src:url('/fonts/montserrat-bold.woff') format('woff');font-weight:700;font-display:swap}
.dh-public .dh-brand{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#05152b;border-radius:18px;padding:20px 28px;color:#a5c4b0;box-shadow:0 10px 30px #05152b12}
.dh-brand img{display:block;max-width:45%;height:auto;object-fit:contain}
.dh-brand p{font-size:14px;line-height:1.7;text-align:right;margin:0}
.dh-public .dh-intro{padding:26px 4px 16px}
.dh-public .dh-eyebrow{color:#75602e;letter-spacing:.14em;font-size:11px;font-weight:700}
.dh-public h1{font-weight:700;line-height:1.2;margin:10px 0 14px}
.dh-public .dh-view{border:1px solid #cbdcd0;box-shadow:0 12px 35px #05152b0d;background:#f3f5f0}
.dh-public .dh-tools{padding:10px 0;gap:12px}
.dh-public .dh-note{font-size:12px;color:#52675b;max-width:920px}
.dh-footer{margin-top:24px;padding:20px 0 4px;border-top:1px solid #c5ad75;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;align-items:center}
.dh-footer a{font-weight:700;text-decoration:none}.dh-footer span{font-size:12px;color:#52675b}
.dh-public :is(button,select):focus-visible{outline:3px solid #b59758;outline-offset:3px}
@media(max-width:480px){.dh-public main{padding:12px}.dh-public .dh-brand{padding:16px;gap:14px}.dh-brand img{max-width:48%}.dh-brand p{font-size:11px}.dh-public h1{font-size:23px}.dh-public .dh-tools button{flex:1 1 140px}}

/* More room for the model, without widening the page. */
.dh-layout{grid-template-columns:minmax(260px,.8fr) minmax(0,1.4fr);align-items:start}.dh-view{height:clamp(480px,65vh,780px);box-shadow:inset 0 0 0 1px #c7d6cd,0 12px 30px #17342614}.dh-pane{box-shadow:0 5px 18px #1734260c}.dh-opening{background:#e4eee7;border:1px solid #a5c4b0;border-radius:14px;padding:16px}.dh-share [data-linkbox]{margin-top:16px;padding:18px;border:2px solid #315d45;border-radius:12px;background:#edf5ef}.dh-share [data-share-status]{font-weight:600}.dh-share input[type=url]{border:1px solid #a5c4b0;border-radius:9px;background:white;font:inherit}.dh-opening h4{margin-top:0}@media(max-width:820px){.dh-layout{grid-template-columns:minmax(0,1fr)}.dh-layout .dh-pane:nth-child(2){grid-row:1}.dh-view{height:60vh;min-height:380px}}

.dh-layout{grid-template-columns:minmax(240px,.65fr) minmax(0,1.65fr);gap:20px}.dh-layout .dh-pane:nth-child(2){background:linear-gradient(145deg,#fff,#edf3ee);border:1px solid #c4d5c9;box-shadow:0 18px 40px #17342614}.dh-view{height:clamp(580px,76vh,900px);background:radial-gradient(ellipse at 50% 40%,#f8faf7,#d5e0d7);border-radius:18px}.dh-pane h4{font-size:16px;letter-spacing:.02em;color:#234c3b}.dh-panel h3{font-size:24px}.dh-panel{background:linear-gradient(145deg,#f8faf7,#e7eee8)}@media(max-width:820px){.dh-layout{grid-template-columns:minmax(0,1fr)}.dh-view{height:66vh;min-height:420px}}

.dh-preview-stage{position:relative;min-width:0}.dh-preview-stage .dh-opening{position:absolute;top:12px;right:12px;z-index:3;width:min(290px,calc(100% - 24px));box-sizing:border-box;max-height:calc(100% - 24px);overflow:auto;box-shadow:0 12px 35px #05152b30;background:#f5faf6f5;backdrop-filter:blur(10px)}.dh-opening-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.dh-opening-head h4{margin:0}.dh-opening-head button{flex:none;width:36px;min-height:36px}.dh-opening .dh-tools{gap:9px}.dh-opening .dh-tools label{flex-basis:100%}.dh-share:focus{outline:2px solid #bfa36d;outline-offset:3px}.dh-share [data-share-requirements]{padding:12px;border-radius:10px;background:#edf4ef;line-height:1.55}.dh-share [data-share-status]{min-height:1.5em}.dh-panel [data-import]{margin-left:auto}@media(max-width:480px){.dh-panel [data-import]{margin-left:0;width:100%}.dh-preview-stage .dh-opening{right:8px;top:8px;width:min(260px,calc(100% - 16px))}}

/* Original plan and contextual 3D editing. */
.dh-layout{grid-template-columns:minmax(0,1fr) minmax(0,1.45fr)}.dh-plan{cursor:default;touch-action:auto;border:1px solid #d6dfd9;background:#fff}.dh-view{background:#A5C4B0}.dh-opening{color:#05152b}.dh-pane:first-child{position:sticky;top:16px}.dh-pane:first-child h4{margin-bottom:18px}@media(max-width:820px){.dh-layout{grid-template-columns:minmax(0,1fr)}.dh-pane:first-child{position:static}.dh-layout .dh-pane:nth-child(2){grid-row:auto}}

/* Equal plan/model cards and equal drawing surfaces. */
.dh-layout{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}.dh-layout .dh-pane:first-child{position:static;display:flex;flex-direction:column}.dh-layout .dh-plan{height:clamp(580px,76vh,900px);width:100%;object-fit:contain;box-sizing:border-box}.dh-layout .dh-pane{height:auto}.dh-opening [data-stair-options]{width:100%}.dh-opening [data-stair-options] label{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.dh-opening input[type=checkbox]{width:auto;min-height:20px}@media(max-width:820px){.dh-layout{grid-template-columns:minmax(0,1fr)}.dh-layout .dh-plan{height:66vh;min-height:420px}}

.dh-public .dh-intro{height:auto;min-height:0;overflow:visible;padding:24px 4px 16px}.dh-public #dh-title{height:auto;max-height:none;overflow:visible;white-space:normal;overflow-wrap:anywhere;line-height:1.3;padding-block:4px;margin:8px 0 14px}.dh-public .dh-brand{min-height:110px;height:auto;overflow:visible;flex-wrap:wrap}.dh-public .dh-brand img{width:340px;max-width:60%;height:auto;max-height:160px;object-fit:contain}.dh-public main{box-sizing:border-box;width:100%}@media(max-width:480px){.dh-public .dh-brand img{max-width:100%;width:280px}.dh-public .dh-brand p{text-align:left}.dh-public #dh-title{font-size:23px}}

.dh-public .dh-brand #dh-logo{box-sizing:border-box;background:#fff;padding:12px 18px;border-radius:12px}

.dh-preview-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.dh-preview-heading h4{margin:0}.dh-large-dialog{box-sizing:border-box;width:calc(100vw - 24px);max-width:none;height:calc(100dvh - 24px);max-height:none;margin:auto;padding:16px;border:1px solid #a5c4b0;border-radius:16px;overflow:auto;background:#f4f7f5}.dh-large-dialog::backdrop{background:#05152bd9}.dh-large-dialog>.dh-pane{min-height:100%;display:flex;flex-direction:column;gap:10px}.dh-large-dialog .dh-preview-stage{flex:1;min-height:320px}.dh-large-dialog .dh-view{height:calc(100dvh - 280px);min-height:320px}.dh-large-dialog .dh-opening{max-height:calc(100% - 24px);overflow:auto}@media(max-width:480px){.dh-large-dialog{width:100vw;height:100dvh;padding:10px;border-radius:0}.dh-large-dialog .dh-view{height:60dvh}.dh-large-dialog .dh-opening{width:calc(100% - 24px);max-width:290px}}

.dh-layout.dh-model-only{grid-template-columns:minmax(0,1fr)}

.dh-public .dh-brand #dh-logo{background:transparent;padding:0;border-radius:0;max-height:115px;width:380px}.dh-public .dh-brand{padding:24px;min-height:0}.dh-public #dh-tools{position:relative;z-index:2;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.dh-public #dh-tools[hidden]{display:none}.dh-public .dh-view{height:600px;min-height:400px}@media(max-width:480px){.dh-public .dh-view{height:460px;min-height:350px}.dh-public .dh-brand #dh-logo{max-width:100%}}
.dh-view,.dh-view canvas{touch-action:none;overscroll-behavior:none}
.dh-publication-hub{margin:0 0 28px;padding:22px;border:1px solid #bfa36d;box-shadow:0 12px 32px #05152b0c;scroll-margin-top:24px}.dh-publication-hub>h4{font-size:22px;margin:0 0 18px;color:#05152b}.dh-publication-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:stretch}.dh-release-card{min-width:0;padding:24px;border-radius:16px;background:#05152b;color:white;border-top:4px solid #bfa36d}.dh-release-card h4{font-size:21px;line-height:1.35;color:white;margin:12px 0}.dh-card-kicker{display:block;font-size:11px;font-weight:700;letter-spacing:.09em;line-height:1.6}.dh-release-card .dh-card-kicker{color:#d9c592}.dh-release-card>p{color:#e7eee9}.dh-release-card>label{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.6;margin:18px 0}.dh-release-card input[type=checkbox]{flex:none;width:20px;height:20px;margin-top:2px;accent-color:#a5c4b0}.dh-release-card .dh-tools{align-items:end}.dh-release-card .dh-tools label{flex:1 1 120px}.dh-release-card [data-publish]{flex:2 1 240px;min-height:64px}.dh-publication-hub .dh-release-card [data-share-requirements]{color:#05152b;background:#eef3ef}.dh-release-card select{color:#05152b}.dh-publication-hub .dh-publication-card{margin:0;padding:24px;background:#a5c4b0;border:1px solid #8faf9b;box-shadow:none;min-width:0}.dh-publication-hub .dh-publication-card h4{font-size:21px;margin:12px 0 18px}.dh-publication-hub .dh-publication-row{background:#fff;border-color:#fff}.dh-publication-hub .dh-publication-row[data-confirmed=true]{background:#edf5ef;border-color:#29533f}.dh-publication-hub [data-sync]{width:100%;min-height:52px}.dh-publication-hub [data-linkbox]{border-color:#bfa36d;background:#faf8f2}.dh-model-management{margin:24px 0 0;padding:16px;border-top:1px solid #c7d6cd}.dh-model-management summary{cursor:pointer;font-weight:600}.dh-model-management [data-delete-model]{margin-left:auto}@media(max-width:1000px){.dh-publication-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:480px){.dh-publication-hub{padding:12px}.dh-release-card,.dh-publication-hub .dh-publication-card{padding:18px}.dh-release-card [data-publish]{flex-basis:100%;width:100%}.dh-model-management [data-delete-model]{margin-left:0}.dh-model-management button{width:100%}}
.dh-publication-card{margin:18px 0;padding:20px;border:1px solid #bfa36d;border-radius:18px;background:#fff;color:#05152b;box-shadow:0 8px 24px #05152b0a;overflow-wrap:anywhere}.dh-publication-card h4{margin:0 0 16px;color:#05152b}.dh-publication-rows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.dh-publication-row{display:flex;flex-direction:column;gap:7px;padding:14px;border:1px solid #d8dfda;border-radius:12px;background:#f5f7f5}.dh-publication-row[data-confirmed=true]{background:#e5eee8;border-color:#a5c4b0}.dh-publication-row span{font-size:13px}.dh-publication-row strong{font-size:15px;color:#05152b}.dh-publication-card small{display:block;line-height:1.6;color:#344254}.dh-publication-card [data-publication-status]{line-height:1.6;color:#05152b}.dh-publication-card .dh-tools{margin-top:14px}@media(max-width:480px){.dh-publication-card{padding:14px}.dh-publication-rows{grid-template-columns:minmax(0,1fr)}}

/* Publication follows the preview; equal control geometry on both cards. */
.dh-publication-hub{margin:24px 0 20px}.dh-release-card,.dh-publication-hub .dh-publication-card{display:flex;flex-direction:column;gap:0;box-sizing:border-box}.dh-release-card>h4,.dh-publication-hub .dh-publication-card>h4{line-height:1.35;margin:12px 0 18px}.dh-release-card>p{margin:0 0 16px}.dh-release-card>button{align-self:stretch;white-space:normal}.dh-release-card>.dh-tools:last-child{display:grid;grid-template-columns:minmax(0,1fr);align-items:end;gap:12px;margin:20px 0 0;margin-top:auto;padding-top:20px}.dh-release-card>.dh-tools:last-child label{min-width:0;margin:0}.dh-release-card [data-publish],.dh-release-card select,.dh-publication-hub [data-sync]{min-height:48px;width:100%;box-sizing:border-box}.dh-release-card [data-publish]{white-space:normal;line-height:1.4}.dh-publication-hub .dh-publication-rows{margin-top:0}.dh-publication-hub .dh-publication-row{min-width:0}.dh-publication-hub .dh-publication-row strong{overflow-wrap:anywhere}.dh-publication-hub .dh-publication-card>.dh-tools{margin:16px 0}.dh-publication-hub>p:last-of-type{margin:16px 0 0}@media(max-width:600px){.dh-release-card>.dh-tools:last-child{grid-template-columns:minmax(0,1fr)}.dh-release-card [data-publish]{min-height:48px}}

/* Both rows share the same five tracks and outer edges. */
.dh-tools.dh-view-tools{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-auto-rows:1fr;align-items:stretch;width:100%}
.dh-tools.dh-view-tools>button{width:100%;min-width:0;white-space:normal;overflow-wrap:anywhere;height:100%}
@media(max-width:1000px){.dh-tools.dh-view-tools{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.dh-tools.dh-view-tools{grid-template-columns:minmax(0,1fr)}}
/* Compact object controls keep rotate/delete reachable above the dimensions. */
.dh-preview-stage [data-object-panel]{width:min(350px,calc(100% - 24px))}
[data-object-panel] .dh-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}
[data-object-panel] .dh-tools label{min-width:0;width:auto}
[data-object-panel] .dh-tools label:first-child{grid-column:1/-1}
[data-object-panel] .dh-tools input,[data-object-panel] .dh-tools select{min-width:0;width:100%;box-sizing:border-box}
[data-object-panel] .dh-tools button{min-width:0;white-space:normal}
@media(max-width:480px){.dh-preview-stage [data-object-panel]{width:calc(100% - 16px);max-width:350px}}
/* Visual catalogue uses the same object geometry as the 3-D model. */
[data-object-panel] .dh-tools>label[hidden]{display:none}
.dh-object-catalogue{grid-column:1/-1;min-width:0}
.dh-object-catalogue summary{display:flex;align-items:center;gap:10px;padding:7px;border:1px solid #a5c4b0;border-radius:8px;cursor:pointer;background:#f0f5f2}
.dh-object-catalogue summary:after{content:'▾';margin-left:auto}
.dh-object-catalogue summary img{width:48px;height:48px;border-radius:5px}
.dh-object-preview{display:block;width:130px;height:130px;margin:8px auto;object-fit:contain;border-radius:8px}
.dh-object-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-height:245px;overflow:auto;padding:8px 0}
[data-object-panel] .dh-object-choices button{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0;padding:5px;font-size:11px}
.dh-object-choices img{width:66px;height:66px;max-width:100%;border-radius:5px}
[data-object-panel] .dh-tools{max-height:65vh;overflow:auto}

/* The release action occupies the full card after removal of link-expiry selection. */
#areaCalculation .dh-release-card button[data-publish].primary{grid-column:1/-1;width:100%;min-width:0;height:auto;min-height:48px;max-height:none;white-space:normal;overflow-wrap:normal;line-height:1.5;padding:12px 18px}

.dh-review-confirmed::after{content:"✓";width:30px;min-width:30px;vertical-align:middle;margin-left:10px;display:inline-grid}
.dh-room-reviews{margin:16px 0}.dh-room-reviews [data-room-reviews]{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}

/* Direct manipulation uses the same right-hand overlay as other element editors. */
.dh-direct-edit .dh-tools{align-items:center}.dh-drag-help{font-size:13px;line-height:1.55;color:#05152b}

/* All editors remain inside the canvas tile, including direct manipulation. */
.dh-preview-stage > .dh-opening,
.dh-preview-stage > .dh-opening.dh-direct-edit{position:absolute;inset:12px 12px auto auto;width:min(320px,calc(100% - 24px));max-width:calc(100% - 24px);max-height:calc(100% - 24px);margin:0;overflow:auto;overscroll-behavior:contain;z-index:30;box-sizing:border-box;box-shadow:0 12px 35px #05152b30}
.dh-preview-stage > [data-object-panel]{width:min(350px,calc(100% - 24px))}
.dh-preview-stage > .dh-opening[hidden]{display:none!important}
.dh-opening-head{position:sticky;top:-16px;z-index:1;background:#f5faf6;padding:6px 0}

.dh-view-tools>[data-save]{grid-column:5}
.dh-motion-group{width:100%;box-sizing:border-box;flex-basis:100%;grid-column:1/-1;min-width:0;border:1px solid #c7d6cd;border-radius:10px;padding:10px;margin:4px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.dh-motion-group legend{font-weight:700;font-size:12px;padding:0 4px}.dh-motion-group p{grid-column:1/-1;margin:0;font-size:12px}.dh-motion-group button{min-height:44px}.dh-motion-group label{min-width:0!important;width:auto!important}.dh-motion-group input{width:100%;box-sizing:border-box}
@media(max-width:1000px){.dh-view-tools>[data-save]{grid-column:2}}
@media(max-width:480px){.dh-view-tools>[data-save]{grid-column:1}}

.dh-review-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));gap:10px;margin:14px 0}.dh-review-row{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #c7d6cd;border-radius:12px;background:#f5faf6;min-width:0}.dh-review-row button{flex:1;min-width:0;white-space:normal;text-align:left}.dh-review-choice{flex:none;display:flex!important;align-items:center;justify-content:center;min-width:44px;min-height:44px;margin:0!important}.dh-review-choice input{width:22px!important;height:22px;accent-color:#527e62}.dh-bulk-review{padding:16px;border-radius:14px;background:#eff5f1;margin-top:16px}.dh-bulk-review[hidden]{display:none}.dh-publish-dialog{width:min(640px,calc(100vw - 40px));max-height:85dvh;box-sizing:border-box;overflow:auto;padding:24px;border:1px solid #a5c4b0;border-radius:18px;background:white;color:#05152b;font-family:Montserrat,Arial,sans-serif;box-shadow:0 20px 70px #05152b40}.dh-publish-dialog::backdrop{background:#05152b88}.dh-publish-dialog ul{max-height:35dvh;overflow:auto;line-height:1.6;padding-left:24px}.dh-publish-dialog .dh-tools{justify-content:flex-end;flex-wrap:wrap}.dh-publish-dialog button{white-space:normal;min-height:44px}.dh-publish-dialog h3{margin-top:0}
.dh-transfer-result{align-self:end;margin:16px 0 0 auto;padding:12px 16px;border-radius:12px;font-weight:700;line-height:1.5;background:#fff;color:#05152b}.dh-transfer-result[hidden]{display:none}.dh-transfer-result[data-state=success]{background:#e4f2e8;color:#205b35;border:2px solid #5a9c6d}.dh-transfer-result[data-state=pending]{background:#fff6dc;color:#69501e}.dh-transfer-result[data-state=warning],.dh-transfer-result[data-state=error]{background:#fff0db;color:#784815}.dh-panel [hidden]{display:none!important}

/* Essential element actions precede the long dimension/catalogue controls. */
.dh-opening .dh-tools.dh-element-actions{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px;max-height:none;overflow:visible;align-items:stretch}
.dh-element-actions>button,.dh-element-actions>[data-insert]{flex:1 1 100%;min-width:0}
.dh-element-actions>[data-insert]{display:flex;flex-wrap:wrap;gap:8px}
.dh-element-actions>[data-insert]>button{flex:1 1 130px;min-width:0;white-space:normal}

/* Keep the selected door and its drag handles usable beneath a folded editor. */
.dh-preview-stage > .dh-opening.dh-editor-minimized{max-height:none;overflow:visible}
.dh-opening.dh-editor-minimized > :not(.dh-opening-head){display:none!important}
.dh-opening.dh-editor-minimized .dh-opening-head{position:static;padding:0}
.dh-opening-head h4{flex:1;min-width:0}
.dh-opening-head [data-opening-minimize]{width:36px;min-width:36px;font-size:20px;padding:4px}
