body{background:#f4f6f8;color:#193d4a}.top-actions{flex-wrap:wrap}.top-actions a{text-decoration:none}.top-actions .active{background:#e0f0ee;color:#086a64}.ip-main{padding:24px clamp(12px,2vw,32px);max-width:2100px;margin:auto}.ip-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:20px}.ip-heading h1{font-size:28px;margin:6px 0}.ip-heading p{color:#617680;margin:8px 0}.ip-scenario{display:flex;gap:8px;flex-wrap:wrap;align-items:end}.ip-scenario label{flex-basis:100%;font-size:12px}.ip-scenario a{text-decoration:none;display:inline-block}.ip-main button,.ip-main input,.ip-main select{font:inherit}.ip-main input,.ip-main select{border:1px solid #bdced5;border-radius:7px;background:white;padding:9px;min-height:36px;max-width:100%;color:#193d4a}.ip-main label{font-size:12px;display:grid;gap:5px}.ip-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.ip-stat{border:1px solid #d8e3e8;border-radius:11px;padding:15px 18px;background:white}.ip-stat strong{display:block;font-size:25px;color:#17626b}.ip-stat span{font-size:12px;color:#586f7a;display:block;margin-top:4px}.ip-stat progress{height:6px;width:100%;accent-color:#15928a;margin-top:8px}.ip-message{min-height:22px;margin:15px 0;padding:10px 14px;background:#e7f2f3;border-radius:7px;font-size:13px}.ip-message.error{background:#fff0de;color:#8a4927}.ip-layout{display:grid;grid-template-columns:280px minmax(420px,1fr) 275px;gap:14px;align-items:start}.ip-panel{background:white;border:1px solid #d8e3e8;border-radius:11px;padding:16px}.ip-panel h2{font-size:17px;margin:0 0 10px}.ip-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.ip-panel-head>span{font-size:12px;color:#667c83}.ip-small{font-size:12px;line-height:1.55;color:#5a717b}.ip-library>input{width:100%;box-sizing:border-box;margin:6px 0 10px}.ip-filter-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ip-ub-list{max-height:580px;overflow:auto;margin-top:12px;padding:2px}.ip-ub{display:block;width:100%;text-align:left;background:white;border:1px solid #d7e4e5;border-left:4px solid #297c88;border-radius:8px;padding:10px;margin-bottom:8px;cursor:grab;line-height:1.4}.ip-ub:hover,.ip-ub.selected{background:#eaf6f3;border-color:#238678}.ip-ub.selected{outline:2px solid #238678;outline-offset:-2px}.ip-ub strong{font-size:12px;display:block}.ip-ub small{display:block;font-size:11px;color:#58727b;margin-top:4px}.ip-ub .ip-placed{font-weight:600;color:#147365}.ip-ub.dragging{opacity:.5}.ip-canvas{padding:12px;min-width:0}.ip-toolbar{display:flex;gap:7px;align-items:end;flex-wrap:wrap}.ip-toolbar button{padding:8px 10px;min-height:36px}.ip-check{display:flex!important;align-items:center;gap:5px!important}.ip-check input{min-height:0}.ip-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:10px;color:#5c7178;margin:12px 0}.ip-legend>span{display:flex;align-items:center;gap:4px}.ip-legend i{display:inline-block;width:11px;height:11px;border:1px solid #72969b;border-radius:2px}.ip-empty{background:#f9fbfc}.ip-partial{background:#f8e4b2}.ip-full{background:#83cdb9}.ip-map-wrap{overflow:auto;border:1px solid #dfe8eb;border-radius:8px;background:#fafcfc;max-height:65vh;min-height:350px}.ip-map-wrap svg{display:block;width:100%;min-width:650px;min-height:360px}.ip-map-wall{fill:#f3f5f5;stroke:#718c92;stroke-width:4}.ip-map-zone{fill:#55727a;font:22px sans-serif;pointer-events:none}.ip-map-zone.small{font-size:17px}.ip-map-group{fill:#43616a;font:bold 16px sans-serif;pointer-events:none}.ip-slot{cursor:pointer;outline:none}.ip-slot>rect.base{fill:#fff;stroke:#56808c;stroke-width:1.4}.ip-slot.unverified>rect.base{stroke-dasharray:5 3}.ip-slot:hover>rect.base,.ip-slot:focus>rect.base,.ip-slot.drop-target>rect.base{stroke:#047d75;stroke-width:5}.ip-slot.selected>rect.base{stroke:#183fe0;stroke-width:5}.ip-slot text{font:12px sans-serif;fill:#143844;pointer-events:none;paint-order:stroke;stroke:#fff;stroke-width:1.5px}.ip-assign{padding-top:14px;display:flex;gap:9px;flex-wrap:wrap;align-items:end}.ip-assign>strong{font-size:12px;flex-basis:100%}.ip-assign button{font-size:12px;padding:10px}.ip-assign button:disabled{opacity:.45;cursor:not-allowed}.ip-detail{font-size:12px;line-height:1.55}.ip-detail dl{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:10px 0 16px}.ip-detail dt{color:#66808a}.ip-detail dd{margin:0;text-align:right}.ip-detail details{border-top:1px solid #e3ebee;padding:12px 0}.ip-detail summary{font-weight:650;cursor:pointer}.ip-detail ul{padding-left:17px}.ip-assignment{padding:9px;background:#edf6f4;border:1px solid #cfe3dc;border-radius:6px;margin:8px 0}.ip-assignment strong,.ip-assignment small{display:block}.ip-assignment button{font-size:11px;padding:5px;margin-top:7px}.ip-detail a{color:#127082}.ip-inventory{margin-top:16px}.ip-table-scroll{max-height:360px;overflow:auto;margin-top:10px}table{border-collapse:collapse;width:100%;font-size:11px}th,td{text-align:left;vertical-align:top;border-bottom:1px solid #dfe8eb;padding:9px;line-height:1.5}th{background:#edf3f5;position:sticky;top:0}td button{border:0;background:none;padding:0;color:#126b7e;cursor:pointer;font-size:11px!important}td small{display:block;color:#667b84}.ip-warning{color:#885716}.ip-history{border-bottom:1px solid #e6edef;padding:7px 0}dialog{max-width:440px;border:0;border-radius:12px;padding:25px}dialog::backdrop{background:#16353b66}dialog form{display:grid;gap:12px}dialog input[type=text],dialog input:not([type]){padding:9px;border:1px solid #bdced5;border-radius:6px}dialog .ip-dialog-actions{display:flex;justify-content:flex-end;gap:10px}.ip-main :focus-visible{outline:3px solid #148cba;outline-offset:2px}[hidden]{display:none!important}@media(max-width:1300px){.ip-layout{grid-template-columns:260px minmax(400px,1fr)}.ip-detail{grid-column:1/-1;display:block}.ip-detail #detail{max-width:650px}.ip-heading{align-items:start}.ip-heading h1{font-size:24px}}@media(max-width:800px){.ip-heading{display:block}.ip-scenario{margin-top:15px}.ip-layout{display:flex;flex-direction:column}.ip-layout>section,.ip-layout>aside{width:100%;box-sizing:border-box}.ip-ub-list{max-height:240px}.ip-stats{grid-template-columns:1fr 1fr}.ip-toolbar{gap:5px}.ip-main{padding:15px 10px}.ip-map-wrap{min-height:300px}.ip-map-wrap svg{min-width:700px}.topbar{gap:10px;flex-wrap:wrap}.ip-stat{padding:10px}.ip-stat strong{font-size:21px}}@media print{.ip-library,.ip-toolbar,.ip-assign,.topbar,.ip-detail,.ip-message,.ip-scenario{display:none}.ip-layout{display:block}.ip-map-wrap{max-height:none;overflow:visible}.ip-stats{grid-template-columns:repeat(4,1fr)}}

.ip-ub{touch-action:pan-y;user-select:none}.ip-drag-ghost{position:fixed;z-index:10000;pointer-events:none;padding:10px 14px;background:#08786f;color:white;border-radius:7px;box-shadow:0 5px 18px #173e4a44;font:600 13px sans-serif;max-width:230px}.ip-slot.drop-target>rect.base{stroke:#058575;stroke-width:9;fill:#e0f6ed}

/* Qualification uses a fixed-height shell; the planning page needs document scroll. */
.implantation-page #workspace{height:auto;min-height:100dvh;display:block;overflow:visible}
.implantation-page .topbar{min-height:58px;height:auto;padding-top:10px;padding-bottom:10px}
.ip-main{width:100%;min-width:0}
.ip-layout>*{min-width:0}
.ip-stats{grid-template-columns:repeat(5,minmax(0,1fr))}
.ip-ub-list{max-height:clamp(240px,50dvh,620px);scrollbar-gutter:stable;overscroll-behavior-y:auto}
.ip-library-actions{display:flex;align-items:center;flex-wrap:wrap;gap:4px;padding:6px 0;border-bottom:1px solid #dbe6e8}
.ip-library-actions button{font-size:11px;padding:6px 4px}
.ip-library-actions strong{flex-basis:100%;font-size:12px;color:#08786f}
.ip-ub{cursor:default;padding:9px;position:relative}
.ip-ub label{display:flex;align-items:flex-start;gap:8px;cursor:pointer}
.ip-ub input{flex:none;margin:2px 0;min-height:0;width:16px;height:16px;accent-color:#08786f}
.ip-ub label>span{min-width:0}
.ip-drag-handle{display:block;padding:5px 8px;margin-top:6px;color:#09675f;background:#e5f2ef;font-size:11px!important;cursor:grab;touch-action:none;user-select:none}
.ip-drag-handle:active{cursor:grabbing}
.ip-remove-drop{border:2px dashed #a6bdc4;border-radius:8px;padding:12px;margin-top:12px;font-size:12px;line-height:1.5;color:#526f79;background:#f7fafb}
.ip-remove-drop small{display:block}
.ip-remove-drop.drop-target{background:#fff0e5;border-color:#c36b32;color:#8e411d}
.ip-map-wrap{height:clamp(340px,58dvh,720px);min-height:0;max-height:none;scrollbar-gutter:stable}
.ip-map-wrap svg{min-width:0;min-height:0;width:100%;height:100%}
.ip-detail #sync{color:#526f79}
.ip-assign{border-top:1px solid #e2e9ed;margin-top:8px}
.ip-assign .ip-small{flex-basis:100%;margin:0}
.ip-assignment .ip-drag-handle{width:100%;text-align:left}
.ip-count-note{background:#f1f7f8;border-radius:6px;padding:9px;color:#175763}
@media(max-width:1050px){.ip-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.ip-layout{grid-template-columns:240px minmax(0,1fr)}}
@media(max-width:800px){.ip-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.ip-ub-list{max-height:280px}.ip-map-wrap{height:420px}.implantation-page .brand div{gap:8px}.implantation-page .brand div span{display:none}.ip-library-actions button{padding:9px}}
@media print{.implantation-page #workspace{height:auto}.ip-map-wrap{height:auto}.ip-remove-drop{display:none}}

/* Keep the selected element and its expandable assortment directly below the plan. */
.ip-layout{grid-template-columns:280px minmax(0,1fr)}
.ip-detail{border-top:1px solid #d8e3e8;margin-top:18px;padding-top:18px}
.ip-detail #detail{max-width:none}
.ip-element-summary{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;background:#edf6f4;border-radius:7px;padding:12px}
.ip-element-summary b{font-size:15px;color:#17626b}
.ip-element-summary span{color:#58727b}
.ip-assigned-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:10px;align-items:start}
.ip-assignment{margin:0;min-width:0;background:#fafdfc}
.ip-assignment details{border:0;padding:0}
.ip-assignment summary{position:relative;padding:4px 4px 7px 19px;list-style:none}
.ip-assignment summary::-webkit-details-marker{display:none}
.ip-assignment summary:before{content:'▸';position:absolute;left:0;top:4px;color:#08786f}
.ip-assignment details[open] summary:before{content:'▾'}
.ip-assignment summary strong{font-size:14px}
.ip-assignment summary span{display:block;font-weight:500;margin-top:5px;color:#366572}
.ip-assignment summary small{font-size:11px;font-weight:400;color:#08786f;margin-top:3px}
.ip-assignment-actions{display:flex;gap:8px;align-items:center}
.ip-assignment-actions .ip-drag-handle{width:auto;flex:1;padding:8px}
.ip-assignment-author{font-size:10px;color:#71858c;margin-top:8px}
.ip-article-list{max-height:340px;overflow:auto;scrollbar-gutter:stable;border-top:1px solid #dce9e5}
.ip-article-list:empty{border:0}
.ip-articles{list-style:none;margin:0;padding:0}
.ip-articles li{padding:9px 4px;border-bottom:1px solid #e2ece8;line-height:1.45}
.ip-articles li strong{font-size:12px;font-weight:500}
.ip-articles li small{font-size:11px;color:#647d86;font-variant-numeric:tabular-nums}
.ip-dimensions dl{max-width:500px}
#transfer-dialog{width:min(520px,calc(100vw - 36px));max-width:520px;max-height:85dvh;overflow:auto;color:#193d4a}
#transfer-dialog h2{font-size:20px;margin:0 0 12px}
.ip-transfer-route{background:#edf6f4;border-radius:7px;padding:10px;font-weight:600}
.ip-transfer-choices{display:grid;gap:10px;margin:16px 0}
.ip-transfer-choices button{padding:14px;text-align:left;white-space:normal}
.ip-transfer-choices strong,.ip-transfer-choices small{display:block}
.ip-transfer-choices small{margin-top:6px;font-size:12px;font-weight:400;line-height:1.5}
@media(max-width:1050px){.ip-layout{grid-template-columns:240px minmax(0,1fr)}}
@media(max-width:800px){.ip-assigned-list{grid-template-columns:1fr}.ip-detail{width:100%}.ip-element-summary{display:block}.ip-element-summary span{display:block;margin-top:5px}}

/* The element itself is a drag source; hover information never intercepts the pointer. */
.ip-slot{touch-action:none;user-select:none}
.ip-slot:active{cursor:grabbing}
.ip-element-content{border-bottom:1px solid #d8e3e8;padding:10px 0 20px}
.ip-element-content h3{font-size:16px;color:#17626b;margin:12px 0 4px}
.ip-element-links{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}
.ip-element-links button{font-size:11px;padding:7px}
.ip-assignment-actions{flex-wrap:wrap}
.ip-assignment-actions .ip-drag-handle{flex-basis:100%}
#drag-choice-dialog{width:min(580px,calc(100vw - 36px));max-width:580px;color:#193d4a}
#drag-choice-dialog label{display:block;margin:14px 0 6px;font-size:13px}
#drag-choice-dialog select{width:100%;padding:10px;min-width:0;border:1px solid #bdced5;border-radius:7px;background:white;font:inherit}
#drag-choice-dialog .ip-dialog-actions{margin-top:20px}

.ip-slot-tooltip{position:fixed;z-index:2000;pointer-events:none!important;user-select:none;width:max-content;max-width:min(320px,calc(100vw - 24px));padding:12px 15px;background:#183f4a;color:white;border-radius:9px;box-shadow:0 5px 20px #193d4a33;font-size:12px;line-height:1.5}
.ip-slot-tooltip strong,.ip-slot-tooltip span,.ip-slot-tooltip small{display:block}
.ip-slot-tooltip strong{font-size:14px;margin-bottom:3px}
.ip-slot-tooltip small{color:#cde7e6;font-size:11px;margin-top:5px}
.ip-slot-tooltip ul{padding-left:16px;margin:8px 0}
.ip-fridge>rect.base{fill:#e4f3fb;stroke:#417f9b}

.ip-detail-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:12px}
.ip-detail-head h2{margin:0}
.ip-assigned-toolbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ip-assigned-toolbar button{margin:0;padding:9px 12px;font-size:12px!important;min-height:36px}
.ip-assigned-toolbar span{font-size:12px;color:#17626b;font-weight:600}
.ip-assigned-toolbar button:disabled{opacity:.45;cursor:not-allowed}
.ip-assigned-toolbar .primary{background:#08786f;color:white}
.ip-assigned-check{display:flex!important;align-items:center;gap:8px!important;color:#376573;font-size:11px!important;margin-bottom:8px;cursor:pointer}
.ip-assigned-check input{width:18px;height:18px;min-height:0;accent-color:#08786f}
.ip-assignment.checked{border-color:#08786f;box-shadow:inset 0 0 0 1px #08786f;background:#ecf8f3}
.ip-allocation-gauge{min-width:190px;flex:1;max-width:360px;margin-left:auto}
.ip-allocation-gauge progress,.ip-capacity progress{display:block;width:100%;height:12px;accent-color:#188676;border:0;border-radius:6px;overflow:hidden}
.ip-capacity progress::-webkit-progress-bar,.ip-allocation-gauge progress::-webkit-progress-bar{background:#dce6e7;border-radius:6px}
.ip-capacity progress::-webkit-progress-value,.ip-allocation-gauge progress::-webkit-progress-value{background:#188676;border-radius:6px}
.ip-capacity progress::-moz-progress-bar,.ip-allocation-gauge progress::-moz-progress-bar{background:#188676}
.ip-capacity{background:#f2f7fa;padding:10px 12px;border-radius:7px;margin:10px 0;color:#305b68}
.ip-capacity strong,.ip-capacity small{display:block;line-height:1.5}
.ip-capacity progress{margin:7px 0}
.ip-capacity small{margin-top:3px;color:#57727b}
.ip-capacity.overloaded{background:#fff0ef;color:#af2929}
.ip-capacity.overloaded progress{accent-color:#d52d3b}
.ip-capacity.overloaded progress::-webkit-progress-value{background:#d52d3b}
.ip-capacity.overloaded progress::-moz-progress-bar{background:#d52d3b}
.ip-capacity-warning,.ip-capacity-warning *{pointer-events:none!important}
.ip-capacity-warning path{fill:#d52d3b;stroke:white;stroke-width:1.5;stroke-linejoin:round}
.ip-slot .ip-capacity-warning text{fill:white;stroke:none;font-weight:bold}
.ip-overload-key{color:#bc2635}
.ip-capacity-settings{margin:10px 0;color:#42636e;font-size:12px}
.ip-capacity-settings summary{cursor:pointer}
.ip-capacity-settings>div{display:flex;flex-wrap:wrap;gap:16px}
.ip-capacity-settings input{width:135px}
@media(max-width:800px){.ip-assigned-toolbar{width:100%}.ip-assigned-toolbar span{flex-basis:100%}.ip-allocation-gauge{margin:12px 0 0;max-width:none}.ip-element-summary .ip-allocation-gauge{display:grid}}
