@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@300;400;500;600&family=DM+Mono:wght@400;500&display=swap');
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{touch-action:manipulation}
:root{
  --bg:#f5f4f0;--surface:#fff;--surface2:#f0eeea;--border:#e2e0da;--border-strong:#c8c6be;
  --text:#1a1917;--text-muted:#6b6961;--text-hint:#9e9b93;
  --accent:#2d5a27;--accent-light:#e8f2e6;--accent-border:#b5d4b0;
  --danger:#b83232;--danger-light:#fdf0f0;
  --warning:#c47b1a;--warning-light:#fdf6e8;
  --info:#1a5a9a;--info-light:#eef4fc;
  --purple:#5a27a0;--purple-light:#f0eafc;--purple-border:#c9a8f0;
  --radius:10px;--radius-sm:6px;--header-height:56px;--subnav-height:44px;--chrome-height:calc(var(--header-height) + var(--subnav-height));--shadow:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.04)
}
[data-theme="dark"]{
  --bg:#141412;--surface:#1e1d1b;--surface2:#272522;--border:#333129;--border-strong:#4a4742;
  --text:#e8e6e1;--text-muted:#a09d96;--text-hint:#6b6861;
  --accent:#5aad4e;--accent-light:#1a2e18;--accent-border:#2d5227;
  --danger:#e05555;--danger-light:#2a1515;
  --warning:#e09a3a;--warning-light:#2a1e0a;
  --info:#4a8fd4;--info-light:#0e1e30;
  --purple:#a07fe0;--purple-light:#1e1430;--purple-border:#5a3a90;
  --shadow:0 1px 3px rgba(0,0,0,.3),0 1px 2px rgba(0,0,0,.2)
}
[data-theme="gray"]{
  --bg:#eceef1;--surface:#f7f8fa;--surface2:#e5e8ed;--border:#cfd5dd;--border-strong:#aeb7c3;
  --text:#1f2933;--text-muted:#5f6c7b;--text-hint:#7b8794;
  --accent:#52677d;--accent-light:#e6ebf0;--accent-border:#bcc7d2;
  --danger:#b94a48;--danger-light:#f8e9e8;
  --warning:#b07a2a;--warning-light:#f8f1e3;
  --info:#426d9b;--info-light:#e7eef6;
  --purple:#6e5a96;--purple-light:#ece8f4;--purple-border:#c7bddb;
  --shadow:0 1px 3px rgba(38,50,56,.10),0 1px 2px rgba(38,50,56,.06)
}
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;font-size:14px;line-height:1.6;transition:background .2s,color .2s;--group-color:var(--accent);--group-light:var(--accent-light);--group-border:var(--accent-border)}
body[data-active-group="excel"]{--group-color:var(--accent);--group-light:var(--accent-light);--group-border:var(--accent-border)}
body[data-active-group="convert"]{--group-color:var(--info);--group-light:var(--info-light);--group-border:color-mix(in srgb,var(--info) 24%, var(--border))}
body[data-active-group="analyse"]{--group-color:var(--warning);--group-light:var(--warning-light);--group-border:color-mix(in srgb,var(--warning) 26%, var(--border))}
body[data-active-group="cert"]{--group-color:var(--purple);--group-light:var(--purple-light);--group-border:color-mix(in srgb,var(--purple) 28%, var(--border))}
input,select,textarea{font-size:16px}
@media(min-width:768px){input,select,textarea{font-size:inherit}}

/* ── Header ── */
.header{background:var(--surface);border-bottom:none;padding:0 1.5rem;display:flex;align-items:stretch;justify-content:space-between;height:var(--header-height);position:sticky;top:0;z-index:320;box-shadow:none}
.logo{font-size:17px;font-weight:600;letter-spacing:-.3px;display:flex;align-items:center;gap:8px;align-self:center;flex-shrink:0}
.logo-badge{background:var(--accent);color:white;font-size:11px;font-weight:600;padding:2px 7px;border-radius:4px;letter-spacing:.5px}
.header-left{display:flex;align-items:stretch;gap:26px;min-width:0;overflow:hidden;height:100%}
.header-right{display:flex;align-items:center;gap:8px}
.header-nav{display:flex;gap:6px;align-items:flex-end;min-width:0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;padding:8px 0 0;position:relative;height:100%}
.header-nav::-webkit-scrollbar{display:none}
.subnav-shell{position:sticky;top:var(--header-height);z-index:309;background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 90%, white) 0%, color-mix(in srgb,var(--group-light) 76%, var(--surface)) 100%);border-top:none;border-bottom:1px solid color-mix(in srgb,var(--group-border) 72%, var(--border));padding:0;transition:background .2s,border-color .2s}
.subnav-row{display:flex;align-items:center;padding:8px 1.5rem 9px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
.subnav-row::-webkit-scrollbar{display:none}
.subnav-group{display:none;align-items:center;gap:8px;min-width:max-content;position:relative}
.subnav-group.active{display:inline-flex;align-items:center;padding:0;margin-left:0;border:none;border-radius:0;background:none;box-shadow:none}
.subnav-group.active::before{display:none}
.subnav-context-label{display:none}
.subnav-btn{padding:7px 13px;border-radius:8px;border:1px solid color-mix(in srgb,var(--group-border) 62%, var(--border));background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%, var(--group-light)) 0%, color-mix(in srgb,var(--surface) 88%, var(--group-light)) 100%);font-family:inherit;font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .18s;white-space:nowrap;box-shadow:inset 0 1px 0 rgba(255,255,255,.45)}
.subnav-btn:hover{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 90%, var(--group-light)) 0%, color-mix(in srgb,var(--surface) 76%, var(--group-light)) 100%);border-color:color-mix(in srgb,var(--group-border) 96%, var(--border-strong));color:var(--text);transform:translateY(-1px)}
.subnav-btn.active{background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 92%, white) 0%, color-mix(in srgb,var(--group-light) 74%, var(--surface)) 100%);border-color:color-mix(in srgb,var(--group-border) 92%, var(--border));color:var(--group-color);box-shadow:inset 0 1px 0 rgba(255,255,255,.48);transform:none}
.subnav-btn.active:hover{color:var(--group-color);filter:none;background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 88%, white) 0%, color-mix(in srgb,var(--group-light) 70%, var(--surface)) 100%);border-color:color-mix(in srgb,var(--group-border) 92%, var(--border))}
.nav-btn{padding:6px 14px;border-radius:var(--radius-sm);border:none;background:transparent;font-family:inherit;font-size:13px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s}
.nav-btn:hover{background:var(--surface2);color:var(--text)}.nav-btn.active{background:var(--accent-light);border:1px solid var(--accent-border);color:var(--accent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 12%, transparent)}
/* ── Group tab nav (3 top-level groups) ── */
.nav-group-btn{padding:8px 16px 10px;border-radius:8px 8px 0 0;border:1px solid transparent;border-bottom:none;background:transparent;font-family:inherit;font-size:13px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .18s;white-space:nowrap;position:relative}
.nav-label-short{display:none}
@media(max-width:540px){.nav-label-full{display:none}.nav-label-short{display:inline}}
.nav-group-btn:hover{background:var(--surface2);color:var(--text)}
.nav-group-btn.active{background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 92%, white) 0%, color-mix(in srgb,var(--group-light) 74%, var(--surface)) 100%);border-color:color-mix(in srgb,var(--group-border) 92%, var(--border));color:var(--group-color);box-shadow:0 6px 12px rgba(0,0,0,.04)}
.nav-group-btn.active::after{content:'';position:absolute;left:14px;right:14px;bottom:-10px;height:10px;background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 84%, white) 0%, color-mix(in srgb,var(--group-light) 70%, var(--surface)) 100%);border-left:1px solid color-mix(in srgb,var(--group-border) 88%, var(--border));border-right:1px solid color-mix(in srgb,var(--group-border) 88%, var(--border));pointer-events:none}
.nav-group-btn.active::before{content:'';position:absolute;left:14px;right:14px;bottom:-1px;height:1px;background:color-mix(in srgb,var(--group-light) 86%, white);pointer-events:none}
/* ── Sub-tool nav inside sidebar ── */
.sb-group{display:flex;flex-direction:column;height:100%;min-height:0}
.sb-group-top{flex:1;overflow-y:auto;padding:1rem 1rem .75rem;min-height:0;display:flex;flex-direction:column;gap:2px}
.sb-group-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text-hint);padding:4px 8px 6px;margin-top:4px}
.sb-group-label:first-child{margin-top:0}
.sb-tool-btn{width:100%;padding:9px 12px;border-radius:var(--radius-sm);border:none;background:transparent;font-family:inherit;font-size:13px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s;text-align:left;display:flex;align-items:center;gap:10px}
.sb-tool-btn:hover{background:var(--surface2);color:var(--text)}
.sb-tool-btn.active{background:var(--accent-light);color:var(--accent);border:1px solid var(--accent-border);box-shadow:var(--shadow)}
.sb-tool-icon{font-size:15px;width:20px;text-align:center;flex-shrink:0}
.sb-tool-info{display:flex;flex-direction:column;gap:1px;min-width:0}
.sb-tool-name{font-size:13px;font-weight:500;line-height:1.3}
.sb-tool-desc{font-size:11px;color:var(--text-hint);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sb-tool-btn.active .sb-tool-desc{color:var(--accent);opacity:.75}
.help-btn{width:34px;height:34px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;cursor:pointer;font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .15s;color:var(--text-muted);font-family:inherit}
.help-btn:hover{background:var(--surface2);border-color:var(--border-strong);color:var(--text)}
.theme-select{height:34px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);cursor:pointer;font-family:inherit;font-size:12px;font-weight:600;padding:0 30px 0 10px;color:var(--text-muted);transition:all .15s;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--text-hint) 50%),linear-gradient(135deg, var(--text-hint) 50%, transparent 50%);background-position:calc(100% - 14px) 14px,calc(100% - 9px) 14px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;min-width:106px}
.theme-select:hover{background-color:var(--surface2);border-color:var(--border-strong);color:var(--text)}
.theme-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%, transparent)}

/* ── Layout ── */
.app{display:grid;grid-template-columns:1fr;min-height:calc(100vh - var(--chrome-height))}
.sidebar{display:none!important}
.sidebar-section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--text-hint);margin-bottom:4px}
.main{padding:1rem 2rem 2rem;overflow-y:auto;overflow-x:hidden;min-width:0}
.page{display:none}.page.active{display:block}

/* Hide duplicated per-page header strip; title/description now live in the top bar */
.page-head{display:none!important}

.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.1rem;flex-wrap:wrap}
.page-head-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:99px;background:var(--surface2);border:1px solid var(--border);font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px}
.section-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:1rem 1.1rem;margin-bottom:1rem}
.section-card.soft{background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb, var(--surface) 82%, var(--accent-light)) 100%)}
.section-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.9rem;flex-wrap:wrap}
.section-card-title{font-size:15px;font-weight:700;letter-spacing:-.2px}
.section-card-sub{font-size:12px;color:var(--text-muted);margin-top:2px}
.section-card-badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:99px;background:var(--accent-light);border:1px solid var(--accent-border);font-size:11px;font-weight:700;color:var(--accent)}
.inline-help{display:flex;gap:10px;flex-wrap:wrap}
.inline-help-pill{display:inline-flex;align-items:center;gap:7px;padding:7px 11px;border-radius:10px;background:var(--surface2);border:1px solid var(--border);font-size:12px;color:var(--text-muted)}
.inline-help-pill strong{color:var(--text)}
.mapper-helper-card,.compare-helper-card{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:10px 12px;margin-top:10px}
.mapper-helper-title,.compare-helper-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-hint);margin-bottom:6px}
.mapper-helper-item,.compare-helper-item{font-size:11px;color:var(--text-muted);line-height:1.5;margin-bottom:4px}
.mapper-helper-item:last-child,.compare-helper-item:last-child{margin-bottom:0}
.compare-shortcuts{display:flex;flex-direction:column;gap:6px;margin-top:.85rem}
.compare-shortcut-btn{width:100%;padding:8px 10px;border-radius:10px;border:1px solid var(--border);background:var(--surface);font-family:inherit;font-size:12px;font-weight:600;color:var(--text);cursor:pointer;text-align:left;transition:all .15s}
.compare-shortcut-btn:hover{background:var(--surface2);border-color:var(--border-strong)}
.compare-shortcut-btn.active{background:var(--info-light);border-color:var(--info);color:var(--info)}
.compare-flow-stack{display:flex;flex-direction:column;gap:1rem}
#single-result:empty,#compare-result:empty,#differ-result:empty{display:none}
/* ── Mapper two-column layout ── */
/* ── Mapper: lock .main when mapper is active ── */
.main.mapper-active{overflow:hidden;padding:0;display:flex;flex-direction:column;height:calc(100vh - var(--chrome-height));min-height:0}
.main.mapper-active #page-templates{flex:1;min-height:0;display:flex;flex-direction:column;height:100%;overflow:hidden}
/* ── Mapper layout: [left panel] [scrolling editor] — fills full locked height ── */
.mapper-layout{display:flex;flex-direction:row;flex:1;min-height:0;height:100%;overflow:hidden}
/* Left panel: fixed 220px, never resizes, locked height */
.mapper-panel{width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;order:1}
.mapper-panel-head{display:flex;align-items:center;justify-content:space-between;padding:.75rem .9rem .5rem;border-bottom:1px solid var(--border);flex-shrink:0}
.mapper-panel-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--text-hint)}
.btn-new-template-inline{padding:3px 9px;border-radius:var(--radius-sm);border:1.5px dashed var(--border-strong);background:transparent;font-family:inherit;font-size:12px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s;white-space:nowrap}
.btn-new-template-inline:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-light)}
/* Template list: ONLY this scrolls — fixed height cap, internal scroll only */
.mapper-panel .template-list{flex:1;overflow-y:auto;padding:.4rem .6rem;min-height:0;max-height:calc(100vh - 280px);display:flex;flex-direction:column;gap:2px;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}
.mapper-panel .template-list::-webkit-scrollbar{width:4px}
.mapper-panel .template-list::-webkit-scrollbar-track{background:transparent}
.mapper-panel .template-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px}
.mapper-panel .sample-file-bar{flex-shrink:0;margin:.3rem .6rem .3rem;padding:6px 9px;background:var(--accent-light);border:1px solid var(--accent-border);border-radius:var(--radius-sm);display:none}
/* Actions: pinned to bottom, never moves */
.mapper-panel-actions{flex-shrink:0;border-top:1px solid var(--border);padding:.55rem .65rem}
.mapper-view-btn{width:100%;padding:6px 9px;border-radius:var(--radius-sm);border:none;background:transparent;font-family:inherit;font-size:12px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s;text-align:left;display:flex;align-items:center;gap:7px;margin-bottom:2px}
.mapper-view-btn:hover{background:var(--surface2);color:var(--text)}
.mapper-view-btn.active{background:var(--accent-light);color:var(--accent);border:1px solid var(--accent-border)}
.mapper-panel-import{margin-top:7px;padding-top:7px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:4px}
.mapper-panel .template-item{padding:6px 8px}
.mapper-panel .template-item-name{font-size:12px}
.mapper-panel .template-item-cols{font-size:10px}
/* Editor: fixed shell with independent inner scrolling */
.mapper-editor{flex:1;min-width:0;min-height:0;height:100%;overflow:hidden;padding:0;order:2;display:flex;flex-direction:column}
.mapper-editor > *{min-height:0}
#editor-area,#mapper-content-convert,#mapper-content-history{flex:1;min-height:0;height:100%}
#editor-area{overflow:hidden}
.editor-shell{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}
.editor-shell-top{flex-shrink:0;padding:1.5rem 2rem 0;background:var(--bg)}
.editor-shell-body{flex:1;min-height:0;overflow-y:auto;padding:1rem 2rem 1.5rem}
.editor-shell-body::-webkit-scrollbar{width:8px}
.editor-shell-body::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px}
.editor-shell-body::-webkit-scrollbar-track{background:transparent}
#mapper-content-convert,#mapper-content-history{overflow-y:auto;padding:1.5rem 2rem}
@media(max-width:960px){
  .main.mapper-active{overflow-y:auto;padding:.75rem;display:block}
  .main.mapper-active #page-templates{display:block;flex:none}
  .mapper-layout{flex-direction:column;flex:none}
  .mapper-panel{width:100%;border-right:none;border-bottom:1px solid var(--border);overflow:visible;flex-shrink:1}
  .mapper-panel .template-list{flex:none;max-height:180px;overflow-y:auto}
  .mapper-editor{overflow:visible;padding:0;display:block;height:auto}
  #editor-area,#mapper-content-convert,#mapper-content-history{overflow:visible;height:auto}
  .editor-shell{display:block;height:auto}
  .editor-shell-body{overflow:visible;padding-right:0}
}
/* ── Mapper Sidebar ── */
.template-list{display:flex;flex-direction:column;gap:3px;overflow-y:auto}
.template-item{padding:8px 10px;border-radius:var(--radius-sm);cursor:pointer;border:1px solid transparent;transition:all .15s;display:flex;align-items:center;gap:6px}
.template-item:hover{background:var(--surface2)}.template-item.active{background:var(--accent-light);border-color:var(--accent-border)}
.template-item-name{font-size:13px;font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.template-item.active .template-item-name{color:var(--accent)}
.template-item-cols{font-size:11px;color:var(--text-hint);white-space:nowrap}
.template-item.active .template-item-cols{color:var(--accent)}
.tpl-icon-btn{width:20px;height:20px;border-radius:4px;border:none;background:transparent;color:var(--text-hint);cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;opacity:0;transition:all .15s;flex-shrink:0}
.template-item:hover .tpl-icon-btn{opacity:1}
.tpl-icon-btn:hover{background:var(--danger-light);color:var(--danger)}
.tpl-icon-btn.dup:hover{background:var(--info-light);color:var(--info)}
.sidebar-actions{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.btn-new-template{width:100%;padding:7px 12px;border-radius:var(--radius-sm);border:1.5px dashed var(--border-strong);background:transparent;font-family:inherit;font-size:13px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:6px}
.btn-new-template:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-light)}
.btn-import-tpl{width:100%;padding:7px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;font-family:inherit;font-size:12px;font-weight:500;color:var(--text-hint);cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;gap:6px}
.btn-import-tpl:hover{border-color:var(--border-strong);color:var(--text-muted);background:var(--surface2)}

/* ── Sidebar layout: scrollable top, fixed bottom ── */
.sb-top{flex:1;overflow-y:auto;padding:1.25rem 1.25rem .75rem;min-height:0}
.sb-bottom{flex-shrink:0;padding:.75rem 1.25rem 1rem;border-top:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;gap:2px}
.sb-bottom-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.7px;color:var(--text-hint);margin-bottom:4px}
/* ── Sections & sub-nav ── */
.sb-section{margin-bottom:1rem}
.sb-section:last-child{margin-bottom:0}
.sb-subnav{display:flex;flex-direction:column;gap:2px;margin-top:4px}
.sb-subnav-btn{width:100%;padding:7px 10px;border-radius:var(--radius-sm);border:none;background:transparent;font-family:inherit;font-size:13px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s;text-align:left;display:flex;align-items:center;gap:8px}
.sb-subnav-btn:hover{background:var(--surface2);color:var(--text)}
.sb-subnav-btn.active{background:var(--accent-light);color:var(--accent);border:1px solid var(--accent-border);box-shadow:var(--shadow)}
.sb-subnav-icon{font-size:13px;width:18px;text-align:center;flex-shrink:0}
/* ── How-to tips in sidebar ── */
.sb-tip-box{background:var(--surface2);border-radius:var(--radius-sm);padding:10px 12px;margin-top:.5rem}
.sb-tip-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-hint);margin-bottom:6px}
.sb-tip-item{display:flex;gap:7px;font-size:11px;color:var(--text-muted);line-height:1.5;margin-bottom:5px}
.sb-tip-item:last-child{margin-bottom:0}
.sb-tip-dot{flex-shrink:0;width:14px;height:14px;border-radius:50%;background:var(--accent-light);border:1px solid var(--accent-border);color:var(--accent);font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}
.sample-file-bar{background:var(--accent-light);border:1px solid var(--accent-border);border-radius:var(--radius-sm);padding:8px 10px;display:none}
.sample-file-bar-title{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--accent);margin-bottom:3px}
.sample-file-name{font-size:11px;font-family:'DM Mono',monospace;color:var(--accent);word-break:break-all}

/* ── Differ Sidebar ── */
.differ-sidebar-info{font-size:12px;color:var(--text-hint);line-height:1.7;padding:4px 0}
.differ-sidebar-steps{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.differ-step{display:flex;gap:8px;align-items:flex-start;font-size:12px;color:var(--text-muted)}
.differ-step-num{width:18px;height:18px;border-radius:50%;background:var(--accent);color:white;font-size:10px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}

/* ── Buttons ── */
.btn{padding:7px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;color:var(--text);-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.btn:hover{background:var(--surface2);border-color:var(--border-strong)}
.btn-primary{background:var(--accent);border-color:var(--accent);color:white}.btn-primary:hover{opacity:.9}
.btn-danger{background:var(--danger-light);border-color:var(--danger);color:var(--danger)}.btn-danger:hover{opacity:.85}
.btn-sm{padding:4px 10px;font-size:12px}

/* ── Editor ── */
.editor-header{display:flex;align-items:center;gap:.65rem;margin-bottom:.45rem;flex-wrap:wrap}
.editor-header .btn,.editor-header .btn-sm{padding:6px 12px}
.editor-title-input{flex:1;min-width:180px;font-family:'DM Sans',sans-serif;font-size:18px;font-weight:600;border:none;background:transparent;outline:none;color:var(--text);border-bottom:2px solid transparent;transition:border-color .15s;padding:0 0 1px;line-height:1.2}
.editor-title-input:focus{border-bottom-color:var(--accent)}.editor-title-input::placeholder{color:var(--text-hint)}

/* ── Quick Convert bar (inside editor) ── */
.quick-convert-bar{display:flex;align-items:center;gap:10px;background:var(--accent-light);border:1px solid var(--accent-border);border-radius:var(--radius);padding:10px 14px;margin-bottom:1rem;flex-wrap:wrap}
.qc-label{font-size:12px;color:var(--accent);font-weight:500;flex-shrink:0}
.qc-file-info{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
.qc-file-name{font-family:'DM Mono',monospace;font-size:11px;color:var(--accent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}
.qc-file-meta{font-size:11px;color:var(--accent);opacity:.7;white-space:nowrap}
.qc-change-file{padding:3px 8px;border-radius:var(--radius-sm);border:1px solid var(--accent-border);background:transparent;font-family:inherit;font-size:11px;color:var(--accent);cursor:pointer;transition:all .15s;white-space:nowrap}
.qc-change-file:hover{background:var(--accent);color:white}
.btn-quick-convert{padding:8px 20px;border-radius:var(--radius-sm);border:none;background:var(--accent);color:white;font-family:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:6px;flex-shrink:0}
.btn-quick-convert:hover{opacity:.9;transform:translateY(-1px)}
.btn-quick-convert:disabled{opacity:.5;cursor:not-allowed;transform:none}
.qc-result{font-size:11px;color:var(--accent);margin-left:auto;white-space:nowrap}

/* ── Per-template sample file button ── */
.tpl-sample-wrap{display:flex;align-items:center;gap:4px;flex-shrink:0;max-width:220px}
.tpl-sample-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);cursor:pointer;transition:all .15s;font-size:12px;font-weight:600;color:var(--text);overflow:hidden;max-width:200px;box-shadow:var(--shadow);-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.tpl-sample-btn:hover{background:var(--surface2);border-color:var(--border-strong);color:var(--text)}
.tpl-sample-icon{font-size:14px;flex-shrink:0}
.tpl-sample-name{font-family:'DM Mono',monospace;font-size:11px;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px}
.tpl-sample-hint{font-size:11px;color:var(--text-hint);white-space:nowrap}
.tpl-sample-clear{width:20px;height:20px;border-radius:50%;border:1px solid var(--border);background:transparent;cursor:pointer;font-size:13px;color:var(--text-hint);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s;padding:0;line-height:1}
.tpl-sample-clear:hover{background:var(--danger-light);border-color:var(--danger);color:var(--danger)}
.editor-toolbar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:.7rem;padding:.15rem 0 .5rem;border-bottom:1px solid var(--border)}
.editor-toolbar .btn,.editor-toolbar .btn-sm{padding:6px 12px}
.toolbar-spacer{flex:1 1 auto}
@media(min-width:1100px){.editor-header{flex-wrap:nowrap}.editor-toolbar{flex-wrap:nowrap}.editor-title-input{min-width:260px}}
.fnr-bar{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:1rem;display:none;gap:8px;align-items:center;flex-wrap:wrap}
.fnr-bar.open{display:flex}
.fnr-input{padding:5px 9px;border-radius:var(--radius-sm);border:1px solid var(--border);font-family:inherit;font-size:13px;background:var(--bg);outline:none;color:var(--text);width:180px}
.fnr-input:focus{border-color:var(--accent)}
.fnr-label{font-size:12px;color:var(--text-hint)}
.fnr-count{font-size:12px;color:var(--text-muted);min-width:60px}

/* ── Column Card ── */
.column-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.6rem;box-shadow:var(--shadow);overflow:hidden;transition:opacity .15s}
.column-card.drag-over{border-color:var(--accent);opacity:.7}
.column-card-header{display:flex;align-items:center;gap:8px;padding:9px 13px;user-select:none}
.col-drag-handle{cursor:grab;color:var(--text-hint);font-size:14px;flex-shrink:0;padding:2px 4px;border-radius:4px;line-height:1}
.col-drag-handle:hover{color:var(--text-muted);background:var(--surface2)}.col-drag-handle:active{cursor:grabbing}
.col-toggle-btn{background:none;border:none;cursor:pointer;padding:2px 4px;display:flex;align-items:center}
.col-chevron{font-size:9px;color:var(--text-hint);transition:transform .2s;flex-shrink:0}
.column-card.collapsed .col-chevron{transform:rotate(-90deg)}
.column-name-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-hint);white-space:nowrap}
.column-name-input{flex:1;padding:5px 9px;border-radius:var(--radius-sm);border:1px solid var(--border);font-family:'DM Mono',monospace;font-size:13px;background:var(--bg);outline:none;color:var(--text);transition:border-color .15s}
.column-name-input:focus{border-color:var(--accent)}
.col-mode-btn{font-size:11px;white-space:nowrap;cursor:pointer;padding:3px 8px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);transition:all .15s;font-family:inherit;color:var(--text-hint)}
.col-mode-btn.active-map{background:var(--accent-light);border-color:var(--accent-border);color:var(--accent);font-weight:600}
.col-mode-btn.active-vlookup{background:var(--purple-light);border-color:var(--purple-border);color:var(--purple);font-weight:600}
.col-mode-btn.col-mode-sep{color:var(--border-strong);font-size:11px}
.col-badge{font-size:11px;color:var(--text-hint);white-space:nowrap;flex-shrink:0}
.col-badge.has-blanks{color:var(--warning);font-weight:600}
.col-badge.vl-badge{color:var(--purple);font-weight:600}
.column-card-body{padding:0 13px 12px}.column-card.collapsed .column-card-body{display:none}

