/* Editor: ribbon, canvas, panels, 3D, estimate card — Design & Estimate (extracted verbatim from construction_cost_calculator.php; behaviour frozen) */

/* Scoped under .cc-app. No font-family / line-height / body background here (inherited from header). */
.cc-app{ --r:12px; max-width:1400px; margin:11px auto 22px; padding:0 16px; }
.cc-app *{ box-sizing:border-box; }
.cc-guest-note{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:0 0 12px; padding:11px 16px; border-width:1px; border-style:solid; border-left-width:4px; border-left-style:solid; border-radius:10px; font-size:13.5px; }
.cc-guest-note > i{ font-size:15px; flex:none; }
.cc-guest-note .cc-gn-txt{ flex:1; min-width:200px; line-height:1.5; }
.cc-guest-note .cc-gn-txt strong{ font-weight:800; }
.cc-gn-btn{ display:inline-flex; align-items:center; padding:7px 14px; border-radius:8px; font-size:13px; font-weight:700; text-decoration:none; border-width:1px; border-style:solid; white-space:nowrap; }
.cc-gn-btn:hover{ }
.cc-gn-primary{ }
.cc-gn-primary:hover{ }
.cc-head{ text-align:center; margin-bottom:16px; }
.cc-badge{ display:inline-flex; align-items:center; gap:6px; font-size:11px; font-weight:800; letter-spacing:1px; text-transform:uppercase; padding:5px 12px; border-radius:20px; margin-bottom:10px; }
.cc-h1{ font-size:clamp(22px,4.5vw,30px); font-weight:800; letter-spacing:-0.4px; line-height:1.15; }
.cc-lead{ font-size:14px; margin-top:8px; max-width:580px; margin-inline:auto; line-height:1.55; }

.cc-card{ border-width:1px; border-style:solid; border-radius:var(--r); margin-bottom:16px; overflow:hidden; position:relative; }
.cc-card::before{ content:''; position:absolute; top:0; left:0; right:0; height:3px; }
.cc-card-head{ padding:18px 20px 12px; border-bottom-width:1px; border-bottom-style:solid; }
.cc-step{ display:inline-flex; align-items:center; gap:5px; font-size:10px; font-weight:800; letter-spacing:1px; text-transform:uppercase; padding:3px 9px; border-radius:20px; margin-bottom:8px; }
.cc-card-title{ font-size:17px; font-weight:700; }
.cc-card-sub{ font-size:13px; margin-top:3px; line-height:1.5; }
.cc-card-body{ padding:18px 20px; }
.cc-row{ display:flex; flex-wrap:wrap; gap:14px; align-items:flex-end; }
.cc-fl{ display:flex; flex-direction:column; }
.cc-label{ font-size:12.5px; font-weight:700; margin-bottom:5px; }
.cc-help{ font-size:12px; line-height:1.5; margin-top:8px; }
/* The sub-line under a modal title had NO rule, so it inherited the page's 16px and every modal
   head read as a different family. One rule, every modal. */
.modal-sub{ font-size:12px; font-weight:500; line-height:1.4; margin-top:3px; }
.cc-inp{ width:120px; padding:10px 12px; border-width:1.5px; border-style:solid; border-radius:8px; font-size:14px; outline:none; font-family:inherit; font-weight:600; }
.cc-inp:focus{ }
select.cc-inp{ appearance:none; -webkit-appearance:none; cursor:pointer; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='3'><path d='M6 9l6 6 6-6'/></svg>"); background-repeat:no-repeat; background-position:right 12px center; padding-right:32px; width:auto; min-width:140px; }

.cc-sec-title{ font-size:13px; font-weight:800; margin:4px 0 12px; display:flex; align-items:center; gap:7px; }
.cc-sec-title i{ }

.cc-tabs{ display:flex; gap:6px; overflow-x:auto; padding-bottom:4px; margin-bottom:14px; -webkit-overflow-scrolling:touch; }
.cc-tab{ white-space:nowrap; padding:9px 15px; border-radius:20px; border-width:1.5px; border-style:solid; font-weight:700; font-size:13px; cursor:pointer; flex-shrink:0; transition:all .15s; font-family:inherit; }
.cc-tab:hover{ }
.cc-tab.on{ }
.cc-tab .ic{ margin-right:5px; }

/* tables */
.cc-tbl{ width:100%; border-collapse:collapse; font-size:13.5px; }
.cc-tbl th{ text-align:left; font-size:11px; text-transform:uppercase; letter-spacing:.04em; padding:8px 10px; border-bottom-width:1.5px; border-bottom-style:solid; font-weight:800; }
.cc-tbl td{ padding:9px 10px; border-bottom-width:1px; border-bottom-style:solid; }
.cc-tbl .num{ text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap; }
.cc-tbl .mat{ font-weight:700; }
.cc-rate-inp{ width:92px; padding:6px 8px; border-width:1.5px; border-style:solid; border-radius:7px; font-size:13px; text-align:right; font-family:inherit; font-weight:700; }
.cc-rate-inp:focus{ outline:none; }
.cc-rate-ro{ cursor:pointer; }
.cc-rate-ro:hover{ text-decoration:underline; }
.cc-tbl tfoot td{ font-weight:800; border-top-width:2px; border-top-style:solid; border-bottom:none; padding-top:12px; }
.cc-tbl tfoot .amt{ font-size:15px; }
.cc-tbl-wrap{ overflow-x:auto; }
.cc-sec-hdr td{ font-weight:800; font-size:10.5px; text-transform:uppercase; letter-spacing:.07em; padding:9px 12px; border-bottom:none; }
.cc-sec-hdr .num{ font-variant-numeric:tabular-nums; font-weight:700; }
.cc-proj-global td{ font-style:italic; }
.cc-cap-row{ cursor:pointer; transition:background .14s ease; }
#edEstCard .cc-abs{ border-width:1px; border-style:solid; border-radius:12px; margin:0 0 24px; overflow:hidden; }
#edEstCard .cc-abs-head{ display:flex; align-items:center; gap:12px; padding:14px 16px 10px; cursor:pointer; transition:background .14s ease; }
#edEstCard .cc-abs-head:hover{ }
#edEstCard .cc-abs-chev{ flex:0 0 auto; width:13px; font-size:12px; transition:transform .2s ease; }
#edEstCard .cc-abs.open .cc-abs-chev{ transform:rotate(90deg); }
#edEstCard .cc-abs-title{ flex:1 1 auto; min-width:0; font-size:13px; font-weight:800; letter-spacing:.01em; }
#edEstCard .cc-abs-title i{ margin-right:5px; }
#edEstCard .cc-abs-htot{ flex:0 0 auto; font-size:12px; white-space:nowrap; }
#edEstCard .cc-abs-htot strong{ font-size:14px; font-weight:800; margin-left:4px; }
#edEstCard .cc-abs-body{ padding:0; }
#edEstCard .cc-abs-body .cc-tbl{ border:none; }
#edEstCard .cc-abs-body .cc-tbl tbody tr:last-child td{ border-bottom:none; }
.cc-cap-row.cc-nocalc{ cursor:default; }
.cc-cap-row:not(.cc-nocalc):hover{ }
.cc-cap-row.open{ }
.cc-cap-row.open td{ }
.cc-cap-row td{ vertical-align:middle; }
.cc-chev{ display:inline-block; width:13px; margin-right:8px; font-size:10px; transition:transform .26s cubic-bezier(.4,0,.2,1); }
.cc-cap-row.open .cc-chev{ transform:rotate(90deg); }
.cc-chev-sp{ display:inline-block; width:13px; margin-right:8px; }
.cc-mat-l{ font-weight:700; }
.cc-amt{ font-weight:800; }
.cc-u{ font-size:12.5px; }
.cc-cal td{ padding:0; border:none; }
.cc-calc-wrap{ display:grid; grid-template-rows:0fr; transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1); }
.cc-cal.open .cc-calc-wrap{ grid-template-rows:1fr; }
.cc-calc-inner{ overflow:hidden; min-height:0; }
.cc-calc{ margin:1px 12px 14px 33px; border-width:1px; border-style:solid; border-left-width:3px; border-left-style:solid; border-radius:11px; padding:13px 18px 15px; }
.cc-calc-h{ display:flex; align-items:center; gap:8px; font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:.09em; opacity:.8; margin-bottom:11px; }
.cl-grp{ font-size:11px; font-weight:800; margin:13px 0 6px; padding-bottom:4px; border-bottom-width:1px; border-bottom-style:solid; }
.cl-grp:first-of-type{ margin-top:0; }
.cl-line{ display:flex; align-items:baseline; justify-content:space-between; gap:18px; padding:5px 1px; font-size:12.5px; line-height:1.5; }
.cl-line + .cl-line{ border-top-width:1px; border-top-style:dashed; }
.cl-lbl{ }
.cl-f{ font-style:italic; font-size:11.5px; margin-left:7px; }
.cl-val{ font-variant-numeric:tabular-nums; font-weight:700; white-space:nowrap; }
.cl-tot{ margin-top:9px; padding:10px 13px; border-radius:9px; border-top:none; }
.cl-tot .cl-lbl{ font-weight:800; }
.cl-tot .cl-val{ font-size:14px; }
.cl-cost{ padding-left:12px; padding-right:12px; } .cl-cost .cl-lbl{ } .cl-cost .cl-val{ font-weight:700; font-variant-numeric:tabular-nums; }
#edEstCard .cl-cost{ } #edEstCard .cl-cost .cl-val{ }
.cc-totals{ margin-top:16px; border-width:1px; border-style:solid; border-radius:12px; overflow:hidden; }
.cc-tot-row{ display:flex; justify-content:space-between; align-items:center; padding:11px 16px; font-size:13.5px; border-bottom-width:1px; border-bottom-style:solid; }
.cc-tot-row:last-child{ border-bottom:none; }
.cc-tot-row .num{ font-variant-numeric:tabular-nums; font-weight:700; }
.cc-tot-row.cc-grand{ font-weight:800; font-size:16px; padding:14px 16px; }
.cc-boq-headline{ display:flex; align-items:center; flex-wrap:wrap; gap:10px; }
.cc-boq-grand{ margin-left:auto; padding:4px 12px; font-size:12px; white-space:nowrap; display:inline-flex; align-items:center; gap:7px; border-width:1px; border-style:solid; border-radius:8px; }
.cc-boq-grand-lbl{ font-weight:600; }
.cc-boq-grand strong{ font-size:14.5px; font-weight:800; }

