:root{
    --bg:#161310; --bg-panel:#1d1a15; --bg-panel-2:#242019; --bg-inset:#12100d;
    --line:#3a3226; --line-soft:#2a251d;
    --bone:#e7ded0; --bone-dim:#a99d87; --bone-faint:#736a5a;
    --rust:#b5451f; --rust-bright:#d65a30; --verdigris:#5c8a76; --amber:#caa03a; --danger:#c1442f;
    --font-display:'Cinzel',serif; --font-body:'Inter',system-ui,sans-serif; --font-mono:'JetBrains Mono',ui-monospace,monospace;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;min-height:100%;background:var(--bg);color:var(--bone);font-family:var(--font-body);}
  .app{background:var(--bg);
    background-image:radial-gradient(ellipse at 15% 0%, rgba(181,69,31,0.08), transparent 45%),radial-gradient(ellipse at 90% 100%, rgba(92,138,118,0.05), transparent 50%);
    min-height:100vh;padding:28px;display:flex;flex-direction:column;gap:20px;flex:1;}
  .masthead{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:10px;border-bottom:1px solid var(--line);padding-bottom:16px;}
  .masthead h1{font-family:var(--font-display);font-size:22px;letter-spacing:0.06em;margin:0;color:var(--bone);text-transform:uppercase;}
  .masthead h1 span{color:var(--rust-bright);}
  .masthead .sub{font-size:12.5px;color:var(--bone-dim);font-family:var(--font-mono);}
  .type-tabs{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
  .type-tab{font-family:var(--font-mono);font-size:12px;padding:7px 14px;border:1px solid var(--line);background:var(--bg-panel);color:var(--bone-dim);cursor:pointer;border-radius:3px;letter-spacing:0.03em;transition:all .12s ease;}
  .type-tab:hover{border-color:var(--bone-faint);color:var(--bone);}
  .type-tab.active{background:var(--rust);border-color:var(--rust-bright);color:#fff2ea;}
  .type-tab.add{color:var(--verdigris);border-style:dashed;}
  .mode-tabs{display:flex;gap:6px;margin-bottom:2px;}
  .mode-tab{font-family:var(--font-mono);font-size:11.5px;padding:6px 12px;border:1px solid var(--line-soft);background:transparent;color:var(--bone-faint);cursor:pointer;border-radius:3px 3px 0 0;border-bottom:none;}
  .mode-tab.active{color:var(--amber);background:var(--bg-panel);border-color:var(--line);}
  .layout{display:grid;grid-template-columns:340px 1fr;gap:20px;align-items:start;}
  @media (max-width:900px){.layout{grid-template-columns:1fr;}}
  .panel{background:var(--bg-panel);border:1px solid var(--line);border-radius:5px;overflow:visible;}
  .panel-head{padding:12px 16px;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;justify-content:space-between;gap:8px;}
  .panel-head h2{font-family:var(--font-display);font-size:13px;letter-spacing:0.08em;text-transform:uppercase;margin:0;color:var(--bone-dim);}
  .panel-body{padding:14px 16px;display:flex;flex-direction:column;gap:12px;}
  .hint{font-size:11.5px;color:var(--bone-faint);line-height:1.5;}
  .btn{font-family:var(--font-body);font-size:12.5px;font-weight:600;padding:9px 14px;border-radius:3px;border:1px solid var(--line);background:var(--bg-panel-2);color:var(--bone);cursor:pointer;transition:all .12s ease;}
  .btn:hover{border-color:var(--bone-faint);}
  .btn.primary{background:var(--rust);border-color:var(--rust-bright);color:#fff2ea;}
  .btn.primary:hover{background:var(--rust-bright);}
  .btn.ghost{background:transparent;}
  .btn.small{padding:5px 10px;font-size:11px;}
  .btn.danger-outline{color:var(--danger);border-color:#5a2e26;}
  .btn.danger-outline:hover{background:rgba(193,68,47,0.1);}
  .btn:disabled{opacity:0.4;cursor:not-allowed;}
  input[type=file]{display:none;}
  .file-drop{border:1.5px dashed var(--line);border-radius:4px;padding:16px;text-align:center;font-size:12px;color:var(--bone-dim);cursor:pointer;transition:all .12s ease;display:block;}
  .file-drop:hover{border-color:var(--verdigris);color:var(--bone);}
  .file-drop.drag-over{border-color:var(--verdigris);color:var(--bone);background:rgba(92,138,118,0.12);box-shadow:inset 0 0 0 1px rgba(92,138,118,0.35);}
  .sheets-import-block{display:flex;flex-direction:column;gap:6px;margin-bottom:4px;}
  .sheets-tabs{margin-top:4px;padding:8px 10px;border:1px solid var(--line-soft);border-radius:4px;background:var(--bg-inset);}
  .sheets-tab-type-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:3px;font-size:10px;background:var(--line-soft);color:var(--bone-faint);}
  #sources-list{display:flex;flex-direction:column;gap:8px;margin-top:10px;}
  .sources-summary{font-size:11px;font-family:var(--font-mono);color:var(--bone-dim);letter-spacing:0.02em;}
  .sources-scroll{
    max-height:168px; /* ~5.5 rows */
    overflow-x:hidden;overflow-y:auto;
    background:var(--bg-inset);
    border:1px solid var(--line-soft);
    border-radius:4px;
    scrollbar-width:thin;
    scrollbar-color:var(--line) transparent;
  }
  .sources-scroll::-webkit-scrollbar{width:6px;}
  .sources-scroll::-webkit-scrollbar-track{background:transparent;}
  .sources-scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px;}
  .sources-scroll::-webkit-scrollbar-thumb:hover{background:var(--bone-faint);}
  .table-source{
    display:grid;
    grid-template-columns:minmax(0,1fr) 4.5rem 1.75rem;
    align-items:center;
    gap:8px;
    padding:7px 10px;
    min-height:30px;
    border-bottom:1px solid var(--line-soft);
    font-size:12px;
    line-height:1.3;
  }
  .table-source:last-child{border-bottom:none;}
  .table-source:hover{background:rgba(255,255,255,0.025);}
  .table-source .meta{display:contents;}
  .table-source .meta .n{
    color:var(--bone);
    font-weight:500;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    min-width:0;
  }
  .table-source .meta .c{
    font-family:var(--font-mono);
    color:var(--bone-dim);
    font-size:11px;
    white-space:nowrap;
    text-align:right;
    font-variant-numeric:tabular-nums;
  }
  .table-source .source-remove{
    width:22px;height:22px;padding:0;margin:0;
    border:none;background:transparent;
    color:var(--bone-faint);
    font-family:var(--font-body);
    font-size:15px;font-weight:600;line-height:1;
    display:inline-flex;align-items:center;justify-content:center;
    border-radius:3px;cursor:pointer;
  }
  .table-source .source-remove:hover{color:var(--danger);background:rgba(193,68,47,0.12);}
  .stat-row{display:flex;justify-content:space-between;font-size:12px;color:var(--bone-dim);padding:2px 0;}
  .stat-row b{color:var(--bone);font-family:var(--font-mono);}
  label.field-label{font-size:11px;text-transform:uppercase;letter-spacing:0.04em;color:var(--bone-dim);display:block;margin-bottom:5px;}
  input[type=text],input[type=number],select,textarea{width:100%;background:var(--bg-inset);border:1px solid var(--line);color:var(--bone);padding:8px 10px;border-radius:3px;font-family:var(--font-mono);font-size:12.5px;outline:none;}
  input[type=text]:focus,input[type=number]:focus,select:focus,textarea:focus{border-color:var(--verdigris);}
  input.invalid{border-color:var(--danger);background:rgba(193,68,47,0.08);}
  input.valid-ok{border-color:var(--verdigris);}
  textarea{font-family:var(--font-body);resize:vertical;min-height:52px;}
  .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start;}
  .form-grid.full{grid-template-columns:1fr;}
  /* Stack of pair-rows: each row locks left/right to the same vertical start */
  .form-grid-pairs{display:flex;flex-direction:column;gap:12px;}
  .form-pair-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start;}
  .form-pair-row-full{grid-template-columns:1fr;}
  .form-pair-row > .field{
    display:flex;flex-direction:column;min-width:0;position:relative;
  }
  /* Fixed label band so inputs/checkboxes start on one horizontal line per row */
  .form-pair-row > .field > .field-label{
    min-height:2.75em;margin-bottom:5px;
    display:flex;align-items:flex-end;line-height:1.25;
  }
  .form-pair-row > .field > input[type=text],
  .form-pair-row > .field > input[type=number],
  .form-pair-row > .field > select{
    min-height:37px;box-sizing:border-box;
  }
  .form-pair-row > .field > .checkbox-row{
    min-height:37px;margin-top:0;box-sizing:border-box;
  }
  .field{position:relative;min-width:0;}
  .field.field-spacer{visibility:hidden;pointer-events:none;min-height:0;margin:0;padding:0;border:0;}
  .field .checkbox-row{min-height:0;}
  .checkbox-row input[type=checkbox]{width:auto;height:auto;padding:0;margin:0;}
  .density-compact .form-grid-pairs{gap:8px;}
  .density-compact .form-pair-row > .field > .field-label{min-height:2.4em;}
  .field.tpl-variable input,.field.tpl-variable textarea{border-color:var(--amber);}
  .field.override-changed input,.field.override-changed textarea,.field.override-changed select{border-color:var(--verdigris);background:rgba(92,138,118,0.06);}
  .tpl-note{font-size:10px;color:var(--amber);margin-top:3px;}
  .tpl-note.filled{color:var(--verdigris);}
  kbd{font-family:var(--font-mono);font-size:10px;padding:1px 5px;border:1px solid var(--line);border-radius:3px;background:var(--bg-inset);color:var(--bone-dim);}
  .id-status{font-size:10.5px;margin-top:4px;font-family:var(--font-mono);}
  .id-status.ok{color:var(--verdigris);}
  .id-status.bad{color:var(--danger);}
  .id-status.neutral{color:var(--bone-faint);}
  #id-pool-select{font-size:12px;}
  details.group-details{border:1px solid var(--line-soft);border-radius:4px;margin-bottom:10px;background:var(--bg-panel-2);}
  details.group-details>summary{cursor:pointer;padding:10px 14px;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:0.07em;color:var(--amber);list-style:none;display:flex;justify-content:space-between;align-items:center;}
  details.group-details>summary::-webkit-details-marker{display:none;}
  details.group-details>summary .count{color:var(--bone-faint);font-size:10px;text-transform:none;letter-spacing:0;}
  details.group-details[open]>summary{border-bottom:1px solid var(--line-soft);}
  details.group-details .form-grid{padding:14px;}
  .toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
  .search-dd{position:absolute;z-index:40;top:100%;left:0;right:0;margin-top:3px;background:var(--bg-inset);border:1px solid var(--verdigris);border-radius:3px;max-height:220px;overflow-y:auto;box-shadow:0 8px 24px rgba(0,0,0,0.5);}
  .search-dd .opt{padding:7px 10px;font-size:12px;font-family:var(--font-mono);cursor:pointer;color:var(--bone);border-bottom:1px solid var(--line-soft);}
  .search-dd .opt:last-child{border-bottom:none;}
  .search-dd .opt:hover,.search-dd .opt.hi{background:var(--rust);color:#fff2ea;}
  .search-dd .empty{padding:10px;font-size:11.5px;color:var(--bone-faint);}
  .entries-table{width:100%;border-collapse:collapse;font-size:12px;}
  .entries-table th{text-align:left;font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:0.05em;color:var(--bone-faint);border-bottom:1px solid var(--line);padding:8px 8px;}
  .entries-table td{padding:8px;border-bottom:1px solid var(--line-soft);color:var(--bone);vertical-align:top;}
  .entries-table tr:hover td{background:rgba(255,255,255,0.02);}
  .pill{display:inline-block;padding:2px 7px;border-radius:20px;font-size:10px;font-family:var(--font-mono);border:1px solid var(--line);color:var(--bone-dim);}
  .row-actions{display:flex;gap:6px;}
  .empty-state{padding:30px 16px;text-align:center;color:var(--bone-faint);font-size:12.5px;line-height:1.6;}
  .banner{padding:10px 14px;border-radius:4px;font-size:12px;border:1px solid;line-height:1.5;}
  .banner.info{border-color:#3a5c4f;background:rgba(92,138,118,0.08);color:var(--verdigris);}
  .banner.warn{border-color:#6b5222;background:rgba(202,160,58,0.08);color:var(--amber);}
  .toast{position:fixed;bottom:20px;right:20px;background:var(--bg-panel-2);border:1px solid var(--verdigris);color:var(--bone);padding:10px 16px;border-radius:4px;font-size:12.5px;z-index:100;box-shadow:0 8px 24px rgba(0,0,0,0.5);max-width:340px;}
  .modal-bg{position:fixed;inset:0;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;z-index:200;}
  .modal{background:var(--bg-panel);border:1px solid var(--line);border-radius:6px;padding:20px;width:380px;max-width:90vw;}
  .modal.modal-wide{width:720px;max-width:94vw;max-height:90vh;display:flex;flex-direction:column;}
  .modal.modal-compare{width:min(960px,96vw);}
  .cmp-selects{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;}
  .cmp-body{max-height:min(58vh,520px);}
  .cmp-side-by-side{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start;}
  .cmp-pane{border:1px solid var(--line-soft);border-radius:4px;background:var(--bg-panel);min-width:0;display:flex;flex-direction:column;max-height:min(42vh,380px);}
  .cmp-pane-head{padding:8px 10px;font-size:12px;font-weight:600;border-bottom:1px solid var(--line-soft);color:var(--bone);display:flex;align-items:center;gap:8px;min-height:0;}
  .cmp-pane-badge{font-family:var(--font-mono);font-size:10px;padding:2px 6px;border-radius:3px;border:1px solid var(--amber);color:var(--amber);}
  .cmp-pane-sub{padding:6px 10px 4px;font-size:11px;color:var(--bone-dim);display:flex;justify-content:space-between;gap:8px;}
  .cmp-pane-sub .count{font-family:var(--font-mono);color:var(--bone-faint);}
  .cmp-list{padding:0 10px 10px;overflow:auto;flex:1;font-family:var(--font-mono);font-size:11px;}
  .cmp-line{padding:3px 0;border-bottom:1px solid var(--line-soft);color:var(--bone);word-break:break-word;}
  .cmp-id{color:var(--verdigris);}
  .cmp-empty{padding:8px 10px;}
  .cmp-changed-block{margin-top:12px;border:1px solid var(--line-soft);border-radius:4px;padding:8px 10px;background:var(--bg-panel);}
  .cmp-changed-head{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-size:10px;font-family:var(--font-mono);color:var(--amber);text-transform:uppercase;letter-spacing:0.06em;padding:4px 0 6px;border-bottom:1px solid var(--line-soft);}
  .cmp-changed-list{max-height:min(28vh,220px);overflow:auto;}
  .cmp-changed-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;font-family:var(--font-mono);font-size:11px;border-bottom:1px solid var(--line-soft);}
  .cmp-changed-row .cmp-line{border-bottom:none;padding:4px 0;}
  @media (max-width:700px){
    .cmp-side-by-side,.cmp-selects,.cmp-changed-head,.cmp-changed-row{grid-template-columns:1fr;}
  }
  .modal h3{font-family:var(--font-display);font-size:15px;margin:0 0 14px 0;color:var(--bone);text-transform:uppercase;letter-spacing:0.05em;}
  .modal .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px;flex-shrink:0;}
  .diff-scroll{overflow:auto;max-height:min(52vh,480px);border:1px solid var(--line-soft);border-radius:4px;padding:8px;background:var(--bg-inset);}
  .diff-entry{border:1px solid var(--line-soft);border-radius:3px;margin-bottom:6px;background:var(--bg-panel);}
  .diff-entry>summary{cursor:pointer;padding:8px 10px;font-size:12px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
  .diff-entry[open]>summary{border-bottom:1px solid var(--line-soft);}
  .diff-table{font-size:11px;}
  .diff-table td,.diff-table th{padding:5px 8px;}
  .diff-field{font-family:var(--font-mono);color:var(--amber);white-space:nowrap;}
  .diff-old{color:var(--bone-faint);max-width:220px;overflow:hidden;text-overflow:ellipsis;}
  .diff-new{color:var(--verdigris);max-width:220px;overflow:hidden;text-overflow:ellipsis;}
  .conflict-workbench{display:flex;flex-direction:column;gap:10px;}
  .conflict-card{border:1px solid var(--line-soft);border-radius:4px;padding:10px 12px;background:var(--bg-inset);}
  .conflict-card .sources{font-size:11px;color:var(--bone-dim);margin:4px 0 8px;font-family:var(--font-mono);}
  .source-groups-bar{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;align-items:center;}
  .source-group-chip{font-size:10.5px;font-family:var(--font-mono);padding:3px 8px;border-radius:3px;border:1px solid var(--line);background:transparent;color:var(--bone-dim);cursor:pointer;}
  .source-group-chip.active{border-color:var(--amber);color:var(--amber);background:rgba(202,160,58,0.08);}
  .validation-box{margin:8px 0;padding:8px 10px;border-radius:4px;font-size:11.5px;line-height:1.45;}
  .validation-box.warn{border:1px solid #6b5222;background:rgba(202,160,58,0.08);color:var(--amber);}
  .validation-box.bad{border:1px solid #5a2e26;background:rgba(193,68,47,0.1);color:var(--danger);}
  .usage-list{max-height:280px;overflow:auto;font-size:12px;}
  .usage-list .u-row{padding:6px 8px;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;gap:8px;}
  .usage-list button.u-row{width:100%;text-align:left;background:transparent;border:none;border-bottom:1px solid var(--line-soft);color:inherit;cursor:pointer;font:inherit;}
  .usage-list button.u-row:hover{background:var(--bg-panel);}
  .tag-note{font-size:10.5px;color:var(--bone-faint);margin-top:3px;font-style:italic;}
  .checkbox-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--bone-dim);cursor:pointer;}
  .checkbox-row input{width:auto;}
  .array-chip-list{display:flex;flex-wrap:wrap;gap:4px;min-height:24px;}
  .chip{display:inline-flex;align-items:center;gap:6px;background:var(--bg-inset);border:1px solid var(--line);border-radius:12px;padding:3px 10px;font-size:11px;font-family:var(--font-mono);color:var(--bone);}
  .chip [data-remove-chip]{color:var(--danger);font-weight:700;cursor:pointer;}
  .search-results{display:flex;flex-direction:column;gap:4px;max-height:360px;overflow-y:auto;}
  .search-results::-webkit-scrollbar{width:6px;}
  .search-results::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px;}
  .search-result-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:7px 10px;background:var(--bg-inset);border:1px solid var(--line-soft);border-radius:3px;font-size:12px;cursor:default;}
  .search-result-row .meta{display:flex;flex-direction:column;gap:2px;overflow:hidden;min-width:0;flex:1;}
  .search-result-row .meta .n{color:var(--bone);}
  .search-result-row .meta .id{font-family:var(--font-mono);color:var(--verdigris);font-size:12px;}
  .search-result-row .meta .name{color:var(--bone);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .search-result-row .meta .c{font-family:var(--font-mono);color:var(--bone-faint);font-size:10px;}
  .browse-entry-row:hover{border-color:var(--line);background:rgba(255,255,255,0.03);}
  .browse-more-wrap{display:flex;justify-content:center;margin-top:10px;}
  .browse-more-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:center;}
  .chrome-bar{display:flex;flex-wrap:wrap;gap:6px;margin:-8px 0 4px 0;align-items:center;}
  .chrome-mt-hint{font-family:var(--font-mono);font-size:10px;color:var(--bone-faint);border:1px dashed var(--line-soft);padding:2px 6px;border-radius:3px;cursor:help;letter-spacing:0.04em;}
  .readonly-banner{margin-top:0;}
  .readonly-disabled{opacity:0.45;pointer-events:none;}
  .density-compact .panel-body{padding:10px 12px;gap:8px;}
  .density-compact .form-grid{gap:8px;}
  .density-compact input[type=text],.density-compact textarea,.density-compact select{padding:6px 8px;font-size:12px;}
  .density-compact .btn.small{padding:4px 8px;font-size:10px;}
  .tour-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.72);z-index:300;display:flex;align-items:center;justify-content:center;padding:20px;}
  .tour-card{background:var(--bg-panel);border:1px solid var(--line);border-radius:6px;padding:24px;max-width:420px;width:100%;box-shadow:0 12px 40px rgba(0,0,0,0.5);}
  .tour-card h3{margin:0 0 12px 0;}
  .tour-card p{margin:0 0 16px 0;font-size:13px;line-height:1.55;color:var(--bone-dim);}
  .tag-tree-root{font-size:12px;}