/* ── Map Body ── */
.col-default-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding:6px 8px;background:var(--surface2);border-radius:var(--radius-sm);border:1px solid var(--border)}
.col-default-label{font-size:11px;color:var(--text-hint);white-space:nowrap;font-weight:600;text-transform:uppercase;letter-spacing:.4px}
.col-default-input{flex:1;padding:4px 8px;border-radius:var(--radius-sm);border:1px solid var(--border);font-family:inherit;font-size:12px;background:var(--bg);outline:none;color:var(--text)}
.col-default-input:focus{border-color:var(--accent)}
.mapping-table{width:100%;border-collapse:collapse}
.mapping-table th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-hint);padding:0 6px 6px}
.mapping-row td{padding:2px 3px}
.mapping-input{width:100%;padding:6px 9px;border-radius:var(--radius-sm);border:1px solid var(--border);font-family:inherit;font-size:13px;background:var(--bg);outline:none;color:var(--text);transition:border-color .15s}
.mapping-input:focus{border-color:var(--accent)}
.mapping-input.blank-tgt{border-color:var(--warning);background:var(--warning-light)}
.mapping-input.arrow-cell{text-align:center;color:var(--text-hint);font-size:14px;padding:0 2px!important;width:24px}
.remove-row-btn{width:26px;height:26px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--text-hint);cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;transition:all .15s}
.remove-row-btn:hover{background:var(--danger-light);color:var(--danger)}
.col-footer{display:flex;align-items:center;gap:6px;margin-top:8px;flex-wrap:wrap}
.add-mapping-btn{padding:4px 10px;border-radius:var(--radius-sm);border:1px dashed var(--border-strong);background:transparent;font-family:inherit;font-size:12px;font-weight:500;color:var(--text-hint);cursor:pointer;transition:all .15s}
.add-mapping-btn,.reverse-btn,.danger-row-btn,.fill-unique-btn,.flash-fill-btn{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.add-mapping-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-light)}
.reverse-btn{padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;font-family:inherit;font-size:12px;font-weight:500;color:var(--text-hint);cursor:pointer;transition:all .15s}
.reverse-btn:hover{background:var(--info-light);border-color:var(--info);color:var(--info)}
.fill-unique-btn{padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--accent-border);background:var(--accent-light);font-family:inherit;font-size:12px;font-weight:500;color:var(--accent);cursor:pointer;transition:all .15s}
.fill-unique-btn:disabled{opacity:.4;cursor:not-allowed}
.col-footer-sep{width:1px;height:18px;background:var(--border);margin:0 2px;flex-shrink:0}
.danger-row-btn{padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:transparent;font-family:inherit;font-size:12px;font-weight:500;color:var(--text-hint);cursor:pointer;transition:all .15s}
.danger-row-btn:hover{background:var(--danger-light);border-color:var(--danger);color:var(--danger)}
.flash-fill-btn{padding:4px 12px;border-radius:var(--radius-sm);border:1.5px solid var(--purple-border);background:var(--purple-light);font-family:inherit;font-size:12px;font-weight:600;color:var(--purple);cursor:pointer;transition:all .15s}
.flash-fill-btn:hover{background:var(--purple);color:white}
.fill-unique-btn:hover{background:var(--accent);color:white}
.mapping-count{font-size:11px;color:var(--text-hint);margin-left:auto}

/* ── VLookup ── */
.vl-body{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:4px}
.vl-side{border-radius:var(--radius-sm);padding:12px;border:1px solid var(--border)}
.vl-side-left{background:var(--surface2)}.vl-side-right{background:var(--purple-light);border-color:var(--purple-border)}
.vl-side-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}
.vl-side-left .vl-side-title{color:var(--text-hint)}.vl-side-right .vl-side-title{color:var(--purple)}
.vl-field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.vl-label{font-size:11px;font-weight:600;color:var(--text-hint);text-transform:uppercase;letter-spacing:.4px}
.vl-select{padding:6px 9px;border-radius:var(--radius-sm);border:1px solid var(--border);font-family:inherit;font-size:12px;background:var(--bg);color:var(--text);outline:none;cursor:pointer;width:100%}
.vl-select:focus{border-color:var(--purple)}
.vl-sample-list{list-style:none;margin-top:4px}
.vl-sample-list li{font-family:'DM Mono',monospace;font-size:11px;color:var(--text-muted);padding:2px 0;border-bottom:1px solid var(--border);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vl-sample-list li:last-child{border-bottom:none}
.vl-sample-empty{font-size:11px;color:var(--text-hint);font-style:italic;padding:6px 0}
.vl-file-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.vl-file-btn{padding:5px 10px;border-radius:var(--radius-sm);border:1px solid var(--purple-border);background:transparent;font-family:inherit;font-size:11px;font-weight:500;color:var(--purple);cursor:pointer;transition:all .15s;white-space:nowrap}
.vl-file-btn:hover{background:var(--purple-light)}
.vl-file-name{font-size:11px;font-family:'DM Mono',monospace;color:var(--text-muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vl-status{font-size:10px;padding:2px 6px;border-radius:99px;white-space:nowrap;font-weight:600}
.vl-status.ok{background:var(--accent-light);color:var(--accent)}.vl-status.warn{background:var(--warning-light);color:var(--warning)}
.vl-notfound-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:4px}
.vl-custom-input{flex:1;min-width:80px;padding:4px 8px;border-radius:var(--radius-sm);border:1px solid var(--purple-border);font-family:inherit;font-size:12px;background:var(--bg);outline:none;color:var(--text)}

/* ── Convert Page ── */
.convert-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;margin-bottom:1rem}
.upload-zone{border:2px dashed var(--border);border-radius:var(--radius);padding:1.75rem 1.25rem;text-align:center;cursor:pointer;transition:all .2s;background:var(--surface)}
.upload-zone:hover,.upload-zone.drag-over{border-color:var(--accent);background:var(--accent-light)}
.upload-zone.has-file{border-color:var(--accent);border-style:solid}
.upload-icon{font-size:26px;margin-bottom:7px}.upload-zone h3{font-size:14px;font-weight:600;margin-bottom:3px}.upload-zone p{font-size:12px;color:var(--text-hint)}
.file-name{font-family:'DM Mono',monospace;font-size:11px;color:var(--accent);margin-top:5px;font-weight:500;word-break:break-all}
.tpl-select-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}
.tpl-select-card h3{font-size:14px;font-weight:600;margin-bottom:.6rem}
.template-select{width:100%;padding:7px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);font-family:inherit;font-size:13px;background:var(--bg);color:var(--text);outline:none;cursor:pointer;margin-bottom:.6rem}
.template-select:focus{border-color:var(--accent)}
.sheet-selector-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-hint);margin-bottom:5px}
.sheet-list{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:.6rem}
.sheet-chip{padding:3px 10px;border-radius:99px;border:1px solid var(--border);background:var(--bg);font-size:12px;cursor:pointer;transition:all .15s;user-select:none}
.sheet-chip.selected{background:var(--accent-light);border-color:var(--accent-border);color:var(--accent);font-weight:500}
.tpl-preview{background:var(--bg);border-radius:var(--radius-sm);padding:8px 10px}
.tpl-preview-item{display:flex;align-items:center;gap:8px;margin-bottom:3px;font-size:12px}
.preview-col{font-family:'DM Mono',monospace;font-weight:500;color:var(--accent)}
.preview-mode{font-size:10px;padding:1px 6px;border-radius:99px;font-weight:600}
.pm-map{background:var(--accent-light);color:var(--accent)}.pm-vl{background:var(--purple-light);color:var(--purple)}
.vlookup-uploads{background:var(--purple-light);border:1px solid var(--purple-border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1rem}
.vlookup-uploads h4{font-size:13px;font-weight:600;color:var(--purple);margin-bottom:.75rem}
.vl-upload-row{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--surface);border-radius:var(--radius-sm);border:1px solid var(--border);margin-bottom:6px}
.vl-upload-col{font-size:12px;font-weight:600;color:var(--purple);min-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vl-upload-info{font-size:11px;color:var(--text-hint);flex:1}
.vl-upload-btn{padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--purple-border);background:transparent;font-family:inherit;font-size:12px;color:var(--purple);cursor:pointer;white-space:nowrap;transition:all .15s}
.vl-upload-btn:hover{background:var(--purple-light)}.vl-upload-btn.loaded{border-color:var(--accent);color:var(--accent)}
.vl-upload-status{font-size:11px;white-space:nowrap;font-weight:600}
.convert-action{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}

/* ── Convert source picker ── */
.convert-source-tabs{display:flex;gap:4px;margin-bottom:.6rem}
.csrc-tab{padding:5px 12px;border-radius:99px;border:1px solid var(--border);background:var(--surface2);font-family:inherit;font-size:12px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s}
.csrc-tab:hover{border-color:var(--border-strong);color:var(--text)}
.csrc-tab.active{background:var(--accent-light);border-color:var(--accent-border);color:var(--accent)}
.csrc-sample-info{display:flex;align-items:center;gap:10px;background:var(--accent-light);border:1px solid var(--accent-border);border-radius:var(--radius);padding:12px 14px}
.csrc-sample-icon{font-size:20px;flex-shrink:0}
.csrc-sample-name{font-size:13px;font-weight:500;color:var(--accent);font-family:'DM Mono',monospace;word-break:break-all}
.csrc-sample-meta{font-size:11px;color:var(--accent);margin-top:2px;opacity:.8}
.btn-convert{padding:10px 28px;font-size:15px;font-weight:600;border-radius:var(--radius);background:var(--accent);border:none;color:white;cursor:pointer;font-family:inherit;transition:all .2s;box-shadow:0 2px 8px rgba(45,90,39,.25)}
.btn-convert:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.btn-convert:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
.validation-warn{background:var(--warning-light);border:1px solid var(--warning);border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:1rem;font-size:13px}
.validation-warn ul{margin:.4rem 0 0 1.2rem;font-size:12px;color:var(--text-muted)}
.progress-wrap{margin:.75rem 0}
.progress-label{display:flex;justify-content:space-between;font-size:12px;color:var(--text-hint);margin-bottom:4px}
.progress-track{height:5px;background:var(--surface2);border-radius:99px;overflow:hidden}
.progress-bar{height:100%;background:var(--accent);border-radius:99px;width:0%;transition:width .15s ease}
.result-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;margin-top:.75rem}
.result-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;flex-wrap:wrap;gap:8px}
.result-stats{display:flex;gap:1.25rem}.stat{text-align:center}
.stat-value{font-size:20px;font-weight:600;color:var(--accent);font-family:'DM Mono',monospace}
.stat-label{font-size:11px;color:var(--text-hint);text-transform:uppercase;letter-spacing:.5px}
.result-log{max-height:160px;overflow-y:auto;background:var(--bg);border-radius:var(--radius-sm);padding:8px 10px}
.log-item{font-size:11px;font-family:'DM Mono',monospace;padding:1px 0;color:var(--text-muted)}
.log-item.replaced{color:var(--accent)}.log-item.unmapped{color:var(--warning)}.log-item.vlookup{color:var(--purple)}
.unmapped-panel{margin-top:.75rem;background:var(--warning-light);border:1px solid var(--warning);border-radius:var(--radius);padding:.9rem 1.1rem}
.unmapped-panel h4{font-size:13px;font-weight:600;color:var(--warning);margin-bottom:.6rem}
.unmapped-list{display:flex;flex-direction:column;gap:5px;max-height:200px;overflow-y:auto;margin-bottom:.6rem}
.unmapped-row{display:flex;align-items:center;gap:7px}
.unmapped-col-label{font-size:11px;color:var(--text-hint);white-space:nowrap;min-width:60px;overflow:hidden;text-overflow:ellipsis}
.unmapped-val{font-family:'DM Mono',monospace;font-size:12px;background:var(--surface);border:1px solid var(--warning);border-radius:var(--radius-sm);padding:3px 7px;min-width:80px;color:var(--text)}
.unmapped-arrow{font-size:13px;color:var(--text-hint)}
.unmapped-tgt{font-family:inherit;font-size:12px;padding:4px 8px;border-radius:var(--radius-sm);border:1px solid var(--warning);background:var(--surface);outline:none;color:var(--text);flex:1}
.unmapped-tgt:focus{border-color:var(--accent)}
.unmapped-count{font-size:11px;color:var(--text-hint);white-space:nowrap}
.add-column-area{border:2px dashed var(--border);border-radius:var(--radius);padding:1.25rem;text-align:center;cursor:pointer;transition:all .2s;color:var(--text-muted)}
.add-column-area:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-light)}
.add-column-area .plus{font-size:22px;line-height:1;margin-bottom:3px}.add-column-area p{font-size:13px;font-weight:500}

/* ── Modals ── */
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:200;display:flex;align-items:center;justify-content:center;padding:1rem}
.modal{background:var(--surface);border-radius:var(--radius);width:100%;max-width:900px;max-height:82vh;display:flex;flex-direction:column;box-shadow:0 8px 32px rgba(0,0,0,.25)}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.25rem;border-bottom:1px solid var(--border)}
.modal-header h3{font-size:15px;font-weight:600}
.modal-close{width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;font-size:18px;color:var(--text-hint);cursor:pointer;display:flex;align-items:center;justify-content:center}
.modal-close:hover{background:var(--surface2)}.modal-body{padding:1.25rem;overflow:auto;flex:1}
.modal-footer{padding:.9rem 1.25rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}
/* ── Help modal ── */
.help-modal{max-width:680px}
.help-tabs{display:flex;gap:4px;padding:1rem 1.25rem .5rem;border-bottom:1px solid var(--border)}
.help-tab{padding:6px 16px;border-radius:99px;border:1px solid transparent;font-family:inherit;font-size:13px;font-weight:500;color:var(--text-muted);cursor:pointer;background:transparent;transition:all .15s}
.help-tab:hover{background:var(--surface2);color:var(--text)}
.help-tab.active{border-color:var(--accent-border);background:var(--accent-light);color:var(--accent)}
.help-section{display:none;padding:1.25rem}.help-section.active{display:block}
.help-section h3{font-size:15px;font-weight:600;margin-bottom:.25rem;color:var(--text)}
.help-section .help-sub{font-size:12px;color:var(--text-muted);margin-bottom:1.25rem}
.help-steps{display:flex;flex-direction:column;gap:.75rem}
.help-step{display:flex;gap:12px;align-items:flex-start}
.help-step-num{width:24px;height:24px;border-radius:50%;background:var(--accent);color:white;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}
.help-step-body{flex:1}
.help-step-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:2px}
.help-step-desc{font-size:12px;color:var(--text-muted);line-height:1.6}
.help-step-desc code{font-family:"DM Mono",monospace;font-size:11px;background:var(--surface2);padding:1px 5px;border-radius:3px;color:var(--text)}
.help-divider{height:1px;background:var(--border);margin:1rem 0}
.help-note{background:var(--info-light);border:1px solid var(--info);border-radius:var(--radius-sm);padding:10px 14px;font-size:12px;color:var(--info);margin-top:1rem}
.help-tip-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.75rem}
.help-tip-card{background:var(--surface2);border-radius:var(--radius-sm);padding:10px 12px}
.help-tip-card-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-hint);margin-bottom:6px}
.help-tip-card p{font-size:12px;color:var(--text-muted);line-height:1.6}
.preview-table-wrap{overflow-x:auto}.preview-table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}
.preview-table th{background:var(--surface2);padding:6px 10px;text-align:left;font-weight:600;border:1px solid var(--border);position:sticky;top:0}
.preview-table td{padding:5px 10px;border:1px solid var(--border)}
.preview-table td.changed{background:var(--accent-light);color:var(--accent);font-weight:500}
.preview-table td.vl-changed{background:var(--purple-light);color:var(--purple);font-weight:500}
.preview-table tr:nth-child(even) td{background:var(--surface2)}
.preview-table tr:nth-child(even) td.changed{background:var(--accent-light)}
.preview-table tr:nth-child(even) td.vl-changed{background:var(--purple-light)}
.imp-use-sample-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--accent-light);border:1px solid var(--accent-border);border-radius:var(--radius-sm);margin-bottom:1rem;cursor:pointer;user-select:none}
.imp-use-sample-row input[type="checkbox"]{width:15px;height:15px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}
.imp-use-sample-label{font-size:13px;font-weight:500;color:var(--accent)}
.imp-use-sample-hint{font-size:11px;color:var(--text-muted);margin-top:1px}
.imp-col-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px;margin:.75rem 0;max-height:340px;overflow-y:auto}
.imp-col-chip{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg);cursor:pointer;transition:all .15s;user-select:none}
.imp-col-chip:hover{border-color:var(--border-strong);background:var(--surface2)}.imp-col-chip.selected{background:var(--accent-light);border-color:var(--accent-border)}
.imp-col-chip input[type="checkbox"]{display:block;width:14px;height:14px;accent-color:var(--accent);flex-shrink:0;cursor:pointer}
.imp-col-chip-name{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.imp-col-chip.selected .imp-col-chip-name{color:var(--accent)}
.imp-col-chip-count{font-size:11px;color:var(--text-hint);white-space:nowrap}
.imp-modal-sel-actions{display:flex;gap:6px;margin-bottom:.5rem}

/* ── History ── */
.history-list-wrap{display:flex;flex-direction:column;gap:8px}
.history-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.9rem 1.25rem;display:flex;align-items:center;gap:1rem}
.history-icon{font-size:22px;flex-shrink:0}.history-info{flex:1;min-width:0}
.history-filename{font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.history-meta{font-size:12px;color:var(--text-hint);margin-top:2px}
.history-stats{display:flex;gap:1rem;flex-shrink:0}.history-stat{text-align:center}
.history-stat-val{font-size:16px;font-weight:600;font-family:'DM Mono',monospace;color:var(--accent)}
.history-stat-lbl{font-size:10px;color:var(--text-hint);text-transform:uppercase;letter-spacing:.4px}

/* ── Toast ── */
.toast{position:fixed;bottom:2rem;right:2rem;padding:10px 18px;background:var(--text);color:var(--bg);border-radius:var(--radius-sm);font-size:13px;font-weight:500;transform:translateY(100px);opacity:0;transition:all .3s;z-index:999;max-width:320px}
.toast.show{transform:translateY(0);opacity:1}.toast.success{background:var(--accent);color:white}.toast.error{background:var(--danger);color:white}
.empty-state{text-align:center;padding:3rem 2rem;color:var(--text-hint)}
.empty-state .icon{font-size:40px;margin-bottom:.75rem}
.empty-state h3{font-size:15px;font-weight:600;color:var(--text-muted);margin-bottom:4px}
input[type="file"]{display:none}

/* ══════════════════════════════════════════════
   FILE DIFFER
══════════════════════════════════════════════ */
.differ-page{max-width:1100px}
.differ-page h2{font-size:19px;font-weight:600;letter-spacing:-.3px;margin-bottom:4px}
.differ-page .page-sub{font-size:13px;color:var(--text-muted);margin-bottom:1.5rem}

.differ-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.25rem}
.differ-drop{border:2px dashed var(--border);border-radius:var(--radius);padding:1.5rem 1rem;text-align:center;cursor:pointer;transition:all .2s;background:var(--surface)}
.differ-drop:hover,.differ-drop.dragover{border-color:var(--accent);background:var(--accent-light)}
.differ-drop.loaded-a{border-color:var(--info);border-style:solid;background:var(--info-light)}
.differ-drop.loaded-b{border-color:var(--purple);border-style:solid;background:var(--purple-light)}
.differ-drop-icon{font-size:26px;margin-bottom:6px}
.differ-drop h3{font-size:13px;font-weight:600;margin-bottom:2px}
.differ-drop p{font-size:12px;color:var(--text-hint)}
.differ-drop-meta{font-size:11px;color:var(--text-hint);margin-top:4px}
.differ-fname{font-family:'DM Mono',monospace;font-size:11px;margin-top:5px;word-break:break-all;font-weight:500}
.differ-fname-a{color:var(--info)}.differ-fname-b{color:var(--purple)}

.differ-config-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1.25rem;display:flex;align-items:flex-end;gap:1rem;flex-wrap:wrap}
.differ-field{display:flex;flex-direction:column;gap:5px}
.differ-field label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-hint)}
.differ-select{padding:7px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);font-family:inherit;font-size:13px;background:var(--bg);color:var(--text);outline:none;cursor:pointer;min-width:140px}
.differ-select:focus{border-color:var(--accent)}
.differ-key-hint{font-size:11px;color:var(--text-hint);margin-top:3px}

.differ-header-warn{background:var(--warning-light);border:1px solid var(--warning);border-radius:var(--radius-sm);padding:8px 12px;margin-bottom:1rem;font-size:12px;color:var(--warning)}

.differ-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:1rem}
.differ-summary-card{border-radius:var(--radius-sm);padding:12px;text-align:center;cursor:pointer;transition:opacity .15s}
.differ-summary-card:hover{opacity:.8}
.differ-summary-card.dim{opacity:.4}
.dsc-added{background:var(--accent-light);color:var(--accent)}
.dsc-removed{background:var(--danger-light);color:var(--danger)}
.dsc-changed{background:var(--warning-light);color:var(--warning)}
.dsc-same{background:var(--surface2);color:var(--text-muted)}
.dsc-val{font-size:24px;font-weight:600;font-family:'DM Mono',monospace;display:block;margin-bottom:2px}
.dsc-lbl{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}

.differ-legend{display:flex;gap:1rem;margin-bottom:.75rem;flex-wrap:wrap;font-size:12px;color:var(--text-muted);align-items:center}
.differ-legend-item{display:flex;align-items:center;gap:5px}
.legend-dot{width:10px;height:10px;border-radius:2px;flex-shrink:0}
.dot-added{background:var(--info-light);border:1px solid var(--info)}
.dot-removed{background:var(--warning-light);border:1px solid var(--warning)}
.dot-changed{background:var(--purple-light);border:1px solid var(--purple-border)}
.dot-same{background:var(--surface2);border:1px solid var(--border)}
.differ-legend-sep{color:var(--border-strong)}

