/* Редактор плана объекта вне сметы (кабинет заказчика, /plan-obekta). Сгенерировано из css/estimates.css
   (правила #em*, .em-*, .model-*): при правке стилей редактора там - пересобрать этот файл */
:root {--as-level2-bg: rgba(111, 66, 193, .12);
	--as-level3-bg: rgba(253, 126, 20, .14);}
:root[data-theme="dark"] {--as-level2-bg: rgba(167, 139, 250, .28);
	--as-level3-bg: rgba(253, 126, 20, .3);}
.model-container {border: 1px solid var(--as-border, #e3ddd0); border-radius: 10px; background: var(--as-surface, #fff); overflow: hidden;}
.model-container .model-head {display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 10px; border-bottom: 1px solid var(--as-border, #e3ddd0);}
.model-container .model-head h6 {font-size: 0.9rem;}
.model-head-btns {display: flex; gap: 6px;}
.model-empty {padding: 10px 12px; font-size: 0.82rem; color: var(--as-text-muted, #6b6257);}
.model-stale {padding: 8px 10px; font-size: 0.82rem; background: #FFF4D6; color: #6b4a00; border-bottom: 1px solid #f0dca0;}
.model-view {position: relative; background: #fbf9f4; border-bottom: 1px solid var(--as-border, #e3ddd0);}
.model-view svg {display: block; width: 100%; height: 250px; cursor: grab; user-select: none;}
.model-view svg:active {cursor: grabbing;}
.model-hint {padding: 4px 10px 6px; font-size: 0.72rem; color: var(--as-text-muted, #8a8174);}
.model-container.expanded {position: fixed; right: 8px; top: 64px; width: min(58vw, 900px); max-height: calc(100vh - 80px); overflow: auto; z-index: 10040; box-shadow: 0 10px 40px rgba(0, 0, 0, .25); margin: 0 !important;}
.model-container.expanded .model-view svg {height: 56vh;}
.em-base {stroke: none;}
.em-face {stroke: #857d70; stroke-width: 0.8; stroke-linejoin: round; cursor: pointer;}
.em-face:hover {filter: brightness(0.9); stroke: #2F6DF6; stroke-width: 1.4;}
.em-op-gap {stroke-dasharray: 4 3;}
.em-cap {stroke: #6f695f; stroke-width: 0.5; pointer-events: none;}
.em-label {font-size: 11px; fill: #3d382f; pointer-events: none; paint-order: stroke; stroke: #e3d8c0; stroke-width: 3px;}
.model-lists {max-height: 340px; overflow: auto;}
.model-container.expanded .model-lists {max-height: none;}
.em-group {border-bottom: 1px solid var(--as-border, #eee7da);}
.em-group summary {display: flex; justify-content: flex-start; gap: 8px; padding: 6px 10px; font-size: 0.84rem; font-weight: 600; cursor: pointer; list-style: none;}
.em-group summary::before {content: '▸'; margin-right: 6px; color: #9a9285;}
.em-group[open] summary::before {content: '▾';}
.em-group summary small {margin-left: auto; font-weight: 400; color: var(--as-text-muted, #8a8174); white-space: nowrap;}
.em-param {display: flex; justify-content: space-between; gap: 10px; padding: 3px 10px 3px 26px; font-size: 0.8rem; cursor: pointer;}
.em-param:hover {background: var(--as-info-bg, #e8eefc);}
.em-param b {white-space: nowrap; font-weight: 600;}
.em-param.em-flash {background: #d1e7dd;}
.em-pick-menu {position: fixed; z-index: 10200; min-width: 250px; background: #fff; border: 1px solid #d9d2c4; border-radius: 10px; box-shadow: 0 8px 28px rgba(0, 0, 0, .22); padding: 6px; font-size: 0.84rem;}
.em-pick-title {padding: 2px 8px 6px; font-weight: 600; color: #6b6257; font-size: 0.78rem;}
.em-pick-item {display: flex; justify-content: space-between; gap: 16px; width: 100%; border: 0; background: none; padding: 6px 8px; border-radius: 6px; text-align: left;}
.em-pick-item:hover {background: #e8eefc;}
.em-pick-item b {white-space: nowrap;}
.em-pick-hint {padding: 6px 8px 2px; font-size: 0.74rem; color: #8a8174; max-width: 260px;}
#emEditor {position: fixed; inset: 0; z-index: 10030; background: #f6f3ec; display: flex; flex-direction: column; font-size: 0.875rem;}
#emEditor .em-bar {display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 8px 12px; background: #fff; border-bottom: 1px solid #e3ddd0;}
#emEditor .em-title {white-space: nowrap;}
#emEditor .em-tools {display: flex; gap: 4px; flex-wrap: wrap;}
#emEditor .em-tool {border: 1px solid #d9d2c4; background: #fff; color: #1f1b16;}
#emEditor .em-tool.active {background: #1f1b16; color: #fff; border-color: #1f1b16;}
#emEditor .em-cur {display: flex; align-items: center; gap: 6px;}
#emEditor .em-cur select {width: auto;}
#emEditor .em-actions {display: flex; gap: 6px; margin-left: auto;}
#emEditor .em-body {flex: 1; display: flex; min-height: 0;}
#emEditor .em-canvas {flex: 1; position: relative; min-width: 0;}
#emPlan {width: 100%; height: 100%; display: block; background: #fdfcf9; cursor: crosshair; user-select: none;}
#emEditor .em-status {position: absolute; left: 0; right: 0; bottom: 0; display: flex; justify-content: space-between; gap: 12px; padding: 5px 10px; background: rgba(255, 255, 255, .92); border-top: 1px solid #e3ddd0; font-size: 0.78rem; color: #6b6257; pointer-events: none;}
#emEditor .em-side {width: 320px; flex-shrink: 0; background: #fff; border-left: 1px solid #e3ddd0; display: flex; flex-direction: column;}
#emProps {flex: 1; overflow: auto; padding: 10px 12px;}
#emEditor .em-prev {border-top: 1px solid #e3ddd0; background: #fbf9f4;}
#emPrev {display: block; width: 100%; height: 230px; cursor: grab;}
.em-grid2 {fill: none; stroke: #eee9df; stroke-width: 1;}
.em-grid1 {fill: none; stroke: #ddd5c6; stroke-width: 1;}
.em-room {fill: #f1ead9; stroke: none; cursor: pointer;}
.em-room.sel {fill: #dfe8fb;}
.em-room.nofill {fill: transparent; stroke: #c9bfae; stroke-width: 1; stroke-dasharray: 4 3;}
.em-room.nofill.sel {fill: rgba(47, 109, 246, 0.12); stroke: #2F6DF6;}
.em-wall {stroke: none; cursor: move;}
.em-wall-line {fill: none; stroke: #3d382f; stroke-width: 2; stroke-linejoin: miter; pointer-events: none;}
.em-wall-sel {fill: rgba(47, 109, 246, .18); stroke: #2F6DF6; stroke-width: 2.5; pointer-events: none;}
.em-draft-walls {fill: rgba(47, 109, 246, .28); fill-rule: evenodd; stroke: none; pointer-events: none;}
.em-wall.exist {fill: #6f695f;}
.em-wall.new {fill: #d98f6b;}
.em-opening {fill: #fff; stroke: #2F6DF6; stroke-width: 1.2; cursor: ew-resize;}
.em-opening.door {stroke: #8a5a2b; fill: #f6e9da;}
.em-opening.gap {stroke: #8a8174; stroke-dasharray: 4 3;}
.em-opening.sel {stroke-width: 3;}
.em-glass {stroke: #2F6DF6; stroke-width: 1; pointer-events: none;}
.em-node {fill: #fff; stroke: #2F6DF6; stroke-width: 1.5; cursor: grab;}
.em-node:hover {fill: #2F6DF6;}
.em-rname {font-size: 12px; font-weight: 600; fill: #3d382f; cursor: pointer;}
.em-rarea {font-weight: 400; fill: #6b6257; font-size: 11px;}
.em-dim {font-size: 10.5px; fill: #2F6DF6; cursor: text; paint-order: stroke; stroke: #f1ead9; stroke-width: 3px;}
.em-dim:hover {fill: #c0392b; font-weight: 700;}
.em-draft {fill: rgba(47, 109, 246, .12); stroke: #2F6DF6; stroke-width: 1.5; stroke-dasharray: 5 4; pointer-events: none;}
.em-draft-wall {stroke: rgba(47, 109, 246, .45); stroke-linecap: butt; pointer-events: none;}
.em-dlabel {font-size: 12px; font-weight: 600; fill: #2F6DF6; pointer-events: none; paint-order: stroke; stroke: #fff; stroke-width: 3px;}
.em-cursor {fill: #2F6DF6; pointer-events: none;}
.em-under {pointer-events: none;}
.em-under.move {outline: 2px dashed #2F6DF6;}
.em-under-box {border-top: 1px solid #eee7da; border-bottom: 1px solid #eee7da; padding: 8px 0; margin: 8px 0;}
.em-scale-line {stroke: #c0392b; stroke-width: 2; stroke-dasharray: 6 4; pointer-events: none;}
.em-scale-pt {fill: #c0392b; stroke: #fff; stroke-width: 1.5; pointer-events: none;}
.em-odim {font-size: 9.5px; fill: #1a9c5b; cursor: text; paint-order: stroke; stroke: #f1ead9; stroke-width: 3px;}
.em-odim:hover {fill: #c0392b; font-weight: 700;}
.em-odim.op {fill: #8a8174; cursor: default;}
.em-odim-line {stroke: #1a9c5b; stroke-width: 0.7; opacity: .55; pointer-events: none;}
#emDimBox {position: fixed; z-index: 10100; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 3px; width: 160px;}
#emDimEdit {width: 90px; text-align: center;}
.em-dim-end {width: 28px; height: 31px; border: 1px solid #cfc6b4; border-radius: 6px; background: #fff; color: #8a8174; font-size: 15px; line-height: 1; padding: 0; cursor: pointer;}
.em-dim-end.on {background: #c0392b; border-color: #c0392b; color: #fff;}
.em-dim-hint {flex-basis: 100%; text-align: center; font-size: 0.68rem; color: #6b6257; background: rgba(255, 255, 255, .9); border-radius: 4px; padding: 0 4px;}
.em-dim-move {stroke: #c0392b; stroke-width: 4; stroke-dasharray: 7 4; pointer-events: none;}
.em-dim-fix {fill: #1a9c5b; stroke: #fff; stroke-width: 2; pointer-events: none;}
.em-roof {fill: rgba(181, 83, 60, .06); stroke: #b5533c; stroke-width: 1.5; stroke-dasharray: 9 4; pointer-events: none;}
.em-roof-hit {fill: none; stroke: transparent; stroke-width: 12; cursor: pointer; pointer-events: stroke;}
.em-roof.sel {fill: rgba(181, 83, 60, .14); stroke-width: 2.5;}
.em-ridge {stroke: #b5533c; stroke-width: 2; pointer-events: none;}
.em-ridge.thin {stroke-width: 1; stroke-dasharray: 4 3;}
.em-roof-label {font-size: 11px; fill: #b5533c; font-weight: 600; cursor: pointer; paint-order: stroke; stroke: #f1ead9; stroke-width: 3px;}
.em-roof3 {fill-opacity: .38; stroke: #8a3a28; stroke-width: 1; pointer-events: none;}
.em-roof3.em-roof3-cut {stroke: none;}
.em-roof3-edge {fill: none; stroke: #8a3a28; stroke-width: 1; pointer-events: none;}
.em-rfi {fill: rgba(61, 110, 143, .35); stroke: #1f3d52; stroke-width: 1.5; cursor: pointer;}
.em-rfi.dorm {fill: rgba(232, 216, 194, .7); stroke: #8a6a48;}
.em-rfi.bad {fill: rgba(200, 60, 40, .25); stroke: #c0392b; stroke-dasharray: 4 3;}
.em-rfi.sel {stroke: #0d6efd; stroke-width: 2.5;}
.em-rfi-front {stroke: #5a3e22; stroke-width: 3; pointer-events: none;}
.em-dwall3 {fill-opacity: .9; stroke: #8a6a48; stroke-width: 1; pointer-events: none;}
.em-glass3 {fill-opacity: .85; stroke: #1f3d52; stroke-width: 1; pointer-events: none;}
.em-rw {display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 3px 0; border-bottom: 1px solid #f3eee4; font-size: 0.8rem;}
.em-rw > span:first-child {flex: 1;}
.em-opt-roof select {width: auto; display: inline-block;}
.em-opt-roof input {width: 70px; display: inline-block;}
.em-ptitle {font-weight: 700; margin-bottom: 6px;}
.em-f {display: block; margin-bottom: 8px;}
.em-f > span {display: block; font-size: 0.76rem; color: #6b6257; margin-bottom: 2px;}
.em-vals {border-top: 1px solid #eee7da; margin: 8px 0;}
.em-vals > div {display: flex; justify-content: space-between; gap: 10px; padding: 3px 0; border-bottom: 1px solid #f3eee4; font-size: 0.82rem;}
.em-vals b {white-space: nowrap;}
.em-pbtns {display: flex; gap: 6px; flex-wrap: wrap;}
.em-type {display: flex; gap: 4px; margin-bottom: 4px;}
.em-type .em-tt {width: 76px; flex-shrink: 0;}
body.em-editor-open {overflow: hidden;}
@media (max-width: 768px) {
	#emEditor .em-side {display: none;}
}
.em-prev-hint {padding: 2px 10px 6px; font-size: 0.7rem; color: #8a8174;}
.em-ghost {opacity: 0.2; stroke: #6f695f; stroke-width: 0.6; pointer-events: none;}
.em-draft-line {stroke: #2F6DF6; stroke-width: 1.5; stroke-dasharray: 5 4; pointer-events: none;}
#emEditor .em-opt {display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;}
.em-ptitle small {font-weight: 400; color: #8a8174; font-size: 0.72rem; margin-left: 6px;}
.em-comp {border: 1px solid #eee7da; border-radius: 8px; padding: 5px 6px 2px; margin-bottom: 6px;}
.em-comp-head {display: flex; align-items: center; gap: 4px; margin-bottom: 3px;}
.em-comp-head .em-cn {font-weight: 600; min-width: 0;}
.em-csum {white-space: nowrap; font-size: 0.76rem; color: #6b6257;}
.em-dot {display: inline-block; width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0;}
.em-lay {display: flex; gap: 3px; margin-bottom: 3px; padding-left: 10px;}
.em-lay .em-ln {min-width: 0;}
.em-lay .em-lt {width: 58px; flex-shrink: 0; padding-left: 5px; padding-right: 2px;}
.em-lay .em-ld {width: 66px; flex-shrink: 0; padding-left: 5px; padding-right: 2px;}
.em-comp .btn-link {padding: 0 4px; text-decoration: none;}
.em-comp .em-ladd {font-size: 0.76rem; margin-left: 8px;}
.em-fin {stroke-width: 5; stroke-linecap: butt; pointer-events: none; opacity: 0.85;}
.em-fin-hover {stroke-dasharray: 6 4; opacity: 0.7;}
.em-fin-area {opacity: 0.18; pointer-events: none;}
.em-rfin {font-size: 10px; font-weight: 400;}
.em-col {fill: #5b7fa6; stroke: #2c4a6b; stroke-width: 1; cursor: move;}
.em-col.sel, .em-beam.sel {stroke: #2F6DF6; stroke-width: 2.5;}
.em-beam {fill: rgba(91, 127, 166, .3); stroke: #2c4a6b; stroke-width: 1; stroke-dasharray: 6 3; cursor: pointer;}
.em-el {stroke: #3c5673;}
.em-sec {display: flex; align-items: center; gap: 3px; margin-bottom: 3px;}
.em-sec .em-sn {min-width: 0;}
.em-sec .em-sb, .em-sec .em-sh {width: 48px; flex-shrink: 0; padding-left: 4px; padding-right: 1px;}
.em-sec .em-sv {width: 58px; flex-shrink: 0; padding-left: 4px; padding-right: 1px;}
.em-sec .em-su {font-size: 0.68rem; color: #8a8174; width: 32px; flex-shrink: 0;}
.em-sec .btn-link {padding: 0 3px; text-decoration: none;}
#emEditor .em-opt input[type=number] {width: 90px;}
#emSort {position: fixed; inset: 0; z-index: 10120; background: rgba(0, 0, 0, .35); display: flex; align-items: center; justify-content: center;}
.em-sort-box {background: #fff; border-radius: 12px; width: min(560px, 94vw); max-height: 86vh; display: flex; flex-direction: column; padding: 12px 14px; gap: 8px; box-shadow: 0 12px 40px rgba(0, 0, 0, .3);}
.em-sort-head {display: flex; justify-content: space-between; align-items: center;}
.em-sort-list {overflow: auto; flex: 1; min-height: 160px; border: 1px solid #eee7da; border-radius: 8px;}
.em-sort-kind {position: sticky; top: 0; background: #f6f3ec; padding: 4px 10px; font-weight: 600; font-size: 0.82rem;}
.em-sort-kind small {font-weight: 400; color: #8a8174;}
.em-sort-row {display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 3px 10px 3px 18px; cursor: pointer; font-size: 0.84rem;}
.em-sort-row:hover {background: #e8eefc;}
.em-sort-row small {color: #1a9c5b;}
.em-sort-row b {margin-left: auto; white-space: nowrap; font-weight: 600;}
.em-sort-form {display: grid; grid-template-columns: 1.4fr 1.2fr 0.8fr 0.7fr 0.7fr auto; gap: 4px;}
@media (max-width: 600px) {
	.em-sort-form {grid-template-columns: 1fr 1fr;}
}
#emEditor .em-lvbar {display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 6px 12px; background: #faf8f3; border-bottom: 1px solid #e3ddd0;}
.em-lv-title {font-size: 0.8rem; color: #6b6257;}
.em-lv {border: 1px solid #d9d2c4; background: #fff; border-radius: 16px; padding: 2px 12px; font-size: 0.84rem;}
.em-lv.active {background: #1f1b16; color: #fff; border-color: #1f1b16;}
.em-lv-hint {font-size: 0.74rem; color: #8a8174; margin-left: 8px;}
.em-under {stroke: #b9b2a6; opacity: 0.45; pointer-events: none;}
.em-slab {fill: none; stroke: #8a8174; stroke-width: 1.2; stroke-dasharray: 8 4; pointer-events: none;}
.em-check {display: flex; align-items: center; gap: 6px; margin: 4px 0 6px; font-size: 0.84rem; cursor: pointer;}
.em-slab3 {stroke: #8a8174; stroke-width: 0.5; pointer-events: none;}
.model-lvbar {display: flex; gap: 4px; flex-wrap: wrap; padding: 6px 10px; border-bottom: 1px solid var(--as-border, #e3ddd0);}
.em-lv-chip {border: 1px solid #d9d2c4; background: #fff; border-radius: 14px; padding: 1px 10px; font-size: 0.78rem;}
.em-lv-chip.active {background: #1f1b16; color: #fff; border-color: #1f1b16;}
.em-selbox {border: 1px solid #2F6DF6; background: #f4f7ff; border-radius: 10px; padding: 8px 10px 4px; margin-bottom: 12px;}
.em-opt-none {color: #8a8174; font-size: 0.82rem;}
.em-ot {display: grid; grid-template-columns: 16px 1fr 1fr 1fr 18px; align-items: center; gap: 3px; margin-bottom: 5px; border-radius: 6px; padding: 3px; cursor: pointer;}
.em-ot .em-on {grid-column: 2 / 5;}
.em-ot .em-odel {grid-column: 5; grid-row: 1;}
.em-ot .em-ow {grid-column: 2;}
.em-ot.cur {background: #dfe8fb; outline: 1px solid #2F6DF6;}
.em-ot .em-ot-ic {width: 16px; text-align: center; color: #6b6257; font-size: 0.78rem; flex-shrink: 0;}
.em-ot .em-on {min-width: 0;}
.em-ot .em-ow, .em-ot .em-oh, .em-ot .em-os {padding-left: 5px; padding-right: 2px;}
.em-ot .btn-link {padding: 0 3px; text-decoration: none;}
.em-wbind {color: #b9b2a6; padding: 0 3px !important;}
.em-wbind.on {color: #1a9c5b;}
.em-lay, .em-sec {flex-wrap: wrap;}
.em-wname {flex: 1 1 100%; font-size: 0.7rem; color: #1a9c5b; padding: 0 2px 2px 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.em-ot .em-wbind {grid-column: 5; grid-row: 2;}
.em-ot .em-wname {grid-column: 2 / 6;}
#emWork {position: fixed; inset: 0; z-index: 10120; background: rgba(0, 0, 0, .35); display: flex; align-items: center; justify-content: center;}
.em-work-cur {font-size: 0.84rem;}
.em-asm {position: fixed; inset: 0; z-index: 10300; background: rgba(0, 0, 0, .35); display: flex; align-items: center; justify-content: center;}
.em-asm-box {background: #fff; border-radius: 12px; width: min(540px, 94vw); max-height: 88vh; overflow: auto; padding: 14px 16px; box-shadow: 0 12px 40px rgba(0, 0, 0, .3); font-size: 0.875rem;}
.em-asm-head {display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px;}
.em-asm-opt {display: flex; gap: 8px; align-items: flex-start; padding: 6px 8px; border: 1px solid #eee7da; border-radius: 8px; margin-bottom: 5px; cursor: pointer;}
.em-asm-opt small {display: block; color: #8a8174;}
.em-asm-warn {background: #FFF4D6; color: #6b4a00; border-radius: 8px; padding: 6px 10px; font-size: 0.8rem; margin-top: 6px;}
.em-asm-warn ul {margin: 2px 0 0; padding-left: 18px;}
.em-asm-foot {display: flex; justify-content: flex-end; gap: 6px; margin-top: 10px;}
.em-lay .em-ln, .em-sec .em-sn {flex: 1 1 60px; width: auto;}
.model-head-btns .btn {white-space: nowrap; padding: 2px 8px; font-size: 0.78rem;}
.model-container .model-head h6 {white-space: nowrap;}
.em-tpl-box {width: min(640px, 94vw);}
.em-tpl-list {max-height: 44vh; overflow: auto; border: 1px solid #eee7da; border-radius: 8px;}
.em-tpl-row {display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-bottom: 1px solid #f3eee4;}
.em-tpl-main {flex: 1; min-width: 0;}
.em-tpl-info {font-size: 0.74rem; color: #8a8174;}
.em-tpl-kind {font-size: 0.68rem; border-radius: 10px; padding: 1px 8px; background: #e8eefc; color: #2F6DF6;}
.em-tpl-kind.k-comps {background: #e6f5ec; color: #1a9c5b;}
.em-tpl-save {margin-top: 10px;}
.em-tpl-gen {border: 1px solid #eee7da; border-radius: 8px; margin-bottom: 8px; background: #fbf8f1;}
.em-tpl-kind.k-gen {background: #fdebd8; color: #b5611a;}
.em-can-box {width: min(920px, 96vw);}
.em-can-grid {display: flex; gap: 14px; flex-wrap: wrap;}
.em-can-form {flex: 1 1 360px; display: grid; grid-template-columns: 1fr 1fr; gap: 6px 10px; align-content: start;}
.em-can-form label {display: block; margin: 0;}
.em-can-form label.wide {grid-column: 1 / -1;}
.em-can-form label > span {display: block; font-size: 0.74rem; color: #6b6257;}
.em-can-side {flex: 1 1 360px; min-width: 0;}
.em-can-prev {width: 100%; height: 230px; background: #fbf8f1; border: 1px solid #eee7da; border-radius: 8px; display: block; margin-bottom: 8px;}
.em-can-tbl {width: 100%; font-size: 0.78rem; border-collapse: collapse;}
.em-can-tbl th {text-align: left; font-weight: 600; color: #6b6257; border-bottom: 1px solid #e3dccd; padding: 2px 4px;}
.em-can-tbl td {border-bottom: 1px solid #f3eee4; padding: 2px 4px;}
.em-tpl-form {display: flex; gap: 6px; flex-wrap: wrap;}
.em-tpl-form input {flex: 1 1 240px;}
.em-coldim {stroke: #6b7c93; stroke-width: 1; pointer-events: none;}
.em-coldim-t {pointer-events: none;}
.em-pdf-box {max-width: 900px; width: 96vw;}
.em-pdf-grid {display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; max-height: 60vh; overflow: auto;}
.em-pdf-grid.busy {opacity: .5; pointer-events: none;}
.em-pdf-pg {border: 1px solid #ddd; border-radius: 6px; padding: 6px; text-align: center; cursor: pointer; background: #fff;}
.em-pdf-pg:hover {border-color: #0d6efd; box-shadow: 0 0 0 2px rgba(13, 110, 253, .2);}
.em-pdf-pg canvas {max-width: 100%; display: block; margin: 0 auto 4px;}
.em-pdf-pg span {font-size: 12px; color: #666;}
#estModelBox .model-head h6 {cursor: pointer; user-select: none;}
#estModelBox .model-head h6::before {content: '\25BE'; display: inline-block; width: 14px; color: var(--as-muted, #888); transition: transform .15s;}
body.est-fold-model #estModelBox .model-head h6::before {transform: rotate(-90deg);}
body.est-fold-model #estModelBox > :not(.model-head) {display: none !important;}
body.est-fold-model #estModelBox .model-head {border-bottom: 0;}
.em-udim-line {stroke: #2F6DF6; stroke-width: 1.2; pointer-events: none;}
.em-udim-line.sel {stroke: #c0392b; stroke-width: 2;}
.em-udim-line.draft {stroke-dasharray: 5 3;}
.em-udim-tick {stroke: #2F6DF6; stroke-width: 1.4; pointer-events: none;}
.em-udim-hit {stroke: transparent; stroke-width: 10; cursor: pointer;}
.em-udim {font-weight: 600;}
.model-check {margin: 8px 10px 0; padding: 7px 10px; border-radius: 6px; font-size: 12px; line-height: 1.35; background: #fff5e6; border: 1px solid #f0d2a2; color: #6b4a12;}
.model-check.model-check-ok {background: #ecf7ef; border-color: #b8e0c3; color: #1d6b38;}
.model-check.model-check-empty {background: var(--as-muted-bg, #f6f2e9); border-color: var(--as-border, #e3ddd0); color: var(--as-muted, #6b6257);}
.model-check-title {font-weight: 600; margin-bottom: 2px;}
.model-check-note {margin-top: 4px; font-size: 11px; opacity: .8;}
