:root {
  /* JIUSHANG Natural Blue · V0.13.2-alpha.9 */
  --anson-primary: #446CCF;
  --anson-primary-hover: #365AB5;
  --anson-accent: #1E90FF;
  --anson-sky: #87CEEB;
  --anson-glacier: #78D1E5;

  --anson-bg-page: #F5F8FC;
  --anson-bg-card: #FFFFFF;
  --anson-bg-soft: #EAF3FF;
  --anson-bg-subtle: #F7F9FC;

  --anson-text-primary: #1F2937;
  --anson-text-secondary: #667085;
  --anson-text-muted: #98A2B3;
  --anson-text-inverse: #FFFFFF;

  --anson-border: #E1E8F0;
  --anson-border-light: #EEF2F6;
  --anson-input-border: #D0D5DD;

  --anson-success: #2E8B57;
  --anson-success-bg: #EAF7F0;
  --anson-warning: #E09C22;
  --anson-warning-bg: #FFF6E5;
  --anson-danger: #C43D3D;
  --anson-danger-bg: #FDECEC;
  --anson-info: #446CCF;
  --anson-info-bg: #EEF3FF;
  --anson-disabled: #99A3AF;
  --anson-disabled-bg: #F2F4F7;

  --anson-radius-sm: 6px;
  --anson-radius-md: 8px;
  --anson-radius-card: 14px;
  --anson-radius-dialog: 16px;
  --anson-radius-pill: 999px;

  --anson-shadow-card: 0 2px 8px rgba(31,41,55,.04);
  --anson-shadow-hover: 0 6px 18px rgba(31,41,55,.07);
  --anson-shadow-dialog: 0 16px 40px rgba(31,41,55,.14);

  --anson-font: Inter, "PingFang SC", "Microsoft YaHei", Arial, sans-serif;
}

*{box-sizing:border-box}body{margin:0;font:14px/1.5 var(--anson-font);color:var(--anson-text-primary);background:var(--anson-bg-page)}button,input,select{font:inherit}button{border:1px solid var(--anson-border);background:white;border-radius:7px;padding:7px 12px;cursor:pointer;color:var(--anson-text-primary)}button:hover{background:var(--anson-bg-soft)}button:disabled{opacity:.55;cursor:wait}.primary{background:var(--anson-primary);color:white;border-color:var(--anson-primary)}.primary:hover{background:var(--anson-primary-hover)}.danger{color:var(--anson-danger)}.wide{width:100%}label{display:block}input,select{display:block;border:1px solid var(--anson-input-border);border-radius:7px;background:white;padding:9px 11px;width:100%;margin:5px 0 15px}input:focus,select:focus{outline:2px solid var(--anson-sky)}input[type=checkbox]{width:auto}.login-wrap{min-height:100vh;display:grid;place-items:center;background:radial-gradient(at 20% 10%,var(--anson-bg-soft),transparent 55%),var(--anson-bg-page)}.login-card{width:390px;max-width:92vw;padding:38px;background:white;border:1px solid #e1e9eb;border-radius:20px;box-shadow:var(--anson-shadow-card)}.brand-symbol{width:48px;height:48px;display:grid;place-items:center;background:var(--anson-primary);color:white;border-radius:14px;font-size:28px;font-weight:800}h1{margin:20px 0 4px;font-size:25px}.login-card p{color:var(--anson-text-secondary);margin:0 0 28px}.login-card small{display:block;text-align:center;color:var(--anson-text-muted);margin-top:20px}header{height:66px;background:white;border-bottom:1px solid var(--anson-border);display:flex;align-items:center;justify-content:space-between;padding:0 26px}.brand{font-size:21px;color:var(--anson-primary)}.subtitle{margin-left:18px;color:var(--anson-text-muted)}.header-actions{display:flex;align-items:center;gap:10px}.toolbar{display:flex;align-items:center;gap:14px;background:white;padding:14px 26px;border-bottom:1px solid var(--anson-border)}.toolbar label{display:flex;gap:8px;align-items:center;color:var(--anson-text-secondary)}.toolbar select{margin:0;width:180px}.stage{margin-left:auto;font-size:12px;color:var(--anson-text-muted)}.workspace{display:grid;grid-template-columns:300px 1fr;min-height:calc(100vh - 139px)}aside{background:white;border-right:1px solid var(--anson-border);overflow:auto;max-height:calc(100vh - 139px);padding-bottom:20px}.aside-title{display:flex;align-items:center;justify-content:space-between;padding:20px 15px}.aside-title button{font-size:12px}.tree-all{margin:0 12px 10px;width:calc(100% - 24px);text-align:left}.tree-row{display:flex;align-items:center;min-height:38px;white-space:nowrap}.tree-row.active,.tree-all.active{background:var(--anson-bg-soft);color:var(--anson-primary-hover)}.twisty,.node-label{border:0;background:transparent;padding:5px}.twisty{width:24px;flex-shrink:0}.node-label{text-align:left}.node-detail{margin:22px 15px;padding:14px;border:1px solid var(--anson-border);border-radius:9px}.node-detail small,.node-detail code{display:block;margin:8px 0;color:var(--anson-text-muted);font-size:11px;word-break:break-all}.node-detail button{font-size:12px;margin:4px 3px 0 0}main{padding:22px 26px;min-width:0}nav{display:flex;gap:6px;margin-bottom:24px}nav button{border:0;background:transparent;padding:9px 20px}nav button.active{background:var(--anson-primary);color:white}.content-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}h2{font-size:20px;margin:0 0 4px}.content-heading p{margin:0;color:var(--anson-text-secondary);font-size:12px}.table-wrap{background:white;border:1px solid var(--anson-border);border-radius:12px;overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap}th{color:var(--anson-text-muted);font-size:12px;font-weight:500;background:var(--anson-bg-subtle)}td,th{padding:15px 18px;border-bottom:1px solid var(--anson-border-light)}td small{display:block;color:var(--anson-text-muted)}.id-cell{font:11px ui-monospace,monospace;color:var(--anson-text-muted);max-width:180px;white-space:normal;word-break:break-all}.locator-cell{font:12px ui-monospace,monospace;color:var(--anson-text-secondary);min-width:92px}.row-actions button{font-size:12px;margin-right:5px;padding:5px 8px}.badge{padding:3px 8px;background:var(--anson-bg-subtle);color:var(--anson-text-secondary);font-size:12px;border-radius:5px}.empty{padding:24px;color:var(--anson-text-muted);text-align:center}.banner{margin:12px 24px;padding:10px 14px;border-radius:7px}.error{color:var(--anson-danger);background:var(--anson-danger-bg);padding:8px;border-radius:6px;margin-bottom:12px}.success{color:var(--anson-success);background:var(--anson-success-bg)}.loading{color:var(--anson-primary)}.modal-backdrop{position:fixed;inset:0;background:rgba(31,41,55,.38);display:grid;place-items:center;z-index:10}.modal{background:white;width:460px;max-width:94vw;max-height:90vh;overflow:auto;border-radius:14px;padding:28px;box-shadow:var(--anson-shadow-dialog)}.modal h2{margin-bottom:22px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.hint{font-size:12px;color:var(--anson-text-secondary)}@media(max-width:850px){.toolbar{flex-wrap:wrap;padding:12px}.stage{width:100%}.workspace{grid-template-columns:220px 1fr}main{padding:16px}.subtitle{display:none}.toolbar select{width:130px}.content-heading{align-items:flex-start;gap:10px}}@media(max-width:600px){.workspace{display:block}aside{max-height:250px;border-bottom:1px solid var(--anson-border)}header{padding:0 14px}.brand{font-size:18px}nav button{padding:8px 12px}}

textarea{width:100%;border:1px solid var(--anson-input-border);border-radius:7px;padding:10px;font:12px/1.5 ui-monospace,monospace;margin:7px 0 15px}.directory-select{display:block;width:100%;margin:6px 0 15px;text-align:left;word-break:break-all}.block-code{display:block;background:var(--anson-bg-subtle);padding:10px;border-radius:7px;white-space:normal;word-break:break-all;font-size:12px}.binding-search{display:flex;gap:8px;align-items:flex-start}.binding-search input{margin-top:0}.picker-layer{z-index:20}.picker-nav{display:flex;gap:8px;align-items:center;margin-bottom:12px}.picker-row{display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--anson-border-light);padding:10px 0}.picker-row span{flex:1}.error small{display:block}