.differ-table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:auto;max-height:540px}
.differ-table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}
.differ-table th{background:var(--surface2);padding:7px 10px;text-align:left;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1}
.differ-table th.th-row{width:52px;color:var(--text-hint)}
.differ-table th.th-status{width:90px}
.differ-table td{padding:0;border-bottom:1px solid var(--border);vertical-align:top}
.differ-table tr:last-child td{border-bottom:none}
.differ-table .td-row{padding:6px 8px;text-align:right;font-family:'DM Mono',monospace;font-size:10px;color:var(--text-hint);width:52px;border-right:1px solid var(--border);background:var(--surface2)}
.differ-table .td-status{padding:6px 8px;width:90px;border-right:1px solid var(--border)}
.differ-table .td-cell{padding:5px 10px}
.differ-table tr.row-onlya .td-row,.differ-table tr.row-onlya .td-cell{background:var(--info-light)}
.differ-table tr.row-onlya .td-status{background:var(--info-light)}
.differ-table tr.row-onlyb .td-row,.differ-table tr.row-onlyb .td-cell{background:var(--warning-light)}
.differ-table tr.row-onlyb .td-status{background:var(--warning-light)}
.differ-table tr.row-changed .td-row,.differ-table tr.row-changed .td-cell{background:var(--purple-light)}
.differ-table tr.row-changed .td-status{background:var(--purple-light)}
.differ-table tr.row-same .td-row,.differ-table tr.row-same .td-cell{background:var(--surface)}
.differ-table tr.row-same .td-status{background:var(--surface)}
/* Changed cell: show old strikethrough above new value */
.differ-table td.cell-changed .td-cell{background:transparent}
.cell-old{display:block;font-size:10px;color:var(--text-hint);text-decoration:line-through;margin-bottom:2px;white-space:nowrap}
.cell-new{display:block;font-weight:500;color:var(--warning);white-space:nowrap}
[data-theme="dark"] .cell-new{color:var(--warning)}
.row-status-badge{font-size:10px;font-weight:600;padding:2px 7px;border-radius:99px;white-space:nowrap;display:inline-block}
.rs-only-a{background:var(--info);color:white}
.rs-only-b{background:var(--warning);color:white}
.rs-changed{background:var(--warning);color:white}
.rs-same{background:var(--border);color:var(--text-muted)}

.differ-actions{display:flex;gap:.75rem;align-items:center;margin-bottom:.75rem;flex-wrap:wrap}
.differ-filter-btns{display:flex;gap:4px}
.differ-filter-btn{padding:4px 12px;border-radius:99px;border:1px solid var(--border);background:var(--surface2);font-family:inherit;font-size:12px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s}
.differ-filter-btn:hover{border-color:var(--border-strong);color:var(--text)}
.differ-filter-btn.active{background:var(--accent-light);border-color:var(--accent-border);color:var(--accent)}
.differ-info-bar{font-size:12px;color:var(--text-hint);padding:8px 12px;background:var(--surface2);border-radius:var(--radius-sm);margin-bottom:.75rem}

/* ── Top-level mode chooser ── */
.cmp-mode-chooser{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:1.5rem}
.cmp-mode-card{border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;cursor:pointer;transition:all .15s;background:var(--surface)}
.cmp-mode-card:hover{border-color:var(--border-strong);background:var(--surface2)}
.cmp-mode-card.active{border:2px solid var(--info);background:var(--info-light)}
.cmp-mode-card-icon{font-size:20px;margin-bottom:8px}
.cmp-mode-card-title{font-size:14px;font-weight:600;margin-bottom:4px;color:var(--text)}
.cmp-mode-card.active .cmp-mode-card-title{color:var(--info)}
.cmp-mode-card-desc{font-size:12px;color:var(--text-muted);line-height:1.5}

/* ── Single-file column compare ── */
.single-col-chip{padding:3px 10px;border-radius:99px;border:1px solid var(--border);background:var(--surface2);font-size:11px;font-family:'DM Mono',monospace;color:var(--text-muted);cursor:pointer;transition:all .15s;user-select:none}
.single-col-chip:hover{border-color:var(--border-strong);color:var(--text)}
.scc-0{background:var(--info-light)!important;border-color:var(--info)!important;color:var(--info)!important;font-weight:500}
.scc-1{background:var(--warning-light)!important;border-color:var(--warning)!important;color:var(--warning)!important;font-weight:500}
.scc-2{background:var(--accent-light)!important;border-color:var(--accent-border)!important;color:var(--accent)!important;font-weight:500}
.scc-3{background:var(--purple-light)!important;border-color:var(--purple-border)!important;color:var(--purple)!important;font-weight:500}

.single-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:1rem}
.single-sum-chip{padding:5px 14px;border-radius:99px;font-size:12px;font-weight:600;border:1px solid transparent;cursor:pointer;transition:all .15s;position:relative;box-shadow:inset 0 0 0 0 transparent}
.single-sum-chip:hover{transform:translateY(-1px)}
.single-sum-chip.dim{opacity:.32}
.single-sum-chip.active{opacity:1;transform:translateY(-1px);box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--border-strong),var(--shadow)}
.ssc-match{background:var(--accent-light);border-color:var(--accent-border);color:var(--accent)}
.ssc-diff {background:var(--danger-light);border-color:var(--danger);color:var(--danger)}
.ssc-empty{background:var(--surface2);border-color:var(--border);color:var(--text-muted)}
.ssc-all{background:var(--info-light);border-color:var(--info);color:var(--info)}

.single-actions{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1rem}
.single-actions-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--text-hint);margin-bottom:.75rem}
.single-actions-grid{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:.75rem}
.color-action-btn{padding:7px 14px;border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--surface2);font-family:inherit;font-size:12px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:8px;position:relative}
.color-action-btn:hover{border-color:var(--border-strong);color:var(--text);background:var(--surface)}
.color-action-btn.active{border:2px solid var(--accent);background:var(--accent-light);color:var(--accent);font-weight:600;box-shadow:0 0 0 3px var(--accent-border)}
.color-action-btn.active::after{content:"✓";position:absolute;top:-7px;right:-7px;width:16px;height:16px;background:var(--accent);color:white;border-radius:50%;font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:16px;text-align:center}
.color-action-btn .swatch{width:12px;height:12px;border-radius:3px;flex-shrink:0}
.sw-green{background:#92D050}.sw-red{background:#FF7F7F}.sw-blue{background:#9DC3E6}.sw-amber{background:#FFD966}.sw-teal{background:#A9D18E}.sw-purple{background:#C5A3D4}

.single-table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:auto;max-height:520px}
.single-table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}
.single-table th{background:var(--surface2);padding:7px 10px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--text-hint);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1}
.single-table td{padding:6px 10px;border-bottom:1px solid var(--border)}
.single-table tr:last-child td{border-bottom:none}
.single-table tr:hover td{background:var(--surface2)}
.single-table .td-row{width:40px;text-align:right;font-family:'DM Mono',monospace;font-size:10px;color:var(--text-hint);border-right:1px solid var(--border);padding-right:8px}
.single-table .td-status{width:90px}
.match-pill{font-size:10px;font-weight:600;padding:2px 8px;border-radius:99px;display:inline-block}
.mp-match{background:var(--accent-light);color:var(--accent)}
.mp-diff {background:var(--danger-light);color:var(--danger)}
.mp-empty{background:var(--surface2);color:var(--text-muted)}
.tr-match td{background:var(--surface)}
.tr-diff  td{background:var(--danger-light)}
.tr-empty td{background:var(--warning-light)}

/* ── Compare mode bar ── */
.compare-mode-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.25rem}
.compare-mode-tabs{display:flex;gap:6px}
.compare-mode-tab{padding:7px 16px;border-radius:99px;border:1px solid var(--border);background:var(--surface);font-family:inherit;font-size:13px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:6px}
.compare-mode-tab:hover{border-color:var(--border-strong);color:var(--text);background:var(--surface2)}
.compare-mode-tab.active{border-color:var(--info);background:var(--info-light);color:var(--info)}
.compare-sheet-selectors{display:flex;gap:10px;align-items:flex-end}

/* ── Structure panel ── */
.structure-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}
.structure-file-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}
.structure-file-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;margin-bottom:1rem}
.label-a{color:var(--info)}.label-b{color:var(--warning)}
.structure-metric{display:flex;justify-content:space-between;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--border)}
.structure-metric:last-child{border-bottom:none}
.structure-metric-name{font-size:12px;color:var(--text-muted)}
.structure-metric-val{font-size:14px;font-weight:600;font-family:'DM Mono',monospace;color:var(--text)}
.structure-metric-val.has-diff{color:var(--danger)}
.delta-badge{font-size:10px;font-weight:600;padding:1px 6px;border-radius:99px;margin-left:6px;display:inline-block}
.delta-pos{background:var(--danger-light);color:var(--danger)}
.delta-neg{background:var(--accent-light);color:var(--accent)}
.delta-ok{background:var(--accent-light);color:var(--accent)}
.structure-cols-section{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}
.structure-cols-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-hint);margin-bottom:6px}
.structure-col-list{display:flex;flex-wrap:wrap;gap:4px}
.structure-col-chip{font-size:11px;font-family:'DM Mono',monospace;padding:2px 8px;border-radius:99px;background:var(--surface2);border:1px solid var(--border);color:var(--text-muted)}
.structure-col-chip.only-a{background:var(--info-light);border-color:var(--info);color:var(--info)}
.structure-col-chip.only-b{background:var(--warning-light);border-color:var(--warning);color:var(--warning)}
.structure-col-chip.shared{background:var(--surface2);color:var(--text-muted)}
.structure-legend{display:flex;gap:1rem;font-size:12px;color:var(--text-muted);margin-top:.75rem;flex-wrap:wrap}
.structure-legend-item{display:flex;align-items:center;gap:5px}

/* ── Data compare panel ── */
.data-compare-table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.data-compare-table{width:100%;border-collapse:collapse;font-size:12px}
.data-compare-table th{background:var(--surface2);padding:8px 12px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--text-hint);border-bottom:1px solid var(--border)}
.data-compare-table td{padding:8px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
.data-compare-table tr:last-child td{border-bottom:none}
.data-compare-table tr:hover td{background:var(--surface2)}
.dc-col-name{font-family:'DM Mono',monospace;font-weight:500;font-size:12px;color:var(--text)}
.dc-count{font-family:'DM Mono',monospace;font-size:12px;color:var(--text-muted)}
.dc-count-a{color:var(--info)}.dc-count-b{color:var(--warning)}
.dc-match-pill{font-size:10px;font-weight:600;padding:2px 8px;border-radius:99px;white-space:nowrap;display:inline-block}
.dc-identical{background:var(--accent-light);color:var(--accent)}
.dc-new-vals{background:var(--warning-light);color:var(--warning)}
.dc-changed{background:var(--info-light);color:var(--info)}
.dc-only-a{background:var(--danger-light);color:var(--danger)}
.dc-only-b{background:var(--danger-light);color:var(--danger)}
.dc-pct-bar-wrap{width:80px;height:6px;background:var(--surface2);border-radius:99px;overflow:hidden;display:inline-block;vertical-align:middle;margin-right:6px}
.dc-pct-bar{height:100%;border-radius:99px;background:var(--accent)}
.dc-pct-bar.low{background:var(--warning)}
.dc-pct-bar.none{background:var(--danger)}

/* ── Row diff controls ── */
.rd-controls-bar{display:flex;gap:1rem;align-items:flex-start;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1rem}
.rd-col-filter{flex:1;min-width:220px}
.rd-col-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.rd-col-chip{padding:3px 10px;border-radius:99px;border:1px solid var(--border);background:var(--surface2);font-size:11px;font-family:'DM Mono',monospace;color:var(--text-muted);cursor:pointer;transition:all .15s;user-select:none}
.rd-col-chip:hover{border-color:var(--border-strong);color:var(--text)}
.rd-col-chip.active{background:var(--info-light);border-color:var(--info);color:var(--info);font-weight:500}

/* ── Row diff summary chips ── */
.rd-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:1rem}
.rd-sum-chip{padding:5px 14px;border-radius:99px;font-size:12px;font-weight:600;cursor:pointer;border:1px solid transparent;transition:opacity .15s;user-select:none}
.rd-sum-chip:hover{opacity:.8}
.rd-sum-chip.dim{opacity:.32}
.rsc-a   {background:var(--info-light);border-color:var(--info);color:var(--info)}
.rsc-b   {background:var(--warning-light);border-color:var(--warning);color:var(--warning)}
.rsc-chg {background:var(--purple-light);border-color:var(--purple-border);color:var(--purple)}
.rsc-same{background:var(--surface2);border-color:var(--border);color:var(--text-muted)}

/* Status badges — updated language */
.rs-only-a  {background:var(--info);color:white}
.rs-only-b  {background:var(--warning);color:white}
.rs-changed {background:var(--purple);color:white}
.rs-same    {background:var(--border);color:var(--text-muted)}

/* ════════════════════════════════════════════
   X1 FORGE
════════════════════════════════════════════ */
.forge-page{max-width:none;display:flex;flex-direction:column;gap:1rem}
.forge-page h2,.forge-page .page-sub{display:none}

/* Sidebar helper card */
.forge-helper-card,.compare-helper-card,.mapper-helper-card{background:var(--surface2);border-radius:var(--radius-sm);padding:10px 12px;margin-top:10px}
.forge-helper-title,.compare-helper-title,.mapper-helper-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--text-hint);margin-bottom:7px}
.forge-helper-item,.compare-helper-item,.mapper-helper-item{font-size:12px;color:var(--text-muted);line-height:1.6;padding:1px 0}

/* Forge upload / setup */
.forge-upload-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1rem 1.1rem;box-shadow:var(--shadow)}
.forge-upload-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.85rem;flex-wrap:wrap}
.forge-upload-title{font-size:16px;font-weight:700;letter-spacing:-.2px}
.forge-upload-sub{font-size:12px;color:var(--text-muted);margin-top:2px;max-width:720px}
.forge-upload-zone{border:1.5px dashed color-mix(in srgb,var(--accent) 28%, var(--border));border-radius:14px;padding:1.9rem 1.5rem;text-align:center;cursor:pointer;transition:all .18s;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%, var(--accent-light)) 0%, var(--surface) 100%);box-shadow:0 1px 0 rgba(255,255,255,.7) inset}
.forge-upload-zone:hover,.forge-upload-zone.dragover{border-color:color-mix(in srgb,var(--accent) 58%, var(--border-strong));background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 90%, var(--accent-light)) 0%, color-mix(in srgb,var(--surface) 98%, var(--accent-light)) 100%)}
.forge-upload-zone.loaded{border-color:var(--accent);border-style:solid}
.forge-upload-icon{font-size:27px;margin-bottom:8px}
.forge-upload-zone h3{font-size:14px;font-weight:700;margin-bottom:4px;letter-spacing:-.1px}
.forge-upload-zone p{font-size:12px;color:var(--text-hint)}
.forge-file-name{font-family:"DM Mono",monospace;font-size:11px;color:var(--accent);margin-top:8px;font-weight:600;word-break:break-all}

.forge-setup-strip{display:flex;flex-direction:column;gap:.8rem;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1rem 1.1rem;box-shadow:var(--shadow)}
.forge-setup-main{display:flex;align-items:flex-start;justify-content:space-between;gap:.9rem;flex-wrap:wrap}
.forge-setup-chips{display:flex;gap:8px;flex-wrap:wrap}
.forge-summary-chip{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:12px;border:1px solid var(--border);background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb,var(--surface) 95%, var(--surface2)) 100%);font-size:12px;color:var(--text-muted)}
.forge-summary-chip strong{color:var(--text);font-weight:700}
.forge-setup-actions{display:flex;gap:8px;flex-wrap:wrap}
.forge-sheet-bar{display:flex;flex-wrap:wrap;gap:7px;align-items:center;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface2)}
.forge-sheet-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.55px;color:var(--text-hint);margin-right:2px}

.forge-col-section-card{border:1px solid var(--border);border-radius:16px;background:var(--surface);padding:1rem 1.1rem;box-shadow:var(--shadow)}
.forge-section-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:.65rem;flex-wrap:wrap;gap:10px}
.forge-section-title{font-size:15px;font-weight:700;color:var(--text);letter-spacing:-.18px}
.forge-section-sub{font-size:12px;color:var(--text-hint);margin-top:2px;max-width:760px}
.forge-section-actions{display:flex;gap:6px;flex-wrap:wrap}
.forge-col-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(136px,1fr));gap:6px;max-height:204px;overflow:auto;padding-right:4px;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}
.forge-col-grid::-webkit-scrollbar{width:8px}
.forge-col-grid::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}
.forge-col-grid::-webkit-scrollbar-track{background:transparent}
.forge-col-chip{border:1px solid var(--border);border-radius:10px;padding:8px 9px;cursor:pointer;transition:all .15s;background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb,var(--surface) 95%, var(--surface2)) 100%);user-select:none;box-shadow:0 1px 0 rgba(255,255,255,.6) inset}
.forge-col-chip:hover{border-color:var(--border-strong);background:var(--surface2)}
.forge-col-chip.selected{border-color:color-mix(in srgb,var(--accent) 62%, var(--border));background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 72%, var(--accent-light)) 0%, color-mix(in srgb,var(--surface) 88%, var(--accent-light)) 100%);box-shadow:inset 3px 0 0 var(--accent)}
.forge-col-name{font-size:11px;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:1px}
.forge-col-chip.selected .forge-col-name{color:var(--accent)}
.forge-col-meta{font-size:10px;color:var(--text-hint)}
.forge-col-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.forge-badge{font-size:9px;font-weight:700;padding:2px 6px;border-radius:999px;white-space:nowrap}
.fb-blank{background:var(--warning-light);color:var(--warning)}
.fb-dupe{background:var(--danger-light);color:var(--danger)}
.fb-space{background:var(--info-light);color:var(--info)}

/* Forge workbench */
.forge-workbench{display:grid;grid-template-columns:minmax(320px,360px) minmax(0,1fr);gap:1rem;align-items:stretch;height:clamp(560px,72vh,720px);min-height:0}
.forge-left-panel,.forge-right-panel{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow)}
.forge-right-panel{padding:1rem 1.05rem;display:flex;flex-direction:column;gap:.75rem;min-height:0;height:100%;overflow:hidden;min-width:0}
.forge-panel-title{font-size:15px;font-weight:700;letter-spacing:-.18px}
.forge-panel-sub{font-size:12px;color:var(--text-muted);margin-top:2px}
.forge-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;flex-wrap:wrap;flex-shrink:0}
.forge-search{width:100%;padding:8px 11px;border-radius:10px;border:1px solid var(--border);font-family:inherit;font-size:13px;background:var(--bg);color:var(--text);outline:none}
.forge-search:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%, transparent)}
.forge-filter-row{display:flex;gap:6px;flex-wrap:wrap;flex-shrink:0}
.forge-filter-pill{padding:5px 9px;border-radius:10px;border:1px solid var(--border);background:var(--surface2);font-family:inherit;font-size:11px;font-weight:700;color:var(--text-muted);cursor:pointer;transition:all .15s}
.forge-filter-pill:hover{border-color:var(--border-strong);color:var(--text)}
.forge-filter-pill.active{background:var(--accent-light);border-color:var(--accent-border);color:var(--accent)}
.forge-block{display:flex;flex-direction:column;gap:.6rem;min-height:0}
.forge-block-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;flex-shrink:0}
.forge-block-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.62px;color:var(--text-hint)}
.forge-count-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:999px;background:var(--surface2);border:1px solid var(--border);font-size:11px;font-weight:700;color:var(--text-muted)}
.forge-empty-note{padding:10px 11px;border-radius:12px;border:1px dashed var(--border-strong);background:color-mix(in srgb,var(--surface2) 72%, var(--surface));font-size:11px;color:var(--text-muted);line-height:1.5}

.forge-active-list,.forge-library-list,.forge-picker-library-list{gap:6px}
.forge-block-active{display:flex;flex-direction:column;gap:.6rem;}

/* Forge left panel — Figma pattern: flex column, header shrink-0, list flex-1 scroll */
.forge-left-panel{
  display:flex;
  flex-direction:column;
  height:100%;
  min-height:0;
  overflow:hidden;
  min-width:0;
}
.forge-inner-view{
  display:flex;
  flex-direction:column;
  height:100%;
  min-height:0;
  overflow:hidden;
  padding:1rem 1.05rem;
  gap:.75rem;
}
/* The scrollable list — flex:1 fills all remaining space, overflow-y:auto scrolls */
.forge-scroll-list{
  flex:1;
  overflow-y:auto;
  overflow-x:hidden;
  padding-right:6px;
  scrollbar-width:thin;
  scrollbar-color:var(--border-strong) transparent;
}
.forge-scroll-list::-webkit-scrollbar{width:6px}
.forge-scroll-list::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px}
.forge-scroll-list::-webkit-scrollbar-track{background:transparent}
.forge-picker-close{padding:6px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface2);cursor:pointer;font-size:12px;font-weight:600;color:var(--text-muted);white-space:nowrap}
.forge-picker-close:hover{border-color:var(--border-strong);color:var(--text)}
.forge-add-action-btn{display:inline-flex;align-items:center;gap:6px}
.forge-add-action-btn:disabled{opacity:.55;cursor:not-allowed}

.forge-active-card{border:1px solid var(--border);border-radius:11px;background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb,var(--surface) 95%, var(--surface2)) 100%);overflow:hidden}
.forge-active-card.active{border-color:color-mix(in srgb,var(--accent) 60%, var(--border));box-shadow:inset 3px 0 0 var(--accent)}
.forge-active-card.active-danger{border-color:color-mix(in srgb,var(--danger) 56%, var(--border));box-shadow:inset 3px 0 0 var(--danger)}
.forge-active-head{display:flex;align-items:center;gap:9px;padding:8px 10px}
.forge-active-icon{font-size:14px;width:22px;height:18px;display:flex;align-items:center;justify-content:center;text-align:center;flex-shrink:0;line-height:1}
.forge-active-main{flex:1;min-width:0}
.forge-active-name{font-size:12px;font-weight:700;color:var(--text)}
.forge-active-card.active .forge-active-name{color:var(--accent)}
.forge-active-card.active-danger .forge-active-name{color:var(--danger)}
.forge-active-desc{font-size:10px;color:var(--text-hint);margin-top:1px;line-height:1.35}
.forge-active-tag{font-size:9px;font-weight:700;padding:2px 6px;border-radius:999px;background:var(--surface2);color:var(--text-hint);white-space:nowrap;flex-shrink:0;border:1px solid color-mix(in srgb,var(--border) 78%, transparent)}
.forge-active-remove{margin-left:auto;width:24px;height:24px;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--text-hint);cursor:pointer;font-size:15px;display:flex;align-items:center;justify-content:center;transition:all .15s}
.forge-active-remove:hover{background:var(--danger-light);border-color:var(--danger);color:var(--danger)}
.forge-action-extra{padding:0 10px 10px 41px;display:none}
.forge-action-extra.open{display:block}
.forge-extra-label{font-size:10px;color:var(--text-hint);margin-bottom:4px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.forge-extra-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.forge-extra-row:last-child{margin-bottom:0}
.forge-extra-input,.forge-extra-select{padding:6px 9px;border-radius:8px;border:1px solid var(--border);font-family:inherit;font-size:11px;background:var(--bg);color:var(--text);outline:none}
.forge-extra-input:focus,.forge-extra-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%, transparent)}

.forge-library-group{border:1px solid var(--border);border-radius:11px;background:var(--surface);overflow:hidden}
.forge-library-group-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:8px 10px;background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb,var(--surface) 94%, var(--surface2)) 100%);border-bottom:1px solid var(--border)}
.forge-library-group-title{font-size:11px;font-weight:700;color:var(--text)}
.forge-library-group-count{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.55px;color:var(--text-hint)}
.forge-library-items{display:flex;flex-direction:column;gap:0;padding:4px}
.forge-library-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:9px;border:1px solid transparent;background:transparent;cursor:pointer;transition:all .15s;min-height:38px}
.forge-library-item:hover{background:var(--surface2);border-color:color-mix(in srgb,var(--border) 84%, transparent)}
.forge-library-item.active{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 78%, var(--accent-light)) 0%, color-mix(in srgb,var(--surface) 92%, var(--accent-light)) 100%);border-color:color-mix(in srgb,var(--accent) 60%, var(--border))}
.forge-library-item.active-danger{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 80%, var(--danger-light)) 0%, color-mix(in srgb,var(--surface) 94%, var(--danger-light)) 100%);border-color:color-mix(in srgb,var(--danger) 56%, var(--border))}
.forge-library-item.disabled{opacity:.55;cursor:not-allowed}
.forge-library-item.disabled:hover{background:transparent;border-color:transparent}
.forge-library-icon{font-size:14px;width:20px;height:18px;display:flex;align-items:center;justify-content:center;text-align:center;flex-shrink:0;line-height:1}
.forge-library-main{flex:1;min-width:0}
.forge-library-name{font-size:12px;font-weight:600;color:var(--text);line-height:1.25}
.forge-library-item.active .forge-library-name{color:var(--accent)}
.forge-library-item.active-danger .forge-library-name{color:var(--danger)}
.forge-library-desc{font-size:10px;color:var(--text-hint);line-height:1.3;margin-top:1px}
.forge-library-meta{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:4px}
.forge-action-affects{font-size:9px;font-weight:700;padding:2px 6px;border-radius:999px;background:var(--surface2);color:var(--text-hint);white-space:nowrap;border:1px solid color-mix(in srgb,var(--border) 78%, transparent)}
.forge-library-item.active .forge-action-affects{background:var(--accent-light);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 28%, var(--border))}
.forge-library-item.active-danger .forge-action-affects{background:var(--danger-light);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 24%, var(--border))}
.forge-suggested-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 6px;border-radius:999px;background:var(--accent-light);border:1px solid var(--accent-border);color:var(--accent);font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.38px}
.forge-suggested-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent)}

