:root{
  --bg:#202226; --panel:#d9d9dd; --panel2:#ececef; --text:#111; --muted:#6e7280;
  --line:#b9bcc5; --accent:#2c6af2; --card:#ffffff; --shadow:0 8px 24px rgba(0,0,0,.15);
}
*{box-sizing:border-box}
html,body{height:100%;margin:0;font-family:Segoe UI,Arial,sans-serif;background:#16181c;overflow:hidden}
body{width:100vw;height:100vh}
button,input,select{font:inherit}
#app.layout{height:100vh;width:100vw;display:grid;grid-template-columns:var(--left-width) 8px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:0;overflow:hidden}
.sidebar{grid-column:1;grid-row:2;background:var(--panel);color:var(--text);padding:10px;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}
.left-stack{border-right:1px solid #a9acb3}
.panel{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.catalog-panel{height:var(--top-height);flex:0 0 auto}
.toc-panel{flex:1 1 auto;min-height:0}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 4px 10px;flex:0 0 auto}
.panel-title{font-weight:700}.panel-sub{font-size:12px;color:var(--muted)}
.btn{border:1px solid #757a86;background:#fff;border-radius:10px;padding:7px 12px;cursor:pointer}
.btn.pill{border-radius:999px;font-weight:600}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.search-wrap{padding:6px 4px 12px;flex:0 0 auto}.search{width:100%;padding:10px 12px;border-radius:999px;border:1px solid var(--line);background:#fff}
.tree-block{background:var(--panel2);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;min-height:0;overflow:hidden;flex:1 1 auto}
.tree-header{padding:10px 12px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;font-weight:700;flex:0 0 auto}
.scroll{overflow:auto;min-height:0;min-width:0}
.tree{padding:8px 6px;flex:1 1 auto;min-height:0;min-width:0;overflow:auto}
.tree-node{user-select:none}
.tree-row{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:8px;cursor:pointer;position:relative;min-width:0}
.tree-row:hover{background:rgba(44,106,242,.08)}
.tree-row.selected{background:#2c6af2;color:#fff}
.tree-indent{display:inline-block;width:16px;flex:0 0 16px}
.toggle{width:12px;text-align:center;color:#444;cursor:pointer;flex:0 0 12px}
.icon{width:18px;text-align:center;opacity:.95;flex:0 0 18px;display:flex;align-items:center;justify-content:center}
.label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.tag{font-size:11px;padding:2px 6px;border:1px solid var(--line);border-radius:999px;background:#fff;color:#555;flex:0 0 auto}
.children{margin-left:14px;min-width:0}
.hidden{display:none!important}
.workspace-shell{grid-column:3;grid-row:2;background:#f6f8fb;overflow:hidden;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative}
.map-shell{background:#f6f8fb;overflow:hidden;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative}
.top-toolbar{grid-column:1/-1;grid-row:1}
#splitterLeft{grid-column:2;grid-row:2}
.command-shell{flex:0 0 var(--command-height);min-height:52px;max-height:var(--command-height);min-width:0;overflow:hidden;background:linear-gradient(180deg,#fdfefe,#eef3fb)}
.map-stage{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}
#mapCanvas,#mapCanvas3d{position:absolute;inset:0;width:100%;height:100%;display:block;background:#f7f7f8}
#mapCanvas3d{background:linear-gradient(180deg,#f8fbff,#e6edf7)}
.top-toolbar{position:relative;display:flex;flex-wrap:wrap;align-items:flex-start;gap:5px;padding:10px 12px;border-bottom:1px solid #d7dce5;background:linear-gradient(180deg,#fefefe,#f4f6fa);z-index:30}
.tool-group{--group-accent:#7d8ca3;display:flex;align-items:center;gap:3px;padding:4px 7px;border:1px solid color-mix(in srgb, var(--group-accent) 28%, #ffffff);border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(247,249,253,.92));box-shadow:0 3px 12px rgba(41,54,78,.08), inset 0 1px 0 rgba(255,255,255,.95);position:relative;cursor:default;user-select:none}
.tool-group:active{cursor:default}
.tool-group.dragging{opacity:.74;box-shadow:0 10px 24px rgba(41,54,78,.16)}
.tool-group.drag-over{outline:2px dashed color-mix(in srgb, var(--group-accent) 55%, white);outline-offset:2px}
.tool-group.tool-group-hidden-by-user{display:none !important}
.toolbar-groups-dialog{position:fixed;inset:0;z-index:1600;pointer-events:none}
.toolbar-groups-window{position:absolute;pointer-events:auto;display:flex;flex-direction:column;min-width:340px;min-height:280px;max-width:min(92vw,560px);max-height:min(86vh,720px);overflow:hidden;border:1px solid rgba(148,163,184,.32);border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(245,247,251,.98));box-shadow:0 20px 48px rgba(15,23,42,.24)}
.toolbar-groups-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid rgba(148,163,184,.24);cursor:grab;user-select:none}
.toolbar-groups-header h3{margin:0;font-size:16px;font-weight:800;color:#0f172a}
.toolbar-groups-header p{margin:4px 0 0;font-size:12px;color:#475569}
.toolbar-groups-body{display:flex;flex-direction:column;gap:12px;padding:14px 16px;min-height:0;flex:1 1 auto}
.toolbar-groups-actions{display:flex;gap:8px;flex-wrap:wrap}
.toolbar-groups-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;overflow:auto;padding-right:4px}
.toolbar-groups-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid rgba(148,163,184,.28);border-radius:14px;background:rgba(255,255,255,.76);font-size:13px;font-weight:600;color:#1e293b}
.toolbar-groups-item input{width:16px;height:16px}
.toolbar-groups-item-text{line-height:1.25}
.toolbar-groups-footer{padding:0 16px 14px;font-size:12px;color:#64748b}
.toolbar-groups-resize{position:absolute;right:8px;bottom:8px;width:18px;height:18px;border-right:2px solid rgba(100,116,139,.6);border-bottom:2px solid rgba(100,116,139,.6);cursor:nwse-resize;opacity:.85}
html[data-theme="dark"] .toolbar-groups-window{border-color:rgba(100,116,139,.36);background:linear-gradient(180deg,rgba(15,23,42,.98),rgba(10,16,30,.98));box-shadow:0 24px 56px rgba(2,6,23,.5)}
html[data-theme="dark"] .toolbar-groups-header{border-bottom-color:rgba(100,116,139,.26)}
html[data-theme="dark"] .toolbar-groups-header h3{color:#e2e8f0}
html[data-theme="dark"] .toolbar-groups-header p,html[data-theme="dark"] .toolbar-groups-footer{color:#94a3b8}
html[data-theme="dark"] .toolbar-groups-item{border-color:rgba(100,116,139,.28);background:rgba(15,23,42,.72);color:#e2e8f0}
html[data-theme="dark"] .toolbar-groups-resize{border-right-color:rgba(148,163,184,.72);border-bottom-color:rgba(148,163,184,.72)}
.tool-group-label{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;height:30px;padding:0 12px;border-radius:999px;border:1px solid color-mix(in srgb, var(--group-accent) 28%, #ffffff);background:color-mix(in srgb, var(--group-accent) 10%, #ffffff);font-size:11px;font-weight:800;color:color-mix(in srgb, var(--group-accent) 82%, #243046);text-transform:uppercase;letter-spacing:.04em;margin-right:1px;cursor:grab}
.tool-group-label::before{content:'≡';font-size:10px;opacity:.72}
.tool-group-label[draggable="true"]{cursor:grab}
.tool-group-label[draggable="true"]:active{cursor:grabbing}
.tool-inline{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 8px;border-radius:999px;border:1px solid rgba(148,163,184,.28);background:rgba(255,255,255,.78);font-size:12px;color:#334155;cursor:default;user-select:none}
.tool-inline span{font-weight:700;white-space:nowrap}
.tool-inline-select{max-width:320px}
.tool-select{height:26px;min-width:190px;border-radius:999px;padding:0 10px;font-size:12px}
.tool-inline-3d{max-width:220px}
.tool-inline-dim{max-width:170px}
.tool-select-dim{min-width:98px;max-width:118px}
.toolbar-tooltip{position:fixed;left:-9999px;top:-9999px;max-width:min(320px,calc(100vw - 16px));padding:7px 10px;border-radius:10px;background:rgba(21,27,38,.94);color:#f8fafc;font-size:12px;line-height:1.35;font-weight:600;box-shadow:0 10px 28px rgba(15,23,42,.28);border:1px solid rgba(148,163,184,.28);pointer-events:none;opacity:0;transform:translateY(2px);transition:opacity .12s ease, transform .12s ease;z-index:1200;white-space:normal}
.toolbar-tooltip.visible{opacity:1;transform:translateY(0)}
html[data-theme="dark"] .toolbar-tooltip{background:rgba(248,250,252,.96);color:#0f172a;border-color:rgba(15,23,42,.16);box-shadow:0 12px 30px rgba(2,6,23,.4)}
.tool-select-3d{min-width:130px;max-width:160px}

.tool-check{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:1px solid #b8c4d8;border-radius:999px;background:linear-gradient(180deg,#ffffff,#eef2f7);font-size:11px;font-weight:700;color:#243041;cursor:pointer;user-select:none;box-shadow:0 1px 0 rgba(255,255,255,.95),0 1px 2px rgba(47,58,78,.08)}
.tool-check input{margin:0;accent-color:#4f46e5;cursor:pointer}
.tool-check span{white-space:nowrap}
.tool{min-width:30px;height:30px;padding:0 7px;border-radius:10px;border:1px solid #cfd4dd;background:linear-gradient(180deg,#ffffff,#edf1f7);cursor:pointer;font-size:14px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;transition:all .15s ease;box-shadow:0 1px 0 rgba(255,255,255,.95), 0 1px 3px rgba(47,58,78,.10)}
.tool.active,.tool:hover{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 2px rgba(44,106,242,.10), 0 4px 10px rgba(44,106,242,.12)}
.tool.tool-wide{min-width:92px;padding:0 11px;gap:6px;font-size:12px;white-space:nowrap}
.tool.disabled{opacity:.45;pointer-events:none}
.tool-group[data-group="navegacion"]{--group-accent:#7ea7f2}
.tool-group[data-group="seleccion"]{--group-accent:#baa5ef}
.tool-group[data-group="representacion"]{--group-accent:#8fc6d8}
.tool-group[data-group="edicion"]{--group-accent:#95d7b3}
.tool-group[data-group="crear"]{--group-accent:#f1c28a}
.tool-group[data-group="geometria"]{--group-accent:#f0b1b6}

.edit-status{display:inline-flex;align-items:center;justify-content:center;min-height:30px;padding:0 10px;border-radius:999px;border:1px solid #cfd4dd;background:linear-gradient(180deg,#ffffff,#edf1f7);color:#445066;font-size:11px;font-weight:700;white-space:nowrap;box-shadow:0 1px 0 rgba(255,255,255,.95), 0 1px 3px rgba(47,58,78,.10)}
.edit-status.clean{background:#f6fbf7;border-color:#cfe7d3;color:#2e7d32}
.edit-status.dirty{background:#fff7e6;border-color:#f0c36d;color:#8a5a00}
.edit-status.saving{background:#eef4ff;border-color:#bcd0ff;color:#2555c8}
.statusbar{position:absolute;left:12px;bottom:12px;padding:8px 10px;background:rgba(255,255,255,.92);border:1px solid #d8dce3;border-radius:10px;z-index:20;font-size:12px;max-width:min(560px,calc(100% - 24px));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.map-view-badge{position:absolute;top:14px;right:14px;z-index:24;display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:28px;padding:0 10px;border-radius:999px;background:rgba(15,23,42,.88);color:#f8fafc;font:800 12px/1 Segoe UI,Arial,sans-serif;letter-spacing:.04em;box-shadow:0 8px 18px rgba(15,23,42,.18)}
.tool.is-3d-active{border-color:#0f172a!important;color:#0f172a!important;box-shadow:0 0 0 2px rgba(15,23,42,.08), 0 4px 10px rgba(15,23,42,.12)!important}
.map-cursor-coords{position:absolute;left:12px;bottom:72px;z-index:5;min-width:180px;padding:6px 10px;border:1px solid #cfd6e3;border-radius:999px;background:rgba(255,255,255,.92);box-shadow:0 4px 14px rgba(15,23,42,.12);font:600 12px/1 system-ui,sans-serif;color:#344054;pointer-events:none;white-space:nowrap}
.map-offset-hud{position:absolute;left:120px;top:120px;z-index:22;display:grid;gap:8px;min-width:196px;padding:10px 12px;border:1px solid #cfd6e3;border-radius:14px;background:rgba(255,255,255,.96);box-shadow:0 10px 28px rgba(15,23,42,.16);color:#0f172a;pointer-events:auto;backdrop-filter:blur(2px)}
.map-offset-hud.hidden{display:none}
.map-offset-hud-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.map-offset-hud-badge{display:inline-flex;align-items:center;border-radius:999px;padding:3px 8px;background:#0f172a;color:#fff;font:700 11px/1 system-ui,sans-serif;letter-spacing:.02em}
.map-offset-hud-mode{border:1px solid #c7d2e4;border-radius:999px;background:#fff;color:#334155;padding:4px 10px;font:700 11px/1 system-ui,sans-serif;cursor:pointer;box-shadow:0 1px 2px rgba(15,23,42,.05)}
.map-offset-hud-mode.is-active{background:#dbeafe;border-color:#60a5fa;color:#1d4ed8}
.map-offset-hud-field{display:grid;gap:5px;font:600 11px/1.2 system-ui,sans-serif;color:#475569}
.map-offset-hud-input{width:100%;box-sizing:border-box;border:1px solid #c7d2e4;border-radius:10px;padding:7px 9px;background:#fff;color:#0f172a;font:700 13px/1.2 system-ui,sans-serif;box-shadow:inset 0 1px 2px rgba(15,23,42,.04)}
.map-offset-hud-input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.map-offset-hud-meta{font:600 11px/1.35 system-ui,sans-serif;color:#64748b;white-space:nowrap}
html[data-theme="dark"] .map-offset-hud{background:rgba(17,24,39,.96);border-color:rgba(148,163,184,.35);color:#e5e7eb;box-shadow:0 12px 30px rgba(2,6,23,.42)}
html[data-theme="dark"] .map-offset-hud-badge{background:#1d4ed8;color:#eff6ff}
html[data-theme="dark"] .map-offset-hud-mode{background:rgba(255,255,255,.06);border-color:rgba(148,163,184,.3);color:#e5e7eb}
html[data-theme="dark"] .map-offset-hud-mode.is-active{background:rgba(59,130,246,.18);border-color:#60a5fa;color:#bfdbfe}
html[data-theme="dark"] .map-offset-hud-input{background:rgba(255,255,255,.06);border-color:rgba(148,163,184,.3);color:#f8fafc}
.map-pick-center{cursor:crosshair!important}
.zoom-box{position:absolute;border:2px dashed #2c6af2;background:rgba(44,106,242,.1);pointer-events:none;z-index:15}
.card{box-shadow:var(--shadow)}
.legend-chip{width:14px;height:14px;border-radius:3px;border:1px solid #777;display:inline-block}
.layer-check{margin:0;accent-color:var(--accent);cursor:pointer;flex:0 0 auto}
.ctx-menu{position:fixed;z-index:1000;min-width:240px;background:#f1f1f3;border:1px solid #c9cdd5;border-radius:18px;box-shadow:var(--shadow);padding:10px}
.ctx-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;cursor:pointer}
.ctx-item:hover{background:#dfe3ea}.ctx-sep{height:1px;background:#cdd2da;margin:8px 0}
.ctx-head{padding:6px 10px 8px}.ctx-head .muted{font-size:12px;margin-top:4px}
.ctx-mode-group{display:grid;gap:6px;padding:2px 4px 6px}
.ctx-mode-row{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border-radius:12px;cursor:pointer}
.ctx-mode-row:hover{background:#e5e8ee}.ctx-mode-row input{margin-top:2px}.ctx-mode-row span{display:flex;flex-direction:column;gap:2px}.ctx-mode-row small{font-size:11px;color:#5b6472;line-height:1.2}
.dialog{border:none;border-radius:18px;padding:0;box-shadow:var(--shadow);width:min(720px,92vw)}
.dialog-wide{width:min(980px,96vw);height:min(720px,92vh)}
.dialog::backdrop{background:rgba(0,0,0,.35)}
.dialog-body{padding:18px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid2 label{display:flex;flex-direction:column;gap:6px;font-size:13px}.grid2 input{padding:10px;border:1px solid var(--line);border-radius:10px}
.dialog-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:12px}.result-box{background:#17191d;color:#c9f7c2;padding:10px;border-radius:10px;min-height:70px}
.properties{position:absolute;top:68px;right:12px;z-index:25;width:320px;max-width:calc(100% - 24px);background:rgba(255,255,255,.97);border:1px solid #d5dae3;border-radius:16px;box-shadow:var(--shadow);padding:14px;max-height:calc(100% - 84px);overflow:auto}
.properties h4{margin:0 0 10px}.prop-row{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px dashed #e0e3e8}
.prop-row:last-child{border-bottom:none}
.toc-wrap{flex:1 1 auto;min-height:0;overflow:hidden}
.drag-over{outline:2px dashed var(--accent);outline-offset:-2px}
.splitter{background:linear-gradient(180deg,#ced2da,#bcc1cb);position:relative}
.splitter-v{cursor:col-resize}
.splitter-h{cursor:row-resize;height:8px;flex:0 0 8px;margin:6px 0}
.splitter:hover::after,.splitter.dragging::after{content:'';position:absolute;inset:0;background:rgba(44,106,242,.14)}
.layer-props{display:grid;grid-template-columns:280px minmax(0,1fr);height:100%}
.prop-nav{background:#575757;color:#fff;padding:10px;display:flex;flex-direction:column;gap:8px;min-height:0}
.prop-nav-head{padding:6px 8px 10px;border-bottom:1px solid rgba(255,255,255,.15);margin-bottom:8px}
.prop-nav-title{font-weight:700}
.prop-tab{background:transparent;border:none;color:#fff;text-align:left;padding:10px 12px;border-radius:10px;cursor:pointer}
.prop-tab.active,.prop-tab:hover{background:rgba(255,255,255,.16)}
.prop-content{background:#f0f0f0;padding:14px;display:flex;flex-direction:column;min-height:0}
.prop-section{display:none;min-height:0;overflow:auto}
.prop-section.active{display:block;flex:1 1 auto}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.form-grid label{display:flex;flex-direction:column;gap:6px;font-size:13px}
.form-grid input,.form-grid select{padding:8px 10px;border-radius:8px;border:1px solid #bcbcbc;background:#fff}
.checkline{flex-direction:row!important;align-items:center;gap:8px;padding-top:6px}
.symbol-preview-wrap{margin-top:16px;padding:12px;border:1px solid #cfcfcf;border-radius:10px;background:#fff}
.symbol-preview-title{font-weight:600;margin-bottom:10px}
.symbol-preview{height:120px;border:1px dashed #c9c9c9;border-radius:8px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#fafafa,#f0f0f0)}
.help-box{margin-top:12px;padding:12px;border:1px solid #d8d8d8;border-radius:10px;background:#fff;color:#555}
.sticky-actions{margin-top:auto;padding-top:12px;position:sticky;bottom:0;background:#f0f0f0}
.style-swatch{width:16px;height:16px;border-radius:3px;border:1px solid rgba(0,0,0,.4);display:inline-block;flex:0 0 16px}
.style-line{width:18px;height:0;border-top:3px solid #000;display:inline-block;flex:0 0 18px}
.style-point{width:12px;height:12px;border:2px solid #000;border-radius:50%;display:inline-block;flex:0 0 12px}
.style-point.square{border-radius:2px}
.info-grid{display:grid;grid-template-columns:180px minmax(0,1fr);gap:10px 16px}
.info-grid .k{font-weight:600;color:#555}
.info-grid .v{background:#fff;border:1px solid #ddd;border-radius:8px;padding:8px 10px;min-width:0;overflow:hidden;text-overflow:ellipsis}
@media (max-width:1200px){
  #app.layout{grid-template-columns:320px 8px minmax(0,1fr)}
  .layer-props{grid-template-columns:220px minmax(0,1fr)}
}
.sym-top-grid{margin-bottom:10px}
.sym-actions-row{display:flex;justify-content:flex-start;gap:8px;margin:4px 0 14px}
.sym-classes-table{display:grid;gap:6px;max-height:280px;overflow:auto}
.sym-class-row{display:grid;grid-template-columns:28px 1fr 1fr auto;gap:8px;align-items:center;padding:6px 8px;border:1px solid #ddd;border-radius:8px;background:#fff}
.sym-class-swatch{width:18px;height:18px;border:1px solid rgba(0,0,0,.35);border-radius:3px;display:inline-block}
.sym-class-row input[type="checkbox"]{margin:0}
.sym-class-text{font-size:12px;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sym-class-label{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sym-mini-stack{display:flex;gap:2px;align-items:center}
.sym-mini-stack .style-swatch,.sym-mini-stack .sym-class-swatch{width:8px;height:14px;border-radius:2px}
.sym-gradient{width:18px;height:14px;border:1px solid rgba(0,0,0,.35);border-radius:2px;display:inline-block}

.checkline.compact{padding-top:0;margin-left:6px;font-size:13px}
.sym-class-row{grid-template-columns:28px 18px minmax(90px,1fr) minmax(100px,1fr) 86px 34px}
.sym-class-row .class-color{width:100%;padding:0;border:none;background:transparent;height:28px}
.sym-class-row .class-label-edit{width:100%;padding:6px 8px;border:1px solid #ccc;border-radius:6px}
.sym-class-row .icon-btn{width:28px;height:28px;border:1px solid #ccc;background:#fff;border-radius:7px;cursor:pointer}
.sym-class-head{display:grid;grid-template-columns:28px 18px minmax(90px,1fr) minmax(100px,1fr) 86px 34px;gap:8px;padding:4px 8px;font-size:12px;color:#666;font-weight:600}

.map-legend{position:absolute;right:12px;bottom:12px;z-index:25;min-width:220px;max-width:min(320px,calc(100% - 24px));max-height:min(55vh,520px);overflow:auto;padding:10px 12px;background:rgba(255,255,255,.96);border:1px solid #d8dce3;border-radius:14px;box-shadow:var(--shadow)}
.map-legend.hidden{display:none}
.map-legend-title{font-weight:700;font-size:13px;margin:0 0 8px 0}
.map-legend-layer{padding:8px 0;border-top:1px solid #eceff4}
.map-legend-layer:first-of-type{border-top:none;padding-top:0}
.map-legend-layer-name{font-size:12px;font-weight:600;margin-bottom:6px}
.map-legend-item{display:flex;align-items:center;gap:8px;font-size:12px;line-height:1.25;padding:3px 0}
.map-legend-empty{font-size:12px;color:#667085}
.legend-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 22px;width:22px;height:14px}
.legend-line{display:inline-block;width:20px;height:0;border-top:3px solid #666;border-radius:2px}
.legend-point{display:inline-block;width:12px;height:12px;border-radius:50%;border:1px solid #666}
.legend-point.square{border-radius:2px}
.legend-poly{display:inline-block;width:18px;height:12px;border:1px solid #666;border-radius:2px}

.head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

.tree-row[draggable="true"]{cursor:grab}
.tree-row[draggable="true"]:active{cursor:grabbing}
.tree-row.drag-over{outline:2px dashed var(--accent);outline-offset:-2px;background:#eef4ff}

.toolbar-check{display:inline-flex;align-items:center;gap:5px;font-size:11px;background:#fff;border:1px solid #cfd4dd;border-radius:999px;padding:5px 9px;box-shadow:var(--shadow)}
.toolbar-check input{margin:0}

.toc-inline-tools{display:inline-flex;align-items:center;gap:4px;margin-right:6px}
.toc-mini-btn{border:1px solid #d4d9e2;background:#fff;border-radius:8px;padding:0 4px;height:22px;line-height:20px;font-size:12px;cursor:pointer}
.toc-mini-btn:hover{border-color:var(--accent);color:var(--accent)}
.toolbar-check.compact,.checkline.compact{display:inline-flex;align-items:center;gap:6px}

.tree-inline-input{width:180px;max-width:100%;height:24px;border:1px solid #cfd4dd;border-radius:8px;padding:0 8px;font:inherit;background:#fff}
.tree-inline-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(44,106,242,.12)}

.toc-actionbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 0 10px 0}
.toc-action-btn{border:1px solid #d4d9e2;background:#fff;border-radius:10px;padding:0 8px;height:28px;line-height:26px;font-size:13px;cursor:pointer}
.toc-action-btn:hover{border-color:var(--accent);color:var(--accent)}
.toc-action-btn.disabled{opacity:.45;pointer-events:none}

.tool[title]{position:relative}
#btnSnapPanel{position:relative;z-index:81}

@media (max-width: 1100px){
  .top-toolbar{gap:4px;padding:7px}
  .tool-group{flex-wrap:wrap}
  .tool-group-label{flex-basis:100%;margin-bottom:1px;justify-content:flex-start}
}

.snap-panel {
  position: absolute;
  top: calc(var(--command-height) + 20px);
  left: 16px;
  z-index: 200;
  min-width: 220px;
  padding: 10px 12px;
  background: rgba(20,24,32,.96);
  color: #fff;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0,0,0,.24);
  display: none;
  gap: 6px;
}
.snap-panel.open { display: grid; }
.snap-panel-title { font-weight: 700; margin-bottom: 4px; }
.snap-panel label { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.map-shell,.workspace-shell { position: relative; }

.snap-panel.hidden{display:none}
.snap-panel.open{display:grid}
.snap-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}
.snap-panel-badges{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.snap-badge{display:inline-flex;align-items:center;border-radius:999px;padding:2px 8px;background:#22c55e;color:#06210f;font-size:11px;font-weight:700}
.snap-badge.soft{background:rgba(255,255,255,.12);color:#fff;font-weight:600}
.snap-switch{font-weight:700;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,.10);margin-bottom:2px}
.snap-panel-section{display:grid;gap:6px;padding:2px 0}
.snap-panel-subtitle{font-size:12px;font-weight:700;letter-spacing:.02em;color:#cbd5e1;text-transform:uppercase}
.snap-panel-row{display:grid;grid-template-columns:72px 1fr 64px 48px;align-items:center;gap:8px}
.snap-panel-row:has(select){grid-template-columns:72px 1fr}
.snap-panel .snap-tolerance-input{width:64px;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:rgba(255,255,255,.08);color:#fff;padding:4px 6px}
.snap-panel .snap-priority-select{width:100%;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:rgba(255,255,255,.08);color:#fff;padding:5px 8px}
.snap-panel-help{font-size:12px;line-height:1.35;color:#cbd5e1;padding-top:2px}
#btnSnapToggle.active,#btnSnapPanel.active{outline:2px solid rgba(44,106,242,.28);outline-offset:1px}

.properties .prop-form{display:flex;flex-direction:column;gap:10px}
.properties .prop-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}
.properties .prop-meta{font-size:12px;color:#6b7280;margin-bottom:8px}
.properties .prop-field{display:flex;flex-direction:column;gap:4px}
.properties .prop-field label{font-size:12px;color:#374151;font-weight:600}
.properties .prop-field input,.properties .prop-field textarea,.properties .prop-field select{width:100%;border:1px solid #cfd6e3;border-radius:10px;padding:8px 10px;font:inherit;background:#fff}
.properties .prop-layout{display:flex;flex-direction:column;gap:10px;height:100%}
.properties .prop-layout.has-tabs{display:grid;grid-template-columns:170px 1fr;grid-template-rows:auto auto 1fr;align-items:start}
.properties .prop-layout.has-tabs .prop-head,.properties .prop-layout.has-tabs>.prop-meta,.properties .prop-layout.has-tabs>.prop-help{grid-column:1 / -1}
.properties .prop-content-shell{min-height:0}
.properties .prop-layout.has-tabs .prop-content-shell{grid-column:2;grid-row:4;min-height:0;height:100%}
.properties .prop-layout.has-tabs .prop-nav{grid-column:1;grid-row:4;border-radius:14px;background:#6b7280;color:#fff;padding:10px;position:sticky;top:0}
.properties .prop-section.active{display:block}
.properties .bulk-tools{display:flex;flex-direction:column;gap:12px}
.properties .bulk-card{border:1px solid #dbe3f0;background:#fff;border-radius:14px;padding:12px;box-shadow:0 1px 2px rgba(15,23,42,.05)}
.properties .bulk-card h5{margin:0 0 8px;font-size:13px}
.properties .bulk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.properties .bulk-grid-span-2{grid-column:span 2}
.properties code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;background:#eef2ff;color:#3730a3;border-radius:6px;padding:1px 5px}
@media (max-width: 980px){.properties .prop-layout.has-tabs{grid-template-columns:1fr;grid-template-rows:auto auto auto 1fr}.properties .prop-layout.has-tabs .prop-nav{grid-column:1;grid-row:auto;position:static}.properties .prop-layout.has-tabs .prop-content-shell{grid-column:1;grid-row:auto}.properties .bulk-grid{grid-template-columns:1fr}}
.properties .prop-field textarea{min-height:72px;resize:vertical}
.properties .prop-field .muted-input{background:#f3f4f6;color:#6b7280}
.properties .prop-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:6px}
.properties .prop-help{font-size:12px;color:#6b7280}
.properties .prop-cols{display:grid;grid-template-columns:1fr;gap:10px}
.properties .prop-pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:2px 8px;font-size:11px;background:#eef2ff;color:#4338ca}

.properties .prop-field.modified{border:1px solid #f59e0b;background:#fffbeb;border-radius:12px;padding:8px 10px;box-shadow:inset 0 0 0 1px rgba(245,158,11,.12)}
.properties .prop-field.touched{border-color:#2563eb;background:#eff6ff}
.properties .prop-changed-badge{display:inline-flex;align-items:center;border-radius:999px;padding:2px 6px;margin-left:6px;font-size:10px;background:#f59e0b;color:#fff;vertical-align:middle}
.properties .prop-field select{width:100%;border:1px solid #cfd6e3;border-radius:10px;padding:8px 10px;font:inherit;background:#fff}
.properties .prop-layout{display:flex;flex-direction:column;gap:10px;height:100%}
.properties .prop-layout.has-tabs{display:grid;grid-template-columns:170px 1fr;grid-template-rows:auto auto 1fr;align-items:start}
.properties .prop-layout.has-tabs .prop-head,.properties .prop-layout.has-tabs>.prop-meta,.properties .prop-layout.has-tabs>.prop-help{grid-column:1 / -1}
.properties .prop-content-shell{min-height:0}
.properties .prop-layout.has-tabs .prop-content-shell{grid-column:2;grid-row:4;min-height:0;height:100%}
.properties .prop-layout.has-tabs .prop-nav{grid-column:1;grid-row:4;border-radius:14px;background:#6b7280;color:#fff;padding:10px;position:sticky;top:0}
.properties .prop-section.active{display:block}
.properties .bulk-tools{display:flex;flex-direction:column;gap:12px}
.properties .bulk-card{border:1px solid #dbe3f0;background:#fff;border-radius:14px;padding:12px;box-shadow:0 1px 2px rgba(15,23,42,.05)}
.properties .bulk-card h5{margin:0 0 8px;font-size:13px}
.properties .bulk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.properties .bulk-grid-span-2{grid-column:span 2}
.properties code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;background:#eef2ff;color:#3730a3;border-radius:6px;padding:1px 5px}
@media (max-width: 980px){.properties .prop-layout.has-tabs{grid-template-columns:1fr;grid-template-rows:auto auto auto 1fr}.properties .prop-layout.has-tabs .prop-nav{grid-column:1;grid-row:auto;position:static}.properties .prop-layout.has-tabs .prop-content-shell{grid-column:1;grid-row:auto}.properties .bulk-grid{grid-template-columns:1fr}}


.pending-toggle {
  display:inline-flex; align-items:center; gap:8px;
  margin-left:8px; padding:7px 12px; border:1px solid var(--ui-border,#d5dbe7);
  border-radius:999px; background:linear-gradient(180deg,#ffffff,#edf1f7); color:var(--text,#2a3344);
  font:600 13px/1.2 system-ui, sans-serif; user-select:none; cursor:pointer;
  box-shadow:0 1px 0 rgba(255,255,255,.95), 0 1px 3px rgba(47,58,78,.10);
}
.pending-toggle input { margin:0; }
.pending-toggle span { white-space:nowrap; }


.main-view{position:relative;display:grid;grid-template-columns:minmax(0,1fr);min-height:0;flex:1 1 auto}
.main-view .pane{min-width:0;min-height:0}
.pane-map{display:flex;min-width:0;min-height:0}
.pane-table{min-width:0;min-height:0}
.splitter-table{height:auto;flex:unset;margin:0}
.table-shell{display:flex;flex-direction:column;height:100%;padding:10px 10px 8px;border-radius:16px;border:1px solid #d8deea;background:linear-gradient(180deg,#f8fafc,#f2f5fa);box-shadow:var(--shadow)}
.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.table-toolbar-left,.table-toolbar-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.table-inline{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#475467}
.table-select,.table-search{height:30px;border:1px solid #cfd6e3;border-radius:10px;background:#fff;padding:0 10px;font:600 12px/1 system-ui,sans-serif;color:#243041}
.table-search{min-width:220px}
.table-search.rule-value{min-width:180px}
.table-filter-inline span,.table-inline span{white-space:nowrap}
.table-icon-btn{width:34px;height:34px;border:1px solid #b8c4d8;border-radius:999px;background:linear-gradient(180deg,#ffffff,#eef2f7);font:700 15px/1 system-ui,sans-serif;color:#243041;cursor:pointer;box-shadow:0 1px 0 rgba(255,255,255,.95),0 1px 2px rgba(47,58,78,.08)}
.table-icon-btn:hover{border-color:#8fa2c4;background:linear-gradient(180deg,#ffffff,#e6edf8)}
.table-icon-btn.danger{color:#9b1c1c}
.table-rules-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 8px}
.table-rules-actions{display:flex;align-items:center;gap:8px;margin-left:auto}
.table-rule-list{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px 2px;min-height:18px}
.table-rule-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid #d7ddea;border-radius:999px;background:#fff;font:600 12px/1 system-ui,sans-serif;color:#475467;box-shadow:0 1px 2px rgba(47,58,78,.06)}
.table-rule-chip button{border:0;background:transparent;color:#667085;cursor:pointer;font:700 13px/1 system-ui,sans-serif;padding:0}
.table-columns-menu{position:absolute;right:12px;top:92px;z-index:7;min-width:280px;max-width:360px;max-height:420px;overflow:auto;padding:10px;border:1px solid #d8deea;border-radius:14px;background:#fff;box-shadow:0 18px 40px rgba(15,23,42,.16)}
.table-columns-menu label{display:flex;align-items:center;gap:8px;padding:4px 2px;font:600 12px/1.2 system-ui,sans-serif;color:#344054}
.table-columns-menu-head{display:grid;gap:8px;padding:2px 2px 10px;margin-bottom:4px;border-bottom:1px solid #edf1f6;position:sticky;top:-10px;background:#fff;z-index:1}
.table-columns-head-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.table-columns-search-wrap{padding:0!important}
.table-columns-search{width:100%;min-width:0;height:34px}
.table-columns-subhead{display:flex;align-items:center;justify-content:space-between;gap:8px;font:700 11px/1.2 system-ui,sans-serif;color:#667085}
.table-columns-toggle-all{font-weight:700}
.table-columns-count{font:700 11px/1 system-ui,sans-serif;color:#667085;background:#f2f4f7;border:1px solid #e4e7ec;border-radius:999px;padding:4px 8px}
.table-columns-menu-list{display:grid;gap:2px}
.table-columns-item{display:flex;align-items:center;gap:8px;padding:6px 4px!important;border-radius:10px}
.table-columns-item:hover{background:#f8fafc}
.table-columns-item-main{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;width:100%}
.table-columns-item-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.table-columns-item-meta{font:700 10px/1 system-ui,sans-serif;color:#667085;background:#f2f4f7;border:1px solid #e4e7ec;border-radius:999px;padding:4px 7px;flex:0 0 auto;text-transform:uppercase;letter-spacing:.02em}
.table-columns-item-meta.is-pk{color:#1d4ed8;background:#e8f0ff;border-color:#bfd4ff}
.table-columns-empty{padding:10px 6px 6px;font-size:12px}
.table-columns-menu-actions{display:flex;justify-content:flex-end;margin-top:8px;padding-top:8px;border-top:1px solid #edf1f6;position:sticky;bottom:-10px;background:#fff}
.table-columns-menu.hidden{display:none}
.table-summary-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:0 0 8px 2px}
.table-summary{font-size:12px;color:#667085;margin:0}
.table-pager{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.table-page-info{min-width:52px;text-align:center;font:700 12px/1 system-ui,sans-serif;color:#475467}
.table-page-size-inline .table-select{min-width:82px}
.table-grid-wrap{position:relative;flex:1 1 auto;min-height:220px;overflow:auto;border:1px solid #d8deea;border-radius:14px;background:#fff;min-width:0;scrollbar-gutter:stable both-edges}
.table-summary-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.table-selection-hint{flex:1 1 100%;margin-top:-6px;font-size:11px;color:#6b7280}
.table-grid-wrap.is-scrolled-y{box-shadow:inset 0 1px 0 rgba(15,23,42,.03)}
.attribute-table{width:max-content;min-width:100%;border-collapse:separate;border-spacing:0;font-size:12px;table-layout:fixed}
.attribute-table thead th{position:sticky;top:0;z-index:2;background:linear-gradient(180deg,#fbfdff,#eef3f8);border-bottom:1px solid #d8deea;color:#344054;font-weight:700;padding:9px 10px;text-align:left;white-space:nowrap;min-width:160px;max-width:360px;overflow:hidden;text-overflow:ellipsis;transition:box-shadow .15s ease, background .15s ease}
.table-grid-wrap.is-scrolled-y .attribute-table thead th{box-shadow:0 10px 18px -18px rgba(15,23,42,.45), inset 0 -1px 0 #d8deea}
.attribute-table td{padding:7px 10px;border-bottom:1px solid #edf1f6;vertical-align:middle;white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis;min-width:160px;height:36px;box-sizing:border-box}
.attribute-table tbody tr{cursor:pointer}
.attribute-table tbody tr.table-virtual-spacer{cursor:default;background:transparent!important;box-shadow:none!important}
.attribute-table tbody tr.table-virtual-spacer td{height:auto;background:transparent;border-bottom:0}
.attribute-table tbody tr:hover{background:#f7faff}
.attribute-table tbody tr.selected{background:#dce9ff;box-shadow:inset 3px 0 0 #2563eb}
.attribute-table tbody tr.hover{background:#fff4d6;box-shadow:inset 3px 0 0 #f59e0b}
.attribute-table tbody tr.selected.hover{background:linear-gradient(180deg,#e8f0ff,#fff4d6);box-shadow:inset 3px 0 0 #2563eb, inset 6px 0 0 #f59e0b}
.attribute-table tbody tr.filtered-out{display:none}
.attribute-table td.cell-editing{padding:4px 6px}
.attribute-table .cell-editor{width:100%;min-width:90px;height:28px;border:1px solid #8db2ff;border-radius:8px;padding:0 8px;font:inherit;background:#fff;outline:none}
.attribute-table .cell-editor:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.18)}
.attribute-table .cell-editor.is-invalid{border-color:#dc2626;background:#fff5f5;box-shadow:0 0 0 3px rgba(220,38,38,.12)}
.attribute-table .cell-null{color:#98a2b3;font-style:italic}
.attribute-table .col-index{width:56px;min-width:56px}
.attribute-table .col-geom{width:110px;min-width:110px}
.attribute-table th.sticky-left,.attribute-table td.sticky-left{position:sticky;left:0;z-index:4;background:inherit}
.attribute-table th.sticky-left-2,.attribute-table td.sticky-left-2{position:sticky;left:56px;z-index:4;background:inherit}
.attribute-table thead th.sticky-left,.attribute-table thead th.sticky-left-2{z-index:5;background:linear-gradient(180deg,#fbfdff,#eef3f8)}
.table-grid-wrap.is-scrolled-x .attribute-table thead th.sticky-left-2,.table-grid-wrap.is-scrolled-x .attribute-table tbody td.sticky-left-2{box-shadow:8px 0 14px -12px rgba(15,23,42,.26)}
.attribute-table tbody td.sticky-left,.attribute-table tbody td.sticky-left-2{background:#fff}
.attribute-table tbody tr:hover td.sticky-left,.attribute-table tbody tr:hover td.sticky-left-2{background:#f7faff}
.attribute-table tbody tr.selected td.sticky-left,.attribute-table tbody tr.selected td.sticky-left-2{background:#dce9ff}
.attribute-table tbody tr.hover td.sticky-left,.attribute-table tbody tr.hover td.sticky-left-2{background:#fff4d6}
.attribute-table tbody tr.selected.hover td.sticky-left,.attribute-table tbody tr.selected.hover td.sticky-left-2{background:linear-gradient(180deg,#e8f0ff,#fff4d6)}
.attribute-table tbody tr.row-dirty td{background-image:linear-gradient(0deg,rgba(37,99,235,.03),rgba(37,99,235,.03))}
.attribute-table td.table-data-cell{position:relative;outline:none}
.attribute-table td.table-cell-range{background:rgba(76,125,255,.10)}
.attribute-table td.table-cell-range::before{content:'';position:absolute;inset:0;border:1px solid rgba(76,125,255,.35);pointer-events:none}
.attribute-table td.table-data-cell,.attribute-table td.col-rownum,.attribute-table td.sticky-left-2{user-select:none;-webkit-user-select:none}
.attribute-table td.table-data-cell *:not(.cell-editor):not(input):not(textarea):not(select){user-select:none;-webkit-user-select:none}
.attribute-table td.table-data-cell.cell-editing,.attribute-table td.table-data-cell.cell-editing *,.attribute-table td.table-data-cell .cell-editor{user-select:text;-webkit-user-select:text}
.attribute-table td.table-cell-active{box-shadow:inset 0 0 0 2px #4c7dff;background:#eef4ff;z-index:1}
.attribute-table td.cell-editing.table-cell-active{box-shadow:inset 0 0 0 2px #1d4ed8,0 0 0 1px rgba(29,78,216,.18);background:#dbeafe}
.attribute-table td.cell-editing{background:#dbeafe}
.attribute-table td.table-cell-dirty::after{content:'';position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:999px;background:#2563eb;box-shadow:0 0 0 2px rgba(255,255,255,.95)}
.attribute-table td.table-cell-invalid{box-shadow:inset 0 0 0 2px rgba(220,38,38,.78);background:#fff5f5}
.attribute-table td.table-cell-invalid.table-cell-active{box-shadow:inset 0 0 0 2px #dc2626,0 0 0 1px rgba(220,38,38,.15);background:#fee2e2}
.attribute-table td.table-cell-invalid.table-cell-dirty::after{background:#dc2626}
.attribute-table .table-cell-invalid-badge{position:absolute;right:6px;bottom:6px;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:999px;background:#dc2626;color:#fff;font:800 10px/1 system-ui,sans-serif;box-shadow:0 1px 2px rgba(15,23,42,.15)}
.attribute-table tbody tr.selected td.table-cell-active{background:#cfe0ff}
.attribute-table tbody tr.selected td.cell-editing.table-cell-active{background:#bfdbfe}
.attribute-table tbody tr.hover td.table-cell-active{background:#ffefc2}
.attribute-table tbody tr.hover td.cell-editing.table-cell-active{background:#fde68a}
.attribute-table th.col-rownum,.attribute-table td.col-rownum{text-align:right;padding-right:8px;font-variant-numeric:tabular-nums;color:#667085}
.attribute-table th.has-resizer{position:sticky}
.attribute-table th .th-inner{display:flex;align-items:flex-start;gap:8px;overflow:hidden;padding-right:16px}
.attribute-table th .col-title-wrap{display:grid;gap:4px;min-width:0;flex:1 1 auto}
.attribute-table th .col-title{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:12px;line-height:1.15}
.attribute-table th .col-meta{display:inline-flex;align-items:center;gap:4px;max-width:max-content;padding:3px 7px;border-radius:999px;background:#f2f4f7;border:1px solid #e4e7ec;color:#667085;font:700 10px/1 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.02em}
.attribute-table th .col-meta.is-pk{color:#1d4ed8;background:#e8f0ff;border-color:#bfd4ff}
.attribute-table th .sort-indicator{color:#98a2b3;font-size:12px;flex:0 0 auto;align-self:center}
.attribute-table th .sort-indicator.is-active{color:#2563eb}
.attribute-table th .col-drag-grip{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;align-self:center;min-width:16px;color:#98a2b3;font-size:12px;line-height:1;cursor:default;user-select:none}
.attribute-table th.dragging-col .col-drag-grip{cursor:grabbing;color:#2563eb}
.attribute-table th.is-sorted{background:linear-gradient(180deg,#f8fbff,#e6eefc)}
.attribute-table th.table-col-drop-before,.attribute-table th.table-col-drop-after{background:linear-gradient(180deg,#eef4ff,#e3edff)}
.attribute-table th .col-resizer{position:absolute;top:0;right:0;width:8px;height:100%;cursor:col-resize}
.attribute-table th .col-resizer::after{content:'';position:absolute;right:3px;top:8px;bottom:8px;width:2px;border-radius:2px;background:#d0d7e4}
.attribute-table th.resizing .col-resizer::after{background:#4c7dff}
.table-col-drop-indicator{position:absolute;top:0;width:3px;border-radius:999px;background:#2563eb;box-shadow:0 0 0 1px rgba(37,99,235,.15);pointer-events:none;z-index:6}
.table-col-drop-indicator.hidden{display:none}

.main-view #mapPane{display:flex!important}

@media (max-width: 1200px){
  .table-search{min-width:160px}
}


.table-floating{position:fixed; right:18px; top:86px; width:min(980px, calc(100vw - 380px)); min-width:760px; min-height:360px; height:min(72vh, 760px); z-index:120; overflow:hidden;}
.table-floating.hidden{display:none !important}
.table-floating-shell{height:100%; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 12px 32px rgba(0,0,0,.24)}
.table-window-head{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px 6px; border-bottom:1px solid var(--line); background:linear-gradient(#f7f7f9,#ececef); cursor:move; user-select:none}
.table-window-title-wrap{display:flex; flex-direction:column; min-width:0}
.table-window-title{font-size:14px}
.table-window-subtitle{font-size:12px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.table-window-actions{display:flex; align-items:center; gap:8px}
.table-floating .table-grid-wrap{min-height:0; flex:1 1 auto}
.table-floating .table-toolbar,.table-floating .table-rules-bar,.table-floating .table-summary,.table-floating .table-rule-list{flex:0 0 auto}
.table-window-head .table-icon-btn{width:30px; height:30px}

.table-window-head{touch-action:none}
.table-window-head.dragging{cursor:grabbing}

.tool:disabled,.table-icon-btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.15)}


.bulk-floating{position:fixed; right:36px; top:108px; width:min(760px, calc(100vw - 420px)); min-width:540px; min-height:360px; height:min(68vh, 720px); z-index:122; resize:both; overflow:hidden;}
.bulk-floating.hidden{display:none !important}
.bulk-floating-shell{height:100%; display:flex; flex-direction:column; overflow:hidden; box-shadow:0 12px 32px rgba(0,0,0,.24)}
.bulk-window-head{display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px 6px; border-bottom:1px solid var(--line); background:linear-gradient(#f7f7f9,#ececef); cursor:move; user-select:none; touch-action:none}
.bulk-window-head.dragging{cursor:grabbing}
.bulk-window-content{flex:1 1 auto; min-height:0; overflow:auto; padding:12px; background:linear-gradient(180deg,#f8fafc,#f2f5fa)}
.bulk-window-content .bulk-help{margin:0 0 12px; font-size:12px; color:#5b6472}
.bulk-window-content .bulk-tools{display:flex; flex-direction:column; gap:12px}
.bulk-window-content .bulk-card{border:1px solid #dbe3f0;background:#fff;border-radius:14px;padding:12px;box-shadow:0 1px 2px rgba(15,23,42,.05)}
.bulk-window-content .bulk-card h5{margin:0 0 8px;font-size:13px}
.bulk-window-content .bulk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.bulk-window-content .bulk-grid-span-2{grid-column:span 2}
.bulk-window-content .prop-field{display:flex;flex-direction:column;gap:4px}
.bulk-window-content .prop-field span{font-size:12px;color:#374151;font-weight:600}
.bulk-window-content .prop-field input,.bulk-window-content .prop-field textarea,.bulk-window-content .prop-field select{width:100%;border:1px solid #cfd6e3;border-radius:10px;padding:8px 10px;font:inherit;background:#fff}
.bulk-window-content code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;background:#eef2ff;color:#3730a3;border-radius:6px;padding:1px 5px}
.bulk-inline-open{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
@media (max-width: 980px){.bulk-floating{left:12px; right:12px; width:auto; min-width:0; top:80px; height:min(72vh, 760px)} .bulk-window-content .bulk-grid{grid-template-columns:1fr}}

.feature-quick-card{position:absolute;min-width:240px;max-width:320px;z-index:18;padding:0;border:1px solid #d7ddea;border-radius:14px;background:rgba(255,255,255,.97);box-shadow:0 14px 34px rgba(15,23,42,.18);backdrop-filter:blur(6px);overflow:hidden}
.feature-quick-card.hidden{display:none!important}
.feature-quick-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:10px 12px 8px;border-bottom:1px solid #edf1f6;background:linear-gradient(180deg,#f8fafc,#f2f5fa)}
.feature-quick-card-title{display:flex;flex-direction:column;min-width:0}
.feature-quick-card-title strong{font-size:13px;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feature-quick-card-title span{font-size:11px;color:#667085;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feature-quick-card-stack{font-size:11px;font-weight:700;color:#475569;white-space:nowrap;padding-top:2px}
.feature-quick-card-body{padding:10px 12px 12px;display:grid;gap:6px}
.feature-quick-card-row{display:grid;grid-template-columns:minmax(72px,110px) 1fr;gap:8px;align-items:start;font-size:12px}
.feature-quick-card-row span{color:#667085;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.feature-quick-card-row strong{color:#1f2937;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.feature-quick-card-empty{font-size:12px;color:#98a2b3;font-style:italic}


.spatial-floating{width:min(720px, calc(100vw - 440px)); min-width:520px; min-height:320px; height:min(56vh, 560px);}
.spatial-window-content{display:flex; flex-direction:column; gap:14px; padding:14px; overflow:auto;}
.spatial-grid{display:grid; grid-template-columns:repeat(2, minmax(220px,1fr)); gap:12px 14px; align-items:end;}
.spatial-grid label{display:flex; flex-direction:column; gap:6px; font-size:13px; color:var(--muted);}
.spatial-grid input,.spatial-grid select{width:100%;}
.spatial-save-check{align-self:end; padding-bottom:8px;}
.spatial-actions{margin-top:auto;}
@media (max-width: 980px){.spatial-floating{left:12px; right:12px; width:auto; min-width:0; top:80px; height:min(72vh, 760px)} .spatial-grid{grid-template-columns:1fr;}}


.spatial-progress-wrap{margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2,#f7f7f8);display:grid;gap:8px}
.spatial-progress-bar{height:10px;border-radius:999px;background:rgba(127,127,127,.18);overflow:hidden}
.spatial-progress-bar span{display:block;height:100%;width:0%;background:var(--accent,#3b82f6);transition:width .2s ease}
.spatial-progress-label{margin:0}
.spatial-progress-log{width:100%;min-height:110px;resize:vertical;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#f8fafc !important;color:#111827 !important;caret-color:#111827;font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace}


.catalog-actions{gap:6px}
.icon-pill-btn{width:34px;min-width:34px;height:34px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:16px;line-height:1}
.catalog-panel .tree,.toc-panel .tree{font-size:12px}
.catalog-panel .tree-header,.toc-panel .tree-header,.toc-panel .panel-sub,.catalog-panel .panel-sub{font-size:12.5px}
.tree{padding:6px 4px}
.tree-row{gap:5px;padding:2px 5px;min-height:23px;font-size:12.5px;border-radius:7px;line-height:1.18}
.tree-indent{width:12px;flex:0 0 12px}
.tree-row .toggle{width:12px;display:inline-flex;justify-content:center;font-size:11px;color:#5b6472;flex:0 0 12px}
.tree-row .icon{display:inline-flex;align-items:center;justify-content:center;font-size:13px;min-width:14px;line-height:1}
.tree-row .label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tree-header{padding:8px 10px}
.ctx-menu{min-width:210px;max-width:320px;padding:6px;border-radius:14px;font-size:12.5px;overflow-y:auto;overscroll-behavior:contain}
.ctx-item{gap:8px;padding:7px 9px;border-radius:10px;line-height:1.18}
.ctx-sep{margin:4px 0}
.ctx-head{padding:4px 8px 6px}.ctx-head .muted{font-size:11px;margin-top:2px}
.ctx-mode-group{gap:4px;padding:0 2px 4px}
.ctx-mode-row{gap:7px;padding:6px 8px;border-radius:10px}
.ctx-mode-row small{font-size:10px}


.save-db-floating{width:min(820px, calc(100vw - 380px)); min-width:620px; min-height:360px; height:min(72vh, 760px)}
.save-db-content{padding:10px 12px 12px}
.save-db-layout{display:grid;gap:10px}
.save-db-card{padding:10px 12px;border-radius:14px;box-shadow:0 1px 0 rgba(15,23,42,.03)}
.save-db-card-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:8px}
.save-db-card-head.compact{margin-bottom:6px}
.save-db-card-head h5{margin:0;font-size:13px;color:#0f172a}
.save-db-card-head p{margin:2px 0 0;font-size:12px;color:#64748b}
.save-db-config-card .save-db-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;align-items:start}
.save-db-grid .prop-field{margin:0}
.save-db-grid .prop-field,.save-db-grid label.prop-field{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:#475569}
.save-db-grid .prop-field input,.save-db-grid .prop-field select,.save-db-grid .combo-line input,.save-db-grid .combo-line select{min-height:36px;border-radius:10px}
.save-db-grid .combo-line{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.save-db-toggle-row{grid-column:1/-1;display:grid;grid-template-columns:minmax(260px,auto) 1fr;gap:10px 14px;align-items:center;padding:10px 12px;border:1px solid #dbe3f0;border-radius:12px;background:#f8fafc}
.save-db-check{display:inline-flex;align-items:center;gap:10px;font-size:13px;font-weight:600;color:#334155;white-space:nowrap;line-height:1.25}
.save-db-check input{margin:0;width:16px;height:16px;flex:0 0 16px;accent-color:var(--accent,#2563eb)}
.save-db-hint{margin:0;font-size:12px;color:#64748b}
.save-db-two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.save-db-option-card.hidden,.save-db-grid label.hidden{display:none}
.save-db-option-list{display:grid;gap:8px}
.save-db-option-row{display:grid;grid-template-columns:18px 1fr;gap:10px;align-items:start;padding:10px 12px;border:1px solid #dbe3f0;border-radius:12px;background:#fff;cursor:pointer}
.save-db-option-row:hover{border-color:#bfd0ea;background:#fbfdff}
.save-db-option-row input{margin:0;width:16px;height:16px;accent-color:var(--accent,#2563eb);transform:translateY(2px)}
.save-db-option-copy{display:grid;gap:3px}
.save-db-option-title{font-size:13px;font-weight:700;color:#0f172a;line-height:1.25}
.save-db-option-desc{font-size:12px;color:#64748b;line-height:1.35}
.save-db-source-hint{margin:0;padding:0 2px;font-size:12px;color:#475569}
.save-db-bind-wrap{background:linear-gradient(180deg,#fffaf3,#fff7ed)}
.save-db-status-card{display:grid;gap:10px}
.save-db-meta{display:grid;grid-template-columns:1.3fr .95fr;gap:10px}
#saveDbLayerInfo,#saveDbExistingInfo{padding:10px 12px;border:1px solid #dbe3f0;border-radius:12px;background:#fff}
.save-db-meta-kicker{margin:0 0 4px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#64748b}
.save-db-meta-main{font-size:14px;font-weight:700;line-height:1.35;color:#0f172a;word-break:break-word}
.save-db-meta-list{display:grid;gap:6px;margin-top:8px}
.save-db-meta-list.compact{gap:5px}
.save-db-meta-row{display:grid;grid-template-columns:minmax(110px,140px) 1fr;gap:10px;align-items:center}
.save-db-meta-label{font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#64748b}
.save-db-meta-sub{margin-top:2px;font-size:12px;line-height:1.45;color:#64748b}
.save-db-state{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border-radius:999px;border:1px solid #dbe3f0;background:#f8fafc;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}
.save-db-state.exists{color:#9a3412;border-color:#fdba74;background:#fff7ed}
.save-db-state.new{color:#166534;border-color:#86efac;background:#f0fdf4}
.save-db-preview-title{font-size:12px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#64748b}
.save-db-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px}
.save-db-preview-item{display:grid;gap:2px}
.save-db-preview-label{font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#64748b}
.save-db-preview-item strong{font-size:13px;line-height:1.35;color:#0f172a;word-break:break-word}
.save-db-preview-foot{padding-top:2px;font-size:12px;color:#475569;line-height:1.4}
.save-db-preview-wrap{min-height:104px;padding:10px 12px;border-radius:12px;background:#f8fafc;border:1px solid #dbe3f0}
.save-db-preview-head{display:grid;gap:8px}
.save-db-preview-badges{display:flex;flex-wrap:wrap;gap:8px}
.save-db-preview-badge{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:var(--panel,#fff);font-size:12px;font-weight:600;color:var(--muted)}
.save-db-preview-badge.mode-link{background:#ecfeff;color:#155e75;border-color:#67e8f9}
.save-db-preview-badge.mode-keep{background:#f8fafc;color:#475569;border-color:#cbd5e1}
.save-db-preview-badge.snapshot-full{background:#eff6ff;color:#1d4ed8;border-color:#93c5fd}
.save-db-preview-badge.snapshot-current{background:#fefce8;color:#854d0e;border-color:#fde68a}
.save-db-preview-badge.target-origin{background:#eef2ff;color:#4338ca;border-color:#a5b4fc}
.save-db-preview-badge.target-new{background:#f0fdf4;color:#166534;border-color:#86efac}
.save-db-preview-badge.target-overwrite{background:#fff7ed;color:#9a3412;border-color:#fdba74}
.save-db-existing-list{display:flex;flex-wrap:wrap;gap:8px;max-height:112px;overflow:auto;padding-top:2px}
.save-db-existing-pill{display:inline-flex;align-items:center;padding:4px 8px;border:1px solid var(--line);border-radius:999px;background:var(--panel,#fff);font-size:12px;color:var(--muted);line-height:1.2}
.save-db-existing-pill.match{border-color:var(--accent,#3b82f6);color:var(--accent,#3b82f6);font-weight:600}
.save-db-pk-note{font-size:12px;color:var(--muted)}
.save-db-pk-candidates{margin-top:4px}
.save-db-pk-candidates .ok{color:#166534;font-weight:600}
.save-db-pk-candidates .warn{color:#9a3412;font-weight:600}
.save-db-option-row.disabled{opacity:.55;cursor:not-allowed;background:#f8fafc}
@media (max-width: 980px){.save-db-floating{left:12px; right:12px; width:auto; min-width:0; top:86px; height:min(80vh, 820px)} .save-db-config-card .save-db-grid,.save-db-two-col,.save-db-toggle-row,.save-db-grid .combo-line,.save-db-meta,.save-db-preview-grid,.save-db-meta-row{grid-template-columns:1fr;}}

.export-floating{width:min(860px, calc(100vw - 360px)); min-width:640px; min-height:360px; height:min(74vh, 780px)}
.export-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
.export-toggle-row{grid-column:1/-1}
.export-content .save-db-two-col{align-items:start}
.export-inline-actions{display:flex;gap:8px;flex-wrap:wrap}
.export-layer-list{display:grid;gap:8px;max-height:260px;overflow:auto;padding-right:2px}
.export-layer-row{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px 12px;border:1px solid #dbe3f0;border-radius:12px;background:#fff}
.export-layer-row input{margin:0;width:16px;height:16px;accent-color:var(--accent,#2563eb);transform:translateY(2px)}
.export-layer-copy{display:grid;gap:3px;min-width:0}
.export-layer-title{font-size:13px;font-weight:700;color:#0f172a;line-height:1.25;word-break:break-word}
.export-layer-desc{font-size:12px;color:#64748b;line-height:1.35}
.export-layer-tag{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:999px;border:1px solid #dbe3f0;background:#f8fafc;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#475569}
.export-layer-tag.memory{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}
.export-layer-tag.db{background:#ecfeff;border-color:#a5f3fc;color:#155e75}
@media (max-width: 980px){.export-floating{left:12px; right:12px; width:auto; min-width:0; top:86px; height:min(82vh, 860px)} .export-grid,.export-layer-row{grid-template-columns:1fr;} .export-layer-row input{order:-1}}

.history-floating{width:min(760px, calc(100vw - 420px)); min-width:560px; min-height:320px; height:min(70vh, 760px)}
.history-content{gap:12px}
.history-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px; min-height:0; flex:1 1 auto}
.history-list{display:flex; flex-direction:column; gap:8px; min-height:180px; max-height:100%; overflow:auto; padding-right:4px}
.history-entry{display:flex; flex-direction:column; gap:6px; width:100%; text-align:left; border:1px solid var(--border,#d7dde6); border-radius:12px; background:var(--panel,#fff); padding:10px 12px; cursor:pointer}
.history-entry:hover{border-color:var(--accent,#2d6cdf); box-shadow:0 4px 14px rgba(0,0,0,.08)}
.history-entry.active{border-color:var(--accent,#2d6cdf); box-shadow:0 0 0 2px color-mix(in srgb, var(--accent,#2d6cdf) 18%, transparent)}
.history-entry-top{display:flex; align-items:center; justify-content:space-between; gap:8px}
.history-entry-step{font-size:.8rem; color:var(--muted,#6c7788)}
.history-entry-sub{font-size:.85rem; color:var(--muted,#6c7788)}
.history-empty{padding:14px; border:1px dashed var(--border,#d7dde6); border-radius:12px; color:var(--muted,#6c7788); background:rgba(127,127,127,.04)}
@media (max-width: 980px){.history-floating{left:12px; right:12px; width:auto; min-width:0; top:86px; height:min(82vh, 860px)} .history-grid{grid-template-columns:1fr;}}

.history-toolbar{display:grid;grid-template-columns:160px minmax(220px,340px) 1fr;gap:10px;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid var(--border,#d7dde6)}
.history-filter-select{min-width:0}
.history-entry-layers{display:flex;flex-wrap:wrap;gap:6px}
.history-layer-chip{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:999px;background:rgba(45,108,223,.08);color:var(--text,#243447);font-size:.78rem;border:1px solid rgba(45,108,223,.18)}
.history-layer-chip.muted{background:rgba(127,127,127,.08);border-color:rgba(127,127,127,.14)}
.history-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 8px;border-radius:999px;background:var(--accent,#2d6cdf);color:#fff;font-size:.78rem;font-weight:700}
@media (max-width: 980px){.history-toolbar{grid-template-columns:1fr;align-items:stretch}}

.history-detail-card{min-height:180px}
.history-detail{display:flex;flex-direction:column;gap:10px;min-height:120px}
.history-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.history-kind-badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;background:rgba(45,108,223,.08);border:1px solid rgba(45,108,223,.18);color:var(--text,#243447);font-size:.78rem;font-weight:700}
.history-detail-chips{margin-top:2px}
.history-detail-table{border-top:1px solid var(--border,#d7dde6);padding-top:10px}
.history-detail-actions{display:flex;justify-content:flex-end;margin-top:4px}
.save-db-meta-soft{opacity:.55;font-weight:700}


.print-floating{min-width:780px;max-width:min(92vw,980px);}
.print-content{min-width:780px;}
.print-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:14px;align-items:start;}
.print-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.print-col-span-2{grid-column:span 2;}
.print-inline-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.print-toggle-row{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:12px;}
.print-summary-box{display:grid;gap:8px;}
.print-summary-box .prop-help{margin:0;}
.print-summary-kv{display:grid;grid-template-columns:1fr auto;gap:8px 14px;font-size:13px;align-items:center;}
.print-summary-kv .k{color:#5f6b7a;}
.print-summary-kv .v{font-weight:700;color:#18212f;}
.print-coverage-box{margin-top:10px;line-height:1.45;}
.print-frame-preview{margin-top:12px;border:1px solid var(--line,#d9dee6);border-radius:12px;background:linear-gradient(180deg,#f7f9fc,#eef2f7);min-height:220px;position:relative;overflow:hidden;}
.print-frame-preview::before{content:'';position:absolute;inset:18px;border:1px solid rgba(24,33,47,.12);border-radius:10px;background:#fff;box-shadow:inset 0 0 0 1px rgba(24,33,47,.03);}
.print-frame-preview .page{position:absolute;inset:18px;border-radius:10px;}
.print-frame-preview .header{position:absolute;left:14px;right:14px;top:14px;border-radius:8px;background:rgba(24,33,47,.05);}
.print-frame-preview .footer{position:absolute;left:14px;right:14px;bottom:14px;border-radius:8px;background:rgba(24,33,47,.05);}
.print-frame-preview .map{position:absolute;left:14px;right:14px;border-radius:8px;background:repeating-linear-gradient(0deg,rgba(64,122,255,.08),rgba(64,122,255,.08) 1px,transparent 1px,transparent 20px),repeating-linear-gradient(90deg,rgba(64,122,255,.08),rgba(64,122,255,.08) 1px,transparent 1px,transparent 20px),linear-gradient(180deg,rgba(92,160,114,.13),rgba(58,118,224,.10));border:1px solid rgba(24,33,47,.1);}
.print-frame-preview .map::after{content:'MAPA';position:absolute;inset:auto 0 10px 0;text-align:center;font-size:12px;font-weight:700;letter-spacing:.24em;color:#607086;}
.print-frame-preview .legend{position:absolute;right:24px;bottom:24px;width:84px;height:58px;border-radius:8px;background:rgba(255,255,255,.9);border:1px solid rgba(24,33,47,.10);box-shadow:0 4px 14px rgba(24,33,47,.08);}
.print-frame-preview .north{position:absolute;left:24px;top:24px;width:34px;height:34px;border-radius:999px;background:rgba(255,255,255,.96);border:1px solid rgba(24,33,47,.10);display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;color:#18212f;box-shadow:0 4px 14px rgba(24,33,47,.08);}
@media (max-width: 1100px){.print-layout{grid-template-columns:1fr;}.print-floating,.print-content{min-width:min(92vw,780px);}}
@media print{body.printing-map > *:not(.print-sheet-host){display:none !important;}body.printing-map{background:#fff;}body.printing-map .print-sheet-host{display:block !important;}}


/* Symbology studio */
.sym-studio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:12px}
.sym-card{background:#fff;border:1px solid #dbe2ea;border-radius:16px;padding:14px;box-shadow:0 6px 18px rgba(15,23,42,.05)}
.sym-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}
.sym-card-kicker{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#64748b;margin-bottom:2px}
.sym-card h5{margin:0;font-size:15px;color:#0f172a}
.sym-card-badge{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:999px;background:#eef2ff;color:#4338ca;font-size:11px;font-weight:700}
.sym-pro-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.range-with-output{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.range-with-output output{min-width:56px;padding:4px 8px;border-radius:999px;background:#f8fafc;border:1px solid #dbe2ea;font-size:11px;font-weight:700;color:#334155;text-align:center}
.symbol-preview-pro{background:#fff;border:1px solid #dbe2ea;border-radius:16px;box-shadow:0 8px 24px rgba(15,23,42,.05)}
.symbol-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.symbol-preview-subtitle{font-size:12px;color:#64748b}
.symbol-preview{height:150px;border:1px dashed #cbd5e1;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#f8fafc,#eef2f7)}
.style-preview-svg{width:100%;height:100%;display:block}
.sym-classes-table .sym-class-swatch svg{display:block;width:100%;height:100%;border-radius:3px}
@media (max-width: 1200px){.sym-studio{grid-template-columns:1fr 1fr}.sym-card#symMarkerCard{grid-column:1/-1}}
@media (max-width: 780px){.sym-studio{grid-template-columns:1fr}.sym-pro-grid{grid-template-columns:1fr}}


/* QGIS-like layer properties dialog */
.dialog-wide{width:min(1180px,97vw);height:min(820px,95vh);border-radius:14px;overflow:hidden}
.layer-props{display:grid;grid-template-columns:240px minmax(0,1fr);height:100%;background:#dfe3e8}
.prop-nav{background:linear-gradient(180deg,#eff2f6,#dde3ea);color:#2f3947;padding:10px;border-right:1px solid #c2cad4;gap:6px}
.prop-nav-head{padding:8px 10px 12px;border-bottom:1px solid #c7ced8;margin-bottom:8px}
.prop-nav-title{font-weight:700;font-size:15px;color:#1f2937}
.prop-tab{background:transparent;border:1px solid transparent;color:#334155;text-align:left;padding:9px 10px;border-radius:8px;cursor:pointer;font-weight:600}
.prop-tab.active,.prop-tab:hover{background:linear-gradient(180deg,#ffffff,#edf1f5);border-color:#bfc8d4;color:#111827;box-shadow:inset 0 1px 0 rgba(255,255,255,.65)}
.prop-content{background:linear-gradient(180deg,#f7f8fa,#eef1f4);padding:14px 16px 18px;display:flex;flex-direction:column;min-height:0}
.prop-section{display:none;min-height:0;overflow:auto}
.prop-section.active{display:block;flex:1 1 auto}
.form-grid label{font-size:12px;color:#334155;font-weight:600}
.form-grid input,.form-grid select{padding:7px 9px;border-radius:6px;border:1px solid #b8c2cf;background:linear-gradient(180deg,#fff,#f5f7fa);box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
.symbol-preview-wrap{margin-top:0;padding:10px;border:1px solid #bcc7d4;border-radius:6px;background:linear-gradient(180deg,#fafbfd,#f0f3f7)}
.symbol-preview-title{font-weight:700;color:#243140;margin-bottom:6px}
.symbol-preview{height:150px;border:1px solid #c2ccd7;border-radius:4px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#ffffff,#eef2f6)}
.help-box{margin-top:10px;padding:10px 12px;border:1px solid #c6cfda;border-radius:6px;background:#fff;color:#475569}
.qgis-shell{display:flex;flex-direction:column;gap:10px;min-height:0}
.qgis-toolbar-row{display:grid;grid-template-columns:1.1fr 1fr 1fr 110px 160px;gap:10px;align-items:end;padding:10px 12px;border:1px solid #c1c9d4;border-radius:8px;background:linear-gradient(180deg,#fdfefe,#eef2f6);box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.qgis-inline-field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:#334155;font-weight:700}
.qgis-inline-field input,.qgis-inline-field select{padding:7px 9px;border-radius:6px;border:1px solid #b8c2cf;background:linear-gradient(180deg,#fff,#f5f7fa)}
.qgis-inline-field.qgis-small{max-width:none}
.qgis-actions-row{margin:0;padding:0 2px 2px;align-items:center;flex-wrap:wrap}
.qgis-sym-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:12px;min-height:0}
.qgis-symbol-sidebar,.qgis-symbol-main{display:flex;flex-direction:column;gap:12px;min-height:0}
.qgis-group{border:1px solid #bfc8d4;border-radius:8px;background:linear-gradient(180deg,#fdfefe,#f1f4f8);box-shadow:inset 0 1px 0 rgba(255,255,255,.7);padding:12px}
.qgis-group-title{margin:0 0 10px;font-size:12px;font-weight:800;color:#2b3441;text-transform:uppercase;letter-spacing:.04em}
.qgis-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.qgis-span-2{grid-column:1 / -1}
.qgis-symbol-layer-list{display:grid;gap:8px;margin-bottom:12px}
.qgis-symbol-layer{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #b8c2cf;border-radius:7px;background:linear-gradient(180deg,#ffffff,#eef2f6);cursor:default;text-align:left}
.qgis-symbol-layer.active{border-color:#7da2d6;box-shadow:0 0 0 1px rgba(86,129,198,.18) inset}
.qgis-layer-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:5px;background:#e5ebf4;border:1px solid #c4cfdd;color:#304256;font-size:14px}
.qgis-symbol-layer strong{display:block;font-size:13px;color:#16202c}
.qgis-symbol-layer small{display:block;font-size:11px;color:#5f6b7a}
.qgis-preview-group{padding-bottom:12px}
.qgis-preview-box .symbol-preview{height:190px}
.qgis-preview-head{margin-bottom:8px}
.symbol-preview-subtitle{font-size:11px;color:#64748b}
.range-with-output{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
.range-with-output output{min-width:64px;padding:4px 8px;border-radius:999px;background:linear-gradient(180deg,#ffffff,#eef2f6);border:1px solid #c7d0dc;font-size:11px;font-weight:700;color:#334155;text-align:center}
.sym-actions-row{display:flex;justify-content:flex-start;gap:8px;flex-wrap:wrap}
.sym-classes-table{display:grid;gap:6px;max-height:280px;overflow:auto}
.sym-class-row{display:grid;grid-template-columns:28px 18px minmax(120px,1fr) minmax(140px,1fr) 86px 34px;gap:8px;align-items:center;padding:7px 8px;border:1px solid #c7d0db;border-radius:7px;background:linear-gradient(180deg,#ffffff,#f4f7fa)}
.sym-class-head{display:grid;grid-template-columns:28px 18px minmax(120px,1fr) minmax(140px,1fr) 86px 34px;gap:8px;padding:4px 8px;font-size:11px;color:#5b6776;font-weight:800;text-transform:uppercase}
.sym-class-row .class-label-edit{width:100%;padding:6px 8px;border:1px solid #bcc7d4;border-radius:6px;background:#fff}
.sym-class-row .icon-btn{width:28px;height:28px;border:1px solid #c2cad5;background:linear-gradient(180deg,#fff,#eef2f6);border-radius:7px;cursor:pointer}
.sym-class-row .class-color{width:100%;padding:0;border:none;background:transparent;height:28px}
.checkline.compact{padding-top:0;margin-left:2px;font-size:12px;color:#334155;font-weight:600}
.info-grid .v{background:linear-gradient(180deg,#fff,#f5f7fa);border:1px solid #c7d0db;border-radius:6px;padding:8px 10px}
@media (max-width: 1100px){.dialog-wide{width:min(98vw,1180px);height:min(94vh,900px)}.layer-props{grid-template-columns:210px minmax(0,1fr)}.qgis-toolbar-row{grid-template-columns:1fr 1fr}.qgis-sym-layout{grid-template-columns:1fr}}
@media (max-width: 780px){.layer-props{grid-template-columns:1fr}.prop-nav{border-right:none;border-bottom:1px solid #c2cad4}.qgis-toolbar-row,.qgis-form-grid{grid-template-columns:1fr}.qgis-sym-layout{grid-template-columns:1fr}}


/* QGIS symbology dialog v2 */
.qgis-shell-v2{display:flex;flex-direction:column;gap:10px;height:100%;background:#eef1f5}
.qgis-toolbar-row-top,.qgis-actions-row-top{background:linear-gradient(180deg,#f7f8fa,#e7ebf0);border:1px solid #b8c2cf;border-radius:6px;padding:8px}
.qgis-sym-layout-v2{display:grid;grid-template-columns:380px minmax(0,1fr);gap:12px;min-height:0;flex:1}
.qgis-symbol-sidebar-v2,.qgis-symbol-main-v2{min-height:0}
.qgis-group{background:linear-gradient(180deg,#fbfcfd,#edf1f5);border:1px solid #b9c3cf;border-radius:6px;box-shadow:inset 0 1px 0 rgba(255,255,255,.65)}
.qgis-group-compact{padding:10px}
.qgis-group-title{font-size:12px;font-weight:700;color:#26323f;letter-spacing:.02em;text-transform:none;margin-bottom:8px}
.qgis-tree-toolbar{display:flex;gap:6px;margin-bottom:8px}
.qgis-tree-btn{width:28px;height:28px;border-radius:4px;background:linear-gradient(180deg,#ffffff,#e6ebf2);border:1px solid #bac4d0;color:#607080}
.qgis-symbol-tree{display:grid;gap:6px}
.qgis-symbol-layer{border-radius:4px;border:1px solid #b4bfcb;background:linear-gradient(180deg,#ffffff,#e9eef4);padding:7px 8px;align-items:center}
.qgis-symbol-layer.qgis-symbol-root{font-weight:600}
.qgis-symbol-child{margin-left:18px}
.qgis-layer-twist{width:12px;color:#5b6877;display:inline-flex;align-items:center;justify-content:center}
.qgis-layer-twist-empty{opacity:0}
.qgis-layer-icon{width:16px;display:inline-flex;justify-content:center;font-size:13px;color:#3f5f8d}
.qgis-symbol-layer strong{font-size:12px}
.qgis-symbol-layer small{font-size:11px;color:#5d6978}
.qgis-preview-box{padding:10px;border-radius:4px;background:linear-gradient(180deg,#ffffff,#eef2f6);border:1px solid #b9c3cf}
.qgis-preview-head{margin-bottom:8px}
.qgis-preview-chip{display:inline-flex;align-items:center;border:1px solid #b7c2cf;border-radius:999px;padding:3px 8px;font-size:11px;background:#fff;color:#425063}
.qgis-preset-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.qgis-preset{display:flex;align-items:center;gap:8px;padding:7px;border:1px solid #bbc5d0;border-radius:4px;background:linear-gradient(180deg,#ffffff,#e9eef4);font-size:11px;text-align:left;color:#2f3a46}
.qgis-preset.active,.qgis-line-preset.active{border-color:#5c8ccf;box-shadow:0 0 0 1px rgba(92,140,207,.2) inset;background:linear-gradient(180deg,#ffffff,#edf4ff)}
.qgis-preset-swatch{width:28px;height:18px;border:1px solid #8e99a5;border-radius:2px;background:#fff;position:relative;flex:0 0 auto}
.qgis-swatch-solid{background:#9c27b0}
.qgis-swatch-none{background:linear-gradient(135deg,transparent 0 46%,#a0a9b5 46% 54%,transparent 54% 100%)}
.qgis-swatch-hatch{background:repeating-linear-gradient(135deg,#5f6f7f 0 2px,#fff 2px 7px)}
.qgis-swatch-cross{background:
linear-gradient(90deg,transparent 0 46%,#5f6f7f 46% 54%,transparent 54% 100%),
linear-gradient(0deg,transparent 0 46%,#5f6f7f 46% 54%,transparent 54% 100%);background-size:10px 10px}
.qgis-swatch-diag{background:
repeating-linear-gradient(45deg,#5f6f7f 0 2px,transparent 2px 8px),
repeating-linear-gradient(-45deg,#5f6f7f 0 2px,transparent 2px 8px)}
.qgis-swatch-dots{background:radial-gradient(circle at 5px 5px,#5f6f7f 0 2px,transparent 2.4px) 0 0/10px 10px,#fff}
.qgis-swatch-squares{background:linear-gradient(#fff,#fff),
linear-gradient(90deg,transparent 0 32%,#5f6f7f 32% 68%,transparent 68%),
linear-gradient(0deg,transparent 0 32%,#5f6f7f 32% 68%,transparent 68%);background-size:100% 100%,10px 10px,10px 10px;background-position:0 0,0 0,0 0}
.qgis-swatch-marker-fill{background:radial-gradient(circle at 7px 5px,#5f6f7f 0 2px,transparent 2.4px),radial-gradient(circle at 20px 12px,#5f6f7f 0 2px,transparent 2.4px),#fff}
.qgis-line-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:10px}
.qgis-line-preset{display:flex;align-items:center;gap:8px;padding:7px 8px;border:1px solid #bbc5d0;border-radius:4px;background:linear-gradient(180deg,#fff,#e9eef4);font-size:11px;color:#2f3a46;text-align:left}
.qgis-line-swatch{display:block;width:40px;height:0;border-top:2px solid #344252;position:relative;flex:0 0 auto}
.qgis-line-dash{border-top-style:dashed}
.qgis-line-dot{border-top-style:dotted}
.qgis-line-dashdot{background:linear-gradient(90deg,#344252 0 10px,transparent 10px 14px,#344252 14px 16px,transparent 16px 22px,#344252 22px 32px,transparent 32px 40px);height:2px;border-top:none;top:-1px}
.qgis-line-dashdotdot{background:linear-gradient(90deg,#344252 0 10px,transparent 10px 14px,#344252 14px 16px,transparent 16px 20px,#344252 20px 22px,transparent 22px 28px,#344252 28px 38px,transparent 38px 40px);height:2px;border-top:none;top:-1px}
.qgis-line-custom{background:linear-gradient(90deg,#344252 0 8px,transparent 8px 13px,#344252 13px 18px,transparent 18px 22px,#344252 22px 24px,transparent 24px 28px,#344252 28px 36px,transparent 36px 40px);height:2px;border-top:none;top:-1px}
.qgis-form-grid-head{grid-template-columns:240px 1fr}
.qgis-inline-note{align-self:end;min-height:38px;display:flex;align-items:center;padding:8px 10px;background:#f7f9fb;border:1px solid #ccd5df;border-radius:4px;color:#5c6a79;font-size:12px}
.qgis-symbol-main-v2{display:flex;flex-direction:column;gap:12px;align-items:stretch}
.qgis-shell-v2 .form-grid label{font-size:12px;color:#243140}
.qgis-shell-v2 input[type="color"]{width:100%;height:34px;border:1px solid #b9c3cf;border-radius:4px;padding:2px;background:#fff}
.qgis-shell-v2 select,.qgis-shell-v2 input[type="text"],.qgis-shell-v2 input[type="number"]{height:34px;border:1px solid #b9c3cf;border-radius:4px;background:#fff;padding:0 10px}
.qgis-shell-v2 input[type="range"]{width:100%}
.qgis-shell-v2 .range-with-output{display:grid;grid-template-columns:minmax(0,2.6fr) minmax(72px,84px);align-items:center;gap:8px}
.qgis-shell-v2 .range-with-output output{min-width:56px;padding:4px 6px;border:1px solid #cad3dd;border-radius:4px;background:#fff;text-align:right;font-size:11px;color:#435061}
.qgis-shell-v2 .help-box{border-radius:4px;border:1px solid #c4ced9;background:#fafcff}
#symClassesTable{border-top:1px solid #cdd5de;padding-top:8px}
@media (max-width: 1220px){.qgis-sym-layout-v2{grid-template-columns:1fr}.qgis-form-grid-head{grid-template-columns:1fr}.qgis-line-presets{grid-template-columns:repeat(2,minmax(0,1fr))}}


.qgis-tree-toolbar .qgis-tree-btn{cursor:pointer}
.qgis-tree-toolbar .qgis-tree-btn:disabled{cursor:not-allowed;opacity:.55}
.qgis-symbol-layer{display:flex;width:100%;cursor:pointer;text-align:left;gap:8px;min-width:0}
.qgis-symbol-layer.qgis-symbol-root{cursor:default}
.qgis-symbol-layer .qgis-layer-meta{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}
.qgis-symbol-layer .qgis-layer-meta strong,.qgis-symbol-layer .qgis-layer-meta small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qgis-symbol-child.active{border-color:#5c8ccf;box-shadow:0 0 0 1px rgba(92,140,207,.2) inset;background:linear-gradient(180deg,#ffffff,#edf4ff)}
.qgis-symbol-layer-muted{opacity:.72}
.qgis-form-grid-head .qgis-span-2{grid-column:1 / -1}


.sym-preview-stack{position:relative;width:100%;height:100%}
.sym-preview-layer{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.sym-preview-layer svg{width:100%;height:100%}


.qgis-form-grid-head-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.qgis-span-3{grid-column:span 3}
.qgis-layer-enabled-check .qgis-checkline{display:flex;align-items:center;gap:8px;min-height:38px;padding:0 10px;border:1px solid #bcc7d4;border-radius:4px;background:linear-gradient(180deg,#fff,#eef2f6)}
.qgis-layer-toggle{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1px solid #9aa7b7;border-radius:3px;background:#fff;color:#1f5aa8;font-size:11px;cursor:pointer;flex:0 0 auto}
.qgis-symbol-layer-muted .qgis-layer-toggle{color:#7f8da0;background:#f1f4f7}
.qgis-library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.qgis-library-item{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:10px;border:1px solid #b9c3cf;border-radius:4px;background:linear-gradient(180deg,#fff,#edf2f7);cursor:pointer;text-align:left;min-height:108px}
.qgis-library-item:hover{border-color:#7da2d6;box-shadow:0 0 0 1px rgba(86,129,198,.14) inset}
.qgis-library-item strong{font-size:12px;color:#1b2836}
.qgis-library-item small{font-size:11px;color:#607080}

.qgis-symbol-gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.qgis-symbol-gallery-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 6px;border:1px solid #b9c3cf;border-radius:4px;background:linear-gradient(180deg,#fff,#edf2f7);cursor:pointer;min-height:78px}
.qgis-symbol-gallery-btn:hover{border-color:#7da2d6;box-shadow:0 0 0 1px rgba(86,129,198,.14) inset}
.qgis-symbol-gallery-btn.active{border-color:#2d6cdf;box-shadow:0 0 0 2px rgba(45,108,223,.18) inset;background:linear-gradient(180deg,#fdfefe,#e9f1ff)}
.qgis-symbol-gallery-btn svg{width:34px;height:34px;display:block}
.qgis-symbol-gallery-btn span{font-size:11px;color:#314255;line-height:1.05;text-align:center}
.qgis-library-item .qgis-library-swatch svg{width:100%;height:100%;display:block}

.qgis-library-swatch{display:block;width:100%;height:48px;border:1px solid #aeb9c7;border-radius:3px;background:#fff;position:relative;overflow:hidden}

.qgis-form-grid-head-4{grid-template-columns:repeat(2,minmax(0,1fr))}
.qgis-layer-advanced-grid{margin-top:10px;padding-top:10px;border-top:1px solid #d2d9e2}
.qgis-dash-editor{display:grid;gap:8px;padding:8px;border:1px solid #cad2dc;border-radius:4px;background:linear-gradient(180deg,#fff,#f3f6f9)}
.qgis-dash-presets{display:flex;flex-wrap:wrap;gap:6px}
.qgis-dash-preset{padding:5px 8px;border:1px solid #b7c1cd;border-radius:4px;background:linear-gradient(180deg,#fff,#eaf0f5);font-size:11px;color:#314152;cursor:pointer}
.qgis-dash-preset.active{border-color:#5c8ccf;box-shadow:0 0 0 1px rgba(92,140,207,.2) inset;background:linear-gradient(180deg,#fff,#edf4ff)}
.qgis-dash-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.qgis-dash-grid label{display:grid;gap:4px;font-size:11px;color:#4a5868}
.qgis-tree-badge{display:inline-flex;align-items:center;gap:4px;padding:1px 6px;border:1px solid #c0c9d4;border-radius:999px;background:#fff;font-size:10px;color:#556577}
.qgis-tree-meta-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.qgis-tree-detail-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:4px;min-height:18px}
.qgis-tree-color-chip{display:inline-block;width:18px;height:12px;border:1px solid #91a0b1;border-radius:999px;background:var(--chip, transparent);box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.qgis-tree-color-chip.pattern{position:relative}
.qgis-tree-color-chip.pattern::after{content:"";position:absolute;inset:2px;border-top:1.2px solid rgba(255,255,255,.95);transform:rotate(-25deg)}
.qgis-tree-color-chip.stroke{border-width:2px}
.qgis-layer-name-input{min-width:0;width:100%}
.qgis-preview-box .symbol-preview{position:relative}
@media (max-width: 1100px){.qgis-form-grid-head-4,.qgis-dash-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}


.qgis-layer-summary{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}
.qgis-summary-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid #d5dbe7;border-radius:999px;background:linear-gradient(180deg,#fff,#f4f6fa);font-size:12px;color:#334155;box-shadow:0 1px 2px rgba(15,23,42,.06)}
.qgis-summary-chip strong{font-size:11px;color:#64748b;font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.qgis-symbol-layer .qgis-layer-meta small{display:flex;flex-wrap:wrap;gap:4px}
#symMarkerRotateWrap{align-self:end;padding-top:22px}

.range-with-output .range-output-input{width:100%;min-width:0;padding:4px 6px;border:1px solid #cad3dd;border-radius:4px;background:#fff;text-align:right;font-size:11px;color:#435061}
.range-with-output .range-output-input:focus{outline:none;border-color:#7c8ea5;box-shadow:0 0 0 2px rgba(124,142,165,.15)}


/* v8.4 fixes */
.qgis-layer-advanced-grid label{display:grid;gap:6px}
.tree-row .icon{width:36px;min-width:36px;flex:0 0 36px;overflow:visible}
.tree-row .icon .sym-preview-stack{position:relative;display:block;width:32px;height:20px}
.tree-row .icon .sym-preview-layer{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.tree-row .icon .sym-preview-layer svg{overflow:visible}
.tree-row .icon .style-swatch,.tree-row .icon .legend-icon,.tree-row .icon .legend-poly,.tree-row .icon .legend-line,.tree-row .icon .legend-point{display:inline-flex}
.tree-row .icon .style-swatch{width:32px;height:20px}
.sym-preview-stack-toc{border-radius:4px;background:#fff;box-shadow:inset 0 0 0 1px rgba(104,120,144,.35)}
.sym-preview-layer-toc{padding:1px}
@media (max-width: 1100px){.qgis-form-grid-head-4{grid-template-columns:repeat(2,minmax(0,1fr))}}

.toc-symbol-icon{display:inline-flex;align-items:center;justify-content:center;width:15px;height:12px;vertical-align:middle;position:relative}
.toc-symbol-stack{position:relative;overflow:visible}
.toc-symbol-layer{position:absolute;inset:0;display:block}
.toc-symbol-layer{position:absolute;inset:0;display:block}
.toc-symbol-layer .toc-symbol-svg{display:block;width:15px;height:12px;overflow:visible}
.tree-row .icon .toc-symbol-icon{width:15px;height:12px}
.tree-row .icon .toc-symbol-layer .toc-symbol-svg{width:15px;height:12px}
.map-legend-item .toc-symbol-icon{width:22px;height:16px}
.map-legend-item .toc-symbol-layer .toc-symbol-svg{width:22px;height:16px}

.qgis-library-item.is-disabled{opacity:.45;cursor:not-allowed}
.qgis-library-stack{position:relative;display:block;width:100%;height:100%}
.qgis-library-layer{position:absolute;inset:0;display:block}
.qgis-library-layer svg{width:100%;height:100%;display:block}

.qgis-tree-toolbar-pro{display:grid;grid-template-columns:auto minmax(180px,1fr) auto auto;gap:6px;align-items:center}
.qgis-tree-addtype{display:grid;grid-template-columns:40px minmax(120px,1fr);align-items:center;gap:6px;min-width:0;min-height:28px;padding:0 6px;height:28px;border:1px solid #bac4d0;border-radius:4px;background:linear-gradient(180deg,#ffffff,#edf2f7);font-size:11px;color:#5d6978}
.qgis-tree-addtype span{font-weight:600;white-space:nowrap}
.qgis-tree-addtype select{min-width:0;height:22px;border:1px solid #c8d0da;border-radius:3px;background:#fff;font-size:11px;padding:0 4px}
.qgis-layer-swatch{display:inline-flex;align-items:center;justify-content:center;width:42px;height:26px;border:1px solid #c2ccd7;border-radius:4px;background:#fff;overflow:hidden;flex:0 0 42px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.qgis-layer-swatch-detailed{width:64px;height:40px;flex:0 0 64px;border-color:#aeb9c7;border-radius:5px;background:linear-gradient(180deg,#fff,#f4f7fb)}
.qgis-layer-swatch .toc-symbol-svg{width:38px;height:24px;display:block}
.qgis-layer-swatch-detailed .toc-symbol-svg{width:58px;height:36px;display:block}
.qgis-layer-name-input{width:100%;min-width:0;height:24px;border:1px solid #9ab2cf;border-radius:4px;background:#fff;padding:0 6px;font-size:12px;font-weight:600;color:#18222f}
.qgis-symbol-layer .qgis-layer-meta strong.qgis-layer-name-strong{display:flex;align-items:center;gap:6px}
.qgis-layer-inline-note{font-size:10px;color:#617285;text-transform:uppercase;letter-spacing:.02em}

.qgis-tree-toolbar-pro > :nth-child(5){grid-column:3;grid-row:2}
.qgis-tree-toolbar-pro > :nth-child(6){grid-column:4;grid-row:2}
.qgis-symbol-tree{display:grid;gap:8px}
.qgis-symbol-child{padding:10px 10px 9px 8px}



/* === v10.2 stability patch === */
.sym-split-host{display:grid !important;grid-template-columns:var(--sym-left-width,340px) 8px minmax(0,1fr);gap:12px;align-items:start}
.sym-dialog-splitter{width:8px;border-radius:999px;min-height:100%;background:linear-gradient(180deg,#d7dce4,#bcc5d1)}
.dragging-splitter *{user-select:none !important}
.sym-collapse-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0;margin:0 0 10px;background:none;border:none;color:#2b3441;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;cursor:pointer}
.sym-collapsible.is-collapsed{padding-bottom:10px}
.sym-collapsible.is-collapsed .sym-collapse-toggle{margin-bottom:0}
.sym-collapsible .sym-collapse-caret{transition:transform .18s ease}
.sym-collapsible.is-collapsed .sym-collapse-caret{transform:rotate(-90deg)}
.sym-fav-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.sym-fav-list{display:grid;gap:8px}
.sym-fav-item{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px;border:1px solid #c7d0db;border-radius:8px;background:linear-gradient(180deg,#fff,#f4f7fa)}
.sym-fav-item.disabled{opacity:.7}
.sym-fav-swatch{display:flex;align-items:center;justify-content:center;width:48px;height:28px;border:1px solid #c7d0db;border-radius:6px;background:#fff}
.sym-fav-meta{min-width:0}
.sym-fav-meta strong{display:block;font-size:13px;color:#16202c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sym-fav-meta small{display:block;font-size:11px;color:#64748b}
.sym-fav-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}

.ctx-item.disabled{opacity:.55;cursor:default}
.ctx-item.disabled:hover{background:transparent}


.tree-empty{padding:10px 12px;color:#6b7280;font-size:12px}
.tree-row.drag-over-before{box-shadow:inset 0 2px 0 #2c6af2;background:#eef4ff}
.tree-row.drag-over-after{box-shadow:inset 0 -2px 0 #2c6af2;background:#eef4ff}
.tree-row.drag-over-inside{outline:2px dashed var(--accent);outline-offset:-2px;background:#eef4ff}
.ctx-item.disabled{opacity:.45;pointer-events:none}
.ctx-item.danger{color:#9f1d1d}
.ctx-item-icon{width:18px;display:inline-flex;align-items:center;justify-content:center}
.ctx-item-label{flex:1}


.tag{display:none!important}
.tree-row.drag-over-before{box-shadow: inset 0 2px 0 var(--accent); background:#eef4ff}
.tree-row.drag-over-after{box-shadow: inset 0 -2px 0 var(--accent); background:#eef4ff}
.tree-row.drag-over-inside{outline:2px dashed var(--accent); outline-offset:-2px; background:#eef4ff}
.ctx-item.disabled{opacity:.45;pointer-events:none}
.ctx-item.danger{color:#a12222}
.ctx-item-icon{width:18px;display:inline-flex;justify-content:center}
#catalogTree .tree-row, #tocTree .tree-row{min-height:26px}

.map-scale{position:absolute;left:12px;bottom:42px;z-index:4;min-width:86px;padding:4px 10px;border:1px solid #cfd6e3;border-radius:999px;background:rgba(255,255,255,.92);box-shadow:0 4px 14px rgba(15,23,42,.12);font:700 12px/1 system-ui,sans-serif;color:#344054;text-align:center;pointer-events:none}

.properties .prop-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.properties .prop-legend-preview{display:grid;gap:6px;padding:10px;border:1px solid #d8dee7;border-radius:12px;background:#fff}
.properties .prop-legend-row{display:flex;align-items:center;gap:8px;font-size:12px}
.properties .prop-legend-swatch{width:18px;height:14px;border:2px solid #334155;border-radius:4px;display:inline-block;flex:0 0 auto}
.properties .identify-nav{justify-content:space-between;align-items:center;flex-wrap:wrap}
@media (max-width: 980px){.properties .prop-cols-2{grid-template-columns:1fr}}


.dialog .properties.prop-dialog-host{position:static;top:auto;right:auto;width:auto;max-width:none;max-height:none;height:100%;overflow:hidden;background:transparent;border:none;border-radius:0;box-shadow:none;padding:0}
.dialog .properties.prop-dialog-host.hidden{display:none}
.dialog-wide.hidden{display:none}
.prop-dialog-form{display:flex;flex-direction:column;gap:12px;min-height:0;height:100%}
.prop-dialog-form .prop-section{background:transparent;min-height:0;overflow:auto;padding-right:2px}
.prop-dialog-form .prop-section.active{display:block}
.prop-dialog-form .prop-head{margin-bottom:0}
.qgis-form-grid-head-4{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.qgis-form-grid-head,.qgis-form-grid-head-4{align-items:end}
.qgis-form-grid-head label,.qgis-form-grid-head-4 label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#243140}
.qgis-form-grid-head input,.qgis-form-grid-head select,.qgis-form-grid-head-4 input,.qgis-form-grid-head-4 select{width:100%}
.prop-dialog-host .prop-help{margin:0}
@media (max-width: 780px){.qgis-form-grid-head-4{grid-template-columns:1fr}}




/* v28 property overlay window */
.prop-window-overlay{position:fixed;inset:0;z-index:1200;background:rgba(15,23,42,.22)}
.prop-window-overlay.hidden{display:none}
.prop-window-overlay .prop-dialog-host{position:absolute;inset:0;width:auto;max-width:none;max-height:none;height:auto;overflow:visible;background:transparent;border:none;border-radius:0;box-shadow:none;padding:0}

.dialog-window-host{position:fixed;inset:0;width:auto;height:auto;max-width:none;max-height:none;padding:0;border:none;background:transparent;overflow:visible}
.dialog-window-host::backdrop{background:transparent;backdrop-filter:none}
html[data-theme="dark"] .dialog-window-host::backdrop{background:transparent;backdrop-filter:none}
.dialog-window-host .prop-dialog-host{position:absolute;inset:0;width:auto;max-width:none;max-height:none;height:auto;overflow:visible;background:transparent;border:none;border-radius:0;box-shadow:none;padding:0}
.db-modal-window-shell{min-width:720px;min-height:520px;width:min(calc(100vw - 28px),960px);height:min(calc(100vh - 28px),680px)}
.db-modal-window-shell-create{min-width:980px;min-height:720px;width:min(calc(100vw - 28px),1240px);height:min(calc(100vh - 28px),860px)}
.db-modal-window-shell-schema{min-width:1040px;min-height:760px;width:min(calc(100vw - 28px),1360px);height:min(calc(100vh - 28px),940px)}
.db-modal-window-shell-compact{min-width:720px;min-height:520px;width:min(calc(100vw - 28px),780px);height:min(calc(100vh - 28px),560px)}
.db-modal-window-body{position:relative;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.db-modal-window-body > :is(.db-object-dialog,.schema-designer-dialog,.db-conn-window-body){flex:1 1 auto;height:100%;min-height:0}
.db-conn-window-body{display:flex;flex-direction:column;gap:14px;overflow:auto;padding:18px}
.db-conn-window-body .grid2{grid-template-columns:repeat(2,minmax(0,1fr))}
.db-conn-window-body .dialog-actions{margin-top:auto;padding-top:6px}
.db-prop-window-titlebar .db-dialog-topbar-badge{pointer-events:none}
.db-prop-window-titlebar .prop-window-titlegroup{min-width:0}
.db-prop-window-titlebar .prop-window-titlegroup span{display:block;white-space:normal}
.db-prop-window-actions{gap:8px}
.prop-window-shell{position:absolute;display:grid;grid-template-rows:42px minmax(0,1fr);min-width:980px;min-height:680px;max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);height:860px;width:1240px;overflow:hidden;border:1px solid #b8c2cf;border-radius:14px;background:#dfe3e8;box-shadow:0 24px 60px rgba(15,23,42,.22)}
.prop-window-titlebar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 12px;background:linear-gradient(180deg,#eceff4,#d8dee6);border-bottom:1px solid #bcc6d2;cursor:move;user-select:none;touch-action:none}
.prop-window-titlegroup{display:flex;flex-direction:column;min-width:0}.prop-window-titlegroup strong{font-size:13px;color:#1f2937;line-height:1.1}.prop-window-titlegroup span{font-size:11px;color:#5b6675;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:760px}
.prop-window-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}.prop-window-actions .btn{min-width:28px;height:28px;padding:0 8px}
.prop-window-resize{position:absolute;right:4px;bottom:4px;width:18px;height:18px;cursor:nwse-resize;border-radius:4px;background:linear-gradient(135deg,transparent 0 35%,#94a3b8 35% 45%,transparent 45% 60%,#94a3b8 60% 70%,transparent 70%);z-index:20;touch-action:none}
.prop-window-shell .layer-props{height:100%;min-height:0}.prop-window-shell .prop-content{min-height:0;overflow:hidden}.prop-window-shell .prop-dialog-form{min-height:0;height:100%;overflow:hidden}.prop-window-shell .prop-section{min-height:0;overflow:auto;scrollbar-gutter:stable;background:#dfe3e8}
body.dragging-prop-window,body.dragging-prop-window *{user-select:none !important}
@media (max-width: 900px){.prop-window-shell{min-width:0;min-height:0;width:calc(100vw - 24px)!important;height:calc(100vh - 24px)!important;left:12px!important;top:12px!important}.prop-window-titlegroup span{max-width:240px}}

/* v29 symbology fidelity tweaks */
.prop-window-shell .qgis-symbol-tree{max-height:none;overflow:auto}
.prop-window-shell .qgis-layer-icon svg{width:28px;height:18px;display:block}
.prop-window-shell .qgis-symbol-layer{background:linear-gradient(180deg,#ffffff,#e9eef4);border:1px solid #b4bfcb;border-radius:4px;padding:7px 8px;display:flex;align-items:center;gap:8px;width:100%;text-align:left;min-width:0}
.prop-window-shell .qgis-symbol-root{cursor:default;font-weight:600}
.prop-window-shell .qgis-symbol-child.active{border-color:#5c8ccf;box-shadow:0 0 0 1px rgba(92,140,207,.2) inset;background:linear-gradient(180deg,#ffffff,#edf4ff)}
.prop-window-shell .qgis-tree-btn{cursor:pointer}
.prop-window-shell .qgis-tree-btn:disabled{cursor:not-allowed;opacity:.55}
.prop-window-shell .qgis-group + .qgis-group{margin-top:12px}
.prop-window-shell .qgis-preset,.prop-window-shell .qgis-line-preset{cursor:pointer}
.prop-window-shell .qgis-preset span:last-child,.prop-window-shell .qgis-line-preset span:last-child{font-weight:600}
.prop-window-shell .qgis-sym-layout-v2{grid-template-columns:340px minmax(0,1fr)}
@media (max-width: 1220px){.prop-window-shell .qgis-sym-layout-v2{grid-template-columns:1fr}}


/* v30 symbology editor fidelity */
.prop-window-shell .qgis-preview-card{display:grid;grid-template-columns:160px minmax(0,1fr);gap:14px;align-items:center;padding:12px 14px;border:1px solid #b8c2cf;border-radius:10px;background:linear-gradient(180deg,#f8fafc,#edf2f7);margin-bottom:12px}
.prop-window-shell .qgis-preview-stage{display:flex;align-items:center;justify-content:center;min-height:96px;border:1px dashed #b5c0cd;border-radius:8px;background:repeating-linear-gradient(45deg,#f8fafc 0 10px,#eef2f7 10px 20px)}
.prop-window-shell .qgis-preview-stage svg{width:92px;height:62px;display:block}
.prop-window-shell .qgis-preview-meta{display:flex;flex-direction:column;gap:4px;min-width:0}
.prop-window-shell .qgis-preview-meta strong{font-size:14px;color:#1f2937}
.prop-window-shell .qgis-preview-meta span{font-size:12px;color:#546171}
.prop-window-shell .qgis-preview-canvas{display:block;width:100%;height:100%;max-width:100%;max-height:100%;}
.prop-window-shell .qgis-preview-stage{overflow:hidden;min-width:0;min-height:96px;}
.prop-window-shell .qgis-preview-card-sticky{position:sticky;top:8px;z-index:4;align-self:start;background:linear-gradient(180deg,#f8fafc,#edf2f7);box-shadow:0 2px 0 rgba(223,227,232,.96)}
.prop-window-shell .qgis-renderer-list{display:grid;gap:6px}
.prop-window-shell .qgis-renderer-row{display:flex;align-items:center;gap:8px;font-size:12px;color:#243140}
@media (max-width: 1180px){.prop-window-shell .qgis-preview-card{grid-template-columns:1fr}.prop-window-shell .qgis-preview-stage{min-height:84px}.prop-window-shell .qgis-preview-card-sticky{position:static}}

.table-resize-handle{position:absolute;right:0;bottom:0;width:18px;height:18px;cursor:nwse-resize;z-index:4;background:linear-gradient(135deg,transparent 0 45%, #98a2b3 45% 52%, transparent 52% 66%, #98a2b3 66% 73%, transparent 73% 100%)}
.table-floating td,.table-floating th{box-sizing:border-box}
body.dragging-table-window{user-select:none !important}
body.dragging-table-window *{cursor:grabbing !important}


.snap-panel-row { display:flex; align-items:center; gap:8px; font-size:13px; }
.snap-panel-row label { min-width:72px; }
.snap-tolerance-input { width:64px; }
.snap-tolerance-value { min-width:42px; text-align:right; font-variant-numeric: tabular-nums; opacity: .85; }
.snap-priority-select { min-width: 160px; }


#btnToggleEdit.active{background:#eaf7ee;border-color:#9fd3ad;color:#1f6b35}
#btnToggleEdit.disabled{opacity:.55;cursor:not-allowed}


/* arkiva_gis_editor_v1.7.3 */
.prop-grid-table tbody tr.active{
  outline: 2px solid rgba(59,130,246,.35);
  outline-offset: -2px;
  background: rgba(59,130,246,.08);
}
.qgis-group-title-with-actions{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
.qgis-symbol-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:34px;
  min-height:28px;
  padding:2px 6px;
  border:1px solid rgba(148,163,184,.45);
  border-radius:999px;
  background: rgba(15,23,42,.04);
  cursor:pointer;
}
.qgis-symbol-chip:hover{
  background: rgba(59,130,246,.10);
  border-color: rgba(59,130,246,.45);
}


.qgis-row-symbol-cell{
  display:flex;
  align-items:center;
  gap:8px;
}
.qgis-inline-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:52px;
  padding:2px 8px;
  border-radius:999px;
  font-size:11px;
  font-weight:700;
  letter-spacing:.01em;
  border:1px solid rgba(148,163,184,.35);
  background:rgba(148,163,184,.12);
  color:#334155;
}
.qgis-inline-badge.base{
  background:rgba(148,163,184,.10);
  color:#475569;
}
.qgis-inline-badge.manual{
  background:rgba(245,158,11,.14);
  border-color:rgba(245,158,11,.35);
  color:#92400e;
}

.qgis-inline-badge.lock-color{
  background:rgba(59,130,246,.12);
  border-color:rgba(59,130,246,.30);
  color:#1d4ed8;
}
.qgis-inline-badge.lock-structure{
  background:rgba(16,185,129,.12);
  border-color:rgba(16,185,129,.30);
  color:#047857;
}


.prop-grid-table tr.qgis-bulk-sim-target td {
  background: rgba(59, 130, 246, 0.08);
}
.prop-grid-table tr.qgis-bulk-sim-change td {
  background: rgba(245, 158, 11, 0.12);
}
.prop-grid-table tr.qgis-bulk-sim-source td {
  background: rgba(16, 185, 129, 0.14);
}
.prop-grid-table tr.qgis-bulk-sim-target.qgis-bulk-sim-change td,
.prop-grid-table tr.qgis-bulk-sim-change.qgis-bulk-sim-source td {
  box-shadow: inset 3px 0 0 rgba(245, 158, 11, 0.8);
}
.prop-grid-table tr.qgis-bulk-sim-source td {
  box-shadow: inset 3px 0 0 rgba(16, 185, 129, 0.85);
}
.qgis-bulk-sim-status {
  color: #475569;
}
.qgis-bulk-sim-status.active {
  color: #0f172a;
  font-weight: 600;
}

/* v1.7.47 symbology workbench UX */
.prop-window-shell .qgis-renderer-workbench{display:grid;gap:12px}
.prop-window-shell .sym-renderer-workbench-grid{display:grid;grid-template-columns:minmax(320px,var(--sym-left-width, 1.1fr)) 10px minmax(360px,1fr);gap:14px;align-items:start}
.prop-window-shell .sym-renderer-workbench-main,.prop-window-shell .sym-renderer-workbench-side{min-width:0;display:grid;gap:12px}
.prop-window-shell .sym-renderer-workbench-splitter{align-self:stretch;min-height:100%;width:10px;border-radius:999px;background:linear-gradient(180deg,#d7dce4,#bcc5d1);cursor:col-resize;position:relative}
.prop-window-shell .sym-renderer-workbench-splitter::after{content:'';position:absolute;inset:0;border-radius:999px;transition:background .15s ease}
.prop-window-shell .sym-renderer-workbench-splitter:hover::after,.prop-window-shell .sym-renderer-workbench-splitter.is-dragging::after{background:rgba(44,106,242,.16)}
.prop-window-shell .sym-renderer-side-sticky{position:sticky;top:0;display:grid;gap:12px;padding-right:6px;background:#dfe3e8;background-clip:padding-box;z-index:3}
.prop-window-shell .sym-renderer-preview-card{margin-bottom:0}
.prop-window-shell .sym-renderer-summary-card{padding:10px 12px;border:1px solid #cfd8e3;border-radius:10px;background:linear-gradient(180deg,#fff,#f5f8fc)}
.prop-window-shell .sym-panel-details{border:1px solid #c6d0db;border-radius:10px;background:linear-gradient(180deg,#fff,#f7f9fc);overflow:hidden}
.prop-window-shell .sym-panel-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;cursor:pointer;list-style:none;font-weight:800;font-size:12px;color:#1f2937;text-transform:uppercase;letter-spacing:.04em}
.prop-window-shell .sym-panel-summary::-webkit-details-marker{display:none}
.prop-window-shell .sym-panel-summary-hint{font-size:11px;font-weight:600;text-transform:none;letter-spacing:0;color:#64748b}
.prop-window-shell .sym-panel-body{padding:0 12px 12px}
.prop-window-shell .sym-panel-details[open]>.sym-panel-summary{border-bottom:1px solid #d6dde6;background:rgba(248,250,252,.9)}
.prop-window-shell .sym-panel-details-bulk .sym-panel-body{padding-top:12px}
.prop-window-shell .sym-rows-wrap{max-height:360px;overflow:auto;border-radius:8px}
.prop-window-shell .sym-rows-wrap .prop-grid-table thead th{position:sticky;top:0;background:#f3f6fa;z-index:1}
.prop-window-shell .qgis-group-title-with-actions{align-items:flex-start}
.prop-window-shell .qgis-group-title-with-actions .qgis-inline-actions{justify-content:flex-end}
@media (max-width: 1280px){
  .prop-window-shell .sym-renderer-workbench-grid{grid-template-columns:1fr}
  .prop-window-shell .sym-renderer-workbench-splitter{display:none}
  .prop-window-shell .sym-renderer-side-sticky{position:static}
}

.prop-window-shell .sym-renderer-workbench-main{display:flex;flex-direction:column;gap:10px;min-width:0;}
.prop-window-shell .sym-panel-details-preview .sym-panel-body,.prop-window-shell .sym-panel-details-summary .sym-panel-body,.prop-window-shell .sym-panel-details-rows .sym-panel-body,.prop-window-shell .sym-panel-details-extra .sym-panel-body,.prop-window-shell .sym-panel-details-bulk .sym-panel-body{padding-top:10px;}
.prop-window-shell .sym-panel-details-preview .qgis-preview-card{margin:0;}
.prop-window-shell .sym-panel-details-summary .sym-renderer-summary-card{margin:0;}
.prop-window-shell .sym-panel-details-rows .prop-table-wrap{margin-top:0;}


/* v1.7.58 single symbol preview/layout */
.prop-window-shell .qgis-sym-layout-single-workbench{align-items:start}
.prop-window-shell .qgis-symbol-sidebar-v2-structure{min-width:0;position:sticky;top:8px;align-self:start;max-height:calc(100vh - 180px);overflow:auto;padding-right:6px;scrollbar-gutter:stable;background:#dfe3e8;z-index:3}
.prop-window-shell .qgis-symbol-main-v2-single{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;min-width:0;align-self:start}
.prop-window-shell .qgis-symbol-main-scroll{display:flex;flex-direction:column;gap:10px;min-width:0;padding-right:4px}
.prop-window-shell .qgis-preview-card-single{grid-template-columns:minmax(200px,1fr) minmax(160px,.9fr);align-items:stretch;overflow:hidden;min-width:0;padding:8px 10px;gap:10px}
.prop-window-shell .qgis-preview-stage-single{min-height:116px;max-height:152px;padding:6px;overflow:hidden}
.prop-window-shell .qgis-preview-stage-single .qgis-preview-canvas{display:block;width:100% !important;height:100% !important;max-width:100%;max-height:100%}
.prop-window-shell .qgis-preview-meta-single{display:flex;flex-direction:column;justify-content:center;gap:4px;min-width:0;overflow:hidden}
.prop-window-shell .qgis-preview-meta-single strong,.prop-window-shell .qgis-preview-meta-single span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis}
.prop-window-shell .qgis-preview-kicker{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#64748b}
@media (max-width: 1180px){
  .prop-window-shell .qgis-symbol-sidebar-v2-structure{position:static;max-height:none;overflow:visible;padding-right:0}
  .prop-window-shell .qgis-preview-card-single{grid-template-columns:1fr}
  .prop-window-shell .qgis-preview-stage-single{min-height:140px;max-height:none}
}


.tree-row[data-kind="legend"]{opacity:.92;min-height:24px}
.tree-row[data-kind="legend"] .label{font-size:12px}
.tree-row[data-kind="legend"] .tag{text-transform:uppercase;font-size:10px;letter-spacing:.02em}
.tree-row[data-kind="layer"] .tag{font-size:10px}

.tree-row .icon .sym-preview-stack, .tree-row .icon .sym-preview-layer, .tree-row .icon .toc-symbol-svg{pointer-events:none;}


/* arkiva_gis_editor_v1.7.67 - sticky layout for layer properties */
.prop-window-shell .prop-nav{
  position:sticky;
  top:0;
  align-self:start;
  height:100%;
  max-height:100%;
  overflow:auto;
}
.prop-window-shell .prop-content{
  overflow:hidden;
}
.prop-window-shell .prop-dialog-form{
  gap:10px;
}
.prop-window-shell .prop-head-sticky,
.prop-window-shell .prop-meta-sticky,
.prop-window-shell .qgis-renderer-common-sticky,
.prop-window-shell .qgis-renderer-workbench-sticky{
  position:sticky;
}
.prop-window-shell .prop-head-sticky{
  top:0;
  z-index:9;
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:nowrap;
  padding:10px 12px;
  border:1px solid #bcc6d2;
  border-radius:10px;
  background:linear-gradient(180deg,#f7f8fa,#e5e9ef);
  box-shadow:0 6px 18px rgba(15,23,42,.08);
}
.prop-window-shell .prop-head-sticky strong{font-size:14px;color:#1f2937;white-space:nowrap}
.prop-window-shell .prop-head-layer{
  min-width:0;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  font-size:13px;
  color:#5b6675;
}
.prop-window-shell .prop-meta-sticky{
  top:56px;
  z-index:8;
  margin-bottom:0;
  padding:6px 12px 8px;
  border-radius:0 0 10px 10px;
  background:rgba(240,243,247,.96);
  backdrop-filter:blur(4px);
}
.prop-window-shell .qgis-renderer-common-sticky{
  top:86px;
  z-index:7;
  margin-top:2px;
}
.prop-window-shell .qgis-renderer-workbench-sticky{
  top:170px;
  z-index:6;
  border:1px solid #b8c2cf;
  border-radius:10px;
  background:linear-gradient(180deg,#f7f8fa,#edf1f5);
  overflow:hidden;
}
.prop-window-shell .qgis-renderer-workbench-summary{
  list-style:none;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 12px;
  cursor:pointer;
  background:linear-gradient(180deg,#eef2f6,#dde5ee);
  border-bottom:1px solid #c4ccd6;
}
.prop-window-shell .qgis-renderer-workbench-summary::-webkit-details-marker{display:none}
.prop-window-shell .qgis-renderer-workbench-summary::after{
  content:'▾';
  font-size:12px;
  color:#516072;
  flex:0 0 auto;
}
.prop-window-shell .qgis-renderer-workbench-sticky:not([open]) .qgis-renderer-workbench-summary::after{content:'▸'}
.prop-window-shell .qgis-renderer-workbench-summary .qgis-group-title{margin:0}
.prop-window-shell .qgis-renderer-workbench-summary-hint{font-size:11px;color:#64748b;margin-left:auto;padding-right:8px}
.prop-window-shell .qgis-renderer-workbench-top{padding:10px 12px 12px;background:linear-gradient(180deg,#f6f8fb,#eef2f6)}

.scene3d-window-shell{min-width:680px;min-height:540px;width:680px;height:640px;}
.scene3d-window-shell .prop-dialog-form{display:flex;flex-direction:column;min-height:0;height:100%;overflow:hidden;}
.scene3d-window-shell .scene3d-dialog-body{display:flex;flex-direction:column;gap:12px;min-height:0;height:100%;overflow:auto;padding:12px;box-sizing:border-box;background:#dfe3e8;}
.scene3d-window-shell .scene3d-dialog-body .qgis-group{flex:0 0 auto;margin:0;}
.scene3d-window-shell .scene3d-dialog-body .prop-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:auto;padding-top:8px;position:sticky;bottom:0;background:linear-gradient(180deg,rgba(223,227,232,0),rgba(223,227,232,.96) 20%,rgba(223,227,232,.98));}
@media (max-width: 780px){.scene3d-window-shell .qgis-form-grid-head-4{grid-template-columns:1fr;}}

.prop-window-shell .qgis-renderer-workbench-top .qgis-form-grid-head{margin-bottom:10px}
.prop-window-shell .sym-renderer-workbench-grid{padding:0 0 12px}
.prop-window-shell .prop-section{scrollbar-gutter:stable both-edges}
.prop-window-shell .prop-nav{scrollbar-gutter:stable both-edges}
@media (max-width: 780px){
  .prop-window-shell .prop-nav{position:static;height:auto;max-height:none;overflow:visible}
  .prop-window-shell .prop-head-sticky,
  .prop-window-shell .prop-meta-sticky,
  .prop-window-shell .qgis-renderer-common-sticky,
  .prop-window-shell .qgis-renderer-workbench-sticky{position:static}
  .prop-window-shell .prop-head-sticky{flex-wrap:wrap}
}


/* arkiva_gis_editor_v1.7.78 - symbology layout: 3 stacked panels */
.prop-window-shell .prop-dialog-form{display:flex;flex-direction:column;gap:12px;min-height:0;height:100%;overflow:hidden;}
.prop-window-shell .prop-head-panel{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border:1px solid #bcc6d2;border-radius:10px;background:linear-gradient(180deg,#f7f8fa,#e5e9ef);box-shadow:0 6px 18px rgba(15,23,42,.08);}
.prop-window-shell .prop-head-panel strong{font-size:14px;color:#1f2937;white-space:nowrap;}
.prop-window-shell .prop-head-panel .prop-head-layer{margin-left:auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;color:#5b6675;}
.prop-window-shell .prop-section[data-prop-section="symbology"]{display:none;min-height:0;overflow:hidden;padding-right:0;}
.prop-window-shell .prop-section[data-prop-section="symbology"].active{display:flex;flex:1 1 auto;min-height:0;overflow:hidden;}
.prop-window-shell .prop-symbology-stack{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;min-height:0;overflow:hidden;}
.prop-window-shell .prop-renderer-panel{flex:0 0 auto;margin:0;padding:12px 14px;background:linear-gradient(180deg,#f7f8fa,#edf1f5);border:1px solid #b8c2cf;border-radius:10px;box-shadow:0 4px 14px rgba(15,23,42,.06);}
.prop-window-shell .prop-renderer-panel-grid{margin:0;}
.prop-window-shell .prop-renderer-panel-grid label{max-width:240px;}
.prop-window-shell .prop-symbology-scroll{flex:1 1 auto;min-height:0;overflow:auto;padding:0 10px 12px 0;scrollbar-gutter:stable both-edges;box-sizing:border-box;background:#dfe3e8;}
.prop-window-shell .qgis-renderer-common-sticky,.prop-window-shell .qgis-renderer-workbench-sticky,.prop-window-shell .prop-meta-sticky{position:static!important;top:auto!important;}
.prop-window-shell .qgis-renderer-workbench-panel{display:flex;flex-direction:column;gap:0;margin:0;border:1px solid #b8c2cf;border-radius:10px;background:linear-gradient(180deg,#f7f8fa,#edf1f5);overflow:hidden;}
.prop-window-shell .qgis-renderer-workbench-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:linear-gradient(180deg,#eef2f6,#dde5ee);border-bottom:1px solid #c4ccd6;}
.prop-window-shell .qgis-renderer-workbench-header .qgis-group-title{margin:0;}
.prop-window-shell .qgis-renderer-workbench-top{padding:10px 12px 12px;background:linear-gradient(180deg,#f6f8fb,#eef2f6);border-bottom:1px solid #d7dee7;}
.prop-window-shell .qgis-renderer-workbench-summary,.prop-window-shell .qgis-renderer-workbench-summary-hint{display:none!important;}
@media (max-width:780px){.prop-window-shell .prop-head-panel{flex-wrap:wrap;}.prop-window-shell .prop-head-panel .prop-head-layer{margin-left:0;width:100%;}}


.qgis-label-layout{display:grid;grid-template-columns:160px minmax(0,1fr);gap:14px;align-items:start}
.qgis-label-nav{display:flex;flex-direction:column;gap:8px;position:sticky;top:0}
.qgis-label-tab{display:flex;align-items:center;gap:8px;background:linear-gradient(180deg,#f8fafc,#eef2f6);border:1px solid #d4dde7;color:#243140;padding:10px 12px;border-radius:12px;cursor:pointer;font-weight:700;text-align:left;box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.qgis-label-tab:hover,.qgis-label-tab.active{background:linear-gradient(180deg,#ffffff,#e8f0fa);border-color:#93c5fd;color:#0f172a}
.qgis-label-panels{min-width:0}
.qgis-label-panel{display:none;gap:12px}
.qgis-label-panel.active{display:grid}
.qgis-label-editor-wrap{display:grid;grid-template-columns:minmax(260px,320px) 1fr;gap:14px;align-items:start}
.qgis-label-editor-canvas-wrap canvas{display:block;width:100%;max-width:320px;border:1px solid #b9c3cf;border-radius:10px;background:#f8fbff;box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.qgis-label-editor-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.qgis-label-editor-subtitle{font-size:12px;font-weight:700;color:#334155;margin:0 0 6px}
.qgis-label-placement-grid{display:grid;grid-template-columns:repeat(3,42px);gap:6px}
.qgis-label-placement-grid .btn,.qgis-label-nudge-grid .btn{min-width:42px;padding:8px 0;justify-content:center}
.qgis-label-placement-grid .btn.active{background:#dbeafe;border-color:#60a5fa;color:#1d4ed8}
.qgis-chip-row{display:flex;flex-wrap:wrap;gap:6px}.qgis-chip-row .btn{min-width:auto;padding:8px 10px}.qgis-chip-row .btn.active{background:#dbeafe;border-color:#60a5fa;color:#1d4ed8}.qgis-label-editor-geom-card{border:1px solid #d6dee8;border-radius:12px;padding:10px;background:#f8fbff}
.qgis-label-nudge-wrap{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:end}
.qgis-label-nudge-grid{display:grid;grid-template-columns:repeat(3,42px);gap:6px;align-items:center;justify-items:center}
.qgis-label-nudge-grid span{display:block;width:42px;height:42px}
.qgis-label-nudge-wrap label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#243140}
@media (max-width: 980px){.qgis-label-layout{grid-template-columns:1fr}.qgis-label-nav{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.qgis-label-editor-wrap{grid-template-columns:1fr}.qgis-label-editor-controls{grid-template-columns:1fr}.qgis-label-nudge-wrap{grid-template-columns:1fr}}



.process-floating{width:min(1080px, calc(100vw - 280px)); min-width:760px; min-height:420px; height:min(76vh, 840px)}
.process-toolbar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line,#d9dee6);background:linear-gradient(180deg,#f8fafc,#f2f5fa)}
.process-search{flex:1 1 auto}
.process-layout{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(270px,320px) 1fr;background:linear-gradient(180deg,#f8fafc,#f2f5fa)}
.process-tree-wrap{min-width:0;border-right:1px solid var(--line,#d9dee6);background:#fff;overflow:auto}
.process-tree{display:grid;gap:10px;padding:12px}
.process-group{display:grid;gap:8px}
.process-group-head{display:grid;grid-template-columns:16px 18px 1fr auto;align-items:center;gap:8px;width:100%;padding:8px 10px;border:1px solid #dbe3f0;border-radius:12px;background:#f8fafc;color:#1f2937;text-align:left;font:inherit;cursor:pointer}
.process-group-head:hover{border-color:#b8c6db;background:#f3f6fb}
.process-group-chevron{color:#64748b;font-size:12px}
.process-group-icon{font-size:15px;line-height:1}
.process-group-title{font-weight:700;font-size:13px}
.process-group-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;border-radius:999px;background:#e2e8f0;color:#334155;font-size:11px;font-weight:800}
.process-group-body{display:grid;gap:6px;padding-left:8px}
.process-group-body.hidden{display:none}
.process-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:flex-start;width:100%;padding:9px 10px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;text-align:left;font:inherit;cursor:pointer}
.process-row:hover{border-color:#bfd0ea;background:#f8fbff}
.process-row.active{border-color:var(--accent,#2563eb);box-shadow:0 0 0 2px rgba(37,99,235,.15);background:#eff6ff}
.process-row-copy{display:grid;gap:2px;min-width:0}
.process-row-copy strong{font-size:13px;color:#0f172a;line-height:1.25}
.process-row-copy small{font-size:11.5px;color:#64748b;line-height:1.35}
.process-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 9px;border-radius:999px;border:1px solid #dbe3f0;background:#f8fafc;font-size:10.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}
.process-badge.available{background:#ecfeff;border-color:#a5f3fc;color:#155e75}
.process-badge.native{background:#ecfdf5;border-color:#86efac;color:#166534}
.process-badge.planned{background:#fff7ed;border-color:#fdba74;color:#9a3412}
.process-badge.big{font-size:11px;padding:6px 10px}
.process-detail{min-width:0;display:flex;flex-direction:column;gap:12px;padding:14px;overflow:auto}
.process-detail-head-card,.process-help-card,.process-detail-card{border:1px solid #dbe3f0;background:#fff;border-radius:16px;padding:12px 14px;box-shadow:0 1px 2px rgba(15,23,42,.05)}
.process-detail-head-card{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.process-path{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#64748b;margin-bottom:4px}
.process-detail-head-card h3{margin:0;font-size:20px;color:#0f172a}
.process-detail-head-card p,.process-help-card,.process-status-copy p{margin:4px 0 0;color:#475569;line-height:1.45}
.process-detail-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:12px}
.process-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.process-card-head strong{font-size:13px;color:#0f172a}
.process-card-head span{font-size:11px;color:#64748b;text-transform:uppercase;font-weight:800;letter-spacing:.03em}
.process-param-list{display:grid;gap:10px}
.process-param-card{display:grid;gap:6px}
.process-param-label{font-size:12px;font-weight:700;color:#334155}
.process-param-card input,.process-param-card select{width:100%;border:1px solid #cfd6e3;border-radius:10px;padding:8px 10px;font:inherit;background:#f8fafc;color:#64748b}
.process-param-card small{font-size:11px;color:#64748b;line-height:1.35}
.process-status-copy ul{margin:10px 0 0;padding-left:18px;color:#475569;display:grid;gap:6px}
.process-status-copy strong{color:#0f172a}
.process-actions{margin-top:auto;padding-top:4px}
.process-empty{padding:14px;border:1px dashed #cbd5e1;border-radius:14px;background:#fff;color:#64748b;font-size:13px;line-height:1.45}
.process-empty.detail{min-height:120px;display:flex;align-items:center;justify-content:center}
.process-param-label .req{color:#dc2626}
.process-run-state{margin-top:12px;padding:10px 12px;border-radius:12px;border:1px solid #dbe3f0;background:#f8fafc;font-size:12px;line-height:1.45;color:#334155}
.process-run-state.success{background:#ecfdf5;border-color:#86efac;color:#166534}
.process-run-state.error{background:#fef2f2;border-color:#fca5a5;color:#991b1b}
.process-run-state.running{background:#eff6ff;border-color:#93c5fd;color:#1d4ed8}
.process-run-state.idle{background:#f8fafc;border-color:#dbe3f0;color:#475569}
.process-progress-block{margin-top:12px;padding:12px;border:1px solid #dbe3f0;border-radius:14px;background:#f8fafc;display:grid;gap:10px}
.process-progress-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:#475569}
.process-progress-head strong{font-size:12px;letter-spacing:0;text-transform:none;color:#0f172a}
.process-progress-bar{position:relative;height:12px;border-radius:999px;background:#e2e8f0;overflow:hidden}
.process-progress-bar>span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#60a5fa,#2563eb);transition:width .25s ease}
.process-log-label{font-size:12px;font-weight:700;color:#334155}
.process-log-textarea{width:100%;min-height:132px;resize:vertical;border:1px solid #cbd5e1;border-radius:12px;padding:10px 12px;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;background:#fff;color:#0f172a;white-space:pre;box-sizing:border-box}
.process-summary-block{display:grid;gap:8px;padding:10px;border:1px solid #dbe3f0;border-radius:12px;background:#fff}
.process-summary-section{display:grid;gap:6px}
.process-summary-title{font-size:11px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:#64748b}
.process-summary-grid{display:grid;gap:6px}
.process-summary-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 8px;border-radius:10px;background:#f8fafc;color:#334155;font-size:12px}
.process-summary-row strong{color:#0f172a}
.process-summary-block ul{margin:0;padding-left:18px;color:#475569;display:grid;gap:4px;font-size:12px}
@media (max-width: 1100px){.process-floating{left:12px;right:12px;width:auto;min-width:0;top:86px;height:min(82vh,860px)}.process-layout,.process-detail-grid{grid-template-columns:1fr}}

.process-schema-row{display:grid;grid-template-columns:minmax(180px,220px) 1fr;gap:8px;align-items:center}

.feature-editor-layout{grid-template-columns:280px minmax(0,1fr)}
.feature-editor-nav{display:flex;flex-direction:column;gap:10px;overflow:auto}
.feature-editor-nav-head{padding-bottom:10px}
.feature-editor-content{background:linear-gradient(180deg,#f6f8fb,#edf2f7)}
.feature-editor-form-wrap{gap:10px}
.feature-entry-panel{display:grid;gap:8px;min-height:0;overflow:hidden}
.feature-entry-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border:1px solid #c8d1dc;border-radius:10px;background:linear-gradient(180deg,#ffffff,#eef3f8);font-size:12px;color:#475569}
.feature-entry-panel-head strong{font-size:12px;color:#1f2937}
.feature-entry-list{display:grid;gap:8px;overflow:auto;padding-right:2px;min-height:0}
.feature-entry-btn{display:grid;gap:6px;padding:10px 11px;border:1px solid #c8d1dc;border-radius:12px;background:linear-gradient(180deg,#ffffff,#eef2f7);text-align:left;cursor:pointer;transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease}
.feature-entry-btn:hover{border-color:#8fb1de;box-shadow:0 10px 24px rgba(15,23,42,.1);transform:translateY(-1px)}
.feature-entry-btn.active{border-color:#4f83c2;box-shadow:0 0 0 1px rgba(79,131,194,.18) inset,0 10px 24px rgba(15,23,42,.12);background:linear-gradient(180deg,#fefefe,#e9f2ff)}
.feature-entry-main{display:grid;gap:2px;min-width:0}
.feature-entry-main strong{font-size:13px;color:#1f2937;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feature-entry-main span,.feature-entry-meta{font-size:11px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feature-editor-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.feature-editor-summary-main{display:grid;gap:4px;min-width:0}
.feature-editor-summary-main strong{font-size:16px;color:#111827}
.feature-editor-summary-meta{font-size:12px;color:#64748b}
.feature-editor-summary-badges{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.feature-field-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:999px;border:1px solid #c8d1dc;background:#fff;font-size:11px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.03em}
.feature-field-badge.key{border-color:#bfd0f1;background:#eef4ff;color:#214b8a}
.feature-field-badge.req{border-color:#f1d2ae;background:#fff7ed;color:#9a3412}
.feature-field-badge.ok{border-color:#c7ead2;background:#f0fdf4;color:#166534}
.feature-field-badge.warn{border-color:#f5d5a7;background:#fff7ed;color:#b45309}
.feature-editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid #c7d0db;border-radius:12px;background:linear-gradient(180deg,#ffffff,#eef3f8)}
.feature-editor-toolbar-left,.feature-editor-toolbar-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.feature-editor-status{padding:10px 12px;border:1px dashed #c5cfda;border-radius:10px;background:rgba(255,255,255,.72);font-size:12px;color:#475569}
.feature-editor-filterbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid #d6dee8;border-radius:12px;background:rgba(255,255,255,.82)}
.feature-search-box{display:grid;gap:5px;min-width:min(360px,100%);flex:1 1 320px;font-size:12px;font-weight:700;color:#475569}
.feature-search-box input{width:100%;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:10px 11px;font:inherit;color:#0f172a;box-sizing:border-box}
.feature-toggle-chip{display:inline-flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #c8d1dc;border-radius:999px;background:#fff;font-size:12px;color:#334155;font-weight:700}
.feature-toggle-chip input{accent-color:var(--accent)}
.feature-editor-stats{display:inline-flex;align-items:center;gap:6px;padding:10px 12px;border-radius:999px;background:#eff6ff;border:1px solid #bfdbfe;font-size:12px;font-weight:700;color:#1d4ed8}
.feature-attributes-form{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-content:start;min-width:0}
.feature-attributes-form>.feature-form-layout,.feature-attributes-form>.feature-group-tabs,.feature-attributes-form>.feature-group-panels,.feature-attributes-form>.feature-form-group,.feature-attributes-form>.feature-attributes-grid{min-width:0}
.feature-attributes-form[data-feature-layout-mode="tabs"]{display:block}
.feature-form-layout{display:grid;gap:12px;align-content:start;min-width:0}
.feature-form-layout-tabs{display:flex;flex-direction:column;align-items:stretch;gap:12px;min-width:0}
.feature-form-layout-tabs>.feature-group-tabs,.feature-form-layout-tabs>.feature-group-panels{flex:0 0 auto;min-width:0;width:100%}
.feature-form-layout-flat,.feature-form-layout-sections,.feature-form-layout-preview{min-width:0}
.feature-field-card{display:grid;gap:10px;padding:14px;border:1px solid #d3dbe5;border-radius:14px;background:linear-gradient(180deg,#ffffff,#f8fbff);box-shadow:0 5px 18px rgba(15,23,42,.04)}
.feature-field-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.feature-field-titlewrap{display:grid;gap:4px;min-width:0}
.feature-field-title{font-size:13px;font-weight:700;color:#1f2937;word-break:break-word}
.feature-field-titlewrap span{font-size:11px;color:#64748b;word-break:break-word}
.feature-field-badges{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.feature-field-control input,.feature-field-control select,.feature-field-control textarea{width:100%;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:10px 11px;font:inherit;color:#0f172a;box-sizing:border-box}
.feature-field-control .feature-color-input{padding:4px;min-height:46px;cursor:pointer}
.feature-field-control textarea{min-height:112px;resize:vertical}
.feature-field-control input[readonly],.feature-field-control textarea[readonly]{background:#f8fafc;color:#475569}
.feature-field-control select:disabled,.feature-checkbox input:disabled{cursor:not-allowed;opacity:.75}
.feature-field-control input:focus,.feature-field-control select:focus,.feature-field-control textarea:focus{outline:none;border-color:#6e9bd4;box-shadow:0 0 0 3px rgba(96,165,250,.18)}
.feature-checkbox{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid #c6cfda;border-radius:10px;background:#fff;min-height:44px}
.feature-checkbox input{width:18px;height:18px;accent-color:var(--accent)}
.feature-combobox-wrap{display:grid;gap:6px}
.feature-json-input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:12px}
.feature-field-help{font-size:11px;line-height:1.45;color:#64748b}
.feature-field-feedback{min-height:16px;font-size:11px;line-height:1.4;color:#64748b}
.feature-field-card.is-modified{border-color:#93c5fd;box-shadow:0 0 0 1px rgba(96,165,250,.18) inset,0 10px 24px rgba(59,130,246,.08)}
.feature-field-card.is-invalid{border-color:#f4a4a4;box-shadow:0 0 0 1px rgba(239,68,68,.14) inset,0 10px 24px rgba(239,68,68,.08)}
.feature-field-card.is-invalid .feature-field-feedback{color:#b91c1c;font-weight:700}
.feature-field-card.hidden{display:none}
.feature-field-card.is-condition-hidden{display:none!important}
.feature-attributes-grid{display:grid;gap:12px;align-content:start}
.feature-layout-cols-1{grid-template-columns:minmax(0,1fr)}
.feature-layout-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.feature-layout-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.feature-layout-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.feature-layout-cols-1 :is(.feature-width-auto,.feature-width-quarter,.feature-width-half,.feature-width-three-quarter,.feature-width-full){grid-column:1/-1}
.feature-layout-cols-2 :is(.feature-width-auto,.feature-width-quarter,.feature-width-half){grid-column:span 1}
.feature-layout-cols-2 :is(.feature-width-three-quarter,.feature-width-full){grid-column:1/-1}
.feature-layout-cols-3 :is(.feature-width-auto,.feature-width-quarter){grid-column:span 1}
.feature-layout-cols-3 .feature-width-half{grid-column:span 2}
.feature-layout-cols-3 :is(.feature-width-three-quarter,.feature-width-full){grid-column:1/-1}
.feature-layout-cols-4 :is(.feature-width-auto,.feature-width-quarter){grid-column:span 1}
.feature-layout-cols-4 .feature-width-half{grid-column:span 2}
.feature-layout-cols-4 .feature-width-three-quarter{grid-column:span 3}
.feature-layout-cols-4 .feature-width-full{grid-column:1/-1}
.feature-form-group{display:grid;gap:10px;padding:12px;border:1px solid #d6dee8;border-radius:14px;background:rgba(255,255,255,.58)}
.feature-form-group-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:4px}
.feature-form-group-head strong{font-size:13px;color:#0f172a}
.feature-form-group-head span{font-size:11px;color:#64748b}
.feature-group-tabs{display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;justify-content:flex-start;gap:8px;margin:0;min-width:0;width:100%;height:auto;overflow-x:auto;overflow-y:hidden;padding-bottom:2px}
.feature-group-tab{display:inline-flex;align-items:center;justify-content:flex-start;align-self:flex-start;flex:0 0 auto;gap:8px;padding:9px 12px;border:1px solid #c8d1dc;border-radius:999px;background:#fff;color:#334155;font:inherit;font-weight:700;cursor:pointer;min-height:40px;height:auto;max-width:100%;white-space:nowrap;writing-mode:horizontal-tb}
.feature-group-tab span{display:inline-flex;align-items:center;justify-content:center;min-width:18px;padding:1px 6px;border-radius:999px;background:#eef2f7;font-size:11px;color:#475569}
.feature-group-tab.active{border-color:#4f83c2;background:linear-gradient(180deg,#ffffff,#eaf2ff);box-shadow:0 0 0 1px rgba(79,131,194,.15) inset}
.feature-editor-content .feature-form-layout-tabs,.feature-attributes-form[data-feature-layout-mode="tabs"] .feature-form-layout-tabs{display:flex;flex-direction:column;align-items:stretch;gap:12px}
.feature-editor-content .feature-group-tabs-live,.feature-attributes-form[data-feature-layout-mode="tabs"] .feature-group-tabs{display:flex!important;flex-direction:row!important;flex-wrap:wrap;align-items:flex-start!important;align-content:flex-start!important;justify-content:flex-start;gap:8px;width:100%;height:auto!important;max-height:none}
.feature-editor-content .feature-group-tabs-live>.feature-group-tab,.feature-attributes-form[data-feature-layout-mode="tabs"] .feature-group-tab{flex:0 0 auto!important;width:auto!important;height:auto!important;min-height:40px;max-height:none;align-self:flex-start!important;overflow:visible;text-overflow:ellipsis}
.feature-group-panels{display:grid;gap:12px;min-width:0;width:100%}
.feature-form-tab-panel{display:none;min-width:0}
.feature-form-tab-panel.active{display:block}
.feature-form-tab-panel>.feature-attributes-grid{min-width:0}
.feature-editor-content .prop-section[data-prop-section="attrs"]{scroll-padding-top:78px}
.feature-editor-content .feature-form-layout-live,.feature-attributes-form .feature-form-layout-live{gap:14px}
.feature-editor-content .feature-group-tabs-live,.feature-attributes-form[data-feature-layout-mode="tabs"] .feature-group-tabs{position:sticky;top:0;z-index:2;padding:2px 0 10px;background:linear-gradient(180deg,rgba(246,248,251,.98),rgba(246,248,251,.94) 72%,rgba(246,248,251,0));backdrop-filter:blur(2px)}
.feature-editor-content .feature-group-panels-live,.feature-attributes-form[data-feature-layout-mode="tabs"] .feature-group-panels{gap:14px}
.feature-editor-content .feature-form-tab-panel.active,.feature-attributes-form .feature-form-tab-panel.active{display:block;animation:featureTabFade .14s ease-out}
.feature-editor-content .feature-form-group,.feature-attributes-form .feature-form-group{background:rgba(255,255,255,.74)}
.feature-editor-content .feature-field-card,.feature-attributes-form .feature-field-card{background:linear-gradient(180deg,#ffffff,#f8fbff);border-color:#d3dbe5;box-shadow:0 5px 18px rgba(15,23,42,.04)}
.feature-editor-content .feature-field-control input,.feature-editor-content .feature-field-control select,.feature-editor-content .feature-field-control textarea,.feature-attributes-form .feature-field-control input,.feature-attributes-form .feature-field-control select,.feature-attributes-form .feature-field-control textarea{min-height:44px;padding:10px 12px;border-color:#cdd6e1;background:#fff}
.feature-editor-content .feature-field-control textarea,.feature-attributes-form .feature-field-control textarea{min-height:112px}
.feature-editor-content .feature-checkbox,.feature-attributes-form .feature-checkbox{min-height:44px;border-color:#cdd6e1;background:#fff}
.feature-form-layout-preview .feature-field-control :is(input,select,textarea,button),.feature-form-layout-preview .feature-checkbox{pointer-events:none}
.feature-form-layout-preview .feature-field-control :is(input,select,textarea,button){caret-color:transparent}
.feature-form-layout-preview .feature-field-feedback{display:none}
.feature-form-layout-preview .feature-field-card{background:linear-gradient(180deg,#ffffff,#f8fbff);border-color:#d3dbe5;box-shadow:0 5px 18px rgba(15,23,42,.04)}
.feature-form-layout-preview .feature-field-help{font-size:11px;line-height:1.45;color:#64748b}
.feature-editor-content .feature-field-help,.feature-attributes-form .feature-field-help{font-size:11px;line-height:1.45;color:#64748b}
.feature-editor-content .feature-field-feedback,.feature-attributes-form .feature-field-feedback{padding-top:2px}
@keyframes featureTabFade{from{opacity:.45;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}
.feature-info-grid{display:grid;gap:0;padding:2px 0}
@media (max-width: 1120px){.feature-editor-layout{grid-template-columns:240px minmax(0,1fr)}.feature-layout-cols-2,.feature-layout-cols-3,.feature-layout-cols-4{grid-template-columns:1fr}}
@media (max-width: 860px){.feature-editor-layout{grid-template-columns:1fr}.feature-attributes-form{grid-template-columns:1fr}.feature-entry-list{max-height:200px}}

.feature-designer-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px solid #d6dee8;border-radius:12px;background:linear-gradient(180deg,#ffffff,#eef3f8);margin-bottom:10px}
.feature-designer-toolbar label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#334155}
.feature-designer-toolbar input,.feature-designer-toolbar select{width:100%;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:10px 11px;font:inherit;color:#0f172a;box-sizing:border-box}
.feature-designer-list{display:grid;gap:12px;margin-top:12px}
.feature-designer-source-hidden[hidden]{display:none !important}
.feature-designer-preview{display:grid;gap:10px;margin-top:12px;padding:14px;border:1px solid #d6dee8;border-radius:16px;background:linear-gradient(180deg,#ffffff,#f5f8fc);box-shadow:0 6px 18px rgba(15,23,42,.05)}
.feature-designer-preview-launch{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;padding:14px;border:1px solid #d6dee8;border-radius:16px;background:linear-gradient(180deg,#ffffff,#f5f8fc);box-shadow:0 6px 18px rgba(15,23,42,.05)}
.feature-designer-preview-launch-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.feature-template-toolbar{display:grid;gap:10px;margin-top:12px;padding:14px;border:1px solid #d6dee8;border-radius:16px;background:linear-gradient(180deg,#ffffff,#f5f8fc);box-shadow:0 6px 18px rgba(15,23,42,.05)}
.feature-template-toolbar-main{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.feature-template-toolbar-main label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#334155}
.feature-template-toolbar-main :is(input,select){width:100%;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:10px 11px;font:inherit;color:#0f172a;box-sizing:border-box}
.feature-template-toolbar-actions{display:flex;gap:8px;flex-wrap:wrap}
.feature-template-toolbar-meta{font-size:11px;color:#64748b}
.feature-designer-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.feature-designer-preview-title{display:grid;gap:4px}
.feature-designer-preview-title strong{font-size:15px;color:#0f172a}
.feature-designer-preview-title span{font-size:12px;color:#64748b}
.feature-designer-preview-tools{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.feature-designer-preview-tools label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#334155}
.feature-designer-preview-tools select{min-width:240px;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:10px 11px;font:inherit;color:#0f172a;box-sizing:border-box}
.feature-designer-preview-body{padding:12px;border:1px dashed #cbd5e1;border-radius:14px;background:rgba(248,250,252,.95);max-height:460px;overflow:auto}
.feature-designer-preview-body .feature-form-layout{min-width:0}
.feature-form-subgroups{display:grid;gap:12px}
.feature-form-subgroup{display:grid;gap:10px;padding:12px;border:1px dashed #d6dee8;border-radius:14px;background:rgba(255,255,255,.72)}
.feature-form-subgroup-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:2px}
.feature-form-subgroup-head strong{font-size:13px;color:#0f172a}
.feature-form-subgroup-head span{font-size:11px;color:#64748b}
.feature-form-subgroup.is-default{background:rgba(248,250,252,.9)}
.feature-designer-board{display:grid;gap:10px;margin-top:12px;padding:14px;border:1px solid #d6dee8;border-radius:16px;background:linear-gradient(180deg,#ffffff,#f5f8fc);box-shadow:0 6px 18px rgba(15,23,42,.05)}
.feature-designer-board-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.feature-designer-confirm-slot{display:grid;gap:8px}
.feature-designer-confirm{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:12px 14px;border-radius:14px;border:1px solid #f0c36a;background:linear-gradient(180deg,#fffaf0,#fff3db);box-shadow:0 6px 18px rgba(15,23,42,.05)}
.feature-designer-confirm.is-danger{border-color:#f4b3b8;background:linear-gradient(180deg,#fff6f7,#ffe8ea)}
.feature-designer-confirm-copy{display:grid;gap:6px;max-width:780px}
.feature-designer-confirm-copy strong{font-size:13px;color:#7c2d12}
.feature-designer-confirm.is-danger .feature-designer-confirm-copy strong{color:#991b1b}
.feature-designer-confirm-copy p,.feature-designer-confirm-copy ul{margin:0;font-size:12px;color:#475569;line-height:1.5}
.feature-designer-confirm-copy ul{padding-left:18px}
.feature-designer-confirm-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.feature-designer-board-layout{display:grid;grid-template-columns:minmax(240px,300px) minmax(0,1fr);gap:12px;align-items:stretch}
.feature-designer-board-main{display:flex;flex-direction:column;gap:10px;min-width:0;height:min(72vh,720px);min-height:420px}
.feature-designer-tree-panel{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px dashed #cbd5e1;border-radius:14px;background:rgba(255,255,255,.82);height:min(72vh,720px);min-height:420px;min-width:0;overflow:hidden}
.feature-designer-tree-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap}
.feature-designer-tree-head-main{display:grid;gap:4px;min-width:0}
.feature-designer-tree-head strong{font-size:13px;color:#0f172a}
.feature-designer-tree-head span{font-size:11px;color:#64748b}
.feature-designer-tree-head-actions{display:flex;gap:8px;flex-wrap:wrap}
.feature-designer-tree-body{flex:1 1 auto;min-height:0;overflow:auto;padding-right:6px;scrollbar-gutter:stable}
.feature-designer-tree{display:grid;gap:8px}
.feature-designer-tree-group,.feature-designer-tree-subgroup{display:grid;gap:6px;position:relative}
.feature-designer-tree-node-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:start;position:relative}
.feature-designer-tree-toggle,.feature-designer-tree-field{width:100%;display:flex;align-items:center;gap:8px;text-align:left;border:1px solid #d6dee8;border-radius:12px;background:#fff;padding:8px 10px;color:#0f172a;font:inherit;cursor:pointer;box-sizing:border-box;position:relative}
.feature-designer-tree-toggle:hover,.feature-designer-tree-field:hover,.feature-designer-tree-node-btn:hover{border-color:#aac1ef;background:#f8fbff}
.feature-designer-tree-toggle{font-weight:700}
.feature-designer-tree-toggle-sub{font-weight:600}
.feature-designer-tree-node-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.feature-designer-tree-node-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;min-width:32px;height:32px;border:1px solid #d6dee8;border-radius:10px;background:#fff;color:#334155;font:inherit;cursor:pointer;padding:0}
.feature-designer-tree-node-btn-drag{cursor:grab;font-weight:800;letter-spacing:-.08em}
.feature-designer-tree-node-btn-drag:active{cursor:grabbing}
.feature-designer-tree-inline-editor{display:flex;align-items:center;gap:6px;padding-left:18px}
.feature-designer-tree-inline-editor[hidden]{display:none !important}
.feature-designer-tree-inline-editor input{flex:1 1 auto;min-width:0;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:8px 10px;font:inherit;color:#0f172a}
.feature-designer-tree-caret{font-size:11px;color:#64748b;transition:transform .18s ease}
.feature-designer-tree-group.is-open>.feature-designer-tree-node-head>.feature-designer-tree-toggle .feature-designer-tree-caret,.feature-designer-tree-subgroup.is-open>.feature-designer-tree-node-head>.feature-designer-tree-toggle .feature-designer-tree-caret{transform:rotate(90deg)}
.feature-designer-tree-title{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feature-designer-tree-title[data-fe-tree-edit-title]{cursor:text}
.feature-designer-tree-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 8px;border-radius:999px;background:#eef3f8;color:#334155;font-size:11px;font-weight:800}
.feature-designer-tree-children{display:grid;gap:6px;padding-left:14px}
.feature-designer-tree-children[hidden]{display:none !important}
.feature-designer-tree-field{display:grid;gap:2px;justify-items:start;padding-left:18px}
.feature-designer-tree-field-main{display:flex;align-items:center;gap:8px;min-width:0}
.feature-designer-tree-drag{display:inline-flex;align-items:center;justify-content:center;width:18px;color:#64748b;cursor:grab;font-weight:700}
.feature-designer-tree-field:active .feature-designer-tree-drag{cursor:grabbing}
.feature-designer-tree-group.is-dropzone-hover>.feature-designer-tree-node-head>.feature-designer-tree-toggle,.feature-designer-tree-subgroup.is-dropzone-hover>.feature-designer-tree-node-head>.feature-designer-tree-toggle,.feature-designer-tree-node-head.is-dropzone-hover>.feature-designer-tree-toggle{border-color:#2c6af2;background:linear-gradient(180deg,#f8fbff,#eaf1ff);box-shadow:0 0 0 3px rgba(44,106,242,.12)}
.feature-designer-tree-node-head.is-dropzone-hover::after{content:attr(data-drop-label);grid-column:1/-1;display:inline-flex;align-items:center;justify-self:start;margin:2px 0 0 12px;padding:4px 10px;border-radius:999px;background:#2c6af2;color:#fff;font-size:10px;font-weight:800;letter-spacing:.02em;box-shadow:0 8px 18px rgba(44,106,242,.24)}
.feature-designer-tree-node-head.is-drop-before>.feature-designer-tree-toggle,.feature-designer-tree-node-head.is-drop-after>.feature-designer-tree-toggle,.feature-designer-tree-field.is-drop-before,.feature-designer-tree-field.is-drop-after{box-shadow:0 0 0 3px rgba(44,106,242,.12)}
.feature-designer-tree-node-head.is-drop-before>.feature-designer-tree-toggle::before,.feature-designer-tree-node-head.is-drop-after>.feature-designer-tree-toggle::before,.feature-designer-tree-field.is-drop-before::before,.feature-designer-tree-field.is-drop-after::before{content:'';position:absolute;left:12px;right:12px;height:3px;border-radius:999px;background:#2c6af2;box-shadow:0 0 0 1px rgba(255,255,255,.72),0 6px 18px rgba(44,106,242,.22);pointer-events:none}
.feature-designer-tree-node-head.is-drop-before>.feature-designer-tree-toggle::before,.feature-designer-tree-field.is-drop-before::before{top:-7px}
.feature-designer-tree-node-head.is-drop-after>.feature-designer-tree-toggle::before,.feature-designer-tree-field.is-drop-after::before{bottom:-7px}
.feature-designer-tree-node-head.is-drop-before>.feature-designer-tree-toggle::after,.feature-designer-tree-node-head.is-drop-after>.feature-designer-tree-toggle::after,.feature-designer-tree-field.is-drop-before::after,.feature-designer-tree-field.is-drop-after::after{content:'';position:absolute;left:10px;width:7px;height:7px;border-radius:999px;background:#2c6af2;box-shadow:0 0 0 2px #fff,0 6px 18px rgba(44,106,242,.22);pointer-events:none}
.feature-designer-tree-node-head.is-drop-before>.feature-designer-tree-toggle::after,.feature-designer-tree-field.is-drop-before::after{top:-9px}
.feature-designer-tree-node-head.is-drop-after>.feature-designer-tree-toggle::after,.feature-designer-tree-field.is-drop-after::after{bottom:-9px}
.feature-designer-tree-children.is-dropzone-hover{position:relative;border:1px dashed #7aa2ff;border-radius:14px;background:rgba(238,244,255,.78);padding:12px 10px 10px 20px;box-shadow:inset 0 0 0 1px rgba(44,106,242,.08)}
.feature-designer-tree-children.is-dropzone-hover::before{content:attr(data-drop-label);display:block;margin:0 0 6px;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#2c6af2}
.feature-designer-tree-field.is-dragging,.feature-designer-board-chip.is-dragging,.feature-designer-tree-node-head.is-dragging{opacity:.72}
.feature-designer-drag-ghost{position:fixed;left:0;top:0;display:inline-flex;align-items:center;gap:8px;max-width:min(360px,calc(100vw - 32px));padding:8px 12px;border-radius:14px;border:1px solid rgba(44,106,242,.24);background:rgba(255,255,255,.96);backdrop-filter:blur(8px);color:#0f172a;font-size:12px;font-weight:700;box-shadow:0 18px 38px rgba(15,23,42,.18);pointer-events:none;z-index:220;transform:translate3d(0,0,0)}
.feature-designer-drag-ghost[hidden]{display:none !important}
.feature-designer-drag-ghost::before{content:'↕';display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:rgba(44,106,242,.12);color:#2c6af2;font-size:12px;font-weight:900;flex:0 0 auto}
.feature-designer-drag-ghost.is-field::before{content:'◌'}
.feature-designer-drag-ghost.is-group::before{content:'▦'}
.feature-designer-drag-ghost.is-subgroup::before{content:'▤'}
.feature-designer-tree-field small{font-size:10px;color:#64748b}
.feature-designer-tree-field.is-selected{border-color:#7aa2ff;background:#eef4ff;box-shadow:0 0 0 3px rgba(44,106,242,.12)}
.feature-designer-tree-context-slot{position:fixed;inset:0;z-index:120;pointer-events:none}
.feature-designer-tree-context-slot[hidden]{display:none !important}
.feature-designer-tree-context-menu{position:fixed;left:12px;top:12px;display:grid;gap:10px;min-width:280px;max-width:min(340px,calc(100vw - 24px));max-height:min(78vh,640px);overflow:auto;padding:12px;border:1px solid #d6dee8;border-radius:16px;background:rgba(255,255,255,.98);box-shadow:0 22px 44px rgba(15,23,42,.18);pointer-events:auto;box-sizing:border-box}
.feature-designer-tree-context-head{display:grid;gap:2px;padding-bottom:4px;border-bottom:1px solid #e5e7eb}
.feature-designer-tree-context-head strong{font-size:13px;color:#0f172a}
.feature-designer-tree-context-head span{font-size:11px;color:#64748b}
.feature-designer-tree-context-section{display:grid;gap:8px}
.feature-designer-tree-context-section label{display:grid;gap:4px;font-size:11px;color:#475569}
.feature-designer-tree-context-section select{min-width:0;width:100%;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:8px 10px;font:inherit;color:#0f172a}
.feature-designer-tree-context-inline{display:flex;gap:8px;flex-wrap:wrap}
.feature-designer-tree-context-inline .btn{flex:1 1 120px}
.feature-designer-tree-context-note{font-size:11px;line-height:1.4;color:#64748b;background:#f8fafc;border:1px dashed #d6dee8;border-radius:12px;padding:8px 10px}
.feature-designer-board-tools{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.feature-designer-board-tools label,.feature-designer-board-group-tools label,.feature-designer-subgroup-tools label{display:grid;gap:6px;font-size:11px;font-weight:700;color:#475569;min-width:160px}
.feature-designer-board-tools input,.feature-designer-board-group-tools input,.feature-designer-subgroup-tools input,.feature-designer-board-tools select,.feature-designer-board-group-tools select,.feature-designer-subgroup-tools select{width:100%;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:9px 10px;font:inherit;color:#0f172a;box-sizing:border-box}
.feature-designer-board-selection{min-width:260px;justify-content:flex-start}
.feature-designer-board-tools button[disabled]{opacity:.55;cursor:not-allowed}
.feature-designer-create-dropzone,.feature-designer-subgroup-dropzone{display:flex;align-items:center;justify-content:center;min-height:52px;padding:10px 12px;border:1px dashed #b9c7da;border-radius:14px;background:rgba(255,255,255,.72);color:#475569;font-size:12px;text-align:center;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease}
.feature-designer-create-dropzone strong,.feature-designer-subgroup-dropzone strong{color:#0f172a}
.feature-designer-create-dropzone.is-dropzone-hover,.feature-designer-subgroup-dropzone.is-dropzone-hover{border-color:#2c6af2;background:rgba(44,106,242,.08);box-shadow:0 0 0 3px rgba(44,106,242,.1)}
.feature-designer-board-body{flex:1 1 auto;min-height:0;padding:12px;border:1px dashed #cbd5e1;border-radius:14px;background:rgba(248,250,252,.95);max-height:none;overflow:auto;scrollbar-gutter:stable}
.feature-designer-board-groups{display:grid;gap:14px}
.feature-designer-board-group{display:grid;gap:10px;position:relative}
.feature-designer-dropzone,.feature-form-subgroup,.feature-designer-board-chip{position:relative}
.feature-designer-board-group.is-live-drop-container,.feature-form-subgroup.is-live-drop-container,.feature-designer-dropzone.is-live-drop-container{box-shadow:0 0 0 3px rgba(44,106,242,.08);border-radius:16px}
.feature-designer-board-group.is-live-drop-target,.feature-form-subgroup.is-live-drop-target,.feature-designer-dropzone.is-live-drop-target{outline:2px dashed rgba(44,106,242,.48);outline-offset:4px;background:rgba(237,244,255,.74)}
.feature-designer-board-group.is-live-drop-before::before,.feature-designer-board-group.is-live-drop-after::before,.feature-form-subgroup.is-live-drop-before::before,.feature-form-subgroup.is-live-drop-after::before,.feature-designer-dropzone.is-live-drop-before::before,.feature-designer-dropzone.is-live-drop-after::before,.feature-designer-board-chip.is-live-drop-before::before,.feature-designer-board-chip.is-live-drop-after::before{content:'';position:absolute;left:12px;right:12px;height:3px;border-radius:999px;background:#2c6af2;box-shadow:0 0 0 1px rgba(255,255,255,.72),0 6px 18px rgba(44,106,242,.22);pointer-events:none;z-index:2}
.feature-designer-board-group.is-live-drop-before::before,.feature-form-subgroup.is-live-drop-before::before,.feature-designer-dropzone.is-live-drop-before::before,.feature-designer-board-chip.is-live-drop-before::before{top:-8px}
.feature-designer-board-group.is-live-drop-after::before,.feature-form-subgroup.is-live-drop-after::before,.feature-designer-dropzone.is-live-drop-after::before,.feature-designer-board-chip.is-live-drop-after::before{bottom:-8px}
.feature-designer-board-group.is-live-drop-before::after,.feature-designer-board-group.is-live-drop-after::after,.feature-designer-board-group.is-live-drop-target::after,.feature-form-subgroup.is-live-drop-before::after,.feature-form-subgroup.is-live-drop-after::after,.feature-form-subgroup.is-live-drop-target::after,.feature-designer-dropzone.is-live-drop-before::after,.feature-designer-dropzone.is-live-drop-after::after,.feature-designer-dropzone.is-live-drop-target::after,.feature-designer-board-chip.is-live-drop-before::after,.feature-designer-board-chip.is-live-drop-after::after,.feature-designer-board-chip.is-live-drop-target::after{content:attr(data-live-drop-label);position:absolute;left:12px;top:-12px;display:inline-flex;align-items:center;max-width:min(320px,calc(100% - 24px));padding:4px 10px;border-radius:999px;background:#2c6af2;color:#fff;font-size:10px;font-weight:800;letter-spacing:.02em;box-shadow:0 8px 18px rgba(44,106,242,.24);pointer-events:none;z-index:3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feature-designer-board-chip.is-live-drop-before,.feature-designer-board-chip.is-live-drop-after{box-shadow:0 0 0 3px rgba(44,106,242,.12),0 4px 14px rgba(15,23,42,.04)}
.feature-designer-board-chip.is-live-drop-target{outline:2px dashed rgba(44,106,242,.48);outline-offset:4px;background:linear-gradient(180deg,#fff,#eef4ff)}
.feature-designer-live-placeholder{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;min-height:86px;padding:12px 14px;border:2px dashed rgba(44,106,242,.55);border-radius:16px;background:repeating-linear-gradient(135deg,rgba(237,244,255,.94),rgba(237,244,255,.94) 12px,rgba(255,255,255,.98) 12px,rgba(255,255,255,.98) 24px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.82),0 10px 22px rgba(44,106,242,.10);color:#1d4ed8;pointer-events:none;z-index:2}
.feature-designer-live-placeholder::before{content:'+';display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;background:rgba(44,106,242,.12);color:#2c6af2;font-size:18px;font-weight:900;box-shadow:0 0 0 1px rgba(44,106,242,.12)}
.feature-designer-live-placeholder::after{content:attr(data-live-drop-label);position:absolute;left:12px;top:-12px;display:inline-flex;align-items:center;max-width:min(340px,calc(100% - 24px));padding:4px 10px;border-radius:999px;background:#2c6af2;color:#fff;font-size:10px;font-weight:800;letter-spacing:.02em;box-shadow:0 8px 18px rgba(44,106,242,.24);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feature-designer-live-placeholder:not([data-live-drop-label])::after{display:none}
.feature-designer-live-placeholder .feature-designer-live-placeholder-copy{font-size:12px;font-weight:800;letter-spacing:.02em;text-align:center}
.feature-designer-live-placeholder.is-field{min-height:84px}
.feature-designer-live-placeholder.is-group,.feature-designer-live-placeholder.is-subgroup{min-height:108px;margin:10px 0 14px;grid-column:1/-1}
.feature-designer-live-placeholder.is-field:is(.feature-width-full,.feature-width-three-quarter){grid-column:1/-1}
.feature-designer-live-placeholder.is-field.feature-width-half{grid-column:span 2}
.feature-designer-live-placeholder.is-field:is(.feature-width-auto,.feature-width-quarter){grid-column:span 1}
.feature-designer-live-placeholder.is-before{margin-bottom:6px}
.feature-designer-live-placeholder.is-after{margin-top:6px}
.feature-designer-live-placeholder.is-append{margin-top:8px}
.feature-designer-live-placeholder.is-group::before{content:'▦'}
.feature-designer-live-placeholder.is-subgroup::before{content:'▤'}
html[data-theme=dark] .feature-designer-live-placeholder{background:repeating-linear-gradient(135deg,rgba(31,41,55,.94),rgba(31,41,55,.94) 12px,rgba(15,23,42,.98) 12px,rgba(15,23,42,.98) 24px);border-color:rgba(125,211,252,.52);box-shadow:inset 0 0 0 1px rgba(255,255,255,.04),0 12px 24px rgba(2,6,23,.34);color:#bfdbfe}
html[data-theme=dark] .feature-designer-live-placeholder::before{background:rgba(125,211,252,.14);color:#93c5fd;box-shadow:0 0 0 1px rgba(125,211,252,.18)}
html[data-theme=dark] .feature-designer-live-placeholder::after{background:#1d4ed8;color:#eff6ff}
.feature-designer-board-group-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.feature-designer-board-group-titlewrap,.feature-designer-subgroup-titlewrap{display:flex;align-items:flex-start;gap:10px;min-width:0}
.feature-designer-board-group-title{display:grid;gap:4px}
.feature-designer-board-group-tools{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.feature-designer-board-group-head strong{font-size:13px;color:#0f172a}
.feature-designer-board-group-head span{font-size:11px;color:#64748b}
.feature-designer-board-grid{align-content:start}
.feature-designer-board-group-head.is-dropzone-hover,.feature-designer-subgroup-head.is-dropzone-hover{position:relative;outline:2px dashed rgba(44,106,242,.45);outline-offset:4px;background:rgba(237,244,255,.72);border-radius:16px}
.feature-designer-board-group-head.is-drop-before::before,.feature-designer-board-group-head.is-drop-after::before,.feature-designer-subgroup-head.is-drop-before::before,.feature-designer-subgroup-head.is-drop-after::before{content:'';position:absolute;left:14px;right:14px;height:3px;border-radius:999px;background:#2c6af2;box-shadow:0 0 0 1px rgba(255,255,255,.72),0 6px 18px rgba(44,106,242,.22);pointer-events:none;z-index:2}
.feature-designer-board-group-head.is-drop-before::before,.feature-designer-subgroup-head.is-drop-before::before{top:-8px}
.feature-designer-board-group-head.is-drop-after::before,.feature-designer-subgroup-head.is-drop-after::before{bottom:-8px}
.feature-designer-board-group-head.is-drop-before::after,.feature-designer-board-group-head.is-drop-after::after,.feature-designer-board-group-head.is-dropzone-hover::after,.feature-designer-subgroup-head.is-drop-before::after,.feature-designer-subgroup-head.is-drop-after::after,.feature-designer-subgroup-head.is-dropzone-hover::after{content:attr(data-drop-label);position:absolute;left:12px;top:-12px;display:inline-flex;align-items:center;max-width:min(340px,calc(100% - 24px));padding:4px 10px;border-radius:999px;background:#2c6af2;color:#fff;font-size:10px;font-weight:800;letter-spacing:.02em;box-shadow:0 8px 18px rgba(44,106,242,.24);pointer-events:none;z-index:3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feature-designer-board-chip{display:grid;gap:10px;padding:12px;border:1px solid #cfd8e3;border-radius:14px;background:linear-gradient(180deg,#fff,#f8fbff);box-shadow:0 4px 14px rgba(15,23,42,.04)}
.feature-designer-board-chip{cursor:grab}
.feature-designer-board-chip.is-selected{border-color:#7aa2ff;box-shadow:0 0 0 3px rgba(44,106,242,.14),0 4px 14px rgba(15,23,42,.04)}
.feature-designer-board-chip.is-dragging{opacity:.45;cursor:grabbing}
.feature-designer-board-chip.is-drop-before{box-shadow:0 -3px 0 0 rgba(44,106,242,.8),0 4px 14px rgba(15,23,42,.04)}
.feature-designer-board-chip.is-drop-after{box-shadow:0 3px 0 0 rgba(44,106,242,.8),0 4px 14px rgba(15,23,42,.04)}
.feature-designer-dropzone.is-dropzone-hover{outline:2px dashed rgba(44,106,242,.45);outline-offset:4px;background:rgba(237,244,255,.78)}
.feature-designer-board-chip.is-hidden{opacity:.7;border-style:dashed}
.feature-designer-board-chip-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.feature-designer-board-chip-titlewrap{display:flex;align-items:flex-start;gap:10px;min-width:0}
.feature-designer-drag-handle{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;border:1px solid #cfd8e3;border-radius:10px;background:#fff;color:#475569;font:inherit;font-weight:700;cursor:grab;box-shadow:0 1px 2px rgba(15,23,42,.04)}
.feature-designer-drag-handle-block{min-width:34px;height:34px;flex:0 0 auto}
.feature-designer-drag-handle:hover{border-color:#93b4f8;background:#f8fbff}
.feature-designer-drag-handle:active{cursor:grabbing}
.feature-designer-board-chip-title{display:grid;gap:4px;min-width:0}
.feature-designer-board-chip-title strong{font-size:13px;color:#0f172a;word-break:break-word}
.feature-designer-board-chip-title span{font-size:11px;color:#64748b;word-break:break-word}
.feature-designer-board-chip-actions{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}
.feature-designer-board-width{display:grid;gap:6px;font-size:11px;font-weight:700;color:#475569;min-width:120px}
.feature-designer-board-width select{width:100%;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:9px 10px;font:inherit;color:#0f172a;box-sizing:border-box}
.feature-designer-subgroup-head{align-items:flex-start;flex-wrap:wrap;gap:10px}
.feature-designer-subgroup-title{display:grid;gap:4px}
.feature-designer-subgroup-tools{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
html[data-theme=dark] .feature-designer-board-group-head.is-dropzone-hover,html[data-theme=dark] .feature-designer-subgroup-head.is-dropzone-hover{background:rgba(30,41,59,.92);outline-color:rgba(125,211,252,.42)}
html[data-theme=dark] .feature-designer-board-group-head.is-drop-before::before,html[data-theme=dark] .feature-designer-board-group-head.is-drop-after::before,html[data-theme=dark] .feature-designer-subgroup-head.is-drop-before::before,html[data-theme=dark] .feature-designer-subgroup-head.is-drop-after::before{background:#60a5fa;box-shadow:0 0 0 1px rgba(15,23,42,.82),0 8px 22px rgba(59,130,246,.28)}
html[data-theme=dark] .feature-designer-board-group-head.is-drop-before::after,html[data-theme=dark] .feature-designer-board-group-head.is-drop-after::after,html[data-theme=dark] .feature-designer-board-group-head.is-dropzone-hover::after,html[data-theme=dark] .feature-designer-subgroup-head.is-drop-before::after,html[data-theme=dark] .feature-designer-subgroup-head.is-drop-after::after,html[data-theme=dark] .feature-designer-subgroup-head.is-dropzone-hover::after{background:#1d4ed8;color:#eff6ff}
.feature-designer-card.is-selected{border-color:#7aa2ff;box-shadow:0 0 0 3px rgba(44,106,242,.12),0 6px 18px rgba(15,23,42,.05)}
.feature-designer-card.is-flash{animation:featureDesignerFlash .9s ease}
@keyframes featureDesignerFlash{0%{box-shadow:0 0 0 0 rgba(59,130,246,.38)}50%{box-shadow:0 0 0 4px rgba(59,130,246,.22)}100%{box-shadow:0 0 0 0 rgba(59,130,246,0)}}
.feature-designer-modal{position:fixed;inset:0;z-index:1400;display:grid;place-items:center;padding:24px}
.feature-designer-modal.hidden{display:none !important}
.feature-designer-modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.34)}
.feature-designer-modal-dialog{position:relative;z-index:1;display:flex;flex-direction:column;gap:12px;width:min(1120px,calc(100vw - 48px));max-height:calc(100vh - 48px);padding:16px;border:1px solid #d6dee8;border-radius:18px;background:linear-gradient(180deg,#ffffff,#f5f8fc);box-shadow:0 16px 48px rgba(15,23,42,.22);overflow:hidden}
.feature-designer-modal-dialog-field{width:min(1180px,calc(100vw - 48px))}
.feature-designer-modal-dialog-preview{width:min(1240px,calc(100vw - 48px))}
.feature-designer-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.feature-designer-modal-titlewrap{display:grid;gap:4px;min-width:0}
.feature-designer-modal-titlewrap strong{font-size:16px;color:#0f172a}
.feature-designer-modal-titlewrap span{font-size:12px;color:#64748b}
.feature-designer-modal-actions{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}
.feature-designer-modal-actions-preview label{display:grid;gap:6px;font-size:12px;font-weight:700;color:#334155}
.feature-designer-modal-actions-preview select{min-width:220px;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:10px 11px;font:inherit;color:#0f172a;box-sizing:border-box}
.feature-designer-modal-body{flex:1 1 auto;min-height:0;overflow:auto;padding-right:4px}
.feature-designer-modal-body-preview{padding:12px;border:1px dashed #cbd5e1;border-radius:14px;background:rgba(248,250,252,.95)}
.feature-designer-modal-body .feature-designer-card{margin:0;box-shadow:none}
.feature-designer-card-modal{gap:14px}.feature-designer-modal-summary{display:grid;gap:10px;padding:2px 2px 0}.feature-designer-modal-tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:2px 2px 4px}.feature-designer-modal-tab{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 14px;border:1px solid #c6cfda;border-radius:999px;background:#fff;color:#334155;font:inherit;font-size:12px;font-weight:700;cursor:pointer;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease,color .18s ease}.feature-designer-modal-tab:hover{border-color:#9fb7e8;background:#f8fbff}.feature-designer-modal-tab.active{border-color:#7aa2ff;background:#eef4ff;color:#1847a8;box-shadow:0 0 0 3px rgba(44,106,242,.12)}.feature-designer-modal-panels{display:grid;gap:12px}.feature-designer-modal-panel{display:none;gap:12px}.feature-designer-modal-panel.active{display:grid}.feature-designer-modal-panel-head{display:grid;gap:4px}.feature-designer-modal-panel-head strong{font-size:13px;color:#0f172a}.feature-designer-modal-panel-head span{font-size:11px;color:#64748b}.feature-designer-grid-modal-general{grid-template-columns:repeat(4,minmax(0,1fr))}.feature-designer-grid-modal-validation{grid-template-columns:repeat(3,minmax(0,1fr))}.feature-designer-grid-modal-visibility{grid-template-columns:minmax(180px,.8fr) minmax(220px,1.2fr)}.feature-designer-grid-modal-options{grid-template-columns:minmax(0,1fr)}.feature-designer-modal-note{padding:11px 12px;border:1px dashed #cbd5e1;border-radius:12px;background:rgba(255,255,255,.72);font-size:12px;line-height:1.5;color:#475569}.feature-designer-modal-sidehelp{display:grid;gap:8px}.feature-designer-modal-sidehelp .feature-designer-actions{justify-content:flex-start}
.feature-preview-grid{align-content:start}
.feature-preview-group{background:rgba(255,255,255,.74)}
.feature-preview-field{display:grid;gap:8px;padding:12px;border:1px solid #d3dbe5;border-radius:14px;background:linear-gradient(180deg,#ffffff,#f8fbff);box-shadow:0 5px 18px rgba(15,23,42,.04)}
.feature-preview-field-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.feature-preview-field-titlewrap{display:grid;gap:4px;min-width:0}
.feature-preview-field-titlewrap strong{font-size:13px;color:#1f2937;word-break:break-word}
.feature-preview-field-titlewrap span{font-size:11px;color:#64748b;word-break:break-word}
.feature-preview-control{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;padding:10px 12px;border:1px solid #cdd6e1;border-radius:10px;background:#fff;color:#0f172a;font-size:13px}
.feature-preview-control-number,.feature-preview-control-date{font-variant-numeric:tabular-nums}
.feature-preview-control-select{padding-right:10px}
.feature-preview-select-arrow{font-size:14px;color:#64748b}
.feature-preview-control-textarea{display:block;min-height:96px}
.feature-preview-control-textarea pre{margin:0;white-space:pre-wrap;word-break:break-word;font:inherit;color:inherit}
.feature-preview-control-checkbox{justify-content:flex-start}
.feature-preview-checkbox{width:18px;height:18px;border:1px solid #94a3b8;border-radius:5px;background:#fff;display:inline-flex;align-items:center;justify-content:center;box-shadow:inset 0 1px 2px rgba(15,23,42,.06)}
.feature-preview-checkbox.checked{background:var(--accent);border-color:var(--accent);position:relative}
.feature-preview-checkbox.checked::after{content:'✓';color:#fff;font-size:12px;font-weight:800;line-height:1}
.feature-preview-control-color{justify-content:flex-start}
.feature-preview-color-swatch{width:22px;height:22px;border-radius:7px;border:1px solid rgba(15,23,42,.12);box-shadow:inset 0 1px 2px rgba(255,255,255,.35)}
.feature-preview-help{font-size:11px;line-height:1.45;color:#64748b}
.feature-preview-empty{padding:16px;border:1px dashed #cbd5e1;border-radius:12px;background:#fff;color:#64748b;font-size:12px}
.feature-designer-card{display:grid;gap:10px;padding:14px;border:1px solid #c7d0db;border-radius:16px;background:linear-gradient(180deg,#ffffff,#f7fafc);box-shadow:0 6px 18px rgba(15,23,42,.05)}
.feature-designer-card.is-configured{border-color:#93c5fd;box-shadow:0 0 0 1px rgba(96,165,250,.18) inset,0 10px 24px rgba(59,130,246,.08)}
.feature-designer-card.is-hidden-field{border-style:dashed;background:linear-gradient(180deg,#ffffff,#f8fafc)}
.feature-designer-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.feature-designer-card-titlewrap{display:grid;gap:4px;min-width:0}
.feature-designer-card-titlewrap strong{font-size:14px;color:#0f172a}
.feature-designer-card-titlewrap span{font-size:12px;color:#64748b;word-break:break-word}
.feature-designer-grid{display:grid;gap:10px}
.feature-designer-grid label{display:grid;gap:6px;font-size:12px;font-weight:600;color:#334155}
.feature-designer-grid input,.feature-designer-grid select,.feature-designer-grid textarea{width:100%;border:1px solid #c6cfda;border-radius:10px;background:#fff;padding:10px 11px;font:inherit;color:#0f172a;box-sizing:border-box}
.feature-designer-grid textarea{min-height:100px;resize:vertical}
.feature-designer-grid input:focus,.feature-designer-grid select:focus,.feature-designer-grid textarea:focus{outline:none;border-color:#6e9bd4;box-shadow:0 0 0 3px rgba(96,165,250,.18)}
.feature-designer-grid-top{grid-template-columns:repeat(7,minmax(0,1fr))}
.feature-designer-grid-mid{grid-template-columns:repeat(6,minmax(0,1fr))}
.feature-designer-grid-bottom{grid-template-columns:minmax(280px,1.2fr) minmax(240px,.8fr);align-items:start}
.feature-designer-options{min-width:0}
.feature-designer-sidehelp{display:grid;gap:8px;align-content:start}
.feature-designer-grid-conditions{grid-template-columns:repeat(2,minmax(0,1fr))}
.feature-condition-list{display:grid;gap:10px}
.feature-condition-row{display:grid;gap:10px;grid-template-columns:1.15fr .8fr 1fr;padding:10px 12px;border:1px dashed #cbd5e1;border-radius:12px;background:rgba(255,255,255,.7)}
.feature-condition-row label{display:grid;gap:6px;font-size:12px;font-weight:600;color:#334155}
.feature-designer-actions{display:flex;justify-content:flex-end}
@media (max-width: 1280px){.feature-layout-cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.feature-layout-cols-4 :is(.feature-width-three-quarter,.feature-width-full){grid-column:1/-1}.feature-layout-cols-4 .feature-width-half{grid-column:span 1}}
@media (max-width: 1180px){.feature-designer-grid-top,.feature-designer-grid-mid,.feature-designer-grid-conditions,.feature-template-toolbar-main,.feature-designer-grid-modal-general,.feature-designer-grid-modal-validation,.feature-designer-grid-modal-visibility{grid-template-columns:repeat(2,minmax(0,1fr))}.feature-condition-row{grid-template-columns:1fr}.feature-designer-grid-bottom{grid-template-columns:1fr}.feature-designer-preview-head{align-items:stretch}.feature-designer-preview-tools{width:100%}.feature-designer-preview-tools label{flex:1 1 240px}.feature-designer-board-chip-actions{align-items:stretch}.feature-designer-board-width{flex:1 1 160px}.feature-designer-board-head,.feature-designer-board-group-head,.feature-designer-board-tools,.feature-designer-board-group-tools,.feature-designer-subgroup-tools{align-items:stretch}.feature-designer-board-selection{width:100%;min-width:0}.feature-designer-board-layout{grid-template-columns:1fr}.feature-designer-tree-panel,.feature-designer-board-main{height:380px;min-height:300px}}
@media (max-width: 760px){.feature-designer-grid-top,.feature-designer-grid-mid,.feature-designer-grid-conditions,.feature-template-toolbar-main,.feature-designer-grid-modal-general,.feature-designer-grid-modal-validation,.feature-designer-grid-modal-visibility,.feature-designer-grid-modal-options{grid-template-columns:1fr}.feature-designer-toolbar,.feature-template-toolbar-actions,.feature-designer-board-tools,.feature-designer-board-group-tools,.feature-designer-subgroup-tools{align-items:stretch}.feature-designer-toolbar .feature-editor-stats,.feature-designer-board-selection{justify-content:center;width:100%}.feature-group-tabs{flex-wrap:nowrap;overflow-x:auto}.feature-designer-preview-tools{align-items:stretch}.feature-designer-preview-tools select{min-width:0;width:100%}.feature-designer-board-chip-actions{display:grid;grid-template-columns:1fr 1fr}.feature-designer-board-width{grid-column:1/-1;min-width:0}.feature-designer-board-tools label,.feature-designer-board-group-tools label,.feature-designer-subgroup-tools label{min-width:0;width:100%}.feature-designer-confirm-actions{width:100%}.feature-designer-confirm-actions .btn{flex:1 1 160px}.feature-designer-tree-field{padding-left:18px}.feature-designer-tree-head-actions{width:100%}.feature-designer-tree-head-actions .btn{flex:1 1 140px}.feature-designer-tree-node-head{grid-template-columns:1fr}.feature-designer-tree-node-actions{justify-content:flex-start}.feature-designer-tree-inline-editor{padding-left:0;flex-wrap:wrap}.feature-designer-modal-tabs{flex-wrap:nowrap;overflow:auto;padding-bottom:6px}}


@media (max-width: 980px){.feature-designer-board-layout{grid-template-columns:1fr}.feature-designer-tree-panel,.feature-designer-board-main{height:auto;min-height:320px}.feature-designer-modal{padding:14px}.feature-designer-modal-dialog,.feature-designer-modal-dialog-field,.feature-designer-modal-dialog-preview{width:min(100vw - 20px,1240px);max-height:calc(100vh - 20px)}}

.dark .attribute-table td.table-cell-range,.theme-dark .attribute-table td.table-cell-range,html[data-theme="dark"] .attribute-table td.table-cell-range{background:rgba(76,125,255,.18)}
.dark .table-selection-hint,.theme-dark .table-selection-hint,html[data-theme="dark"] .table-selection-hint{color:#9ca3af}
.dark .attribute-table td.table-cell-range::before,.theme-dark .attribute-table td.table-cell-range::before,html[data-theme="dark"] .attribute-table td.table-cell-range::before{border-color:rgba(147,197,253,.45)}
.dark .attribute-table td.table-cell-active,.theme-dark .attribute-table td.table-cell-active,html[data-theme="dark"] .attribute-table td.table-cell-active{background:rgba(76,125,255,.22)}
.dark .attribute-table td.cell-editing.table-cell-active,.theme-dark .attribute-table td.cell-editing.table-cell-active,html[data-theme="dark"] .attribute-table td.cell-editing.table-cell-active{background:rgba(59,130,246,.32);box-shadow:inset 0 0 0 2px #60a5fa,0 0 0 1px rgba(96,165,250,.28)}
.dark .attribute-table tbody tr.row-dirty td,.theme-dark .attribute-table tbody tr.row-dirty td,html[data-theme="dark"] .attribute-table tbody tr.row-dirty td{background-image:linear-gradient(0deg,rgba(76,125,255,.08),rgba(76,125,255,.08))}
.dark .attribute-table td.table-cell-dirty::after,.theme-dark .attribute-table td.table-cell-dirty::after,html[data-theme="dark"] .attribute-table td.table-cell-dirty::after{box-shadow:0 0 0 2px rgba(17,24,39,.95)}
.dark .attribute-table td.table-cell-invalid,.theme-dark .attribute-table td.table-cell-invalid,html[data-theme="dark"] .attribute-table td.table-cell-invalid{background:rgba(127,29,29,.35);box-shadow:inset 0 0 0 2px rgba(248,113,113,.95)}
.dark .attribute-table td.table-cell-invalid.table-cell-active,.theme-dark .attribute-table td.table-cell-invalid.table-cell-active,html[data-theme="dark"] .attribute-table td.table-cell-invalid.table-cell-active{background:rgba(153,27,27,.5);box-shadow:inset 0 0 0 2px rgba(248,113,113,.95),0 0 0 1px rgba(248,113,113,.15)}
.dark .attribute-table .cell-editor.is-invalid,.theme-dark .attribute-table .cell-editor.is-invalid,html[data-theme="dark"] .attribute-table .cell-editor.is-invalid{background:rgba(127,29,29,.38);border-color:#f87171;box-shadow:0 0 0 3px rgba(248,113,113,.12)}


.command-bar{display:flex;align-items:center;padding:3px 10px;border-bottom:1px solid #d7dce5;background:linear-gradient(180deg,#fdfefe,#eef3fb);box-shadow:inset 0 1px 0 rgba(255,255,255,.9);min-height:100%}
.command-bar[data-command-status="ACTIVE"]{background:linear-gradient(180deg,#f7fbff,#e9f2ff)}
.command-bar-inline{display:grid;grid-template-columns:auto minmax(220px,360px) auto minmax(320px,1fr) auto;align-items:center;gap:8px;width:100%;min-width:0}
.command-mode-badge{display:inline-flex;align-items:center;justify-content:center;min-height:26px;padding:0 9px;border-radius:999px;border:1px solid #b7c5df;background:#fff;color:#1d4ed8;font-size:11px;font-weight:800;letter-spacing:.04em;white-space:nowrap;line-height:1}
.command-hint{font-size:12px;line-height:1.1;color:#334155;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.command-focus-btn{flex:0 0 auto}
.command-input{width:100%;height:30px;border:1px solid #c7d2e4;border-radius:11px;padding:0 11px;background:#fff;color:#0f172a;box-shadow:inset 0 1px 2px rgba(15,23,42,.04)}
.command-input:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.command-help-trigger{height:30px;padding:0 12px;white-space:nowrap}
.command-help-dialog{width:min(1160px,96vw);height:min(88vh,920px);max-height:min(88vh,920px)}
.command-help-shell{display:flex;flex-direction:column;gap:14px;height:100%;max-height:inherit;overflow:hidden}
.command-help-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:2px}
.command-help-head h3{margin:0 0 4px 0}
.command-help-sub{font-size:13px;color:#64748b}
.command-help-topbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.command-help-search{flex:1 1 280px;min-width:220px;padding:10px 12px;border:1px solid #cfd6e3;border-radius:12px;background:#fff}
.command-help-search:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.command-help-current{padding:12px 14px;border:1px solid #dbe5f4;border-radius:14px;background:linear-gradient(180deg,#f8fbff,#eef5ff)}
.command-help-current-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.command-help-current-copy{font-size:13px;color:#334155;line-height:1.45}
.command-help-tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.command-help-tab{display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:0 14px;border:1px solid #d8e0ee;border-radius:999px;background:#f8fafc;color:#334155;font-weight:700;cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease,box-shadow .15s ease}
.command-help-tab:hover{border-color:#9db7ea;background:#eef4ff}
.command-help-tab.active{border-color:#2563eb;background:#eaf2ff;color:#1d4ed8;box-shadow:0 0 0 3px rgba(37,99,235,.10)}
.command-help-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:rgba(15,23,42,.08);font-size:11px;color:inherit}
.command-help-panels{flex:1 1 auto;min-height:0;overflow:auto;padding-right:4px}
.command-help-section{border:1px solid #d9dee8;border-radius:16px;background:#fff;overflow:hidden}
.command-help-section-panel{min-height:100%}
.command-help-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid #e8edf5;background:#f8fafc;position:sticky;top:0;z-index:1}
.command-help-section-head h4{margin:0;font-size:14px}
.command-help-count{font-size:11px;color:#64748b;font-weight:700}
.command-help-list{display:grid;gap:10px;padding:12px}
.command-help-list-panel{grid-template-columns:1fr;align-content:start}
.command-help-card{border:1px solid #e3e8f2;border-radius:14px;padding:10px 12px;background:linear-gradient(180deg,#fff,#fbfcfe)}
.command-help-card-panel{padding:14px 16px}
.command-help-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:6px}
.command-help-card-title{font-size:13px;font-weight:700;color:#0f172a}
.command-help-card-alias{font-size:11px;color:#475569;font-weight:700;text-align:right}
.command-help-card-body{display:grid;gap:6px;font-size:12px;color:#334155;line-height:1.45}
.command-help-card-body b{color:#0f172a}
.command-help-empty{padding:18px;border:1px dashed #cfd8e3;border-radius:14px;background:#fff;color:#64748b;text-align:center}


@media (max-width: 1180px){
  .command-bar-inline{grid-template-columns:auto minmax(150px,250px) auto minmax(220px,1fr) auto;gap:8px}
}
@media (max-width: 860px){
  .command-shell{max-height:none;height:auto;flex:0 0 auto}
  .command-bar-inline{grid-template-columns:1fr;align-items:stretch}
  .command-hint{white-space:normal}
  .command-help-trigger,.command-focus-btn,.command-mode-badge{justify-self:start}
  .command-help-tabs{overflow:auto;flex-wrap:nowrap;padding-bottom:4px}
  .command-help-tab{flex:0 0 auto}
}


.measure-panel{position:absolute;right:12px;top:12px;z-index:18;min-width:250px;max-width:min(360px,calc(100% - 24px));padding:10px 12px;background:rgba(255,255,255,.96);border:1px solid #d8dce3;border-radius:14px;box-shadow:0 10px 28px rgba(15,23,42,.14);backdrop-filter:blur(6px)}
.measure-panel.hidden{display:none}
.measure-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.measure-panel-title{font:700 12px/1 system-ui,sans-serif;color:#0f172a;letter-spacing:.02em;text-transform:uppercase}
.measure-panel-actions{display:flex;align-items:center;gap:6px}
.measure-panel-btn{min-width:30px;height:30px;padding:0}
.measure-panel-controls{display:grid;grid-template-columns:1fr 1fr auto auto;gap:6px;align-items:end;margin-bottom:8px}
.measure-panel-field{display:grid;gap:3px;min-width:0}
.measure-panel-field span{font:600 10px/1 system-ui,sans-serif;color:#475467;text-transform:uppercase;letter-spacing:.04em}
.measure-panel-field-dec{max-width:64px}
.measure-panel-select{min-width:0;height:30px;padding:4px 8px}
.measure-panel-line-muted{color:#667085;font-weight:500}
.measure-panel-history{display:grid;gap:6px;margin-top:10px;padding-top:10px;border-top:1px dashed #d8dce3}
.measure-panel-history-empty{font:500 11px/1.35 system-ui,sans-serif;color:#667085}
.measure-history-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:start}
.measure-history-main{display:grid;gap:2px;text-align:left;padding:8px 10px;border:1px solid #d8dce3;border-radius:10px;background:rgba(248,250,252,.96);cursor:pointer;min-width:0}
.measure-history-main strong{font:700 11px/1.3 system-ui,sans-serif;color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.measure-history-main span{display:grid;gap:2px}
.measure-history-line{font:500 11px/1.3 system-ui,sans-serif;color:#475467;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.measure-history-copy{align-self:stretch}
.measure-history-main:hover{border-color:#94a3b8;background:#fff}
.measure-panel-summary{font:700 13px/1.35 system-ui,sans-serif;color:#111827;margin-bottom:8px}
.measure-panel-lines,.measure-panel-meta{display:grid;gap:4px}
.measure-panel-line{font:600 12px/1.35 system-ui,sans-serif;color:#1f2937}
.measure-panel-meta{margin-top:8px;padding-top:8px;border-top:1px dashed #d8dce3}
.measure-panel-meta-line{font:500 11px/1.35 system-ui,sans-serif;color:#475467}
.measure-panel-details{display:grid;gap:6px;margin-top:10px;padding-top:10px;border-top:1px dashed #d8dce3;max-height:180px;overflow:auto}
.measure-panel-details.hidden{display:none}
.measure-panel-details-title{font:700 10px/1 system-ui,sans-serif;color:#475467;text-transform:uppercase;letter-spacing:.05em}
.measure-panel-details-list{display:grid;gap:4px}
.measure-panel-details-line{font:500 11px/1.35 system-ui,sans-serif;color:#334155;white-space:pre-wrap;word-break:break-word}
html[data-theme=dark] .measure-panel{background:rgba(15,23,42,.95);border-color:#334155;box-shadow:0 14px 34px rgba(2,6,23,.36)}
html[data-theme=dark] .measure-panel-title,html[data-theme=dark] .measure-panel-summary,html[data-theme=dark] .measure-panel-line{color:#e5eefc}
html[data-theme=dark] .measure-panel-meta-line,html[data-theme=dark] .measure-panel-field span,html[data-theme=dark] .measure-history-line,html[data-theme=dark] .measure-panel-history-empty{color:#cbd5e1}
html[data-theme=dark] .measure-panel-meta,html[data-theme=dark] .measure-panel-history,html[data-theme=dark] .measure-panel-details{border-top-color:#334155}
html[data-theme=dark] .measure-panel-details-title,html[data-theme=dark] .measure-panel-details-line{color:#cbd5e1}
html[data-theme=dark] .measure-history-main{background:rgba(15,23,42,.84);border-color:#334155}
html[data-theme=dark] .measure-history-main strong{color:#e5eefc}
html[data-theme=dark] .measure-history-main:hover{background:rgba(30,41,59,.92);border-color:#475569}

.catalog-conn-actions-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;min-width:22px;height:22px;border:1px solid #cfd7e3;border-radius:7px;background:#fff;color:#46556a;font:inherit;line-height:1;cursor:pointer;padding:0;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.catalog-conn-actions-btn:hover{background:#f3f7ff;border-color:#a9bee8;color:#274c9c}
.tree-row.selected .catalog-conn-actions-btn{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.42);color:#fff}
.tree-row.selected .catalog-conn-actions-btn:hover{background:rgba(255,255,255,.26)}


/* Shell refresh / theme switcher v1.7.406 */
body{background:linear-gradient(180deg,#e4ebf4,#d6e0ec);color:#132033;transition:background .22s ease,color .22s ease}
#app.layout{background:linear-gradient(180deg,#eef3f9,#dce5ef)}
.sidebar{background:linear-gradient(180deg,#ecf2f8,#e2e9f2);padding:12px;gap:8px}
.left-stack{border-right:1px solid #cbd5e1;box-shadow:inset -1px 0 0 rgba(255,255,255,.75)}
.sidebar .panel{background:linear-gradient(180deg,rgba(255,255,255,.86),rgba(243,247,252,.82));border:1px solid rgba(197,209,225,.96);border-radius:24px;box-shadow:0 10px 24px rgba(30,41,59,.08),inset 0 1px 0 rgba(255,255,255,.92);padding:12px 12px 10px}
.catalog-panel{height:var(--top-height)}
.toc-panel{padding-top:12px}
.panel-head{padding:2px 2px 12px;gap:10px}
.panel-title{font-size:17px;font-weight:800;letter-spacing:-.015em;color:#111827}
.panel-sub{font-size:12px;color:#64748b}
.search-wrap{padding:4px 2px 12px}
.search{padding:12px 14px;border:1px solid #c8d2df;background:rgba(255,255,255,.96);box-shadow:inset 0 1px 2px rgba(15,23,42,.06),0 1px 0 rgba(255,255,255,.9);color:#0f172a}
.search::placeholder{color:#7b8798}
.tree-block{background:linear-gradient(180deg,rgba(250,252,255,.96),rgba(237,243,249,.92));border:1px solid #cfd8e6;border-radius:18px;box-shadow:inset 0 1px 0 rgba(255,255,255,.92)}
.tree-header{padding:12px 14px;border-bottom:1px solid rgba(203,213,225,.9);background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(238,244,250,.84));color:#0f172a}
.tree{padding:10px 8px}
.tree-row{padding:5px 8px;border-radius:12px;border:1px solid transparent;transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease}
.tree-row:hover{background:rgba(44,106,242,.08);border-color:rgba(148,163,184,.28);box-shadow:0 4px 12px rgba(44,106,242,.08)}
.tree-row.selected{background:linear-gradient(180deg,#3d73f7,#245be6);border-color:#1f4fd0;color:#fff;box-shadow:0 8px 18px rgba(44,106,242,.24)}
.tree-row.selected .toggle,.tree-row.selected .tag{color:#fff;border-color:rgba(255,255,255,.35)}
.toggle{color:#516070}
.tag{background:rgba(255,255,255,.9);color:#566375;border-color:#d4dce7}
.btn,.toolbar-check,.toc-action-btn{border:1px solid #c8d2df;background:linear-gradient(180deg,#ffffff,#eef3f8);color:#1f2937;box-shadow:0 1px 0 rgba(255,255,255,.95),0 3px 10px rgba(15,23,42,.08)}
.btn:hover,.toolbar-check:hover,.toc-action-btn:hover{border-color:#89a6e8;box-shadow:0 0 0 2px rgba(44,106,242,.08),0 8px 18px rgba(44,106,242,.10)}
.toolbar-check{padding:6px 10px}
.toolbar-check input,.layer-check{accent-color:#2c6af2}
.toc-actionbar{padding:2px 0 10px 0}
.toc-action-btn{height:30px;padding:0 9px;border-radius:11px}
#btnToggleEdit{min-height:38px;padding:0 14px;border-radius:999px;font-weight:800}
.top-toolbar{border-bottom:1px solid #d8e0ea;background:linear-gradient(180deg,#fdfefe,#eef3fb);box-shadow:inset 0 1px 0 rgba(255,255,255,.96),0 8px 18px rgba(15,23,42,.08)}
.tool-group[data-group="apariencia"]{--group-accent:#9aa9ff}
.theme-toggle{min-width:auto;padding:0 12px;gap:8px;font-size:12px}
.theme-toggle .theme-toggle-icon{font-size:14px;line-height:1}
.theme-toggle .theme-toggle-label{font-size:12px;letter-spacing:.01em}
.command-shell{background:linear-gradient(180deg,#fdfefe,#eef3fb)}
.command-bar{border-bottom:1px solid #d8e0ea;background:linear-gradient(180deg,#fdfefe,#eef3fb)}
.command-bar[data-command-status="ACTIVE"]{background:linear-gradient(180deg,#f7fbff,#e9f2ff)}
.command-hint{color:#334155}
.command-input{background:#fff;color:#0f172a;border-color:#c7d2e4;box-shadow:inset 0 1px 2px rgba(15,23,42,.05)}
.command-help-trigger{height:30px;padding:0 12px}
.workspace-shell,.map-shell{background:#f3f7fb}
.map-stage{background:linear-gradient(180deg,#eff4fa,#dfe7f1)}
#mapCanvas{background:#eef3f8}
#mapCanvas3d{background:linear-gradient(180deg,#edf3fb,#dfe8f4)}
.statusbar,.map-cursor-coords,.map-scale,.map-legend,.properties,.ctx-menu,.dialog{background:rgba(255,255,255,.94);border-color:#d6dde8;box-shadow:0 12px 30px rgba(15,23,42,.14)}
.statusbar,.map-cursor-coords,.map-scale{backdrop-filter:blur(10px)}
.map-legend-empty,.map-legend-title,.map-legend-layer-name{color:#0f172a}
.splitter{background:linear-gradient(180deg,#d7dee8,#bcc7d5)}
.splitter:hover::after,.splitter.dragging::after{background:rgba(44,106,242,.16)}

html[data-theme="dark"] body{background:linear-gradient(180deg,#070b12,#101927);color:#e5edf8}
html[data-theme="dark"] #app.layout{background:linear-gradient(180deg,#08111e,#101a2b)}
html[data-theme="dark"] .sidebar{background:linear-gradient(180deg,#0b1220,#121d30);color:#e5edf8}
html[data-theme="dark"] .left-stack{border-right:1px solid rgba(100,116,139,.45);box-shadow:inset -1px 0 0 rgba(255,255,255,.03)}
html[data-theme="dark"] .sidebar .panel{background:linear-gradient(180deg,rgba(15,23,42,.96),rgba(11,18,31,.94));border-color:rgba(100,116,139,.4);box-shadow:0 18px 38px rgba(2,6,23,.4),inset 0 1px 0 rgba(255,255,255,.04)}
html[data-theme="dark"] .panel-title{color:#f8fbff}
html[data-theme="dark"] .panel-sub,html[data-theme="dark"] .muted{color:#94a3b8}
html[data-theme="dark"] .search{background:rgba(15,23,42,.78);border-color:rgba(100,116,139,.46);color:#e5edf8;box-shadow:inset 0 1px 2px rgba(2,6,23,.55),0 1px 0 rgba(255,255,255,.02)}
html[data-theme="dark"] .search::placeholder{color:#8ea0b8}
html[data-theme="dark"] .tree-block{background:linear-gradient(180deg,rgba(11,18,31,.9),rgba(15,23,42,.88));border-color:rgba(100,116,139,.42);box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
html[data-theme="dark"] .tree-header{background:linear-gradient(180deg,rgba(30,41,59,.85),rgba(15,23,42,.7));border-bottom-color:rgba(100,116,139,.38);color:#f8fbff}
html[data-theme="dark"] .tree-row{color:#dbe7f8}
html[data-theme="dark"] .tree-row:hover{background:rgba(59,130,246,.15);border-color:rgba(96,165,250,.24);box-shadow:0 8px 18px rgba(15,23,42,.22)}
html[data-theme="dark"] .tree-row.selected{background:linear-gradient(180deg,#2563eb,#1d4ed8);border-color:#60a5fa;box-shadow:0 10px 22px rgba(37,99,235,.34)}
html[data-theme="dark"] .toggle{color:#9fb4ce}
html[data-theme="dark"] .tag{background:rgba(255,255,255,.06);border-color:rgba(100,116,139,.42);color:#c8d7eb}
html[data-theme="dark"] .btn,html[data-theme="dark"] .toolbar-check,html[data-theme="dark"] .toc-action-btn{background:linear-gradient(180deg,rgba(30,41,59,.94),rgba(15,23,42,.96));border-color:rgba(100,116,139,.42);color:#e5edf8;box-shadow:0 1px 0 rgba(255,255,255,.04),0 10px 24px rgba(2,6,23,.28)}
html[data-theme="dark"] .btn:hover,html[data-theme="dark"] .toolbar-check:hover,html[data-theme="dark"] .toc-action-btn:hover{border-color:#60a5fa;box-shadow:0 0 0 2px rgba(59,130,246,.18),0 12px 28px rgba(15,23,42,.3)}
html[data-theme="dark"] .workspace-shell,html[data-theme="dark"] .map-shell{background:#0f172a}
html[data-theme="dark"] .top-toolbar{border-bottom-color:rgba(100,116,139,.34);background:linear-gradient(180deg,#111827,#0f172a);box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 16px 32px rgba(2,6,23,.34)}
html[data-theme="dark"] .tool-group{border-color:rgba(100,116,139,.32);background:linear-gradient(180deg,rgba(15,23,42,.96),rgba(10,16,30,.95));box-shadow:0 8px 24px rgba(2,6,23,.28),inset 0 1px 0 rgba(255,255,255,.04)}
html[data-theme="dark"] .tool-group.drag-over{outline-color:rgba(96,165,250,.58)}
html[data-theme="dark"] .tool-group-label{border-color:rgba(100,116,139,.36);background:rgba(255,255,255,.05);color:#dbeafe}
html[data-theme="dark"] .tool-inline{background:rgba(255,255,255,.05);border-color:rgba(100,116,139,.32);color:#dbe7f8}
html[data-theme="dark"] .tool-select{background:rgba(15,23,42,.72);border-color:rgba(100,116,139,.38);color:#e5edf8}
html[data-theme="dark"] .tool-check{border-color:rgba(100,116,139,.38);background:linear-gradient(180deg,rgba(30,41,59,.94),rgba(15,23,42,.96));color:#e5edf8;box-shadow:0 1px 0 rgba(255,255,255,.04),0 10px 24px rgba(2,6,23,.28)}
html[data-theme="dark"] .tool{border-color:rgba(100,116,139,.34);background:linear-gradient(180deg,rgba(30,41,59,.95),rgba(15,23,42,.98));color:#dbe7f8;box-shadow:0 1px 0 rgba(255,255,255,.04),0 6px 16px rgba(2,6,23,.24)}
html[data-theme="dark"] .tool.active,html[data-theme="dark"] .tool:hover{border-color:#60a5fa;color:#bfdbfe;box-shadow:0 0 0 2px rgba(59,130,246,.16),0 12px 26px rgba(30,64,175,.18)}
html[data-theme="dark"] .theme-toggle{background:linear-gradient(180deg,rgba(38,56,92,.95),rgba(20,31,52,.98));color:#eff6ff}
html[data-theme="dark"] .theme-toggle.is-dark-mode{border-color:#93c5fd;box-shadow:0 0 0 2px rgba(96,165,250,.18),0 10px 22px rgba(30,64,175,.2)}
html[data-theme="dark"] .edit-status{border-color:rgba(100,116,139,.35);background:linear-gradient(180deg,rgba(30,41,59,.94),rgba(15,23,42,.96));color:#dbe7f8;box-shadow:0 1px 0 rgba(255,255,255,.03),0 10px 24px rgba(2,6,23,.22)}
html[data-theme="dark"] .edit-status.clean{background:rgba(16,185,129,.12);border-color:rgba(52,211,153,.3);color:#86efac}
html[data-theme="dark"] .edit-status.dirty{background:rgba(245,158,11,.14);border-color:rgba(251,191,36,.34);color:#fcd34d}
html[data-theme="dark"] .edit-status.saving{background:rgba(37,99,235,.16);border-color:rgba(96,165,250,.34);color:#bfdbfe}
html[data-theme="dark"] .command-shell,html[data-theme="dark"] .command-bar{background:linear-gradient(180deg,#111827,#0f172a)}
html[data-theme="dark"] .command-bar{border-bottom-color:rgba(100,116,139,.34);box-shadow:inset 0 1px 0 rgba(255,255,255,.03)}
html[data-theme="dark"] .command-bar[data-command-status="ACTIVE"]{background:linear-gradient(180deg,#14213a,#10213a)}
html[data-theme="dark"] .command-mode-badge{background:rgba(37,99,235,.16);border-color:rgba(96,165,250,.4);color:#bfdbfe}
html[data-theme="dark"] .command-hint{color:#c8d7eb}
html[data-theme="dark"] .command-input{background:rgba(15,23,42,.78);border-color:rgba(100,116,139,.38);color:#f8fbff;box-shadow:inset 0 1px 2px rgba(2,6,23,.4)}
html[data-theme="dark"] .workspace-shell,html[data-theme="dark"] .map-shell,html[data-theme="dark"] .map-stage{background:#0b1220}
html[data-theme="dark"] #mapCanvas{background:#0e1624}
html[data-theme="dark"] #mapCanvas3d{background:linear-gradient(180deg,#0d1627,#162235)}
html[data-theme="dark"] .statusbar,html[data-theme="dark"] .map-cursor-coords,html[data-theme="dark"] .map-scale,html[data-theme="dark"] .map-legend,html[data-theme="dark"] .properties,html[data-theme="dark"] .ctx-menu,html[data-theme="dark"] .dialog{background:rgba(15,23,42,.92);border-color:rgba(100,116,139,.42);color:#e5edf8;box-shadow:0 18px 36px rgba(2,6,23,.42)}
html[data-theme="dark"] .map-legend-title,html[data-theme="dark"] .map-legend-layer-name{color:#f8fbff}
html[data-theme="dark"] .map-legend-empty,html[data-theme="dark"] .ctx-head .muted,html[data-theme="dark"] .ctx-mode-row small{color:#94a3b8}
html[data-theme="dark"] .ctx-item:hover,html[data-theme="dark"] .ctx-mode-row:hover{background:rgba(59,130,246,.12)}
html[data-theme="dark"] .splitter{background:linear-gradient(180deg,#203047,#13233a)}
html[data-theme="dark"] .splitter:hover::after,html[data-theme="dark"] .splitter.dragging::after{background:rgba(96,165,250,.18)}

/* Theme, modal and map appearance refresh v1.7.406 */
.search-wrap{padding:4px 4px 10px}
.search{padding:7px 12px;min-height:36px;line-height:1.2}

.theme-toggle,.map-appearance-toggle,.map-grid-toggle{min-width:auto;padding:0 12px;gap:8px;font-size:12px}
.theme-toggle .theme-toggle-icon,.map-appearance-toggle .map-appearance-icon,.map-grid-toggle .map-grid-icon{font-size:14px;line-height:1}
.theme-toggle .theme-toggle-label,.map-appearance-toggle .map-appearance-label,.map-grid-toggle .map-grid-label{font-size:12px;letter-spacing:.01em;white-space:nowrap}
.map-grid-toggle.is-grid-off{opacity:.92}
.map-stage.map-stage-scheme-dark{background:linear-gradient(180deg,#101827,#1f2937)}
.map-stage.map-stage-grid-off{background-size:auto}

html[data-theme="dark"] body{background:linear-gradient(180deg,#05070c,#0b1020);color:#e7eef9}
html[data-theme="dark"] #app.layout{background:linear-gradient(180deg,#060a12,#0e1626)}
html[data-theme="dark"] .sidebar{background:linear-gradient(180deg,#070d17,#0f1728);color:#e7eef9}
html[data-theme="dark"] .sidebar .panel{background:linear-gradient(180deg,rgba(6,12,22,.98),rgba(9,17,31,.97));border:1px solid rgba(82,100,131,.55);border-radius:20px;box-shadow:0 18px 40px rgba(1,5,14,.55),inset 0 1px 0 rgba(255,255,255,.04)}
html[data-theme="dark"] .panel-head{padding:8px 8px 12px}
html[data-theme="dark"] .search{background:linear-gradient(180deg,rgba(22,31,49,.98),rgba(16,24,40,.96));border-color:rgba(111,131,165,.56);color:#eef4ff;box-shadow:inset 0 1px 2px rgba(0,0,0,.45),0 8px 18px rgba(2,6,23,.18)}
html[data-theme="dark"] .tree-block{background:linear-gradient(180deg,#131d2f,#0e1626);border-color:rgba(102,121,154,.52);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 14px 28px rgba(2,6,23,.26)}
html[data-theme="dark"] .tree-header{background:linear-gradient(180deg,rgba(40,54,78,.96),rgba(24,35,56,.94));border-bottom-color:rgba(118,138,171,.42);color:#f8fbff}
html[data-theme="dark"] .tree-row:hover{background:rgba(59,130,246,.18);box-shadow:inset 0 0 0 1px rgba(96,165,250,.14),0 10px 20px rgba(2,6,23,.18)}
html[data-theme="dark"] .tree-row.selected{background:linear-gradient(180deg,#2f6df0,#1d4ed8);box-shadow:0 10px 22px rgba(30,64,175,.36), inset 0 1px 0 rgba(255,255,255,.18)}
html[data-theme="dark"] .tag{background:rgba(255,255,255,.08);border-color:rgba(120,138,170,.42);color:#d9e7fb}
html[data-theme="dark"] .workspace-shell,html[data-theme="dark"] .map-shell{background:#0d1524}
html[data-theme="dark"] .map-stage{background:linear-gradient(180deg,#eef2f7,#d8e1ec)}
html[data-theme="dark"] #mapCanvas{background:#eaf0f6}
html[data-theme="dark"] #mapCanvas3d{background:linear-gradient(180deg,#edf3fb,#dfe8f4)}
html[data-theme="dark"] .statusbar,html[data-theme="dark"] .map-cursor-coords,html[data-theme="dark"] .map-scale,html[data-theme="dark"] .map-legend,html[data-theme="dark"] .properties,html[data-theme="dark"] .ctx-menu,html[data-theme="dark"] .dialog{background:rgba(11,18,31,.94);border-color:rgba(106,124,156,.48);color:#e7eef9;box-shadow:0 20px 42px rgba(2,6,23,.48)}
html[data-theme="dark"] .ctx-item:hover,html[data-theme="dark"] .ctx-mode-row:hover{background:rgba(59,130,246,.16)}
html[data-theme="dark"] .table-icon-btn{background:linear-gradient(180deg,rgba(39,51,73,.98),rgba(17,24,39,.98));border-color:rgba(106,124,156,.5);color:#edf4ff;box-shadow:0 1px 0 rgba(255,255,255,.04),0 10px 24px rgba(2,6,23,.28)}
html[data-theme="dark"] .table-icon-btn:hover{border-color:#7fb1ff;background:linear-gradient(180deg,rgba(46,63,92,.98),rgba(22,31,49,.98))}
html[data-theme="dark"] .theme-toggle,
html[data-theme="dark"] .map-appearance-toggle,
html[data-theme="dark"] .map-grid-toggle{background:linear-gradient(180deg,rgba(38,56,92,.96),rgba(20,31,52,.98));color:#eff6ff}
html[data-theme="dark"] .theme-toggle.is-dark-mode,
html[data-theme="dark"] .map-appearance-toggle.is-dark-mode,
html[data-theme="dark"] .map-grid-toggle.active{border-color:#93c5fd;box-shadow:0 0 0 2px rgba(96,165,250,.18),0 10px 22px rgba(30,64,175,.2)}
html[data-theme="dark"] .map-grid-toggle.is-grid-off{background:linear-gradient(180deg,rgba(30,41,59,.94),rgba(15,23,42,.96));color:#d6e1f3}
html[data-theme="dark"] .dialog::backdrop{background:rgba(2,6,23,.72)}
html[data-theme="dark"] .dialog-body{background:linear-gradient(180deg,#0f172a,#111c31);color:#e7eef9}
html[data-theme="dark"] .dialog-actions{border-top:1px solid rgba(82,100,131,.45);padding-top:12px}
html[data-theme="dark"] .grid2 input,
html[data-theme="dark"] .grid2 select,
html[data-theme="dark"] .dialog-body input,
html[data-theme="dark"] .dialog-body select,
html[data-theme="dark"] .dialog-body textarea{background:rgba(17,24,39,.9);border:1px solid rgba(106,124,156,.52);color:#eff6ff;box-shadow:inset 0 1px 2px rgba(0,0,0,.34)}
html[data-theme="dark"] .dialog-body input::placeholder,
html[data-theme="dark"] .dialog-body textarea::placeholder{color:#8ea0b8}
html[data-theme="dark"] .result-box{background:#07111f;color:#c7f9d4;border:1px solid rgba(52,211,153,.24)}
html[data-theme="dark"] .bulk-floating-shell,
html[data-theme="dark"] .prop-window-shell,
html[data-theme="dark"] .scene3d-window-shell{background:#0d1524;border:1px solid rgba(82,100,131,.58);box-shadow:0 24px 60px rgba(2,6,23,.56)}
html[data-theme="dark"] .table-window-head,
html[data-theme="dark"] .bulk-window-head{background:linear-gradient(180deg,#182235,#101827);border-bottom-color:rgba(82,100,131,.5);color:#f8fbff}
html[data-theme="dark"] .table-window-title{color:#f8fbff}
html[data-theme="dark"] .table-window-subtitle{color:#9db1cc}
html[data-theme="dark"] .bulk-window-content,
html[data-theme="dark"] .process-layout,
html[data-theme="dark"] .scene3d-window-shell .scene3d-dialog-body,
html[data-theme="dark"] .prop-window-shell .prop-content,
html[data-theme="dark"] .prop-window-shell .prop-section,
html[data-theme="dark"] .prop-window-shell .prop-symbology-scroll,
html[data-theme="dark"] .prop-window-shell .sym-renderer-side-sticky,
html[data-theme="dark"] .prop-window-shell .qgis-symbol-sidebar-v2-structure{background:linear-gradient(180deg,#0f172a,#111c31);color:#e7eef9}
html[data-theme="dark"] .bulk-window-content .bulk-card,
html[data-theme="dark"] .save-db-card,
html[data-theme="dark"] .process-detail-head-card,
html[data-theme="dark"] .process-help-card,
html[data-theme="dark"] .process-detail-card,
html[data-theme="dark"] .history-entry,
html[data-theme="dark"] .history-empty,
html[data-theme="dark"] .prop-window-shell .qgis-preview-card,
html[data-theme="dark"] .prop-window-shell .sym-renderer-summary-card,
html[data-theme="dark"] .prop-window-shell .sym-panel-details,
html[data-theme="dark"] .prop-window-shell .prop-renderer-panel,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-panel,
html[data-theme="dark"] .prop-window-shell .prop-head-panel{background:linear-gradient(180deg,#182235,#111827);border-color:rgba(94,112,145,.5);box-shadow:0 10px 22px rgba(2,6,23,.22), inset 0 1px 0 rgba(255,255,255,.03)}
html[data-theme="dark"] .bulk-window-content .bulk-card h5,
html[data-theme="dark"] .save-db-card-head h5,
html[data-theme="dark"] .process-detail-head-card h3,
html[data-theme="dark"] .prop-window-shell .qgis-preview-meta strong,
html[data-theme="dark"] .prop-window-shell .prop-head-panel strong,
html[data-theme="dark"] .prop-window-shell .sym-panel-summary,
html[data-theme="dark"] .prop-window-shell .prop-tab{color:#f8fbff}
html[data-theme="dark"] .bulk-window-content .bulk-help,
html[data-theme="dark"] .save-db-card-head p,
html[data-theme="dark"] .process-detail-head-card p,
html[data-theme="dark"] .process-help-card,
html[data-theme="dark"] .process-status-copy p,
html[data-theme="dark"] .prop-help,
html[data-theme="dark"] .history-entry-step,
html[data-theme="dark"] .history-entry-sub,
html[data-theme="dark"] .history-filter-hint,
html[data-theme="dark"] .prop-window-shell .qgis-preview-meta span,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-summary-hint,
html[data-theme="dark"] .prop-window-shell .sym-panel-summary-hint,
html[data-theme="dark"] .prop-window-shell .prop-head-panel .prop-head-layer{color:#9db1cc}
html[data-theme="dark"] .bulk-window-content .prop-field span,
html[data-theme="dark"] .history-kind-badge,
html[data-theme="dark"] .history-layer-chip{color:#e7eef9}
html[data-theme="dark"] .bulk-window-content .prop-field input,
html[data-theme="dark"] .bulk-window-content .prop-field textarea,
html[data-theme="dark"] .bulk-window-content .prop-field select,
html[data-theme="dark"] .bulk-window-content input,
html[data-theme="dark"] .bulk-window-content select,
html[data-theme="dark"] .bulk-window-content textarea,
html[data-theme="dark"] .process-search,
html[data-theme="dark"] .history-filter-select,
html[data-theme="dark"] .prop-window-shell input,
html[data-theme="dark"] .prop-window-shell select,
html[data-theme="dark"] .prop-window-shell textarea{background:rgba(17,24,39,.9);border-color:rgba(106,124,156,.52);color:#eff6ff;box-shadow:inset 0 1px 2px rgba(0,0,0,.3)}
html[data-theme="dark"] .bulk-window-content code{background:rgba(37,99,235,.18);color:#dbeafe}
html[data-theme="dark"] .process-toolbar{background:linear-gradient(180deg,#182235,#101827);border-bottom-color:rgba(82,100,131,.5)}
html[data-theme="dark"] .process-group-head,
html[data-theme="dark"] .process-row{background:linear-gradient(180deg,#172133,#111827);border-color:rgba(94,112,145,.46);color:#e7eef9}
html[data-theme="dark"] .process-row:hover,
html[data-theme="dark"] .process-group-head:hover,
html[data-theme="dark"] .history-entry:hover{border-color:#7fb1ff;box-shadow:0 0 0 1px rgba(127,177,255,.16),0 14px 28px rgba(2,6,23,.22)}
html[data-theme="dark"] .history-toolbar{border-top-color:rgba(82,100,131,.42)}
html[data-theme="dark"] .history-empty{background:rgba(255,255,255,.03);border-style:solid}
html[data-theme="dark"] .history-kind-badge,
html[data-theme="dark"] .history-layer-chip{background:rgba(59,130,246,.16);border-color:rgba(96,165,250,.28)}
html[data-theme="dark"] .prop-window-shell .prop-nav{background:linear-gradient(180deg,#162133,#0f172a);border-right:1px solid rgba(82,100,131,.42)}
html[data-theme="dark"] .prop-window-shell .prop-tab.active,
html[data-theme="dark"] .prop-window-shell .prop-tab:hover{background:rgba(59,130,246,.18)}
html[data-theme="dark"] .prop-window-shell .qgis-preview-stage{background:repeating-linear-gradient(45deg,#121b2b 0 10px,#172236 10px 20px);border-color:rgba(106,124,156,.42)}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-layer{background:linear-gradient(180deg,#172133,#111827);border-color:rgba(94,112,145,.46);color:#e7eef9}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-child.active{border-color:#7fb1ff;box-shadow:0 0 0 1px rgba(127,177,255,.24) inset;background:linear-gradient(180deg,#1b2940,#14213a)}
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-header,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-top{background:linear-gradient(180deg,#162133,#111827);border-color:rgba(82,100,131,.42)}
html[data-theme="dark"] .prop-window-shell .sym-panel-details[open]>.sym-panel-summary{border-bottom-color:rgba(82,100,131,.42);background:rgba(255,255,255,.04)}
html[data-theme="dark"] .prop-window-shell .sym-renderer-workbench-splitter{background:linear-gradient(180deg,#23334d,#162133)}
html[data-theme="dark"] .scene3d-window-shell .scene3d-dialog-body .prop-actions{background:linear-gradient(180deg,rgba(15,23,42,0),rgba(15,23,42,.96) 20%,rgba(15,23,42,.99))}


/* Theme and modal polish v1.7.408 */
.catalog-panel .search-wrap{padding:4px 4px 10px}
.catalog-panel .search{min-height:40px;padding:7px 12px;font-size:13px;line-height:1.2}

html[data-theme="light"] .catalog-panel .search{background:linear-gradient(180deg,#ffffff,#f4f7fb);border-color:#c8d1dd;box-shadow:inset 0 1px 1px rgba(255,255,255,.9),0 4px 12px rgba(15,23,42,.04);color:#0f172a}
html[data-theme="light"] .sidebar .panel{background:linear-gradient(180deg,#eef2f7,#e5ebf2);border:1px solid #cfd7e2;border-radius:20px;box-shadow:0 10px 24px rgba(15,23,42,.06),inset 0 1px 0 rgba(255,255,255,.72)}
html[data-theme="light"] .tree-block{background:linear-gradient(180deg,#f7f9fc,#edf2f8);border-color:#c7d1de;box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 6px 18px rgba(15,23,42,.04)}
html[data-theme="light"] .tree-header{background:linear-gradient(180deg,#ffffff,#edf2f7);color:#0f172a}

html[data-theme="light"] :is(.dialog,.dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-floating-shell,.table-floating-shell,.process-floating,.history-floating,.save-db-floating,.feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-dialog,.command-help-shell){
  --ark-surface-0:#e7edf5;
  --ark-surface-1:#ffffff;
  --ark-surface-2:#f5f8fc;
  --ark-surface-3:#eef3f9;
  --ark-border:#c9d3e0;
  --ark-border-strong:#b8c4d3;
  --ark-text:#334155;
  --ark-text-strong:#0f172a;
  --ark-text-soft:#64748b;
  --ark-shadow:0 20px 46px rgba(15,23,42,.16);
  color:var(--ark-text);
}

html[data-theme="dark"] :is(.dialog,.dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-floating-shell,.table-floating-shell,.process-floating,.history-floating,.save-db-floating,.feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-dialog,.command-help-shell){
  --ark-surface-0:#081120;
  --ark-surface-1:#101b2e;
  --ark-surface-2:#16243b;
  --ark-surface-3:#1c2b45;
  --ark-border:#5d708f;
  --ark-border-strong:#7387a8;
  --ark-text:#d9e5f6;
  --ark-text-strong:#f8fbff;
  --ark-text-soft:#9fb1ca;
  --ark-shadow:0 26px 64px rgba(2,6,23,.62);
  color:var(--ark-text);
}

html[data-theme="light"] :is(.prop-window-shell,.scene3d-window-shell,.bulk-floating-shell,.table-floating-shell,.process-floating,.history-floating,.save-db-floating,.feature-designer-modal-dialog,.feature-designer-tree-context-menu,.dialog,.command-help-dialog){
  background:linear-gradient(180deg,var(--ark-surface-0),#dde6f0);
  border-color:var(--ark-border);
  box-shadow:var(--ark-shadow);
}
html[data-theme="dark"] :is(.prop-window-shell,.scene3d-window-shell,.bulk-floating-shell,.table-floating-shell,.process-floating,.history-floating,.save-db-floating,.feature-designer-modal-dialog,.feature-designer-tree-context-menu,.dialog,.command-help-dialog){
  background:linear-gradient(180deg,#0a1324,#10192d);
  border-color:rgba(115,135,168,.64);
  box-shadow:var(--ark-shadow);
}
html[data-theme="dark"] .prop-window-overlay{background:rgba(2,6,23,.54)}

html[data-theme="light"] :is(.prop-window-titlebar,.table-window-head,.bulk-window-head,.feature-designer-modal-head,.command-help-topbar){
  background:linear-gradient(180deg,#f6f9fc,#dde5ef);
  border-bottom:1px solid var(--ark-border-strong);
  color:var(--ark-text-strong);
}
html[data-theme="dark"] :is(.prop-window-titlebar,.table-window-head,.bulk-window-head,.feature-designer-modal-head,.command-help-topbar){
  background:linear-gradient(180deg,#152238,#0d1729);
  border-bottom:1px solid rgba(115,135,168,.56);
  color:var(--ark-text-strong);
}
html[data-theme="light"] :is(.prop-window-titlegroup strong,.table-window-title,.feature-designer-modal-head strong,.command-help-card-title,.command-help-current-title,.command-help-section-head strong){color:var(--ark-text-strong)}
html[data-theme="light"] :is(.prop-window-titlegroup span,.table-window-subtitle,.feature-designer-modal-head span,.command-help-sub,.command-help-count,.command-help-current-copy){color:var(--ark-text-soft)}
html[data-theme="dark"] :is(.prop-window-titlegroup strong,.table-window-title,.feature-designer-modal-head strong,.command-help-card-title,.command-help-current-title,.command-help-section-head strong){color:var(--ark-text-strong)}
html[data-theme="dark"] :is(.prop-window-titlegroup span,.table-window-subtitle,.feature-designer-modal-head span,.command-help-sub,.command-help-count,.command-help-current-copy){color:var(--ark-text-soft)}

html[data-theme="light"] :is(
  .dialog-body,.bulk-window-content,.process-layout,.history-content,.save-db-content,
  .prop-window-shell .prop-content,.prop-window-shell .prop-section,.prop-window-shell .prop-symbology-scroll,
  .scene3d-window-shell .scene3d-dialog-body,.feature-editor-content,.feature-designer-modal-body,.feature-designer-modal-body-preview,
  .feature-designer-board-main,.feature-designer-tree-panel,.command-help-shell
){background:linear-gradient(180deg,var(--ark-surface-0),#dfe7f1);color:var(--ark-text)}

html[data-theme="dark"] :is(
  .dialog-body,.bulk-window-content,.process-layout,.history-content,.save-db-content,
  .prop-window-shell .prop-content,.prop-window-shell .prop-section,.prop-window-shell .prop-symbology-scroll,
  .scene3d-window-shell .scene3d-dialog-body,.feature-editor-content,.feature-designer-modal-body,.feature-designer-modal-body-preview,
  .feature-designer-board-main,.feature-designer-tree-panel,.command-help-shell
){background:linear-gradient(180deg,#0c1526,#111b2f);color:var(--ark-text)}

html[data-theme="light"] :is(
  .prop-window-shell .prop-nav,.feature-editor-nav,.feature-designer-tree-panel,
  .process-tree,.history-list,.table-grid-wrap,.table-shell
){background:linear-gradient(180deg,#eef3f8,#dde5ef);border-color:var(--ark-border)}

html[data-theme="dark"] :is(
  .prop-window-shell .prop-nav,.feature-editor-nav,.feature-designer-tree-panel,
  .process-tree,.history-list,.table-grid-wrap,.table-shell
){background:linear-gradient(180deg,#0f1a2d,#0a1322);border-color:rgba(115,135,168,.42)}

html[data-theme="light"] :is(
  .qgis-group,.qgis-preview-card,.sym-renderer-summary-card,.sym-panel-details,.prop-renderer-panel,.qgis-renderer-workbench-panel,
  .prop-head-panel,.feature-field-card,.feature-preview-field,.feature-designer-card,.feature-entry-btn,.feature-entry-panel-head,
  .feature-editor-toolbar,.feature-editor-filterbar,.feature-designer-modal-note,.feature-condition-row,.feature-designer-board-body,
  .feature-designer-board-group-head,.feature-designer-subgroup-head,.feature-designer-board-chip,.feature-designer-tree-context-note,
  .process-detail-card,.process-help-card,.process-detail-head-card,.process-empty,.process-run-state,.process-progress-block,
  .process-summary-block,.save-db-card,.save-db-config-card,.save-db-status-card,.bulk-card,.history-entry,.history-empty,
  .table-summary-row,.table-toolbar,.table-columns-menu,.table-columns-item,.command-help-card,.command-help-current,.command-help-list-panel,.command-help-section-panel
){background:linear-gradient(180deg,var(--ark-surface-1),var(--ark-surface-2));border-color:var(--ark-border);box-shadow:0 10px 24px rgba(15,23,42,.06)}

html[data-theme="dark"] :is(
  .qgis-group,.qgis-preview-card,.sym-renderer-summary-card,.sym-panel-details,.prop-renderer-panel,.qgis-renderer-workbench-panel,
  .prop-head-panel,.feature-field-card,.feature-preview-field,.feature-designer-card,.feature-entry-btn,.feature-entry-panel-head,
  .feature-editor-toolbar,.feature-editor-filterbar,.feature-designer-modal-note,.feature-condition-row,.feature-designer-board-body,
  .feature-designer-board-group-head,.feature-designer-subgroup-head,.feature-designer-board-chip,.feature-designer-tree-context-note,
  .process-detail-card,.process-help-card,.process-detail-head-card,.process-empty,.process-run-state,.process-progress-block,
  .process-summary-block,.save-db-card,.save-db-config-card,.save-db-status-card,.bulk-card,.history-entry,.history-empty,
  .table-summary-row,.table-toolbar,.table-columns-menu,.table-columns-item,.command-help-card,.command-help-current,.command-help-list-panel,.command-help-section-panel
){background:linear-gradient(180deg,var(--ark-surface-2),var(--ark-surface-1));border:1px solid rgba(115,135,168,.52);box-shadow:0 16px 32px rgba(2,6,23,.34),inset 0 1px 0 rgba(255,255,255,.03)}

html[data-theme="dark"] :is(.qgis-renderer-workbench-header,.qgis-renderer-workbench-top,.prop-window-shell .prop-head-panel,.feature-editor-toolbar,.feature-editor-filterbar,.feature-entry-panel-head,.command-help-head,.command-help-current,.command-help-card-head){background:linear-gradient(180deg,var(--ark-surface-3),var(--ark-surface-2))}
html[data-theme="light"] :is(.qgis-renderer-workbench-header,.qgis-renderer-workbench-top,.prop-window-shell .prop-head-panel,.feature-editor-toolbar,.feature-editor-filterbar,.feature-entry-panel-head,.command-help-head,.command-help-current,.command-help-card-head){background:linear-gradient(180deg,#f7f9fc,#e9eff6)}

html[data-theme="light"] :is(.prop-tab,.qgis-label-tab,.feature-group-tab,.feature-designer-modal-tab,.command-help-tab){background:linear-gradient(180deg,#ffffff,#eef3f8);border-color:var(--ark-border);color:var(--ark-text)}
html[data-theme="light"] :is(.prop-tab.active,.prop-tab:hover,.qgis-label-tab.active,.qgis-label-tab:hover,.feature-group-tab.active,.feature-group-tab:hover,.feature-designer-modal-tab.active,.feature-designer-modal-tab:hover,.command-help-tab.active,.command-help-tab:hover){background:linear-gradient(180deg,#ffffff,#e7efff);border-color:#8cb7ff;color:#1847a8;box-shadow:0 0 0 3px rgba(44,106,242,.10)}
html[data-theme="dark"] :is(.prop-tab,.qgis-label-tab,.feature-group-tab,.feature-designer-modal-tab,.command-help-tab){background:linear-gradient(180deg,#132238,#0f1a2d);border-color:rgba(115,135,168,.48);color:var(--ark-text)}
html[data-theme="dark"] :is(.prop-tab.active,.prop-tab:hover,.qgis-label-tab.active,.qgis-label-tab:hover,.feature-group-tab.active,.feature-group-tab:hover,.feature-designer-modal-tab.active,.feature-designer-modal-tab:hover,.command-help-tab.active,.command-help-tab:hover){background:linear-gradient(180deg,#1b2d48,#163258);border-color:#8ec5ff;color:#f8fbff;box-shadow:0 0 0 3px rgba(59,130,246,.16)}

html[data-theme="light"] :is(
  .dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-window-content,.table-floating-shell,.process-layout,.history-content,.save-db-content,
  .feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-shell
) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="color"]),select,textarea){
  background:linear-gradient(180deg,#ffffff,#f4f7fb);
  border:1px solid var(--ark-border);
  color:var(--ark-text-strong);
  box-shadow:inset 0 1px 2px rgba(15,23,42,.04);
  color-scheme:light;
}
html[data-theme="light"] :is(
  .dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-window-content,.table-floating-shell,.process-layout,.history-content,.save-db-content,
  .feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-shell
) :is(input,select,textarea)::placeholder{color:var(--ark-text-soft);opacity:1}
html[data-theme="light"] :is(
  .dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-window-content,.table-floating-shell,.process-layout,.history-content,.save-db-content,
  .feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-shell
) :is(select option,optgroup){background:#ffffff;color:#0f172a}

html[data-theme="dark"] :is(
  .dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-window-content,.table-floating-shell,.process-layout,.history-content,.save-db-content,
  .feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-shell
) :is(input:not([type="checkbox"]):not([type="radio"]):not([type="color"]),select,textarea){
  background:linear-gradient(180deg,#17263d,#122033);
  border:1px solid rgba(115,135,168,.58);
  color:var(--ark-text-strong);
  box-shadow:inset 0 1px 2px rgba(0,0,0,.34),0 1px 0 rgba(255,255,255,.03);
  color-scheme:dark;
}
html[data-theme="dark"] :is(
  .dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-window-content,.table-floating-shell,.process-layout,.history-content,.save-db-content,
  .feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-shell
) :is(input,select,textarea)::placeholder{color:var(--ark-text-soft);opacity:1}
html[data-theme="dark"] :is(
  .dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-window-content,.table-floating-shell,.process-layout,.history-content,.save-db-content,
  .feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-shell
) :is(select option,optgroup){background:#0f1a2d;color:#f8fbff}

html[data-theme="light"] :is(
  .dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-window-content,.table-floating-shell,.process-layout,.history-content,.save-db-content,
  .feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-shell
) :is(label,strong,h1,h2,h3,h4,h5,.qgis-group-title,.prop-label,.feature-field-title,.feature-designer-card-titlewrap strong,.process-card-head strong,.history-entry-step){color:var(--ark-text-strong)}
html[data-theme="light"] :is(
  .dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-window-content,.table-floating-shell,.process-layout,.history-content,.save-db-content,
  .feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-shell
) :is(span,small,p,.prop-help,.panel-sub,.feature-field-help,.feature-preview-help,.process-path,.process-card-head span,.history-entry-sub,.muted){color:var(--ark-text-soft)}

html[data-theme="dark"] :is(
  .dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-window-content,.table-floating-shell,.process-layout,.history-content,.save-db-content,
  .feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-shell
) :is(label,strong,h1,h2,h3,h4,h5,.qgis-group-title,.prop-label,.feature-field-title,.feature-designer-card-titlewrap strong,.process-card-head strong,.history-entry-step){color:var(--ark-text-strong)}
html[data-theme="dark"] :is(
  .dialog-body,.prop-window-shell,.scene3d-window-shell,.bulk-window-content,.table-floating-shell,.process-layout,.history-content,.save-db-content,
  .feature-designer-modal-dialog,.feature-designer-tree-context-menu,.command-help-shell
) :is(span,small,p,.prop-help,.feature-field-help,.feature-preview-help,.process-path,.process-card-head span,.history-entry-sub,.muted){color:var(--ark-text-soft)}

html[data-theme="dark"] .feature-designer-board-body,
html[data-theme="dark"] .feature-designer-tree-panel,
html[data-theme="dark"] .feature-designer-board-main{border-color:rgba(115,135,168,.46)}
html[data-theme="dark"] .feature-designer-create-dropzone,
html[data-theme="dark"] .feature-designer-subgroup-dropzone,
html[data-theme="dark"] .feature-preview-empty,
html[data-theme="dark"] .process-empty,
html[data-theme="dark"] .history-empty,
html[data-theme="dark"] .feature-designer-modal-note{background:rgba(255,255,255,.04);border-color:rgba(115,135,168,.42);color:var(--ark-text-soft)}
html[data-theme="dark"] .prop-window-shell .qgis-preview-stage,
html[data-theme="dark"] .qgis-label-editor-canvas-wrap canvas{background:repeating-linear-gradient(45deg,#16243a 0 10px,#132035 10px 20px);border-color:rgba(115,135,168,.46)}
html[data-theme="light"] .prop-window-shell .qgis-preview-stage,
html[data-theme="light"] .qgis-label-editor-canvas-wrap canvas{background:repeating-linear-gradient(45deg,#f9fbfd 0 10px,#edf2f8 10px 20px);border-color:var(--ark-border)}

html[data-theme="dark"] .scene3d-window-shell .scene3d-dialog-body .prop-actions,
html[data-theme="dark"] .prop-window-shell .prop-actions{background:linear-gradient(180deg,rgba(10,19,36,0),rgba(10,19,36,.94) 20%,rgba(10,19,36,.99))}
html[data-theme="light"] .scene3d-window-shell .scene3d-dialog-body .prop-actions,
html[data-theme="light"] .prop-window-shell .prop-actions{background:linear-gradient(180deg,rgba(231,237,245,0),rgba(231,237,245,.96) 20%,rgba(231,237,245,.99))}

/* Dark theme contrast pass v1.7.408 */
html[data-theme="dark"] .top-toolbar{
  background:linear-gradient(180deg,#08111f,#0b1425);
  border-bottom-color:rgba(123,145,182,.26);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03),0 14px 30px rgba(2,6,23,.38);
}
html[data-theme="dark"] .tool-group{
  background:linear-gradient(180deg,#16253c,#101a2c);
  border-color:rgba(124,146,183,.42);
  box-shadow:0 10px 24px rgba(2,6,23,.30),inset 0 1px 0 rgba(255,255,255,.05), inset 0 0 0 1px rgba(8,15,28,.42);
}
html[data-theme="dark"] .tool-group-label{
  background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,.04));
  border-color:rgba(132,156,198,.44);
  color:#e7f0ff;
}
html[data-theme="dark"] .tool-inline,
html[data-theme="dark"] .tool-check{
  background:linear-gradient(180deg,rgba(255,255,255,.08),rgba(255,255,255,.04));
  border-color:rgba(124,146,183,.38);
  color:#eaf1ff;
}
html[data-theme="dark"] .tool,
html[data-theme="dark"] .table-icon-btn{
  background:linear-gradient(180deg,#23324b,#152238);
  border-color:rgba(132,156,198,.44);
  color:#eef5ff;
}
html[data-theme="dark"] .tool.active,
html[data-theme="dark"] .tool:hover,
html[data-theme="dark"] .table-icon-btn:hover{
  border-color:#8ec5ff;
  color:#ffffff;
  box-shadow:0 0 0 2px rgba(96,165,250,.20),0 12px 26px rgba(30,64,175,.22);
}

html[data-theme="light"] .process-floating,
html[data-theme="light"] .prop-window-shell{
  box-shadow:0 24px 56px rgba(15,23,42,.16);
}
html[data-theme="light"] .process-layout,
html[data-theme="light"] .prop-window-shell .prop-content,
html[data-theme="light"] .prop-window-shell .prop-section{
  background:linear-gradient(180deg,#eef3f9,#e0e8f2);
}
html[data-theme="light"] .process-tree-wrap,
html[data-theme="light"] .prop-window-shell .prop-nav,
html[data-theme="light"] .prop-window-shell .qgis-symbol-sidebar-v2-structure{
  background:linear-gradient(180deg,#e7edf5,#d8e1ec);
  border-color:#c0ccd9;
}
html[data-theme="light"] .process-group-head,
html[data-theme="light"] .process-row,
html[data-theme="light"] .prop-window-shell .qgis-group,
html[data-theme="light"] .prop-window-shell .qgis-renderer-workbench-panel,
html[data-theme="light"] .prop-window-shell .qgis-preview-card,
html[data-theme="light"] .prop-window-shell .sym-renderer-summary-card,
html[data-theme="light"] .prop-window-shell .prop-renderer-panel,
html[data-theme="light"] .prop-window-shell .sym-panel-details,
html[data-theme="light"] .prop-window-shell .prop-head-panel{
  background:linear-gradient(180deg,#ffffff,#edf2f8);
  border-color:#c3cedd;
  box-shadow:0 10px 24px rgba(15,23,42,.06),inset 0 1px 0 rgba(255,255,255,.72);
}

html[data-theme="dark"] :is(.process-floating,.prop-window-shell){
  --ark-surface-0:#07101e;
  --ark-surface-1:#0e1829;
  --ark-surface-2:#17263b;
  --ark-surface-3:#21334e;
  --ark-border:#64789a;
  --ark-border-strong:#8aa6ce;
  --ark-text:#dce7f7;
  --ark-text-strong:#f8fbff;
  --ark-text-soft:#a8b8d1;
}
html[data-theme="dark"] .process-floating,
html[data-theme="dark"] .prop-window-shell{
  background:linear-gradient(180deg,#08111f,#0d1626);
  border-color:rgba(132,156,198,.50);
  box-shadow:0 28px 70px rgba(2,6,23,.66),0 0 0 1px rgba(8,15,28,.52);
}
html[data-theme="dark"] .process-floating .table-window-head,
html[data-theme="dark"] .prop-window-shell .prop-window-titlebar{
  background:linear-gradient(180deg,#15253d,#0d1728);
  border-bottom-color:rgba(132,156,198,.38);
}
html[data-theme="dark"] .process-toolbar{
  background:linear-gradient(180deg,#0f1b2f,#0c1525);
  border-bottom-color:rgba(132,156,198,.26);
}
html[data-theme="dark"] .process-layout{
  background:linear-gradient(180deg,#091223,#0d1729);
}
html[data-theme="dark"] .process-tree-wrap{
  background:linear-gradient(180deg,#091221,#08111d);
  border-right:1px solid rgba(132,156,198,.24);
  box-shadow:inset -1px 0 0 rgba(255,255,255,.02);
}
html[data-theme="dark"] .process-tree{
  background:linear-gradient(180deg,rgba(255,255,255,.02),rgba(255,255,255,0));
}
html[data-theme="dark"] .process-detail{
  background:linear-gradient(180deg,#0c1525,#0f1b2e);
}
html[data-theme="dark"] .process-group-head{
  background:linear-gradient(180deg,#132238,#0f192b);
  border-color:rgba(132,156,198,.42);
  color:#eef5ff;
  box-shadow:0 10px 24px rgba(2,6,23,.24), inset 0 1px 0 rgba(255,255,255,.04);
}
html[data-theme="dark"] .process-group-head:hover{
  background:linear-gradient(180deg,#1a2b44,#13243a);
  border-color:#8ec5ff;
}
html[data-theme="dark"] .process-group-chevron,
html[data-theme="dark"] .process-group-icon{color:#bfd7ff}
html[data-theme="dark"] .process-group-count{
  background:linear-gradient(180deg,#d8e6fb,#b8d2f5);
  color:#10213b;
  box-shadow:0 4px 10px rgba(0,0,0,.18);
}
html[data-theme="dark"] .process-row{
  background:linear-gradient(180deg,#1a2b45,#142238);
  border-color:rgba(132,156,198,.36);
  color:#edf4ff;
  box-shadow:0 12px 28px rgba(2,6,23,.18), inset 0 1px 0 rgba(255,255,255,.03);
}
html[data-theme="dark"] .process-row:hover{
  background:linear-gradient(180deg,#213653,#172741);
  border-color:#8ec5ff;
}
html[data-theme="dark"] .process-row.active{
  background:linear-gradient(180deg,#244166,#1a3050);
  border-color:#8ec5ff;
  box-shadow:0 0 0 2px rgba(96,165,250,.20),0 16px 32px rgba(30,64,175,.18);
}
html[data-theme="dark"] .process-row-copy strong,
html[data-theme="dark"] .process-detail-head-card h3,
html[data-theme="dark"] .process-card-head strong,
html[data-theme="dark"] .process-status-copy strong{color:#f8fbff}
html[data-theme="dark"] .process-row-copy small,
html[data-theme="dark"] .process-path,
html[data-theme="dark"] .process-card-head span,
html[data-theme="dark"] .process-detail-head-card p,
html[data-theme="dark"] .process-help-card,
html[data-theme="dark"] .process-status-copy p,
html[data-theme="dark"] .process-status-copy ul,
html[data-theme="dark"] .process-param-card small,
html[data-theme="dark"] .process-summary-title{color:#aebed6}
html[data-theme="dark"] .process-detail-head-card,
html[data-theme="dark"] .process-help-card,
html[data-theme="dark"] .process-detail-card,
html[data-theme="dark"] .process-progress-block,
html[data-theme="dark"] .process-summary-block,
html[data-theme="dark"] .process-run-state,
html[data-theme="dark"] .process-empty{
  background:linear-gradient(180deg,#17263b,#111d2f);
  border-color:rgba(132,156,198,.40);
  box-shadow:0 14px 30px rgba(2,6,23,.26), inset 0 1px 0 rgba(255,255,255,.03);
}
html[data-theme="dark"] .process-detail-head-card{background:linear-gradient(180deg,#1b2d47,#132239)}
html[data-theme="dark"] .process-summary-row{
  background:linear-gradient(180deg,#0f1b2c,#142238);
  color:#dce7f7;
}
html[data-theme="dark"] .process-summary-row strong{color:#f8fbff}
html[data-theme="dark"] .process-log-textarea{
  background:#0c1524;
  border-color:rgba(132,156,198,.38);
  color:#e8f1ff;
}
html[data-theme="dark"] .process-progress-bar{background:#0e1a2d;border:1px solid rgba(132,156,198,.24)}
html[data-theme="dark"] .process-search,
html[data-theme="dark"] .process-param-card input,
html[data-theme="dark"] .process-param-card select{
  background:linear-gradient(180deg,#0f1b2f,#122239);
  border-color:rgba(132,156,198,.46);
  color:#f4f8ff;
}
html[data-theme="dark"] .process-search::placeholder,
html[data-theme="dark"] .process-param-card input::placeholder{color:#9eb0ca}
html[data-theme="dark"] .process-param-label{color:#edf4ff}
html[data-theme="dark"] .process-badge{border-color:rgba(132,156,198,.38);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
html[data-theme="dark"] .process-actions.sticky-actions{
  background:linear-gradient(180deg,rgba(8,17,31,0),rgba(8,17,31,.94) 26%,rgba(8,17,31,.99));
}

html[data-theme="dark"] .prop-window-shell .prop-nav{
  background:linear-gradient(180deg,#091323,#08111e);
  border-right:1px solid rgba(132,156,198,.28);
  box-shadow:inset -1px 0 0 rgba(255,255,255,.03);
}
html[data-theme="dark"] .prop-window-shell .prop-nav-head{border-bottom-color:rgba(132,156,198,.34)}
html[data-theme="dark"] .prop-window-shell .prop-content,
html[data-theme="dark"] .prop-window-shell .prop-section{
  background:linear-gradient(180deg,#0b1526,#0f1a2d);
}
html[data-theme="dark"] .prop-window-shell .prop-tab{
  background:linear-gradient(180deg,#122137,#0d1829);
  border:1px solid rgba(132,156,198,.34);
  color:#eaf2ff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03);
}
html[data-theme="dark"] .prop-window-shell .prop-tab.active,
html[data-theme="dark"] .prop-window-shell .prop-tab:hover{
  background:linear-gradient(180deg,#1c3150,#163056);
  border-color:#8ec5ff;
  box-shadow:0 0 0 2px rgba(96,165,250,.16),0 10px 22px rgba(30,64,175,.18);
}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-sidebar-v2-structure{
  background:linear-gradient(180deg,#0a1323,#0d1728);
  border-right:1px solid rgba(132,156,198,.18);
}
html[data-theme="dark"] .prop-window-shell .qgis-group,
html[data-theme="dark"] .prop-window-shell .qgis-preview-card,
html[data-theme="dark"] .prop-window-shell .sym-renderer-summary-card,
html[data-theme="dark"] .prop-window-shell .sym-panel-details,
html[data-theme="dark"] .prop-window-shell .prop-renderer-panel,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-panel,
html[data-theme="dark"] .prop-window-shell .prop-head-panel{
  background:linear-gradient(180deg,#192b43,#122038);
  border:1px solid rgba(132,156,198,.42);
  box-shadow:0 16px 34px rgba(2,6,23,.22), inset 0 1px 0 rgba(255,255,255,.04);
}
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-header,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-top,
html[data-theme="dark"] .prop-window-shell .prop-head-panel{
  background:linear-gradient(180deg,#223754,#172843);
  border-color:rgba(132,156,198,.34);
}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-layer,
html[data-theme="dark"] .prop-window-shell .qgis-symbol-child,
html[data-theme="dark"] .prop-window-shell .sym-renderer-list .sym-renderer-row,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-list .qgis-renderer-item{
  background:linear-gradient(180deg,#102038,#14253f);
  border-color:rgba(132,156,198,.34);
  color:#edf4ff;
}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-child.active,
html[data-theme="dark"] .prop-window-shell .qgis-symbol-layer.active{
  background:linear-gradient(180deg,#214066,#193150);
  border-color:#8ec5ff;
  box-shadow:0 0 0 1px rgba(142,197,255,.24) inset,0 10px 24px rgba(30,64,175,.18);
}
html[data-theme="dark"] .prop-window-shell .qgis-preview-stage{
  background:linear-gradient(180deg,#d7dde7,#cfd7e4);
  border-color:rgba(132,156,198,.34);
}
html[data-theme="dark"] .prop-window-shell .qgis-group-title,
html[data-theme="dark"] .prop-window-shell .sym-panel-summary,
html[data-theme="dark"] .prop-window-shell .prop-head-panel strong{color:#f8fbff}
html[data-theme="dark"] .prop-window-shell .qgis-preview-meta span,
html[data-theme="dark"] .prop-window-shell .prop-help,
html[data-theme="dark"] .prop-window-shell .sym-panel-summary-hint,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-summary-hint,
html[data-theme="dark"] .prop-window-shell .prop-head-layer{color:#adc0da}
html[data-theme="dark"] .prop-window-shell input,
html[data-theme="dark"] .prop-window-shell select,
html[data-theme="dark"] .prop-window-shell textarea{
  background:linear-gradient(180deg,#10203a,#12233c);
  border-color:rgba(132,156,198,.48);
  color:#f4f8ff;
}
html[data-theme="dark"] .prop-window-shell input::placeholder,
html[data-theme="dark"] .prop-window-shell textarea::placeholder{color:#9eb0ca}
html[data-theme="dark"] .prop-window-shell select option{background:#0d1728;color:#f8fbff}
html[data-theme="dark"] .prop-window-shell .prop-actions,
html[data-theme="dark"] .prop-window-shell .sticky-actions{
  background:linear-gradient(180deg,rgba(8,17,31,0),rgba(8,17,31,.94) 26%,rgba(8,17,31,.99));
}
html[data-theme="dark"] .prop-window-shell .sticky-actions{padding-bottom:10px}


/* Symbology studio polish v1.7.409 */
html[data-theme="light"] .prop-window-shell .prop-section[data-prop-section="symbology"],
html[data-theme="light"] .prop-window-shell .prop-symbology-scroll{
  background:linear-gradient(180deg,#e8eef6,#dce6f1);
}
html[data-theme="light"] .prop-window-shell .qgis-symbol-sidebar-v2-structure{
  background:linear-gradient(180deg,#e3eaf3,#d4deea);
  border-right:1px solid rgba(160,176,198,.42);
  box-shadow:inset -1px 0 0 rgba(255,255,255,.55);
}
html[data-theme="light"] .prop-window-shell .qgis-symbol-sidebar-v2-structure .qgis-group,
html[data-theme="light"] .prop-window-shell .qgis-symbol-main-scroll .qgis-group,
html[data-theme="light"] .prop-window-shell .sym-panel-details,
html[data-theme="light"] .prop-window-shell .qgis-preview-card,
html[data-theme="light"] .prop-window-shell .sym-renderer-summary-card{
  background:linear-gradient(180deg,#ffffff,#edf3f9);
  border-color:#c5d0de;
  box-shadow:0 10px 24px rgba(15,23,42,.07), inset 0 1px 0 rgba(255,255,255,.82);
}
html[data-theme="light"] .prop-window-shell .qgis-renderer-workbench-header,
html[data-theme="light"] .prop-window-shell .qgis-renderer-workbench-top,
html[data-theme="light"] .prop-window-shell .prop-renderer-panel,
html[data-theme="light"] .prop-window-shell .prop-head-panel{
  background:linear-gradient(180deg,#f8fbff,#e7eef6);
  border-color:#c1ccdb;
}
html[data-theme="light"] .prop-window-shell .qgis-symbol-layer,
html[data-theme="light"] .prop-window-shell .qgis-symbol-child{
  background:linear-gradient(180deg,#ffffff,#edf3fa);
  border-color:#bfcada;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.85);
}
html[data-theme="light"] .prop-window-shell .qgis-symbol-root{
  background:linear-gradient(180deg,#edf4ff,#dde9f8);
}
html[data-theme="light"] .prop-window-shell .qgis-symbol-child.active,
html[data-theme="light"] .prop-window-shell .qgis-symbol-layer.active{
  background:linear-gradient(180deg,#eff6ff,#dceaff);
  border-color:#6da5ee;
  box-shadow:0 0 0 2px rgba(59,130,246,.12),0 12px 28px rgba(59,130,246,.08);
}
html[data-theme="light"] .prop-window-shell .qgis-layer-icon{
  background:linear-gradient(180deg,#f8fbff,#dfeaf8);
  border-color:#b5c6dc;
  color:#24415f;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9);
}
html[data-theme="light"] .prop-window-shell .qgis-preview-card-single{
  background:linear-gradient(180deg,#fdfefe,#eef4fb);
}
html[data-theme="light"] .prop-window-shell .qgis-preview-stage,
html[data-theme="light"] .prop-window-shell .qgis-preview-stage-single{
  background:repeating-linear-gradient(45deg,#fbfdff 0 10px,#edf3fa 10px 20px);
  border-color:#c6d2e0;
}
html[data-theme="light"] .prop-window-shell .qgis-preview-kicker,
html[data-theme="light"] .prop-window-shell .sym-panel-summary-hint{
  color:#5a7797;
}
html[data-theme="light"] .prop-window-shell .qgis-line-preset,
html[data-theme="light"] .prop-window-shell .qgis-preset{
  background:linear-gradient(180deg,#ffffff,#eef3f8);
  border-color:#bfcada;
  color:#26415f;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.88);
}
html[data-theme="light"] .prop-window-shell .qgis-line-preset:hover,
html[data-theme="light"] .prop-window-shell .qgis-preset:hover{
  border-color:#76a9ef;
  box-shadow:0 0 0 2px rgba(59,130,246,.08),0 10px 20px rgba(59,130,246,.07);
}
html[data-theme="light"] .prop-window-shell .qgis-line-preset.active,
html[data-theme="light"] .prop-window-shell .qgis-preset.active{
  background:linear-gradient(180deg,#eef6ff,#dbeafe);
  border-color:#60a5fa;
  box-shadow:0 0 0 2px rgba(59,130,246,.14),0 12px 24px rgba(59,130,246,.10);
}
html[data-theme="light"] .prop-window-shell .qgis-form-grid-head label,
html[data-theme="light"] .prop-window-shell .qgis-form-grid-head-4 label{
  color:#163454;
  font-weight:700;
}
html[data-theme="light"] .prop-window-shell .muted-input{
  background:linear-gradient(180deg,#eef3f8,#e3eaf3);
  color:#5d6d80;
  border-color:#c9d4e1;
}
html[data-theme="light"] .prop-window-shell .sym-panel-summary{
  background:linear-gradient(180deg,#f7fbff,#e7eef7);
}
html[data-theme="light"] .prop-window-shell .sym-panel-details[open]>.sym-panel-summary{
  background:linear-gradient(180deg,#edf5ff,#deebfb);
  border-bottom-color:#ccd7e4;
}
html[data-theme="light"] .prop-window-shell .sym-panel-body{
  background:linear-gradient(180deg,rgba(255,255,255,.55),rgba(238,243,249,.4));
}
html[data-theme="light"] .prop-window-shell .sym-rows-wrap .prop-grid-table thead th{
  background:linear-gradient(180deg,#f8fbff,#eaf0f7);
  color:#193553;
}

html[data-theme="dark"] .prop-window-shell .prop-content,
html[data-theme="dark"] .prop-window-shell .prop-section[data-prop-section="symbology"],
html[data-theme="dark"] .prop-window-shell .prop-symbology-scroll{
  background:linear-gradient(180deg,#09111f,#0d1829 28%,#112039 100%);
}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-sidebar-v2-structure{
  background:linear-gradient(180deg,#07101d,#0a1422 60%,#0d1828 100%);
  border-right:1px solid rgba(138,164,201,.24);
  box-shadow:inset -1px 0 0 rgba(255,255,255,.03), 14px 0 28px rgba(2,6,23,.14);
}
html[data-theme="dark"] .prop-window-shell .qgis-group,
html[data-theme="dark"] .prop-window-shell .qgis-preview-card,
html[data-theme="dark"] .prop-window-shell .sym-renderer-summary-card,
html[data-theme="dark"] .prop-window-shell .sym-panel-details,
html[data-theme="dark"] .prop-window-shell .prop-renderer-panel,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-panel,
html[data-theme="dark"] .prop-window-shell .prop-head-panel{
  background:linear-gradient(180deg,#1c2f49,#14253c 44%,#112035 100%);
  border:1px solid rgba(139,166,204,.44);
  box-shadow:0 18px 34px rgba(2,6,23,.28), inset 0 1px 0 rgba(255,255,255,.05), inset 0 -1px 0 rgba(0,0,0,.16);
}
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-header,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-top,
html[data-theme="dark"] .prop-window-shell .prop-renderer-panel,
html[data-theme="dark"] .prop-window-shell .prop-head-panel{
  background:linear-gradient(180deg,#263d5d,#1a2f4b 55%,#162842 100%);
  border-color:rgba(139,166,204,.40);
}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-root{
  background:linear-gradient(180deg,#12233a,#0e1c2f);
  border-color:rgba(126,153,191,.32);
}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-layer,
html[data-theme="dark"] .prop-window-shell .qgis-symbol-child,
html[data-theme="dark"] .prop-window-shell .sym-renderer-list .sym-renderer-row,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-list .qgis-renderer-item{
  background:linear-gradient(180deg,#13243d,#102036);
  border-color:rgba(126,153,191,.36);
  color:#edf4ff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-layer:hover,
html[data-theme="dark"] .prop-window-shell .qgis-symbol-child:hover,
html[data-theme="dark"] .prop-window-shell .qgis-line-preset:hover,
html[data-theme="dark"] .prop-window-shell .qgis-preset:hover{
  border-color:#8ec5ff;
  background:linear-gradient(180deg,#1a3050,#142743);
  box-shadow:0 0 0 2px rgba(96,165,250,.12),0 12px 28px rgba(2,6,23,.18);
}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-child.active,
html[data-theme="dark"] .prop-window-shell .qgis-symbol-layer.active{
  background:linear-gradient(180deg,#27507b,#1b3d63 55%,#173555 100%);
  border-color:#8ec5ff;
  box-shadow:0 0 0 2px rgba(96,165,250,.18),0 14px 32px rgba(30,64,175,.24), inset 0 1px 0 rgba(255,255,255,.06);
}
html[data-theme="dark"] .prop-window-shell .qgis-layer-icon{
  background:linear-gradient(180deg,#203755,#17263d);
  border-color:rgba(126,153,191,.42);
  color:#dbeafe;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-layer strong,
html[data-theme="dark"] .prop-window-shell .qgis-symbol-layer .qgis-layer-meta strong,
html[data-theme="dark"] .prop-window-shell .qgis-preview-meta strong,
html[data-theme="dark"] .prop-window-shell .qgis-group-title,
html[data-theme="dark"] .prop-window-shell .sym-panel-summary,
html[data-theme="dark"] .prop-window-shell .prop-head-panel strong{
  color:#f8fbff;
}
html[data-theme="dark"] .prop-window-shell .qgis-symbol-layer small,
html[data-theme="dark"] .prop-window-shell .qgis-preview-meta span,
html[data-theme="dark"] .prop-window-shell .qgis-preview-kicker,
html[data-theme="dark"] .prop-window-shell .prop-help,
html[data-theme="dark"] .prop-window-shell .sym-panel-summary-hint,
html[data-theme="dark"] .prop-window-shell .qgis-renderer-workbench-summary-hint,
html[data-theme="dark"] .prop-window-shell .prop-head-layer{
  color:#b7cae6;
}
html[data-theme="dark"] .prop-window-shell .qgis-preview-card-single{
  background:linear-gradient(180deg,#1f3551,#16273f 55%,#132138);
}
html[data-theme="dark"] .prop-window-shell .qgis-preview-stage,
html[data-theme="dark"] .prop-window-shell .qgis-preview-stage-single{
  background:linear-gradient(180deg,#dbe3ee,#cdd7e6);
  border:1px solid rgba(143,167,201,.38);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.44), 0 10px 18px rgba(2,6,23,.18);
}
html[data-theme="dark"] .prop-window-shell .qgis-line-preset,
html[data-theme="dark"] .prop-window-shell .qgis-preset{
  background:linear-gradient(180deg,#203654,#172941);
  border-color:rgba(126,153,191,.40);
  color:#e8f1ff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
html[data-theme="dark"] .prop-window-shell .qgis-line-preset.active,
html[data-theme="dark"] .prop-window-shell .qgis-preset.active{
  background:linear-gradient(180deg,#2e5f94,#224873 55%,#1b3c61);
  border-color:#9fd4ff;
  color:#ffffff;
  box-shadow:0 0 0 2px rgba(96,165,250,.20),0 16px 30px rgba(30,64,175,.22), inset 0 1px 0 rgba(255,255,255,.10);
}
html[data-theme="dark"] .prop-window-shell .qgis-line-preset span:last-child,
html[data-theme="dark"] .prop-window-shell .qgis-preset span:last-child,
html[data-theme="dark"] .prop-window-shell .qgis-form-grid-head label,
html[data-theme="dark"] .prop-window-shell .qgis-form-grid-head-4 label{
  color:#edf4ff;
  font-weight:700;
}
html[data-theme="dark"] .prop-window-shell .muted-input{
  background:linear-gradient(180deg,#18273d,#142237);
  color:#b7c6d9;
  border-color:rgba(126,153,191,.34);
}
html[data-theme="dark"] .prop-window-shell .qgis-form-grid-head input,
html[data-theme="dark"] .prop-window-shell .qgis-form-grid-head select,
html[data-theme="dark"] .prop-window-shell .qgis-form-grid-head-4 input,
html[data-theme="dark"] .prop-window-shell .qgis-form-grid-head-4 select,
html[data-theme="dark"] .prop-window-shell input,
html[data-theme="dark"] .prop-window-shell select,
html[data-theme="dark"] .prop-window-shell textarea{
  background:linear-gradient(180deg,#0f1d31,#12233a);
  border-color:rgba(138,164,201,.52);
  color:#f5f9ff;
  box-shadow:inset 0 1px 2px rgba(0,0,0,.36),0 1px 0 rgba(255,255,255,.03);
}
html[data-theme="dark"] .prop-window-shell .qgis-form-grid-head input:focus,
html[data-theme="dark"] .prop-window-shell .qgis-form-grid-head select:focus,
html[data-theme="dark"] .prop-window-shell .qgis-form-grid-head-4 input:focus,
html[data-theme="dark"] .prop-window-shell .qgis-form-grid-head-4 select:focus,
html[data-theme="dark"] .prop-window-shell input:focus,
html[data-theme="dark"] .prop-window-shell select:focus,
html[data-theme="dark"] .prop-window-shell textarea:focus{
  outline:none;
  border-color:#9fd4ff;
  box-shadow:0 0 0 3px rgba(96,165,250,.18), inset 0 1px 2px rgba(0,0,0,.32);
}
html[data-theme="dark"] .prop-window-shell .sym-panel-summary{
  background:linear-gradient(180deg,#213650,#182a43);
}
html[data-theme="dark"] .prop-window-shell .sym-panel-details[open]>.sym-panel-summary{
  background:linear-gradient(180deg,#294563,#1d3550);
  border-bottom-color:rgba(138,164,201,.34);
}
html[data-theme="dark"] .prop-window-shell .sym-panel-body{
  background:linear-gradient(180deg,rgba(10,18,31,.18),rgba(10,18,31,.04));
}
html[data-theme="dark"] .prop-window-shell .sym-renderer-workbench-splitter{
  background:linear-gradient(180deg,#2a4262,#1a2d47);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 10px 24px rgba(2,6,23,.18);
}
html[data-theme="dark"] .prop-window-shell .sym-rows-wrap .prop-grid-table thead th{
  background:linear-gradient(180deg,#21344d,#17263b);
  color:#f3f8ff;
  border-bottom-color:rgba(138,164,201,.34);
}
html[data-theme="dark"] .prop-window-shell .qgis-row-symbol-cell .qgis-symbol-chip{
  background:linear-gradient(180deg,#223752,#172941);
  border-color:rgba(138,164,201,.42);
  color:#eef5ff;
}
html[data-theme="dark"] .prop-window-shell .qgis-row-symbol-cell .qgis-symbol-chip:hover{
  background:linear-gradient(180deg,#2a4a70,#1d3859);
  border-color:#9fd4ff;
}


/* Formulario + backdrop polish v1.7.412 */
.prop-window-overlay{backdrop-filter:blur(1.5px)}
.feature-designer-modal-backdrop{background:rgba(15,23,42,.18);backdrop-filter:blur(1px)}
html[data-theme="dark"] .dialog::backdrop{background:rgba(2,6,23,.44)}
html[data-theme="dark"] .prop-window-overlay{background:rgba(2,6,23,.24)}
html[data-theme="dark"] .feature-designer-modal-backdrop{background:rgba(2,6,23,.26);backdrop-filter:blur(1.5px)}
html[data-theme="light"] .prop-window-overlay{background:rgba(15,23,42,.10)}

html[data-theme="light"] .prop-window-shell .prop-section[data-prop-section="form"]{
  background:linear-gradient(180deg,#e7edf5,#dbe5f0 38%,#d7e1ec 100%);
}
html[data-theme="light"] .prop-window-shell .feature-designer-toolbar,
html[data-theme="light"] .prop-window-shell .feature-template-toolbar,
html[data-theme="light"] .prop-window-shell .feature-designer-board,
html[data-theme="light"] .prop-window-shell .feature-designer-preview-launch{
  background:linear-gradient(180deg,#fdfefe,#eef4fb 64%,#e9f0f8 100%);
  border:1px solid #c3cfde;
  box-shadow:0 14px 30px rgba(15,23,42,.07), inset 0 1px 0 rgba(255,255,255,.84);
}
html[data-theme="light"] .prop-window-shell .feature-search-box,
html[data-theme="light"] .prop-window-shell .feature-designer-toolbar label,
html[data-theme="light"] .prop-window-shell .feature-template-toolbar-main label,
html[data-theme="light"] .prop-window-shell .feature-designer-board-tools label,
html[data-theme="light"] .prop-window-shell .feature-designer-board-group-tools label,
html[data-theme="light"] .prop-window-shell .feature-designer-subgroup-tools label{
  color:#173553;
}
html[data-theme="light"] .prop-window-shell .feature-search-box span,
html[data-theme="light"] .prop-window-shell .feature-template-toolbar-meta,
html[data-theme="light"] .prop-window-shell .feature-designer-board-head span,
html[data-theme="light"] .prop-window-shell .feature-designer-tree-head span,
html[data-theme="light"] .prop-window-shell .feature-designer-board-chip-title span,
html[data-theme="light"] .prop-window-shell .feature-designer-board-group-head span,
html[data-theme="light"] .prop-window-shell .feature-designer-subgroup-head span{
  color:#5f7692;
}
html[data-theme="light"] .prop-window-shell .feature-toggle-chip{
  background:linear-gradient(180deg,#ffffff,#edf3fb);
  border-color:#bfd0e1;
  color:#1e3959;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.85);
}
html[data-theme="light"] .prop-window-shell .feature-editor-stats{
  background:linear-gradient(180deg,#f7fbff,#e5efff);
  border-color:#b8d1ff;
  color:#1d4ed8;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
}
html[data-theme="light"] .prop-window-shell .feature-designer-tree-panel{
  background:linear-gradient(180deg,#eef3f9,#dfe8f2);
  border:1px solid #c3cfdd;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.82),0 14px 30px rgba(15,23,42,.06);
}
html[data-theme="light"] .prop-window-shell .feature-designer-board-main{
  background:linear-gradient(180deg,#e5edf6,#d8e3ee);
  border:1px solid #c2cede;
  border-radius:16px;
  padding:10px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
}
html[data-theme="light"] .prop-window-shell .feature-designer-board-body{
  background:linear-gradient(180deg,#f9fbfe,#eef4fb);
  border:1px solid #c6d2e0;
}
html[data-theme="light"] .prop-window-shell .feature-designer-board-group-head,
html[data-theme="light"] .prop-window-shell .feature-designer-subgroup-head,
html[data-theme="light"] .prop-window-shell .feature-designer-board-chip,
html[data-theme="light"] .prop-window-shell .feature-designer-tree-context-note{
  background:linear-gradient(180deg,#ffffff,#edf3fa);
  border:1px solid #c5d1e0;
  box-shadow:0 10px 22px rgba(15,23,42,.06), inset 0 1px 0 rgba(255,255,255,.86);
}
html[data-theme="light"] .prop-window-shell .feature-designer-create-dropzone,
html[data-theme="light"] .prop-window-shell .feature-designer-subgroup-dropzone{
  background:linear-gradient(180deg,#f8fbff,#edf3fa);
  border-color:#bed0e4;
  color:#3e5875;
}
html[data-theme="light"] .prop-window-shell .feature-designer-tree-head strong,
html[data-theme="light"] .prop-window-shell .feature-designer-board-head strong,
html[data-theme="light"] .prop-window-shell .feature-designer-board-chip-title strong,
html[data-theme="light"] .prop-window-shell .feature-designer-board-group-head strong,
html[data-theme="light"] .prop-window-shell .feature-designer-subgroup-head strong{
  color:#0f2743;
}

html[data-theme="dark"] .prop-window-shell .prop-section[data-prop-section="form"]{
  background:linear-gradient(180deg,#07101d,#0b1524 26%,#112038 100%);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-toolbar,
html[data-theme="dark"] .prop-window-shell .feature-template-toolbar,
html[data-theme="dark"] .prop-window-shell .feature-designer-board,
html[data-theme="dark"] .prop-window-shell .feature-designer-preview-launch{
  background:linear-gradient(180deg,#1f3552,#182a43 46%,#132238 100%);
  border:1px solid rgba(143,170,208,.46);
  box-shadow:0 18px 36px rgba(2,6,23,.30), inset 0 1px 0 rgba(255,255,255,.05), inset 0 -1px 0 rgba(0,0,0,.18);
}
html[data-theme="dark"] .prop-window-shell .feature-search-box,
html[data-theme="dark"] .prop-window-shell .feature-designer-toolbar label,
html[data-theme="dark"] .prop-window-shell .feature-template-toolbar-main label,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-tools label,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-group-tools label,
html[data-theme="dark"] .prop-window-shell .feature-designer-subgroup-tools label,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-width{
  color:#eef5ff;
}
html[data-theme="dark"] .prop-window-shell .feature-search-box span,
html[data-theme="dark"] .prop-window-shell .feature-template-toolbar-meta,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-head span,
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-head span,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-chip-title span,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-group-head span,
html[data-theme="dark"] .prop-window-shell .feature-designer-subgroup-head span,
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-field small{
  color:#b8c9e0;
}
html[data-theme="dark"] .prop-window-shell .feature-toggle-chip{
  background:linear-gradient(180deg,#233958,#182b44);
  border-color:rgba(143,170,208,.40);
  color:#eff6ff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
}
html[data-theme="dark"] .prop-window-shell .feature-editor-stats{
  background:linear-gradient(180deg,#203a5e,#173050 56%,#142846);
  border-color:#93c5fd;
  color:#eff6ff;
  box-shadow:0 0 0 1px rgba(147,197,253,.12) inset,0 10px 22px rgba(30,64,175,.16);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-panel{
  background:linear-gradient(180deg,#0d1728,#09111f 68%,#08101d 100%);
  border:1px solid rgba(143,170,208,.32);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 18px 36px rgba(2,6,23,.22);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-board-main{
  background:linear-gradient(180deg,#0b1423,#08101c 52%,#09111f 100%);
  border:1px solid rgba(143,170,208,.24);
  border-radius:16px;
  padding:10px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03), inset 0 0 0 1px rgba(5,10,18,.36);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-board-body{
  background:linear-gradient(180deg,#0f1b2e,#0a1220 100%);
  border:1px solid rgba(143,170,208,.28);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-board-group-head,
html[data-theme="dark"] .prop-window-shell .feature-designer-subgroup-head,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-chip,
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-context-note{
  background:linear-gradient(180deg,#203654,#172941 50%,#132338 100%);
  border:1px solid rgba(143,170,208,.42);
  box-shadow:0 14px 28px rgba(2,6,23,.20), inset 0 1px 0 rgba(255,255,255,.05), inset 0 -1px 0 rgba(0,0,0,.16);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-board-chip.is-selected{
  border-color:#9fd4ff;
  box-shadow:0 0 0 2px rgba(96,165,250,.18),0 18px 30px rgba(30,64,175,.18), inset 0 1px 0 rgba(255,255,255,.06);
  background:linear-gradient(180deg,#2a4a74,#1d395b 56%,#173150 100%);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-create-dropzone,
html[data-theme="dark"] .prop-window-shell .feature-designer-subgroup-dropzone{
  background:linear-gradient(180deg,#15253b,#102036);
  border-color:rgba(143,170,208,.34);
  color:#d8e5f7;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-head,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-head,
html[data-theme="dark"] .prop-window-shell .feature-template-toolbar-actions,
html[data-theme="dark"] .prop-window-shell .feature-designer-preview-launch-tools{
  color:#f8fbff;
}
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-head strong,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-head strong,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-chip-title strong,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-group-head strong,
html[data-theme="dark"] .prop-window-shell .feature-designer-subgroup-head strong,
html[data-theme="dark"] .prop-window-shell .feature-designer-preview-title strong{
  color:#f8fbff;
}
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-body{
  background:linear-gradient(180deg,#0a1322,#0d1727);
  border:1px solid rgba(143,170,208,.22);
  border-radius:14px;
  padding:10px;
}
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-group,
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-subgroup{
  border-color:rgba(143,170,208,.24);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-node-head,
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-field{
  background:linear-gradient(180deg,#182b44,#122138);
  border-color:rgba(143,170,208,.34);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-field.is-selected,
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-node-head.is-selected{
  background:linear-gradient(180deg,#27486f,#1b3555);
  border-color:#9fd4ff;
  box-shadow:0 0 0 2px rgba(96,165,250,.16), inset 0 1px 0 rgba(255,255,255,.06);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-title,
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-count,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-selection,
html[data-theme="dark"] .prop-window-shell .feature-designer-preview-launch .feature-editor-stats,
html[data-theme="dark"] .prop-window-shell .feature-template-toolbar-meta code,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-chip-title strong + span{
  color:#eef5ff;
}
html[data-theme="dark"] .prop-window-shell .feature-designer-board-selection{
  background:linear-gradient(180deg,#20395a,#162b45);
  border-color:rgba(143,170,208,.44);
}
html[data-theme="dark"] .prop-window-shell .feature-template-toolbar-meta code,
html[data-theme="dark"] .prop-window-shell .prop-help code{
  background:rgba(147,197,253,.18);
  color:#eff6ff;
}
html[data-theme="dark"] .prop-window-shell .feature-search-box input,
html[data-theme="dark"] .prop-window-shell .feature-designer-toolbar input,
html[data-theme="dark"] .prop-window-shell .feature-designer-toolbar select,
html[data-theme="dark"] .prop-window-shell .feature-template-toolbar :is(input,select),
html[data-theme="dark"] .prop-window-shell .feature-designer-board-tools :is(input,select),
html[data-theme="dark"] .prop-window-shell .feature-designer-board-group-tools :is(input,select),
html[data-theme="dark"] .prop-window-shell .feature-designer-subgroup-tools :is(input,select),
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-context-section select{
  background:linear-gradient(180deg,#10203a,#12243b);
  border-color:rgba(143,170,208,.50);
  color:#f8fbff;
}
html[data-theme="dark"] .prop-window-shell .feature-search-box input::placeholder,
html[data-theme="dark"] .prop-window-shell .feature-designer-toolbar input::placeholder,
html[data-theme="dark"] .prop-window-shell .feature-template-toolbar input::placeholder,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-tools input::placeholder,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-group-tools input::placeholder,
html[data-theme="dark"] .prop-window-shell .feature-designer-subgroup-tools input::placeholder{
  color:#9fb2cc;
}
html[data-theme="dark"] .prop-window-shell .feature-search-box input:focus,
html[data-theme="dark"] .prop-window-shell .feature-designer-toolbar input:focus,
html[data-theme="dark"] .prop-window-shell .feature-designer-toolbar select:focus,
html[data-theme="dark"] .prop-window-shell .feature-template-toolbar :is(input,select):focus,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-tools :is(input,select):focus,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-group-tools :is(input,select):focus,
html[data-theme="dark"] .prop-window-shell .feature-designer-subgroup-tools :is(input,select):focus,
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-context-section select:focus{
  border-color:#a7d4ff;
  box-shadow:0 0 0 3px rgba(96,165,250,.18), inset 0 1px 2px rgba(0,0,0,.32);
}
html[data-theme="dark"] .prop-window-shell .feature-designer-board-chip-title strong,
html[data-theme="dark"] .prop-window-shell .feature-designer-board-chip-actions,
html[data-theme="dark"] .prop-window-shell .feature-designer-drag-handle,
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-node-btn,
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-toggle{
  color:#eef5ff;
}
html[data-theme="dark"] .prop-window-shell .feature-designer-tree-counter{
  background:linear-gradient(180deg,#26456b,#1b3554);
  border-color:rgba(143,170,208,.46);
  color:#f8fbff;
}


.tool-group[data-group="medicion"]{--group-accent:#7cb7c8}

 .dimension-style-panel {
  position: absolute;
  top: calc(var(--command-height) + 20px);
  left: 252px;
  z-index: 205;
  width: min(500px, calc(100vw - 32px));
  max-width: min(500px, calc(100vw - 32px));
  max-height: min(78vh, calc(100vh - var(--command-height) - 42px));
  padding: 12px 14px 10px;
  background: rgba(255,255,255,.98);
  color: #0f172a;
  border: 1px solid rgba(148,163,184,.34);
  border-radius: 14px;
  box-shadow: 0 18px 38px rgba(15,23,42,.18);
  display: none;
  grid-template-rows: auto minmax(0,1fr) auto;
  gap: 10px;
  overflow: hidden;
  backdrop-filter: blur(6px);
}
.dimension-style-panel.open{display:grid}
.dimension-style-panel.hidden{display:none}
.dimension-style-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap}
.dimension-style-panel-title{font-weight:800;font-size:13px;letter-spacing:.01em}
.dimension-style-panel-badges{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dimension-style-badge{display:inline-flex;align-items:center;justify-content:center;min-height:22px;padding:0 8px;border-radius:999px;background:#0f172a;color:#f8fafc;font:700 11px/1 system-ui,sans-serif;letter-spacing:.02em}
.dimension-style-badge.soft{background:#e2e8f0;color:#334155}
.dimension-style-panel-body{min-height:0;overflow:auto;display:grid;gap:12px;padding-right:4px;scrollbar-gutter:stable}
.dimension-style-panel-body::-webkit-scrollbar{width:10px}
.dimension-style-panel-body::-webkit-scrollbar-thumb{background:rgba(148,163,184,.45);border-radius:999px;border:2px solid transparent;background-clip:padding-box}
.dimension-style-panel-body::-webkit-scrollbar-track{background:transparent}
.dimension-style-section,.dimension-style-selected-block{display:grid;gap:10px;padding:10px 12px;border-radius:12px;border:1px solid rgba(148,163,184,.22);background:rgba(248,250,252,.92)}
.dimension-style-section-head{display:grid;gap:2px}
.dimension-style-section-title{font-size:12px;font-weight:800;color:#0f172a}
.dimension-style-section-note{font-size:11px;line-height:1.35;color:#64748b}
.dimension-style-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.dimension-style-field{display:grid;gap:6px;font-size:12px;font-weight:700;color:#334155}
.dimension-style-field.is-span-2{grid-column:1/-1}
.dimension-style-field.is-disabled{opacity:.56}
.dimension-style-field .input{width:100%;min-width:0;height:34px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;color:#0f172a;padding:0 10px}
.dimension-style-field .input[type="number"],.dimension-style-field .input[type="text"]{appearance:none}
.dimension-style-textarea{min-height:72px;height:auto;padding:8px 10px;resize:vertical;line-height:1.35;font-family:inherit}
.dimension-style-selected-grid{align-items:start}
.dimension-style-color-row{display:flex;align-items:center;gap:8px}
.dimension-style-color{width:48px;height:34px;padding:3px;border-radius:10px;border:1px solid #cbd5e1;background:#fff;cursor:pointer}
.dimension-style-auto-btn{padding:0 10px;height:32px;line-height:30px}
.dimension-style-auto-btn.active{background:#0f172a;color:#fff;border-color:#0f172a}
.dimension-style-panel-help{font-size:12px;line-height:1.45;color:#64748b;padding:0 2px 0 1px}
.dimension-style-selected-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.dimension-style-selected-title{font-size:12px;font-weight:800;color:#0f172a}
.dimension-style-selected-meta{font-size:12px;line-height:1.4;color:#475569}
.dimension-style-selected-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.dimension-style-selected-actions .btn{min-width:0;justify-content:center}
.dimension-style-selected-actions .btn[disabled]{opacity:.5;cursor:not-allowed}
.dimension-style-partial-block{display:grid;gap:8px;padding:10px;border-radius:10px;border:1px dashed rgba(148,163,184,.4);background:rgba(255,255,255,.56)}
.dimension-style-partial-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.dimension-style-chip{position:relative;display:inline-flex;align-items:center;cursor:pointer;min-width:0}
.dimension-style-chip input{position:absolute;opacity:0;pointer-events:none}
.dimension-style-chip span{display:inline-flex;align-items:center;justify-content:center;min-height:30px;width:100%;padding:0 10px;border-radius:999px;border:1px solid #cbd5e1;background:#fff;color:#334155;font:700 11px/1 system-ui,sans-serif;letter-spacing:.01em;text-align:center;transition:all .16s ease}
.dimension-style-chip input:checked + span{background:#0f172a;border-color:#0f172a;color:#f8fafc;box-shadow:0 6px 16px rgba(15,23,42,.18)}
.dimension-style-panel-actions{display:flex;justify-content:flex-end;padding-top:2px;border-top:1px solid rgba(148,163,184,.18)}
@media (max-width: 640px){
  .dimension-style-panel{left:16px;right:16px;width:auto;max-width:none}
  .dimension-style-grid,.dimension-style-partial-grid,.dimension-style-selected-actions{grid-template-columns:1fr}
}

html[data-theme="dark"] .dimension-style-panel{
  background: rgba(17,24,39,.97);
  color: #e5e7eb;
  border-color: rgba(148,163,184,.28);
  box-shadow: 0 20px 42px rgba(2,6,23,.5);
}
html[data-theme="dark"] .dimension-style-badge{background:#2563eb;color:#eff6ff}
html[data-theme="dark"] .dimension-style-badge.soft{background:rgba(255,255,255,.08);color:#cbd5e1}
html[data-theme="dark"] .dimension-style-panel-body::-webkit-scrollbar-thumb{background:rgba(148,163,184,.3);border-color:transparent}
html[data-theme="dark"] .dimension-style-section,
html[data-theme="dark"] .dimension-style-selected-block{background:rgba(15,23,42,.78);border-color:rgba(148,163,184,.22)}
html[data-theme="dark"] .dimension-style-section-title,
html[data-theme="dark"] .dimension-style-selected-title{color:#f8fafc}
html[data-theme="dark"] .dimension-style-section-note,
html[data-theme="dark"] .dimension-style-panel-help{color:#94a3b8}
html[data-theme="dark"] .dimension-style-field{color:#cbd5e1}
html[data-theme="dark"] .dimension-style-field .input,
html[data-theme="dark"] .dimension-style-color{
  background: rgba(255,255,255,.06);
  border-color: rgba(148,163,184,.26);
  color: #f8fafc;
}
html[data-theme="dark"] .dimension-style-auto-btn.active{background:#2563eb;border-color:#2563eb;color:#eff6ff}
html[data-theme="dark"] .dimension-style-selected-meta{color:#cbd5e1}
html[data-theme="dark"] .dimension-style-partial-block{background:rgba(2,6,23,.4);border-color:rgba(96,165,250,.28)}
html[data-theme="dark"] .dimension-style-chip span{background:rgba(255,255,255,.06);border-color:rgba(148,163,184,.24);color:#cbd5e1}
html[data-theme="dark"] .dimension-style-chip input:checked + span{background:#2563eb;border-color:#2563eb;color:#eff6ff;box-shadow:0 8px 18px rgba(37,99,235,.22)}
html[data-theme="dark"] .dimension-style-panel-actions{border-top-color:rgba(148,163,184,.14)}


.tool.danger-soft, .btn.danger-soft { border-color: color-mix(in srgb, var(--danger, #dc2626) 55%, var(--line) 45%); color: color-mix(in srgb, var(--danger, #dc2626) 82%, var(--text) 18%); }
.tool.danger-soft:hover, .btn.danger-soft:hover { background: color-mix(in srgb, var(--danger, #dc2626) 12%, var(--panel-2, var(--panel)) 88%); }
html[data-theme='dark'] .tool.danger-soft, html[data-theme='dark'] .btn.danger-soft { border-color: color-mix(in srgb, var(--danger, #ef4444) 58%, var(--line) 42%); color: color-mix(in srgb, var(--danger, #f87171) 84%, var(--text) 16%); }
html[data-theme='dark'] .tool.danger-soft:hover, html[data-theme='dark'] .btn.danger-soft:hover { background: color-mix(in srgb, var(--danger, #ef4444) 16%, var(--panel-2, var(--panel)) 84%); }

.prop-field-span-2{grid-column:1 / -1}

.db-object-dialog .dialog-card,
.schema-designer-dialog .dialog-card{width:min(1200px,calc(100vw - 48px));max-width:1200px}
.db-object-dialog .dialog-body,
.schema-designer-dialog .dialog-body{display:flex;flex-direction:column;gap:14px;max-height:min(78vh,900px);overflow:auto}
.db-object-columns-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.db-object-columns-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.db-object-column-table-wrap{overflow:auto;border:1px solid #d8dee8;border-radius:12px;background:#fff}
.db-object-column-table{width:100%;border-collapse:collapse;font-size:13px}
.db-object-column-table th,.db-object-column-table td{padding:8px 10px;border-bottom:1px solid #e7ebf2;vertical-align:middle}
.db-object-column-table thead th{position:sticky;top:0;background:#f8fafc;z-index:1;text-align:left}
.db-object-column-table input[type="text"],
.db-object-column-table input[type="number"],
.db-object-column-table select{width:100%;min-width:0}
.db-object-geometry{padding:12px;border:1px solid #d8dee8;border-radius:12px;background:#f8fafc}
.db-object-geometry-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.schema-designer-body{display:flex;flex-direction:column;gap:12px}
.schema-designer-table .feature-field-badges{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.schema-drop-row{opacity:.68;background:#fff5f5}
@media (max-width: 960px){
  .db-object-geometry-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 640px){
  .db-object-geometry-grid{grid-template-columns:minmax(0,1fr)}
}

/* Schema/Table dialogs polish */
.db-object-modal,
.schema-designer-modal{
  --db-bg:#f3f7fc;
  --db-panel:#ffffff;
  --db-panel-soft:#f7fafc;
  --db-border:#d8e1ec;
  --db-border-strong:#c2cedd;
  --db-text:#0f172a;
  --db-muted:#64748b;
  --db-accent:#2563eb;
  --db-shadow:0 30px 80px rgba(15,23,42,.20);
  width:min(1260px,97vw);
  height:min(900px,95vh);
  border-radius:22px;
  overflow:hidden;
  border:1px solid rgba(203,213,225,.9);
  background:var(--db-panel);
  box-shadow:var(--db-shadow);
}
.db-object-dialog,
.schema-designer-dialog{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:14px;
  min-height:100%;
  height:100%;
  padding:20px;
  overflow:hidden;
  overscroll-behavior:contain;
  scrollbar-width:thin;
  scrollbar-color:rgba(100,116,139,.45) transparent;
  background:
    radial-gradient(circle at top right, rgba(37,99,235,.08), transparent 28%),
    linear-gradient(180deg,var(--db-bg),#eef3f9 100%);
  color:var(--db-text);
}
.db-dialog-scroll{
  flex:1 1 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  gap:14px;
  overflow:auto;
  overscroll-behavior:contain;
  padding-right:4px;
  scrollbar-width:thin;
  scrollbar-color:rgba(100,116,139,.45) transparent;
}
.db-dialog-scroll::-webkit-scrollbar{width:10px;height:10px}
.db-dialog-scroll::-webkit-scrollbar-thumb{background:rgba(100,116,139,.38);border-radius:999px;border:2px solid transparent;background-clip:padding-box}
.db-dialog-scroll::-webkit-scrollbar-track{background:transparent}
.db-dialog-footer-stack{
  flex:0 0 auto;
  display:grid;
  gap:10px;
  padding-top:12px;
  border-top:1px solid rgba(203,213,225,.85);
  background:linear-gradient(180deg,rgba(243,247,252,0),rgba(243,247,252,.92) 18%,rgba(243,247,252,.98));
}
.db-dialog-topbar{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding:2px 2px 0;
}
.db-dialog-topbar h3{
  margin:0;
  font-size:1.95rem;
  line-height:1.1;
  letter-spacing:-.02em;
  color:var(--db-text);
}
.db-dialog-topbar-subtitle{
  margin-top:6px;
  font-size:13px;
  line-height:1.45;
  color:var(--db-muted);
}
.db-dialog-topbar-badge{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:0 12px;
  border-radius:999px;
  border:1px solid rgba(37,99,235,.16);
  background:linear-gradient(180deg,#eff6ff,#dbeafe);
  color:#1d4ed8;
  font-size:11px;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.db-dialog-intro-card,
.db-object-geometry,
.db-object-columns{
  border:1px solid var(--db-border);
  border-radius:18px;
  background:linear-gradient(180deg,rgba(255,255,255,.94),rgba(248,250,252,.98));
  box-shadow:0 12px 24px rgba(15,23,42,.05);
}
.db-dialog-intro-card{
  padding:14px 16px;
}
.db-dialog-inline-help,
.db-dialog-intro-card .prop-help{
  margin:0;
  color:var(--db-muted);
}
.db-dialog-grid{gap:14px}
.db-object-dialog .grid2 label,
.schema-designer-dialog label{
  display:flex;
  flex-direction:column;
  gap:7px;
  font-size:12px;
  font-weight:700;
  color:#334155;
}
.db-object-dialog :is(input:not([type="checkbox"]), select, textarea),
.schema-designer-dialog :is(input:not([type="checkbox"]), select, textarea){
  width:100%;
  min-width:0;
  min-height:40px;
  padding:10px 12px;
  border-radius:12px;
  border:1px solid var(--db-border-strong);
  background:linear-gradient(180deg,#ffffff,#f8fbff);
  color:var(--db-text);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 1px 2px rgba(15,23,42,.04);
  transition:border-color .18s ease, box-shadow .18s ease, background .18s ease, transform .18s ease;
}
.db-object-dialog :is(input:not([type="checkbox"]), select, textarea):focus,
.schema-designer-dialog :is(input:not([type="checkbox"]), select, textarea):focus{
  outline:none;
  border-color:rgba(37,99,235,.55);
  box-shadow:0 0 0 4px rgba(37,99,235,.13), inset 0 1px 0 rgba(255,255,255,.95);
  background:#fff;
}
.db-section-mini-title{
  color:#0f172a;
  font-size:12px;
  font-weight:800;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.db-object-geometry,
.db-object-columns{
  padding:16px;
}
.db-object-columns,
.schema-designer-body{
  flex:0 0 auto;
  min-height:0;
  display:flex;
  flex-direction:column;
  gap:12px;
}
.db-object-columns-head{
  padding-bottom:2px;
}
.db-object-columns-actions .btn,
.db-dialog-actions .btn{
  box-shadow:0 10px 24px rgba(15,23,42,.08);
}
.db-object-column-table-wrap{
  flex:1 1 auto;
  min-height:240px;
  max-height:min(42vh,440px);
  overflow:auto;
  border:1px solid var(--db-border);
  border-radius:16px;
  background:rgba(255,255,255,.96);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
}
.schema-designer-body .db-object-column-table-wrap{
  min-height:260px;
  max-height:min(40vh,460px);
}
.db-object-column-table{
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  font-size:13px;
}
.db-object-column-table thead th{
  position:sticky;
  top:0;
  z-index:2;
  padding:12px 12px;
  border-bottom:1px solid var(--db-border);
  background:linear-gradient(180deg,#f8fbfd,#eef3f9);
  color:#334155;
  text-align:left;
  font-size:12px;
  font-weight:800;
  letter-spacing:.03em;
  text-transform:uppercase;
}
.db-object-column-table td{
  padding:10px 12px;
  border-bottom:1px solid #e9eef5;
  vertical-align:middle;
  background:transparent;
}
.db-object-column-table tbody tr:hover td{
  background:rgba(37,99,235,.045);
}
.db-object-column-table tbody tr:last-child td{
  border-bottom:none;
}
.sql-type-cell{
  display:grid;
  grid-template-columns:minmax(0,1fr) 36px;
  gap:8px;
  align-items:center;
}
.sql-type-cell-standalone{
  margin-top:2px;
}
.sql-type-trigger{
  min-width:36px;
  width:36px;
  height:36px;
  padding:0;
  border-radius:12px;
  font-size:16px;
  font-weight:800;
}
.sql-type-picker-popover[hidden]{display:none !important}
.sql-type-picker-popover{
  position:fixed;
  z-index:1400;
  width:min(320px,calc(100% - 24px));
  max-height:320px;
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:12px;
  border-radius:18px;
  border:1px solid var(--db-border);
  background:rgba(255,255,255,.98);
  box-shadow:0 22px 54px rgba(15,23,42,.22);
  backdrop-filter:blur(18px);
}
.sql-type-picker-head{
  display:flex;
  flex-direction:column;
  gap:2px;
}
.sql-type-picker-head strong{
  font-size:12px;
  font-weight:800;
  color:var(--db-text);
  letter-spacing:.04em;
  text-transform:uppercase;
}
.sql-type-picker-head span,
.sql-type-empty{
  font-size:12px;
  color:var(--db-muted);
}
.sql-type-picker-search{
  min-height:38px;
}
.sql-type-picker-list{
  overflow:auto;
  max-height:260px;
  display:grid;
  gap:8px;
  padding-right:2px;
}
.sql-type-favorites{
  display:grid;
  gap:8px;
}
.sql-type-favorites-label{
  font-size:11px;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:var(--db-muted);
}
.sql-type-favorites-row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.sql-type-chip{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:6px 10px;
  border-radius:999px;
  border:1px solid rgba(37,99,235,.14);
  background:linear-gradient(180deg,#f8fbff,#eef4ff);
  color:#1d4ed8;
  font-size:11px;
  font-weight:800;
  cursor:pointer;
  transition:background .16s ease,border-color .16s ease,transform .16s ease,box-shadow .16s ease;
}
.sql-type-chip:hover,
.sql-type-chip:focus{
  outline:none;
  border-color:rgba(37,99,235,.30);
  background:linear-gradient(180deg,#eff6ff,#dbeafe);
  transform:translateY(-1px);
  box-shadow:0 10px 18px rgba(37,99,235,.10);
}
.sql-type-options{
  display:grid;
  gap:6px;
}
.sql-type-option{
  display:flex;
  align-items:center;
  width:100%;
  min-height:34px;
  padding:8px 10px;
  border-radius:12px;
  border:1px solid transparent;
  background:linear-gradient(180deg,#f8fbff,#f1f5f9);
  color:#1e293b;
  font-size:12px;
  font-weight:700;
  text-align:left;
  cursor:pointer;
  transition:background .16s ease, border-color .16s ease, transform .16s ease;
}
.sql-type-option:hover,
.sql-type-option:focus,
.sql-type-option.is-active{
  outline:none;
  border-color:rgba(37,99,235,.22);
  background:linear-gradient(180deg,#eff6ff,#dbeafe);
  color:#1d4ed8;
  transform:translateY(-1px);
}
.db-dialog-actions{
  margin-top:0;
  padding-top:0;
  border-top:none;
}
.db-dialog-result{
  min-height:52px;
  max-height:120px;
  overflow:auto;
  margin:0;
  padding:12px 14px;
  border-radius:16px;
  border:1px solid rgba(15,23,42,.08);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12);
  white-space:pre-wrap;
}
.db-dialog-intro-card-rich{display:grid;gap:12px}
.schema-meta-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.schema-meta-field{display:flex;flex-direction:column;gap:7px}
.schema-meta-field-wide{grid-column:1 / -1}
.db-object-dialog textarea,
.schema-designer-dialog textarea{resize:vertical;min-height:72px}
.db-table-checkbox-cell{text-align:center}
.db-object-column-table-wrap-wide{min-height:260px;max-height:min(42vh,440px)}
.db-object-column-table-wide th:nth-child(4),
.db-object-column-table-wide th:nth-child(5),
.db-object-column-table-wide th:nth-child(6),
.db-object-column-table-wide td:nth-child(4),
.db-object-column-table-wide td:nth-child(5),
.db-object-column-table-wide td:nth-child(6),
.schema-designer-table-wide th:nth-child(4),
.schema-designer-table-wide th:nth-child(5),
.schema-designer-table-wide th:nth-child(6),
.schema-designer-table-wide td:nth-child(4),
.schema-designer-table-wide td:nth-child(5),
.schema-designer-table-wide td:nth-child(6){width:84px;min-width:84px}
.db-sql-preview-card{display:block}
.db-sql-preview-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.db-sql-preview-head-compact{align-items:center}
.db-sql-preview-inline-note{font-size:12px;color:var(--db-muted)}
.db-sql-preview-head strong{display:block;font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--db-text)}
.db-sql-preview-head span{display:block;margin-top:4px;font-size:12px;color:var(--db-muted)}
.db-sql-preview-pre{
  margin:0;
  min-height:88px;
  max-height:160px;
  overflow:auto;
  padding:14px;
  border-radius:14px;
  border:1px solid rgba(15,23,42,.08);
  background:linear-gradient(180deg,#0f172a,#111827);
  color:#d1fae5;
  font-size:12px;
  line-height:1.5;
  white-space:pre-wrap;
}
.schema-drop-row td{
  background:linear-gradient(180deg,rgba(254,242,242,.9),rgba(254,226,226,.7));
}
.db-object-column-table input[type="checkbox"],
.schema-designer-table input[type="checkbox"]{
  width:16px;
  height:16px;
  accent-color:var(--db-accent);
}
.db-object-column-table-wrap,
.sql-type-picker-list{
  scrollbar-width:thin;
  scrollbar-color:rgba(100,116,139,.45) transparent;
}
.db-object-column-table-wrap::-webkit-scrollbar,
.sql-type-picker-list::-webkit-scrollbar{width:10px;height:10px}
.db-object-column-table-wrap::-webkit-scrollbar-thumb,
.sql-type-picker-list::-webkit-scrollbar-thumb{background:rgba(100,116,139,.38);border-radius:999px;border:2px solid transparent;background-clip:padding-box}
.db-object-column-table-wrap::-webkit-scrollbar-track,
.sql-type-picker-list::-webkit-scrollbar-track{background:transparent}

html[data-theme="dark"] .db-object-modal,
html[data-theme="dark"] .schema-designer-modal{
  --db-bg:#0b1220;
  --db-panel:#0f172a;
  --db-panel-soft:#111c31;
  --db-border:rgba(148,163,184,.22);
  --db-border-strong:rgba(148,163,184,.30);
  --db-text:#e8eef9;
  --db-muted:#9fb0c8;
  --db-accent:#60a5fa;
  --db-shadow:0 34px 90px rgba(2,6,23,.58);
  border-color:rgba(148,163,184,.22);
  background:rgba(15,23,42,.98);
}
html[data-theme="dark"] .db-object-dialog,
html[data-theme="dark"] .schema-designer-dialog{
  background:
    radial-gradient(circle at top right, rgba(59,130,246,.16), transparent 30%),
    linear-gradient(180deg,#0b1220,#111827 100%);
}
html[data-theme="dark"] .db-dialog-topbar-badge{
  background:linear-gradient(180deg,rgba(37,99,235,.28),rgba(29,78,216,.22));
  border-color:rgba(96,165,250,.28);
  color:#bfdbfe;
}
html[data-theme="dark"] :is(.db-dialog-intro-card,.db-object-geometry,.db-object-columns){
  background:linear-gradient(180deg,rgba(15,23,42,.92),rgba(17,24,39,.94));
  border-color:rgba(148,163,184,.16);
  box-shadow:0 18px 34px rgba(2,6,23,.22);
}
html[data-theme="dark"] .db-object-dialog .grid2 label,
html[data-theme="dark"] .schema-designer-dialog label,
html[data-theme="dark"] .db-section-mini-title,
html[data-theme="dark"] .db-dialog-topbar h3{
  color:#f8fbff;
}
html[data-theme="dark"] .db-object-dialog :is(input:not([type="checkbox"]), select, textarea),
html[data-theme="dark"] .schema-designer-dialog :is(input:not([type="checkbox"]), select, textarea){
  background:linear-gradient(180deg,rgba(15,23,42,.92),rgba(15,23,42,.78));
  border-color:rgba(148,163,184,.28);
  color:#f8fbff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03), 0 1px 2px rgba(0,0,0,.28);
}
html[data-theme="dark"] .db-object-dialog :is(input:not([type="checkbox"]), select, textarea):focus,
html[data-theme="dark"] .schema-designer-dialog :is(input:not([type="checkbox"]), select, textarea):focus{
  border-color:rgba(96,165,250,.55);
  box-shadow:0 0 0 4px rgba(59,130,246,.16), inset 0 1px 0 rgba(255,255,255,.02);
  background:rgba(15,23,42,.98);
}
html[data-theme="dark"] .db-object-column-table-wrap{
  background:rgba(2,6,23,.42);
  border-color:rgba(148,163,184,.18);
}
html[data-theme="dark"] .db-object-column-table thead th{
  background:linear-gradient(180deg,rgba(15,23,42,.98),rgba(17,24,39,.96));
  border-bottom-color:rgba(148,163,184,.16);
  color:#cbd5e1;
}
html[data-theme="dark"] .db-object-column-table td{
  border-bottom-color:rgba(148,163,184,.12);
}
html[data-theme="dark"] .db-object-column-table tbody tr:hover td{
  background:rgba(59,130,246,.10);
}
html[data-theme="dark"] .sql-type-picker-popover{
  background:rgba(8,15,29,.97);
  border-color:rgba(148,163,184,.18);
  box-shadow:0 26px 60px rgba(2,6,23,.58);
}
html[data-theme="dark"] .sql-type-chip{
  background:linear-gradient(180deg,rgba(30,41,59,.88),rgba(15,23,42,.96));
  border-color:rgba(96,165,250,.18);
  color:#bfdbfe;
}
html[data-theme="dark"] .sql-type-chip:hover,
html[data-theme="dark"] .sql-type-chip:focus{
  background:linear-gradient(180deg,rgba(30,64,175,.38),rgba(29,78,216,.28));
  border-color:rgba(96,165,250,.28);
  color:#eff6ff;
}
html[data-theme="dark"] .sql-type-option{
  background:linear-gradient(180deg,rgba(15,23,42,.88),rgba(17,24,39,.92));
  color:#dbe7f5;
}
html[data-theme="dark"] .sql-type-option:hover,
html[data-theme="dark"] .sql-type-option:focus,
html[data-theme="dark"] .sql-type-option.is-active{
  background:linear-gradient(180deg,rgba(30,64,175,.38),rgba(29,78,216,.28));
  border-color:rgba(96,165,250,.26);
  color:#eff6ff;
}
html[data-theme="dark"] .db-dialog-footer-stack{
  border-top-color:rgba(148,163,184,.14);
  background:linear-gradient(180deg,rgba(11,18,32,0),rgba(11,18,32,.90) 18%,rgba(11,18,32,.98));
}
html[data-theme="dark"] .db-dialog-result{
  border-color:rgba(148,163,184,.16);
}

html[data-theme="dark"] .db-sql-preview-card{
  background:linear-gradient(180deg,rgba(15,23,42,.92),rgba(17,24,39,.94));
  border-color:rgba(148,163,184,.16);
  box-shadow:0 18px 34px rgba(2,6,23,.22);
}
html[data-theme="dark"] .db-sql-preview-pre{
  border-color:rgba(148,163,184,.14);
  background:linear-gradient(180deg,#020617,#0f172a);
  color:#d1fae5;
}
html[data-theme="dark"] .schema-drop-row td{
  background:linear-gradient(180deg,rgba(127,29,29,.35),rgba(69,10,10,.24));
}

@media (max-width: 900px){
  .db-object-modal,
  .schema-designer-modal{width:min(98vw,1260px);height:min(96vh,900px)}
  .db-dialog-topbar{flex-direction:column;align-items:flex-start}
  .db-object-column-table th,.db-object-column-table td{padding:9px 10px}
}

@media (max-width: 640px){
  .db-object-dialog,
  .schema-designer-dialog{padding:14px}
  .db-dialog-grid{grid-template-columns:minmax(0,1fr)}
  .schema-meta-grid{grid-template-columns:minmax(0,1fr)}
  .sql-type-picker-popover{width:min(320px,calc(100% - 12px))}
}


/* Desktop-style draggable dialog windows v1.7.449 */
.dialog[data-windowed="true"]{inset:auto;position:fixed;margin:0;max-width:none;max-height:none}
.dialog[data-windowed="true"]::backdrop{background:rgba(15,23,42,.24);backdrop-filter:blur(1px)}
html[data-theme="dark"] .dialog[data-windowed="true"]::backdrop{background:rgba(2,6,23,.42);backdrop-filter:blur(1.5px)}
.dragging-dialog-window,.dragging-dialog-window *{user-select:none !important}
.db-dialog-topbar[data-window-drag],
.dialog-window-head[data-window-drag]{cursor:grab}
.is-dragging-window .db-dialog-topbar[data-window-drag],
.is-dragging-window .dialog-window-head[data-window-drag]{cursor:grabbing}
.db-dialog-topbar-aside{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.db-dialog-title-btn{min-height:32px}
.dialog-window-shell{display:flex;flex-direction:column;gap:14px;min-height:100%}
.dialog-window-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:4px;border-bottom:1px solid rgba(203,213,225,.7)}
.dialog-window-head h3{margin:0;font-size:1.5rem;line-height:1.1;letter-spacing:-.02em}
.dialog-window-subtitle{margin-top:6px;font-size:12px;line-height:1.45;color:var(--muted,#64748b)}
.db-pane{border:1px solid var(--db-border);border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(248,250,252,.98));box-shadow:0 12px 24px rgba(15,23,42,.05);overflow:hidden}
.db-pane > summary{list-style:none}
.db-pane > summary::-webkit-details-marker{display:none}
.db-pane-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 16px;cursor:pointer;user-select:none}
.db-pane-summary:hover{background:rgba(37,99,235,.035)}
.db-pane-copy{margin-top:4px;font-size:12px;line-height:1.45;color:var(--db-muted)}
.db-pane-toggle{position:relative;flex:0 0 auto;width:28px;height:28px;border-radius:999px;border:1px solid rgba(148,163,184,.22);background:linear-gradient(180deg,#fff,#eef3f8);box-shadow:0 6px 16px rgba(15,23,42,.08)}
.db-pane-toggle::before,.db-pane-toggle::after{content:'';position:absolute;left:50%;top:50%;width:10px;height:2px;background:#475569;border-radius:999px;transform:translate(-50%,-50%)}
.db-pane-toggle::after{transform:translate(-50%,-50%) rotate(90deg);transition:transform .18s ease,opacity .18s ease}
.db-pane[open] > .db-pane-summary .db-pane-toggle::after{transform:translate(-50%,-50%) rotate(180deg);opacity:0}
.db-pane-body{padding:0 16px 16px;display:grid;gap:12px}
.db-pane.db-pane-columns > .db-pane-body{padding-top:0}
.db-pane.db-sql-preview-card > .db-pane-body{padding-top:0;gap:10px}
.db-object-columns .db-object-columns-head{padding-bottom:0}
.db-object-columns.db-pane,.db-pane.db-pane-columns,.db-pane.db-pane-intro,.db-pane.db-pane-geometry,.db-pane.db-sql-preview-card{padding:0}
html[data-theme="dark"] .dialog-window-head{border-bottom-color:rgba(82,100,131,.38)}
html[data-theme="dark"] .dialog-window-subtitle{color:#9fb0c8}
html[data-theme="dark"] .db-pane{background:linear-gradient(180deg,rgba(15,23,42,.92),rgba(17,24,39,.94));border-color:rgba(148,163,184,.16);box-shadow:0 18px 34px rgba(2,6,23,.22)}
html[data-theme="dark"] .db-pane-summary:hover{background:rgba(59,130,246,.09)}
html[data-theme="dark"] .db-pane-toggle{background:linear-gradient(180deg,rgba(30,41,59,.88),rgba(15,23,42,.96));border-color:rgba(96,165,250,.20);box-shadow:0 10px 20px rgba(2,6,23,.28)}
html[data-theme="dark"] .db-pane-toggle::before,
html[data-theme="dark"] .db-pane-toggle::after{background:#cbd5e1}
@media (max-width: 980px){
  .db-dialog-topbar,.dialog-window-head{gap:12px;flex-wrap:wrap}
  .db-dialog-topbar-aside{width:100%;justify-content:flex-start}
}


/* v1.7.451 modal host cleanup */
.dialog-window-host{
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
  overflow:visible !important;
}
.dialog-window-host .prop-dialog-host{
  position:fixed !important;
  inset:0 !important;
  width:100vw !important;
  height:100vh !important;
  max-width:none !important;
  max-height:none !important;
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
  overflow:visible !important;
  padding:0 !important;
}
.dialog-window-host .prop-window-shell{
  position:absolute;
}
.dialog-window-host::backdrop,
.dialog[data-windowed="true"]::backdrop,
.dialog::backdrop{
  background:transparent !important;
  backdrop-filter:none !important;
}
.prop-window-overlay{
  background:transparent !important;
}
html[data-theme="light"] .dialog-window-host,
html[data-theme="dark"] .dialog-window-host,
html[data-theme="light"] .dialog-window-host .prop-dialog-host,
html[data-theme="dark"] .dialog-window-host .prop-dialog-host{
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
}

.db-object-modal .prop-window-shell,.schema-designer-modal .prop-window-shell,.dialog-window-host#adminDialog .prop-window-shell{max-width:calc(100vw - 24px);max-height:calc(100vh - 24px)}
.db-object-modal .db-dialog-scroll,.schema-designer-modal .db-dialog-scroll{padding-bottom:2px}
@media (max-width: 1320px){
  .db-modal-window-shell-create{width:min(calc(100vw - 28px),1080px)}
  .db-modal-window-shell-schema{width:min(calc(100vw - 28px),1120px)}
}


/* v1.7.452 coherent dialog sizing */
.dialog-window-host .prop-window-shell.db-modal-window-shell{
  min-width:720px !important;
  min-height:520px !important;
  width:min(calc(100vw - 28px),960px) !important;
  height:min(calc(100vh - 28px),680px) !important;
}
.dialog-window-host .prop-window-shell.db-modal-window-shell-create{
  min-width:860px !important;
  min-height:620px !important;
  width:min(calc(100vw - 28px),1160px) !important;
  height:min(calc(100vh - 28px),800px) !important;
}
.dialog-window-host .prop-window-shell.db-modal-window-shell-schema{
  min-width:920px !important;
  min-height:620px !important;
  width:min(calc(100vw - 28px),1220px) !important;
  height:min(calc(100vh - 28px),820px) !important;
}
.dialog-window-host .prop-window-shell.db-modal-window-shell-compact{
  min-width:720px !important;
  min-height:520px !important;
  width:min(calc(100vw - 28px),780px) !important;
  height:min(calc(100vh - 28px),560px) !important;
}
@media (max-width: 1320px){
  .dialog-window-host .prop-window-shell.db-modal-window-shell-create{
    width:min(calc(100vw - 28px),1080px) !important;
  }
  .dialog-window-host .prop-window-shell.db-modal-window-shell-schema{
    width:min(calc(100vw - 28px),1120px) !important;
  }
}


/* v1.7.453 schema/create window sizing and scroll fixes */
.db-modal-window-body{min-height:0;overflow:hidden}
.db-object-dialog,
.schema-designer-dialog{
  display:grid;
  grid-template-rows:minmax(0,1fr) auto;
  min-height:0;
}
.db-dialog-scroll{min-height:0;overflow:auto;padding-right:8px;padding-bottom:16px;scrollbar-gutter:stable both-edges}
.db-dialog-footer-stack{position:sticky;bottom:0;z-index:3}
.db-dialog-result{max-height:128px;overflow:auto}
.db-sql-preview-pre{min-height:132px;max-height:min(24vh,260px)}
.db-object-dialog .db-object-column-table-wrap{min-height:220px;max-height:min(32vh,360px)}
.schema-designer-body .db-object-column-table-wrap{min-height:220px;max-height:min(24vh,300px)}
.dialog-window-host .prop-window-shell.db-modal-window-shell-create{
  min-width:940px !important;
  min-height:700px !important;
  width:min(calc(100vw - 28px),1240px) !important;
  height:min(calc(100vh - 28px),860px) !important;
}
.dialog-window-host .prop-window-shell.db-modal-window-shell-schema{
  min-width:1040px !important;
  min-height:720px !important;
  width:min(calc(100vw - 28px),1320px) !important;
  height:min(calc(100vh - 28px),920px) !important;
}
.dialog-window-host .prop-window-shell.db-modal-window-shell-compact{
  min-width:720px !important;
  min-height:520px !important;
  width:min(calc(100vw - 28px),820px) !important;
  height:min(calc(100vh - 28px),620px) !important;
}

.db-pane-static{display:block}
.db-pane-summary-static{cursor:default}
.db-pane-body-static{padding-top:0}
#dbObjectGeometrySection[hidden],
#dbObjectGeometrySection.is-hidden{display:none !important}
#dbObjectGeometrySection:not([hidden]){display:block !important}
.db-object-modal .prop-window-resize{
  width:24px;
  height:24px;
  right:6px;
  bottom:6px;
  z-index:40;
  pointer-events:auto;
  border:1px solid rgba(148,163,184,.32);
  background:linear-gradient(135deg,transparent 0 34%,#94a3b8 34% 42%,transparent 42% 56%,#94a3b8 56% 64%,transparent 64%),linear-gradient(180deg,rgba(255,255,255,.96),rgba(241,245,249,.98));
  box-shadow:0 8px 18px rgba(15,23,42,.14);
}
html[data-theme="dark"] .db-object-modal .prop-window-resize{
  border-color:rgba(96,165,250,.26);
  background:linear-gradient(135deg,transparent 0 34%,#93c5fd 34% 42%,transparent 42% 56%,#93c5fd 56% 64%,transparent 64%),linear-gradient(180deg,rgba(30,41,59,.96),rgba(15,23,42,.98));
}
@media (max-height: 860px){
  .schema-designer-body .db-object-column-table-wrap{max-height:min(26vh,280px)}
  .db-object-dialog .db-object-column-table-wrap{max-height:min(28vh,300px)}
  .db-sql-preview-pre{max-height:min(20vh,180px)}
}

.schema-designer-dialog .db-dialog-scroll{padding-bottom:18px;}
.schema-designer-dialog .db-dialog-footer-stack{position:relative;bottom:auto;margin-top:2px;}
.schema-designer-dialog .db-dialog-result{max-height:140px;}
.schema-designer-dialog .db-sql-preview-card{flex:0 0 auto;}
.db-indexes-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:end;}
.db-indexes-grid .check-row{align-self:center;margin:0;}
.db-index-actions{display:flex;align-items:center;justify-content:flex-start;}
.db-indexes-wrap{min-height:180px;max-height:min(20vh,220px);}
.db-indexes-table td code{font-size:11px;line-height:1.4;white-space:pre-wrap;word-break:break-word;}
.db-indexes-table td:last-child{text-align:right;}
@media (max-width: 1040px){
  .db-indexes-grid{grid-template-columns:minmax(0,1fr);}
}

/* v1.7.455 schema designer window hard-fix */
.dialog-window-host .prop-window-shell.db-modal-window-shell-schema{
  min-width:1160px !important;
  min-height:820px !important;
  width:min(calc(100vw - 24px), 1440px) !important;
  height:min(calc(100vh - 24px), 980px) !important;
}

.schema-designer-modal .prop-window-shell,
.schema-designer-modal .db-modal-window-body,
.schema-designer-modal .schema-designer-dialog{
  min-height:0 !important;
}

.schema-designer-modal .db-modal-window-body{
  display:flex !important;
  flex-direction:column !important;
  overflow:hidden !important;
}

.schema-designer-dialog{
  display:flex !important;
  flex-direction:column !important;
  gap:14px !important;
  height:100% !important;
  min-height:0 !important;
  overflow:hidden !important;
}

.schema-designer-dialog .db-dialog-scroll{
  flex:1 1 auto !important;
  min-height:0 !important;
  overflow:auto !important;
  padding-right:8px !important;
  padding-bottom:18px !important;
  scrollbar-gutter:stable both-edges !important;
}

.schema-designer-dialog .db-dialog-footer-stack{
  flex:0 0 auto !important;
  position:relative !important;
  bottom:auto !important;
  margin-top:0 !important;
}

.schema-designer-dialog .db-pane{
  flex:0 0 auto !important;
}

.schema-designer-body{
  display:flex !important;
  flex-direction:column !important;
  gap:12px !important;
  min-height:0 !important;
}

.schema-designer-body .db-object-column-table-wrap,
.schema-designer-dialog .db-object-column-table-wrap{
  min-height:360px !important;
  max-height:min(48vh, 560px) !important;
}

.schema-designer-dialog .db-object-column-table td,
.schema-designer-dialog .db-object-column-table th{
  white-space:nowrap;
}

.schema-designer-dialog .db-sql-preview-pre{
  min-height:170px !important;
  max-height:min(28vh, 320px) !important;
}

.schema-designer-dialog .db-dialog-result{
  min-height:88px !important;
  max-height:180px !important;
}

.schema-designer-dialog .db-indexes-wrap{
  min-height:220px !important;
  max-height:min(26vh, 300px) !important;
}

.schema-designer-dialog [data-window-drag]{
  cursor:grab !important;
  user-select:none;
}

.schema-designer-dialog .prop-window-resize,
.schema-designer-modal .prop-window-resize{
  display:block !important;
}

.schema-designer-modal .prop-window-shell.is-dragging-window [data-window-drag]{
  cursor:grabbing !important;
}

@media (max-height: 920px){
  .dialog-window-host .prop-window-shell.db-modal-window-shell-schema{
    height:min(calc(100vh - 24px), 920px) !important;
  }
  .schema-designer-body .db-object-column-table-wrap,
  .schema-designer-dialog .db-object-column-table-wrap{
    min-height:300px !important;
    max-height:min(42vh, 460px) !important;
  }
  .schema-designer-dialog .db-sql-preview-pre{
    min-height:140px !important;
    max-height:min(22vh, 240px) !important;
  }
}

@media (max-width: 1320px){
  .dialog-window-host .prop-window-shell.db-modal-window-shell-schema{
    width:min(calc(100vw - 24px), 1280px) !important;
  }
}

.layer-props-schema-tab{display:flex;flex-direction:column;gap:12px;min-height:0;height:100%;}
.layer-props-schema-host{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:auto;padding-right:4px;}
.layer-props-schema-host > .layer-props-schema-panel,
.layer-props-schema-host > .layer-props-schema-panel > .schema-inline-form{display:flex;flex-direction:column;min-height:0;height:100%;}
.layer-props-schema-host .schema-inline-form{background:transparent;border:0;box-shadow:none;padding:0;margin:0;}
.layer-props-schema-host .schema-inline-shell{position:relative!important;left:auto!important;top:auto!important;width:100%!important;height:auto!important;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:visible;border-radius:12px;box-shadow:none;}
.layer-props-schema-host .prop-window-titlebar{cursor:default;}
.layer-props-schema-host .db-modal-window-body{min-height:0;display:flex;flex-direction:column;padding:0;}
.layer-props-schema-host .schema-designer-dialog{display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:0;height:100%;}
.layer-props-schema-host .db-dialog-scroll{max-height:none!important;height:auto!important;overflow:visible;padding-right:2px;}
.layer-props-schema-host .schema-designer-body{display:flex;flex-direction:column;gap:10px;}
.layer-props-schema-host .schema-designer-body .db-object-column-table-wrap{max-height:min(52vh,520px);overflow:auto;}
.layer-props-schema-host .db-indexes-wrap{max-height:min(28vh,260px);overflow:auto;}
.layer-props-schema-host .db-fkeys-wrap{max-height:min(28vh,260px);overflow:auto;}
.layer-props-schema-host .db-sql-preview-pre{min-height:140px;max-height:240px;overflow:auto;}
.layer-props-schema-host .db-dialog-footer-stack{position:sticky;bottom:0;z-index:2;padding-top:10px;background:inherit;}
.layer-props-schema-host .db-dialog-actions{justify-content:flex-end;flex-wrap:wrap;gap:10px;}
.layer-props-schema-host .db-dialog-result{min-height:92px;max-height:180px;overflow:auto;}
html[data-theme="dark"] .layer-props-schema-host .schema-inline-form{background:transparent;}
html[data-theme="dark"] .layer-props-schema-host .schema-inline-shell{box-shadow:none;}


/* v1.7.458 schema GIS utilities */
.schema-geometry-body{display:grid;gap:14px;}
.schema-geometry-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;}
.schema-geometry-card{border:1px solid var(--db-border, rgba(148,163,184,.25));border-radius:14px;padding:12px 14px;background:linear-gradient(180deg,rgba(255,255,255,.94),rgba(248,250,252,.98));display:grid;gap:8px;}
.schema-geometry-value{font-size:1rem;font-weight:700;line-height:1.2;color:var(--text,#0f172a);}
.schema-geometry-actions-grid,.schema-geometry-quick-grid,.schema-geometry-derive-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;align-items:end;}
.schema-geometry-actions-grid .schema-meta-field-wide{grid-column:span 5;}
.schema-geometry-inline-actions{display:flex;justify-content:flex-end;align-items:end;gap:10px;height:100%;}
.schema-geometry-quick-grid .schema-geometry-check,.schema-geometry-derive-grid .schema-geometry-check{justify-content:flex-start;align-items:center;gap:8px;}
.schema-geometry-quick-grid .schema-geometry-check input,.schema-geometry-derive-grid .schema-geometry-check input{margin-right:4px;}
.schema-geometry-quick-grid > .db-index-actions,.schema-geometry-derive-grid > .db-index-actions{grid-column:span 2;}
.schema-geometry-tools-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.schema-geometry-tool-card{border:1px solid var(--db-border, rgba(148,163,184,.25));border-radius:14px;padding:12px 14px;background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(248,250,252,.98));display:grid;gap:10px;}
.schema-geometry-actions-grid-tight{grid-template-columns:repeat(4,minmax(0,1fr));}
.layer-props-schema-host .db-pane.db-pane-geometry-tools > .db-pane-body{padding-top:0;}
html[data-theme="dark"] .schema-geometry-card,
html[data-theme="dark"] .schema-geometry-tool-card{background:linear-gradient(180deg,rgba(15,23,42,.92),rgba(17,24,39,.94));border-color:rgba(148,163,184,.16);box-shadow:0 18px 34px rgba(2,6,23,.18);}
html[data-theme="dark"] .schema-geometry-value{color:#eff6ff;}
@media (max-width: 1180px){
  .schema-geometry-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .schema-geometry-actions-grid,.schema-geometry-quick-grid,.schema-geometry-derive-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .schema-geometry-actions-grid-tight{grid-template-columns:repeat(2,minmax(0,1fr));}
  .schema-geometry-actions-grid .schema-meta-field-wide{grid-column:span 2;}
  .schema-geometry-quick-grid > .db-index-actions,.schema-geometry-derive-grid > .db-index-actions{grid-column:span 2;}
  .schema-geometry-tools-grid{grid-template-columns:minmax(0,1fr);}
}
@media (max-width: 760px){
  .schema-geometry-summary-grid,.schema-geometry-actions-grid,.schema-geometry-quick-grid,.schema-geometry-derive-grid,.schema-geometry-actions-grid-tight{grid-template-columns:minmax(0,1fr);}
  .schema-geometry-actions-grid .schema-meta-field-wide,.schema-geometry-quick-grid > .db-index-actions,.schema-geometry-derive-grid > .db-index-actions{grid-column:auto;}
  .schema-geometry-inline-actions{justify-content:flex-start;}
}

/* === Composition manager / editor v1.7.475 === */
.composition-manager-floating{width:min(1080px,calc(100vw - 40px));min-width:860px;min-height:540px;height:min(680px,calc(100vh - 40px));right:auto;top:auto}
.composition-editor-floating{width:min(1400px,calc(100vw - 36px));min-width:1080px;min-height:700px;height:min(860px,calc(100vh - 36px));right:auto;top:auto}
.composition-manager-shell,.composition-editor-shell{position:relative;display:flex;flex-direction:column;overflow:hidden;height:100%}
.composition-manager-content,.composition-editor-content{display:flex;flex-direction:column;gap:12px;height:100%;min-height:0;padding:12px}
.composition-editor-content{flex:1 1 auto;min-height:0;height:auto;box-sizing:border-box;overflow:hidden;}
.composition-editor-head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.composition-editor-head-actions .btn{min-height:34px;padding:0 12px}
.composition-icon-btn{display:inline-flex;align-items:center;justify-content:center;min-width:34px;width:34px;height:34px;padding:0;border-radius:12px;font-size:15px;line-height:1;font-weight:700}
.composition-group-toggle-btn{min-width:30px;width:30px;height:30px;border-radius:10px;font-size:13px}
.composition-toolbar-buttons{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.composition-editor-topbar-actions.is-collapsed .composition-toolbar-buttons,.composition-editor-actionbar-group.is-collapsed .composition-toolbar-buttons{display:none}
.composition-editor-topbar-actions.is-collapsed,.composition-editor-actionbar-group.is-collapsed{padding-right:6px}
.composition-group-toggle-btn[aria-pressed="true"] span{transform:rotate(-90deg)}
.composition-icon-btn span{pointer-events:none;display:inline-flex;align-items:center;justify-content:center}
.composition-head-btn{border-radius:11px}
.composition-tool-btn,.composition-action-btn{background:#fff}
.composition-tool-btn:hover,.composition-action-btn:hover,.composition-head-btn:hover{transform:translateY(-1px)}
.composition-manager-toolbar,.composition-editor-topbar,.composition-editor-actionbar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}
.composition-editor-topbar{flex:0 0 auto;align-content:flex-start}
.composition-manager-toolbar-main,.composition-manager-toolbar-templates{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.composition-template-field{min-width:240px}
.composition-template-field select{min-width:240px}
.composition-inline-field{display:flex;flex-direction:column;gap:4px;min-width:240px}
.composition-inline-field span{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.02em}
.composition-inline-field select{min-width:240px}
.composition-template-hint-title{font-weight:700;color:#0f172a;margin-bottom:4px}
.composition-template-hint-desc{margin-bottom:8px}
.composition-template-hint-meta{display:flex;flex-direction:column;gap:4px}
.composition-editor-topbar-group,.composition-editor-actionbar-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.composition-editor-topbar-settings{flex:1 1 520px}
.composition-editor-topbar-actions{flex:0 1 auto;padding:6px 8px;border:1px solid #d6dee8;border-radius:14px;background:linear-gradient(180deg,#fff,#f8fafc)}
.composition-editor-topbar-actions .composition-actionbar-label,.composition-editor-actionbar-group .composition-actionbar-label{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:#64748b;font-weight:800}
.composition-inline-check{align-self:flex-end;margin:0 2px 6px 0}
.composition-editor-actionbar{padding:8px 10px;border:1px solid #d6dee8;border-radius:14px;background:linear-gradient(180deg,#fff,#f8fafc)}
.composition-selection-badge{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid #cbd5e1;background:#fff;color:#334155;font-size:12px;font-weight:700}
.composition-actionbar-label{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid #d6dee8;background:#f8fafc;color:#64748b;font-size:12px;font-weight:700}
.composition-editor-actionbar .btn[disabled]{opacity:.45;cursor:not-allowed;filter:grayscale(.08)}
.composition-editor-topbar-actions .btn{cursor:grab}
.composition-editor-topbar-actions .btn:active{cursor:grabbing}
.composition-editor-topbar .prop-field.compact{min-width:120px;max-width:140px}
.composition-editor-topbar .prop-field.compact select{min-width:0;width:100%}
.composition-editor-topbar .btn#btnCompositionClearGuides{white-space:nowrap;padding:0 12px;height:34px}
.composition-editor-content{overflow:hidden}
.composition-editor-topbar,.composition-editor-actionbar{flex:0 0 auto}
.composition-editor-layout{flex:1 1 auto;min-height:0;overflow:hidden;align-items:stretch;box-sizing:border-box}
.composition-editor-sidebar,.composition-editor-props{height:100%;min-height:0;overflow:auto}
.composition-editor-stage-wrap{height:100%;min-height:0;overflow:auto}

.composition-manager-body,.composition-editor-layout{display:grid;gap:12px;min-height:0;flex:1 1 auto}
.composition-editor-layout{flex:1 1 auto;min-height:0;overflow:hidden;align-items:stretch;box-sizing:border-box;}
.composition-manager-body{grid-template-columns:minmax(420px,1.2fr) minmax(240px,.7fr)}
.composition-editor-layout{--composition-left-width:290px;--composition-right-width:300px;grid-template-columns:var(--composition-left-width) 10px minmax(480px,1fr) 10px var(--composition-right-width)}
.composition-manager-list-panel,.composition-editor-sidebar,.composition-editor-props,.composition-side-card{display:flex;flex-direction:column;gap:10px;min-height:0}
.composition-editor-layout-splitter{align-self:stretch;min-height:100%;width:10px;border-radius:999px;background:linear-gradient(180deg,#d7dce4,#bcc5d1);cursor:col-resize;position:relative}
.composition-editor-layout-splitter::after{content:'';position:absolute;inset:0;border-radius:999px;transition:background .15s ease}
.composition-editor-layout-splitter:hover::after,.composition-editor-layout-splitter.is-dragging::after{background:rgba(44,106,242,.16)}
.composition-editor-sidebar{overflow:auto;scrollbar-gutter:stable;align-self:stretch;height:100%;min-height:0}
.composition-editor-sidebar > .composition-side-card{flex:0 0 auto;min-height:fit-content;overflow:hidden}
.composition-editor-sidebar > .composition-side-card:last-child{flex:1 1 220px;min-height:180px}
.composition-editor-sidebar > .composition-side-card.is-collapsed,.composition-editor-sidebar > .composition-side-card.is-collapsed:last-child{flex:0 0 auto;min-height:fit-content}
.composition-editor-sidebar > .composition-side-card:last-child > .composition-side-card-body,.composition-editor-props > .composition-side-card:first-child > .composition-side-card-body{flex:1 1 auto;min-height:0}
.composition-manager-list-panel,.composition-editor-sidebar,.composition-editor-props{border:1px solid #d6dee8;border-radius:16px;background:linear-gradient(180deg,#fff,#f7f9fc);padding:12px;box-sizing:border-box}
.composition-manager-list-head h5,.composition-side-card h5{margin:0;font-size:14px;color:#0f172a}
.composition-side-card-header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.composition-side-card-body{display:flex;flex-direction:column;gap:10px;min-height:0}
.composition-side-card-toggle{flex:0 0 auto}
.composition-side-card.is-collapsed > .composition-side-card-body{display:none}
.composition-manager-list-head p,.composition-side-card p,.composition-side-meta,.composition-page-meta{margin:0;font-size:12px;color:#475467;line-height:1.45}
.composition-manager-list,.composition-elements-list{display:flex;flex-direction:column;gap:8px;overflow:auto;min-height:0;padding-right:4px}
.composition-list-item,.composition-element-row{display:flex;align-items:center;gap:10px;width:100%;border:1px solid #cfd8e3;border-radius:12px;background:#fff;padding:10px 12px;box-sizing:border-box;text-align:left;color:#0f172a;cursor:pointer;transition:border-color .16s ease, box-shadow .16s ease, transform .16s ease}
.composition-list-item:hover,.composition-element-row:hover{border-color:#8bb7ff;box-shadow:0 10px 24px rgba(37,99,235,.10);transform:translateY(-1px)}
.composition-list-item.is-active,.composition-element-row.is-active{border-color:#2563eb;box-shadow:0 0 0 2px rgba(37,99,235,.16)}
.composition-list-item.is-secondary-active,.composition-element-row.is-secondary-active{border-color:#8bb7ff;box-shadow:0 0 0 1px rgba(37,99,235,.12)}
.composition-list-main,.composition-element-main{display:flex;flex-direction:column;min-width:0;gap:2px;flex:1 1 auto}
.composition-list-main strong,.composition-element-main strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.composition-list-main span,.composition-list-meta,.composition-element-main small,.composition-element-index,.composition-element-flags,.composition-empty-state{font-size:11px;color:#64748b}
.composition-element-index{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:#e2e8f0;font-weight:700;flex:0 0 auto}
.composition-elements-tools{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.composition-elements-search-row{display:flex;align-items:flex-end;gap:8px}
.composition-elements-search-field{flex:1 1 auto}
.composition-elements-clear-btn{min-width:38px;min-height:38px;padding:0 10px}
.composition-elements-filters-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.composition-elements-summary{font-size:11px;color:#64748b;line-height:1.4;padding:8px 10px;border:1px dashed #cbd5e1;border-radius:10px;background:#f8fafc}
.composition-elements-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.composition-elements-actions-secondary{margin-top:-2px}
.composition-elements-batch-btn{min-width:40px;min-height:36px}
.composition-elements-quick-btn{min-height:34px;padding:0 10px;border-radius:10px;font-size:12px}
.composition-element-row{align-items:flex-start}
.composition-element-main{gap:4px}
.composition-element-meta{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center}
.composition-element-dimensions{font-size:11px;color:#64748b}
.composition-element-badges{display:flex;flex-wrap:wrap;gap:6px}
.composition-element-badge{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:2px 8px;border-radius:999px;background:#f8fafc;border:1px solid #dbe3ee;color:#334155;font-size:10px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.composition-element-badge.is-type{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}
.composition-element-badge.is-muted{background:#f8fafc;border-color:#cbd5e1;color:#64748b}
.composition-element-badge.is-danger{background:#fef2f2;border-color:#fecaca;color:#b91c1c}
.composition-element-badge.is-warn{background:#fff7ed;border-color:#fed7aa;color:#c2410c}
.composition-element-badge.is-group{background:#eef2ff;border-color:#c7d2fe;color:#4338ca}
.composition-element-group-badge{display:inline-flex;align-items:center;gap:4px;align-self:flex-start;max-width:100%;padding:2px 8px;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:10px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.composition-element-row.is-grouped .composition-element-index{background:#dbeafe;color:#1d4ed8}
.composition-element-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto;align-self:flex-start}
.composition-element-action-btn{min-width:32px;min-height:32px;padding:0 8px;border-radius:10px}
.composition-element-action-btn.is-off{opacity:.72}
.composition-element-action-btn.is-on{box-shadow:0 0 0 2px rgba(37,99,235,.16)}
.composition-element-rename-input{width:100%;min-width:0;border:1px solid #93c5fd;border-radius:10px;padding:7px 10px;font-size:13px;font-weight:700;background:#fff;color:#0f172a;box-sizing:border-box}
.composition-editor-stage-wrap{border:1px solid #d6dee8;border-radius:18px;background:linear-gradient(180deg,#edf2f7,#dfe7f0);overflow:auto;scrollbar-gutter:stable;min-height:0;height:100%;display:flex;flex-direction:column}
.composition-editor-stage{flex:1 1 auto;overflow:visible;padding:18px;box-sizing:border-box;min-height:100%;background:repeating-linear-gradient(45deg,rgba(148,163,184,.12) 0 12px,rgba(255,255,255,.12) 12px 24px)}
.composition-stage-scroll{position:relative}
.composition-canvas-shell{position:relative;min-width:max-content;min-height:max-content;padding:34px 0 0 34px}
.composition-ruler-corner{position:absolute;left:0;top:0;width:34px;height:34px;border:1px solid #cbd5e1;border-radius:12px 0 0 0;background:linear-gradient(180deg,#f8fafc,#e2e8f0);box-shadow:inset 0 0 0 1px rgba(255,255,255,.65);z-index:6}
.composition-ruler{position:absolute;user-select:none;touch-action:none;overflow:hidden;background:linear-gradient(180deg,#f8fafc,#eef2f7);box-shadow:inset 0 0 0 1px rgba(255,255,255,.65);z-index:6}
.composition-ruler-top{left:34px;top:0;height:26px;border:1px solid #cbd5e1;border-left:none;border-radius:0 12px 0 0}
.composition-ruler-left{left:0;top:34px;width:26px;border:1px solid #cbd5e1;border-top:none;border-radius:0 0 0 12px}
.composition-ruler-track{position:relative;width:100%;height:100%}
.composition-ruler-top .composition-ruler-tick{position:absolute;bottom:0;width:1px;background:#94a3b8}
.composition-ruler-left .composition-ruler-tick{position:absolute;right:0;height:1px;background:#94a3b8}
.composition-ruler-tick.is-major{background:#64748b}
.composition-ruler-top .composition-ruler-tick.is-minor{height:6px}
.composition-ruler-top .composition-ruler-tick.is-mid{height:10px}
.composition-ruler-top .composition-ruler-tick.is-major{height:14px}
.composition-ruler-left .composition-ruler-tick.is-minor{width:6px}
.composition-ruler-left .composition-ruler-tick.is-mid{width:10px}
.composition-ruler-left .composition-ruler-tick.is-major{width:14px}
.composition-ruler-top .composition-ruler-label{position:absolute;top:2px;transform:translateX(-50%);font-size:9px;line-height:1;color:#475467;font-weight:700}
.composition-ruler-left .composition-ruler-label{position:absolute;left:2px;transform:translateY(-50%);font-size:9px;line-height:1;color:#475467;font-weight:700}
.composition-page-dropzone{min-width:max-content;min-height:max-content;padding:12px;border-radius:16px;display:flex;align-items:center;justify-content:center}
.composition-page-dropzone.is-drop-active{background:rgba(37,99,235,.08);box-shadow:inset 0 0 0 2px rgba(37,99,235,.18)}
.composition-page{position:relative;border:1px solid #94a3b8;background:#fff;box-shadow:0 22px 48px rgba(15,23,42,.16);background-image:linear-gradient(to right,rgba(226,232,240,.5) 1px,transparent 1px),linear-gradient(to bottom,rgba(226,232,240,.5) 1px,transparent 1px);background-size:32px 32px;outline:none}
.composition-guides-layer{position:absolute;inset:0;pointer-events:none;z-index:1}
.composition-guide{position:absolute;background:rgba(37,99,235,.42);pointer-events:none}
.composition-guide.is-vertical{top:0;bottom:0;width:1px;transform:translateX(-.5px)}
.composition-guide.is-horizontal{left:0;right:0;height:1px;transform:translateY(-.5px)}
.composition-guide.is-center{background:rgba(59,130,246,.18);border-style:dashed}
.composition-guide.is-snap{background:rgba(37,99,235,.62)}
.composition-guide.is-manual{background:rgba(244,114,182,.82);pointer-events:auto;z-index:4}
.composition-guide.is-manual.is-vertical{width:2px;transform:translateX(-1px)}
.composition-guide.is-manual.is-horizontal{height:2px;transform:translateY(-1px)}
.composition-guide.is-manual:hover{background:rgba(236,72,153,.95)}
.composition-guide.is-draft{background:rgba(236,72,153,.65)}
.composition-empty-stage{display:flex;align-items:center;justify-content:center;height:100%;min-height:260px;color:#64748b;font-size:13px;text-align:center;padding:24px}
.composition-page-element{position:absolute;box-sizing:border-box;border:1px dashed rgba(100,116,139,.65);background:rgba(255,255,255,.72);overflow:visible;user-select:none;z-index:2;touch-action:none}
.composition-page-element:hover{border-color:#2563eb}
.composition-page-element.is-selected{border:2px solid #2563eb;box-shadow:0 0 0 2px rgba(37,99,235,.14);z-index:3}
.composition-page-element.is-multi-selected{border:2px solid #8bb7ff;box-shadow:0 0 0 1px rgba(37,99,235,.12);z-index:3}
.composition-resize-handle{position:absolute;width:10px;height:10px;border-radius:999px;border:2px solid #fff;background:#2563eb;box-shadow:0 0 0 1px rgba(15,23,42,.18);padding:0;z-index:5}
.composition-resize-handle.handle-nw{left:-7px;top:-7px}
.composition-resize-handle.handle-n{left:calc(50% - 5px);top:-7px}
.composition-resize-handle.handle-ne{right:-7px;top:-7px}
.composition-resize-handle.handle-e{right:-7px;top:calc(50% - 5px)}
.composition-resize-handle.handle-se{right:-7px;bottom:-7px}
.composition-resize-handle.handle-s{left:calc(50% - 5px);bottom:-7px}
.composition-resize-handle.handle-sw{left:-7px;bottom:-7px}
.composition-resize-handle.handle-w{left:-7px;top:calc(50% - 5px)}
.composition-page-element.is-locked::after{content:'🔒';position:absolute;right:4px;top:2px;font-size:11px;background:rgba(255,255,255,.85);padding:0 4px;border-radius:999px}
.composition-page-element.is-hidden-element{opacity:.45}
.composition-map-card,.composition-text-box,.composition-image-box,.composition-legend-box,.composition-table-box{width:100%;height:100%;display:flex;flex-direction:column;box-sizing:border-box}
.composition-table-box{gap:3px;overflow:hidden;--composition-table-border:0.4mm solid #94a3b8;--composition-table-padding-y:1.3mm;--composition-table-padding-x:1.8mm;--composition-table-columns:2;--composition-table-justify:flex-start;--composition-table-valign:center}
.composition-table-caption{font-weight:700;line-height:1.2;color:inherit}
.composition-table-grid{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;border-left:var(--composition-table-border);border-top:var(--composition-table-border);overflow:hidden}
.composition-table-row{display:grid;grid-template-columns:repeat(var(--composition-table-columns),minmax(0,1fr));min-height:0;flex:0 0 auto}
.composition-table-cell{border-right:var(--composition-table-border);border-bottom:var(--composition-table-border);padding:var(--composition-table-padding-y) var(--composition-table-padding-x);display:flex;justify-content:var(--composition-table-justify);align-items:var(--composition-table-valign);white-space:pre-wrap;word-break:break-word;min-width:0;overflow:hidden;box-sizing:border-box}
.composition-table-cell.is-header{font-weight:700}
.composition-table-field-picker{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow:auto;padding:6px;border:1px solid #d6dee8;border-radius:10px;background:rgba(255,255,255,.72)}
.composition-table-field-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.composition-table-field-row.is-selected{background:rgba(37,99,235,.08);border-radius:8px;padding:4px 6px}
.composition-table-field-row .btn{justify-content:flex-start}
.composition-table-field-tools{display:inline-flex;gap:4px;flex:0 0 auto}
.composition-map-card{border:1px solid #94a3b8;border-radius:6px;background:linear-gradient(180deg,#f8fafc,#eef2f7);overflow:hidden;box-shadow:0 8px 22px rgba(15,23,42,.12)}
.composition-map-card.is-no-frame{border-color:transparent;box-shadow:none}
.composition-map-card.is-flat{box-shadow:none}
.composition-map-title{padding:6px 8px;border-bottom:1px solid #cbd5e1;font-size:11px;font-weight:700;color:#334155;background:rgba(255,255,255,.86)}
.composition-map-body{position:relative;display:flex;flex:1 1 auto;min-height:0;overflow:hidden}
.composition-map-live-surface{position:absolute;inset:0;display:block;overflow:hidden;background:transparent}
.composition-map-live-surface.is-loading{background:linear-gradient(180deg,rgba(255,255,255,.72),rgba(241,245,249,.92))}
.composition-map-live-canvas,.composition-map-image,.composition-map-vector{width:100%;height:100%;display:block;flex:1 1 auto}
.composition-map-live-canvas{background:transparent;pointer-events:none;touch-action:none}
.composition-map-image{object-fit:cover}
.composition-map-vector{background:linear-gradient(180deg,rgba(255,255,255,.82),rgba(241,245,249,.94))}
.composition-map-image-crop{position:relative;width:100%;height:100%;overflow:hidden}
.composition-map-image.is-atlas-aware{position:absolute;max-width:none;max-height:none;object-fit:fill}
.composition-map-atlas-outline{position:absolute;z-index:2;border:2px solid #ec4899;border-radius:6px;box-shadow:0 0 0 1px rgba(255,255,255,.55) inset;pointer-events:none}
.composition-map-atlas-chip{position:absolute;left:8px;top:8px;z-index:3;display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;background:rgba(15,23,42,.78);color:#fff;font-size:10px;font-weight:800;letter-spacing:.02em;max-width:calc(100% - 16px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.composition-map-atlas-caption{position:absolute;left:8px;bottom:8px;z-index:3;max-width:calc(100% - 84px);padding:3px 8px;border-radius:999px;background:rgba(255,255,255,.92);border:1px solid #cbd5e1;font-size:10px;font-weight:700;color:#334155;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.composition-map-placeholder{display:flex;align-items:center;justify-content:center;height:100%;font-size:12px;color:#64748b;padding:10px;text-align:center}
.composition-map-body.is-view-editing{cursor:grab;outline:2px dashed rgba(37,99,235,.45);outline-offset:-2px}
.composition-map-body.is-view-dragging{cursor:grabbing}
.composition-map-edit-overlay{position:absolute;left:8px;right:8px;top:8px;z-index:6;padding:6px 10px;border-radius:12px;background:rgba(37,99,235,.92);color:#fff;font-size:10px;font-weight:800;letter-spacing:.02em;box-shadow:0 8px 22px rgba(15,23,42,.16);pointer-events:none}
.composition-map-warning{position:absolute;left:8px;right:8px;bottom:36px;z-index:6;display:flex;flex-direction:column;gap:4px;padding:8px 10px;border-radius:12px;background:rgba(254,242,242,.95);border:1px solid rgba(248,113,113,.45);color:#991b1b;font-size:10px;font-weight:700;line-height:1.35;box-shadow:0 6px 20px rgba(15,23,42,.08);pointer-events:none}
.composition-map-scale-badge{position:absolute;right:8px;bottom:8px;z-index:3;padding:3px 8px;border-radius:999px;background:rgba(255,255,255,.92);border:1px solid #cbd5e1;font-size:10px;font-weight:700;color:#334155}
.composition-map-linked-extent{position:absolute;z-index:4;border:2px solid #f97316;border-radius:6px;background:rgba(255,255,255,.02);box-sizing:border-box;pointer-events:none;overflow:visible}
.composition-map-linked-extent-label{position:absolute;left:0;top:0;transform:translate(0,-100%);margin-top:-4px;display:inline-flex;align-items:center;min-height:18px;padding:0 6px;border-radius:999px;background:rgba(249,115,22,.92);color:#fff;font-size:9px;font-weight:800;letter-spacing:.02em;max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 4px 12px rgba(15,23,42,.18)}
.composition-map-linked-extent-center{position:absolute;left:50%;top:50%;width:14px;height:14px;transform:translate(-50%,-50%);border:2px solid currentColor;border-radius:999px;box-shadow:0 0 0 1px rgba(255,255,255,.82);opacity:.95}
.composition-map-linked-extent-center::before,.composition-map-linked-extent-center::after{content:"";position:absolute;left:50%;top:50%;background:currentColor;transform:translate(-50%,-50%)}
.composition-map-linked-extent-center::before{width:2px;height:16px;border-radius:999px}
.composition-map-linked-extent-center::after{width:16px;height:2px;border-radius:999px}
.composition-map-grid-layer{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}
.composition-map-grid-line{position:absolute;box-sizing:border-box}
.composition-map-grid-line.is-vertical{top:0;bottom:0;border-left:1px dashed currentColor}
.composition-map-grid-line.is-horizontal{left:0;right:0;border-top:1px dashed currentColor}
.composition-map-grid-label{position:absolute;z-index:3;display:inline-flex;align-items:center;justify-content:center;min-height:16px;padding:0 5px;border-radius:999px;font-size:9px;font-weight:700;line-height:1;transform:translate(-50%,-50%);box-shadow:0 2px 8px rgba(15,23,42,.10);white-space:nowrap}
.composition-map-grid-label.is-bottom{bottom:6px;transform:translate(-50%,0)}
.composition-map-grid-label.is-left{left:6px;transform:translate(0,-50%)}
.composition-text-box{align-items:stretch;justify-content:center;background:transparent;line-height:1.25;word-break:break-word;overflow:hidden}
.composition-text-box-inner{width:100%;white-space:pre-wrap}
.composition-rect-box{width:100%;height:100%;background:rgba(226,232,240,.55);border:1px solid #64748b;box-sizing:border-box}
.composition-shape-box,.composition-line-box{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}
.composition-shape-svg,.composition-line-svg{display:block;width:100%;height:100%}
.composition-line-svg{overflow:visible}
.composition-image-box{position:relative;align-items:center;justify-content:center;border:1px dashed #94a3b8;background:linear-gradient(180deg,#f8fafc,#eef2f7);font-size:12px;color:#475467;text-align:center;padding:6px;overflow:hidden}
.composition-image-box.is-placeholder{text-transform:uppercase;font-weight:700}
.composition-image-media{display:block;width:100%;height:100%}
.composition-image-media.is-contain{object-fit:contain}
.composition-image-media.is-cover{object-fit:cover}
.composition-image-prop-source{display:grid;grid-template-columns:minmax(0,88px) 1fr;gap:10px;align-items:start}
.composition-image-prop-preview{width:88px;height:68px;border:1px solid #cbd5e1;border-radius:10px;background:linear-gradient(180deg,#fff,#f8fafc);overflow:hidden;display:flex;align-items:center;justify-content:center}
.composition-image-prop-preview img{display:block;width:100%;height:100%;object-fit:contain}
.composition-image-prop-meta{display:flex;flex-direction:column;gap:4px;min-width:0}
.composition-image-prop-meta strong,.composition-image-prop-meta span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.composition-image-prop-meta span{font-size:12px;color:#64748b}
.composition-north-box{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:20px;font-weight:800;color:#0f172a;line-height:1;gap:3px}
.composition-north-box.has-circle{border:1px solid currentColor;border-radius:999px;padding:4px;box-sizing:border-box}
.composition-north-box.is-rose .composition-north-symbol{font-size:22px;transform:rotate(45deg)}
.composition-north-symbol{font-size:22px;line-height:1}
.composition-north-box span{font-size:12px;letter-spacing:.06em}
.composition-scalebar-wrap{display:flex;flex-direction:column;gap:4px;height:100%;justify-content:center}
.composition-scalebar-box{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;height:14px;border:1px solid #0f172a}
.composition-scalebar-segment.is-dark{background:#0f172a}
.composition-scalebar-segment.is-light{background:#fff}
.composition-scalebar-label-row,.composition-scalebar-labels{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#0f172a;gap:8px}
.composition-scalebar-line{position:relative;height:12px;border-bottom:2px solid #0f172a}
.composition-scalebar-tick{position:absolute;bottom:-2px;width:1px;height:12px;background:#0f172a;transform:translateX(-.5px)}
.composition-scalebar-labels{position:relative;min-height:14px}
.composition-scalebar-label{position:absolute;top:0;transform:translateX(-50%)}
.composition-scalebar-unit{margin-left:auto;padding-left:8px}
.composition-scalebar-scale-label{font-size:10px;font-weight:700;color:#334155}
.composition-legend-box{padding:8px;gap:6px;background:rgba(255,255,255,.92);border:1px solid #cbd5e1;border-radius:8px;overflow:auto}
.composition-legend-box.is-no-frame{border-color:transparent}
.composition-legend-box.is-transparent{background:transparent}
.composition-legend-box.is-compact{gap:4px;padding:6px}
.composition-legend-box strong{font-size:12px;color:#0f172a}
.composition-legend-row{display:flex;align-items:center;gap:8px;font-size:11px;color:#334155;min-height:16px}
.composition-legend-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;flex:0 0 auto}
.composition-legend-swatch{width:14px;height:10px;border:1px solid #64748b;background:#dbeafe;display:inline-block;flex:0 0 auto}
.composition-legend-swatch.is-line{width:14px;height:0;border:none;border-top:3px solid #64748b;background:transparent}
.composition-legend-swatch.is-point{width:10px;height:10px;border-radius:999px}
.composition-legend-empty{font-size:11px;color:#64748b}
.composition-type-props{display:flex;flex-direction:column;gap:10px}
.composition-props-section{display:flex;flex-direction:column;gap:10px;padding:10px;border:1px solid #d6dee8;border-radius:12px;background:rgba(248,250,252,.82)}
.composition-props-section-header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.composition-props-section-body{display:flex;flex-direction:column;gap:10px;min-height:0}
.composition-props-section-toggle{flex:0 0 auto}
.composition-props-section.is-collapsed>.composition-props-section-body{display:none}
.composition-props-section-title{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#475467}
.composition-props-form{display:flex;flex-direction:column;gap:10px}
.composition-props-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.composition-props-empty{font-size:12px;color:#64748b}
.composition-props-actions{display:flex;flex-wrap:wrap;gap:8px}
.composition-side-card{border:1px solid #d6dee8;border-radius:14px;background:linear-gradient(180deg,#fff,#f8fafc);padding:12px}
.composition-editor-props{overflow:auto;scrollbar-gutter:stable;align-self:stretch;height:100%;min-height:0}
.composition-editor-props > .composition-side-card:first-child{flex:1 1 auto;min-height:0;overflow:auto}
.composition-editor-props > .composition-side-card.is-collapsed:first-child{flex:0 0 auto;min-height:fit-content;overflow:hidden}
.composition-editor-props > .composition-side-card:last-child{flex:0 0 auto}
.composition-atlas-panel{display:flex;flex-direction:column;gap:10px;min-height:0}
.composition-atlas-meta{min-height:56px}
.composition-atlas-panel .composition-props-actions{display:flex;gap:8px;flex-wrap:wrap}
.composition-atlas-panel .composition-props-actions .btn{flex:1 1 0;min-width:0}
.composition-props-form,.composition-props-empty{flex:0 0 auto}
.composition-quick-help{overflow:hidden}
.composition-quick-help summary{list-style:none;cursor:pointer;font-size:14px;font-weight:700;color:#0f172a;display:flex;align-items:center;justify-content:space-between;gap:12px}
.composition-quick-help summary::-webkit-details-marker{display:none}
.composition-quick-help summary::after{content:"▾";font-size:13px;color:#64748b;transition:transform .16s ease}
.composition-quick-help:not([open]) p{display:none}
.composition-quick-help[open] summary{margin-bottom:8px}
.composition-quick-help:not([open]) summary::after{transform:rotate(-90deg)}
.composition-side-meta{display:flex;flex-direction:column;gap:4px}
.composition-empty-state{padding:14px;border:1px dashed #cbd5e1;border-radius:12px;background:rgba(255,255,255,.72);line-height:1.45}
.composition-token-section{gap:8px}
.composition-token-help{font-size:11px;line-height:1.45;color:#475467}
.composition-token-toolbar{display:flex;flex-wrap:wrap;gap:6px}
.composition-token-btn{min-height:30px;padding:0 10px;border-radius:999px;font-size:11px;font-weight:700}
.composition-token-preview{display:flex;flex-direction:column;gap:4px;padding:8px 10px;border:1px dashed #cbd5e1;border-radius:10px;background:rgba(255,255,255,.7);font-size:11px;color:#334155}
.composition-token-preview span{white-space:pre-wrap;word-break:break-word}
.composition-atlas-nav-actions{justify-content:flex-start}
.composition-atlas-nav-actions .composition-atlas-icon-btn{flex:0 0 auto;min-width:40px;width:40px;height:40px;border-radius:14px;font-size:16px}
.composition-atlas-filter-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:10px 12px;border:1px dashed #cbd5e1;border-radius:12px;background:rgba(255,255,255,.66)}
.composition-atlas-filter-summary .btn{white-space:nowrap}
.composition-atlas-filter-meta{flex:1 1 220px}
.composition-atlas-rules-floating{width:min(960px,calc(100vw - 44px));min-width:760px;min-height:520px;height:min(700px,calc(100vh - 44px));right:auto;top:auto}
.composition-atlas-rules-shell{position:relative;display:flex;flex-direction:column;overflow:hidden;height:100%}
.composition-atlas-rules-content{display:flex;flex-direction:column;gap:12px;height:100%;min-height:0;padding:12px}
.composition-atlas-rules-body{display:flex;flex-direction:column;gap:12px;min-height:0;height:100%}
.composition-atlas-rules-summary{display:grid;grid-template-columns:minmax(260px,1fr) minmax(240px,320px);gap:12px;align-items:start}
.composition-atlas-rules-toolbar{display:flex;gap:8px;flex-wrap:wrap}
.composition-atlas-rules-list{display:flex;flex-direction:column;gap:10px;min-height:0;overflow:auto;scrollbar-gutter:stable;padding-right:4px}
.composition-atlas-rule-row{display:grid;grid-template-columns:120px minmax(160px,1fr) minmax(150px,.9fr) minmax(130px,.8fr) minmax(110px,.7fr) auto;gap:10px;align-items:end;padding:12px;border:1px solid #d6dee8;border-radius:14px;background:linear-gradient(180deg,#fff,#f8fafc)}
.composition-atlas-rule-check{align-self:center;margin-bottom:6px}
.composition-atlas-rule-actions{display:flex;align-items:center;justify-content:flex-end;min-height:34px}
.composition-atlas-rule-row .prop-field.is-disabled{opacity:.58}
@media (max-width: 980px){.composition-atlas-rules-summary{grid-template-columns:1fr}.composition-atlas-rule-row{grid-template-columns:1fr 1fr}.composition-atlas-rule-actions{justify-content:flex-start}.composition-atlas-rules-floating{left:12px!important;right:12px!important;top:86px!important;width:auto!important;min-width:0!important;height:min(78vh,700px)!important;max-height:calc(100vh - 98px)}}

.composition-help-floating{width:min(1020px,calc(100vw - 44px));min-width:760px;min-height:560px;height:min(760px,calc(100vh - 44px));right:auto;top:auto}
.composition-help-shell{position:relative;display:flex;flex-direction:column;overflow:hidden;height:100%}
.composition-help-content{display:grid;grid-template-columns:220px minmax(0,1fr);gap:12px;height:100%;min-height:0;padding:12px}
.composition-help-nav,.composition-help-body{border:1px solid #d6dee8;border-radius:16px;background:linear-gradient(180deg,#fff,#f7f9fc);padding:12px;box-sizing:border-box}
.composition-help-nav{display:flex;flex-direction:column;gap:8px;overflow:auto}
.composition-help-nav-btn{justify-content:flex-start;min-height:38px;padding:0 12px}
.composition-help-nav-btn.is-active{border-color:#2563eb;background:rgba(37,99,235,.08);color:#1d4ed8}
.composition-help-body{overflow:auto;display:flex;flex-direction:column;gap:14px}
.composition-help-section{display:none;flex-direction:column;gap:12px}
.composition-help-section.is-active{display:flex}
.composition-help-section-head h4{margin:0;font-size:18px;color:#0f172a}
.composition-help-section-head p{margin:4px 0 0;font-size:13px;line-height:1.55;color:#475467}
.composition-help-list{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:8px;color:#334155;font-size:13px;line-height:1.5}
.composition-help-list.compact{gap:6px;font-size:12px}
.composition-help-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.composition-help-card{border:1px solid #d6dee8;border-radius:14px;background:linear-gradient(180deg,#ffffff,#f8fafc);padding:12px;display:flex;flex-direction:column;gap:8px}
.composition-help-card h6{margin:0;font-size:13px;color:#0f172a}
.composition-help-token-grid{display:flex;flex-direction:column;gap:10px}
.composition-help-token-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid #d6dee8;border-radius:14px;background:linear-gradient(180deg,#fff,#f8fafc)}
.composition-help-token-meta{display:flex;flex-direction:column;gap:2px;min-width:0}
.composition-help-token-meta strong{font-size:13px;color:#0f172a}
.composition-help-token-meta span{font-size:12px;color:#334155}
.composition-help-token-meta small{font-size:11px;line-height:1.4;color:#64748b}
@media (max-width: 1180px){.composition-help-content{grid-template-columns:1fr}.composition-help-nav{flex-direction:row;flex-wrap:wrap}}
html[data-theme="dark"] .composition-help-nav,html[data-theme="dark"] .composition-help-body,html[data-theme="dark"] .composition-help-card,html[data-theme="dark"] .composition-help-token-row{background:linear-gradient(180deg,#111827,#0f172a);border-color:#334155}
html[data-theme="dark"] .composition-help-section-head h4,html[data-theme="dark"] .composition-help-card h6,html[data-theme="dark"] .composition-help-token-meta strong{color:#e5e7eb}
html[data-theme="dark"] .composition-help-section-head p,html[data-theme="dark"] .composition-help-list,html[data-theme="dark"] .composition-help-token-meta span{color:#cbd5e1}
html[data-theme="dark"] .composition-help-token-meta small{color:#94a3b8}
html[data-theme="dark"] .composition-help-nav-btn.is-active{background:rgba(59,130,246,.16);color:#bfdbfe;border-color:#3b82f6}
.prop-field.compact{min-width:120px}
@media (max-width: 1440px){.composition-editor-layout{--composition-left-width:260px;--composition-right-width:280px;grid-template-columns:var(--composition-left-width) 10px minmax(420px,1fr) 10px var(--composition-right-width)}}
@media (max-width: 1260px){.composition-editor-layout{grid-template-columns:1fr}.composition-editor-sidebar,.composition-editor-props{max-height:260px;overflow:auto}.composition-editor-layout-splitter{display:none}.composition-manager-body{grid-template-columns:1fr}}
@media (max-width: 980px){.composition-manager-floating,.composition-editor-floating{left:12px !important;right:12px !important;top:86px !important;width:auto !important;min-width:0 !important;height:min(80vh,860px) !important;max-height:calc(100vh - 98px)}}
html[data-theme="dark"] .composition-manager-list-panel,
html[data-theme="dark"] .composition-editor-sidebar,
html[data-theme="dark"] .composition-editor-props,
html[data-theme="dark"] .composition-side-card,
html[data-theme="dark"] .composition-list-item,
html[data-theme="dark"] .composition-element-row,
html[data-theme="dark"] .composition-page-element{background:linear-gradient(180deg,#1a2230,#111827);border-color:#334155;color:#e5e7eb}
html[data-theme="dark"] .composition-editor-stage-wrap{background:linear-gradient(180deg,#0f172a,#111827)}
html[data-theme="dark"] .composition-editor-layout-splitter{background:linear-gradient(180deg,#23334d,#162133)}
html[data-theme="dark"] .composition-ruler,html[data-theme="dark"] .composition-ruler-corner{background:linear-gradient(180deg,#111827,#0f172a);border-color:#334155;box-shadow:none}
html[data-theme="dark"] .composition-ruler-top .composition-ruler-label,html[data-theme="dark"] .composition-ruler-left .composition-ruler-label{color:#cbd5e1}
html[data-theme="dark"] .composition-ruler-top .composition-ruler-tick.is-major,html[data-theme="dark"] .composition-ruler-left .composition-ruler-tick.is-major{background:#cbd5e1}
html[data-theme="dark"] .composition-page{background-color:#fff;background-image:linear-gradient(to right,rgba(203,213,225,.32) 1px,transparent 1px),linear-gradient(to bottom,rgba(203,213,225,.32) 1px,transparent 1px)}
html[data-theme="dark"] .composition-guide.is-center{background:rgba(96,165,250,.16)}
html[data-theme="dark"] .composition-guide.is-snap{background:rgba(96,165,250,.75)}
html[data-theme="dark"] .composition-editor-actionbar{background:linear-gradient(180deg,#1a2230,#111827);border-color:#334155}
html[data-theme="dark"] .composition-atlas-filter-summary,
html[data-theme="dark"] .composition-atlas-rule-row,
html[data-theme="dark"] .composition-atlas-rules-summary .composition-side-meta{background:linear-gradient(180deg,#172033,#111827);border-color:#334155}
html[data-theme="dark"] .composition-atlas-rules-summary .composition-side-meta,
html[data-theme="dark"] .composition-atlas-filter-meta{color:#cbd5e1}
html[data-theme="dark"] .composition-selection-badge{background:#0f172a;border-color:#334155;color:#e5e7eb}
html[data-theme="dark"] .composition-actionbar-label{background:#0f172a;border-color:#334155;color:#cbd5e1}
html[data-theme="dark"] .composition-list-main span,
html[data-theme="dark"] .composition-list-meta,
html[data-theme="dark"] .composition-element-main small,
html[data-theme="dark"] .composition-element-index,
html[data-theme="dark"] .composition-element-flags,
html[data-theme="dark"] .composition-empty-state,
html[data-theme="dark"] .composition-side-card p,
html[data-theme="dark"] .composition-side-meta,
html[data-theme="dark"] .composition-props-empty,
html[data-theme="dark"] .composition-token-help,
html[data-theme="dark"] .composition-token-preview{color:#94a3b8}
html[data-theme="dark"] .composition-elements-summary{background:#0f172a;border-color:#334155;color:#94a3b8}
html[data-theme="dark"] .composition-elements-actions .btn,html[data-theme="dark"] .composition-element-action-btn,html[data-theme="dark"] .composition-elements-clear-btn,html[data-theme="dark"] .composition-element-rename-input{border-color:#334155;background:#0f172a;color:#e2e8f0}
html[data-theme="dark"] .composition-element-badge{background:#162133;border-color:#334155;color:#cbd5e1}
html[data-theme="dark"] .composition-element-badge.is-type{background:rgba(37,99,235,.18);border-color:rgba(96,165,250,.35);color:#bfdbfe}
html[data-theme="dark"] .composition-element-badge.is-muted{background:#111827;border-color:#334155;color:#94a3b8}
html[data-theme="dark"] .composition-element-badge.is-danger{background:rgba(127,29,29,.35);border-color:rgba(248,113,113,.35);color:#fecaca}
html[data-theme="dark"] .composition-element-badge.is-warn{background:rgba(124,45,18,.35);border-color:rgba(251,146,60,.35);color:#fdba74}
html[data-theme="dark"] .composition-element-badge.is-group,html[data-theme="dark"] .composition-element-group-badge{background:rgba(67,56,202,.22);border-color:rgba(165,180,252,.32);color:#c7d2fe}
html[data-theme="dark"] .composition-element-action-btn.is-on{box-shadow:0 0 0 2px rgba(96,165,250,.18)}

html[data-theme="dark"] .composition-props-section{background:rgba(15,23,42,.62);border-color:#334155}
html[data-theme="dark"] .composition-props-section-title{color:#cbd5e1}
html[data-theme="dark"] .composition-map-card{border-color:#475569;box-shadow:0 8px 24px rgba(2,6,23,.38)}
html[data-theme="dark"] .composition-map-warning{background:rgba(127,29,29,.94);border-color:rgba(248,113,113,.35);color:#fee2e2}
html[data-theme="dark"] .composition-map-edit-overlay{background:rgba(59,130,246,.9)}
html[data-theme="dark"] .composition-map-atlas-chip{background:rgba(15,23,42,.86)}
html[data-theme="dark"] .composition-map-atlas-caption,html[data-theme="dark"] .composition-map-scale-badge{background:rgba(15,23,42,.84);border-color:#475569;color:#e2e8f0}
html[data-theme="dark"] .composition-map-title,html[data-theme="dark"] .composition-map-scale-badge{background:rgba(15,23,42,.82);border-color:#334155;color:#e5e7eb}
html[data-theme="dark"] .composition-map-linked-extent-label{background:rgba(234,88,12,.94);color:#fff}
html[data-theme="dark"] .composition-legend-box{border-color:#334155;background:rgba(15,23,42,.88)}
html[data-theme="dark"] .composition-table-field-picker{background:rgba(15,23,42,.72);border-color:#334155}
html[data-theme="dark"] .composition-table-field-row.is-selected{background:rgba(59,130,246,.16)}
html[data-theme="dark"] .composition-scalebar-label-row,html[data-theme="dark"] .composition-scalebar-labels,html[data-theme="dark"] .composition-scalebar-scale-label,html[data-theme="dark"] .composition-legend-row{color:#e5e7eb}

html[data-theme="dark"] .composition-token-preview{background:rgba(15,23,42,.72);border-color:#334155}

@media (max-width: 1320px){
  .composition-editor-topbar{align-items:stretch}
  .composition-editor-topbar-settings{flex:1 1 100%}
  .composition-editor-topbar-actions{width:100%}
}

.composition-editor-shell.is-compact .composition-editor-topbar,.composition-editor-shell.is-compact .composition-editor-actionbar{gap:8px;padding:6px 8px}
.composition-editor-shell.is-compact .composition-editor-topbar-group,.composition-editor-shell.is-compact .composition-editor-actionbar-group{gap:6px}
.composition-editor-shell.is-compact .composition-icon-btn{min-width:30px;width:30px;height:30px;border-radius:10px;font-size:13px}
.composition-editor-shell.is-compact .composition-head-btn.table-icon-btn,.composition-editor-shell.is-compact .table-icon-btn.composition-head-btn{min-width:30px;width:30px;height:30px;padding:0;border-radius:10px;font-size:13px}
.composition-editor-shell.is-compact .composition-editor-topbar .prop-field.compact{min-width:102px;max-width:118px;font-size:12px}
.composition-editor-shell.is-compact .composition-inline-check span{font-size:12px}
.composition-editor-shell.is-compact #btnCompositionClearGuides{height:30px;padding:0 10px;font-size:12px}
.composition-editor-shell.is-compact .composition-actionbar-label{display:none}
.composition-editor-shell.is-compact .bulk-window-content.composition-editor-content{gap:10px}
html[data-theme="dark"] .composition-group-toggle-btn[aria-pressed="true"],html[data-theme="dark"] .composition-side-card.is-collapsed .composition-side-card-toggle{background:#263244}

.composition-map-card,.composition-text-box,.composition-html-box,.composition-image-box,.composition-legend-box,.composition-table-box{width:100%;height:100%;display:flex;flex-direction:column;box-sizing:border-box}
.composition-html-box{overflow:hidden;box-sizing:border-box}
.composition-html-box-inner{width:100%;height:100%;overflow:hidden;line-height:1.35;word-break:break-word}
.composition-html-box-inner>:first-child{margin-top:0!important}.composition-html-box-inner>:last-child{margin-bottom:0!important}
.composition-html-box-inner table{width:100%;border-collapse:collapse}.composition-html-box-inner th,.composition-html-box-inner td{border:1px solid rgba(148,163,184,.72);padding:4px 6px;text-align:left;vertical-align:top}
.composition-html-box-inner ul,.composition-html-box-inner ol{margin:0 0 0 18px;padding:0}.composition-html-box-inner blockquote{margin:0;padding-left:10px;border-left:3px solid rgba(148,163,184,.7);color:#475467}.composition-html-box-inner code,.composition-html-box-inner pre{font-family:"Courier New",monospace}.composition-html-empty{color:#64748b;font-style:italic}

.db-object-floating{width:min(1120px, calc(100vw - 180px));min-width:980px;min-height:680px;height:min(84vh, 920px);z-index:123}
.db-object-floating .bulk-window-content{overflow:hidden}
.db-object-floating-shell{position:relative}
.db-object-pane-content{display:flex;flex-direction:column;gap:0;overflow:hidden}
.db-object-layout{display:flex;flex-direction:column;gap:14px;overflow:auto;padding-right:4px}
.db-object-layout .bulk-card{overflow:visible}
.db-object-comment-field{display:block;margin-top:10px}
.db-object-comment-field textarea{min-height:74px;resize:vertical}
.db-object-geometry-pane.hidden{display:none!important}
.db-object-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.db-object-geometry-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.db-object-span-2{grid-column:span 2}
.db-object-columns-card .save-db-card-head{align-items:flex-start}
.db-object-columns-actions{flex-wrap:wrap}
.db-object-status-card .save-db-meta{display:grid;gap:10px}
.db-object-status-card .result-box{margin:0;max-height:130px;overflow:auto}
.db-object-floating .db-object-column-table-wrap{min-height:240px;max-height:min(34vh,380px)}
.db-object-floating .sql-type-picker-popover{z-index:160}
html[data-theme="dark"] .db-object-status-card .result-box{background:#0b1220}
@media (max-width: 1280px){.db-object-floating{width:min(1080px, calc(100vw - 48px));min-width:900px}}
@media (max-width: 980px){.db-object-floating{left:12px;right:12px;width:auto;min-width:0;top:86px;height:min(86vh, 940px)}.db-object-grid,.db-object-geometry-grid{grid-template-columns:1fr}.db-object-span-2{grid-column:auto}}

.qgis-import-progress{position:fixed; right:26px; top:96px; width:min(520px, calc(100vw - 48px)); z-index:1260; pointer-events:none;}
.qgis-import-progress.hidden{display:none !important}
.qgis-import-progress-card{pointer-events:auto; display:flex; flex-direction:column; gap:12px; padding:16px 18px; border-radius:18px; box-shadow:0 22px 44px rgba(15,23,42,.24); backdrop-filter:blur(10px);}
.qgis-import-progress-head{display:flex; align-items:flex-start; justify-content:space-between; gap:12px;}
.qgis-import-progress-head strong{display:block; font-size:15px;}
.qgis-import-progress-subtitle{margin-top:4px; font-size:12px; opacity:.75;}
.qgis-import-progress-badge{flex:0 0 auto; min-width:56px; padding:6px 10px; border-radius:999px; text-align:center; font-weight:700; font-size:12px; background:rgba(59,130,246,.14); color:#1d4ed8;}
.qgis-import-progress-bar{position:relative; height:10px; border-radius:999px; overflow:hidden; background:rgba(148,163,184,.20);}
.qgis-import-progress-bar span{position:absolute; inset:0 auto 0 0; width:0%; border-radius:inherit; background:linear-gradient(90deg, #2563eb 0%, #22c55e 100%); transition:width .28s ease;}
.qgis-import-progress-meta{display:grid; gap:4px;}
.qgis-import-progress-meta > :first-child{font-weight:600;}
.qgis-import-progress-meta > :last-child{font-size:12px; opacity:.78; min-height:16px;}
.qgis-import-progress-log{width:100%; min-height:140px; max-height:220px; resize:none; border-radius:14px; padding:12px 14px; font:12px/1.45 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; border:1px solid rgba(148,163,184,.28); background:rgba(15,23,42,.82); color:#dbeafe; box-shadow:inset 0 1px 0 rgba(255,255,255,.04);}
html[data-theme="dark"] .qgis-import-progress-card{background:rgba(15,23,42,.92); border:1px solid rgba(148,163,184,.16); color:#e5eefb;}
html[data-theme="light"] .qgis-import-progress-card{background:rgba(255,255,255,.94); border:1px solid rgba(148,163,184,.24); color:#0f172a;}
html[data-theme="dark"] .qgis-import-progress-badge{background:rgba(96,165,250,.16); color:#bfdbfe;}
html[data-theme="light"] .qgis-import-progress-log{background:rgba(15,23,42,.92); color:#e2e8f0;}
@media (max-width: 860px){.qgis-import-progress{left:12px; right:12px; width:auto; top:78px;}}

@media (max-width: 1460px){.composition-elements-filters-grid{grid-template-columns:1fr}}