.path-modal{width:min(720px,94vw);max-width:720px}.path-toolbar{display:flex;gap:10px;align-items:start;margin-bottom:12px}.path-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:0;flex:1;min-width:0;padding:4px 8px;background:var(--anson-bg-subtle);border:1px solid var(--anson-border);border-radius:8px}.path-breadcrumb button{border:0;background:transparent;padding:2px 1px;line-height:1.5;border-radius:3px;overflow-wrap:anywhere;white-space:normal}.path-folders{border:1px solid var(--anson-border);border-radius:10px;min-height:180px;max-height:310px;overflow:auto;padding:6px}.path-folder{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;border-bottom:1px solid var(--anson-border-light);border-radius:5px;padding:13px;background:white;white-space:normal;overflow-wrap:anywhere}.path-folder:hover{background:var(--anson-bg-soft)}.folder-icon{color:#c99d32;font-size:24px}.folder-arrow{margin-left:auto;color:var(--anson-text-muted)}.path-current{display:flex;gap:14px;align-items:start;background:var(--anson-bg-subtle);padding:12px;margin-top:14px;border-radius:8px}.path-current span{white-space:nowrap;color:var(--anson-text-secondary)}.path-current output{overflow-wrap:anywhere}.directory-select{white-space:normal;overflow-wrap:anywhere;text-align:left}@media(max-width:560px){.path-toolbar{flex-wrap:wrap}.path-breadcrumb{flex-basis:100%}.path-current{display:block}}

.group-fullpath{display:block;min-width:150px;max-width:320px;white-space:normal;overflow-wrap:anywhere;line-height:1.6;color:var(--anson-text-primary)}.group-fullpath+.group-fullpath{margin-top:6px}

.path-up{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.nav-icon{width:16px;height:16px;flex-shrink:0;display:block}.path-folder .folder-icon{width:22px;height:22px;flex-shrink:0;color:var(--anson-warning);display:block}.path-folder{gap:9px}

/* Natural Blue component mapping */
button,input,select,textarea{border-radius:var(--anson-radius-sm)}
button:focus-visible,.path-breadcrumb button:focus-visible{outline:2px solid var(--anson-accent);outline-offset:2px}
button:disabled{cursor:not-allowed}
.primary:disabled,.primary:disabled:hover{background:var(--anson-disabled-bg);border-color:var(--anson-border);color:var(--anson-disabled);opacity:1}
.login-card,.table-wrap{background:var(--anson-bg-card);border-radius:var(--anson-radius-card);box-shadow:var(--anson-shadow-card)}
.modal{background:var(--anson-bg-card);border-radius:var(--anson-radius-dialog)}
.path-breadcrumb,.path-folders,.path-current{border-radius:var(--anson-radius-md)}
.path-breadcrumb button:hover{background:var(--anson-bg-soft);color:var(--anson-primary)}
.tree-row.active,.tree-all.active{color:var(--anson-primary)}
.folder-icon path:first-child{fill:var(--anson-warning-bg)}

.tree-spacer{display:block;width:24px;flex-shrink:0}.twisty{display:flex;align-items:center;justify-content:center}.tree-chevron{width:14px;height:14px;display:block;color:var(--anson-text-secondary)}.tree-chevron.expanded{transform:rotate(90deg)}.node-label{display:flex;align-items:center;gap:6px;min-width:0}.tree-folder-icon{width:18px;height:18px;flex:0 0 18px;display:block;object-fit:contain}

/* Unified blue header and group icons */
:root{--anson-header-end:#2874C6;--anson-header-gradient:linear-gradient(110deg,var(--anson-primary),var(--anson-header-end))}
header{background:var(--anson-header-gradient);border-bottom:1px solid rgba(255,255,255,.15)}
header .brand,header .subtitle{color:var(--anson-text-inverse)}
header .header-actions button{background:rgba(255,255,255,.95);border-color:rgba(255,255,255,.65);color:var(--anson-primary-hover)}
header .header-actions button:hover{background:var(--anson-bg-card);box-shadow:var(--anson-shadow-card)}
header .header-actions button:focus-visible{outline-color:var(--anson-text-inverse)}
.path-folder .folder-icon{width:18px;height:18px;color:var(--anson-primary)}
.path-folder .folder-icon path:first-child{fill:var(--anson-bg-soft)}

.domain-card{border:1px solid var(--anson-border);border-radius:8px;padding:12px;margin-top:12px}.domain-card b{overflow-wrap:anywhere}.domain-card .badge{margin:0 8px}.domain-card small{display:block;color:var(--anson-text-secondary);margin:6px 0}.domain-card button{margin:6px 6px 0 0}.terms-check{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:12px}.terms-check input{margin:0}
.refresh-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0 18px;color:var(--text-secondary,#64748b)}.refresh-toolbar label{display:flex;align-items:center;gap:8px;margin:0}.refresh-toolbar select{width:auto;min-width:88px;padding:7px 10px}.refresh-toolbar small{font-size:12px}

.raw-list{max-height:180px;overflow:auto;display:flex;flex-direction:column;gap:6px}.raw-list button{text-align:left}.raw-preview{max-height:250px;overflow:auto;background:#f2f6fc;padding:12px;white-space:pre-wrap;overflow-wrap:anywhere}

.modal:has(.raw-list){width:min(1080px,94vw);max-width:1080px}.modal:has(.raw-list) .hint{font-size:13px;line-height:1.5}.modal:has(.raw-list) label{margin:8px 0}.raw-list{max-height:150px}.raw-list button{padding:7px 10px;font-size:13px}.raw-preview table{width:100%;border-collapse:collapse;font-size:13px}.raw-preview td,.raw-preview th{padding:6px;text-align:left;border-bottom:1px solid #dbe5f2}.sample-checks{max-height:140px;overflow:auto;font-size:13px}.sample-checks p{margin:4px 0}.revision-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 0}.modal:has(.raw-list) details{margin:10px 0}.raw-preview{overflow:auto;max-height:220px}

.modal:has(.batch-workbench){width:min(1200px,96vw);max-width:1200px;padding:24px}.batch-filters,.batch-tools,.batch-groups{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}.batch-filters label{flex:1;min-width:150px;font-size:13px}.batch-filters button{align-self:end;margin-bottom:8px}.batch-tools label{display:flex;align-items:center;gap:5px;font-size:13px}.batch-tools input[type=checkbox],.batch-table input[type=checkbox]{width:auto}.batch-table{max-height:350px;overflow:auto;border:1px solid #dbe5f2;border-radius:8px}.batch-table table{width:100%;font-size:13px;min-width:850px}.batch-table thead{position:sticky;top:0;background:#eef5ff;z-index:1}.batch-table input{min-width:90px;width:100%;padding:6px;font-size:13px}.batch-table td{padding:7px}.batch-table td:nth-child(2){min-width:220px}.batch-table td:last-child{max-width:90px}.batch-table small{display:block}.batch-preview{background:#f3f8ff;border-radius:8px;padding:12px;max-height:200px;overflow:auto;font-size:13px}.batch-preview p{margin:5px 0}.batch-location{font-size:13px}.batch-location span{display:block}.batch-groups button{font-size:12px;padding:5px 8px}.batch-workbench .hint{font-size:13px;line-height:1.5}

.source-overview{margin:12px 0}.source-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.source-stats article{padding:12px;border:1px solid #dbe5f2;background:linear-gradient(140deg,#f4f9ff,#e8f2ff);border-radius:10px}.source-stats small{display:block;color:#526b8a}.source-stats b{display:block;font-size:22px;margin-top:6px;color:#235e9e}.source-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:14px;margin:12px 0}.source-panel{max-height:320px;overflow:auto;padding:10px;background:#f5f8fc;border-radius:10px}.source-panel button{display:block;width:100%;text-align:left;margin:5px 0;font-size:13px}.source-panel button.active{background:#e2efff;border-color:#548ed3}.source-panel small,.target-devices small{display:block}.source-controls{padding:10px}.source-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:end}.source-filters label{font-size:13px;min-width:110px;flex:1}.source-prefixes,.source-pickbar{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0;align-items:center}.source-prefixes button{font-size:12px;padding:5px 8px}.target-devices{max-height:350px;overflow:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0}.target-devices button{text-align:left;padding:12px}.source-overview .hint{font-size:12px;line-height:1.5}@media(max-width:900px){.source-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.source-layout{grid-template-columns:1fr}.source-panel{max-height:190px}.target-devices{grid-template-columns:1fr}}

/* Shared button states; navigation and source selection remain semantically distinct. */
:root{--js-button-height:34px;--js-button-radius:7px;--js-focus:#86b8ff}
button{min-height:var(--js-button-height);border-radius:var(--js-button-radius);line-height:1.4;transition:background-color .12s,border-color .12s;color:var(--anson-text-primary)}
button:hover:not(:disabled){border-color:#8faee0;background:#eef5ff}
button:focus-visible{outline:2px solid var(--js-focus);outline-offset:2px}
button:disabled{cursor:not-allowed;opacity:.5}
button.primary,nav button.active{background:var(--anson-primary);border-color:var(--anson-primary);color:#fff}
button.primary:hover:not(:disabled),nav button.active:hover:not(:disabled){background:var(--anson-primary-hover);color:#fff}
button.danger{color:var(--anson-danger)}button.danger:hover:not(:disabled){background:#fff0f0;border-color:#e8a7a7}
nav{flex-wrap:wrap}nav button{min-height:36px;padding:7px 16px;border:1px solid transparent}
.row-actions{max-width:370px}.row-actions button{min-height:30px;padding:5px 8px;font-size:12px;margin:3px 4px 3px 0}
.source-prefixes button,.batch-groups button{min-height:30px;padding:5px 8px;font-size:12px}
button.active:not(.primary){border-color:#548ed3}.source-prefixes button.active{background:#e2efff;color:#235e9e}
.twisty{min-height:24px}.node-label{min-height:30px}
.device-paths{margin:8px 0 14px;color:#526b8a;font-size:13px}.device-paths>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap;overflow-wrap:anywhere}.device-paths button{min-height:26px;padding:3px 8px;font-size:12px}
.point-lineage{font-size:12px;color:#526b8a;margin-top:5px;max-width:300px;overflow-wrap:anywhere}.point-lineage summary{cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.point-lineage p{margin:6px 0}.point-lineage code{display:block;font-size:11px}
.history-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0}.history-tools label{display:flex;align-items:center;gap:8px}.history-tools select,.history-tools input{margin:0;width:auto}.history-table{max-height:350px;overflow:auto}.history-table table{width:100%;font-size:13px}.history-table td{padding:8px}.trend-chart{width:100%;height:190px;background:#f5f9ff;border-radius:8px}.modal:has(.history-table){width:min(1050px,96vw);max-width:1050px}

.connection-card{padding:14px;margin:10px 0;border:1px solid var(--anson-border);border-radius:8px;background:#f5f9ff}.connection-card p{margin:6px 0}.modal pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}

.mqtt-topics{display:grid;gap:10px}.mqtt-topics>div{padding:10px;border:1px solid #dce5ef;border-radius:8px}.mqtt-topics code{overflow-wrap:anywhere;margin:6px 0}

.pagination{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;margin:14px 0 4px}.pagination span{font-size:13px;color:var(--muted,#64748b)}.pagination button{min-width:72px}

/* V0.12.4 Trend Center */
.trend-center{min-width:0}.trend-summary{margin:-6px 0 14px}.trend-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.trend-card{display:flex;flex-direction:column;gap:10px;min-height:190px;padding:18px;background:var(--anson-bg-card);border:1px solid var(--anson-border);border-radius:var(--anson-radius-card);box-shadow:var(--anson-shadow-card)}.trend-card:hover{box-shadow:var(--anson-shadow-hover)}.trend-card h3{margin:0;font-size:17px}.trend-card p{margin:4px 0;color:var(--anson-text-secondary);min-height:22px}.trend-card>small{color:var(--anson-text-muted)}.trend-card-stats{display:flex;gap:8px;flex-wrap:wrap}.trend-card-stats span{padding:5px 8px;border-radius:var(--anson-radius-pill);background:var(--anson-bg-soft);font-size:12px;color:var(--anson-text-secondary)}.trend-card-stats b{color:var(--anson-primary)}.trend-card-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:auto}.trend-form-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:0 14px}.trend-desc{grid-column:1/-1}.trend-point-table{max-height:285px;overflow:auto;border:1px solid var(--anson-border);border-radius:9px;margin:8px 0 16px}.trend-point-table table{min-width:780px;font-size:13px}.trend-point-table th,.trend-point-table td{padding:8px 10px}.trend-point-table select{margin:0;min-width:115px;padding:6px 8px}.trend-point-table input[type=checkbox]{margin:0}.trend-order{display:flex;gap:4px}.trend-order button{min-height:28px;padding:3px 7px}.trend-candidates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:230px;overflow:auto;padding:2px}.trend-candidates button{display:flex;justify-content:space-between;gap:12px;align-items:center;text-align:left;white-space:normal;padding:10px}.trend-candidates button span:first-child{min-width:0}.trend-candidates b,.trend-candidates small{display:block;overflow-wrap:anywhere}.trend-candidates small{color:var(--anson-text-muted);font-size:11px}.trend-candidates button.active{background:var(--anson-bg-soft);border-color:var(--anson-primary);color:var(--anson-primary-hover)}.modal:has(.trend-point-table),.modal:has(.trend-multi-chart){width:min(1180px,96vw);max-width:1180px}.trend-view-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.trend-view-title p{margin:2px 0;color:var(--anson-text-secondary)}.trend-legend{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:6px;margin:10px 0}.trend-legend label{display:grid;grid-template-columns:auto auto 1fr;align-items:center;column-gap:7px;padding:7px 9px;border:1px solid var(--anson-border-light);border-radius:8px;background:var(--anson-bg-subtle);font-size:12px}.trend-legend input{margin:0;grid-row:1/3}.trend-legend b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend-legend small{grid-column:3;color:currentColor;opacity:.78}.trend-swatch{width:12px;height:3px;border-radius:4px;grid-row:1/3}.trend-chart-wrap{position:relative;background:linear-gradient(180deg,#fbfdff,#f4f8fd);border:1px solid var(--anson-border);border-radius:10px;overflow:hidden}.trend-multi-chart{display:block;width:100%;height:min(44vh,430px);min-height:280px}.trend-axis{fill:none;stroke:#8ea2bc;stroke-width:1}.trend-grid-line{stroke:#dfe7f0;stroke-width:1;stroke-dasharray:3 5}.trend-axis-label{font-size:12px;fill:#64748b}.trend-hover-line{stroke:#64748b;stroke-width:1;stroke-dasharray:4 4}.trend-hover{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:9px 11px;margin-top:8px;background:var(--anson-bg-subtle);border-radius:8px;font-size:12px}.trend-hover>b{color:var(--anson-text-primary)}.trend-hover span{padding-right:8px;border-right:1px solid var(--anson-border)}.trend-warning{padding:9px 11px;border-radius:8px;background:var(--anson-warning-bg);color:#8a5a09;font-size:12px}.modal:has(.trend-point-table) h3{margin:16px 0 8px;font-size:15px}@media(max-width:760px){.trend-grid{grid-template-columns:1fr}.trend-form-grid{grid-template-columns:1fr}.trend-candidates{grid-template-columns:1fr}.trend-legend{grid-template-columns:1fr}.trend-multi-chart{height:300px}.trend-view-title{display:block}.trend-view-title button{margin-top:8px}}

/* V0.12.5 Graphic View Center */
.graphic-center{display:flex;flex-direction:column;gap:14px}.graphic-toolbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 14px;border:1px solid #e3e9ee;border-radius:12px;background:#fbfcfd}.graphic-toolbar label{display:flex;align-items:center;gap:7px;font-weight:600}.graphic-toolbar label input{width:auto}.graphic-toolbar small{color:#71808c}.graphic-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.graphic-card{border:1px solid #dfe6eb;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 2px 10px rgba(31,48,61,.05)}.graphic-card-preview{height:92px;display:flex;align-items:center;justify-content:center;position:relative;background:linear-gradient(135deg,#f2f7f8,#e8f2f4);color:#74838d;font-weight:700}.graphic-card-preview b{position:absolute;right:10px;top:10px;padding:4px 8px;border-radius:999px;background:#fff7d8;color:#85620a;font-size:12px}.graphic-card-body{padding:14px}.graphic-card-body h3{margin:0 0 5px}.graphic-card-body p{min-height:36px;margin:0 0 7px;color:#65747f}.graphic-card-body>small{display:block;color:#7b8a95;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.graphic-card-meta,.graphic-card-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.graphic-card-meta span{padding:3px 7px;border-radius:7px;background:#f2f5f7;font-size:12px;color:#566570}.graphic-modal{width:min(96vw,1540px)!important;max-width:none!important;max-height:95vh!important;overflow:auto}.graphic-new-size,.graphic-editor-fields,.graphic-xy{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.graphic-editor-head,.graphic-runtime-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;position:sticky;top:0;z-index:20;background:#fff;padding-bottom:10px;border-bottom:1px solid #e5eaee}.graphic-editor-head>div:last-child,.graphic-runtime-head>div:last-child{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.graphic-upload{display:inline-flex!important;align-items:center;justify-content:center;border:1px solid #cbd5dc;border-radius:8px;padding:8px 12px;background:#fff;cursor:pointer;margin:0!important}.graphic-upload input{display:none}.graphic-editor-fields{grid-template-columns:2fr 3fr 120px 120px;margin:12px 0}.graphic-editor-grid{display:grid;grid-template-columns:300px minmax(480px,1fr) 250px;gap:12px;align-items:start}.graphic-palette,.graphic-properties{border:1px solid #dfe6eb;border-radius:12px;padding:12px;background:#fafcfd;max-height:72vh;overflow:auto}.graphic-palette h3,.graphic-properties h3{margin-top:0}.graphic-point-list{display:flex;flex-direction:column;gap:6px;margin-top:9px}.graphic-point-list>button{display:flex;justify-content:space-between;gap:8px;text-align:left;padding:8px}.graphic-point-list span:first-child{min-width:0}.graphic-point-list b,.graphic-point-list small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.graphic-workspace{min-width:0}.graphic-canvas{position:relative;width:100%;overflow:hidden;border:1px solid #cfd9df;border-radius:10px;background:#f3f6f7;box-shadow:inset 0 0 0 1px rgba(255,255,255,.6);touch-action:none}.graphic-canvas.runtime{max-height:76vh;margin:auto;background:#edf2f4}.graphic-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none;user-select:none}.graphic-empty-bg{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#94a1aa;background-image:linear-gradient(#e8edef 1px,transparent 1px),linear-gradient(90deg,#e8edef 1px,transparent 1px);background-size:24px 24px}.graphic-element{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;min-width:20px;min-height:20px;border:1px solid rgba(50,75,90,.25);border-radius:8px;background:rgba(255,255,255,.9);box-shadow:0 2px 7px rgba(29,49,61,.12);padding:5px 7px;overflow:hidden;cursor:move;user-select:none}.graphic-element.selected{outline:2px solid #13889b;outline-offset:2px}.graphic-element small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#5e6c75}.graphic-element b{font-size:clamp(11px,1.2vw,18px);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.graphic-status{border-left:5px solid #8a969d}.graphic-status.on{border-left-color:#2a9b67}.graphic-status.on b{color:#247d57}.graphic-element i{display:block;width:90%;height:7px;border-radius:999px;background:#e2e8eb;margin-top:5px;overflow:hidden}.graphic-element i em{display:block;height:100%;background:currentColor}.graphic-gauge,.graphic-bar{color:#167f91}.graphic-text{background:rgba(255,255,255,.72);border-style:dashed}.graphic-control{border-color:#9bc7cd;background:rgba(237,250,252,.94)}.graphic-element.runtime-element{cursor:default}.graphic-element.broken{border:2px dashed #c65a55;background:#fff4f3}.graphic-control{width:100%;height:100%;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer}.graphic-control:disabled{cursor:not-allowed;opacity:.55}.graphic-properties label{display:block;margin:9px 0}.graphic-properties input,.graphic-properties select{width:100%}.graphic-runtime-wrap{padding:10px 0;overflow:auto}.graphic-runtime-wrap .graphic-canvas{width:min(100%,1400px)}
@media(max-width:1050px){.graphic-editor-grid{grid-template-columns:240px minmax(400px,1fr)}.graphic-properties{grid-column:1/-1;max-height:none}.graphic-editor-fields{grid-template-columns:1fr 1fr}.graphic-card-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}}
@media(max-width:760px){.graphic-editor-grid{grid-template-columns:1fr}.graphic-palette,.graphic-properties{max-height:none}.graphic-editor-fields,.graphic-new-size,.graphic-xy{grid-template-columns:1fr 1fr}.graphic-editor-head,.graphic-runtime-head{position:static;flex-direction:column}.graphic-canvas{min-width:640px}.graphic-workspace,.graphic-runtime-wrap{overflow:auto}}
.graphic-palette>label{display:block;margin:8px 0}.graphic-palette>label select{width:100%;margin-top:4px}.graphic-scope-check{display:flex!important;align-items:center;gap:7px}.graphic-scope-check input{width:auto!important}.graphic-candidate-pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:8px 0}.graphic-candidate-pager label{display:flex;align-items:center;gap:5px;margin:0}.graphic-candidate-pager select{width:auto}.graphic-device-group{border-top:1px solid #e4eaee;padding-top:8px;margin-top:7px}.graphic-device-group h4{margin:0 0 2px;font-size:13px}.graphic-device-group>small{display:block;color:#788791;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:5px}.graphic-device-group>button{width:100%;display:flex;justify-content:space-between;gap:8px;text-align:left;padding:8px;margin:5px 0}.graphic-device-group>button span:first-child{min-width:0}.graphic-device-group b,.graphic-device-group small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Compact lists, with persistent name and action columns. */

main{padding:18px 22px}nav{margin-bottom:18px;flex-wrap:wrap}.content-heading{gap:12px;margin-bottom:12px;flex-wrap:wrap}.content-heading>div{flex:1;min-width:230px}.device-paths{margin:8px 0}.refresh-toolbar{margin:10px 0 16px;flex-wrap:wrap}.refresh-warning{color:var(--anson-danger)!important;background:var(--anson-danger-bg);padding:5px 9px;border-radius:6px}
.table-wrap td,.table-wrap th{padding:12px 14px}.table-wrap .name-column{position:sticky;left:0;z-index:1;background:white;min-width:230px;max-width:340px;white-space:normal;overflow-wrap:anywhere}.table-wrap th.name-column{background:var(--anson-bg-subtle);z-index:2}.table-wrap .action-column{position:sticky;right:0;z-index:2;background:white;min-width:170px;box-shadow:-5px 0 8px rgba(31,41,55,.04)}.table-wrap th.action-column{background:var(--anson-bg-subtle)}.row-actions{white-space:nowrap}.table-wrap .id-cell{white-space:nowrap;max-width:150px}.id-cell button{font-size:11px;padding:3px 5px;margin-left:5px}.tool-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.tool-grid button{text-align:left;padding:10px 12px;white-space:normal}.tool-tabs{display:flex;align-items:center;gap:10px;margin-bottom:16px}.point-lineage summary{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:700px){.table-wrap .name-column{min-width:160px;max-width:220px}.table-wrap .action-column{min-width:120px}.row-actions button{padding:4px 6px;margin-right:3px}.tool-grid{grid-template-columns:1fr}}

/* V0.13.2-alpha.6 Shared Directory Context & Fixed Header */
:root{
  --ji-nav-bg:#17243d;
  --ji-nav-bg-hover:#213252;
  --ji-nav-text:#dce5f4;
  --ji-nav-muted:#8292ad;
  --ji-active:#5b82e6;
  --ji-header:#ffffff;
  --ji-panel:#ffffff;
  --ji-page:#f4f7fb;
}
body{background:var(--ji-page)}
.app-shell{min-height:100vh;background:var(--ji-page)}
.top-stack{position:sticky;top:0;z-index:80;background:#fff;box-shadow:0 1px 0 rgba(15,23,42,.025)}
.app-header{height:64px;padding:0 20px;background:var(--ji-header);border-bottom:1px solid var(--anson-border);box-shadow:0 1px 0 rgba(15,23,42,.02);display:grid;grid-template-columns:minmax(260px,1fr) auto minmax(260px,1fr);align-items:center;gap:18px}
.app-header .brand{color:#22314d;font-size:18px;letter-spacing:.01em}.brand-lockup{display:flex;align-items:center;gap:11px;min-width:0}.brand-lockup>div{display:flex;flex-direction:column;min-width:0}.brand-lockup small{font-size:10px;letter-spacing:.13em;color:#8490a3;text-transform:uppercase;margin-top:1px}.brand-symbol.compact{width:36px;height:36px;margin:0;border-radius:10px;font-size:19px;background:linear-gradient(145deg,#5279dd,#365ab5);box-shadow:0 5px 14px rgba(68,108,207,.22)}
.header-context{display:flex;align-items:center;justify-content:center;gap:8px;color:#64748b;font-size:12px;white-space:nowrap}.live-dot{width:7px;height:7px;border-radius:50%;background:#39a86b;box-shadow:0 0 0 3px rgba(57,168,107,.12)}.app-header .loading{color:var(--anson-primary);margin-left:4px}.app-header .header-actions{justify-self:end}.app-header .header-actions button,.header-button{background:#fff!important;color:#46536a!important;border:1px solid var(--anson-border)!important;box-shadow:none!important;min-height:34px;padding:6px 11px}.app-header .header-actions button:hover{background:#f6f8fb!important;color:#22314d!important}
.scopebar{min-height:54px;display:flex;align-items:center;gap:18px;padding:8px 20px;background:#fff;border-bottom:1px solid var(--anson-border)}.scope-selectors{display:flex;align-items:center;gap:9px;min-width:0}.scope-selectors label{display:flex;align-items:center;gap:7px;margin:0;color:#7a879a;font-size:12px}.scope-selectors label>span{white-space:nowrap}.scope-selectors select{width:172px;height:34px;margin:0;padding:5px 28px 5px 9px;background:#f8fafc;border-color:#dce4ed}.scope-selectors>button{height:34px;padding:5px 10px;background:#fff}.scopebar .stage{margin-left:auto;color:#93a0b3;white-space:nowrap}
.app-shell>.banner{margin:10px 18px 0}.app-body{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:calc(100vh - 118px)}
.primary-sidebar{position:sticky;top:118px;height:calc(100vh - 118px);max-height:none;overflow:auto;padding:15px 12px 14px;background:var(--ji-nav-bg);border-right:0;color:var(--ji-nav-text);display:flex;flex-direction:column}.primary-nav{display:block;margin:0;flex:1}.nav-group{margin:0 0 16px}.nav-group-title{padding:0 11px 6px;color:var(--ji-nav-muted);font-size:10px;font-weight:700;letter-spacing:.12em}.nav-item{position:relative;display:flex;align-items:center;gap:10px;width:100%;min-height:40px;margin:2px 0;padding:8px 11px;border:0;border-radius:9px;background:transparent!important;color:var(--ji-nav-text);text-align:left;font-size:13px;font-weight:500}.nav-item:hover:not(:disabled){background:var(--ji-nav-bg-hover)!important;color:#fff}.nav-item.active{background:rgba(91,130,230,.2)!important;color:#fff}.nav-item.active:before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:#82a3ff}.nav-item svg{width:18px;height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.nav-item span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer{padding:12px 10px 2px;border-top:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;gap:2px;color:#9ba9c0}.sidebar-footer b{color:#dfe7f5;font-size:11px;letter-spacing:.04em}.sidebar-footer span{font-size:10px}.sidebar-footer small{font-size:9px;line-height:1.45;color:#6f809b;margin-top:4px}
.workspace{display:grid;grid-template-columns:minmax(0,1fr);min-height:calc(100vh - 118px);background:var(--ji-page)}.workspace.workspace-context{grid-template-columns:278px minmax(0,1fr)}.workspace.workspace-wide{grid-template-columns:minmax(0,1fr)}
.context-sidebar{height:calc(100vh - 118px);max-height:none;position:sticky;top:118px;overflow:auto;padding:0 0 20px;background:#fff;border-right:1px solid var(--anson-border);box-shadow:4px 0 14px rgba(34,49,77,.025)}.context-sidebar .aside-title{padding:17px 14px 12px}.context-sidebar .aside-title>div{display:flex;flex-direction:column}.context-sidebar .aside-title b{font-size:13px;color:#2f3e58}.context-sidebar .aside-title small{margin-top:2px;font-size:10px;color:#9aa5b5}.context-sidebar .aside-title button{padding:5px 8px}.context-sidebar .tree-all{height:36px;margin:0 10px 8px;width:calc(100% - 20px);border:0;border-radius:8px;padding:7px 10px}.tree-list{padding:2px 8px}.context-sidebar .tree-row{min-height:36px;border-radius:7px;padding-right:5px}.context-sidebar .tree-row:hover{background:#f7f9fc}.context-sidebar .tree-row.active,.context-sidebar .tree-all.active{background:#edf3ff;color:#365ab5}.context-sidebar .node-label{flex:1;min-width:0;color:inherit}.context-sidebar .node-label span{overflow:hidden;text-overflow:ellipsis}.context-hint{margin:13px 14px 0;padding-top:12px;border-top:1px solid var(--anson-border-light);font-size:11px;line-height:1.6;color:#8b97a8}.context-sidebar .node-detail{margin:14px;padding:12px;background:#fafbfd;border-radius:10px}.context-sidebar .node-detail b{display:block;color:#31405a}
.page-main{min-width:0;padding:18px 22px 30px}.page-breadcrumb{display:flex;align-items:center;gap:6px;margin:0 2px 10px;color:#99a5b5;font-size:11px}.page-breadcrumb svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.page-breadcrumb b{color:#66758d;font-weight:600}.content-heading{align-items:center;gap:16px;margin:0 0 14px;padding:16px 17px;background:#fff;border:1px solid var(--anson-border);border-radius:12px;box-shadow:0 2px 9px rgba(34,49,77,.025)}.content-heading h2{font-size:19px;color:#253550}.content-heading p{font-size:11px;line-height:1.6;color:#7a8798}.page-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.page-actions button{min-height:34px}.page-main>.table-wrap,.page-main>.graphic-center,.page-main>.trend-center{box-shadow:0 2px 10px rgba(34,49,77,.025)}
.table-wrap{border-color:#dfe6ef;border-radius:11px}.table-wrap th{background:#f7f9fc;color:#768398}.table-wrap tbody tr:hover td{background:#fbfcfe}.table-wrap tbody tr:hover .name-column,.table-wrap tbody tr:hover .action-column{background:#fbfcfe}.badge{border-radius:999px;padding:3px 8px}.refresh-toolbar,.source-overview,.device-paths{background:#fff;border:1px solid var(--anson-border);border-radius:10px;padding:10px 12px}.device-paths{margin-bottom:12px}.device-paths>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.device-paths>div+div{margin-top:6px}
button{transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}.primary{box-shadow:0 1px 2px rgba(68,108,207,.14)}.primary:hover:not(:disabled){box-shadow:0 4px 10px rgba(68,108,207,.16)}
@media(max-width:1180px){.app-body{grid-template-columns:204px minmax(0,1fr)}.workspace.workspace-context{grid-template-columns:244px minmax(0,1fr)}.scope-selectors select{width:145px}.primary-sidebar{padding-left:9px;padding-right:9px}.page-main{padding:16px}.nav-item{padding-left:9px;padding-right:9px}}
@media(max-width:900px){.app-header{grid-template-columns:1fr auto}.header-context{display:none}.scopebar{align-items:flex-start;flex-wrap:wrap}.scope-selectors{flex-wrap:wrap}.scopebar .stage{width:100%;margin-left:0}.app-body{display:block}.primary-sidebar{position:relative;height:auto;max-height:none;padding:10px 12px}.primary-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.nav-group{display:contents}.nav-group-title{grid-column:1/-1;padding:6px 4px 0}.nav-item{margin:0;background:rgba(255,255,255,.035)!important}.nav-item.active:before{top:7px;bottom:7px}.sidebar-footer{display:none}.workspace,.workspace.workspace-context{min-height:0;grid-template-columns:220px minmax(0,1fr)}.workspace.workspace-wide{grid-template-columns:1fr}.context-sidebar{position:relative;height:auto;max-height:calc(100vh - 220px)}.page-main{padding:14px}}
@media(max-width:680px){.app-header{height:auto;min-height:60px;padding:10px 12px}.app-header .header-actions{gap:5px}.brand-lockup small{display:none}.scopebar{padding:8px 10px}.scope-selectors{width:100%}.scope-selectors label{flex:1;min-width:140px;display:block}.scope-selectors label>span{display:block;margin-bottom:3px}.scope-selectors select{width:100%}.scope-selectors>button{flex:1}.primary-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace,.workspace.workspace-context{display:block}.context-sidebar{max-height:280px;border-right:0;border-bottom:1px solid var(--anson-border)}.page-main{padding:11px}.page-breadcrumb{margin-left:1px}.content-heading{align-items:flex-start;padding:13px;flex-direction:column}.page-actions{width:100%;justify-content:flex-start}.app-shell>.banner{margin:8px 10px 0}.table-wrap .name-column{min-width:150px}.nav-item{min-height:38px}}


/* V0.13.2-alpha.7 Inline Navigation Directory (layout baseline) */
.app-body{grid-template-columns:260px minmax(0,1fr)}
.workspace,.workspace.workspace-context,.workspace.workspace-wide{grid-template-columns:minmax(0,1fr)}
.context-sidebar{display:none!important}
.primary-sidebar{padding-bottom:12px}
.nav-tree-panel{margin:2px 0 8px 9px;padding:6px 6px 7px 7px;border-left:1px solid rgba(157,177,211,.2);border-radius:0 8px 8px 0;background:rgba(255,255,255,.025)}
.nav-tree-head{display:flex;align-items:center;gap:5px;margin-bottom:3px}
.nav-tree-all,.nav-tree-add,.nav-tree-twisty,.nav-tree-label,.nav-tree-actions button{border:0;background:transparent!important;box-shadow:none!important}
.nav-tree-all{flex:1;min-width:0;text-align:left;padding:5px 7px;border-radius:6px;color:#aebbd0;font-size:11px}
.nav-tree-all:hover:not(:disabled),.nav-tree-all.active{background:rgba(255,255,255,.07)!important;color:#fff}
.nav-tree-add{width:27px;height:27px;padding:0;border-radius:6px;color:#9fb0ca;font-size:16px;line-height:1}
.nav-tree-add:hover:not(:disabled){background:rgba(255,255,255,.08)!important;color:#fff}
.nav-tree-list{max-height:330px;overflow:auto;padding:1px 0;scrollbar-width:thin;scrollbar-color:rgba(159,176,202,.34) transparent}
.nav-tree-row{display:flex;align-items:center;min-height:30px;border-radius:6px;padding-right:3px;color:#bdc9dc}
.nav-tree-row:hover{background:rgba(255,255,255,.05);color:#fff}
.nav-tree-row.active{background:rgba(91,130,230,.2);color:#fff}
.nav-tree-twisty{width:20px;height:28px;display:grid;place-items:center;padding:0;flex:0 0 20px;color:#7f91ad}
.nav-tree-twisty:hover:not(:disabled){color:#dce5f4}
.nav-tree-twisty .tree-chevron{width:13px;height:13px;transition:transform .15s ease}
.nav-tree-twisty .tree-chevron.expanded{transform:rotate(90deg)}
.nav-tree-spacer{width:20px;flex:0 0 20px}
.nav-tree-label{min-width:0;flex:1;display:flex;align-items:center;gap:6px;padding:4px 5px 4px 1px;text-align:left;color:inherit;font-size:11.5px}
.nav-tree-label span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nav-tree-label .tree-folder-icon{width:15px;height:15px;flex:0 0 15px;object-fit:contain}
.nav-tree-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin-top:5px;padding-top:6px;border-top:1px solid rgba(255,255,255,.07)}
.nav-tree-actions button{min-height:27px;padding:4px 3px;border-radius:5px;color:#9fb0ca;font-size:10px;white-space:nowrap}
.nav-tree-actions button:hover:not(:disabled){background:rgba(255,255,255,.07)!important;color:#fff}
.nav-tree-actions button.danger{color:#e6a0a0}
.nav-tree-empty{margin:4px 7px;color:#71839f;font-size:10px}
@media(max-width:1180px){.app-body{grid-template-columns:244px minmax(0,1fr)}.nav-tree-list{max-height:280px}}
@media(max-width:900px){.app-body{display:block}.nav-tree-panel{grid-column:1/-1;margin:0 0 4px;padding:7px 8px;border-left:0;border:1px solid rgba(255,255,255,.08);border-radius:8px}.nav-tree-list{max-height:220px}.workspace,.workspace.workspace-context,.workspace.workspace-wide{display:block}}
@media(max-width:680px){.nav-tree-panel{grid-column:1/-1}.nav-tree-list{max-height:200px}.nav-tree-actions{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* V0.13.2-alpha.9 · Anson IOT Natural Blue v1.0 Reference Alignment
   Source reference: user-provided Anson-IOT-Natural-Blue-UI-Standard-v1.0.
   Principle: white surfaces + soft blue selection + neutral typography; no large dark-blue navigation surface. */
:root{
  --anson-primary:#446CCF;
  --anson-primary-hover:#365AB5;
  --anson-accent:#1E90FF;
  --anson-sky:#87CEEB;
  --anson-glacier:#78D1E5;
  --anson-bg-page:#F5F8FC;
  --anson-bg-card:#FFFFFF;
  --anson-bg-soft:#EAF3FF;
  --anson-bg-subtle:#F7F9FC;
  --anson-text-primary:#1F2937;
  --anson-text-secondary:#667085;
  --anson-text-muted:#98A2B3;
  --anson-text-inverse:#FFFFFF;
  --anson-border:#E1E8F0;
  --anson-border-light:#EEF2F6;
  --anson-input-border:#D0D5DD;
  --anson-success:#2E8B57;
  --anson-success-bg:#EAF7F0;
  --anson-warning:#E09C22;
  --anson-warning-bg:#FFF6E5;
  --anson-danger:#C43D3D;
  --anson-danger-bg:#FDECEC;
  --anson-info:#446CCF;
  --anson-info-bg:#EEF3FF;
  --anson-disabled:#99A3AF;
  --anson-disabled-bg:#F2F4F7;
  --anson-radius-sm:6px;
  --anson-radius-md:8px;
  --anson-radius-card:14px;
  --anson-radius-dialog:16px;
  --anson-radius-pill:999px;
  --anson-shadow-card:0 2px 8px rgba(31,41,55,.04);
  --anson-shadow-hover:0 6px 18px rgba(31,41,55,.07);
  --anson-shadow-dialog:0 16px 40px rgba(31,41,55,.14);
  --anson-font:Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;
  --anson-focus:#84ADFF;
  --anson-secondary-border:#AFC5F3;
  --anson-table-head:#F8FAFC;
  --anson-progress-track:#E4EAF2;
  --ji-nav-bg:#FFFFFF;
  --ji-nav-bg-hover:#F7F9FC;
  --ji-nav-text:#475467;
  --ji-nav-muted:#98A2B3;
  --ji-active:#446CCF;
  --ji-header:#FFFFFF;
  --ji-panel:#FFFFFF;
  --ji-page:#F5F8FC;
}

/* Typography */
html{background:var(--anson-bg-page);scrollbar-color:#C7D2E0 #F2F5F9}
body{font-family:var(--anson-font);font-size:14px;line-height:1.5;font-weight:400;color:var(--anson-text-primary);background:var(--anson-bg-page);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
button,input,select,textarea{font-family:var(--anson-font);font-size:14px}
b,strong{font-weight:600}
h1,h2,h3,h4{color:var(--anson-text-primary);font-weight:600;letter-spacing:0}
h1{font-size:24px;line-height:1.35}
h2{font-size:24px;line-height:1.35}
h3{font-size:16px;line-height:1.4}
small,.hint{color:var(--anson-text-secondary)}
::selection{background:#DDEAFF;color:#1F2937}

/* Controls — exact component language from the reference standard */
button{min-height:36px;padding:7px 12px;border:1px solid var(--anson-border);border-radius:var(--anson-radius-md);background:#FFF;color:var(--anson-text-primary);font-weight:500;box-shadow:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}
button:hover:not(:disabled){background:#F3F7FF;border-color:var(--anson-secondary-border);color:var(--anson-primary)}
button:focus-visible,.path-breadcrumb button:focus-visible{outline:2px solid var(--anson-focus);outline-offset:2px}
button:disabled{cursor:not-allowed;color:var(--anson-disabled);background:var(--anson-disabled-bg);border-color:var(--anson-border);opacity:1}
button.primary,.primary{background:var(--anson-primary);border-color:var(--anson-primary);color:#FFF;box-shadow:none}
button.primary:hover:not(:disabled),.primary:hover:not(:disabled){background:var(--anson-primary-hover);border-color:var(--anson-primary-hover);color:#FFF;box-shadow:none}
button.danger{color:var(--anson-danger);background:#FFF}
button.danger:hover:not(:disabled){color:var(--anson-danger);background:var(--anson-danger-bg);border-color:#E8B7B7}
input,select,textarea{border:1px solid var(--anson-input-border);border-radius:var(--anson-radius-md);background:#FFF;color:var(--anson-text-primary);box-shadow:none}
input,select{height:36px;padding:7px 10px}
textarea{padding:9px 10px;line-height:1.5}
input:hover,select:hover,textarea:hover{border-color:#B8C1CE}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--anson-focus);box-shadow:0 0 0 3px rgba(132,173,255,.16)}
input::placeholder,textarea::placeholder{color:var(--anson-text-muted)}
input[type=checkbox]{height:auto;width:auto;accent-color:var(--anson-primary)}

/* Login + brand */
.login-wrap{background:var(--anson-bg-page)}
.login-card{background:#FFF;border:1px solid var(--anson-border);border-radius:20px;box-shadow:var(--anson-shadow-dialog)}
.brand-symbol,.brand-symbol.compact{background:var(--anson-primary);color:#FFF;box-shadow:0 2px 8px rgba(68,108,207,.16)}
.login-card h1,.app-header .brand{color:var(--anson-text-primary)}
.login-card p,.brand-lockup small{color:var(--anson-text-secondary)}

/* Fixed top area */
.top-stack{background:#FFF;box-shadow:0 1px 0 rgba(31,41,55,.04)}
.app-header{background:#FFF;border-bottom:1px solid var(--anson-border);box-shadow:none}
.app-header .brand{font-size:20px;font-weight:600;color:var(--anson-text-primary)}
.brand-lockup small{font-size:11px;letter-spacing:.08em;color:var(--anson-text-muted)}
.header-context{color:var(--anson-text-secondary);font-size:13px}
.live-dot{background:var(--anson-success);box-shadow:0 0 0 3px rgba(46,139,87,.10)}
.app-header .header-actions button,.header-button{min-height:36px;background:#FFF!important;color:var(--anson-text-secondary)!important;border:1px solid var(--anson-border)!important;border-radius:8px!important;font-weight:500!important;box-shadow:none!important}
.app-header .header-actions button:hover:not(:disabled),.header-button:hover:not(:disabled){background:#F3F7FF!important;border-color:var(--anson-secondary-border)!important;color:var(--anson-primary)!important}
.scopebar{background:#FFF;border-bottom:1px solid var(--anson-border)}
.scope-selectors label{font-size:13px;color:var(--anson-text-secondary)}
.scope-selectors select{height:36px;background:#FFF;border-color:var(--anson-input-border);color:var(--anson-text-primary)}
.scope-selectors>button{height:36px;background:#FFF;color:var(--anson-text-primary)}
.scopebar .stage{color:var(--anson-text-muted);font-size:12px}

/* Sidebar — reference standard explicitly specifies white 224–232 px */
.app-body{grid-template-columns:232px minmax(0,1fr)}
.primary-sidebar{position:sticky;top:118px;height:calc(100vh - 118px);max-height:none;overflow:auto;padding:14px 10px 12px;background:#FFF!important;border-right:1px solid var(--anson-border)!important;color:var(--anson-text-primary)!important;box-shadow:none!important}
.primary-nav{margin:0}
.nav-group{margin:0 0 18px}
.nav-group-title{padding:0 10px 7px;color:var(--anson-text-muted)!important;font-size:12px;font-weight:500;letter-spacing:0}
.primary-sidebar .nav-item{min-height:40px;margin:2px 0;padding:8px 10px;border:0!important;border-radius:8px;background:transparent!important;color:#475467!important;font-size:14px;font-weight:500;box-shadow:none!important}
.primary-sidebar .nav-item:hover:not(:disabled){background:#F7F9FC!important;color:var(--anson-primary)!important}
.primary-sidebar .nav-item.active,.primary-sidebar button.nav-item.active:not(.primary){background:var(--anson-bg-soft)!important;color:var(--anson-primary)!important;box-shadow:none!important}
.primary-sidebar .nav-item.active:before{display:none}
.primary-sidebar .nav-item svg{width:18px;height:18px;flex-basis:18px;stroke:currentColor;opacity:1}
.sidebar-footer{padding:13px 10px 2px;border-top:1px solid var(--anson-border-light)!important;color:var(--anson-text-muted)!important}
.sidebar-footer b{font-size:12px;color:var(--anson-text-secondary)!important;font-weight:600}
.sidebar-footer span{font-size:11px;color:var(--anson-text-muted)!important}
.sidebar-footer small{font-size:10px;line-height:1.5;color:var(--anson-text-muted)!important}

/* Inline directory tree shares the same white/sidebar language */
.nav-tree-panel{margin:3px 0 9px 8px;padding:6px 5px 7px 8px;border-left:1px solid var(--anson-border)!important;border-radius:0 8px 8px 0;background:#FFF!important}
.nav-tree-head{gap:4px;margin-bottom:4px}
.primary-sidebar .nav-tree-all,.primary-sidebar .nav-tree-add,.primary-sidebar .nav-tree-twisty,.primary-sidebar .nav-tree-label,.primary-sidebar .nav-tree-actions button{background:transparent!important;border:0!important;box-shadow:none!important}
.primary-sidebar .nav-tree-all{min-height:32px;padding:5px 7px;border-radius:6px;color:var(--anson-text-secondary)!important;font-size:13px;font-weight:500}
.primary-sidebar .nav-tree-all:hover:not(:disabled){background:#F7F9FC!important;color:var(--anson-primary)!important}
.primary-sidebar .nav-tree-all.active{background:var(--anson-bg-soft)!important;color:var(--anson-primary)!important}
.primary-sidebar .nav-tree-add{width:30px;height:30px;min-height:30px;padding:0;border-radius:6px;color:var(--anson-primary)!important;font-size:17px}
.primary-sidebar .nav-tree-add:hover:not(:disabled){background:var(--anson-bg-soft)!important;color:var(--anson-primary-hover)!important}
.nav-tree-list{max-height:340px;scrollbar-width:thin;scrollbar-color:#C9D4E0 transparent}
.primary-sidebar .nav-tree-row{min-height:32px;border-radius:6px;color:var(--anson-text-secondary)!important}
.primary-sidebar .nav-tree-row:hover{background:#F7F9FC!important;color:var(--anson-text-primary)!important}
.primary-sidebar .nav-tree-row.active{background:var(--anson-bg-soft)!important;color:var(--anson-primary)!important;box-shadow:none!important}
.primary-sidebar .nav-tree-twisty{width:20px;height:30px;min-height:30px;color:var(--anson-text-muted)!important}
.primary-sidebar .nav-tree-twisty:hover:not(:disabled){background:transparent!important;color:var(--anson-primary)!important}
.primary-sidebar .nav-tree-label{min-height:30px;padding:4px 5px 4px 1px;color:inherit!important;font-size:13px;font-weight:400}
.primary-sidebar .nav-tree-row.active .nav-tree-label{font-weight:500}
.primary-sidebar .nav-tree-label .tree-folder-icon{width:16px;height:16px;flex-basis:16px}
.nav-tree-actions{gap:4px;margin-top:6px;padding-top:7px;border-top:1px solid var(--anson-border-light)!important}
.primary-sidebar .nav-tree-actions button{min-height:30px;padding:4px 3px;border-radius:6px;color:var(--anson-text-secondary)!important;font-size:11px;font-weight:500}
.primary-sidebar .nav-tree-actions button:hover:not(:disabled){background:#F3F7FF!important;color:var(--anson-primary)!important}
.primary-sidebar .nav-tree-actions button.danger{color:var(--anson-danger)!important}
.primary-sidebar .nav-tree-actions button.danger:hover:not(:disabled){background:var(--anson-danger-bg)!important;color:var(--anson-danger)!important}
.nav-tree-empty{color:var(--anson-text-muted)!important;font-size:11px}

/* Page shell, cards and hierarchy */
.workspace,.app-shell{background:var(--anson-bg-page)}
.page-main{padding:20px 24px 32px}
.page-breadcrumb{margin-bottom:10px;color:var(--anson-text-muted);font-size:12px}
.page-breadcrumb b{color:var(--anson-text-secondary);font-weight:500}
.content-heading{margin-bottom:16px;padding:20px;background:#FFF;border:1px solid var(--anson-border);border-radius:var(--anson-radius-card);box-shadow:var(--anson-shadow-card)}
.content-heading h2{margin:0 0 4px;font-size:24px;font-weight:600;color:var(--anson-text-primary)}
.content-heading p{font-size:13px;line-height:1.5;color:var(--anson-text-secondary)}
.page-actions{gap:8px}
.page-actions button{min-height:36px}
.page-main>.table-wrap,.page-main>.graphic-center,.page-main>.trend-center{box-shadow:var(--anson-shadow-card)}
.table-wrap,.trend-card,.graphic-card,.source-overview,.refresh-toolbar,.device-paths,.connection-card,.domain-card{background:#FFF;border:1px solid var(--anson-border);border-radius:var(--anson-radius-card);box-shadow:var(--anson-shadow-card)}

/* Tables */
.table-wrap{border-radius:var(--anson-radius-card);overflow:auto}
table{font-size:14px}
th{padding:12px 16px;background:var(--anson-table-head)!important;color:var(--anson-text-secondary)!important;font-size:12px;font-weight:500;border-bottom:1px solid var(--anson-border-light)}
td{padding:11px 16px;color:var(--anson-text-primary);border-bottom:1px solid var(--anson-border-light)}
td small{color:var(--anson-text-muted)}
.table-wrap tbody tr:hover td,.table-wrap tbody tr:hover .name-column,.table-wrap tbody tr:hover .action-column{background:#FBFCFE!important}
.table-wrap .name-column,.table-wrap .action-column{background:#FFF}
.table-wrap th.name-column,.table-wrap th.action-column{background:var(--anson-table-head)!important}
.table-wrap .action-column{box-shadow:none}
.row-actions button,.action-column button{min-height:30px;padding:4px 9px;font-size:12px;border-radius:6px}
.id-cell{color:var(--anson-text-muted)}
.locator-cell,.point-lineage,.device-paths{color:var(--anson-text-secondary)}
.badge{padding:4px 9px;border-radius:var(--anson-radius-pill);background:#F2F4F7;color:var(--anson-text-secondary);font-size:12px;font-weight:500}

/* Shared information surfaces */
.refresh-toolbar,.source-overview,.device-paths{padding:12px 14px;border-radius:12px}
.raw-preview,.batch-preview,.connection-card{background:#F7F9FC}
.raw-preview td,.raw-preview th,.batch-table{border-color:var(--anson-border-light)}
.batch-table thead{background:var(--anson-table-head)}
.source-stats article{border:1px solid var(--anson-border);background:#FFF;box-shadow:var(--anson-shadow-card)}
.source-stats small{color:var(--anson-text-secondary)}
.source-stats b{color:var(--anson-text-primary)}
.source-panel{background:#F7F9FC}
.source-panel button.active,.source-prefixes button.active{background:var(--anson-bg-soft)!important;border-color:var(--anson-secondary-border)!important;color:var(--anson-primary)!important}
.mqtt-topics>div{border-color:var(--anson-border);background:#FFF}
.block-code{background:#F7F9FC;color:var(--anson-text-primary)}
.path-breadcrumb,.path-current{background:#F7F9FC;border-color:var(--anson-border)}
.path-folders{border-color:var(--anson-border)}
.path-folder:hover{background:var(--anson-bg-soft)}
.path-folder .folder-icon{color:var(--anson-primary)}

/* Trend + graph: preserve semantic/data differentiation, align containers */
.trend-card:hover,.graphic-card:hover{border-color:#CCD8E8;box-shadow:var(--anson-shadow-hover)}
.trend-card-stats span,.trend-candidates button.active{background:var(--anson-bg-soft)}
.trend-chart,.trend-chart-wrap{background:#FFF}
.trend-axis{stroke:#98A2B3}.trend-grid-line{stroke:#EEF2F6}.trend-axis-label{fill:#667085}.trend-hover-line{stroke:#98A2B3}
.trend-warning{background:var(--anson-warning-bg);color:var(--anson-warning)}
.graphic-toolbar{border-color:var(--anson-border);background:#F7F9FC}
.graphic-toolbar small{color:var(--anson-text-secondary)}
.graphic-card{border-color:var(--anson-border);box-shadow:var(--anson-shadow-card)}
.graphic-card-preview{background:#EAF3FF;color:var(--anson-text-secondary)}
.graphic-card-preview b{background:var(--anson-warning-bg);color:var(--anson-warning)}
.graphic-card-body p{color:var(--anson-text-secondary)}.graphic-card-body>small{color:var(--anson-text-muted)}.graphic-card-meta span{background:#F2F4F7;color:var(--anson-text-secondary)}
.graphic-editor-head,.graphic-runtime-head{background:#FFF;border-bottom-color:var(--anson-border)}
.graphic-upload{border-color:var(--anson-input-border);background:#FFF}.graphic-upload:hover{background:#F3F7FF;border-color:var(--anson-secondary-border)}
.graphic-palette,.graphic-properties{border-color:var(--anson-border);background:#F7F9FC}
.graphic-canvas{border-color:var(--anson-border);background:#F5F8FC;box-shadow:inset 0 0 0 1px #FFF}
.graphic-canvas.runtime{background:#F5F8FC}
.graphic-empty-bg{color:var(--anson-text-muted);background-image:linear-gradient(#EEF2F6 1px,transparent 1px),linear-gradient(90deg,#EEF2F6 1px,transparent 1px)}
.graphic-element{border-color:rgba(102,112,133,.28);box-shadow:0 2px 8px rgba(31,41,55,.08)}
.graphic-element.selected{outline-color:var(--anson-primary)}
.graphic-element small{color:var(--anson-text-secondary)}
.graphic-gauge,.graphic-bar{color:var(--anson-primary)}
.graphic-control{border-color:var(--anson-secondary-border);background:rgba(255,255,255,.96)}
.graphic-device-group{border-top-color:var(--anson-border-light)}

/* Status + modal */
.error{color:var(--anson-danger);background:var(--anson-danger-bg);border:1px solid #F0CACA}
.success{color:var(--anson-success);background:var(--anson-success-bg);border:1px solid #CBE7D7}
.loading{color:var(--anson-primary)}
.refresh-warning{color:var(--anson-danger)!important;background:var(--anson-danger-bg);border:1px solid #F0CACA}
.modal-backdrop{background:rgba(31,41,55,.38);backdrop-filter:blur(1.5px)}
.modal{background:#FFF;border:1px solid var(--anson-border);border-radius:var(--anson-radius-dialog);box-shadow:var(--anson-shadow-dialog)}
.modal h2{font-size:20px;font-weight:600}

/* Responsive continuity */
@media(max-width:1180px){.app-body{grid-template-columns:224px minmax(0,1fr)}.page-main{padding:18px}.primary-sidebar{padding-left:8px;padding-right:8px}.primary-sidebar .nav-item{padding-left:9px;padding-right:9px}}
@media(max-width:900px){.app-body{display:block}.primary-sidebar{position:relative;top:auto;height:auto;max-height:none;background:#FFF!important;border-right:0!important;border-bottom:1px solid var(--anson-border)!important}.primary-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.nav-group{display:contents}.nav-group-title{grid-column:1/-1;padding:6px 4px 0}.primary-sidebar .nav-item{margin:0;background:#FFF!important;border:1px solid var(--anson-border)!important}.primary-sidebar .nav-item.active,.primary-sidebar button.nav-item.active:not(.primary){background:var(--anson-bg-soft)!important;border-color:#CFE0F5!important}.nav-tree-panel{grid-column:1/-1;margin:0 0 4px;padding:7px 8px;border:1px solid var(--anson-border)!important;border-radius:8px;background:#FFF!important}.nav-tree-list{max-height:220px}.sidebar-footer{display:none}.page-main{padding:14px}}
@media(max-width:680px){.primary-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.content-heading{padding:16px}.content-heading h2{font-size:20px}.page-main{padding:11px}.nav-tree-list{max-height:200px}}

/* V0.13.2-alpha.10 · Single Global Header + Site Scope Switcher */
.top-stack{position:sticky;top:0;z-index:90;height:64px;background:#FFF;border-bottom:1px solid var(--anson-border);box-shadow:0 1px 0 rgba(31,41,55,.035)}
.app-header{position:relative;z-index:3;height:64px;padding:0 20px;border-bottom:0;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:16px}
.brand-zone{display:flex;align-items:center;gap:18px;min-width:0}
.brand-zone .brand-lockup{flex:0 0 auto}
.scopebar{display:none!important}
.scope-switcher{position:relative;min-width:0}
.scope-trigger{min-height:40px;height:40px;max-width:310px;padding:4px 9px 4px 10px;display:flex;align-items:center;gap:8px;border:1px solid var(--anson-border)!important;border-radius:10px!important;background:#F8FAFC!important;color:var(--anson-text-secondary)!important;box-shadow:none!important}
.scope-trigger:hover:not(:disabled),.scope-trigger.open{background:var(--anson-bg-soft)!important;border-color:#C7D9F5!important;color:var(--anson-primary)!important}
.scope-trigger>svg:first-child{width:18px;height:18px;flex:0 0 18px}
.scope-trigger-copy{display:flex;flex-direction:column;align-items:flex-start;min-width:0;line-height:1.15}
.scope-trigger-copy b{max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--anson-text-primary);font-size:13px;font-weight:600}
.scope-trigger-copy small{margin-top:2px;color:var(--anson-text-muted);font-size:10px;font-weight:400}
.scope-trigger:hover .scope-trigger-copy b,.scope-trigger.open .scope-trigger-copy b{color:var(--anson-primary)}
.scope-chevron{width:14px!important;height:14px!important;flex:0 0 14px;transition:transform .15s ease}
.scope-chevron.open{transform:rotate(180deg)}
.scope-popover{position:absolute;left:0;top:calc(100% + 9px);z-index:6;width:292px;padding:13px;background:#FFF;border:1px solid var(--anson-border);border-radius:12px;box-shadow:0 16px 36px rgba(31,41,55,.14)}
.scope-popover-title{display:flex;flex-direction:column;padding:1px 2px 10px;margin-bottom:10px;border-bottom:1px solid var(--anson-border-light)}
.scope-popover-title b{font-size:14px;color:var(--anson-text-primary)}
.scope-popover-title small{margin-top:2px;font-size:11px;color:var(--anson-text-muted)}
.scope-popover label{display:block;margin:9px 0;color:var(--anson-text-secondary);font-size:12px;font-weight:500}
.scope-popover label>span{display:block;margin-bottom:5px}
.scope-popover select{width:100%;height:36px;margin:0;background:#FFF}
.scope-popover-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;padding-top:11px;border-top:1px solid var(--anson-border-light)}
.scope-popover-actions button{min-height:34px;padding:6px 8px;font-size:12px}
.scope-switcher-backdrop{position:fixed;inset:64px 0 0;z-index:1;background:transparent}
.primary-sidebar{top:64px!important;height:calc(100vh - 64px)!important}
.workspace,.workspace.workspace-context,.workspace.workspace-wide{min-height:calc(100vh - 64px)}
.app-body{min-height:calc(100vh - 64px)}
@media(max-width:1180px){.brand-zone{gap:12px}.scope-trigger{max-width:250px}.scope-trigger-copy b{max-width:160px}}
@media(max-width:900px){.top-stack{height:64px}.app-header{grid-template-columns:minmax(0,1fr) auto}.brand-zone{gap:10px}.header-context{display:none}.scope-trigger{max-width:230px}.primary-sidebar{top:auto!important;height:auto!important}.app-body,.workspace,.workspace.workspace-context,.workspace.workspace-wide{min-height:0}}
@media(max-width:680px){.app-header{min-height:64px;height:64px;padding:8px 10px}.brand-zone{gap:7px}.brand-lockup{gap:7px}.brand-lockup small{display:none}.app-header .brand{font-size:17px}.brand-symbol.compact{width:34px;height:34px}.scope-trigger{height:36px;min-height:36px;max-width:180px;padding:3px 7px}.scope-trigger-copy b{max-width:116px;font-size:12px}.scope-trigger-copy small{display:none}.scope-popover{left:-74px;width:min(292px,calc(100vw - 20px))}.scope-switcher-backdrop{inset:64px 0 0}.app-header .header-actions button,.header-button{min-height:34px;padding:5px 8px}.top-stack{height:64px}}
@media(max-width:520px){.brand-lockup>div{display:none}.scope-trigger{max-width:170px}.scope-popover{left:-42px}.header-actions{gap:4px}}


/* V0.13.2-alpha.13 · Settings Center Navigation */
.nav-settings-group{margin-top:2px;padding-top:12px;border-top:1px solid var(--anson-border-light)}
.primary-sidebar .settings-nav-item{font-weight:600}
.primary-sidebar .settings-nav-item svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.settings-center{display:grid;gap:18px}
.settings-group{padding:20px;border:1px solid var(--anson-border);border-radius:14px;background:#FFF;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.settings-group-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}
.settings-group-heading h3{margin:0 0 4px;color:var(--anson-text-primary);font-size:16px;font-weight:600;line-height:1.4}
.settings-group-heading p{margin:0;color:var(--anson-text-muted);font-size:13px;line-height:1.6}
.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
button.settings-card{display:grid;grid-template-columns:42px minmax(0,1fr) 20px;align-items:center;gap:12px;min-height:86px;padding:15px 14px;border:1px solid var(--anson-border)!important;border-radius:12px;background:#FFF!important;color:var(--anson-text-primary)!important;text-align:left;box-shadow:none!important;transition:border-color .15s ease,background .15s ease,transform .15s ease}
button.settings-card:hover:not(:disabled){border-color:#C9D9F5!important;background:#F8FBFF!important;transform:translateY(-1px)}
.settings-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:10px;background:var(--anson-bg-soft);color:var(--anson-primary)}
.settings-icon svg,.settings-arrow{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.settings-card-copy{display:flex;min-width:0;flex-direction:column;gap:4px}
.settings-card-copy b{color:var(--anson-text-primary);font-size:14px;font-weight:600;line-height:1.4}
.settings-card-copy small{color:var(--anson-text-secondary);font-size:12px;font-weight:400;line-height:1.55}
.settings-arrow{width:17px;height:17px;color:var(--anson-text-muted);transition:transform .15s ease,color .15s ease}
button.settings-card:hover:not(:disabled) .settings-arrow{color:var(--anson-primary);transform:translateX(2px)}
@media(max-width:900px){.nav-settings-group{grid-column:1/-1;padding-top:8px}.settings-grid{grid-template-columns:1fr}.settings-group{padding:16px}}
@media(max-width:680px){.settings-group{padding:14px}.settings-group-heading{margin-bottom:10px}button.settings-card{grid-template-columns:38px minmax(0,1fr) 18px;min-height:78px;padding:12px}.settings-icon{width:38px;height:38px}}


/* V0.13.2-alpha.13 · Compact Comfort UI
   Global density baseline: preserve readable typography while reducing structural chrome.
   Buttons 32px / compact 28px; inputs 32px; page headings ~58px; table rows ~42–46px. */
:root{
  --ji-control-h:32px;
  --ji-control-h-sm:28px;
  --ji-gap-1:4px;
  --ji-gap-2:8px;
  --ji-gap-3:10px;
  --ji-gap-4:12px;
  --ji-radius-control:7px;
  --ji-radius-panel:10px;
  --ji-shadow-compact:0 1px 3px rgba(31,41,55,.035);
}

/* Global controls */
button{min-height:var(--ji-control-h);padding:5px 10px;border-radius:var(--ji-radius-control);font-size:13px;line-height:1.35}
input,select{height:var(--ji-control-h);padding:5px 9px;font-size:13px;border-radius:var(--ji-radius-control)}
textarea{padding:7px 9px;font-size:13px;border-radius:var(--ji-radius-control)}
button.primary,.primary{font-weight:500}
.wide{width:100%}

/* Header stays calm, but consumes less visual weight. */
.scope-trigger{min-height:36px;height:36px;padding:3px 8px;border-radius:9px!important}
.scope-trigger-copy b{font-size:13px}.scope-trigger-copy small{font-size:9px}
.app-header .header-actions button,.header-button{min-height:32px!important;padding:5px 9px!important;font-size:13px}
.scope-popover{padding:11px;border-radius:10px}.scope-popover select{height:32px}.scope-popover-actions button{min-height:30px}

/* Sidebar: slightly narrower and denser, without reducing hit targets too far. */
.app-body{grid-template-columns:220px minmax(0,1fr)}
.primary-sidebar{padding:10px 8px 10px}
.nav-group{margin-bottom:12px}.nav-group-title{padding:0 8px 5px;font-size:11px}
.primary-sidebar .nav-item{min-height:36px;margin:1px 0;padding:6px 9px;border-radius:7px;font-size:13px}
.primary-sidebar .nav-item svg{width:17px;height:17px;flex-basis:17px}
.nav-settings-group{padding-top:9px;margin-top:0}
.nav-tree-panel{margin:2px 0 7px 7px;padding:4px 4px 5px 6px;border-radius:0 7px 7px 0}
.primary-sidebar .nav-tree-all{min-height:29px;padding:4px 6px;font-size:12px}
.primary-sidebar .nav-tree-add{width:27px;height:27px;min-height:27px;font-size:15px}
.nav-tree-list{max-height:330px}
.primary-sidebar .nav-tree-row{min-height:29px;border-radius:5px;font-size:12.5px}
.primary-sidebar .nav-tree-twisty{width:18px;height:27px;min-height:27px}
.primary-sidebar .nav-tree-label{min-height:28px;padding:3px 5px;gap:5px;font-size:12.5px}
.tree-folder-icon{width:15px!important;height:15px!important}
.primary-sidebar .nav-tree-actions{margin-top:4px;padding-top:4px}
.primary-sidebar .nav-tree-actions button{min-height:26px;padding:3px 2px;font-size:10px}
.sidebar-footer{padding:10px 8px 1px}.sidebar-footer small{line-height:1.4}

/* Page shell: compact unified heading instead of a tall hero card. */
.page-main{padding:13px 16px 24px}
.page-breadcrumb{margin:0 2px 6px;font-size:11px;gap:5px}
.content-heading{min-height:56px;margin:0 0 10px;padding:10px 13px;border-radius:var(--ji-radius-panel);box-shadow:var(--ji-shadow-compact);gap:12px}
.content-heading>div:first-child{display:flex;align-items:baseline;gap:10px;min-width:0;flex:1;flex-wrap:wrap}
.content-heading h2{margin:0;font-size:20px;line-height:1.3;white-space:nowrap}
.content-heading p{margin:0;min-width:0;max-width:min(62vw,760px);font-size:12px;line-height:1.4;color:var(--anson-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.page-actions{gap:6px;flex-wrap:nowrap}
.page-actions button{min-height:32px;padding:5px 10px;font-size:13px;white-space:nowrap}

/* Shared compact panels/toolbars */
.refresh-toolbar,.device-paths,.source-overview,.graphic-toolbar{border-radius:var(--ji-radius-panel);box-shadow:var(--ji-shadow-compact)}
.refresh-toolbar{gap:8px;margin:6px 0 10px;padding:7px 10px}
.refresh-toolbar label{gap:6px;font-size:12px}.refresh-toolbar select{min-width:76px;height:30px;padding:4px 7px}
.refresh-toolbar button{min-height:30px}.refresh-toolbar small{font-size:11px}
.device-paths{margin:5px 0 10px;padding:7px 10px;font-size:12px}.device-paths>div{gap:6px}.device-paths button{min-height:26px;padding:3px 7px;font-size:11px}

/* Graphic views */
.graphic-center{gap:10px;box-shadow:none!important}
.graphic-toolbar{min-height:38px;padding:7px 10px;gap:12px;background:#FFF}
.graphic-toolbar label{gap:6px;font-size:13px;font-weight:500}.graphic-toolbar small{font-size:11px}
.graphic-card-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.graphic-card{border-radius:10px;box-shadow:var(--ji-shadow-compact)}
.graphic-card-preview{height:70px;font-size:13px}.graphic-card-preview b{top:7px;right:7px;padding:3px 7px;font-size:10px}
.graphic-card-body{padding:11px}.graphic-card-body h3{margin:0 0 3px;font-size:15px}.graphic-card-body p{margin:2px 0 7px;font-size:12px;min-height:18px}.graphic-card-body>small{font-size:11px}
.graphic-card-meta{gap:5px;margin:8px 0}.graphic-card-meta span{padding:3px 6px;font-size:10px}
.graphic-card-actions{gap:5px}.graphic-card-actions button{min-height:29px;padding:4px 8px;font-size:12px}

/* Trends */
.trend-summary{margin:-2px 0 8px}.trend-summary .hint{margin:0;font-size:11px}
.trend-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.trend-card{min-height:150px;padding:13px;gap:7px;border-radius:10px;box-shadow:var(--ji-shadow-compact)}
.trend-card h3{font-size:15px}.trend-card p{font-size:12px;min-height:18px}.trend-card>small{font-size:11px}
.trend-card-stats{gap:5px}.trend-card-stats span{padding:3px 7px;font-size:11px}.trend-card-actions{gap:5px}.trend-card-actions button{min-height:29px;padding:4px 8px;font-size:12px}

/* Tables: comfortable data density, not spreadsheet-cramped. */
.table-wrap{border-radius:10px;box-shadow:var(--ji-shadow-compact)!important}
table{font-size:13px}
th{padding:9px 12px!important;font-size:11px!important;line-height:1.3}
.table-wrap td{padding:9px 12px!important;line-height:1.35}
.table-wrap .name-column{min-width:200px;max-width:310px}.table-wrap .action-column{min-width:145px}
.table-wrap td small{font-size:10.5px;line-height:1.35;margin-top:2px}.table-wrap td b{font-size:13px}
.row-actions,.action-column{gap:4px}.row-actions button,.action-column button{min-height:27px;padding:3px 7px;font-size:11px;border-radius:6px}
.id-cell button{min-height:25px!important;padding:2px 5px!important;font-size:10px!important}
.badge{padding:2px 7px;font-size:10.5px}
.table-wrap>.batch-tools{min-height:38px;margin:0;padding:6px 10px;border-bottom:1px solid var(--anson-border-light);background:#FFF;gap:6px}
.table-wrap>.batch-tools button{min-height:28px;padding:4px 8px;font-size:11px}.table-wrap>.batch-tools b{font-size:11px;color:var(--anson-text-secondary)}
.pagination{gap:7px;margin:9px 0 4px}.pagination button{min-width:60px;min-height:28px}.pagination select{height:28px}

/* Settings center */
.settings-center{gap:12px}
.settings-group{padding:14px;border-radius:10px;box-shadow:var(--ji-shadow-compact)}
.settings-group-heading{margin-bottom:9px}.settings-group-heading h3{margin-bottom:2px;font-size:15px}.settings-group-heading p{font-size:11.5px;line-height:1.45}
.settings-grid{gap:8px}
button.settings-card{grid-template-columns:36px minmax(0,1fr) 16px;gap:10px;min-height:68px;padding:10px 11px;border-radius:9px}
.settings-icon{width:36px;height:36px;border-radius:8px}.settings-icon svg{width:18px;height:18px}.settings-card-copy{gap:2px}.settings-card-copy b{font-size:13px}.settings-card-copy small{font-size:11px;line-height:1.4}.settings-arrow{width:15px;height:15px}

/* Source / gateway workbench */
.source-overview{margin:7px 0 10px;padding:10px}
.source-stats{gap:7px}.source-stats article{padding:9px;border-radius:8px;box-shadow:none}.source-stats small{font-size:10px}.source-stats b{font-size:18px;margin-top:3px}
.source-layout{grid-template-columns:230px minmax(0,1fr);gap:10px;margin:8px 0}.source-panel,.source-controls{padding:8px}.source-panel button{margin:3px 0;min-height:30px;font-size:12px}
.source-filters{gap:6px}.source-filters label{font-size:11px}.source-prefixes,.source-pickbar{gap:5px;margin:8px 0}.source-prefixes button{min-height:27px;padding:3px 7px;font-size:10.5px}
.source-pickbar button{min-height:29px}.source-pickbar span,.source-pickbar b{font-size:11px}

/* Modals and editors share the same compact rhythm. */
.modal{padding:18px;border-radius:12px}.modal h2{font-size:18px;margin-top:0}.modal h3{font-size:14px}.modal .hint{font-size:11.5px;line-height:1.45}
.modal label{font-size:12px}.modal-actions{gap:6px}.modal-actions button{min-height:31px}
.tool-grid{gap:7px;margin:12px 0}.tool-grid button{min-height:31px;padding:6px 9px;font-size:12px}.tool-tabs{gap:7px;margin-bottom:10px}
.connection-card,.domain-card{padding:10px;margin:7px 0;border-radius:9px}.connection-card p,.domain-card p{margin:4px 0;font-size:12px}
.graphic-editor-head,.graphic-runtime-head{gap:10px;padding-bottom:8px}.graphic-editor-head>div:last-child,.graphic-runtime-head>div:last-child{gap:5px}
.graphic-upload{padding:6px 9px}.graphic-editor-fields{margin:8px 0;gap:7px}.graphic-editor-grid{grid-template-columns:280px minmax(460px,1fr) 235px;gap:9px}.graphic-palette,.graphic-properties{padding:9px;border-radius:9px}

/* Empty states become quieter and shallower. */
.empty{padding:26px 14px!important;font-size:12px!important;color:var(--anson-text-muted)!important}

@media(max-width:1180px){
  .app-body{grid-template-columns:210px minmax(0,1fr)}
  .page-main{padding:12px 13px 22px}
  .content-heading p{max-width:48vw}
  .graphic-editor-grid{grid-template-columns:250px minmax(420px,1fr) 220px}
}
@media(max-width:900px){
  .app-body{display:block}.primary-sidebar{padding:8px}.primary-nav{gap:6px}
  .primary-sidebar .nav-item{min-height:34px}.page-main{padding:10px 11px 20px}
  .content-heading{padding:9px 11px;align-items:flex-start}.content-heading>div:first-child{display:block}.content-heading h2{font-size:18px}.content-heading p{max-width:none;margin-top:2px;white-space:normal}
  .page-actions{width:auto}.settings-grid{grid-template-columns:1fr}.source-layout{grid-template-columns:1fr}
}
@media(max-width:680px){
  button{min-height:31px}.page-breadcrumb{margin-bottom:5px}.content-heading{min-height:0;gap:8px}.content-heading{flex-direction:row;align-items:center}.page-actions{margin-left:auto}.page-actions button{padding:4px 8px}
  .graphic-toolbar{align-items:flex-start;gap:6px}.graphic-toolbar small{flex-basis:100%;margin-left:0}.graphic-card-grid,.trend-grid{grid-template-columns:1fr}
  .settings-group{padding:11px}button.settings-card{min-height:62px;padding:8px 9px}.settings-icon{width:34px;height:34px}
  .table-wrap td{padding:8px 10px!important}.table-wrap .name-column{min-width:170px}.modal{padding:14px}
}


/* V0.13.2-alpha.13 · Unified Workbar + Overlay Layer
   One compact row for page context + live actions; graphic/runtime dialogs always cover global chrome. */
.work-toolbar{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
  min-height:42px;
  margin:5px 0 10px;
  padding:6px 9px;
  background:#FFF;
  border:1px solid var(--anson-border);
  border-radius:var(--ji-radius-panel,10px);
  box-shadow:var(--ji-shadow-compact,0 1px 3px rgba(31,41,55,.035));
}
.work-toolbar-context{display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden}
.work-toolbar-label{flex:0 0 auto;color:var(--anson-text-muted);font-size:11px;font-weight:500;white-space:nowrap}
.work-toolbar-paths{display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden}
.work-toolbar-path-item{display:flex;align-items:center;min-width:0;max-width:100%;gap:4px}
.work-toolbar-path-text{display:block;min-width:0;max-width:min(46vw,620px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--anson-text-secondary);font-size:12px}
.work-toolbar-copy{flex:0 0 auto;min-height:25px!important;height:25px;padding:2px 6px!important;border-radius:6px!important;font-size:10px!important}
.work-toolbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-width:0;white-space:nowrap}
.work-toolbar-actions>button{min-height:29px;padding:4px 8px;font-size:11.5px}
.work-toolbar-refresh{display:flex;align-items:center;gap:5px;margin:0;color:var(--anson-text-secondary);font-size:11px;white-space:nowrap}
.work-toolbar-refresh>span{display:inline}
.work-toolbar-refresh select{width:auto;min-width:70px;height:29px;margin:0;padding:3px 22px 3px 7px;font-size:11.5px}
.work-toolbar-status{max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--anson-text-muted);font-size:10.5px}
.work-toolbar-status.refresh-warning{max-width:260px}

/* Reuse the same compact rhythm on other utility strips. */
.graphic-toolbar,.table-wrap>.batch-tools,.source-pickbar,.source-prefixes{
  border-radius:var(--ji-radius-panel,10px);
}
.graphic-toolbar{min-height:42px;margin:5px 0 10px;padding:6px 9px}
.table-wrap>.batch-tools{min-height:36px;padding:5px 9px}

/* Global overlay contract: all dialogs sit above the sticky global header (z=90). */
.modal-backdrop{z-index:220!important}
body:has(.modal-backdrop){overflow:hidden}
.modal-backdrop.graphic-layer{
  z-index:260!important;
  padding:10px;
  place-items:stretch;
  background:rgba(31,41,55,.48);
}
.modal-backdrop.graphic-layer .graphic-modal{
  width:calc(100vw - 20px)!important;
  max-width:none!important;
  height:calc(100vh - 20px);
  max-height:none!important;
  margin:0;
  padding:12px 16px;
  border-radius:11px;
  overflow:auto;
}
.modal-backdrop.graphic-layer .graphic-editor-head,
.modal-backdrop.graphic-layer .graphic-runtime-head{
  top:-12px;
  z-index:30;
  margin:0 -4px 8px;
  padding:9px 4px 8px;
  background:#FFF;
}
.modal-backdrop.graphic-layer .graphic-runtime-wrap{padding:4px 0 0}

@media(max-width:1180px){
  .work-toolbar{grid-template-columns:minmax(0,1fr) auto;gap:7px}
  .work-toolbar-path-text{max-width:34vw}
  .work-toolbar-status{max-width:130px}
}
@media(max-width:900px){
  .work-toolbar{grid-template-columns:1fr;gap:6px;align-items:start}
  .work-toolbar-context{width:100%}
  .work-toolbar-path-text{max-width:calc(100vw - 190px)}
  .work-toolbar-actions{justify-content:flex-start;flex-wrap:wrap;width:100%}
  .work-toolbar-status{max-width:none}
}
@media(max-width:680px){
  .work-toolbar{padding:6px 7px}
  .work-toolbar-label{display:none}
  .work-toolbar-paths{width:100%}
  .work-toolbar-path-text{max-width:calc(100vw - 115px)}
  .work-toolbar-refresh>span{display:none}
  .work-toolbar-status{flex-basis:100%}
  .modal-backdrop.graphic-layer{padding:4px}
  .modal-backdrop.graphic-layer .graphic-modal{width:calc(100vw - 8px)!important;height:calc(100vh - 8px);padding:9px;border-radius:8px}
}
/* JIUSHANG Trend Point Picker v1.0 — alpha.14
   Reuses the graphic point candidate model: scoped directory search + cursor paging. */
.trend-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:13px 0 6px}.trend-section-head h3{margin:0!important}.trend-section-head h3 span{color:var(--anson-primary);font-weight:600}.trend-section-head>small{color:var(--anson-text-muted);font-size:11.5px;text-align:right}
.trend-picker{border:1px solid var(--anson-border);border-radius:10px;background:var(--anson-bg-subtle);padding:10px;margin-bottom:8px}
.trend-scope-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-bottom:8px;border-bottom:1px solid var(--anson-border-light)}.trend-filter-label{font-size:12px;font-weight:600;color:var(--anson-text-secondary);margin-right:2px}.trend-scope-row>button{min-height:29px;padding:4px 9px}.trend-scope-row>button.active{color:var(--anson-primary);border-color:var(--anson-primary);background:var(--anson-bg-soft)}.trend-inline-check{display:inline-flex!important;align-items:center;gap:5px;margin:0 0 0 2px!important;color:var(--anson-text-secondary)}.trend-inline-check input{width:auto!important;margin:0}
.trend-filter-grid{display:grid;grid-template-columns:110px 110px minmax(145px,1fr) minmax(145px,1fr) minmax(260px,2fr) auto;gap:7px;align-items:end;padding-top:8px}.trend-filter-grid label{margin:0!important}.trend-filter-grid select,.trend-filter-grid input{margin-top:3px!important;width:100%}.trend-search-field{min-width:0}.trend-query{min-width:58px;margin-bottom:0}
.trend-candidate-pager{display:flex;align-items:center;gap:6px;margin:8px 0 6px;font-size:12px;color:var(--anson-text-secondary)}.trend-candidate-pager label{display:flex!important;align-items:center;gap:5px;margin:0!important}.trend-candidate-pager select{width:auto!important;margin:0!important;min-height:28px}.trend-candidate-pager button{min-height:28px;padding:3px 8px}.trend-candidate-pager .spacer{flex:1}.trend-candidate-pager.bottom{margin:7px 0 0;padding-top:7px;border-top:1px solid var(--anson-border-light)}
.trend-candidate-list{max-height:330px;overflow:auto;border:1px solid var(--anson-border-light);border-radius:9px;background:var(--anson-bg-card)}.trend-device-group+ .trend-device-group{border-top:1px solid var(--anson-border-light)}.trend-device-group>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;background:var(--anson-bg-subtle);position:sticky;top:0;z-index:1}.trend-device-group>header>div{min-width:0}.trend-device-group>header b,.trend-device-group>header small{display:block}.trend-device-group>header b{font-size:12.5px}.trend-device-group>header small{font-size:10.5px;color:var(--anson-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend-device-group>header>span{font-size:10.5px;color:var(--anson-text-muted);white-space:nowrap}
.trend-device-group>button{width:100%;display:grid;grid-template-columns:minmax(0,1fr) 52px 58px;align-items:center;gap:8px;text-align:left;border:0;border-top:1px solid var(--anson-border-light);border-radius:0;background:var(--anson-bg-card);padding:7px 9px;min-height:48px}.trend-device-group>button:hover:not(:disabled){background:var(--anson-bg-subtle)}.trend-device-group>button.active{background:var(--anson-bg-soft);box-shadow:inset 3px 0 0 var(--anson-primary)}.trend-candidate-main{min-width:0}.trend-candidate-main b,.trend-candidate-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend-candidate-main b{font-size:12.5px;color:var(--anson-text-primary)}.trend-candidate-main small{font-size:10.5px;color:var(--anson-text-muted);line-height:1.35}.trend-candidate-state{font-size:10.5px;text-align:center;padding:2px 5px;border-radius:999px;background:var(--anson-bg-soft);color:var(--anson-text-muted)}.trend-candidate-state.ok{background:var(--anson-success-bg);color:var(--anson-success)}.trend-candidate-state.bad{background:var(--anson-danger-bg);color:var(--anson-danger)}.trend-candidate-action{font-size:11px;color:var(--anson-primary);text-align:right;white-space:nowrap}
.modal:has(.trend-picker){width:min(1220px,96vw);max-width:1220px}.modal:has(.trend-picker) .trend-point-table{max-height:230px;margin-bottom:10px}
@media(max-width:1050px){.trend-filter-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.trend-search-field{grid-column:1/4}.trend-query{grid-column:4}}
@media(max-width:720px){.trend-section-head{display:block}.trend-section-head>small{display:block;text-align:left;margin-top:2px}.trend-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.trend-search-field{grid-column:1/2}.trend-query{grid-column:2}.trend-device-group>button{grid-template-columns:minmax(0,1fr) 48px}.trend-candidate-state{display:none}.trend-scope-row>button{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
/* JIUSHANG Device Applications Foundation v1.0 — alpha.15 */
.device-name-link{display:inline-flex!important;flex-direction:column;align-items:flex-start!important;gap:1px!important;min-height:0!important;padding:0!important;border:0!important;background:transparent!important;color:var(--anson-text-primary)!important;text-align:left!important;box-shadow:none!important}.device-name-link:hover:not(:disabled) b{color:var(--anson-primary)}.device-name-link small{font-size:10.5px;color:var(--anson-text-muted);font-weight:400}
.application-modal{width:min(920px,94vw)!important;max-width:920px!important}.application-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding-bottom:9px;border-bottom:1px solid var(--anson-border-light)}.application-head small{display:block;color:var(--anson-text-muted);font-size:11px;margin-bottom:2px}.application-head h2{margin:0!important;font-size:19px!important}.application-head p{margin:3px 0 0;color:var(--anson-text-secondary);font-size:11.5px}.mono{font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}.application-count{flex:0 0 auto;padding:4px 9px;border-radius:999px;background:var(--anson-bg-soft);color:var(--anson-primary);font-size:11px;font-weight:600}.application-principle{margin:8px 0 10px!important;padding:7px 9px;border-radius:8px;background:var(--anson-bg-subtle);color:var(--anson-text-secondary);font-size:11.5px;line-height:1.45}.application-principle b{color:var(--anson-primary)}
.application-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin:10px 0 6px}.application-section-head.available{margin-top:15px;padding-top:11px;border-top:1px solid var(--anson-border-light)}.application-section-head h3{margin:0!important;font-size:13px!important}.application-section-head small{display:block;margin-top:2px;color:var(--anson-text-muted);font-size:10.5px}
.application-grid{display:grid;grid-template-columns:1fr;gap:6px}.application-card{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px;padding:8px 9px;border:1px solid var(--anson-border);border-radius:9px;background:#FFF}.application-card.linked{border-color:#C9D8F7;background:#FBFDFF}.application-grid.compact .application-card{padding:7px 9px}.application-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--anson-primary);color:#FFF;font-size:12px;font-weight:700;overflow:hidden}.application-mark.soft{background:var(--anson-bg-soft);color:var(--anson-primary);border:1px solid #D7E4FA}.application-card-copy{min-width:0}.application-card-copy>div{display:flex;align-items:center;gap:7px;min-width:0}.application-card-copy b{font-size:12.5px;color:var(--anson-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.application-card-copy code{padding:1px 5px;border-radius:5px;background:var(--anson-bg-subtle);color:var(--anson-text-muted);font-size:10px}.application-card-copy p{margin:2px 0!important;color:var(--anson-text-secondary);font-size:11px;line-height:1.35}.application-card-copy small{color:var(--anson-text-muted);font-size:10.5px}.application-card-actions{display:flex;align-items:center;gap:5px;justify-content:flex-end}.application-card-actions button{min-height:27px!important;height:27px;padding:3px 7px!important;font-size:10.5px!important}.application-state{padding:2px 6px;border-radius:999px;background:var(--anson-bg-soft);color:var(--anson-primary);font-size:10px;white-space:nowrap}.application-state.muted{background:#F2F4F7;color:var(--anson-text-muted)}button.danger.subtle{background:#FFF!important;border-color:#F2CACA!important;color:var(--anson-danger)!important}.application-empty{padding:12px!important;margin:0!important}
.application-create{margin-top:9px;border:1px dashed #C9D8F7;border-radius:9px;background:#FBFDFF}.application-create>summary{padding:8px 10px;cursor:pointer;color:var(--anson-primary);font-size:11.5px;font-weight:600}.application-create[open]>summary{border-bottom:1px solid var(--anson-border-light)}.application-create-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;padding:9px 10px 3px}.application-create-grid label{margin:0!important;font-size:10.5px;color:var(--anson-text-secondary)}.application-create-grid input,.application-create-grid textarea{margin-top:3px!important}.application-create-grid .application-description{grid-column:1/-1}.application-create>.modal-actions{padding:5px 10px 0}.application-create>.hint{padding:0 10px 8px;margin:4px 0 0!important}
@media(max-width:720px){.application-modal{width:96vw!important}.application-card{grid-template-columns:32px minmax(0,1fr)}.application-card-actions{grid-column:2;justify-content:flex-start}.application-create-grid{grid-template-columns:1fr}.application-create-grid .application-description{grid-column:auto}.application-head{display:block}.application-count{display:inline-block;margin-top:6px}}
/* JIUSHANG Application-aware Point Binding v1.0 — alpha.16 */
.application-binding-strip{display:grid;grid-template-columns:minmax(180px,260px) minmax(180px,260px) auto minmax(220px,1fr);align-items:end;gap:8px;padding:8px 10px;margin:7px 0;border:1px solid var(--anson-border);border-radius:9px;background:#FBFDFF}.application-binding-strip label{margin:0!important;font-size:10.5px;color:var(--anson-text-secondary)}.application-binding-strip input,.application-binding-strip select{margin-top:3px!important;height:30px!important;min-height:30px!important}.application-binding-strip button{height:30px!important;min-height:30px!important;padding:3px 9px!important;font-size:11px!important}.application-binding-strip>small{align-self:center;color:var(--anson-text-muted);font-size:10.5px;line-height:1.4}.batch-table td:last-child input{min-width:150px}.batch-preview small{margin-left:4px}
.application-binding-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,240px) minmax(180px,240px);gap:8px;align-items:end;padding:9px 10px;margin:7px 0 9px;border:1px solid #D7E4FA;border-radius:9px;background:#FBFDFF}.application-binding-panel>div:first-child{align-self:center}.application-binding-panel>div:first-child b{display:block;color:var(--anson-text-primary);font-size:12px}.application-binding-panel>div:first-child small{display:block;margin-top:2px;color:var(--anson-text-muted);font-size:10.5px;line-height:1.4}.application-binding-panel label{margin:0!important;color:var(--anson-text-secondary);font-size:10.5px}.application-binding-panel input,.application-binding-panel select{margin-top:3px!important;height:32px!important;min-height:32px!important}.application-role-chips{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:5px;padding-top:2px}.application-role-chips span{display:inline-flex;align-items:center;gap:4px;min-height:26px;padding:2px 5px 2px 8px;border:1px solid #D7E4FA;border-radius:999px;background:var(--anson-bg-soft);color:var(--anson-text-secondary);font-size:10.5px}.application-role-chips span b{color:var(--anson-primary);font-size:10.5px}.application-role-chips button{display:grid;place-items:center;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;padding:0!important;border:0!important;border-radius:50%!important;background:transparent!important;color:var(--anson-text-muted)!important;box-shadow:none!important}.application-role-chips button:hover{background:#FFF!important;color:var(--anson-danger)!important}
@media(max-width:1080px){.application-binding-strip{grid-template-columns:1fr 1fr auto}.application-binding-strip>small{grid-column:1/-1}.application-binding-panel{grid-template-columns:1fr 1fr}.application-binding-panel>div:first-child{grid-column:1/-1}}@media(max-width:720px){.application-binding-strip,.application-binding-panel{grid-template-columns:1fr}.application-binding-strip>small,.application-binding-panel>div:first-child,.application-role-chips{grid-column:auto}}
/* JIUSHANG Application Suggestions v1.0 — alpha.17
   Advisory only: point semantics may suggest Application / Role, never persist automatically. */
.application-suggestion-box{grid-column:1/-1;border-top:1px solid var(--anson-border-light);padding-top:7px;margin-top:1px}.application-suggestion-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:5px}.application-suggestion-head>b{font-size:11.5px;color:var(--anson-text-primary)}.application-suggestion-head>small{font-size:10px;color:var(--anson-text-muted);padding:2px 6px;border-radius:999px;background:#F2F4F7}
.application-suggestion-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.application-suggestion-list>button{display:grid!important;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"app role" "reason reason";align-items:center;gap:2px 8px;min-height:48px!important;padding:6px 8px!important;text-align:left!important;background:#FFF!important;border-color:#D7E4FA!important}.application-suggestion-list>button:hover:not(:disabled){background:var(--anson-bg-soft)!important;border-color:#B8CCF3!important}.application-suggestion-list>button>span{grid-area:app;min-width:0;display:flex;align-items:center;gap:5px}.application-suggestion-list>button>span b{font-size:11.5px;color:var(--anson-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.application-suggestion-list>button code{font-size:9.5px;padding:1px 4px;border-radius:4px;background:var(--anson-bg-subtle);color:var(--anson-text-muted)}.application-suggestion-list>button strong{grid-area:role;font-size:10.5px;font-weight:600;color:var(--anson-text-primary);white-space:nowrap}.application-suggestion-list>button>small{grid-area:reason;font-size:9.8px;color:var(--anson-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.batch-suggestion-panel{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 9px;margin:-2px 0 7px;border:1px solid #D7E4FA;border-radius:8px;background:#FBFDFF}.batch-suggestion-panel>div{min-width:0}.batch-suggestion-panel b,.batch-suggestion-panel small{display:block}.batch-suggestion-panel b{font-size:11.5px;color:var(--anson-text-primary)}.batch-suggestion-panel small{font-size:10.5px;color:var(--anson-text-muted);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batch-suggestion-panel button{flex:0 0 auto;min-height:28px!important;height:28px!important;padding:3px 8px!important;font-size:10.5px!important}
@media(max-width:720px){.application-suggestion-list{grid-template-columns:1fr}.batch-suggestion-panel{align-items:flex-start;flex-direction:column}.batch-suggestion-panel small{white-space:normal}.application-suggestion-box{grid-column:auto}}

/* JIUSHANG Application Onboarding v1.0 — alpha.18
   Binding dialogs can create/select Applications in place. Suggestions stay advisory. */
.application-binding-strip{grid-template-columns:minmax(190px,260px) minmax(180px,230px) auto auto auto;align-items:end}
.application-binding-strip>small{grid-column:1/-1;align-self:auto;padding-top:1px}
.application-quick-create-trigger{white-space:nowrap;color:var(--anson-primary)!important;border-color:#C9D8F7!important;background:#FFF!important}
.application-quick-create-trigger:hover:not(:disabled){background:var(--anson-bg-soft)!important;border-color:#B8CCF3!important}
.application-inline-create{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(180px,1fr) minmax(220px,1.5fr) auto;align-items:end;gap:7px;padding:8px 10px;margin:-2px 0 7px;border:1px dashed #B8CCF3;border-radius:9px;background:#F8FBFF}
.application-inline-create>div{grid-column:1/-1;display:flex;align-items:baseline;gap:8px}.application-inline-create>div b{font-size:11.5px;color:var(--anson-text-primary)}.application-inline-create>div small{font-size:10.5px;color:var(--anson-text-muted)}
.application-inline-create label{margin:0!important;font-size:10.5px;color:var(--anson-text-secondary)}.application-inline-create input{height:30px!important;min-height:30px!important;margin-top:3px!important}.application-inline-create button{height:30px!important;min-height:30px!important;padding:3px 10px!important;font-size:11px!important}
.application-onboarding-empty{display:flex;align-items:center;gap:8px;padding:7px 10px;margin:-2px 0 7px;border:1px solid #E4EAF3;border-radius:8px;background:#F8FAFC;color:var(--anson-text-secondary);font-size:10.5px}.application-onboarding-empty b{flex:0 0 auto;color:var(--anson-text-primary);font-size:11px}.application-onboarding-empty span{min-width:0}
.application-binding-panel{grid-template-columns:minmax(0,1fr) minmax(180px,240px) minmax(180px,240px) auto}
.application-binding-panel>.application-inline-create.single,.application-binding-panel>.application-onboarding-empty.single,.application-binding-panel>.application-role-chips,.application-binding-panel>.application-suggestion-box{grid-column:1/-1}
.application-binding-panel>.application-inline-create.single{margin:0;padding:8px}.application-binding-panel>.application-onboarding-empty.single{margin:0}
@media(max-width:1100px){.application-binding-strip{grid-template-columns:1fr 1fr auto auto}.application-binding-strip>small{grid-column:1/-1}.application-inline-create{grid-template-columns:1fr 1fr auto}.application-inline-create .application-inline-description{grid-column:1/3}.application-binding-panel{grid-template-columns:1fr 1fr auto}.application-binding-panel>div:first-child{grid-column:1/-1}}
@media(max-width:720px){.application-binding-strip,.application-binding-panel,.application-inline-create{grid-template-columns:1fr}.application-binding-strip>small,.application-inline-create>div,.application-inline-create .application-inline-description,.application-binding-panel>div:first-child,.application-binding-panel>.application-inline-create.single,.application-binding-panel>.application-onboarding-empty.single,.application-binding-panel>.application-role-chips,.application-binding-panel>.application-suggestion-box{grid-column:auto}.application-onboarding-empty{align-items:flex-start;flex-direction:column}}
/* JIUSHANG Site Lifecycle v1.0 — alpha.19
   Compact site management, recoverable archive, no duplicate current-site label. */
.site-manager-head,.site-archive-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.site-manager-head h2,.site-archive-head h2{margin:2px 0 3px}.site-manager-head p,.site-archive-head p{margin:0;color:var(--anson-text-secondary);font-size:12px}.site-manager-head>div>small,.site-archive-head>small{color:var(--anson-primary);font-weight:600}.site-manager-list{display:grid;gap:7px;max-height:min(56vh,520px);overflow:auto;padding-right:2px}.site-manager-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;border:1px solid var(--anson-border);border-radius:10px;background:#fff}.site-manager-row.current{border-color:#C9DBF8;background:#F8FBFF}.site-manager-row.archived{background:#F8FAFC;opacity:.86}.site-manager-main{display:flex;align-items:center;gap:9px;min-width:0}.site-manager-icon{display:grid;place-items:center;width:28px;height:28px;border-radius:8px;background:var(--anson-soft-bg);color:var(--anson-primary);font-size:15px;flex:0 0 auto}.site-manager-main>div{min-width:0;display:grid;gap:2px}.site-manager-name{display:flex;align-items:center;gap:7px;min-width:0}.site-manager-name b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-manager-main small{color:var(--anson-text-muted);font-size:10.5px}.site-state{display:inline-flex;align-items:center;min-height:20px;padding:1px 7px;border-radius:999px;font-size:10px;font-weight:600;white-space:nowrap}.site-state.current{background:#EAF3FF;color:#365AB5}.site-state.archived{background:#F2F4F7;color:#667085}.site-manager-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto}.site-manager-actions button{min-height:29px}.site-resource-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:12px 0}.site-resource-grid>div{display:grid;gap:2px;padding:9px;border:1px solid var(--anson-border);border-radius:9px;background:#F8FAFC}.site-resource-grid b{font-size:18px;color:var(--anson-text-primary)}.site-resource-grid span{font-size:10.5px;color:var(--anson-text-secondary)}.site-archive-warning{padding:8px 10px;border:1px solid #F5C2C2;border-radius:8px;background:#FFF7F7;color:#A33A3A;font-size:11.5px}.header-context{min-width:64px}.header-context>span:not(.live-dot):not(.loading){color:var(--anson-text-secondary);font-size:12px}
@media(max-width:720px){.site-manager-head{align-items:stretch;flex-direction:column}.site-manager-row{align-items:flex-start}.site-manager-actions{flex-direction:column}.site-resource-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.modal:has(.site-manager-head),.modal:has(.site-archive-head){width:min(760px,94vw);max-width:760px}

/* JIUSHANG Batch Binding Safe Layout v1.0 — alpha.21.1 */
.modal:has(.batch-workbench){width:min(1180px,calc(100vw - 40px));max-width:1180px;max-height:calc(100vh - 40px);overflow:auto}
.batch-workbench{min-width:0}
.batch-table-wrap{max-width:100%;overflow:auto}
.batch-preview{max-height:220px;overflow:auto}
@media (max-width:900px){.modal:has(.batch-workbench){width:calc(100vw - 20px);max-height:calc(100vh - 20px)}}
/* JIUSHANG Single Binding Layout Hotfix v1.0 — alpha.21.2
   Scope: only the single-point "配置数据链接" dialog that contains .application-binding-panel.
   Keep batch binding, control binding and generic dialogs unchanged. */
.modal:has(.application-binding-panel){
  width:min(820px,calc(100vw - 32px));
  max-width:820px;
  max-height:calc(100vh - 32px);
}
.modal:has(.application-binding-panel)>form>h2{
  margin-bottom:16px;
  line-height:1.3;
  overflow-wrap:anywhere;
}
.modal:has(.application-binding-panel) .binding-search{
  align-items:stretch;
}
.modal:has(.application-binding-panel) .binding-search input{
  min-width:0;
}
.modal:has(.application-binding-panel) .application-binding-panel{
  grid-template-columns:minmax(220px,1fr) minmax(220px,1fr) auto;
  gap:8px 10px;
  align-items:end;
}
.modal:has(.application-binding-panel) .application-binding-panel>div:first-child{
  grid-column:1/-1;
  min-width:0;
  align-self:start;
}
.modal:has(.application-binding-panel) .application-binding-panel>div:first-child small{
  max-width:none;
  white-space:normal;
  word-break:normal;
  overflow-wrap:break-word;
}
.modal:has(.application-binding-panel) .application-quick-create-trigger{
  grid-column:3;
  align-self:end;
  white-space:nowrap;
  min-height:32px;
}
.modal:has(.application-binding-panel) .application-binding-panel>.application-inline-create.single,
.modal:has(.application-binding-panel) .application-binding-panel>.application-onboarding-empty.single,
.modal:has(.application-binding-panel) .application-binding-panel>.application-role-chips,
.modal:has(.application-binding-panel) .application-binding-panel>.application-suggestion-box{
  grid-column:1/-1;
}
.modal:has(.application-binding-panel) .application-suggestion-list{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
@media(max-width:760px){
  .modal:has(.application-binding-panel){
    width:calc(100vw - 20px);
    max-height:calc(100vh - 20px);
  }
  .modal:has(.application-binding-panel) .application-binding-panel{
    grid-template-columns:1fr;
  }
  .modal:has(.application-binding-panel) .application-binding-panel>div:first-child,
  .modal:has(.application-binding-panel) .application-quick-create-trigger,
  .modal:has(.application-binding-panel) .application-binding-panel>.application-inline-create.single,
  .modal:has(.application-binding-panel) .application-binding-panel>.application-onboarding-empty.single,
  .modal:has(.application-binding-panel) .application-binding-panel>.application-role-chips,
  .modal:has(.application-binding-panel) .application-binding-panel>.application-suggestion-box{
    grid-column:auto;
  }
  .modal:has(.application-binding-panel) .application-suggestion-list{
    grid-template-columns:1fr;
  }
}
/* JIUSHANG navigation-v1 */
.nav-quick-open{display:flex;align-items:center;justify-content:space-between;width:calc(100% - 16px);margin:8px;height:32px;background:#edf5ff;color:#183b66;border:1px solid #c8d9ef;border-radius:5px;font-size:13px}.nav-quick-open kbd{font:11px system-ui;background:#fff;padding:1px 4px;border-radius:3px}.navigation-backdrop{position:fixed;inset:0;z-index:2000;background:rgba(15,35,62,.35);display:flex;align-items:flex-start;justify-content:center;padding:72px 16px 24px}.navigation-dialog{width:min(720px,100%);max-height:calc(100vh - 100px);overflow:auto;background:#f5f8fc;padding:16px;border:1px solid #c8d9ef;border-radius:8px;box-shadow:0 8px 30px rgba(24,59,102,.15)}.navigation-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.navigation-head h2{font-size:17px;margin:0 0 10px}.navigation-search{display:flex;gap:6px;align-items:center}.navigation-search input{flex:1;min-width:100px}.navigation-search select{width:80px}.navigation-dialog input,.navigation-dialog select,.navigation-dialog button{min-height:32px;font-size:13px}.navigation-hint{font-size:12px;color:#5b708b;margin:8px 0}.navigation-results{max-height:52vh;overflow:auto}.navigation-result{display:flex;gap:4px;background:#fff;border:1px solid #e0e8f3;margin:4px 0;border-radius:5px}.navigation-result.active{border-color:#446ccf;background:#edf5ff}.navigation-result-open{flex:1;min-width:0;text-align:left;background:transparent;border:0;padding:7px 9px;white-space:normal;line-height:1.4}.navigation-result-open span{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.navigation-result-open small{font-size:11px;color:#5b708b}.navigation-path{display:block;overflow-wrap:anywhere}.navigation-star{width:34px;background:transparent;border:0;color:#446ccf;font-size:21px!important}.navigation-point-focus td{background:#edf5ff}.navigation-dialog button:focus-visible,.navigation-dialog input:focus-visible,.navigation-dialog select:focus-visible{outline:2px solid #446ccf;outline-offset:1px}@media(max-width:520px){.navigation-backdrop{padding:50px 8px 8px}.navigation-dialog{padding:10px}.navigation-search{flex-wrap:wrap}.navigation-search input{flex-basis:100%}.navigation-results{max-height:48vh}}


.application-role-panel{margin:10px 0;padding:10px;background:#f5f8fc;border:1px solid #d7e3f3;border-radius:5px}.application-role-panel table{width:100%;font-size:13px}.application-role-panel td small{display:block;color:#61758e;font-size:11px}.application-role-panel button{min-height:28px;font-size:12px}.application-card-actions{flex-wrap:wrap}


.alarm-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-bottom:12px}.alarm-filters label{margin:0;min-width:130px}.alarm-filters .alarm-search{flex:1;min-width:200px}.alarm-filters button{margin-bottom:2px}.revision-row small{display:block;color:#64748b;font-size:12px;margin-top:4px}

.alarm-rule-tools{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:12px 0}.alarm-rule-tools label{margin:0}.alarm-inline-editor{background:#f5f8fc;border:1px solid #dae5f4;border-radius:8px;padding:14px;margin-bottom:12px}.alarm-inline-editor label{display:inline-flex;flex-direction:column;margin:6px 12px 6px 0;min-width:160px}.alarm-rules .revision-row{flex-wrap:wrap;gap:6px}

/* alpha32 graphic controls and authenticated thumbnails */
.graphic-card-preview{cursor:pointer;position:relative}.graphic-card-preview img{width:100%;height:100%;object-fit:contain}.graphic-card-preview> b{position:absolute;top:8px;right:8px}
.graphic-control-panel,.alarm-notification-panel{padding:16px;border:1px solid #d8e3ee;border-radius:12px;background:#f5f9ff;margin:12px 0}.graphic-control-panel{width:340px;max-width:100%;margin-left:auto}.graphic-control-panel label{display:block}.graphic-control-panel article,.alarm-notification-panel article{display:flex;flex-direction:column;gap:4px;padding:10px 0;border-bottom:1px solid #d8e3ee}.graphic-control-panel button{margin:8px 6px 0 0}

.graphic-runtime-body{display:flex;align-items:flex-start;gap:16px}.graphic-runtime-body>.graphic-runtime-wrap{flex:1;min-width:0}.graphic-runtime-body>.graphic-control-panel{flex:0 0 300px;margin-top:0}@media(max-width:850px){.graphic-runtime-body{display:block}.graphic-runtime-body>.graphic-control-panel{width:auto}}

/* alpha33 central rule management */
.alarm-tabs,.alarm-rule-heading,.alarm-rule-search{display:flex;align-items:center;gap:8px;margin:10px 0}.alarm-rule-heading{justify-content:space-between}.alarm-rule-search input{flex:1;min-width:100px}.alarm-point-picker{max-height:360px;overflow:auto}.alarm-candidate-group{display:flex;flex-direction:column;gap:5px;padding:8px}.alarm-candidate-group button{height:auto;min-height:38px;display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:6px 10px}.alarm-candidate-group small{white-space:normal;overflow-wrap:anywhere}.alarm-editor-host{border-left:3px solid #446ccf;padding:12px;background:#edf5ff}.alarm-create-notification{grid-column:1/-1}

.alarm-rule-workspace.editing{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:12px;align-items:start}.alarm-rule-list{grid-column:1;grid-row:1;min-width:0}.alarm-editor-host{grid-column:2;grid-row:1;min-width:0}.alarm-editor-host .alarm-rule-editor{display:flex;flex-direction:column}.alarm-rule-list .revision-row{flex-wrap:wrap}.alarm-rule-list .revision-row>span{flex:1 1 160px}@media(max-width:850px){.alarm-rule-workspace.editing{display:flex;flex-direction:column}.alarm-editor-host,.alarm-rule-list{width:100%}}

.modal.alarm-center-modal{width:min(1120px,96vw);max-width:1120px}

/* alpha34 page and graphic cards */
.alarm-center-page{background:white;border:1px solid #dbe5ef;border-radius:12px;padding:14px}.graphic-control{height:100%;display:flex;flex-direction:column;justify-content:center;gap:2px}.graphic-control-quality{font-size:10px;color:#63758e}.graphic-control-action{font-size:11px;color:#365ab5}.graphic-control-labels textarea{width:100%}
.graphic-card{position:relative;min-height:200px;overflow:visible;background:#edf5ff;border:1px solid #d9e4f0;border-radius:12px;box-shadow:0 2px 6px #183b6608}.graphic-card-preview{position:absolute;inset:0;height:100%!important;border-radius:12px;overflow:hidden;background:linear-gradient(130deg,#edf5ff,#dceafa)}.graphic-card-preview img{width:100%;height:100%;object-fit:cover;opacity:.75}.graphic-card-preview:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#ffffffa6,#ffffffe6);pointer-events:none}.graphic-card-body{position:relative;z-index:1;pointer-events:none;padding:16px;min-height:200px;display:flex;flex-direction:column}.graphic-card-body h3{margin:0 0 5px;color:#183b66}.graphic-card-body>p{max-height:2.8em;overflow:hidden;line-height:1.4;margin:0 0 6px}.graphic-card-body small{color:#536984;overflow-wrap:anywhere}.graphic-card-meta{margin-top:auto;padding-top:8px}.graphic-card-actions{pointer-events:auto;position:relative;margin-top:10px}.graphic-card-image-status{position:absolute;right:10px;top:8px;font-size:10px;z-index:1;color:#64748b}.graphic-card-menu{position:relative;margin-left:auto}.graphic-card-menu summary{cursor:pointer;font-size:20px;padding:0 10px;list-style:none}.graphic-card-menu>div{position:absolute;right:0;bottom:30px;min-width:130px;background:white;border:1px solid #d8e3ef;border-radius:8px;padding:6px;box-shadow:0 4px 12px #183b6620;z-index:4;display:flex;flex-direction:column;gap:4px}.graphic-card:hover{border-color:#9fb8e6}.graphic-card:hover .graphic-card-preview:after{background:linear-gradient(180deg,#ffffff99,#ffffffdf)}

/* alpha36 operations guidance uses the existing settings surface. */
.ops-guide{margin-top:12px;padding:12px;border:1px solid #dce6f5;border-radius:8px;background:#f8fbff}.ops-guide>div{display:flex;align-items:center;gap:10px;margin:6px 0;flex-wrap:wrap}.ops-guide>div>span{width:112px}.ops-guide code{flex:1;min-width:220px;overflow-wrap:anywhere}.ops-guide p{line-height:1.6}

/* Shared third-party profile workspace, same main navigation as alarms. */
.gateway-profile-workspace{max-width:1120px;padding:14px;border:1px solid #dce6f5;border-radius:8px;background:#fff}.gateway-profile-workspace label{display:block;margin:8px 0}.gateway-profile-workspace textarea{width:100%;font-family:ui-monospace,monospace}.gateway-profile-workspace input:not([type=checkbox]),.gateway-profile-workspace select{max-width:100%;width:100%}.profile-control-section{margin:14px 0;padding:10px;border:1px solid #dce6f5;border-radius:6px}.profile-control-section summary{cursor:pointer;font-weight:600}.gateway-profile-workspace .tool-tabs{margin:8px 0}

/* Shared system operations surface, read-only and compact. */
.system-status-tools{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}.system-status-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.system-status-grid article{padding:12px;border:1px solid #dce6f5;border-radius:8px;background:#fff}.system-status-grid small{display:block;color:#53677e;margin-bottom:6px}.system-status-grid b{font-size:20px;color:#183b66}.system-status-grid p{margin:7px 0;line-height:1.5}.system-status-page>.hint{line-height:1.5}

.history-budget-panel{margin-top:16px;padding:12px;background:#fff;border:1px solid #dce6f4;border-radius:8px}.history-budget-panel h3{margin:0 0 8px}.history-budget-panel label{display:flex;flex-direction:column;gap:4px;font-size:12px}.history-budget-panel input{width:145px}.history-budget-panel .system-status-tools{align-items:flex-end;flex-wrap:wrap}

.history-management-page .system-status-tools{align-items:flex-end;flex-wrap:wrap}.history-management-page .system-status-tools label{display:flex;flex-direction:column;gap:4px;font-size:12px}.history-management-page input[type=number]{width:150px}
/* alpha42: common control target editor, no per-widget polling */
.graphic-target-buttons,.graphic-number-input{display:flex;gap:6px;align-items:center}.graphic-target-buttons>button{flex:1}.graphic-number-input>input{min-width:0;width:100%}.graphic-number-input>button{flex:0 0 32px;padding:0;height:32px}.graphic-control-panel>select{width:100%;height:32px}.graphic-fixed-target{padding:8px;background:#edf5ff;border-radius:6px;overflow-wrap:anywhere}.graphic-control-panel label{margin:10px 0 6px}.graphic-properties button{max-width:100%}
/* alpha43: reuse editor workspace for compact draft geometry tools */
.graphic-layout-tools{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:7px 0 9px}.graphic-layout-tools>span{font-size:12px;color:#566b87;margin-right:3px}.graphic-layout-tools button{height:28px;padding:3px 8px;font-size:12px}.graphic-align-tools{display:flex;flex-wrap:wrap;gap:5px;flex-basis:100%}.graphic-canvas:focus-visible{outline:2px solid #446ccf;outline-offset:2px}.graphic-element.selected{outline-color:#446ccf;background:rgba(237,245,255,.95)}
/* alpha44: inline card monitor/control, reuses thumbnail and command pipeline */
.graphic-card-config{border:1px solid #dbe5ef;border-radius:8px;padding:10px;margin:8px 0 12px;background:#f5f8fc}.graphic-card-config summary{cursor:pointer;font-weight:600}.graphic-card-slot-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:10px}.graphic-card-slot-grid section{padding:8px;background:#fff;border:1px solid #dbe5ef;border-radius:6px}.graphic-card-slot-grid small{display:block;overflow-wrap:anywhere;margin:5px 0}.graphic-card-slot-grid button{padding:4px 8px;margin:2px 4px 2px 0}.graphic-card-slot-grid input{width:100%;height:28px}.graphic-card-picking{padding:8px;background:#edf5ff}.graphic-card-live{pointer-events:auto;margin:10px 0;padding:9px;border-radius:8px;background:rgba(255,255,255,.88);border:1px solid rgba(68,108,207,.15)}.graphic-card-reading{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;margin:5px 0}.graphic-card-reading span{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.graphic-card-reading b{font-size:14px;overflow-wrap:anywhere}.graphic-card-reading small{grid-column:1/-1;font-size:10px;color:#63758e}.graphic-card-reading.main-status b{color:#365ab5}.graphic-card-reading.reading-unknown b{color:#687687}.graphic-card-quick{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.graphic-card-quick button{flex:1;height:30px}.graphic-card-quick small{flex-basis:100%;color:#687687}.graphic-card-confirm{margin-top:8px;padding-top:8px;border-top:1px solid #dbe5ef}.graphic-card-confirm p{min-height:0;margin:5px 0;font-size:12px}.graphic-card-confirm label{display:block;font-size:12px}.graphic-card-confirm input,.graphic-card-confirm select{width:100%;height:30px}.graphic-card-confirm small{display:block;font-size:11px;color:#63758e;margin:4px 0}.graphic-card-confirm button{height:30px;margin:3px 5px 0 0}.graphic-card-confirm details p{font-size:11px;overflow-wrap:anywhere}@media(max-width:1000px){.graphic-card-slot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* alpha46: four card references share one compact two-column layout. */
.graphic-card-points{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;align-items:start}
.graphic-card-points>.hint{grid-column:1/-1;margin:0}
.graphic-card-reading{display:flex;flex-direction:column;gap:3px;margin:0;min-width:0}
.graphic-card-quick{margin:0;gap:4px;align-content:start;min-width:0}
.graphic-card-reading .graphic-card-point-name,.graphic-card-quick .graphic-card-point-name{display:block;min-width:0;max-width:100%;font-size:12px;font-weight:500;line-height:1.4;color:#183b66;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0}
.graphic-card-quick .graphic-card-point-name{flex-basis:100%}
.graphic-card-quick button{min-width:0;padding:3px 6px;margin:0}
.graphic-card-reading small,.graphic-card-quick small:not(.graphic-card-point-name){font-size:10px;line-height:1.4;color:#63758e}

/* alpha49: one set of card bindings and controls, two presentations. */
.graphic-display-switch{display:flex;gap:3px;margin-left:auto;padding:2px;border:1px solid #dbe5ef;border-radius:7px;background:#f5f8fc}
.graphic-display-switch button{height:28px;min-width:54px;padding:3px 10px;margin:0;border-color:transparent}
.graphic-list-wrap{overflow:auto;border:1px solid #dbe5ef;border-radius:9px;background:#fff}
.graphic-list{width:100%;min-width:900px;border-collapse:collapse;font-size:13px}
.graphic-list th{text-align:left;padding:9px 10px;background:#edf5ff;color:#183b66;font-weight:600;white-space:nowrap}
.graphic-list td{padding:10px;vertical-align:top;border-top:1px solid #e6edf5}
.graphic-list-name{width:22%;max-width:260px}.graphic-list-name>small{display:block;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#63758e;font-size:11px;margin-top:4px}
.graphic-list-title{border:0;background:transparent;padding:0;margin:0;color:#183b66;font-size:14px;font-weight:600;text-align:left;overflow-wrap:anywhere}
.graphic-list .graphic-card-reading{min-width:110px}.graphic-list .graphic-card-point-name{font-size:12px;font-weight:500;color:#183b66}
.graphic-list .graphic-card-quick{min-width:148px;max-width:220px}.graphic-list-actions{min-width:120px}.graphic-list .graphic-card-actions{padding:0;margin:0;display:flex;gap:6px;background:transparent}
.graphic-list .graphic-card-actions button{height:30px;white-space:nowrap}.graphic-list .graphic-card-menu{position:relative}.graphic-list .graphic-card-menu>div{position:static;min-width:130px;margin-top:4px;box-shadow:none}
.graphic-list-confirm>td{background:#f5f8fc;padding:0 12px 10px}.graphic-list-confirm .graphic-card-confirm{max-width:640px;margin:0;padding:10px 0 0;border:0}.graphic-list-confirm .graphic-card-confirm input,.graphic-list-confirm .graphic-card-confirm select{max-width:320px}
@media(max-width:650px){.graphic-display-switch{margin-left:0}.graphic-list-wrap{max-width:100%}}

.graphic-editor-head>div:last-child{flex-wrap:wrap}.graphic-upload-result{flex:1 1 100%;font-size:12px;line-height:1.5;color:#183b66;background:#edf5ff;border-radius:5px;padding:4px 7px;overflow-wrap:anywhere}.graphic-upload-result.graphic-upload-error{color:#a4262c;background:#fff1f0}

.freshness-diagnostic{border:1px solid #cfddf0;border-radius:8px;background:#f5f8fc;padding:12px;margin:12px 0}
.freshness-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.freshness-heading h3{margin:0;color:#183b66}
.freshness-diagnostic dl{display:grid;grid-template-columns:minmax(130px,1fr) minmax(0,2fr);gap:7px 12px;font-size:13px}
.freshness-diagnostic dt{color:#53667d}.freshness-diagnostic dd{margin:0;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
@media(max-width:480px){.freshness-diagnostic dl{grid-template-columns:1fr}.freshness-diagnostic dd{margin-bottom:4px}}