.forge-preview-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.forge-preview-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.forge-preview-modes{display:flex;gap:6px;flex-wrap:wrap}
.forge-preview-mode{padding:6px 10px;border-radius:10px;border:1px solid var(--border);background:var(--surface2);font-family:inherit;font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .15s}
.forge-preview-mode:hover{border-color:var(--border-strong);color:var(--text)}
.forge-preview-mode.active{background:var(--accent-light);border-color:var(--accent-border);color:var(--accent)}
.forge-preview-summary{font-size:12px;color:var(--text-muted)}
.forge-preview-surface{flex:1;min-height:0;border:1px solid var(--border);border-radius:14px;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 98%, var(--surface2)) 0%, var(--surface) 100%);overflow:auto;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.forge-preview-empty{min-height:420px;display:flex;align-items:center;justify-content:center;text-align:center;padding:1.5rem;color:var(--text-muted);font-size:13px}
.forge-preview-empty strong{display:block;color:var(--text);font-size:14px;margin-bottom:6px}
.forge-preview-panel{padding:12px;min-height:100%;display:flex;flex-direction:column}
.forge-preview-caption{font-size:11px;color:var(--text-hint);margin-bottom:10px}
.forge-preview-table-wrap{flex:1 1 auto;min-height:0;border:1px solid var(--border);border-radius:12px;background:var(--surface);scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}
.forge-preview-table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap;min-width:540px}
.forge-preview-table th{background:var(--surface2);padding:7px 10px;text-align:left;font-weight:700;border-bottom:1px solid var(--border);font-size:11px;position:sticky;top:0;z-index:1}
.forge-preview-table th.col-active{background:var(--accent-light);color:var(--accent)}
.forge-preview-table td{padding:7px 10px;border-bottom:1px solid var(--border);vertical-align:top}
.forge-preview-table tr:last-child td{border-bottom:none}
.forge-preview-table td.cell-changed{background:var(--accent-light);color:var(--accent);font-weight:600}
.forge-preview-table td.cell-dupe{background:#FFF3CD;color:#856404}
.forge-preview-table td.cell-before{background:color-mix(in srgb,var(--surface2) 72%, var(--surface));color:var(--text-muted)}
.forge-preview-table tr.row-removed td{background:var(--danger-light);color:var(--danger);text-decoration:line-through;opacity:.7}
.forge-preview-table tr:nth-child(even) td{background:color-mix(in srgb,var(--surface2) 60%, var(--surface))}
.forge-preview-table tr:nth-child(even) td.cell-changed{background:var(--accent-light)}
.forge-preview-table tr:nth-child(even) td.cell-dupe{background:#FFF3CD}
.forge-preview-table tr:nth-child(even) td.cell-before{background:color-mix(in srgb,var(--surface2) 76%, var(--surface))}
.forge-preview-surface::-webkit-scrollbar,.forge-preview-table-wrap::-webkit-scrollbar{width:8px;height:8px}
.forge-preview-surface::-webkit-scrollbar-thumb,.forge-preview-table-wrap::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:999px}
.forge-preview-surface::-webkit-scrollbar-track,.forge-preview-table-wrap::-webkit-scrollbar-track{background:transparent}
.forge-diff-status{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.46px}
.forge-status-changed{color:var(--accent)}
.forge-status-duplicate{color:#9A6700}
.forge-status-removed{color:var(--danger)}
.forge-result{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1rem 1.1rem;box-shadow:var(--shadow)}
.forge-result-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem}
.forge-stat{text-align:left;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb,var(--surface) 95%, var(--surface2)) 100%)}
.forge-stat-val{font-size:21px;font-weight:700;font-family:"DM Mono",monospace;color:var(--accent)}
.forge-stat-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.55px;color:var(--text-hint);margin-top:2px}

@media (max-width: 1180px) {
  .forge-workbench{grid-template-columns:1fr;height:auto;min-height:0}
  .forge-left-panel{height:clamp(360px,42vh,460px);min-height:320px}
  .forge-right-panel{height:clamp(380px,54vh,620px);min-height:340px}
}
@media (max-width: 767px) {
  .forge-upload-card,.forge-setup-strip,.forge-col-section-card,.forge-left-panel,.forge-right-panel,.forge-result{padding:.85rem}
  .forge-setup-main,.forge-preview-toolbar,.forge-panel-head,.forge-section-top{flex-direction:column;align-items:flex-start}
  .forge-setup-actions,.forge-preview-actions{width:100%}
  .forge-left-panel{height:clamp(340px,46vh,440px);min-height:300px}
  .forge-right-panel{height:clamp(360px,56vh,560px);min-height:320px}
  .forge-setup-actions .btn,.forge-preview-actions .btn{flex:1}
  .forge-preview-surface,.forge-preview-empty{min-height:320px}
  .forge-col-grid{grid-template-columns:1fr;max-height:160px}
  .forge-active-head{padding:9px 10px}
  .forge-action-extra{padding:0 10px 10px 38px}
}
/* ════════════════════════════════════════════
   RESPONSIVE — tablet & mobile
════════════════════════════════════════════ *//* ════════════════════════════════════════════
   RESPONSIVE — tablet & mobile
════════════════════════════════════════════ */

/* Hamburger — hidden on desktop */
.hamburger{display:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:36px;height:36px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;cursor:pointer;padding:7px 8px;flex-shrink:0}
.hamburger span{display:block;height:1.5px;width:20px;background:var(--text-muted);border-radius:2px}

/* Drawer overlay */
.drawer-overlay{display:none;position:fixed;top:52px;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);z-index:150;opacity:0;transition:opacity .25s}
.drawer-overlay.open{display:block;opacity:1}

/* ── TABLET: 768px – 1024px ── */
@media (max-width: 1024px) {
  .main{padding:1.25rem}
  .convert-grid,.structure-grid,.differ-upload-grid,.cmp-mode-chooser,.vl-body{grid-template-columns:1fr}
  .differ-summary-grid{grid-template-columns:repeat(2,1fr)}
  .help-tip-grid{grid-template-columns:1fr}
  .compare-mode-bar{flex-direction:column;align-items:flex-start}
  .compare-sheet-selectors,.rd-controls-bar{flex-wrap:wrap}
  .result-stats{gap:.75rem}
}

/* ── MOBILE: below 768px ── */
@media (max-width: 767px) {
  :root{--header-height:52px;--subnav-height:42px}

  /* ── Header ── */
  .header{padding:0 .75rem;height:var(--header-height)}
  .header-left{gap:16px}
  .logo{font-size:14px}
  .logo-badge{font-size:10px;padding:1px 5px}
  /* Shrink nav labels on mobile */
  .nav-btn{padding:5px 8px;font-size:11px;font-weight:600}
  .header-nav{gap:2px}
  .nav-group-btn{padding:6px 10px 8px;font-size:12px}
  .subnav-shell{padding:0}
  .subnav-row{padding:6px .75rem 7px}
  .subnav-group.active{padding:0;margin-left:0!important;border-radius:0}
  .subnav-btn{padding:6px 11px;font-size:11px}
  .help-btn,.theme-select{height:30px;font-size:12px}
  .theme-select{min-width:92px;padding:0 26px 0 8px;background-position:calc(100% - 12px) 12px,calc(100% - 7px) 12px}
  .hamburger,.drawer-overlay{display:none!important}

  /* ── App layout ── */
  .app{grid-template-columns:1fr;min-height:calc(100vh - var(--chrome-height))}
  .main{padding:.75rem;min-height:calc(100vh - var(--chrome-height));overflow-x:hidden}

  /* ── All 2-col grids → 1 col ── */
  .convert-grid,.structure-grid,.differ-upload-grid,.cmp-mode-chooser,
  .vl-body,.help-tip-grid{grid-template-columns:1fr}
  .differ-summary-grid{grid-template-columns:repeat(2,1fr)}

  /* ── Compare ── */
  .compare-mode-bar{flex-direction:column;align-items:flex-start;gap:.6rem}
  .compare-sheet-selectors{flex-wrap:wrap;gap:6px}
  .compare-mode-tabs{flex-wrap:wrap;gap:4px}
  .compare-mode-tab{font-size:11px;padding:5px 10px}
  .rd-controls-bar{flex-direction:column}

  /* ── Editor header: stack on 2 rows ── */
  .editor-header{flex-wrap:wrap;gap:6px;align-items:center}
  .editor-title-input{font-size:16px;width:100%;flex:1 1 100%}
  .tpl-sample-wrap{flex:1;min-width:0}
  .tpl-sample-btn{max-width:100%;width:100%}
  .editor-header .btn{padding:6px 10px;font-size:12px}

  /* ── Quick convert bar: stack ── */
  .quick-convert-bar{flex-wrap:wrap;gap:8px;padding:8px 10px}
  .qc-file-info{width:100%;flex:1 1 100%}
  .qc-change-file,.btn-quick-convert{flex:1}
  .btn-quick-convert{justify-content:center;text-align:center}
  .qc-result{width:100%;text-align:center;margin-left:0}

  /* ── Editor toolbar ── */
  .editor-toolbar{flex-wrap:wrap;gap:4px}
  .editor-toolbar .btn{font-size:11px;padding:4px 8px}

  /* ── Column card header ── */
  .col-drag-handle{display:none}
  .column-card-header{flex-wrap:wrap;gap:5px;padding:8px 10px}
  .column-name-input,.column-name-select{min-width:0;flex:1 1 140px;font-size:12px}
  .col-mode-btn{font-size:10px;padding:2px 5px}
  .col-badge{display:none}
  .column-card-header .btn{font-size:11px;padding:3px 7px}

  /* ── Mapping table: stack source/target ── */
  .mapping-table,.mapping-table thead,.mapping-table tbody,
  .mapping-table tr,.mapping-table td{display:block;width:100%}
  .mapping-table thead{display:none}
  .mapping-row{position:relative;padding:6px 32px 6px 6px;border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:4px;background:var(--surface)}
  .mapping-row .mapping-input{width:100%;margin-bottom:4px;font-size:13px}
  .mapping-row .mapping-input:last-of-type{margin-bottom:0}
  .mapping-row .arrow-cell{display:none}
  .mapping-row .remove-row-btn{position:absolute;top:50%;right:4px;transform:translateY(-50%)}

  /* ── Col footer: wrap + smaller buttons ── */
  .col-footer{flex-wrap:wrap;gap:4px;margin-top:8px}
  .add-mapping-btn{font-size:11px;padding:4px 10px}
  .reverse-btn,.danger-row-btn,.fill-unique-btn,.flash-fill-btn{font-size:11px;padding:4px 8px}
  .col-footer-sep{display:none}
  /* Hide verbose labels on small buttons */
  .mapping-count{width:100%;text-align:right;margin-top:2px}

  /* ── Convert page ── */
  .convert-action{flex-direction:column;align-items:stretch;gap:.5rem}
  .btn-convert{width:100%;text-align:center;padding:12px;font-size:15px}
  .result-stats{gap:.5rem;flex-wrap:wrap}
  .stat-value{font-size:16px}

  /* ── Tables: horizontal scroll ── */
  .differ-table-wrap,.single-table-wrap,.preview-table-wrap,
  .data-compare-table-wrap,.forge-preview-table-wrap{
    overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  .differ-table,.single-table,.preview-table,.data-compare-table,
  .forge-preview-table{min-width:480px}

  /* ── History ── */
  .history-item{flex-wrap:wrap;gap:.5rem}
  .history-stats{gap:.5rem}

  /* ── Modals: slide up from bottom ── */
  .modal-backdrop{padding:0;align-items:flex-end}
  .modal{max-height:92vh;border-radius:16px 16px 0 0;width:100%;max-width:100%}
  .help-modal{max-width:100%}
  .modal-header{padding:.75rem 1rem}
  .modal-body{padding:.75rem 1rem}
  .modal-footer{padding:.75rem 1rem}
  .help-tabs{overflow-x:auto;flex-wrap:nowrap;gap:3px;padding:.6rem .75rem .4rem;scrollbar-width:none}
  .help-tabs::-webkit-scrollbar{display:none}
  .help-tab{white-space:nowrap;font-size:12px;padding:5px 10px}
  .imp-col-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}

  /* ── VLookup ── */
  .vl-side{margin-bottom:.5rem}
  .vl-file-row{flex-wrap:wrap;gap:4px}

  /* ── Compare single file ── */
  .single-actions-grid{flex-direction:column}
  .color-action-btn{width:100%}
  .single-summary{gap:5px}
  .single-sum-chip{font-size:11px;padding:4px 10px}

  /* ── Differ ── */
  .differ-filter-btns{flex-wrap:wrap;gap:3px}
  .differ-filter-btn{font-size:11px;padding:3px 8px}
  .rd-summary{gap:5px;flex-wrap:wrap}
  .rd-sum-chip{font-size:11px;padding:4px 10px}
  .differ-summary-grid{grid-template-columns:repeat(2,1fr)}

  /* ── Forge ── */
  .forge-col-grid{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));max-height:188px}
  .forge-action-row{padding:8px}
  .forge-action-name{font-size:12px}
  .forge-action-desc{font-size:10px}
  .forge-run-bar{flex-wrap:wrap;gap:.5rem}
  .btn-forge-run{width:100%;text-align:center;justify-content:center}
  .forge-run-bar .btn{width:100%;text-align:center}
  .forge-result-stats{gap:1rem}

  /* ── Sidebar ── */
  .sb-bottom{padding:.6rem .75rem .8rem}
  .sb-subnav-btn{font-size:12px;padding:6px 8px}
  .mapper-helper-card,.compare-helper-card,.forge-helper-card{display:none}
}

/* ── SMALL PHONES: below 400px ── */
@media (max-width: 399px) {
  .nav-btn{padding:4px 6px;font-size:10px}
  .header{padding:0 .5rem}
  .subnav-context-label{display:none}
  .logo span.logo-badge{display:none}
  .differ-summary-grid{grid-template-columns:repeat(2,1fr)}
  .dsc-val{font-size:18px}
  .forge-col-grid{grid-template-columns:1fr 1fr;max-height:176px}
  .main{padding:.5rem}
}

/* ════════════════════════════════════════════
   CSV CLEANER
════════════════════════════════════════════ */
.csv-drop-zone{border:2px dashed var(--border);border-radius:var(--radius);padding:2rem 1.5rem;text-align:center;cursor:pointer;transition:all .2s;background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;position:relative;overflow:hidden;margin-bottom:0}
.csv-drop-zone:hover{border-color:var(--accent);background:var(--accent-light)}
.csv-drop-zone.drag-over{border-color:var(--accent);background:var(--accent-light)}
.csv-drop-zone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;z-index:2}
.csv-drop-icon{font-size:28px;line-height:1;pointer-events:none;position:relative;z-index:1;margin-bottom:8px}
.csv-drop-title{font-size:14px;font-weight:600;pointer-events:none;position:relative;z-index:1}
.csv-drop-sub{font-size:12px;color:var(--text-hint);pointer-events:none;position:relative;z-index:1}
.csv-file-tag{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;background:var(--accent-light);border:1px solid var(--accent-border);border-radius:99px;font-size:12px;font-weight:600;color:var(--accent);margin-top:.5rem;pointer-events:none;position:relative;z-index:1}

.csv-detect-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.6rem;margin-bottom:1rem}
.csv-detect-card{background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:.65rem .85rem}
.csv-detect-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-hint);margin-bottom:3px}
.csv-detect-val{font-size:13px;font-weight:600;font-family:'DM Mono',monospace;margin-bottom:2px}
.csv-detect-val.ok{color:var(--accent)}
.csv-detect-val.warn{color:var(--warning)}
.csv-detect-val.err{color:var(--danger)}
.csv-detect-note{font-size:11px;color:var(--text-muted)}

.csv-fix-list{display:flex;flex-direction:column;gap:.45rem;margin-bottom:.75rem}
.csv-fix-row{display:flex;align-items:flex-start;gap:.65rem;padding:.7rem .85rem;background:var(--surface2);border:1px solid var(--border);border-radius:10px;cursor:pointer;transition:background .15s,border-color .15s}
.csv-fix-row:hover{background:color-mix(in srgb,var(--surface2) 60%,var(--accent-light))}
.csv-fix-row.checked{background:var(--accent-light);border-color:var(--accent-border)}
.csv-fix-check{width:16px;height:16px;margin-top:2px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}
.csv-fix-body{flex:1;min-width:0}
.csv-fix-name{font-size:13px;font-weight:600;display:flex;align-items:center;flex-wrap:wrap;gap:5px}
.csv-fix-desc{font-size:11px;color:var(--text-muted);margin-top:2px;line-height:1.5}
.csv-fix-badge{display:inline-flex;align-items:center;padding:1px 7px;border-radius:99px;font-size:10px;font-weight:700;letter-spacing:.3px}
.csv-fix-badge.suggested{background:var(--accent-light);color:var(--accent);border:1px solid var(--accent-border)}
.csv-fix-badge.issue{background:var(--danger-light);color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 30%,transparent)}

.csv-sub-control{margin-top:.55rem;padding:.5rem .7rem;background:var(--surface);border:1px solid var(--border);border-radius:8px}
.csv-sub-label{font-size:11px;color:var(--text-muted);margin-bottom:.35rem;font-weight:500}
.csv-enc-select{padding:5px 9px;border-radius:6px;border:1px solid var(--border);background:var(--surface);font-family:inherit;font-size:12px;color:var(--text);width:100%;max-width:320px}
.csv-delim-row{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}
.csv-delim-btn{padding:4px 11px;border-radius:99px;border:1px solid var(--border);background:var(--surface);font-family:'DM Mono',monospace;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;color:var(--text-muted);white-space:nowrap}
.csv-delim-btn:hover{border-color:var(--border-strong);color:var(--text)}
.csv-delim-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}
.csv-delim-custom{width:44px;padding:4px 7px;border-radius:6px;border:1px solid var(--border);background:var(--surface);font-family:'DM Mono',monospace;font-size:12px;text-align:center;color:var(--text)}

.csv-preview-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-hint);margin-bottom:5px}
.csv-preview-wrap{overflow:auto;border-radius:8px;border:1px solid var(--border);max-height:220px}
.csv-preview-table{border-collapse:collapse;font-size:12px;font-family:'DM Mono',monospace;width:100%;white-space:nowrap}
.csv-preview-table th{background:var(--surface2);padding:5px 10px;text-align:left;font-weight:700;border-bottom:2px solid var(--border);position:sticky;top:0;z-index:1;font-family:'DM Sans',sans-serif;font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px}
.csv-preview-table td{padding:4px 10px;border-bottom:1px solid var(--border);vertical-align:top;max-width:200px;overflow:hidden;text-overflow:ellipsis}
.csv-preview-table tr:last-child td{border-bottom:none}
.csv-preview-table tr:hover td{background:var(--surface2)}

.csv-run-bar{display:flex;gap:.65rem;flex-wrap:wrap;align-items:center}
.btn-csv-run{padding:10px 22px;background:var(--accent);color:#fff;border:none;border-radius:10px;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.btn-csv-run:hover{background:color-mix(in srgb,var(--accent) 85%,black)}
.btn-csv-preview{padding:10px 18px;background:transparent;color:var(--text);border:1px solid var(--border);border-radius:10px;font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}
.btn-csv-preview:hover{background:var(--surface2);border-color:var(--border-strong)}

.csv-result-box{background:var(--accent-light);border:1px solid var(--accent-border);border-radius:12px;padding:.85rem 1rem;display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}
.csv-stat{text-align:center}
.csv-stat-val{font-size:20px;font-weight:600;font-family:'DM Mono',monospace;color:var(--accent)}
.csv-stat-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}

.csv-helper-card{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:10px 12px;margin-top:10px}
.csv-helper-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-hint);margin-bottom:6px}
.csv-helper-item{font-size:11px;color:var(--text-muted);line-height:1.5;margin-bottom:3px}
.csv-helper-item:last-child{margin-bottom:0}
#page-csv h2{font-size:19px;font-weight:600;letter-spacing:-.3px;margin-bottom:4px}
#page-csv .page-sub{font-size:13px;color:var(--text-muted)}


@media(max-width:767px){
  .csv-detect-grid{grid-template-columns:1fr 1fr}
  .csv-run-bar{flex-direction:column;align-items:stretch}
  .btn-csv-run,.btn-csv-preview{width:100%;justify-content:center;text-align:center}
  .csv-result-box{gap:1rem}
  .csv-helper-card{display:none}
}
@media(max-width:399px){
  .csv-detect-grid{grid-template-columns:1fr}
}

