: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);}
  #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;}
  .form-grid.full{grid-template-columns:1fr;}
  .field{position:relative;}
  .field.tpl-variable input,.field.tpl-variable textarea{border-color:var(--amber);}
  .tpl-note{font-size:10px;color:var(--amber);margin-top:3px;}
  .tpl-note.filled{color:var(--verdigris);}
  .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 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;}
  .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;}