.cc-pct{ width:56px; padding:3px 7px; border-width:1px; border-style:solid; border-radius:6px; text-align:right; font-size:12.5px; margin:0 3px; font-variant-numeric:tabular-nums; }
.cc-info{ display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px; margin-left:6px; border-radius:50%; border-width:1.5px; border-style:solid; font-size:8.5px; cursor:help; user-select:none; vertical-align:middle; transition:background .12s,color .12s,border-color .12s; }
.cc-info:hover{ }
.cc-info i{ font-size:8.5px; line-height:1; }
.cc-tipbox{ position:fixed; z-index:9999; max-width:250px; padding:0; border-radius:9px; font-size:11.5px; line-height:1.5; border-width:1px; border-style:solid; overflow:hidden; opacity:0; transform:translateY(4px); transition:opacity .13s ease,transform .13s ease; pointer-events:none; }
.cc-tipbox > div{ padding:9px 12px; }
.cc-tipbox.on{ opacity:1; transform:translateY(0); }
.cc-tipbox .cc-tip-rng{ display:block; padding:7px 12px; border-top-width:1px; border-top-style:solid; font-weight:700; }
.cc-grp-hdr{ cursor:pointer; user-select:none; }
.cc-grp-hdr:hover{ }
.cc-grp-hdr .cc-chev{ display:inline-block; width:12px; margin-right:7px; font-size:10px; transition:transform .22s cubic-bezier(.4,0,.2,1); }
.cc-grp-hdr.open .cc-chev{ transform:rotate(90deg); }
.cc-grp-hdr .num{ }
.cc-grp-row{ padding-left:48px !important; font-size:12.8px; }
.cc-grp-row > span:first-child{ }
.cc-grp-row .num{ font-weight:600; }
.cc-grp-row .cc-pct{ width:62px; }
.cc-fx-wrap{ display:inline-flex; align-items:center; gap:6px; justify-content:flex-end; }
.cc-fx-cur{ font-size:11px; font-weight:700; letter-spacing:.02em; }
.cc-fx{ width:106px; padding:3px 7px; border-width:1px; border-style:solid; border-radius:6px; text-align:right; font-size:12.5px; font-variant-numeric:tabular-nums; }
.cc-tot-row.cc-cc-sub{ font-weight:700; }
.cc-ctx{ position:fixed; z-index:10000; min-width:202px; border-width:1.5px; border-style:solid; border-radius:8px; box-shadow:none; padding:5px; font-size:13.5px; user-select:none; opacity:0; transition:opacity .08s ease; }
.cc-ctx.on{ opacity:1; }
.cc-ctx-fly{ position:fixed; z-index:10001; min-width:188px; max-height:64vh; overflow-y:auto; border-width:1.5px; border-style:solid; border-radius:8px; box-shadow:none; padding:5px; font-size:13.5px; user-select:none; }
.cc-ctx-row{ display:flex; align-items:center; gap:9px; padding:8px 10px; border-radius:6px; font-weight:600; cursor:pointer; white-space:nowrap; line-height:1.2; }
.cc-ctx-row:hover{ }
.cc-ctx-row.dis{ cursor:default; }
.cc-ctx-row.dis:hover{ }
.cc-ctx-row.danger{ }
.cc-ctx-row.danger:hover{ }
.cc-ctx-row.dis.danger{ }
.cc-ctx-ic{ width:15px; text-align:center; font-size:12px; flex:none; }
.cc-ctx-row.danger .cc-ctx-ic{ }
.cc-ctx-row.dis .cc-ctx-ic{ }
.cc-ctx-row.dis.danger .cc-ctx-ic{ }
.cc-ctx-lbl{ flex:1; }
.cc-ctx-arr{ font-size:9px; margin-left:8px; flex:none; }
.cc-ctx-cnt{ margin-left:auto; border-radius:9px; padding:0 7px; font-size:10.5px; font-weight:700; line-height:18px; flex:none; }
.cc-ctx-hd{ padding:7px 10px 3px; font-size:10px; letter-spacing:.05em; text-transform:uppercase; font-weight:700; }
.cc-ctx-sep{ height:1px; margin:4px 6px; }
.cc-ctx-empty{ padding:9px 11px; font-size:12.5px; font-style:italic; }
/* ============ Bill of Quantities — presentation (scoped, brand green, flat) ============ */
#edEstCard .cc-card-head{ padding:11px 7px 11px; border-bottom-width:1px; border-bottom-style:solid; }
#edEstCard .cc-step{ letter-spacing:1.2px; }
#edEstCard .cc-card-title{ font-size:20px; letter-spacing:-0.01em; font-weight:750; }
#edEstCard .cc-card-sub{ }
#edEstCard .cc-card-body{ padding:11px 7px 11px; }
#edEstCard .cc-sec-title{ font-size:12.5px; text-transform:none; font-weight:800; margin:6px 0 12px; letter-spacing:.01em; }
#edEstCard .cc-sec-title i{ }
#edEstCard .cc-tbl-wrap{ border-width:1px; border-style:solid; border-radius:12px; overflow-x:auto; overflow-y:hidden; box-shadow:none; -webkit-overflow-scrolling:touch; }
#edEstCard .cc-tbl{ font-size:13.5px; }
#edEstCard .cc-tbl th{ font-size:10px; letter-spacing:.08em; padding:10px 16px; border-bottom-width:1px; border-bottom-style:solid; font-weight:800; }
#edEstCard .cc-tbl td{ padding:11px 16px; border-bottom-width:1px; border-bottom-style:solid; }
#edEstCard .cc-tbl tbody tr:last-child td{ border-bottom:none; }
#edEstCard .cc-sec-hdr td{ font-weight:800; font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; padding:9px 16px; border-bottom:none; border-top-width:1px; border-top-style:solid; box-shadow:none; }
.cc-lvl-gap td{ height:18px; border:none; background:none; padding:0; } .cc-lvl-hdr td{ font-weight:800; font-size:13.5px; padding:11px 12px; letter-spacing:.3px; border-bottom:none; }
#edEstCard .cc-sec-hdr .num{ font-weight:800; }
#edEstCard .cc-cap-row{ transition:background .12s ease; }
#edEstCard .cc-cap-row:not(.cc-nocalc):hover{ }
#edEstCard .cc-cap-row.open{ }
#edEstCard .cc-cap-row.open td{ }
#edEstCard .cc-mat-l{ font-weight:650; }
#edEstCard .cc-u{ font-size:12px; }
#edEstCard .cc-amt{ font-weight:800; font-size:14px; }
#edEstCard .cc-rate-ro{ cursor:pointer; }
#edEstCard .cc-rate-ro:hover{ text-decoration:underline; }
#edEstCard .cc-chev{ width:12px; font-size:10px; }
#edEstCard .cc-tbl tfoot td{ border-top-width:2px; border-top-style:solid; padding:12px 16px; }
#edEstCard .cc-tbl tfoot .amt{ font-size:15px; }
/* reliable expandable take-off (flat, no grid trick, no shadow) */
#edEstCard tr.cc-cal{ display:none; }
#edEstCard tr.cc-cal.open{ display:table-row; }
#edEstCard.showcalc tr.cc-cal{ display:table-row; }
#edEstCard.showcalc .cc-chev{ transform:rotate(90deg); }
.cc-calc-toggle{ margin-top:11px; display:inline-flex; align-items:center; gap:7px; padding:8px 15px; font-size:12.5px; font-weight:750; border:none; border-radius:8px; cursor:pointer; box-shadow:none; }
.cc-calc-toggle:hover{ }
#edEstCard .cc-calc-toggle .cc-chev{ margin-right:0; }
#edEstCard .cc-chev{ transition:transform .15s ease; }
#edEstCard .cc-cap-row.open .cc-chev{ transform:rotate(90deg); }
#edEstCard .cc-cap-row{ cursor:pointer; }
#edEstCard .cc-cap-row:not(.cc-nocalc):hover{ }
#edEstCard .cc-calc-wrap{ display:block; }
#edEstCard .cc-calc-inner{ overflow:visible; min-height:0; }
#edEstCard .cc-calc{ margin:0 16px 14px 40px; border-width:1px; border-style:solid; border-left-width:3px; border-left-style:solid; border-radius:10px; padding:14px 18px 16px; box-shadow:none; }
#edEstCard .cc-calc-h{ letter-spacing:.1em; opacity:.9; }
#edEstCard .cl-grp{ border-bottom-width:1px; border-bottom-style:solid; }
#edEstCard .cl-lbl{ }
#edEstCard .cl-val{ }
#edEstCard .cl-tot{ }
#edEstCard .cl-tot .cl-lbl{ }
#edEstCard .cl-tot .cl-val{ }
/* totals (flat) */
#edEstCard .cc-totals{ border-width:1px; border-style:solid; border-radius:12px; box-shadow:none; overflow:hidden; }
#edEstCard .cc-tot-row{ padding:13px 18px; border-bottom-width:1px; border-bottom-style:solid; }
#edEstCard .cc-tot-row.cc-grand{ font-size:17px; padding:11px 18px; box-shadow:none; }
#edEstCard .cc-tot-row.cc-grand .num{ }
#edEstCard .cc-pct{ width:64px; }
#edEstCard .cc-pct, #edEstCard .cc-fx{ border-width:1.5px; border-style:solid; border-radius:7px; padding:5px 8px; font-size:13px; }
#edEstCard .cc-pct:focus, #edEstCard .cc-fx:focus{ outline:none; }
#edEstCard .cc-proj-global td{ font-style:italic; }
.cc-est-actions{ display:flex; gap:10px; margin-top:14px; }
.cc-est-btn{ display:inline-flex; align-items:center; gap:7px; padding:10px 16px; border-width:1.5px; border-style:solid; border-radius:9px; font-weight:700; font-size:13px; cursor:pointer; transition:all .14s ease; }
.cc-est-btn:hover{ }
.cc-est-btn:active{ transform:translateY(1px); }