/* ── JSON CONVERTER ── */
.json-mode-chooser{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1rem}
.json-mode-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1rem;cursor:pointer;transition:all .15s;box-shadow:var(--shadow)}
.json-mode-card:hover{border-color:var(--border-strong);transform:translateY(-1px)}
.json-mode-card.active{background:var(--accent-light);border-color:var(--accent-border)}
.json-mode-card-title{font-size:14px;font-weight:700;margin-bottom:4px}
.json-mode-card-desc{font-size:12px;color:var(--text-muted);line-height:1.55}
.json-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:.85rem}
.json-meta{display:flex;gap:8px;flex-wrap:wrap}
.json-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface2);font-size:11px;font-weight:600;color:var(--text-muted)}
.json-preview-wrap{overflow:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.json-preview-table{width:100%;border-collapse:collapse;font-size:12px}
.json-preview-table th,.json-preview-table td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}
.json-preview-table th{position:sticky;top:0;background:var(--surface2);font-size:11px;text-transform:uppercase;letter-spacing:.45px;color:var(--text-hint)}
.json-preview-table td{max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.json-preview-empty{padding:1rem;font-size:12px;color:var(--text-muted)}
.json-preview-code{display:none;margin:0;padding:12px 14px;font-size:12px;line-height:1.55;font-family:'DM Mono',monospace;white-space:pre-wrap;word-break:break-word;color:var(--text);background:var(--surface)}
.json-preview-code.nowrap{white-space:pre;word-break:normal;overflow:auto}
.syntax-punc{color:var(--text-hint)}
.syntax-json-key{color:#4a9edd;font-weight:600}
.syntax-json-string{color:#4caf82}
.syntax-json-number{color:#b07fe0;font-weight:600}
.syntax-json-bool{color:#e09a3a;font-weight:700}
.syntax-json-null{color:#e05f5f;font-weight:700}
.syntax-xml-tag{color:#4a9edd;font-weight:700}
.syntax-xml-attr{color:#b07fe0;font-weight:600}
.syntax-xml-value{color:#4caf82}
.syntax-xml-text{color:var(--text)}
.syntax-xml-comment{color:var(--text-hint);font-style:italic}
.xml-preview-topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:.85rem}
.xml-preview-tabs{display:flex;gap:6px;flex-wrap:wrap}
.xml-preview-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.xml-advanced-box{border:1px solid var(--border);border-radius:12px;background:var(--surface2);padding:.8rem .95rem}
.xml-advanced-box summary{cursor:pointer;font-size:12px;font-weight:600;color:var(--text-muted);list-style:none}
.xml-advanced-box summary::-webkit-details-marker{display:none}
.xml-advanced-box summary::after{content:"▾";float:right;color:var(--text-hint)}
.xml-advanced-box[open] summary::after{content:"▴"}
.json-inline-options{display:flex;gap:10px;flex-wrap:wrap;margin:.85rem 0}
.json-opt{display:flex;align-items:center;gap:7px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface2);font-size:12px;color:var(--text-muted)}
.json-status{font-size:12px;color:var(--text-muted)}
.json-file-tag{display:inline-flex;align-items:center;gap:8px;margin-top:8px;padding:6px 10px;border-radius:999px;background:var(--accent-light);border:1px solid var(--accent-border);font-size:11px;font-weight:600;color:var(--accent)}
@media(max-width:767px){.json-mode-chooser{grid-template-columns:1fr}.json-toolbar{align-items:stretch}.json-toolbar .btn{width:100%}}


/* ── Text Compare ── */
/* Text Compare */
.textcmp-page .page-sub{font-size:13px;color:var(--text-muted);margin-bottom:1.25rem}
.textcmp-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.textcmp-controls{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.textcmp-summary{font-size:12px;color:var(--text-muted);font-family:'DM Mono',monospace}
.textcmp-viewer{font-family:'DM Mono',monospace;font-size:12px;line-height:1.6;overflow:hidden}
.textcmp-header{display:grid;grid-template-columns:52px minmax(0,1fr) 52px minmax(0,1fr);background:var(--surface2);border-bottom:2px solid var(--border)}
.textcmp-header-gutter{background:var(--surface2);border-right:1px solid var(--border)}
.textcmp-header-cell{padding:.6rem 1rem;font-size:12px;font-weight:700;color:var(--text);font-family:'DM Sans',sans-serif;display:flex;align-items:center;gap:8px;overflow:hidden}
.textcmp-header-cell.file-b{border-left:1px solid var(--border)}
.textcmp-scroll{overflow:auto;max-height:calc(100vh - 360px);min-height:300px;cursor:default}
.textcmp-row{display:grid;grid-template-columns:52px minmax(0,1fr) 52px minmax(0,1fr);width:100%;border-bottom:1px solid color-mix(in srgb,var(--border) 40%, transparent)}
.textcmp-row:last-child{border-bottom:none}
.textcmp-ln{padding:2px 8px;text-align:right;color:var(--text-hint);user-select:none;font-size:11px;border-right:1px solid color-mix(in srgb,var(--border) 60%, transparent);background:color-mix(in srgb,var(--surface2) 80%, transparent);flex-shrink:0;min-width:52px}
.textcmp-ln.ln-b{border-left:1px solid var(--border)}
.textcmp-code{padding:2px 12px;white-space:pre;color:var(--text);overflow:hidden;text-overflow:ellipsis;min-width:0}
.textcmp-row.same .textcmp-code{background:var(--surface)}
.textcmp-row.same .textcmp-ln{background:color-mix(in srgb,var(--surface2) 80%, transparent)}
.textcmp-row.chg .textcmp-code.side-a{background:color-mix(in srgb,#f59e0b 13%, var(--surface))}
.textcmp-row.chg .textcmp-ln.side-a{background:color-mix(in srgb,#f59e0b 22%, var(--surface2))}
.textcmp-row.chg .textcmp-code.side-b{background:color-mix(in srgb,#3b82f6 11%, var(--surface))}
.textcmp-row.chg .textcmp-ln.side-b{background:color-mix(in srgb,#3b82f6 18%, var(--surface2))}
.textcmp-row.del .textcmp-code.side-a{background:color-mix(in srgb,var(--danger) 12%, var(--surface))}
.textcmp-row.del .textcmp-ln.side-a{background:color-mix(in srgb,var(--danger) 20%, var(--surface2))}
.textcmp-row.del .textcmp-code.side-b,.textcmp-row.del .textcmp-ln.side-b{background:color-mix(in srgb,var(--surface2) 50%, var(--surface));background-image:repeating-linear-gradient(45deg,color-mix(in srgb,var(--border) 40%, transparent) 0,color-mix(in srgb,var(--border) 40%, transparent) 1px,transparent 1px,transparent 6px)}
.textcmp-row.ins .textcmp-code.side-b{background:color-mix(in srgb,var(--accent) 12%, var(--surface))}
.textcmp-row.ins .textcmp-ln.side-b{background:color-mix(in srgb,var(--accent) 20%, var(--surface2))}
.textcmp-row.ins .textcmp-code.side-a,.textcmp-row.ins .textcmp-ln.side-a{background:color-mix(in srgb,var(--surface2) 50%, var(--surface));background-image:repeating-linear-gradient(45deg,color-mix(in srgb,var(--border) 40%, transparent) 0,color-mix(in srgb,var(--border) 40%, transparent) 1px,transparent 1px,transparent 6px)}
.textcmp-del{background:color-mix(in srgb,var(--danger) 35%, transparent);border-radius:3px;padding:0 1px}
.textcmp-ins{background:color-mix(in srgb,var(--accent) 32%, transparent);border-radius:3px;padding:0 1px}
.textcmp-nav{display:flex;align-items:center;gap:6px;padding:.5rem .85rem;border-top:1px solid var(--border);background:var(--surface2);flex-wrap:wrap}
.textcmp-nav-btn{padding:4px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;color:var(--text);transition:all .15s}
.textcmp-nav-btn:hover{background:var(--surface2);border-color:var(--border-strong)}
.textcmp-nav-sep{flex:1}
.textcmp-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:99px;font-size:11px;font-weight:600;border:1px solid}
.textcmp-pill.del{background:color-mix(in srgb,var(--danger) 10%, var(--surface));border-color:color-mix(in srgb,var(--danger) 30%, transparent);color:var(--danger)}
.textcmp-pill.ins{background:color-mix(in srgb,var(--accent) 10%, var(--surface));border-color:color-mix(in srgb,var(--accent) 30%, transparent);color:var(--accent)}
.textcmp-pill.chg{background:color-mix(in srgb,#f59e0b 10%, var(--surface));border-color:color-mix(in srgb,#f59e0b 30%, transparent);color:#92400e}
.textcmp-pill.same{background:var(--surface2);border-color:var(--border);color:var(--text-muted)}
.textcmp-paste-tabs{display:flex;gap:4px;margin-bottom:.5rem}
.textcmp-paste-tab{padding:5px 14px;border-radius:99px;border:1px solid var(--border);background:var(--surface2);font-family:inherit;font-size:12px;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .15s}
.textcmp-paste-tab.active{background:var(--accent-light);border-color:var(--accent-border);color:var(--accent)}
.textcmp-paste-area{width:100%;min-height:100px;max-height:180px;padding:.65rem .85rem;border-radius:var(--radius-sm);border:1px solid var(--border);font-family:'DM Mono',monospace;font-size:12px;background:var(--bg);color:var(--text);resize:vertical;outline:none;line-height:1.6;box-sizing:border-box}
.textcmp-paste-area:focus{border-color:var(--accent)}
.textcmp-row.nav-hi .textcmp-code{box-shadow:inset 0 0 0 2px var(--accent)}
@media(max-width:960px){.textcmp-upload-grid{grid-template-columns:1fr}}
@media(max-width:520px){.textcmp-header{grid-template-columns:36px minmax(0,1fr) 36px minmax(0,1fr)}.textcmp-row{grid-template-columns:36px minmax(0,1fr) 36px minmax(0,1fr)}.textcmp-ln{min-width:36px}}


/* ════ STRUCTURED COMPARE ════ */
.scmp-input-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:.75rem}
.scmp-input-pane{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;display:flex;flex-direction:column}
.scmp-input-head{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1rem;background:var(--surface2);border-bottom:1px solid var(--border);gap:.5rem}
.scmp-input-label{font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}
.scmp-input-filename{font-size:11px;font-family:'DM Mono',monospace;color:var(--accent);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.scmp-fmt-badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:4px;background:var(--accent-light);color:var(--accent);border:1px solid var(--accent-border)}
.scmp-textarea{width:100%;min-height:120px;max-height:180px;padding:.65rem 1rem;font-family:'DM Mono',monospace;font-size:12px;line-height:1.55;border:none;background:var(--surface);color:var(--text);resize:vertical;outline:none}
.scmp-textarea::placeholder{color:var(--text-hint)}
.scmp-input-footer{display:flex;align-items:center;gap:.5rem;padding:.4rem .75rem;border-top:1px solid var(--border);background:var(--surface2)}
.scmp-upload-btn{padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);font-family:inherit;font-size:11px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .15s}
.scmp-upload-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-light)}
.scmp-clear-btn{padding:4px 8px;border-radius:var(--radius-sm);border:none;background:transparent;font-family:inherit;font-size:11px;color:var(--text-hint);cursor:pointer}
.scmp-clear-btn:hover{color:var(--danger)}
.scmp-toolbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.75rem}
.scmp-toolbar-left{display:flex;align-items:center;gap:.5rem;flex:1;flex-wrap:wrap}
.scmp-toolbar-right{display:flex;align-items:center;gap:.5rem}
.scmp-select{padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-family:inherit;font-size:12px;cursor:pointer}
.scmp-nav-btn{padding:5px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);font-family:inherit;font-size:12px;cursor:pointer;color:var(--text-muted);transition:all .15s}
.scmp-nav-btn:hover{background:var(--surface2);color:var(--text)}
.scmp-nav-btn:disabled{opacity:.35;cursor:not-allowed}
.scmp-nav-counter{font-size:12px;color:var(--text-hint);font-family:'DM Mono',monospace;min-width:60px;text-align:center}
.scmp-summary-bar{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin-bottom:.75rem}
.scmp-stat{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:99px;font-size:11px;font-weight:600;border:1px solid transparent}
.scmp-stat.added{background:var(--accent-light);color:var(--accent);border-color:var(--accent-border)}
.scmp-stat.removed{background:var(--danger-light);color:var(--danger);border-color:color-mix(in srgb,var(--danger) 25%,transparent)}
.scmp-stat.changed{background:var(--warning-light);color:var(--warning);border-color:color-mix(in srgb,var(--warning) 25%,transparent)}
.scmp-stat.moved{background:#f5f0ff;color:#6d28d9;border-color:#c4b5fd}
.scmp-stat.same{background:var(--surface2);color:var(--text-muted);border-color:var(--border)}
/* Viewer — same pattern as textcmp-viewer */
.scmp-viewer{font-family:'DM Mono',monospace;font-size:12px;line-height:1.6;overflow:hidden}
.scmp-header{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);background:var(--surface2);border-bottom:2px solid var(--border)}
.scmp-header-cell{padding:.6rem 1rem;font-size:12px;font-weight:700;color:var(--text);font-family:'DM Sans',sans-serif;display:flex;align-items:center;gap:8px;overflow:hidden}
.scmp-header-cell+.scmp-header-cell{border-left:1px solid var(--border)}
.scmp-scroll{overflow:auto;max-height:calc(100vh - 400px);min-height:260px;cursor:default}
.scmp-scroll::-webkit-scrollbar{width:6px;height:6px}
.scmp-scroll::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}
/* Rows — 4-column grid matching textcmp-row exactly */
.scmp-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);width:100%;border-bottom:1px solid color-mix(in srgb,var(--border) 40%,transparent)}
.scmp-row:last-child{border-bottom:none}
.scmp-cell{padding:2px 0;min-width:0;overflow:hidden;font-family:'DM Mono',monospace;font-size:12px}
.scmp-cell+.scmp-cell{border-left:2px solid var(--border)}
.scmp-cell-inner{padding:2px 10px 2px 0;white-space:pre;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:baseline;gap:0}
.scmp-indent{white-space:pre;flex-shrink:0;color:transparent;user-select:none}
.scmp-key{color:#4a9edd;font-weight:600}
.scmp-colon{color:var(--text-hint);margin:0 3px 0 0}
.scmp-val-str{color:#4caf82}
.scmp-val-num{color:#b07fe0}
.scmp-val-bool{color:#e09a3a;font-weight:700}
.scmp-val-null{color:#e05f5f;font-weight:700}
.scmp-val-obj{color:var(--text-hint)}
.scmp-bracket{color:var(--text-hint)}
/* Row status colours — parallel to textcmp-row colours */
.scmp-row.same .scmp-cell{background:var(--surface)}
.scmp-row.added .scmp-cell.right{background:color-mix(in srgb,var(--accent) 11%,var(--surface))}
.scmp-row.added .scmp-cell.left{background:color-mix(in srgb,var(--surface2) 55%,var(--surface));background-image:repeating-linear-gradient(45deg,color-mix(in srgb,var(--border) 35%,transparent) 0,color-mix(in srgb,var(--border) 35%,transparent) 1px,transparent 1px,transparent 6px)}
.scmp-row.removed .scmp-cell.left{background:color-mix(in srgb,var(--danger) 11%,var(--surface))}
.scmp-row.removed .scmp-cell.right{background:color-mix(in srgb,var(--surface2) 55%,var(--surface));background-image:repeating-linear-gradient(45deg,color-mix(in srgb,var(--border) 35%,transparent) 0,color-mix(in srgb,var(--border) 35%,transparent) 1px,transparent 1px,transparent 6px)}
.scmp-row.changed .scmp-cell.left{background:color-mix(in srgb,#f59e0b 12%,var(--surface))}
.scmp-row.changed .scmp-cell.right{background:color-mix(in srgb,#3b82f6 10%,var(--surface))}
.scmp-row.type-changed .scmp-cell.left{background:color-mix(in srgb,#f59e0b 12%,var(--surface))}
.scmp-row.type-changed .scmp-cell.right{background:color-mix(in srgb,#3b82f6 10%,var(--surface))}
.scmp-row.moved .scmp-cell{background:color-mix(in srgb,#8b5cf6 9%,var(--surface))}
.scmp-row.nav-hi .scmp-cell{box-shadow:inset 0 0 0 2px var(--accent)}
.scmp-row.sep .scmp-cell{background:var(--surface2)}
.scmp-mark-del{background:color-mix(in srgb,var(--danger) 25%,transparent);border-radius:3px;padding:0 1px;font-weight:600}
.scmp-mark-add{background:color-mix(in srgb,var(--accent) 25%,transparent);border-radius:3px;padding:0 1px;font-weight:600}
.scmp-empty-cell{color:var(--text-hint);font-style:italic;opacity:.45;padding:2px 10px;font-size:11px}
.scmp-empty-state{padding:2.5rem;text-align:center;color:var(--text-hint);font-size:13px;font-family:inherit}
.scmp-error-msg{padding:1rem;color:var(--danger);font-size:12px;background:var(--danger-light);border-radius:var(--radius-sm);margin:.5rem}
.scmp-nav{display:flex;align-items:center;gap:.5rem;padding:.55rem 1rem;border-top:1px solid var(--border);background:var(--surface2);flex-wrap:wrap}
.scmp-nav-sep{flex:1}
[data-theme="dark"] .scmp-row.added .scmp-cell.right{background:color-mix(in srgb,var(--accent) 16%,#111)}
[data-theme="dark"] .scmp-row.removed .scmp-cell.left{background:color-mix(in srgb,var(--danger) 16%,#111)}
[data-theme="dark"] .scmp-row.changed .scmp-cell.left{background:color-mix(in srgb,#f59e0b 15%,#111)}
[data-theme="dark"] .scmp-row.changed .scmp-cell.right{background:color-mix(in srgb,#3b82f6 13%,#111)}
@media(max-width:960px){.scmp-input-grid{grid-template-columns:1fr}.scmp-header{grid-template-columns:1fr}.scmp-row{grid-template-columns:1fr}.scmp-cell+.scmp-cell{border-left:none;border-top:1px solid var(--border)}}


/* ── APP SHELL RESTRUCTURE: accordion sidebar + breadcrumb ── */
:root{
  --subnav-height:0px;
  --chrome-height:var(--header-height);
  --sidebar-width:248px;
  --sidebar-width-collapsed:54px;
  --shell-line:color-mix(in srgb,var(--border) 88%, var(--surface));
  --shell-panel:color-mix(in srgb,var(--surface) 94%, var(--bg));
  --shell-panel-2:color-mix(in srgb,var(--surface2) 78%, var(--surface));
  --soft-shadow:0 1px 2px rgba(15,23,42,.05),0 8px 18px rgba(15,23,42,.05);
  --tiny-shadow:0 1px 1px rgba(15,23,42,.04);
}
.header-nav,.subnav-shell{display:none!important}
.header{
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 95%, var(--bg)) 0%, var(--surface) 100%)!important;
  border-bottom:1px solid var(--shell-line)!important;
  box-shadow:0 1px 0 rgba(255,255,255,.52)!important;
  padding:0 1.1rem 0 1rem!important;
  align-items:center!important;
  height:var(--header-height)!important;
  z-index:360!important;
}
.header-left{display:flex!important;align-items:center!important;gap:14px!important;height:auto!important;overflow:visible!important}
.header-right{display:flex!important;align-items:center!important;gap:8px!important}
.logo{font-size:18px;font-weight:700;letter-spacing:-.35px;color:var(--text)}
.logo-badge{padding:3px 8px;border-radius:7px;box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
.help-btn,.hamburger{border-radius:10px;border-color:var(--shell-line);background:var(--shell-panel);box-shadow:var(--tiny-shadow)}
.help-btn:hover,.hamburger:hover{background:var(--surface2);border-color:var(--border-strong)}
.theme-select{height:36px;border-radius:10px;border-color:var(--shell-line);background:var(--shell-panel);box-shadow:var(--tiny-shadow);font-weight:600}
.app{
  display:grid!important;
  grid-template-columns:var(--sidebar-width) minmax(0,1fr)!important;
  min-height:calc(100vh - var(--header-height))!important;
  transition:grid-template-columns .24s ease;
}
body.sidebar-collapsed .app{grid-template-columns:var(--sidebar-width-collapsed) minmax(0,1fr)!important}
.sidebar{
  display:block!important;
  position:sticky;
  top:var(--header-height);
  height:calc(100vh - var(--header-height));
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%, var(--bg)) 0%, var(--surface) 100%);
  border-right:1px solid var(--shell-line);
  box-shadow:inset -1px 0 0 rgba(255,255,255,.38);
  overflow:hidden;
  z-index:250;
}
.sidebar-inner{height:100%;display:flex;flex-direction:column;min-height:0}
.sidebar-top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:.9rem .85rem .8rem;
  border-bottom:1px solid var(--shell-line);
  min-height:70px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 92%, var(--bg)) 0%, color-mix(in srgb,var(--surface) 100%, var(--bg)) 100%);
}
.sidebar-title{font-size:14px;font-weight:700;letter-spacing:-.2px;color:var(--text)}
.sidebar-subtitle{font-size:11px;color:var(--text-hint);margin-top:2px}
.sidebar-collapse-btn{
  width:34px;height:34px;border-radius:10px;border:1px solid var(--shell-line);
  background:var(--shell-panel);color:var(--text-muted);font-size:20px;display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;transition:background .15s,border-color .15s,color .15s,box-shadow .15s;flex-shrink:0;box-shadow:var(--tiny-shadow);
  line-height:1;font-weight:300;
}
.sidebar-collapse-btn:hover{background:var(--surface2);border-color:var(--border-strong);box-shadow:var(--soft-shadow)}
/* Sidebar open → show left arrow ‹ */
.sidebar-collapse-btn::after{content:'‹';font-size:22px;font-weight:300;line-height:1}
/* Sidebar collapsed → show hamburger ≡ */
body.sidebar-collapsed .sidebar-collapse-btn::after{content:'≡';font-size:18px;font-weight:400}
.sidebar-collapse-btn{transform:none}
body.sidebar-collapsed .sidebar-collapse-btn{transform:none}
.sidebar-collapse-icon{display:none}
.sidebar-groups{flex:1;min-height:0;overflow:auto;padding:.95rem .7rem 1rem;display:flex;flex-direction:column;gap:10px}
.sidebar-group{
  border:1px solid var(--shell-line);
  border-radius:16px;
  background:var(--shell-panel);
  overflow:hidden;
  transition:border-color .18s,background .18s,box-shadow .18s,transform .18s;
  box-shadow:0 1px 0 rgba(255,255,255,.48);
}
.sidebar-group:hover{border-color:var(--border-strong)}
.sidebar-group.active{
  border-color:color-mix(in srgb,var(--group-border) 78%, var(--border));
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 90%, var(--group-light)) 0%, var(--surface) 100%);
}
.sidebar-group.open{
  border-color:color-mix(in srgb,var(--group-border) 70%, var(--border-strong));
  box-shadow:var(--soft-shadow);
}
.sidebar-group-header{
  width:100%;display:flex;align-items:center;gap:10px;padding:13px 14px;border:none;background:transparent;
  font-family:inherit;font-size:14px;font-weight:700;color:var(--text);text-align:left;cursor:pointer;transition:background .15s,color .15s
}
.sidebar-group-header:hover{background:color-mix(in srgb,var(--surface2) 65%, var(--surface))}
.sidebar-group.active>.sidebar-group-header{color:var(--group-color)}
.sidebar-group-icon{
  width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;
  font-size:15px;color:var(--text-muted);flex-shrink:0;border-radius:9px;
  background:color-mix(in srgb,var(--surface2) 64%, white);border:1px solid color-mix(in srgb,var(--border) 88%, var(--surface))
}
.sidebar-group.active .sidebar-group-icon,.sidebar-group.open .sidebar-group-icon{
  color:var(--group-color);
  background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 76%, white) 0%, color-mix(in srgb,var(--group-light) 54%, var(--surface)) 100%);
  border-color:color-mix(in srgb,var(--group-border) 72%, var(--border));
}
.sidebar-group-label{flex:1;min-width:0}
.sidebar-group-chevron{font-size:12px;color:var(--text-hint);transition:transform .2s ease,color .15s;flex-shrink:0}
.sidebar-group.open .sidebar-group-chevron{transform:rotate(90deg);color:var(--group-color)}
.sidebar-group-tools{display:none;padding:0 10px 10px}
.sidebar-group.open .sidebar-group-tools{display:flex;flex-direction:column;gap:5px}
.sb-tool-btn{
  width:100%;padding:10px 12px;border-radius:12px;border:1px solid transparent;background:transparent;
  font-family:inherit;font-size:13px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all .15s;
  text-align:left;display:flex;align-items:center;gap:10px;box-shadow:none
}
.sb-tool-btn:hover{background:color-mix(in srgb,var(--surface2) 76%, white);color:var(--text);border-color:color-mix(in srgb,var(--border) 72%, var(--surface))}
.sb-tool-btn.active{
  background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 82%, white) 0%, color-mix(in srgb,var(--group-light) 64%, var(--surface)) 100%);
  color:var(--group-color);
  border-color:color-mix(in srgb,var(--group-border) 80%, var(--border));
  box-shadow:inset 3px 0 0 var(--group-color), inset 0 1px 0 rgba(255,255,255,.46);
}
.sb-tool-bullet{width:10px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-hint);font-size:11px;line-height:1;flex-shrink:0}
.sb-tool-btn.active .sb-tool-bullet{color:var(--group-color)}
.sb-tool-label-wrap{display:flex;align-items:center;min-width:0}
.sb-tool-name{line-height:1.2}
body.sidebar-collapsed .sidebar-top{padding:10px 7px;justify-content:center;min-height:62px}
body.sidebar-collapsed .sidebar-title-wrap,body.sidebar-collapsed .sidebar-group-label,body.sidebar-collapsed .sidebar-group-chevron{display:none}
body.sidebar-collapsed .sidebar-groups{padding:10px 4px;gap:8px}
body.sidebar-collapsed .sidebar-group{border-radius:14px}
body.sidebar-collapsed .sidebar-group-header{padding:10px 0;justify-content:center}
body.sidebar-collapsed .sidebar-group-icon{width:30px;height:30px;font-size:16px}
body.sidebar-collapsed .sidebar-group-tools{display:none!important}
.main{
  padding:0!important;min-width:0;min-height:calc(100vh - var(--header-height))!important;
  height:calc(100vh - var(--header-height));overflow:hidden!important;display:flex;flex-direction:column;
  background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 78%, var(--surface)) 0%, var(--bg) 100%)
}
.breadcrumb-bar{
  display:flex;align-items:center;gap:10px;padding:.95rem 1.65rem .85rem;border-bottom:1px solid var(--shell-line);
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%, var(--bg)) 0%, var(--surface) 100%);
  flex-shrink:0;min-height:62px
}
.breadcrumb-group{
  display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;border:1px solid var(--shell-line);
  background:var(--shell-panel);font-size:12px;font-weight:600;color:var(--text-muted);letter-spacing:-.1px
}
.breadcrumb-sep{font-size:14px;color:var(--text-hint)}
.breadcrumb-tool{font-size:15px;font-weight:700;color:var(--text);letter-spacing:-.2px}
.main-scroll{
  flex:1;min-height:0;overflow:auto;padding:1.4rem 1.75rem 2rem;
  background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 92%, var(--surface)) 0%, var(--bg) 100%)
}
.main.mapper-active{height:calc(100vh - var(--header-height));min-height:calc(100vh - var(--header-height))}
.main.mapper-active .main-scroll{overflow:hidden;padding:0;display:flex;flex-direction:column}
.main.mapper-active #page-templates{flex:1;min-height:0;display:flex;flex-direction:column;height:100%;overflow:hidden}
.main.mapper-active #page-templates>.mapper-layout{flex:1;min-height:0}

/* Subtle product polish for existing controls */
.section-card{border-radius:14px;box-shadow:0 1px 2px rgba(15,23,42,.04),0 10px 24px rgba(15,23,42,.04)}
.inline-help-pill,.mapper-helper-card,.compare-helper-card{border-radius:11px}
.btn{border-radius:8px;font-weight:600;box-shadow:0 1px 0 rgba(255,255,255,.44)}
.btn:hover{transform:translateY(-1px)}
.btn-primary{box-shadow:inset 0 1px 0 rgba(255,255,255,.14)}
.editor-toolbar,.mapper-panel-head,.column-card,.quick-convert-bar,.sample-file-bar,.template-item,.mapper-view-btn,.tpl-sample-btn{box-shadow:none}
.mapper-panel{
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%, var(--bg)) 0%, var(--surface) 100%);
  border-right:1px solid var(--shell-line)
}
.mapper-panel-head{padding:.75rem .85rem .55rem;background:color-mix(in srgb,var(--surface) 96%, var(--bg));border-bottom:1px solid var(--shell-line)}
.mapper-panel-actions{border-top:1px solid var(--shell-line)}
.mapper-panel .template-list{padding:.5rem}
.template-item{border-radius:10px}
.template-item.active{box-shadow:inset 2px 0 0 var(--accent)}
.mapper-view-btn{border-radius:10px}
.mapper-view-btn.active{box-shadow:inset 2px 0 0 var(--accent)}
.quick-convert-bar{border-radius:12px}
.column-card{border-radius:12px;border-color:var(--shell-line)}
.mapping-input,.fnr-input,.column-name-input,.col-default-input,.editor-title-input,.theme-select,.btn,.mapping-select,.mapping-textarea,.tpl-sample-btn,.qc-change-file{
  transition:border-color .15s,background .15s,box-shadow .15s,transform .15s,color .15s,opacity .15s
}
.mapping-input,.fnr-input,.column-name-input,.col-default-input,.qc-change-file,input[type="text"],input[type="number"],textarea,select:not(.theme-select){
  background:color-mix(in srgb,var(--surface) 82%, var(--bg));
  border-color:var(--shell-line)
}
.mapping-input:focus,.fnr-input:focus,.column-name-input:focus,.col-default-input:focus,input[type="text"]:focus,input[type="number"]:focus,textarea:focus,select:not(.theme-select):focus{
  border-color:color-mix(in srgb,var(--group-color) 72%, var(--border));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--group-light) 68%, transparent)
}
.empty-state{
  margin:1rem;border:1px dashed var(--shell-line);border-radius:16px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%, var(--bg)) 0%, color-mix(in srgb,var(--surface2) 30%, var(--surface)) 100%)
}

@media (max-width: 1024px){
  .main-scroll{padding:1.15rem}
  .breadcrumb-bar{padding:.9rem 1.2rem .8rem}
}
@media (max-width: 900px){
  .hamburger{display:flex!important}
  .app{grid-template-columns:1fr!important}
  .sidebar{
    position:fixed;left:0;top:var(--header-height);height:calc(100vh - var(--header-height));width:min(286px,88vw)!important;
    transform:translateX(-100%);transition:transform .24s ease;z-index:350;box-shadow:0 18px 40px rgba(15,23,42,.18)
  }
  .sidebar.drawer-open{transform:translateX(0)}
  body.sidebar-collapsed .sidebar{width:min(286px,88vw)!important}
  .drawer-overlay{display:block;position:fixed;top:var(--header-height);left:0;right:0;bottom:0;background:rgba(15,23,42,.38);z-index:340;opacity:0;pointer-events:none;transition:opacity .24s ease}
  .drawer-overlay.open{opacity:1;pointer-events:auto}
  .sidebar-collapse-btn{display:none}
  .main{height:auto;min-height:calc(100vh - var(--header-height));overflow:visible!important}
  .main.mapper-active{height:auto;min-height:calc(100vh - var(--header-height))}
  .main.mapper-active .main-scroll{overflow:visible;padding:.75rem;display:block}
  .breadcrumb-bar{min-height:auto}
}
@media (max-width: 767px){
  :root{--header-height:52px;--chrome-height:var(--header-height);--sidebar-width-collapsed:48px}
  .header{padding:0 .85rem!important}
  .logo{font-size:17px}
  .main-scroll{padding:.85rem}
  .breadcrumb-bar{padding:.8rem .9rem;gap:8px}
  .breadcrumb-group,.breadcrumb-tool{font-size:13px}
  .sidebar-group-header{padding:13px 14px;font-size:14px}
  .sb-tool-btn{padding:10px 12px;font-size:13px}
}




/* ── PASS 2: clearer hierarchy + selected states + mapper polish ── */
:root{
  --shell-shadow-soft:0 1px 2px rgba(15,23,42,.04),0 10px 24px rgba(15,23,42,.05);
  --shell-shadow-xs:0 1px 1px rgba(15,23,42,.05),0 2px 6px rgba(15,23,42,.04);
}
.header{
  padding:0 1.2rem 0 1.05rem!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 97%, var(--bg)) 0%, color-mix(in srgb,var(--surface) 99%, var(--bg)) 100%)!important;
}
.logo{letter-spacing:-.38px}
.logo-badge{border-radius:8px;min-width:34px;text-align:center}
.help-btn,.theme-select,.hamburger,.sidebar-collapse-btn{box-shadow:var(--shell-shadow-xs)}

.sidebar-top{
  padding:.95rem .9rem .88rem;
  min-height:72px;
}
.sidebar-title{font-size:13px;letter-spacing:.02em;text-transform:uppercase;color:var(--text-muted)}
.sidebar-subtitle{font-size:12px;color:var(--text-hint);margin-top:4px}
.sidebar-groups{padding:1rem .78rem 1.08rem;gap:12px}
.sidebar-group{
  border-radius:18px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%, var(--bg)) 0%, color-mix(in srgb,var(--surface) 100%, var(--bg)) 100%);
  box-shadow:0 1px 0 rgba(255,255,255,.55),0 8px 22px rgba(15,23,42,.03);
}
.sidebar-group:hover{box-shadow:var(--shell-shadow-soft)}
.sidebar-group.active{
  border-color:color-mix(in srgb,var(--group-border) 82%, var(--border));
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 88%, var(--group-light)) 0%, color-mix(in srgb,var(--surface) 98%, var(--group-light)) 100%);
}
.sidebar-group.open{
  border-color:color-mix(in srgb,var(--group-border) 74%, var(--border-strong));
  box-shadow:0 1px 0 rgba(255,255,255,.55),0 12px 28px rgba(15,23,42,.06);
}
.sidebar-group-header{
  padding:12px 14px;
  gap:12px;
  position:relative;
}
.sidebar-group-header:hover{background:color-mix(in srgb,var(--surface2) 55%, var(--surface))}
.sidebar-group.active > .sidebar-group-header::after,
.sidebar-group.open > .sidebar-group-header::after{
  content:'';
  position:absolute;
  left:14px;
  right:14px;
  bottom:0;
  height:1px;
  background:color-mix(in srgb,var(--group-border) 40%, transparent);
}
.sidebar-group-icon{
  width:30px;height:30px;border-radius:10px;font-size:15px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.65);
}
.sidebar-group-label{font-size:13px;font-weight:700;letter-spacing:-.1px}
.sidebar-group-count{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:22px;height:22px;padding:0 7px;border-radius:999px;
  background:color-mix(in srgb,var(--surface2) 84%, white);
  border:1px solid color-mix(in srgb,var(--border) 86%, var(--surface));
  color:var(--text-hint);font-size:11px;font-weight:700;letter-spacing:0;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7);
}
.sidebar-group.active .sidebar-group-count,
.sidebar-group.open .sidebar-group-count{
  background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 78%, white) 0%, color-mix(in srgb,var(--group-light) 58%, var(--surface)) 100%);
  border-color:color-mix(in srgb,var(--group-border) 72%, var(--border));
  color:var(--group-color);
}
.sidebar-group-chevron{font-size:11px}
.sidebar-group-tools{
  padding:10px 10px 11px;
  position:relative;
}
.sidebar-group.open .sidebar-group-tools{gap:6px}
.sb-tool-btn{
  min-height:40px;
  border-radius:13px;
  padding:10px 12px 10px 11px;
  font-weight:600;
  letter-spacing:-.08px;
}
.sb-tool-btn:hover{
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 82%, white) 0%, color-mix(in srgb,var(--surface2) 62%, var(--surface)) 100%);
}
.sb-tool-btn.active{
  background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 88%, white) 0%, color-mix(in srgb,var(--group-light) 66%, var(--surface)) 100%);
  border-color:color-mix(in srgb,var(--group-border) 84%, var(--border));
  color:color-mix(in srgb,var(--group-color) 92%, var(--text));
  box-shadow:inset 4px 0 0 var(--group-color), inset 0 1px 0 rgba(255,255,255,.62), 0 6px 14px rgba(15,23,42,.05);
}
.sb-tool-btn.active .sb-tool-name{font-weight:700}
.sb-tool-bullet{
  width:12px;font-size:12px;color:color-mix(in srgb,var(--text-hint) 80%, var(--border));
  transition:transform .15s,color .15s,opacity .15s;
}
.sb-tool-btn:hover .sb-tool-bullet{transform:scale(1.1);color:var(--text-muted)}
.sb-tool-btn.active .sb-tool-bullet{transform:scale(1.22)}
body.sidebar-collapsed .sidebar-group{border-radius:16px}

.breadcrumb-bar{
  padding:.92rem 1.65rem .84rem;
  gap:11px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 97%, var(--bg)) 0%, color-mix(in srgb,var(--surface) 100%, var(--bg)) 100%);
}
.breadcrumb-group{
  border-radius:999px;
  padding:6px 11px;
  font-size:11px;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.04em;
  color:color-mix(in srgb,var(--group-color) 52%, var(--text-muted));
  border-color:color-mix(in srgb,var(--group-border) 58%, var(--border));
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 90%, var(--group-light)) 0%, color-mix(in srgb,var(--surface) 98%, var(--group-light)) 100%);
}
.breadcrumb-sep{font-size:13px;color:color-mix(in srgb,var(--text-hint) 75%, var(--border))}
.breadcrumb-tool{
  display:inline-flex;align-items:center;
  min-height:34px;padding:0 2px;
  font-size:16px;font-weight:750;letter-spacing:-.25px;
}

.main-scroll{padding:1.3rem 1.7rem 2rem}
.section-card{border-radius:15px}
.page-head{margin-bottom:1rem}

.mapper-panel{
  width:232px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 97%, var(--bg)) 0%, color-mix(in srgb,var(--surface) 100%, var(--bg)) 100%);
}
.mapper-panel-head{
  padding:.9rem .9rem .62rem;
  align-items:flex-start;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 98%, var(--bg)) 0%, color-mix(in srgb,var(--surface) 94%, var(--bg)) 100%);
}
.mapper-panel-title-wrap{display:flex;flex-direction:column;gap:3px;min-width:0}
.mapper-panel-title{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-hint)}
.mapper-panel-subtitle{font-size:12px;color:var(--text-muted);line-height:1.35}
.btn-new-template-inline{
  border-style:solid;
  border-color:color-mix(in srgb,var(--group-border) 34%, var(--border));
  background:color-mix(in srgb,var(--surface) 80%, var(--group-light));
  color:var(--group-color);
  font-weight:700;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.62);
}
.btn-new-template-inline:hover{box-shadow:0 6px 14px rgba(15,23,42,.06)}
.mapper-panel .template-list{padding:.55rem;gap:4px}
.template-item{
  min-height:38px;
  border-radius:12px;
  padding:8px 9px;
  border-color:transparent;
}
.template-item:hover{background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 86%, white) 0%, color-mix(in srgb,var(--surface2) 64%, var(--surface)) 100%)}
.template-item.active{
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent-light) 78%, white) 0%, color-mix(in srgb,var(--accent-light) 58%, var(--surface)) 100%);
  border-color:color-mix(in srgb,var(--accent-border) 88%, var(--border));
  box-shadow:inset 3px 0 0 var(--accent), 0 6px 14px rgba(15,23,42,.04);
}
.template-item-name{font-weight:600}
.template-item.active .template-item-name{font-weight:700}
.mapper-panel-actions{
  padding:.7rem;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 96%, var(--bg)) 0%, color-mix(in srgb,var(--surface) 100%, var(--bg)) 100%);
}
.mapper-actions-title{
  margin:0 0 8px;
  font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-hint);
}
.mapper-view-btn{
  min-height:38px;
  border-radius:12px;
  padding:8px 10px;
  font-size:12px;
  font-weight:650;
}
.mapper-view-btn:hover{background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 84%, white) 0%, color-mix(in srgb,var(--surface2) 60%, var(--surface)) 100%)}
.mapper-view-btn.active{
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent-light) 80%, white) 0%, color-mix(in srgb,var(--accent-light) 60%, var(--surface)) 100%);
  border-color:color-mix(in srgb,var(--accent-border) 84%, var(--border));
  box-shadow:inset 3px 0 0 var(--accent), 0 6px 14px rgba(15,23,42,.04);
}
.mapper-panel-import{
  margin-top:8px;padding-top:8px;border-top:1px solid color-mix(in srgb,var(--shell-line) 88%, transparent);
}
.btn-import-tpl{
  border-radius:11px;
  background:color-mix(in srgb,var(--surface) 82%, var(--bg));
}
.sample-file-bar{
  margin:.2rem .7rem .35rem;
  border-radius:12px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent-light) 86%, white) 0%, color-mix(in srgb,var(--accent-light) 62%, var(--surface)) 100%);
}
.empty-state{margin:1.1rem}

@media (max-width: 900px){
  .mapper-panel{width:100%}
}
@media (max-width: 767px){
  .sidebar-groups{padding:.8rem .65rem .95rem}
  .breadcrumb-group{font-size:10px}
  .breadcrumb-tool{font-size:14px}
}



/* ── Shell tune-up + content-screen polish ── */
.sidebar-groups{gap:6px!important;padding:.82rem .68rem .92rem!important}
.sidebar-group{border-radius:14px!important}
.sidebar-group-header{padding:11px 13px!important;gap:9px!important}
.sidebar-group-tools{padding:8px 9px 9px!important}
.sidebar-group-count{display:none!important}
.sidebar-group-label{font-size:13px!important;font-weight:700!important}
.sidebar-group-chevron{color:var(--text-hint)}
body.sidebar-collapsed .sidebar-groups{gap:8px!important}

.main{padding:1.15rem 1.6rem 1.9rem!important;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 92%, white) 0%, var(--bg) 100%)}
.breadcrumb-bar{
  margin:0 0 1rem!important;
  padding:.85rem 1.15rem .8rem!important;
  border-radius:16px!important;
  border:1px solid color-mix(in srgb,var(--shell-line) 96%, white)!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 98%, white) 0%, color-mix(in srgb,var(--shell-panel) 92%, var(--surface)) 100%)!important;
  box-shadow:0 1px 0 rgba(255,255,255,.6)!important;
}
.breadcrumb-group{font-size:11px!important;font-weight:700!important;letter-spacing:.04em!important;text-transform:uppercase!important;color:var(--text-hint)!important}
.breadcrumb-sep{margin:0 1px!important}
.breadcrumb-tool{font-size:15px!important;font-weight:700!important;letter-spacing:-.24px!important}

.page-head{margin-bottom:1rem!important;gap:.85rem!important}
.page-head-badge{
  padding:5px 10px!important;
  border-radius:999px!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 76%, white) 0%, color-mix(in srgb,var(--surface2) 92%, var(--surface)) 100%)!important;
  border:1px solid color-mix(in srgb,var(--border) 92%, white)!important;
  color:var(--text-muted)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.65)!important;
}
.section-card{
  border-radius:18px!important;
  border:1px solid color-mix(in srgb,var(--border) 94%, white)!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 99%, white) 0%, color-mix(in srgb,var(--surface) 96%, var(--bg)) 100%)!important;
  box-shadow:0 1px 2px rgba(15,23,42,.04),0 10px 24px rgba(15,23,42,.035)!important;
  padding:1.08rem 1.16rem!important;
  margin-bottom:.95rem!important;
}
.section-card.soft{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%, white) 0%, color-mix(in srgb,var(--surface) 82%, var(--group-light)) 100%)!important}
.section-card-header{margin-bottom:.78rem!important;gap:.85rem!important}
.section-card-title{font-size:15px!important;font-weight:750!important;letter-spacing:-.22px!important}
.section-card-sub{font-size:12px!important;line-height:1.55!important;color:var(--text-muted)!important}
.section-card-badge{box-shadow:inset 0 1px 0 rgba(255,255,255,.55)}
.inline-help{gap:8px!important}
.inline-help-pill,.mapper-helper-card,.compare-helper-card,.fnr-bar{
  border-radius:14px!important;
  border:1px solid color-mix(in srgb,var(--border) 92%, white)!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 72%, white) 0%, color-mix(in srgb,var(--surface2) 92%, var(--surface)) 100%)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55)!important;
}
.inline-help-pill{padding:8px 11px!important}
.mapper-helper-title,.compare-helper-title{margin-bottom:7px!important;letter-spacing:.08em!important}
.mapper-helper-item,.compare-helper-item{line-height:1.55!important}
.compare-flow-stack{gap:.9rem!important}
.compare-shortcut-btn{
  border-radius:12px!important;
  padding:9px 11px!important;
  border:1px solid color-mix(in srgb,var(--border) 94%, white)!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 98%, white) 0%, color-mix(in srgb,var(--surface) 93%, var(--surface2)) 100%)!important;
}
.compare-shortcut-btn.active{
  background:linear-gradient(180deg,color-mix(in srgb,var(--info-light) 78%, white) 0%, color-mix(in srgb,var(--info-light) 60%, var(--surface)) 100%)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55)!important;
}

.editor-shell-top{padding:1.35rem 1.7rem 0!important;background:transparent!important}
.editor-shell-body,#mapper-content-convert,#mapper-content-history{padding:1rem 1.7rem 1.45rem!important}
.editor-header{gap:.7rem!important;margin-bottom:.55rem!important}
.editor-title-input{font-size:19px!important;letter-spacing:-.28px!important}
.editor-toolbar{
  gap:7px!important;
  margin-bottom:.9rem!important;
  padding:.2rem 0 .65rem!important;
  border-bottom:1px solid color-mix(in srgb,var(--border) 92%, white)!important;
}
.quick-convert-bar{
  padding:11px 14px!important;
  border-radius:14px!important;
  border:1px solid color-mix(in srgb,var(--accent-border) 86%, white)!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent-light) 78%, white) 0%, color-mix(in srgb,var(--accent-light) 62%, var(--surface)) 100%)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55)!important;
}
.column-card{
  border-radius:14px!important;
  border-color:color-mix(in srgb,var(--border) 94%, white)!important;
  box-shadow:0 1px 2px rgba(15,23,42,.03),0 7px 16px rgba(15,23,42,.03)!important;
}
.column-card-header{padding:10px 13px!important}
.column-card-body{padding:0 13px 13px!important}
.mapping-input,.col-default-input,.fnr-input{
  border-radius:10px!important;
  border-color:color-mix(in srgb,var(--border) 90%, white)!important;
  background:color-mix(in srgb,var(--bg) 74%, white)!important;
}
.mapping-input:focus,.col-default-input:focus,.fnr-input:focus{
  border-color:color-mix(in srgb,var(--group-color) 55%, var(--border))!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--group-light) 44%, transparent)!important;
}

.btn{
  border-radius:11px!important;
  border-color:color-mix(in srgb,var(--border) 92%, white)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55)!important;
}
.btn:hover{box-shadow:0 4px 12px rgba(15,23,42,.05)!important}
.btn-primary{box-shadow:none!important}

@media (max-width: 900px){
  .main{padding:1rem .95rem 1.35rem!important}
  .section-card{padding:1rem!important}
  .editor-shell-top,.editor-shell-body,#mapper-content-convert,#mapper-content-history{padding-left:1rem!important;padding-right:1rem!important}
}


/* ── PASS 4: move page intro to top bar, remove duplicate parent/title blocks ── */
.breadcrumb-bar{
  align-items:flex-start!important;
  min-height:72px!important;
  padding:.88rem 1.65rem .82rem!important;
}
.breadcrumb-group,.breadcrumb-sep{display:none!important}
.breadcrumb-copy{
  display:flex!important;
  flex-direction:column!important;
  gap:2px!important;
  min-width:0!important;
  width:100%!important;
}
.breadcrumb-tool{
  display:block!important;
  min-height:auto!important;
  padding:0!important;
  font-size:15px!important;
  font-weight:750!important;
  letter-spacing:-.24px!important;
  line-height:1.25!important;
}
.breadcrumb-desc{
  font-size:12.5px!important;
  color:var(--text-muted)!important;
  line-height:1.45!important;
  letter-spacing:-.04px!important;
  max-width:100%!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
.page-head{
  justify-content:flex-start!important;
  align-items:center!important;
  min-height:auto!important;
}
.page-head > div:first-child{display:none!important}
.page-head-badge{margin-left:0!important}
.forge-page > h2,
.forge-page > .page-sub:first-of-type{display:none!important}
@media (max-width: 900px){
  .breadcrumb-bar{padding:.82rem 1rem .78rem!important;min-height:auto!important}
  .breadcrumb-desc{white-space:normal!important}
}



/* ── Convert light pass ───────────────────────────── */
#page-json,
#page-xml,
#page-csv{
  --convert-color:var(--group-color);
  --convert-light:color-mix(in srgb,var(--group-light) 74%, white);
  --convert-light-2:color-mix(in srgb,var(--group-light) 46%, var(--surface));
  --convert-border:color-mix(in srgb,var(--group-border) 82%, var(--border));
}
#page-json .section-card,
#page-xml .section-card,
#page-csv .section-card{
  border-radius:14px;
}
#page-json .section-card-header,
#page-xml .section-card-header,
#page-csv .section-card-header{
  margin-bottom:.75rem;
}
#page-json .section-card-sub,
#page-xml .section-card-sub,
#page-csv .section-card-sub{
  line-height:1.5;
}
#page-json .section-card-badge,
#page-xml .section-card-badge,
#page-csv .section-card-badge{
  background:var(--convert-light);
  border-color:var(--convert-border);
  color:var(--convert-color);
}
#page-json .json-mode-chooser,
#page-xml .json-mode-chooser{
  gap:.8rem;
  margin-bottom:1.1rem;
}
#page-json .json-mode-card,
#page-xml .json-mode-card{
  border-radius:12px;
  padding:.95rem 1rem;
  box-shadow:none;
  background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb,var(--surface) 92%, var(--group-light)) 100%);
}
#page-json .json-mode-card:hover,
#page-xml .json-mode-card:hover{
  border-color:var(--convert-border);
  background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb,var(--surface) 86%, var(--group-light)) 100%);
}
#page-json .json-mode-card.active,
#page-xml .json-mode-card.active{
  background:linear-gradient(180deg,var(--convert-light) 0%, color-mix(in srgb,var(--group-light) 58%, var(--surface)) 100%);
  border-color:var(--convert-border);
}
#page-json .json-mode-card-title,
#page-xml .json-mode-card-title{
  font-size:14px;
  letter-spacing:-.1px;
}
#page-json .json-mode-card-desc,
#page-xml .json-mode-card-desc{
  line-height:1.55;
}
#page-json .upload-zone,
#page-xml .upload-zone,
#page-csv .csv-drop-zone{
  border-color:color-mix(in srgb,var(--group-border) 58%, var(--border));
  border-radius:14px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 98%, var(--group-light)) 0%, color-mix(in srgb,var(--surface) 92%, var(--group-light)) 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6);
}
#page-json .upload-zone:hover,
#page-json .upload-zone.drag-over,
#page-xml .upload-zone:hover,
#page-xml .upload-zone.drag-over,
#page-csv .csv-drop-zone:hover,
#page-csv .csv-drop-zone.drag-over{
  border-color:var(--convert-border);
  background:linear-gradient(180deg,var(--convert-light) 0%, color-mix(in srgb,var(--group-light) 56%, var(--surface)) 100%);
}
#page-json .upload-zone.has-file,
#page-xml .upload-zone.has-file{
  border-color:var(--convert-border);
  background:linear-gradient(180deg,var(--convert-light) 0%, color-mix(in srgb,var(--group-light) 52%, var(--surface)) 100%);
}
#page-json .upload-zone h3,
#page-xml .upload-zone h3,
#page-csv .csv-drop-title{
  font-size:15px;
  margin-bottom:4px;
}
#page-json .upload-zone p,
#page-xml .upload-zone p,
#page-csv .csv-drop-sub{
  line-height:1.55;
}
#page-json .upload-icon,
#page-xml .upload-icon,
#page-csv .csv-drop-icon{
  margin-bottom:10px;
}
#page-json .json-file-tag,
#page-xml .json-file-tag,
#page-csv .csv-file-tag{
  background:var(--convert-light);
  border-color:var(--convert-border);
  color:var(--convert-color);
}
#json-sheet-wrap{
  padding:.85rem .95rem;
  border:1px solid var(--convert-border);
  border-radius:12px;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 98%, var(--group-light)) 0%, color-mix(in srgb,var(--surface) 92%, var(--group-light)) 100%);
}
#page-json .json-inline-options,
#page-xml .json-inline-options{
  gap:.65rem;
  margin:1rem 0;
}
#page-json .json-opt,
#page-xml .json-opt{
  border-radius:10px;
  border-color:color-mix(in srgb,var(--group-border) 42%, var(--border));
  background:color-mix(in srgb,var(--surface2) 72%, var(--group-light));
}
#page-xml .xml-advanced-box,
#page-xml #xml-json-shape-help{
  border-color:color-mix(in srgb,var(--group-border) 42%, var(--border));
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 78%, white) 0%, color-mix(in srgb,var(--surface2) 92%, var(--group-light)) 100%);
}
#page-json .json-toolbar,
#page-xml .json-toolbar,
#page-xml .xml-preview-topbar,
#page-csv .csv-run-bar{
  gap:.8rem;
}
#page-json .json-chip,
#page-xml .json-chip{
  background:color-mix(in srgb,var(--surface2) 78%, var(--group-light));
  border-color:color-mix(in srgb,var(--group-border) 38%, var(--border));
}
#page-json .json-preview-wrap,
#page-xml .json-preview-wrap,
#page-csv .csv-preview-wrap{
  border-radius:14px;
  border-color:color-mix(in srgb,var(--group-border) 32%, var(--border));
  background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb,var(--surface) 96%, var(--group-light)) 100%);
}
#page-json .json-preview-table th,
#page-xml .json-preview-table th,
#page-csv .csv-preview-table th{
  background:color-mix(in srgb,var(--surface2) 85%, var(--group-light));
}
#page-json .json-status,
#page-xml .json-status{
  font-size:12px;
}
#page-json #json-download-btn,
#page-xml #xml-download-btn,
#page-csv .btn-csv-run{
  box-shadow:none;
}
#page-csv .csv-detect-grid{
  gap:.7rem;
}
#page-csv .csv-detect-card,
#page-csv .csv-sub-control,
#page-csv .csv-helper-card{
  border-radius:12px;
  border-color:color-mix(in srgb,var(--group-border) 34%, var(--border));
  background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb,var(--surface2) 92%, var(--group-light)) 100%);
}
#page-csv .csv-fix-list{
  gap:.55rem;
}
#page-csv .csv-fix-row{
  border-radius:12px;
  padding:.8rem .95rem;
  border-color:color-mix(in srgb,var(--group-border) 28%, var(--border));
  background:linear-gradient(180deg,var(--surface) 0%, color-mix(in srgb,var(--surface2) 90%, var(--group-light)) 100%);
}
#page-csv .csv-fix-row:hover{
  border-color:var(--convert-border);
}
#page-csv .csv-fix-row.checked{
  background:linear-gradient(180deg,var(--convert-light) 0%, color-mix(in srgb,var(--group-light) 54%, var(--surface)) 100%);
  border-color:var(--convert-border);
}
#page-csv .csv-delim-btn.active{
  background:var(--convert-color);
  border-color:var(--convert-color);
}
#page-csv .csv-result-box{
  border-radius:14px;
  border-color:var(--convert-border);
  background:linear-gradient(180deg,var(--convert-light) 0%, color-mix(in srgb,var(--group-light) 52%, var(--surface)) 100%);
}
#page-csv .csv-stat-val{
  color:var(--convert-color);
}
@media(max-width:767px){
  #page-json .json-mode-chooser,
  #page-xml .json-mode-chooser{gap:.7rem}
  #json-sheet-wrap{padding:.75rem .8rem}
}