/* buttons */
.cc-btn{ display:inline-flex; align-items:center; gap:7px; padding:10px 18px; border-radius:8px; font-size:14px; font-weight:700; cursor:pointer; border:none; transition:all .15s; font-family:inherit; text-decoration:none; }
.cc-btn-green{ } .cc-btn-green:hover{ }
.cc-btn-row{ display:flex; gap:10px; margin-top:18px; flex-wrap:wrap; }

/* editor */
.ed-toolbar{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; padding:11px 13px; border-bottom-width:1px; border-bottom-style:solid; }
.ed-seg{ display:inline-flex; border-width:1.5px; border-style:solid; border-radius:11px; overflow:hidden; }
.ed-seg button{ font-family:inherit; font-size:12.5px; font-weight:700; border:none; padding:9px 12px; cursor:pointer; }
.ed-seg button.on{ }
.ed-tb{ display:flex; align-items:center; gap:6px; font-size:12.5px; font-weight:600; }
.ed-mini{ width:54px; text-align:center; font-family:inherit; font-size:13.5px; font-weight:700; border-width:1.5px; border-style:solid; border-radius:9px; padding:7px 4px; outline:none; }
.ed-mini:focus{ }
.ed-pill{ display:flex; align-items:center; gap:6px; font-size:12.5px; font-weight:700; border-width:1.5px; border-style:solid; border-radius:11px; padding:5px 9px; }
.ed-btn{ font-family:inherit; font-size:12.5px; font-weight:700; border-radius:6px; padding:5px 7px; cursor:pointer; border-width:1.5px; border-style:solid; transition:background .15s, border-color .15s, color .15s, transform .12s; }
.ed-btn:active{ transform:translateY(1px); }
.ed-btn:hover{ }
.ed-btn.blue{ }
.ed-btn.green{ }
.ed-btn.green:hover{ }
.ed-btn.amber{ }
.ed-prop-sub{ font-size:10.5px; font-weight:800; margin:7px 0 1px; text-transform:uppercase; letter-spacing:.04em; border-top-width:1px; border-top-style:solid; padding-top:6px; }
.ed-prop-chk{ flex-direction:row !important; align-items:center; gap:7px; font-weight:700; }
.ed-prop-chk input{ width:15px; height:15px; cursor:pointer; }
.ed-prop-inp:disabled{ opacity:.45; }
.ed-btn.danger{ }
.ed-spacer{ flex:1; }
.ed-only3d{ display:none; }
.ed.v3d .ed-only3d{ display:flex; }
.ed.v3d .ed-only2d{ display:none !important; }
.ed-canvas-wrap{ padding:3px; position:relative; }
.ed3d-spin{ position:absolute; inset:0; z-index:30; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:13px; }
.ed3d-spin[hidden]{ display:none; }
.ed3d-spin-ring{ width:46px; height:46px; border-width:4px; border-style:solid; border-radius:50%; animation:ed3dSpin 0.75s linear infinite; will-change:transform; }
.ed3d-spin-txt{ font-size:12.5px; font-weight:700; letter-spacing:.02em; }
@keyframes ed3dSpin{ to{ transform:rotate(360deg); } }
#ed3d{ position:absolute; inset:11px; border-radius:0; border-width:1px; border-style:solid; overflow:hidden; display:none; cursor:grab; touch-action:none; }
#ed3d:active{ cursor:grabbing; }
.ed.v3d #ed3d{ display:block; }
.ed.v3d #edStage{ visibility:hidden; }
#ed3d canvas{ display:block; }
.ed3d-label{ position:absolute; transform:translate(-50%,-50%); font-weight:800; font-size:12px; line-height:1.15; border-width:1px; border-style:solid; border-radius:7px; padding:3px 8px; pointer-events:none; white-space:nowrap; text-align:center; }
.ed3d-label .a{ display:block; font-weight:700; font-size:10px; margin-top:1px; }
.ed3d-nav{ position:absolute; top:20px; right:20px; z-index:7; display:none; flex-direction:column; align-items:center; gap:7px; padding:5px; backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); border-width:1px; border-style:solid; border-radius:7px; box-shadow:none; user-select:none; }
.ed.v3d .ed3d-nav{ display:flex; }
.ed3d-cube3d{ width:100px; height:100px; cursor:pointer; display:block; align-self:center; }
.vc-face{ stroke-width:1.2; stroke-linejoin:round; cursor:pointer; transition:fill .12s ease; }
.vc-top{ }
.vc-front{ }
.vc-side{ }
.vc-face:hover{ }
.vc-lbl{ font-family:inherit; font-size:8.5px; font-weight:800; letter-spacing:.03em; text-anchor:middle; dominant-baseline:middle; pointer-events:none; text-transform:uppercase; }
.ed3d-nav-row{ display:flex; gap:5px; width:100%; }
.ed3d-nb{ flex:1; font-family:inherit; font-size:11px; font-weight:700; border-width:1px; border-style:solid; border-radius:7px; padding:6px 4px; cursor:pointer; white-space:nowrap; display:inline-flex; align-items:center; justify-content:center; gap:5px; }
.ed3d-nb:hover{ }
.ed3d-nb.on{ }
.ed3d-nb.t3d{ width:100%; flex:none; }
.ed3d-row{ display:flex; align-items:center; gap:7px; width:100%; }
.ed3d-row-lbl{ font-size:10px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.ed3d-sel{ flex:1; font-family:inherit; font-size:11px; font-weight:700; border-width:1px; border-style:solid; border-radius:7px; padding:5px 7px; outline:none; cursor:pointer; min-width:0; }
.ed3d-sel:focus{ }
.ed3d-lv{ position:relative; width:100%; }
.ed3d-lv-btn{ width:100%; display:flex; align-items:center; gap:6px; font-family:inherit; font-size:11px; font-weight:700; border-width:1px; border-style:solid; border-radius:7px; padding:6px 8px; cursor:pointer; }
.ed3d-lv-btn:hover{ }
.ed3d-lv-btn .fa-layer-group{ font-size:11px; }
.ed3d-lv-btn .fa-chevron-down{ margin-left:auto; font-size:10px; }
.ed3d-lv-menu{ position:absolute; top:calc(100% + 5px); right:0; left:auto; min-width:100%; width:max-content; max-width:320px; border-width:1px; border-style:solid; border-radius:7px; box-shadow:none; padding:7px; z-index:9; max-height:260px; overflow-x:hidden; overflow-y:auto; display:flex; flex-direction:column; gap:3px; }
.ed3d-lv-menu[hidden]{ display:none; }
.ed3d-lv-quick{ display:flex; gap:5px; margin-bottom:6px; }
.ed3d-lv-quick button{ flex:1; font-family:inherit; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.04em; border:none; border-radius:6px; padding:5px; cursor:pointer; }
.ed3d-lv-quick button:hover{ }
.ed3d-chk{ display:flex; align-items:center; gap:8px; padding:5px 6px; border-radius:6px; font-size:12px; font-weight:600; cursor:pointer; white-space:nowrap; }
.ed3d-chk:hover{ }
.ed3d-chk input{ width:14px; height:14px; cursor:pointer; flex:none; }
.ed-underlay{ position:absolute; top:20px; left:20px; z-index:7; display:none; align-items:center; gap:8px; padding:5px 5px; backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); border-width:1px; border-style:solid; border-radius:7px; box-shadow:none; font-size:11px; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.ed:not(.v3d) .ed-underlay{ display:flex; }
.ed-underlay i{ font-size:12px; }
.ed-underlay-sel{ font-family:inherit; font-size:12px; font-weight:700; border-width:1px; border-style:solid; border-radius:7px; padding:5px 7px; outline:none; text-transform:none; letter-spacing:0; cursor:pointer; }
.ed-underlay-sel:focus{ }
.ed-ul-dd{ position:relative; }
.ed-ul-btn{ display:flex; align-items:center; gap:6px; font-family:inherit; font-size:12px; font-weight:700; border-width:1px; border-style:solid; border-radius:7px; padding:5px 8px; cursor:pointer; text-transform:none; letter-spacing:0; }
.ed-ul-btn:hover{ }
.ed-ul-btn .fa-chevron-down{ font-size:10px; }
.ed-ul-menu{ position:absolute; top:calc(100% + 5px); left:0; right:auto; min-width:100%; width:max-content; max-width:320px; border-width:1px; border-style:solid; border-radius:7px; box-shadow:none; padding:7px; z-index:9; max-height:260px; overflow-x:hidden; overflow-y:auto; text-transform:none; letter-spacing:0; display:flex; flex-direction:column; gap:3px; }
.ed-ul-menu[hidden]{ display:none; }
.ed-ul-opt{ display:flex; align-items:center; gap:8px; padding:6px 8px; border-radius:6px; font-size:12px; font-weight:600; cursor:pointer; white-space:nowrap; }
.ed-ul-opt:hover{ }
.ed-ul-opt.on{ font-weight:800; }
.ed-ul-opt input[type=checkbox]{ width:14px; height:14px; flex:none; margin:0; pointer-events:none; }
.ed-ul-opt.ed-ul-none{ font-weight:700; }
.ed-ul-sep{ height:1px; margin:3px 1px; }
.ed-fdd{ position:relative; width:100%; }
.ed-fdd-btn{ display:flex; align-items:center; gap:6px; cursor:pointer; text-align:left; }
.ed-fdd-btn .fa-chevron-down{ margin-left:auto; font-size:11px; }
.ed-fdd-menu{ position:fixed; border-width:1.5px; border-style:solid; border-radius:8px; box-shadow:none; padding:5px; z-index:3000; display:flex; flex-direction:column; gap:3px; }
.ed-fdd-menu[hidden]{ display:none; }
.ed-fdd-opt{ padding:7px 9px; border-radius:6px; font-size:12px; font-weight:700; cursor:pointer; }   /* one menu row size: 12px */
.ed-fdd-opt:hover{ }
.ed-fdd-opt.on{ font-weight:800; }
#edCopyToBtn{ padding:4px 7px; border-width:1.5px; font-size:12.5px; }
#edCopyToMenu{ top:auto; bottom:calc(100% + 5px); }
.ed-ul-btn .fa-chevron-down, .ed-fdd-btn .fa-chevron-down, .ed3d-lv-btn .fa-chevron-down{ transition:transform .15s ease; }
.ed-ul-dd:has(.ed-ul-menu:not([hidden])) .fa-chevron-down,
.ed-fdd:has(.ed-fdd-menu:not([hidden])) .fa-chevron-down,
.ed3d-lv:has(.ed3d-lv-menu:not([hidden])) .fa-chevron-down{ transform:rotate(180deg); }
#edEstCard{ display:none; width:100%; max-width:none; margin:0; }
.ed.vest #edEstCard{ display:block; overflow:auto; aspect-ratio:640/416; min-height:0; box-shadow:none; border-radius:0; border:none; }
.ed.vest .ed-hint, .ed.vest .ed-metrics, .ed.vest .ed-copy{ display:none; }
@media (max-width:760px){ .ed-underlay{ top:10px; left:10px; padding:6px 8px; } }
.ed3d-nb i{ font-size:10px; }
@media (max-width:760px){ .ed3d-nav{ top:12px; right:12px; padding:8px; } .ed3d-cube3d{ width:84px; height:84px; } }
#edStage{ width:100%; height:auto; aspect-ratio:640/416; display:block; border-radius:0; border-width:1px; border-style:solid; touch-action:none; }
.ed.v3d #edStage{ cursor:grab; }
.ed-max-btn{ font-family:inherit; display:inline-flex; align-items:center; justify-content:center; width:25px; height:25px; padding:0; border-width:1px; border-style:solid; border-radius:7px; cursor:pointer; flex:none; }
.ed-max-btn:hover{ }
.ed-max-btn.on{ }
.ed-max-btn i{ font-size:14px; }
body.ed-max-lock{ overflow:hidden; }
html:has(body.ed-max-lock){ overflow:hidden; }
.ed.is-max{ position:fixed; inset:0; z-index:2000; width:100vw; height:100vh; max-width:none; margin:0; border:none; border-radius:0; display:flex; flex-direction:column; overflow:hidden; }
.ed.is-max .ed-main{ flex:1 1 auto; min-height:0; }
.ed.is-max .ed-stagewrap{ min-height:0; }
.ed.is-max .ed-left{ min-height:0; height:100%; overflow:hidden; }.ed.is-max .ed-right{ min-height:0; height:100%; overflow:hidden; }
.ed.is-max .ed-canvas-wrap{ flex:1 1 auto; min-height:0; }
.ed.is-max #edStage{ aspect-ratio:auto; width:100%; height:100%; }
.ed.is-max #edEstCard{ aspect-ratio:auto; flex:1 1 auto; min-height:0; }
.ed.is-max > .ed-qa, .ed.is-max > .rb{ flex:none; }  /* full-screen: keep header + ribbon at their natural height; a content-tall BoQ was oversubscribing the fixed-height column and stealing height from them (squashing the top row). All remaining space goes to .ed-main, and #edEstCard scrolls within it. */
.ed-status{ display:flex; align-items:center; gap:10px; min-height:30px; padding:4px 10px; border-top-width:1px; border-top-style:solid; }
.ed-status .ed-hint{ flex:1 1 auto; min-width:0; font-size:12px; padding:0; text-align:left; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ed-status-r{ display:flex; align-items:center; gap:10px; font-size:11.5px; white-space:nowrap; flex:none; }
.ed-status-r .st-sep, .ed-status .ed-metrics .st-sep{ width:1px; height:14px; }
.ed-metrics{ display:flex; align-items:center; gap:12px; font-size:11.5px; font-variant-numeric:tabular-nums; white-space:nowrap; flex:none; padding-left:10px; border-left-width:1px; border-left-style:solid; }
.ed-m{ display:inline-flex; align-items:center; gap:5px; font-weight:700; }
.ed-m i{ font-size:11px; line-height:1; }
.ed-copy{ display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:600; flex:none; padding-left:10px; border-left-width:1px; border-left-style:solid; }
.ed-copy .ed-ul-btn{ height:24px; padding:0 8px; font-size:11.5px; }
.ed-copy .ed-btn{ padding:3px 9px; font-size:11.5px; }
.ed.is-max .ed-status{ flex:none; }
@media (max-width:1100px){ .ed-status .ed-copy{ display:none; } }
@media (max-width:860px){ .ed-status .ed-metrics{ display:none; } }
/* quick-access toolbar (header, after the product name) */
.ed-qat{ display:inline-flex; align-items:center; gap:2px; padding:2px; border-radius:8px; border-width:1px; border-style:solid; flex:none; }
.ed-qat-btn{ width:26px; height:24px; border:none; border-radius:6px; background:none; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; font-family:inherit; transition:background .15s, color .15s; }
.ed-qat-btn i{ font-size:12px; line-height:1; }
.ed-qat-btn[disabled], .ed-qat-btn.rb-disabled{ opacity:.35; cursor:default; }
.ed-qat-sep{ width:1px; height:14px; margin:0 3px; }
.ed-status-r .st-costbadge{ padding:2px 8px; border-radius:999px; font-weight:700; }
.ed-status-r .st-selcount{ display:inline-flex; align-items:center; gap:5px; font-weight:700; font-variant-numeric:tabular-nums; border:none; background:none; padding:0; font:inherit; font-weight:700; color:inherit; cursor:pointer; }
.ed-status-r .st-selcount i{ font-size:11px; line-height:1; }
.ed-status-r .st-coords{ font-variant-numeric:tabular-nums; min-width:9em; color:var(--muted); }
.ed-status-r .st-sc{ font-weight:700; color:#2563eb; letter-spacing:.08em; }
.ed-status-r .st-vc{ border:none; background:none; padding:2px 6px; font:inherit; color:var(--muted); cursor:pointer; line-height:1; }
.ed-status-r .st-vc.on{ color:#0891b2; }
#edStage.cc-tmpviz{ box-shadow: inset 0 0 0 3px #22d3ee; }
#edStage.cc-reveal{ box-shadow: inset 0 0 0 3px #d946ef; }
#edStage.cc-tmpviz.cc-reveal{ box-shadow: inset 0 0 0 3px #22d3ee, inset 0 0 0 6px #d946ef; }
.cc-tmpviz-badge{ position:absolute; left:12px; bottom:12px; z-index:6; display:flex; gap:10px; align-items:center; padding:6px 10px; border-radius:8px; background:#ecfeff; border:1px solid #22d3ee; color:#155e75; font-size:12px; font-weight:700; }
.cc-tmpviz-badge .cc-reveal-lbl{ color:#86198f; }
.cc-tmpviz-badge .ed-btn{ padding:3px 8px; font-size:12px; }
#edLayer [data-revealed]{ stroke:#d946ef !important; fill:#f5d0fe !important; fill-opacity:.35; }
.cc-scope-note{ display:flex; align-items:center; gap:8px; padding:8px 12px; border-radius:8px; font-size:12px; margin-bottom:10px; }
.cc-scope-note a{ margin-left:auto; font-weight:700; text-decoration:none; }
.ed.vest .ed-status{ display:none; }
/* ── RIBBON BAND — ONE SET OF NUMBERS DRIVES EVERYTHING ──────────────────────────────────
   The band is the same height on every tab, but that height is DERIVED, not hard-coded: change
   the row padding or the icon size below and the row grows, the column grows, the band grows and
   the canvas moves down with it — all of them together, still identical across every tab.
   Nothing inside the band may set its own height; everything reads these variables.

     --rb-pad-y    space above and below a small row's content   <- change this to loosen the rows
     --rb-line     the text line inside a row (and the icon box)
     --rb-gap      space between rows in a column
     --rb-rows     rows per column (3)
   Derived: --rb-row (one small row), --rb-inner (a column), and the band height itself. */
.cc-app{
  --rb-pad-y: 4px;                                  /* space above and below a row's content */
  --rb-icon: 13px;                                  /* small-row icon — the row grows to fit it */
  --rb-text: 11px;                                  /* EVERY tile label, small row and large tile alike - one token, one size */
  --rb-icon-lg: 16px;                               /* large-tile icon */
  --rb-line: max(var(--rb-icon), calc(var(--rb-text) + 2px));
  --rb-gap: 2px;
  --rb-rows: 3;
  --rb-bw: 1.5px;                                   /* a tile's own border, top + bottom */
  --rb-row: calc(var(--rb-line) + var(--rb-pad-y) * 2 + var(--rb-bw) * 2);
  --rb-inner: calc(var(--rb-row) * var(--rb-rows) + var(--rb-gap) * (var(--rb-rows) - 1));
  --rb-lbl: 12px;   /* the label box; a 4px gap above it is added so tiles never touch it */
  --rb-band-pad: 3px;
}
.rb-panels{ display:flex; align-items:stretch; box-sizing:border-box; padding:0 4px;
  height: calc(var(--rb-inner) + var(--rb-lbl) + var(--rb-band-pad)); overflow-x:auto; overflow-y:hidden; scrollbar-width:thin; }
.rb-panels::-webkit-scrollbar{ height:5px; }
.rb-group{ display:flex; flex-direction:column; height:100%; box-sizing:border-box; padding:var(--rb-band-pad) 12px 0; border-right-width:1px; border-right-style:solid; flex:none; }
.rb-group:last-child{ border-right:none; }
.rb-cols{ display:flex; gap:8px; align-items:flex-start; }
.rb-col{ display:flex; flex-direction:column; gap:var(--rb-gap); flex:none; min-width:0; }
.rb-col-input{ justify-content:center; }
.rb-group-lbl{ margin-top:auto; padding-top:4px; height:calc(var(--rb-lbl) + 4px); display:flex; align-items:flex-end; justify-content:center; font-size:9.5px; letter-spacing:.05em; text-transform:uppercase; line-height:1; white-space:nowrap; }

/* small tile: height comes from padding + line, never from a fixed number */
.rb-tile-sm{ flex-direction:row; align-items:center; gap:6px; padding:var(--rb-pad-y) 8px var(--rb-pad-y) 5px; justify-content:flex-start; }
.rb-tile-sm i{ font-size:var(--rb-icon); line-height:1; height:var(--rb-line); width:calc(var(--rb-line) + 4px); flex:none; display:flex; align-items:center; justify-content:center; }
.rb-tile-sm span{ font-size:var(--rb-text); line-height:var(--rb-line); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
/* large tile: exactly as tall as a column of small ones, so both fill the band */
.rb-tile-lg{ width:64px; height:var(--rb-inner); flex-direction:column; align-items:center; justify-content:center; gap:4px; padding:4px 3px; text-align:center; }
.rb-tile-lg i{ font-size:var(--rb-icon-lg); line-height:1; height:var(--rb-icon-lg); flex:none; display:flex; align-items:center; justify-content:center; }
.rb-ctx-type{ width:120px; }
.rb-wrap-lg .rb-caret-lg{ width:120px; }   /* the caret strip spans the control it belongs to */
.rb-wrap-lg .rb-ctx-type{ width:120px; }
.rb-wrap-lg .rb-caret-lg.rb-caret-lg{ width:auto; }
.rb-tile-lg span{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; width:100%; font-size:var(--rb-text); line-height:13px; max-height:26px; overflow:hidden; }

/* split buttons: ONE control, two halves, no divider until it is engaged */
.rb-tile-wrap{ display:inline-flex; border-radius:5px; }
.rb-wrap-lg{ flex-direction:column; }
.rb-wrap-lg .rb-tile{ height: calc(var(--rb-inner) - 14px); border-bottom-left-radius:0; border-bottom-right-radius:0; border-bottom-width:0; }
.rb-caret-lg{ width:64px; height:14px; border-radius:0 0 5px 5px; border-top-width:1px; }
.rb-wrap-sm{ align-items:stretch; }
.rb-wrap-sm .rb-tile{ border-top-right-radius:0; border-bottom-right-radius:0; border-right-width:0; }
.rb-caret-sm{ width:16px; border-left-width:1px; border-radius:0 5px 5px 0; }
.rb-tile-caret{ padding:0; border-width:1.5px; border-style:solid; background:none; cursor:pointer; display:flex; align-items:center; justify-content:center; font-family:inherit; transition:background .12s, border-color .12s, color .12s; }
.rb-tile-caret i{ font-size:10px; transition:transform .15s; }
.rb-tile-wrap.popup-open .rb-tile-caret i{ transform:rotate(180deg); }
/* ONE DROPDOWN FAMILY. The app already had one — .ed-fdd-menu, used by Location line, Plaster,
   Paint, the bar diameters and Copy-to. Every menu added since uses ITS geometry: 1.5px border,
   8px radius, 5px padding, 3px between rows, rows 7x9 at 13px. Nothing invents its own again. */
.cc-type-menu{ position:fixed; z-index:8500; min-width:230px; max-width:340px; max-height:60vh; overflow:auto;
  border-width:1.5px; border-style:solid; border-radius:8px; padding:5px; display:flex; flex-direction:column; gap:3px; }
.cc-type-menu .tm-fam{ font-size:10.5px; font-weight:800; letter-spacing:.5px; text-transform:uppercase; padding:6px 9px 2px; }
.cc-type-menu .tm-item{ display:flex; align-items:center; gap:8px; padding:7px 9px; border-radius:6px; cursor:pointer; font-size:12px; font-weight:700; width:100%; box-sizing:border-box; background:none; border:none; font-family:inherit; text-align:left; }
.cc-type-menu .tm-item .tm-rate{ font-size:11px; }
.cc-type-menu .tm-new{ width:100%; justify-content:flex-start; margin-top:3px; padding:7px 9px; border:none; border-top-width:1px; border-top-style:solid; border-radius:6px; background:none; font-family:inherit; font-size:12.5px; font-weight:700; cursor:pointer; display:flex; align-items:center; gap:8px; text-align:left; }
.cc-type-menu .tm-new i{ font-size:12px; width:16px; height:12px; flex:none; display:flex; align-items:center; justify-content:center; }
/* every menu row is the same shape: fixed icon box, label, optional state mark on the right */
.cc-type-menu .tm-item{ gap:8px; }
.cc-type-menu .tm-item > i, .cc-type-menu .tm-item > span > i{ width:16px; height:12px; font-size:12px; flex:none; display:inline-flex; align-items:center; justify-content:center; }
.cc-type-menu .tm-item .tm-check{ margin-left:auto; width:14px; text-align:center; font-size:11px; }
.ed input[type=range]{ }
.rb{ }
.rb-tabs{ display:flex; gap:2px; align-items:flex-end; padding:1px 10px 0; border-bottom-width:1px; border-bottom-style:solid; overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; }
.rb-tab{ font-family:inherit; font-size:13px; font-weight:700; background:none; border:none; border-bottom-width:2px; border-bottom-style:solid; padding:8px 13px; cursor:pointer; white-space:nowrap; }
.rb-tab:hover{ }
.rb-tab.on{ }
.rb-file{ font-family:inherit; font-size:13px; font-weight:800; border:none; border-radius:5px; padding:5px 13px; margin:2px 10px 2px 0; cursor:pointer; display:inline-flex; align-items:center; white-space:nowrap; }
.rb-file:hover{ } .rb-file i{ font-size:11px; }
.rb-tabs-sp{ flex:1; }
.rb-collapse{ font-family:inherit; flex:none; align-self:center; display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; padding:0; margin:0 2px 4px; border-width:1px; border-style:solid; border-radius:7px; cursor:pointer; }
.rb-collapse:hover{ }
.rb-collapse i{ font-size:12px; }
.ed.rb-collapsed .rb-body{ display:none; }
.ed.rb-collapsed.rb-pop .rb-body{ display:block; }  /* temporarily revealed while ribbon is popped */
.rb-viewtoggle{ font-family:inherit; font-size:12.5px; font-weight:700; border-radius:9px; padding:7px 13px; border-width:1.5px; border-style:solid; cursor:pointer; margin:0 0 5px 6px; white-space:nowrap; }
.ed.v3d .rb-viewtoggle{ }
.rb-body{ padding:3px 8px; overflow-x:auto; overflow-y:hidden; border-bottom-width:1px; border-bottom-style:solid; }
/* (replaced by the fixed-height band above) */
.rb-panels[hidden]{ display:none; }
/* (the fixed-height band above owns .rb-group now) */
.rb-group:last-child{ border-right:none; }
/* (replaced by the fixed-height band above) */
.rb-tile{ display:flex; box-sizing:border-box; border-width:1.5px; border-style:solid; border-radius:5px; background:none; cursor:pointer; font-family:inherit; flex:none; overflow:hidden; transition:background .12s, border-color .12s, color .12s; }
/* icon and label sizes belong to the band variables above — one place, not two */
.rb-tile.rb-disabled{ opacity:.38; cursor:default; pointer-events:none; }
.rb-tile-lg span{ text-align:center; }
.rb-tile-sm span{ text-align:left; overflow:hidden; text-overflow:ellipsis; max-width:96px; }
.rb-tile:hover{ }
.rb-tile.on{ }
.ed-main{ display:flex; align-items:stretch; }
/* rails are placed by CSS order, not markup order: the right rail sits in the markup right after the left one so the
   pre-paint placer can move panels into it before the canvas is even parsed */
.ed-main>.ed-left{ order:1; } .ed-main>.ed-stagewrap{ order:2; } .ed-main>.ed-right{ order:3; }
.ed-left{ width:210px; flex:0 0 210px; border-right-width:1px; border-right-style:solid; position:relative; overflow:hidden; }.ed-right{ width:210px; flex:0 0 210px; border-left-width:1px; border-left-style:solid; position:relative; overflow:hidden; }
.ed-left-inner{ position:absolute; inset:0; display:flex; flex-direction:column; }
.ed-pane{ flex:1 1 50%; min-height:0; display:flex; flex-direction:column; padding:11px 13px 0; border-bottom-width:1px; border-bottom-style:solid; }
.ed-pane:last-child{ border-bottom:none; }
.ed-pane-h{ flex:0 0 auto; font-size:10px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; margin-bottom:9px; display:flex; align-items:center; justify-content:space-between; gap:8px; }
.ed-pane-act{ flex:none; width:24px; height:22px; border-width:1px; border-style:solid; border-radius:6px; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; font-size:11px; padding:0; }
.ed-pane-act:hover{ }
.ed-pane-scroll{ flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden; padding-bottom:12px; margin-right:-7px; padding-right:7px; scrollbar-width:thin; }
.ed-pane-scroll::-webkit-scrollbar{ width:9px; }
.ed-pane-scroll::-webkit-scrollbar-track{ }
.ed-pane-scroll::-webkit-scrollbar-thumb{ border-radius:5px; border-width:2px; border-style:solid; background-clip:padding-box; }
.ed-pane-scroll::-webkit-scrollbar-thumb:hover{ background-clip:padding-box; }
.ed-pb{ display:flex; flex-direction:column; gap:2px; }
.ed-pb-item{ display:flex; align-items:center; gap:9px; padding:8px 9px; border-radius:8px; font-size:12.5px; font-weight:700; background:none; border:none; cursor:pointer; text-align:left; font-family:inherit; width:100%; }
.ed-pb-item i{ font-size:13px; width:15px; text-align:center; }
.ed-pb-item:hover{ }
.ed-pb-item.on{ }
.ed-pb-item.on i{ }
.ed-stagewrap{ flex:1; min-width:0; display:flex; flex-direction:column; }
.ed-props{ display:flex; flex-direction:column; gap:11px; }
.ed-prop-grp{ display:flex; flex-direction:column; gap:9px; }
.ed-prop-kind{ font-size:13px; font-weight:800; }
.ed-prop-note{ font-size:11px; line-height:1.45; margin:-2px 0 8px; font-weight:500; text-transform:none; letter-spacing:0; }
.ed-prop{ display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; letter-spacing:.02em; text-transform:uppercase; }
.ed-prop-inp{ font-family:inherit; font-size:13.5px; font-weight:700; border-width:1.5px; border-style:solid; border-radius:8px; padding:8px 9px; outline:none; width:100%; box-sizing:border-box; text-transform:none; letter-spacing:0; }
.ed-prop-inp:focus{ }
.ed-prop-empty{ font-size:12px; line-height:1.55; }
.ed-vtabs{ display:flex; gap:3px; align-items:flex-end; padding:7px 8px 0; overflow-x:auto; overflow-y:hidden; -webkit-overflow-scrolling:touch; min-height:38px; }
.ed-vtab{ display:inline-flex; align-items:center; gap:8px; padding:7px 8px 7px 12px; border-width:1px; border-style:solid; border-bottom-width:1px; border-bottom-style:solid; border-radius:7px 7px 0 0; font-size:12px; font-weight:700; white-space:nowrap; cursor:pointer; }
.ed-vtab > i:first-child{ font-size:12px; }
.ed-vtab.on{ }
.ed-vtab.on > i:first-child{ }
.ed-vtab-x{ font-size:12px; padding:2px 3px; border-radius:5px; margin-left:2px; }
.ed-vtab-x:hover{ }
.ed-vtab-empty{ font-size:12px; padding:8px 4px; }
.ed-noview{ flex:1; display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:600; padding:54px 16px; text-align:center; border-width:1px; border-style:dashed; margin:11px; }
.ed-pb-cat{ display:flex; align-items:center; gap:7px; font-size:10px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; margin:11px 0 4px; padding:3px 2px; cursor:pointer; user-select:none; border-radius:6px; }
.ed-pb-cat:hover{ }
.ed-pb-chev{ font-size:9px; transition:transform .15s; }
.ed-pb-cat:hover .ed-pb-chev{ }
.ed-pb-chev.col{ transform:rotate(-90deg); }
.ed-pb-grp{ display:flex; flex-direction:column; gap:2px; }
.ed-pb-grp[hidden]{ display:none; }
.ed-qa{ display:flex; align-items:center; gap:11px; padding:7px 12px 3px; border-bottom-width:1px; border-bottom-style:solid; overflow:hidden; }
.ed-qa-left{ flex:1 1 auto; display:flex; align-items:center; gap:11px; min-width:0; }
.ed-qa-logo{ flex:none; }
.ed-qa-name{ flex:0 1 auto; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
.ed-qa-proj{ flex:0 1 auto; display:inline-flex; align-items:center; gap:7px; min-width:0; overflow:hidden; white-space:nowrap; padding:5px 14px; border-width:1px; border-style:solid; border-radius:20px; font-size:13.5px; font-weight:700; white-space:nowrap; overflow:hidden; }
.ed-qa-proj > i{ font-size:13px; flex:none; }
.ed-qa-proj-name{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; min-width:0; }
.ed-qa-proj-id{ font-weight:600; font-size:12px; flex:none; }
.ed-qa-right{ flex:1 1 auto; display:inline-flex; align-items:center; justify-content:flex-end; gap:12px; z-index:2; }
.ed-max-btn,.ed-save-status,#edSaveBtn{ flex:none; }
.ed-qa-grand{ flex:0 1 auto; min-width:0; overflow:hidden; display:inline-flex; align-items:center; padding:5px 15px; border-width:1px; border-style:solid; border-radius:20px; white-space:nowrap; cursor:pointer; font:inherit; transition:background .15s, border-color .15s; }
.ed-qa-grand:hover{ }
.ed-qa-grand strong{ font-size:14px; font-weight:800; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:block; }
.ed-readonly-badge{ display:inline-flex; align-items:center; gap:6px; padding:5px 12px; border-width:1px; border-style:solid; border-radius:20px; font-size:12.5px; font-weight:700; white-space:nowrap; }
.ed-readonly-badge i{ font-size:11px; }
.ed-qa-owner{ flex:0 1 auto; display:inline-flex; align-items:center; gap:8px; padding:4px 11px 4px 4px; border-width:1px; border-style:solid; border-radius:22px; text-decoration:none; max-width:220px; transition:border-color .15s, background .15s; }
.ed-qa-owner:hover{ }
.ed-qa-owner-av{ width:20px; height:20px; border-radius:50%; object-fit:cover; flex:none; border-width:1px; border-style:solid; }
.ed-qa-owner-meta{ display:flex; flex-direction:column; line-height:1.15; min-width:0; }
.ed-qa-owner-by{ font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; }
.ed-qa-owner-name{ font-size:12px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
@media (max-width:760px){
  /* Compact top bar: show icons + profile image only so the trio fits on small screens. */
  .ed-qa-right{ gap:8px; }
  .ed-save-status{ display:none !important; }
  #edSaveBtn .ed-btn-txt{ display:none; }
  #edSaveBtn{ padding-left:11px; padding-right:11px; }
  .ed-readonly-badge .ed-ro-txt{ display:none; }
  .ed-readonly-badge{ padding:6px 9px; }
  .ed-qa-owner{ padding:3px; gap:0; max-width:none; }
  .ed-qa-owner-meta{ display:none; }
}
.ed-save-status{ display:inline-flex; align-items:center; gap:7px; font-size:12.5px; font-weight:700; white-space:nowrap; }
.ed-save-status .ed-ss-dot{ width:9px; height:9px; border-radius:50%; flex:none; }
.ed-save-status.is-saved{ } .ed-save-status.is-saved .ed-ss-dot{ }
.ed-save-status.is-unsaved{ } .ed-save-status.is-unsaved .ed-ss-dot{ }
.ed-save-status.is-new{ } .ed-save-status.is-new .ed-ss-dot{ }
.ed-save-status.is-guest{ } .ed-save-status.is-guest .ed-ss-dot{ }
.ed-save-status.is-saving{ } .ed-save-status.is-saving .ed-ss-dot{ animation:ccpulse 1s ease-in-out infinite; }
@keyframes ccpulse{0%,100%{ opacity:1; transform:scale(1); }50%{ opacity:.35; transform:scale(.7); }}
.cc-name-err{ margin-top:8px; font-size:12px; font-weight:700; }
.cc-name-count{ margin-top:6px; font-size:11px; text-align:right; font-variant-numeric:tabular-nums; }
.cc-name-count.over{ font-weight:700; }
#ccNameModal .cc-label{ display:block; }
#ccNameModal .cc-inp{ width:100%; box-sizing:border-box; }
.ed-pb-proj{ display:flex; align-items:center; gap:7px; padding:8px 10px; margin-bottom:9px; border-width:1px; border-style:solid; border-radius:8px; font-size:13px; font-weight:800; overflow:hidden; }
.ed-pb-proj > i{ flex:none; }
.ed-pb-proj span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cc-boq-proj{ display:inline-flex; align-items:center; gap:5px; margin-left:9px; font-size:11px; font-weight:700; vertical-align:middle; }
.cc-boq-proj > i{ }
.ed-qa-logo{ height:20px; width:auto; display:block; }
.ed-qa-name{ font-size:16px; font-weight:800; letter-spacing:.2px; }
.rb-inp{ width:54px; text-align:center; font-family:inherit; font-size:13px; font-weight:700; border-width:1.5px; border-style:solid; border-radius:6px; padding:5px 4px; outline:none; }
.rb-inp:focus{ }
.ed-dimtext{ cursor:text; }
/* The wall's own length is the headline. The dimensions to whatever it is
   touching are context, so they sit a size down and a little back, and come
   forward on hover so they never feel out of reach. */
.ed-jdim{ opacity:.62; transition:opacity .12s; }
.ed-jdim:hover{ opacity:1; }
.ed-jdim text{ font-size:11.5px; font-weight:600; }
#edDimEdit{ position:absolute; display:none; width:64px; box-sizing:content-box; z-index:6; text-align:center; font-family:inherit; font-size:12.5px; font-weight:700; border-width:1.5px; border-style:solid; border-radius:5px; padding:2px 6px; outline:none; }
#edDimEdit::-webkit-outer-spin-button,#edDimEdit::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
#edDimEdit{ -moz-appearance:textfield; }
.ed-pb-cat:first-child{ margin-top:0; }
@media (max-width:760px){ .ed-main{ flex-direction:column; } .ed-left{ width:auto; flex:none; border-right:none; border-bottom-width:1px; border-bottom-style:solid; position:static; overflow:visible; }.ed-right{ width:auto; flex:none; border-left:none; border-top-width:1px; border-top-style:solid; position:static; overflow:visible; } .ed-left-inner{ position:static; } .ed-pane{ flex:none; } .ed-pane-scroll{ overflow:visible; margin-right:0; padding-right:0; } }

/* modal */
.cc-modal{ position:fixed; inset:0; z-index:9000; display:none; align-items:center; justify-content:center; padding:16px; }
.cc-modal.open{ display:flex; }
.cc-modal-bg{ position:absolute; inset:0; backdrop-filter:blur(3px); }
.cc-modal-card{ position:relative; z-index:1; border-radius:16px; max-width:540px; width:100%; overflow:hidden; animation:ccpop .18s ease; }
@keyframes ccpop{from{ opacity:0; transform:scale(.94); } to{ opacity:1; transform:scale(1); }}
.cc-modal-card{ --thl-mp:0; }                                       /* site modal family inside the editor: the card pads its body, not itself */
.cc-modal-card .thl-modal-head{ margin:0; }
.cc-modal-card .cc-modal-h3{ margin:0; font-size:16px; font-weight:800; display:flex; align-items:center; gap:9px; line-height:1.25; }
.cc-modal-card .cc-modal-h3 i{ font-size:15px; line-height:1; }
.cc-modal-card .thl-modal-foot{ margin-top:0; padding:14px 20px; }
.cc-comp-tabs{ display:flex; gap:3px; padding:3px; border-radius:7px; border-width:1px; border-style:solid; width:max-content; max-width:100%; }
.cc-comp-tab{ display:flex; align-items:center; gap:6px; padding:8px 14px; border-radius:5px; border-width:1px; border-style:solid; font-size:13px; font-weight:600; white-space:nowrap; cursor:pointer; background:none; font-family:inherit; transition:color .15s, background .15s, border-color .15s; }
.cc-comp-tab i{ font-size:12px; }
.cc-comp-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; max-height:52vh; overflow:auto; padding:2px; }
.cc-comp-card{ display:flex; flex-direction:column; gap:6px; padding:12px; border-width:1px; border-style:solid; border-radius:10px; cursor:pointer; text-align:left; background:none; font-family:inherit; transition:border-color .15s, background .15s, transform .12s, box-shadow .15s; }
.cc-comp-card:hover{ transform:translateY(-1px); }
.cc-comp-card i{ font-size:22px; }
.cc-comp-card .cp-name{ font-size:12.5px; font-weight:700; }
.cc-comp-card .cp-meta{ font-size:11px; }
.cc-palette-list{ margin-top:10px; max-height:46vh; overflow:auto; display:flex; flex-direction:column; gap:2px; }
.cc-palette-item{ display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:8px; cursor:pointer; font-size:13px; }
.cc-palette-item i{ width:18px; text-align:center; font-size:13px; }
.cc-palette-item .pl-where{ margin-left:auto; font-size:11px; }
.cc-palette-item.on{ }
.cc-modal-body{ padding:20px 22px; max-height:72vh; overflow:auto; }

/* ── THE MODAL FAMILY ────────────────────────────────────────────────────────────────────────────────────────
   One look for every dialog in the calculator, so a new one inherits it instead of inventing its own spacing.
   Use these classes in a modal body and nothing else is needed (owner, 2026-09-20: "all the modals are styled
   like a kid"). They were being set inline, dialog by dialog, which is why no two matched.
     .cc-m-sec     a section label: small, uppercase, quiet - the thing above a group of controls
     .cc-m-note    the explaining line under a section label
     .cc-m-head    the file / subject line at the top of a dialog: title left, detail right
     .cc-m-chips   a row of chips (what to import, layers, kinds)
     .cc-m-chip    one chip with its checkbox
     .cc-m-panel   a bordered white panel (a preview, a list)
     .cc-m-rowsep  a row inside a panel, separated from the next                                               */
.cc-m-sec{ font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); margin:18px 0 6px; font-weight:700; }
.cc-m-sec:first-child{ margin-top:0; }
.cc-m-sec-row{ display:flex; justify-content:space-between; align-items:center; gap:12px; margin:18px 0 6px; }
.cc-m-sec-row:first-child{ margin-top:0; }
.cc-m-sec-row .cc-m-sec{ margin:0; }
.cc-m-note{ font-size:12px; color:var(--muted); line-height:1.5; margin:0 0 10px; }
.cc-m-head{ display:flex; justify-content:space-between; align-items:baseline; gap:12px; margin:0 0 14px; }
.cc-m-head .cc-m-title{ font-size:14px; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cc-m-head .cc-m-detail{ font-size:12px; color:var(--muted); white-space:nowrap; font-weight:400; }
.cc-m-chips{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 16px; }
.cc-m-chip{ display:inline-flex; align-items:center; gap:6px; border:1px solid var(--border,#d5dbe1); border-radius:999px; padding:5px 12px 5px 9px; font-size:12.5px; font-weight:600; cursor:pointer; background:var(--panel,#fff); }
.cc-m-chip:hover{ border-color:#00B53F; }
.cc-m-chip input{ margin:0; }
.cc-m-panel{ border:1px solid var(--border,#d5dbe1); border-radius:10px; background:var(--panel,#fff); padding:2px 14px; }
.cc-m-panel.cc-m-pad{ padding:14px; }
.cc-m-rowsep{ padding:8px 0; border-bottom:1px solid var(--border,#d5dbe1); }
.cc-m-rowsep:last-child{ border-bottom:0; }
/* modal field sizes: three widths for the whole calculator, so rows line up across dialogs instead of each one
   picking its own pixel count inline */
.cc-fl-s{ flex:0 0 96px; }
.cc-fl-m{ flex:0 0 132px; }
.cc-fl-l{ flex:0 0 168px; }
.cc-fl-auto{ flex:0 0 auto; }
.cc-mrow+.cc-mrow{ margin-top:10px; }
.cc-mrow-end{ align-items:flex-end; }
.cc-modal-body .cc-check{ margin-top:8px; }

.cc-modal-card .thl-modal-foot{ gap:8px; }
#edModal .cc-modal-card{ max-width:none; width:min(1180px,80vw); }
.cc-wall2col{ display:block; }
.cc-wall-draw{ position:static; margin-bottom:20px; }
.cc-wall-ctrls{ max-width:680px; margin:0 auto; }
#gslabModal .cc-modal-card, #roofModal .cc-modal-card{ max-width:none; width:min(1000px,80vw); }
#structModal .cc-modal-card{ max-width:none; width:min(820px,80vw); }
@media(max-width:860px){ #edModal .cc-modal-card, #gslabModal .cc-modal-card, #roofModal .cc-modal-card, #structModal .cc-modal-card{ width:100%; } .cc-wall2col{ grid-template-columns:1fr; } .cc-wall-draw{ position:static; } }
.cc-dd{ position:relative; width:100%; }
.cc-dd-btn{ display:flex; align-items:center; gap:6px; cursor:pointer; text-align:left; width:100%; }
.cc-dd-btn .fa-chevron-down{ margin-left:auto; font-size:11px; transition:transform .15s ease; }
.cc-dd:has(.cc-dd-menu:not([hidden])) .fa-chevron-down{ transform:rotate(180deg); }
.cc-dd-menu{ position:absolute; top:calc(100% + 4px); left:0; right:0; border-width:1.5px; border-style:solid; border-radius:8px; box-shadow:none; padding:5px; z-index:30; max-height:240px; overflow:auto; display:flex; flex-direction:column; gap:3px; }
.cc-dd-menu[hidden]{ display:none; }
.cc-dd-opt{ padding:8px 10px; border-radius:6px; font-size:13.5px; font-weight:600; cursor:pointer; }
.cc-dd-opt:hover{ }
.cc-dd-opt.on{ font-weight:800; }
/* Project information modal (native cc-modal) + banner lightbox */
#ccPiModal .cc-modal-card{ max-width:none; width:min(920px,80vw); max-height:90vh; overflow:auto; }
#ccPiModal .cc-modal-body{ max-height:none; overflow:visible; }
@media(max-width:860px){ #ccPiModal .cc-modal-card{ width:100%; } }
.cc-pi-banner{ width:100%; display:flex; align-items:center; justify-content:center; max-height:340px; overflow:hidden; position:relative; cursor:zoom-in; }
.cc-pi-banner img{ width:100%; height:auto; max-height:340px; object-fit:contain; display:block; cursor:zoom-in; }
.cc-pi-zoom{ position:absolute; right:10px; bottom:10px; border:none; width:34px; height:34px; border-radius:50%; cursor:zoom-in; font-size:13px; display:flex; align-items:center; justify-content:center; }
.cc-pi-zoom:hover{ }
.cc-pi-meta{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:2px 0 8px; }
.cc-pi-owner{ display:flex; align-items:center; gap:8px; text-decoration:none; font-weight:600; font-size:13px; }
.cc-pi-owner img{ width:30px; height:30px; border-radius:50%; object-fit:cover; }
.cc-pi-cost{ font-weight:800; font-size:15px; }
.cc-pi-badge{ font-size:11px; font-weight:700; padding:3px 10px; border-radius:20px; white-space:nowrap; }
.cc-pi-badge.pub{ } .cc-pi-badge.priv{ }
.cc-pi-dates{ font-size:12px; margin-bottom:12px; }
.cc-pi-desc{ padding-top:14px; border-top-width:1px; border-top-style:solid; line-height:1.5; font-size:14.5px; word-wrap:break-word; overflow-wrap:anywhere; }
.cc-pi-desc h1{ font-size:28px; font-weight:800; margin:10px 0 5px; }
.cc-pi-desc h2{ font-size:22px; font-weight:700; margin:10px 0 5px; }
.cc-pi-desc h3{ font-size:18px; font-weight:700; margin:8px 0 4px; }
.cc-pi-desc p{ margin:0 0 12px; padding:0; } .cc-pi-desc>div{ margin:0 0 12px; padding:0; }
.cc-pi-desc ul,.cc-pi-desc ol{ padding-left:26px; margin:8px 0; } .cc-pi-desc li{ margin:4px 0; }
.cc-pi-desc blockquote{ border-left-width:4px; border-left-style:solid; margin:13px 0; padding:8px 16px; border-radius:0 6px 6px 0; font-style:italic; }
.cc-pi-desc a{ text-decoration:underline; }
.cc-pi-desc img{ max-width:min(750px,100%); width:auto; height:auto; margin:8px 0; }
.cc-pi-desc hr{ border:none; border-top-width:1px; border-top-style:solid; margin:7px 0; }
.cc-pi-desc table{ border-collapse:collapse; width:100%; margin:13px 0; font-size:14px; }
.cc-pi-desc table th,.cc-pi-desc table td{ border-width:1px; border-style:solid; padding:8px 12px; text-align:left; }
.cc-pi-desc table th{ font-weight:700; }
.cc-pi-desc .quotation{ border-width:1px; border-style:dashed; padding:5px; display:block; margin:11px; }
.cc-pi-desc .warning{ border-width:1px; border-style:solid; padding:5px; display:block; margin:5px 0; }
.cc-pi-desc .highlight{ border-width:1px; border-style:solid; padding:5px; display:block; margin:5px 0; }
.cc-pi-empty{ font-style:italic; }
.cc-lb{ display:none; position:fixed; inset:0; z-index:12000; flex-direction:column; }
.cc-lb.show{ display:flex; }
.cc-lb-bar{ display:flex; align-items:center; justify-content:space-between; padding:14px 22px; border-bottom-width:1px; border-bottom-style:solid; }
.cc-lb-title{ font-size:14px; font-weight:700; }
.cc-lb-x{ width:36px; height:36px; border-radius:50%; border-width:1px; border-style:solid; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.cc-lb-x:hover{ }
.cc-lb-stage{ flex:1; display:flex; align-items:center; justify-content:center; padding:16px 24px; overflow:auto; }
.cc-lb-photo{ max-width:100%; max-height:82vh; object-fit:contain; border-radius:8px; }
.lvl-note{ font-size:12px; line-height:1.55; margin:0 0 16px; }
.lvl-head{ display:grid; grid-template-columns:1fr auto 128px 34px; gap:10px; align-items:center; font-size:10px; font-weight:800; letter-spacing:.05em; text-transform:uppercase; padding:0 4px 8px; border-bottom-width:1.5px; border-bottom-style:solid; }
.lvl-head span:nth-child(2){ text-align:right; }
.lvl-head span:nth-child(3){ text-align:center; }
.lvl-row{ display:grid; grid-template-columns:1fr auto 128px 34px; gap:10px; align-items:center; padding:9px 4px; border-bottom-width:1px; border-bottom-style:solid; }
.lvl-row:last-child{ border-bottom:none; }
.lvl-name{ display:flex; align-items:center; gap:9px; font-size:13.5px; font-weight:700; min-width:0; }
.lvl-name i{ width:16px; text-align:center; font-size:13px; flex:none; }
.lvl-name span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lvl-name-inp{ flex:1; min-width:0; font-family:inherit; font-size:13.5px; font-weight:700; border-width:1.5px; border-style:solid; border-radius:7px; padding:6px 8px; outline:none; text-overflow:ellipsis; }
.lvl-name-inp:hover{ }
.lvl-name-inp:focus{ }
.lvl-elev{ font-size:12.5px; font-weight:700; font-variant-numeric:tabular-nums; text-align:right; white-space:nowrap; }
.lvl-h{ display:flex; align-items:center; gap:6px; justify-content:flex-end; }
.lvl-h-inp{ width:82px; padding:7px 9px; border-width:1.5px; border-style:solid; border-radius:8px; font-size:13px; font-weight:700; outline:none; font-family:inherit; text-align:right; font-variant-numeric:tabular-nums; }
.lvl-h-inp:focus{ }
.lvl-u{ font-size:11px; font-weight:700; }
.lvl-del{ width:30px; height:30px; border-width:1px; border-style:solid; border-radius:7px; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; font-size:12px; padding:0; }
.lvl-del:hover{ }
.lvl-del-sp{ display:inline-block; width:30px; }
.lvl-add{ margin-top:14px; width:100%; display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:10px; border-width:1.5px; border-style:dashed; border-radius:9px; font-weight:700; font-size:13px; cursor:pointer; font-family:inherit; }
.lvl-add:hover{ }
.lvl-add:disabled{ opacity:.45; cursor:default; }
.rl-curwrap{ display:flex; align-items:center; gap:10px; margin-bottom:18px; }
.rl-curwrap .cc-inp{ width:auto; min-width:120px; }
.rl-grp{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; margin:18px 0 6px; padding-bottom:6px; border-bottom-width:1.5px; border-bottom-style:solid; }
.rl-grp:first-child{ margin-top:0; }
.rl-row{ display:flex; justify-content:space-between; align-items:center; gap:14px; padding:8px 2px; border-bottom-width:1px; border-bottom-style:solid; }
.rl-rate{ display:flex; align-items:center; gap:7px; }
.rl-cur{ font-size:12px; font-weight:800; min-width:34px; text-align:right; }
.rl-per{ font-size:12px; font-weight:700; min-width:46px; }
.rl-lbl{ font-size:13px; font-weight:600; }
.rl-u{ font-size:11px; font-weight:700; min-width:34px; text-align:right; }
.rl-inp{ width:92px; padding:7px 9px; border-width:1.5px; border-style:solid; border-radius:8px; font-size:13px; font-weight:700; outline:none; font-family:inherit; text-align:right; font-variant-numeric:tabular-nums; }
.rl-inp:focus{ }
.rl-setrow{ }
.rl-setrow .rl-lbl{ font-style:italic; opacity:.85; }
.cc-mrow{ display:flex; gap:10px; flex-wrap:wrap; }
.cc-mrow .cc-fl{ flex:1; min-width:90px; }
.cc-mrow .cc-inp{ width:100%; }
.cc-check{ display:inline-flex; align-items:center; gap:8px; font-size:13.5px; font-weight:700; margin:4px 0 10px; cursor:pointer; padding:7px 11px; border-width:1.5px; border-style:solid; border-radius:9px; }
.cc-check:hover{ }
.cc-check input{ width:17px; height:17px; }
.cc-color{ width:40px; height:40px; padding:2px; border-width:1.5px; border-style:solid; border-radius:8px; cursor:pointer; }
.cc-color::-webkit-color-swatch-wrapper{ padding:0; }
.cc-color::-webkit-color-swatch{ border:none; border-radius:6px; }
.cc-color::-moz-color-swatch{ border:none; border-radius:6px; }
.cc-sub-h{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; margin:14px 0 8px; }
.cc-sub-h:first-child{ margin-top:0; }
.cc-xsec{ border-width:1px; border-style:solid; border-radius:12px; padding:10px 12px; margin-bottom:6px; }
.cc-xsec-h{ font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; margin-bottom:6px; }
#mWall, #mStone{ width:100%; height:auto; display:block; }
.cc-swatches{ display:flex; flex-wrap:wrap; gap:7px; margin-top:6px; max-height:128px; overflow-y:auto; padding:7px; }
.cc-sw{ position:relative; width:30px; height:30px; border-radius:8px; border-width:1px; border-style:solid; cursor:pointer; padding:0; transition:transform .08s; }
.cc-sw:hover{ transform:translateY(-2px); }
.cc-sw.sel{ outline-width:2.5px; outline-style:solid; outline-offset:1.5px; }
.cc-sw.sel::after{ content:'✓'; position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:13px; font-weight:900; }
.cc-legend{ display:flex; flex-direction:column; gap:5px; margin-top:8px; }
.cc-legend .it{ display:flex; align-items:center; gap:8px; font-size:12px; font-weight:600; }
.cc-legend .sw{ width:14px; height:14px; border-radius:3px; border-width:1px; border-style:solid; flex:0 0 auto; }

.cc-scope-note{ margin-top:16px; border-width:1px; border-style:solid; border-left-width:4px; border-left-style:solid; border-radius:11px; padding:14px 17px; }
.cc-scope-h{ display:flex; align-items:center; gap:8px; font-size:13px; font-weight:800; margin-bottom:8px; }
.cc-scope-p{ font-size:12px; line-height:1.6; margin:0 0 8px; }
.cc-scope-p:last-child{ margin-bottom:0; }
.cc-scope-p strong{ }
.cc-scope-cta{ margin-top:11px; padding-top:11px; border-top-width:1px; border-top-style:dashed; font-weight:700; }
.cc-scope-btns{ display:flex; flex-wrap:wrap; gap:9px; margin-top:9px; }
.cc-scope-btn{ display:inline-flex; align-items:center; gap:7px; font-weight:750; font-size:12.5px; padding:9px 15px; border-radius:8px; text-decoration:none; }
.cc-scope-btn-pro{ } .cc-scope-btn-pro:hover{ }
.cc-scope-btn-free{ border-width:1.5px; border-style:solid; } .cc-scope-btn-free:hover{ }
@media(max-width:560px){ .cc-inp{ width:108px; } }
@media print{ .ed-toolbar, .cc-tabs, .rb, .ed-status, .cc-btn-row, .cc-head .cc-lead{ display:none !important; } }
#ccToasts{ position:fixed; right:18px; bottom:18px; z-index:99999; display:flex; flex-direction:column; gap:10px; align-items:flex-end; pointer-events:none; max-width:min(380px,calc(100vw - 36px)); }
.cc-toast{ position:relative; overflow:hidden; pointer-events:auto; display:flex; align-items:flex-start; gap:10px; width:340px; max-width:100%; padding:12px 13px 13px; border-radius:14px; border-width:1px; border-style:solid; font-size:13.5px; line-height:1.42; transform:translateY(10px); opacity:0; transition:opacity .22s ease,transform .22s ease; }
.cc-toast.in{ opacity:1; transform:translateY(0); }
.cc-toast-ic{ flex:0 0 auto; width:20px; height:20px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; line-height:1; margin-top:1px; }
.cc-toast-bd{ flex:1 1 auto; min-width:0; }
.cc-toast-ti{ font-weight:750; margin-bottom:1px; }
.cc-toast-msg{ opacity:.82; word-break:break-word; }
.cc-toast-x{ flex:0 0 auto; cursor:pointer; opacity:.45; font-size:17px; line-height:1; padding:0; margin:-2px -2px 0 4px; border:0; background:none; color:inherit; }
.cc-toast-x:hover{ opacity:.85; }
.cc-toast-prog{ position:absolute; left:0; bottom:0; height:3px; width:100%; transform-origin:left center; animation:ccToastProg linear forwards; opacity:.9; }
@keyframes ccToastProg{from{ transform:scaleX(1); }to{ transform:scaleX(0); }}
.cc-toast.err{ } .cc-toast.err .cc-toast-ic,.cc-toast.err .cc-toast-prog{ }
.cc-toast.warn .cc-toast-ic,.cc-toast.warn .cc-toast-prog{ }
.cc-toast.ok .cc-toast-ic,.cc-toast.ok .cc-toast-prog{ }
.cc-toast.info .cc-toast-ic,.cc-toast.info .cc-toast-prog{ }
@media(max-width:560px){ #ccToasts{ left:12px; right:12px; align-items:stretch; } .cc-toast{ width:auto; } }