/* ── Analyse / Inspector light pass ── */
#page-textcompare .section-card,
#textcmp-struct-panel .section-card{
  border-radius:15px!important;
  box-shadow:0 1px 2px rgba(15,23,42,.04),0 10px 22px rgba(15,23,42,.035)!important;
}
#page-textcompare .section-card.soft,
#textcmp-struct-panel .section-card.soft{
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 95%, white) 0%, color-mix(in srgb,var(--surface) 84%, var(--group-light)) 100%)!important;
}
#page-textcompare .section-card-header,
#textcmp-struct-panel .section-card-header{
  margin-bottom:.72rem!important;
}
#page-textcompare .textcmp-drop{
  border:1px dashed color-mix(in srgb,var(--group-border) 58%, var(--border))!important;
  border-radius:14px!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 97%, white) 0%, color-mix(in srgb,var(--surface) 90%, var(--group-light)) 100%)!important;
  min-height:154px;
  transition:border-color .18s, background .18s, transform .18s, box-shadow .18s;
}
#page-textcompare .textcmp-drop:hover,
#page-textcompare .textcmp-drop.drag-over{
  border-color:color-mix(in srgb,var(--group-border) 92%, var(--border-strong))!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%, white) 0%, color-mix(in srgb,var(--surface) 82%, var(--group-light)) 100%)!important;
  box-shadow:0 10px 24px rgba(15,23,42,.05);
}
#page-textcompare .textcmp-paste-tabs{
  gap:6px!important;
  margin-bottom:.62rem!important;
}
#page-textcompare .textcmp-paste-tab{
  padding:6px 12px!important;
  border-radius:9px!important;
  background:var(--surface)!important;
  border-color:var(--border)!important;
  font-weight:600!important;
}
#page-textcompare .textcmp-paste-tab:hover{
  background:var(--surface2)!important;
  color:var(--text)!important;
}
#page-textcompare .textcmp-paste-tab.active{
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%, white) 0%, color-mix(in srgb,var(--surface) 84%, var(--group-light)) 100%)!important;
  border-color:color-mix(in srgb,var(--group-border) 82%, var(--border))!important;
  color:var(--group-color)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55);
}
#page-textcompare .textcmp-paste-area{
  min-height:124px!important;
  border-radius:14px!important;
  border:1px solid var(--border)!important;
  background:color-mix(in srgb,var(--surface) 96%, white)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45);
}
#page-textcompare .textcmp-paste-area:focus,
#textcmp-struct-panel .scmp-textarea:focus{
  border-color:color-mix(in srgb,var(--group-border) 88%, var(--border-strong))!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--group-light) 40%, transparent);
}
#page-textcompare .textcmp-controls{
  margin-top:.9rem!important;
  padding:.78rem .9rem!important;
  border:1px solid var(--border)!important;
  border-radius:14px!important;
  background:color-mix(in srgb,var(--surface) 96%, white)!important;
}
#page-textcompare .textcmp-filter-select,
#textcmp-struct-panel .scmp-select{
  height:34px;
  padding:0 12px;
  border:1px solid var(--border);
  border-radius:9px;
  background:var(--surface);
  color:var(--text);
  font:inherit;
}
#page-textcompare .textcmp-filter-select:hover,
#textcmp-struct-panel .scmp-select:hover{
  border-color:var(--border-strong);
}
#page-textcompare .textcmp-viewer,
#textcmp-struct-panel .scmp-viewer{
  background:var(--surface);
}
#page-textcompare .textcmp-header,
#textcmp-struct-panel .scmp-header{
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 86%, white) 0%, color-mix(in srgb,var(--surface2) 100%, var(--surface)) 100%)!important;
  border-bottom:1px solid var(--border)!important;
}
#page-textcompare .textcmp-header-cell,
#textcmp-struct-panel .scmp-header-cell{
  padding:.72rem 1rem!important;
  font-size:12px!important;
  font-weight:700!important;
}
#page-textcompare .textcmp-scroll,
#textcmp-struct-panel .scmp-scroll{
  min-height:320px!important;
}
#page-textcompare .textcmp-nav,
#textcmp-struct-panel .scmp-nav{
  padding:.7rem .9rem!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 86%, white) 0%, var(--surface2) 100%)!important;
  border-top:1px solid var(--border)!important;
}
#page-textcompare .textcmp-nav-btn,
#textcmp-struct-panel .scmp-nav-btn{
  height:31px;
  padding:0 12px!important;
  border-radius:8px!important;
  font-weight:600!important;
}
#page-textcompare .textcmp-nav-btn:hover,
#textcmp-struct-panel .scmp-nav-btn:hover{
  background:var(--surface)!important;
}
#textcmp-struct-panel .scmp-input-grid{
  gap:1rem!important;
}
#textcmp-struct-panel .scmp-input-pane{
  border-radius:15px!important;
  box-shadow:0 1px 2px rgba(15,23,42,.03);
}
#textcmp-struct-panel .scmp-input-head{
  padding:.72rem .95rem!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 82%, white) 0%, var(--surface2) 100%)!important;
}
#textcmp-struct-panel .scmp-textarea{
  min-height:136px!important;
  max-height:210px!important;
  border:0!important;
  background:color-mix(in srgb,var(--surface) 98%, white)!important;
}
#textcmp-struct-panel .scmp-input-footer{
  padding:.55rem .75rem!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface2) 82%, white) 0%, var(--surface2) 100%)!important;
}
#textcmp-struct-panel .scmp-upload-btn{
  padding:5px 11px!important;
  border-radius:8px!important;
  font-weight:600!important;
}
#textcmp-struct-panel .scmp-upload-btn:hover{
  background:color-mix(in srgb,var(--surface) 84%, var(--group-light))!important;
  border-color:color-mix(in srgb,var(--group-border) 72%, var(--border))!important;
  color:var(--group-color)!important;
}
#textcmp-struct-panel .scmp-clear-btn{
  padding:5px 8px!important;
  border-radius:8px!important;
}
#textcmp-struct-panel .scmp-summary-bar{
  margin-bottom:.9rem!important;
  padding:.12rem 0;
}
#textcmp-struct-panel .scmp-stat{
  padding:5px 10px!important;
  border-radius:999px!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4);
}
#textcmp-struct-panel .scmp-empty-state,
#page-textcompare #textcmp-rows .textcmp-code[style*="Load two files"]{
  color:var(--text-hint)!important;
}
@media(max-width:960px){
  #page-textcompare .textcmp-controls{padding:.72rem .78rem!important}
}


/* ── Home page ── */
.logo-btn{background:none;border:none;padding:0;cursor:pointer}
.logo-btn:hover{opacity:.92}
.logo-btn:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%, transparent);border-radius:10px}
.home-shell{display:flex;flex-direction:column;gap:18px}
.home-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;flex-wrap:wrap;padding:18px 20px;border:1px solid var(--border);border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 95%, white) 0%, color-mix(in srgb,var(--surface) 82%, var(--surface2)) 100%);box-shadow:var(--shadow)}
.home-intro-copy{max-width:760px}
.home-kicker{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid var(--border);border-radius:999px;background:var(--surface2);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:10px}
.home-title{font-size:30px;line-height:1.08;letter-spacing:-.04em;font-weight:800;color:var(--text);margin-bottom:8px}
.home-subtitle{font-size:14px;line-height:1.65;color:var(--text-muted);max-width:720px}
.home-quick-actions{display:flex;gap:10px;flex-wrap:wrap;align-self:flex-end}
.home-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.home-card{border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--shadow);padding:16px 16px 14px;display:flex;flex-direction:column;gap:14px;min-width:0}
.home-card.compare{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%, white) 0%, color-mix(in srgb,var(--surface) 84%, var(--info-light)) 100%)}
.home-card.convert{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%, white) 0%, color-mix(in srgb,var(--surface) 84%, var(--accent-light)) 100%)}
.home-card.forge{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 94%, white) 0%, color-mix(in srgb,var(--surface) 84%, var(--warning-light)) 100%)}
.home-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.home-card-title{font-size:17px;font-weight:800;letter-spacing:-.02em;color:var(--text)}
.home-card-desc{font-size:12px;line-height:1.6;color:var(--text-muted);margin-top:4px}
.home-card-icon{width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);color:var(--text-muted);font-size:17px;box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.home-links{display:flex;flex-direction:column;gap:8px}
.home-link-btn{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:11px 12px;border-radius:12px;border:1px solid var(--border);background:color-mix(in srgb,var(--surface) 93%, var(--surface2));font-family:inherit;font-size:13px;font-weight:700;color:var(--text);cursor:pointer;transition:all .15s;text-align:left}
.home-link-btn:hover{border-color:var(--border-strong);background:var(--surface);transform:translateY(-1px)}
.home-link-btn span:last-child{font-size:14px;color:var(--text-hint)}
.home-bottom-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}
.home-panel{border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--shadow);padding:16px}
.home-panel-title{font-size:14px;font-weight:800;letter-spacing:-.02em;color:var(--text);margin-bottom:4px}
.home-panel-sub{font-size:12px;color:var(--text-muted);margin-bottom:12px}
.home-chip-row{display:flex;flex-wrap:wrap;gap:10px}
.home-chip-btn{padding:9px 12px;border-radius:11px;border:1px solid var(--border);background:var(--surface2);font-family:inherit;font-size:12px;font-weight:700;color:var(--text);cursor:pointer;transition:all .15s}
.home-chip-btn:hover{background:var(--surface);border-color:var(--border-strong)}
.home-recent-list{display:flex;flex-direction:column;gap:8px}
.home-recent-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--surface) 96%, var(--surface2));font-size:13px;color:var(--text)}
.home-recent-item button{border:none;background:none;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left;flex:1}
.home-recent-item button:hover{color:var(--accent)}
.home-empty-note{font-size:12px;color:var(--text-hint);padding:12px;border:1px dashed var(--border-strong);border-radius:12px;background:color-mix(in srgb,var(--surface2) 70%, var(--surface))}
.home-mode .breadcrumb-bar{display:none!important}
.home-shell{gap:16px}
.home-intro{padding:20px 22px;min-height:auto}
.home-intro-copy{max-width:920px}
.home-subtitle{max-width:860px}
.home-bottom-grid{grid-template-columns:1fr}
.home-panel.recent-only{max-width:900px}
@media(max-width:1180px){.home-grid,.home-bottom-grid{grid-template-columns:1fr}}
@media(max-width:900px){.home-intro{padding:16px}.home-title{font-size:24px}}

/* ── BUTTON HOVER FIX ── */
/* .btn:hover sets background:var(--surface2) which overrides .btn-primary's accent bg,
   leaving white text on a light surface — unreadable. Force accent bg + white text on hover. */
.btn.btn-primary:hover:not(:disabled){
  background:var(--accent)!important;
  border-color:var(--accent)!important;
  color:white!important;
  opacity:.88!important;
}
/* .btn-danger same issue: danger-light bg + danger-colored text on hover goes invisible */
.btn.btn-danger:hover:not(:disabled){
  background:var(--danger-light)!important;
  border-color:var(--danger)!important;
  color:var(--danger)!important;
  opacity:.88!important;
}
/* CSV XLSX download button: hover should stay info-blue, not turn dark green */
.btn-csv-run:hover{
  background:color-mix(in srgb,var(--info) 88%,black)!important;
  color:white!important;
}

/* ── DESIGN POLISH ── */

/* Breadcrumb bar: subtle group-color tint */
.breadcrumb-bar{
  background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 22%, var(--surface)) 0%, var(--surface) 100%)!important;
  border-color:color-mix(in srgb,var(--group-border) 48%, var(--border))!important;
}

/* Home intro card: accent-tinted border + background */
.home-intro{
  border-color:color-mix(in srgb,var(--accent-border) 72%, var(--border))!important;
  background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 97%, white) 0%, color-mix(in srgb,var(--surface) 88%, var(--accent-light)) 100%)!important;
}

/* Home kicker: accent-colored pill */
.home-kicker{
  background:var(--accent-light)!important;
  border-color:var(--accent-border)!important;
  color:var(--accent)!important;
}

/* Home cards: top color stripe via ::before */
.home-card{position:relative!important;overflow:hidden!important;}
.home-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:18px 18px 0 0;}
.home-card.compare::before{background:var(--info);}
.home-card.convert::before{background:var(--accent);}
.home-card.forge::before{background:var(--warning);}

/* Home card icons: tinted per group */
.home-card.compare .home-card-icon{background:var(--info-light)!important;border-color:color-mix(in srgb,var(--info) 28%,var(--border))!important;color:var(--info)!important;}
.home-card.convert .home-card-icon{background:var(--accent-light)!important;border-color:var(--accent-border)!important;color:var(--accent)!important;}
.home-card.forge .home-card-icon{background:var(--warning-light)!important;border-color:color-mix(in srgb,var(--warning) 32%,var(--border))!important;color:var(--warning)!important;}

/* Home link buttons: group-color hover tint */
.home-card.compare .home-link-btn:hover{background:color-mix(in srgb,var(--info-light) 55%,var(--surface))!important;border-color:color-mix(in srgb,var(--info) 22%,var(--border))!important;}
.home-card.convert .home-link-btn:hover{background:color-mix(in srgb,var(--accent-light) 55%,var(--surface))!important;border-color:color-mix(in srgb,var(--accent) 22%,var(--border))!important;}
.home-card.forge .home-link-btn:hover{background:color-mix(in srgb,var(--warning-light) 55%,var(--surface))!important;border-color:color-mix(in srgb,var(--warning) 22%,var(--border))!important;}

/* Recent items: hover lift */
.home-recent-item{transition:all .15s!important;}
.home-recent-item:hover{border-color:var(--border-strong)!important;background:var(--surface)!important;transform:translateY(-1px)!important;box-shadow:0 4px 10px rgba(0,0,0,.05)!important;}

/* Section cards soft: inherit group-color tint */
.section-card.soft{
  background:linear-gradient(180deg,var(--surface) 0%,color-mix(in srgb,var(--surface) 82%,var(--group-light)) 100%)!important;
  border-color:color-mix(in srgb,var(--group-border) 42%,var(--border))!important;
}

/* Primary button: subtle accent glow */
.btn-primary{box-shadow:0 2px 10px color-mix(in srgb,var(--accent) 28%,transparent)!important;}
.btn-primary:hover{box-shadow:0 4px 16px color-mix(in srgb,var(--accent) 36%,transparent)!important;transform:translateY(-1px)!important;opacity:1!important;}

/* Cards: slightly deeper shadow */
.section-card{box-shadow:0 1px 4px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.05)!important;}
.home-card,.home-panel,.home-intro{box-shadow:0 1px 4px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.05)!important;}

/* ── BUTTON HOVER COMPREHENSIVE FIX ── */
/* Covers all .btn.btn-primary buttons (enabled + disabled hover states).
   Previous fix used :not(:disabled) which left disabled-state hover broken.
   Full list affected: #json-download-btn, #xml-download-btn, #btn-forge-run,
   Export (differ), Compare (structcompare), modal confirm/download buttons. */

/* Enabled hover: stay accent-colored, slight dim */
.btn.btn-primary:hover:not(:disabled){
  background:var(--accent)!important;
  border-color:var(--accent)!important;
  color:white!important;
  opacity:.88!important;
  transform:translateY(-1px)!important;
}
/* Disabled hover: keep accent look but clearly inactive, no lift */
.btn.btn-primary:disabled:hover,
.btn.btn-primary[disabled]:hover{
  background:var(--accent)!important;
  border-color:var(--accent)!important;
  color:white!important;
  opacity:.4!important;
  transform:none!important;
  cursor:not-allowed!important;
}
/* Disabled base state: visually muted but still accent-colored */
.btn.btn-primary:disabled,
.btn.btn-primary[disabled]{
  opacity:.4!important;
  cursor:not-allowed!important;
}

/* btn-csv-run: keep each button's own color on hover */
.btn-csv-run:not([style]):hover{
  background:color-mix(in srgb,var(--accent) 82%,black)!important;
  color:white!important;
}
.btn-csv-run[style]:hover{
  background:color-mix(in srgb,var(--info) 82%,black)!important;
  color:white!important;
}

/* ── DESIGNER AGENT — 2026-04-05 — Blue + Midnight themes ── */
[data-theme="blue"]{
  --bg:#eef2f9;--surface:#f8fafd;--surface2:#e3eaf5;--border:#c8d6ea;--border-strong:#a8bdd8;
  --text:#0f1d33;--text-muted:#4a607a;--text-hint:#7890a8;
  --accent:#1a5a9a;--accent-light:#deeaf8;--accent-border:#a8c4e4;
  --danger:#b83232;--danger-light:#fdf0f0;
  --warning:#c47b1a;--warning-light:#fdf2e3;
  --info:#1a5a9a;--info-light:#deeaf8;
  --purple:#5a27a0;--purple-light:#ede8f8;--purple-border:#c9a8f0;
  --shadow:0 1px 3px rgba(15,40,80,.10),0 1px 2px rgba(15,40,80,.06)
}
[data-theme="midnight"]{
  --bg:#0a0e1a;--surface:#111828;--surface2:#18223a;--border:#1e2d4a;--border-strong:#2e4266;
  --text:#e4eaf6;--text-muted:#8a9bbf;--text-hint:#546080;
  --accent:#4a8fd4;--accent-light:#0c1e38;--accent-border:#1e3d6a;
  --danger:#e05555;--danger-light:#2a0f0f;
  --warning:#e0a040;--warning-light:#1e1408;
  --info:#4a8fd4;--info-light:#0c1e38;
  --purple:#8055d4;--purple-light:#180d30;--purple-border:#3a2060;
  --shadow:0 1px 3px rgba(0,0,0,.5),0 1px 2px rgba(0,0,0,.4)
}

/* ── DESIGNER AGENT — 2026-04-05 — Compare pages + Forge polish ── */

/* ─ Compare Excel: mode cards — color stripe + hover lift + active group color ─ */
.cmp-mode-chooser{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:1rem}
.cmp-mode-card{position:relative;overflow:hidden;transition:all .18s!important;box-shadow:var(--shadow)!important}
.cmp-mode-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:inherit;background:var(--group-color);opacity:.45;transition:opacity .18s}
.cmp-mode-card:hover{transform:translateY(-1px)!important;box-shadow:0 4px 14px rgba(0,0,0,.09)!important;border-color:var(--border-strong)!important}
.cmp-mode-card:hover::before{opacity:.7}
.cmp-mode-card.active{border-color:var(--group-border)!important;background:linear-gradient(180deg,color-mix(in srgb,var(--group-light) 72%,var(--surface)) 0%,var(--surface) 100%)!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--group-color) 20%,transparent),var(--shadow)!important}
.cmp-mode-card.active::before{opacity:1;background:var(--group-color)}
.cmp-mode-card.active .cmp-mode-card-title{color:var(--group-color)!important}
.cmp-mode-card-icon{font-size:22px!important;margin-bottom:10px!important;line-height:1}

/* ─ Compare Excel: upload drop zones — top color stripe when loaded ─ */
.differ-upload-grid .differ-drop{position:relative;overflow:hidden}
.differ-upload-grid .differ-drop::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;border-radius:inherit;background:transparent;transition:background .2s}
.differ-upload-grid .differ-drop.loaded-a::before{background:var(--info)}
.differ-upload-grid .differ-drop.loaded-b::before{background:var(--purple)}
.differ-upload-grid .differ-drop{border-radius:14px!important;padding:1.75rem 1rem!important;transition:all .2s!important}
.differ-upload-grid .differ-drop:hover,.differ-upload-grid .differ-drop.dragover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.07)}

/* ─ Compare Excel: row-diff export button consistent sizing ─ */
#page-differ .rd-controls-bar .btn.btn-primary{padding:7px 16px!important;border-radius:8px!important}

/* ─ Compare Text: legend pills — use theme vars, fix hardcoded amber ─ */
.textcmp-pill.chg{background:color-mix(in srgb,var(--warning) 12%, var(--surface))!important;border-color:color-mix(in srgb,var(--warning) 32%, transparent)!important;color:var(--warning)!important}

/* ─ Compare Text: nav bar — stronger visual weight ─ */
#page-textcompare .textcmp-nav{
  background:linear-gradient(180deg,var(--surface2) 0%,color-mix(in srgb,var(--surface2) 88%,var(--bg)) 100%)!important;
  border-top:1px solid var(--border)!important;
  padding:.72rem 1rem!important;
  gap:8px!important;
}
#page-textcompare .textcmp-summary{font-size:11px!important;font-family:'DM Mono',monospace!important;color:var(--text-muted)!important}

/* ─ Compare Structure: moved stat — use purple vars instead of hardcoded ─ */
.scmp-stat.moved{background:var(--purple-light)!important;color:var(--purple)!important;border-color:color-mix(in srgb,var(--purple) 28%, transparent)!important}

/* ─ Compare Structure: input pane side labels — accent border per side ─ */
#textcmp-struct-panel .scmp-input-pane:first-child .scmp-input-head{border-left:3px solid var(--info)!important;border-radius:0!important}
#textcmp-struct-panel .scmp-input-pane:last-child .scmp-input-head{border-left:3px solid var(--accent)!important;border-radius:0!important}
#textcmp-struct-panel .scmp-input-label{font-size:13px!important;font-weight:800!important;width:22px!important;height:22px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;border-radius:50%!important;background:var(--group-color)!important;color:white!important;flex-shrink:0!important}

/* ─ Forge: col selection cards — hover lift + active stripe ─ */
.forge-col-card{position:relative;overflow:hidden;transition:all .15s!important}
.forge-col-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--warning);opacity:0;transition:opacity .15s;border-radius:inherit}
.forge-col-card:hover{transform:translateY(-1px)!important;box-shadow:0 3px 10px rgba(0,0,0,.07)!important}
.forge-col-card.selected{border-color:color-mix(in srgb,var(--warning) 42%,var(--border))!important;background:color-mix(in srgb,var(--warning-light) 65%,var(--surface))!important}
.forge-col-card.selected::before{opacity:1}

/* ─ Forge: action library items — hover tint ─ */
.forge-action-item:hover{background:color-mix(in srgb,var(--warning-light) 55%,var(--surface))!important;border-color:color-mix(in srgb,var(--warning) 30%,var(--border))!important}

/* ─ Forge: active action cards — amber accent strip ─ */
.forge-active-action{position:relative;overflow:hidden}
.forge-active-action::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--warning);border-radius:3px 0 0 3px}


/* ── DESIGNER AGENT — 2026-04-05 — Forge: tighter header, workbench near top ── */
/*
  Keep original stacked layout (setup strip → col section → workbench).
  Reduce vertical space consumed by the top two sections so the workbench
  sits much closer to the top of the screen (~160px savings total).
*/

/* ─ Tighten gaps between the stacked sections ─ */
#page-forge.active .forge-page{gap:.5rem!important}

/* ─ Setup strip: compact bar ─ */
#page-forge.active .forge-setup-strip{
  padding:.45rem .95rem!important;
  gap:.35rem!important;
  border-radius:12px!important;
}
#page-forge.active .forge-setup-main{align-items:center!important}
#page-forge.active .forge-summary-chip{
  padding:4px 9px!important;
  font-size:11px!important;
  border-radius:8px!important;
  gap:5px!important;
}
#page-forge.active .forge-setup-chips{gap:5px!important}

/* ─ Col section: compact card ─ */
#page-forge.active .forge-col-section-card{
  padding:.55rem .95rem!important;
  border-radius:12px!important;
}
#page-forge.active .forge-section-top{
  margin-bottom:.35rem!important;
  flex-wrap:nowrap!important;
  gap:8px!important;
}
#page-forge.active .forge-section-title{font-size:13px!important}
#page-forge.active .forge-section-sub{display:none!important}

/* ─ Column chips: smaller, denser grid ─ */
#page-forge.active .forge-col-grid{
  gap:4px!important;
  max-height:100px!important;
  grid-template-columns:repeat(auto-fill,minmax(112px,1fr))!important;
}
#page-forge.active #forge-col-grid .forge-col-chip{
  padding:5px 7px!important;
  border-radius:7px!important;
}
#page-forge.active #forge-col-grid .forge-col-name{
  font-size:10px!important;
  margin-bottom:0!important;
}
#page-forge.active #forge-col-grid .forge-col-meta{
  font-size:9px!important;
}
#page-forge.active #forge-col-grid .forge-col-badges{
  display:none!important;
}

/* ─ Restore on mobile ─ */
@media(max-width:960px){
  #page-forge.active .forge-page{gap:1rem!important}
  #page-forge.active .forge-setup-strip{padding:.85rem!important}
  #page-forge.active .forge-summary-chip{padding:8px 12px!important;font-size:12px!important}
  #page-forge.active .forge-col-section-card{padding:.85rem!important}
  #page-forge.active .forge-section-sub{display:block!important}
  #page-forge.active .forge-col-grid{max-height:160px!important;grid-template-columns:repeat(auto-fill,minmax(128px,1fr))!important}
  #page-forge.active #forge-col-grid .forge-col-chip{padding:8px 9px!important}
  #page-forge.active #forge-col-grid .forge-col-name{font-size:11px!important}
  #page-forge.active #forge-col-grid .forge-col-meta{font-size:10px!important}
  #page-forge.active #forge-col-grid .forge-col-badges{display:flex!important}
}

/* ── DESIGNER AGENT — 2026-04-05 — Remove redundant sidebar "Navigation" label ── */
.sidebar-title-wrap{display:none!important}

/* ── DESIGNER AGENT — 2026-04-05 — Sidebar top: compact after removing title ── */
/* Title-wrap is hidden — shrink the top strip to just hold the collapse button */
.sidebar-top{
  min-height:0!important;
  padding:.55rem .7rem .55rem .85rem!important;
  justify-content:flex-end!important;
}
/* Collapse button nudged to align with first group header */
.sidebar-collapse-btn{
  width:30px!important;
  height:30px!important;
  border-radius:8px!important;
}
/* Remove bottom border — groups follow immediately, no need for separator */
.sidebar-top{border-bottom:none!important}
/* Tighten sidebar-groups top padding to close the gap */
.sidebar-groups{padding-top:.4rem!important}

/* ── DESIGNER AGENT — 2026-04-05 — Sidebar modern redesign ── */

/* ─ Groups container: tighter padding, divider-based separation ─ */
.sidebar-groups{
  padding:.5rem .55rem .75rem!important;
  gap:0!important;
}

/* ─ Group: remove heavy card, flat row with divider ─ */
.sidebar-group{
  border:none!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  position:relative;
}
/* Divider between groups */
.sidebar-group + .sidebar-group::before{
  content:'';
  display:block;
  height:1px;
  background:var(--border);
  opacity:.35;
  margin:3px 10px;
}

/* ─ Group header: flat, compact, left accent when open/active ─ */
.sidebar-group-header{
  padding:9px 10px 9px 14px!important;
  gap:9px!important;
  font-size:13px!important;
  font-weight:500!important;
  color:var(--text-muted)!important;
  border-radius:10px!important;
  position:relative;
}
.sidebar-group-header:hover{
  background:color-mix(in srgb,var(--surface2) 70%, var(--surface))!important;
  color:var(--text)!important;
}
/* Left accent bar when open */
.sidebar-group.open > .sidebar-group-header::before,
.sidebar-group.active > .sidebar-group-header::before{
  content:'';
  position:absolute;
  left:4px;
  top:8px;
  bottom:8px;
  width:3px;
  border-radius:2px;
  background:var(--group-color);
}
.sidebar-group.open > .sidebar-group-header,
.sidebar-group.active > .sidebar-group-header{
  background:color-mix(in srgb,var(--group-light) 55%,var(--surface))!important;
  color:var(--group-color)!important;
  font-weight:600!important;
}

/* ─ Group icon: small, color-tinted, no box border ─ */
.sidebar-group-icon{
  width:20px!important;
  height:20px!important;
  font-size:13px!important;
  border:none!important;
  background:transparent!important;
  color:var(--text-hint)!important;
  border-radius:5px!important;
}
.sidebar-group.open .sidebar-group-icon,
.sidebar-group.active .sidebar-group-icon{
  color:var(--group-color)!important;
  background:color-mix(in srgb,var(--group-light) 80%,var(--surface))!important;
}

/* ─ Chevron: thin › that rotates cleanly ─ */
.sidebar-group-chevron{
  font-size:14px!important;
  font-weight:400!important;
  color:var(--text-hint)!important;
  transition:transform .2s ease, color .15s!important;
  line-height:1!important;
}
/* Override the ▶ glyph with a thinner › via content */
.sidebar-group-chevron{
  font-size:0!important; /* hide the ▶ glyph */
}
.sidebar-group-chevron::after{
  content:'›';
  font-size:16px;
  display:inline-block;
  transition:transform .2s ease, color .15s;
  color:var(--text-hint);
}
.sidebar-group.open .sidebar-group-chevron::after{
  transform:rotate(90deg);
  color:var(--group-color);
}

/* ─ Tool list: no padding card, just indented rows ─ */
.sidebar-group-tools{
  padding:2px 6px 6px 14px!important;
  gap:1px!important;
}

/* ─ Tool buttons: compact, no bullet, clean label ─ */
.sb-tool-btn{
  padding:7px 10px 7px 14px!important;
  font-size:12px!important;
  font-weight:500!important;
  border-radius:8px!important;
  gap:0!important;
  color:var(--text-muted)!important;
}
.sb-tool-btn:hover{
  background:color-mix(in srgb,var(--surface2) 80%,var(--surface))!important;
  color:var(--text)!important;
  border-color:transparent!important;
}
.sb-tool-btn.active{
  background:color-mix(in srgb,var(--group-light) 70%,var(--surface))!important;
  color:var(--group-color)!important;
  font-weight:600!important;
  border-color:transparent!important;
  box-shadow:inset 3px 0 0 var(--group-color)!important;
}
/* Hide bullets */
.sb-tool-bullet{display:none!important}

/* ─ Collapsed state: keep icons centered, clean ─ */
body.sidebar-collapsed .sidebar-group-header{
  padding:10px 0!important;
  border-radius:10px!important;
}
body.sidebar-collapsed .sidebar-group-header::before{display:none}
body.sidebar-collapsed .sidebar-group + .sidebar-group::before{margin:2px 4px}
body.sidebar-collapsed .sidebar-group-icon{
  width:26px!important;
  height:26px!important;
  font-size:14px!important;
}

/* ── DESIGNER AGENT — 2026-04-05 — Sidebar top: remove dead space ── */
.sidebar-top{
  min-height:0!important;
  height:auto!important;
  padding:6px 8px 4px!important;
  border-bottom:none!important;
  background:transparent!important;
  justify-content:flex-end!important;
  align-items:center!important;
}
.sidebar-collapse-btn{
  width:28px!important;
  height:28px!important;
  border-radius:8px!important;
  font-size:16px!important;
  box-shadow:none!important;
  border-color:var(--border)!important;
  background:var(--surface)!important;
  color:var(--text-muted)!important;
}
.sidebar-collapse-btn:hover{
  background:var(--surface2)!important;
  color:var(--text)!important;
}
/* Close the gap between the button and the first group */
.sidebar-groups{padding-top:.3rem!important}

/* ── DESIGNER AGENT — 2026-04-05 — Fix modal z-index (header=360, sidebar=250 → backdrop must be above both) ── */
.modal-backdrop{z-index:400!important}

/* ── DESIGNER AGENT — 2026-04-05 — Fix help-tabs overflow on desktop (tabs bleed outside modal) ── */
.help-tabs{overflow-x:auto!important;flex-wrap:nowrap!important;scrollbar-width:none!important}
.help-tabs::-webkit-scrollbar{display:none!important}
.help-tab{white-space:nowrap!important;flex-shrink:0!important}

/* ── DESIGNER AGENT — 2026-04-05 — Help modal sidebar nav (replaces horizontal tabs) ── */
.help-modal{max-width:780px!important}
.help-layout{display:flex;flex:1;min-height:0;overflow:hidden}
.help-nav{
  width:164px;flex-shrink:0;
  border-right:1px solid var(--border);
  background:var(--surface2);
  padding:.6rem .5rem;
  display:flex;flex-direction:column;gap:2px;
  overflow-y:auto
}
.help-nav-label{
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.55px;
  color:var(--text-hint);
  padding:.55rem .5rem .2rem;
  margin-top:.2rem
}
.help-nav .help-tab{
  display:block!important;width:100%!important;
  text-align:left!important;
  border-radius:7px!important;
  padding:6px 9px!important;
  font-size:12.5px!important;
  white-space:normal!important;
  flex-shrink:unset!important;
  line-height:1.35
}
.help-nav .help-tab.active{
  background:var(--accent-light)!important;
  color:var(--accent)!important;
  border-color:var(--accent-border)!important;
  font-weight:600!important
}
.help-content{flex:1;overflow-y:auto}
/* Mobile: collapse sidebar back to top scrollable row */
@media(max-width:680px){
  .help-layout{flex-direction:column}
  .help-nav{width:100%!important;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;border-right:none;border-bottom:1px solid var(--border);padding:.5rem .6rem;gap:4px;scrollbar-width:none}
  .help-nav::-webkit-scrollbar{display:none}
  .help-nav-label{display:none}
  .help-nav .help-tab{white-space:nowrap!important;flex-shrink:0!important;padding:5px 10px!important;font-size:12px!important}
}

/* ── DESIGNER AGENT — 2026-04-05 — Header hamburger: move collapse toggle to header, remove sidebar arrow ── */
/* Hide sidebar arrow button and the top strip entirely */
.sidebar-collapse-btn{display:none!important}
.sidebar-top{display:none!important}
/* Remove gap above first group (nothing above it anymore) */
.sidebar-groups{padding-top:.65rem!important}
/* Header hamburger (desktop only — matches shell button style) */
.header-hamburger{
  display:flex!important;
  flex-direction:column;justify-content:center;align-items:center;gap:5px;
  width:34px;height:34px;
  border:1px solid var(--shell-line);border-radius:10px;
  background:var(--shell-panel);
  cursor:pointer;padding:0;flex-shrink:0;
  box-shadow:var(--shell-shadow-xs);
  transition:background .14s,border-color .14s
}
.header-hamburger span{display:block;height:1.5px;width:18px;background:var(--text-muted);border-radius:2px}
.header-hamburger:hover{background:var(--surface2)!important;border-color:var(--border-strong)!important}
/* Mobile: hide the desktop hamburger (drawer hamburger in header-right handles mobile) */
@media(max-width:900px){.header-hamburger{display:none!important}}

/* ── DESIGNER AGENT — 2026-04-05 — Header hamburger: tighten icon size ── */
.header-hamburger{gap:4px!important}
.header-hamburger span{width:14px!important;height:1.5px!important}

/* ── DESIGNER AGENT — 2026-04-05 — Header hamburger: panel icon SVG (claude.com style) ── */
.header-hamburger span{display:none!important}
.header-hamburger{color:var(--text-muted)!important;gap:0!important}
.header-hamburger:hover{color:var(--text)!important}
.header-hamburger svg{display:block;flex-shrink:0}

/* ── DESIGNER AGENT — 2026-04-05 — Reduce wasted vertical space globally ── */

/* 1. Tighten main-scroll top padding — breadcrumb bar already gives visual separation */
.main-scroll{padding-top:.45rem!important}
@media(max-width:1024px){.main-scroll{padding-top:.45rem!important}}

/* 2. Forge — hide redundant intro block (title+desc already in breadcrumb) */
.forge-upload-intro{display:none!important}

/* 3. Forge upload card — remove top padding now that intro is gone */
.forge-upload-card{padding:.65rem .9rem!important}

/* 4. Section cards globally — tighten top margin so first card kisses the padding */
.section-card:first-child{margin-top:0!important}

/* 5. Page-level — zero out any implicit top margin on first child of main-scroll pages */
.page.active > *:first-child{margin-top:0!important}

/* ── DESIGNER AGENT — 2026-04-06 — YAML ↔ JSON / Excel→SQL / Compare CSV ── */
.yaml-source-ta{width:100%;min-height:180px;max-height:360px;resize:vertical;font-family:'DM Mono',monospace;font-size:12.5px;padding:.6rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--surface2);color:var(--text);line-height:1.55;box-sizing:border-box}
.yaml-source-ta:focus{outline:none;border-color:var(--accent)}
.yaml-output-pre{min-height:120px}

/* Compare CSV diff row colors */
.ccsv-row-added td{background:var(--diff-added-bg,rgba(40,167,69,.08))!important}
.ccsv-row-removed td{background:var(--diff-removed-bg,rgba(220,53,69,.08))!important}
.ccsv-row-changed td{background:var(--diff-changed-bg,rgba(255,193,7,.08))!important}
.ccsv-row-same td{opacity:.7}
.ccsv-status{font-family:'DM Mono',monospace;font-weight:700;font-size:13px;text-align:center;min-width:28px}
.ccsv-row-added .ccsv-status{color:var(--success)}
.ccsv-row-removed .ccsv-status{color:var(--danger)}
.ccsv-row-changed .ccsv-status{color:var(--warning)}
.ccsv-cell-changed{vertical-align:top}
.ccsv-old{display:block;color:var(--danger);text-decoration:line-through;font-size:11.5px;opacity:.85}
.ccsv-new{display:block;color:var(--success);font-size:11.5px}
.ccsv-stat{display:inline-flex;align-items:center;padding:2px 8px;border-radius:99px;font-size:11.5px;font-weight:600;gap:3px}
.ccsv-stat.added{background:rgba(40,167,69,.12);color:var(--success)}
.ccsv-stat.removed{background:rgba(220,53,69,.12);color:var(--danger)}
.ccsv-stat.changed{background:rgba(255,193,7,.15);color:var(--warning)}
.ccsv-stat.same{background:var(--surface2);color:var(--text-muted)}
.ccsv-filter-btn.active{background:var(--group-color)!important;color:#fff!important;border-color:var(--group-color)!important}
.ccsv-table td,.ccsv-table th{white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}

/* ── DESIGNER AGENT — 2026-04-06 — Compare Text improvements ── */
/* Layout/Precision toggle buttons */
.textcmp-toggle-btn{padding:3px 11px;border:1px solid var(--border);background:var(--surface);font-family:'DM Sans',sans-serif;font-size:12px;font-weight:500;cursor:pointer;color:var(--text-muted);transition:all .15s}
.textcmp-btn-group .textcmp-toggle-btn:first-child{border-radius:6px 0 0 6px;border-right:none}
.textcmp-btn-group .textcmp-toggle-btn:last-child{border-radius:0 6px 6px 0}
.textcmp-toggle-btn.active{background:var(--group-color);color:#fff;border-color:var(--group-color)}
.textcmp-toggle-btn:hover:not(.active){background:var(--surface2);border-color:var(--border-strong);color:var(--text)}
/* Checkbox option labels */
.textcmp-opt-label{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text-muted);cursor:pointer;white-space:nowrap}

/* Unified view — 3-column row grid */
.textcmp-viewer.unified .textcmp-row{grid-template-columns:42px 18px minmax(0,1fr)}
.textcmp-viewer.unified .textcmp-header-uni{display:grid!important;grid-template-columns:42px 18px minmax(0,1fr)}
.textcmp-sign{display:flex;align-items:center;justify-content:center;font-family:'DM Mono',monospace;font-size:12px;font-weight:700;border-right:1px solid var(--border)}
.textcmp-viewer.unified .textcmp-row.del .textcmp-sign{color:var(--danger);background:color-mix(in srgb,var(--danger) 20%, var(--surface2))}
.textcmp-viewer.unified .textcmp-row.del .textcmp-code{background:color-mix(in srgb,var(--danger) 12%, var(--surface))}
.textcmp-viewer.unified .textcmp-row.del .textcmp-ln{background:color-mix(in srgb,var(--danger) 20%, var(--surface2))}
.textcmp-viewer.unified .textcmp-row.ins .textcmp-sign{color:var(--success,#28a745);background:color-mix(in srgb,var(--accent) 20%, var(--surface2))}
.textcmp-viewer.unified .textcmp-row.ins .textcmp-code{background:color-mix(in srgb,var(--accent) 12%, var(--surface))}
.textcmp-viewer.unified .textcmp-row.ins .textcmp-ln{background:color-mix(in srgb,var(--accent) 20%, var(--surface2))}
.textcmp-viewer.unified .textcmp-row.same .textcmp-sign{color:var(--text-hint)}
.textcmp-viewer.unified .textcmp-row.same .textcmp-code{background:var(--surface)}
.textcmp-viewer.unified .textcmp-row.same .textcmp-ln{background:color-mix(in srgb,var(--surface2) 80%, transparent)}
.textcmp-sep-row .textcmp-code{background:var(--surface2)!important;color:var(--text-hint)}

/* No line-wrap modifier */
.textcmp-scroll.no-wrap .textcmp-code{white-space:pre!important;overflow:hidden;text-overflow:ellipsis}
/* Line wrap default (ON) for text compare — override the base pre rule */
#page-textcompare .textcmp-code{white-space:pre-wrap!important;word-break:break-word!important;overflow:visible!important;text-overflow:unset!important}
#page-textcompare .textcmp-scroll.no-wrap .textcmp-code{white-space:pre!important;word-break:normal!important;overflow:hidden!important;text-overflow:ellipsis!important}

/* ── DESIGNER AGENT — 2026-04-06 — Compact upload/drop zones (Compare Text, Excel, CSV) ── */

/* ─ Shared compact drop-zone grid layout ─
   Transforms tall centered zone → compact horizontal strip:
   [icon]  File A
           click or drag & drop
           filename.txt · N lines               */

/* ── Compare Text ── */
#page-textcompare .textcmp-drop{
  min-height:58px!important;
  padding:.52rem .85rem!important;
  display:grid!important;
  grid-template-columns:20px 1fr!important;
  grid-template-rows:auto auto auto!important;
  column-gap:.6rem!important;
  row-gap:0!important;
  text-align:left!important;
  align-content:center!important;
}
#page-textcompare .textcmp-drop .differ-drop-icon{
  font-size:15px!important;
  margin:0!important;
  line-height:1!important;
  grid-row:1 / span 3!important;
  align-self:center!important;
}
#page-textcompare .textcmp-drop h3{
  font-size:12px!important;
  font-weight:600!important;
  margin:0!important;
  line-height:1.35!important;
}
#page-textcompare .textcmp-drop p{
  font-size:11px!important;
  margin:0!important;
  line-height:1.3!important;
}
#page-textcompare .textcmp-drop .differ-fname{
  margin:1px 0 0 0!important;
  font-size:10.5px!important;
  line-height:1.25!important;
}
/* Tighten the "1. Load content" card */
#page-textcompare .section-card.soft{
  padding:.62rem .9rem!important;
}
#page-textcompare .section-card-header{
  margin-bottom:.48rem!important;
}
#page-textcompare .section-card-title{
  font-size:13px!important;
}
#page-textcompare .section-card-sub{
  font-size:11px!important;
}
/* Compact upload/paste tab buttons */
#page-textcompare .textcmp-paste-tab{
  padding:4px 11px!important;
  font-size:11px!important;
}
#page-textcompare .textcmp-paste-tabs{
  gap:4px!important;
  margin-bottom:.38rem!important;
}
/* Compact paste textarea */
#page-textcompare .textcmp-paste-area{
  min-height:72px!important;
  max-height:110px!important;
}
/* Tighten upload grid gap */
#page-textcompare .textcmp-upload-grid{
  gap:.65rem!important;
}

/* ── Compare Excel ── */
#page-differ .differ-upload-grid .differ-drop{
  padding:.52rem .85rem!important;
  min-height:58px!important;
  display:grid!important;
  grid-template-columns:20px 1fr!important;
  grid-template-rows:auto auto auto!important;
  column-gap:.6rem!important;
  row-gap:0!important;
  text-align:left!important;
  align-content:center!important;
}
#page-differ .differ-drop .differ-drop-icon{
  font-size:15px!important;
  margin:0!important;
  line-height:1!important;
  grid-row:1 / span 3!important;
  align-self:center!important;
}
#page-differ .differ-drop h3{
  font-size:12px!important;
  font-weight:600!important;
  margin:0!important;
  line-height:1.35!important;
}
#page-differ .differ-drop p{
  font-size:11px!important;
  margin:0!important;
  line-height:1.3!important;
}
#page-differ .differ-drop .differ-fname{
  margin:1px 0 0 0!important;
  font-size:10.5px!important;
  line-height:1.25!important;
}
/* Keep the ::before color stripe on loaded zones working */
#page-differ .differ-upload-grid .differ-drop{
  position:relative!important;
  overflow:hidden!important;
}
/* Tighten the Compare Excel section-card holding the upload zones */
#page-differ .section-card:has(.differ-upload-grid),
#page-differ .section-card:has(#drop-single){
  padding:.62rem .9rem!important;
}
#page-differ .differ-upload-grid{
  margin-bottom:.6rem!important;
}

/* ── Compare CSV ── */
#cmp-csv-flow .upload-zone{
  padding:.52rem .85rem!important;
  min-height:58px!important;
  display:grid!important;
  grid-template-columns:20px 1fr!important;
  column-gap:.6rem!important;
  row-gap:0!important;
  text-align:left!important;
  align-content:center!important;
  align-items:center!important;
}
#cmp-csv-flow .upload-zone .upload-icon{
  font-size:15px!important;
  margin:0!important;
  line-height:1!important;
}
#cmp-csv-flow .upload-zone p{
  font-size:11px!important;
  margin:0!important;
  line-height:1.3!important;
}
#cmp-csv-flow .section-card.soft{
  padding:.62rem .9rem!important;
}
#cmp-csv-flow .textcmp-upload-grid{
  gap:.65rem!important;
}

/* ── DESIGNER AGENT — 2026-04-06 — Compare Excel compact mode selector ── */

/* ── 1. Mode tab row — replaces the old .cmp-mode-chooser card grid ── */
.cmp-mode-tabs{
  display:flex;
  gap:4px;
  margin-bottom:1rem;
  background:var(--surface2);
  border:1px solid var(--border);
  border-radius:10px;
  padding:4px;
}
.cmp-mode-tab{
  flex:1;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:6px 10px;
  height:36px;
  border:none;
  border-radius:7px;
  background:transparent;
  font-family:inherit;
  font-size:13px;
  font-weight:500;
  color:var(--text-muted);
  cursor:pointer;
  transition:background .15s,color .15s,box-shadow .15s;
  white-space:nowrap;
  min-width:0;
}
.cmp-mode-tab:hover{
  background:color-mix(in srgb,var(--surface) 80%, var(--group-light));
  color:var(--text);
}
.cmp-mode-tab.active{
  background:var(--surface);
  color:var(--group-color);
  font-weight:600;
  box-shadow:0 1px 3px rgba(0,0,0,.10),0 0 0 1px var(--group-border);
}
.cmp-mode-tab-icon{
  font-size:14px;
  line-height:1;
  flex-shrink:0;
}
.cmp-mode-tab-label{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

/* Suppress the old card styles entirely when tabs are present */
.cmp-mode-chooser{display:none!important}
.cmp-mode-card{display:none!important}

/* ── 2. Single-file drop zone — compact inline layout ── */
#page-differ #drop-single{
  padding:.55rem .9rem!important;
  min-height:60px!important;
  display:grid!important;
  grid-template-columns:20px 1fr!important;
  grid-template-rows:auto auto auto!important;
  column-gap:.65rem!important;
  row-gap:0!important;
  text-align:left!important;
  align-content:center!important;
  border-radius:10px!important;
}
#page-differ #drop-single .differ-drop-icon{
  font-size:16px!important;
  margin:0!important;
  line-height:1!important;
  grid-row:1 / span 3!important;
  align-self:center!important;
}
#page-differ #drop-single h3{
  font-size:12px!important;
  font-weight:600!important;
  margin:0!important;
  line-height:1.35!important;
}
#page-differ #drop-single p{
  font-size:11px!important;
  margin:0!important;
  line-height:1.3!important;
  color:var(--text-hint)!important;
}
#page-differ #drop-single .differ-fname{
  margin:1px 0 0!important;
  font-size:10.5px!important;
  line-height:1.25!important;
}

/* ── 3. Tighten section-card around single upload ── */
#page-differ .section-card:has(#drop-single){
  padding:.6rem .9rem!important;
  margin-bottom:.65rem!important;
}

/* ── 4. Compare flow stack — tighter gap ── */
#page-differ .compare-flow-stack{
  gap:.65rem!important;
}

/* ── 5. Page head — remove the badge since tabs show the mode ── */
#compare-top-badge{
  display:none!important;
}

/* ── 6. Responsive: stack tabs vertically on narrow screens ── */
@media(max-width:480px){
  .cmp-mode-tabs{flex-direction:column;gap:3px}
  .cmp-mode-tab{height:auto;padding:7px 12px;justify-content:flex-start;font-size:12px}
  .cmp-mode-tab-icon{font-size:13px}
}
@media(max-width:900px){
  .cmp-mode-tabs{gap:3px}
  .cmp-mode-tab{font-size:12px;padding:5px 8px}
}
