﻿/* ProductBase — Modern Glam Theme */
/* Base variables */
:root{
  --primary-0:#40e0cf; --primary-1:#4ea89e; --primary-2:#159284; --primary-3:#6ff0e2; --primary-4:#91f0e6;
  --secondary-a-0:#ffbf49; --secondary-a-1:#bf9b59; --secondary-a-2:#a67418; --secondary-a-3:#ffcf76; --secondary-a-4:#ffdc9b;
  --secondary-b-0:#fd4855; --secondary-b-1:#be5860; --secondary-b-2:#a41722; --secondary-b-3:#fe7680; --secondary-b-4:#fe9aa1;
  --ok:var(--primary-2); --stale:var(--secondary-a-0); --missing:var(--secondary-b-0); --noitems:var(--primary-3);
  --bg:#0b1220; --bg2:#0f172a; --surface:#0e1524; --surface-2:#121b2d; --border:#273244; --fg:#e6eef5; --muted:#9fb1c0;
  --ring:color-mix(in srgb, var(--primary-0), white 10%);
}
:root[data-theme="light"]{
  --bg:#f5f7fb; --bg2:#e9edf5; --surface:#ffffff; --surface-2:#eff3fb; --border:#cfd8e6;
  --fg:#0e172a; --muted:#4b5568;
  --primary-0:#1fb0a0; --primary-1:#199182; --primary-2:#137265; --primary-3:#38d3c0; --primary-4:#63e6d6;
  --secondary-a-0:#e2a438; --secondary-a-1:#bf842d; --secondary-a-2:#9f6f24;
  --secondary-b-0:#f0595e; --secondary-b-1:#c13f45; --secondary-b-2:#9f2f34;
  --ring:color-mix(in srgb, var(--primary-0), black 10%);
}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;color:var(--fg);font:15px/1.55 "Inter", system-ui, Segoe UI, Roboto, Arial;background:var(--bg);min-height:100vh;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:14px 20px;background:color-mix(in srgb, var(--surface), transparent 18%);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.2px;white-space:nowrap}
.brand a{color:var(--fg);text-decoration:none}
.brand img.brand-logo{width:24px;height:24px;vertical-align:middle;border-radius:6px;object-fit:cover;filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}
.actions-line{flex:1 1 auto;display:flex;align-items:center;gap:10px}
.control-group{display:flex;align-items:center;gap:8px}
.control-group input[type=search]{flex:1 1 260px;height:44px}
.pipeline-indicator{flex:0 0 220px;font-weight:600;display:flex;align-items:center;justify-content:center;text-align:center;border:1px solid var(--border);border-radius:12px;padding:8px 14px;background:color-mix(in srgb,var(--surface),transparent 12%);min-height:44px}
.schedule-box{display:flex;align-items:center;gap:8px;border:1px solid var(--border);border-radius:12px;padding:8px 14px;white-space:nowrap}
.schedule-box input[type=time]{width:90px;height:34px;padding:6px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--fg)}
.schedule-box label{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--muted)}
.schedule-box #sch-info{min-width:120px;text-align:right;color:var(--muted);font-size:12px}
.nav-inline{display:flex;gap:10px;align-items:center;flex-shrink:0}
.nav a{color:var(--primary-4);text-decoration:none;padding:8px 12px;border-radius:10px}
.nav a:hover{background:rgba(255,255,255,.06);border:1px solid var(--ring)}
.lang-select{margin-left:10px;background:var(--surface);border:1px solid var(--border);color:var(--fg);border-radius:8px;padding:10px 12px;height:44px}
.form-select, select, input[type=file], input[type=text], input[type=password], input[type=email], textarea{
  background:var(--surface);
  border:1px solid var(--border);
  color:var(--fg);
  border-radius:10px;
  padding:8px 10px;
}
input[type=text], input[type=password], input[type=email], textarea{
  background:var(--bg2);
  transition:border-color .15s, box-shadow .15s;
}
input::placeholder, textarea::placeholder{
  color:color-mix(in srgb, var(--muted), transparent 25%);
}
input[type=text]:focus, input[type=password]:focus, input[type=email]:focus, textarea:focus, select:focus{
  outline:none;
  border-color:var(--primary-0);
  box-shadow:0 0 0 2px color-mix(in srgb, var(--primary-0), transparent 60%);
}
input[type=file]::file-selector-button{
  background:linear-gradient(180deg, var(--primary-0), var(--primary-1));
  color:#0b1220;
  border:1px solid var(--primary-2);
  border-radius:10px;
  padding:6px 10px;
  margin-right:8px;
  cursor:pointer;
}
.btn,.topbar button{background:linear-gradient(180deg, var(--primary-0), var(--primary-1));color:#0b1220;border:1px solid var(--primary-2);border-radius:12px;padding:10px 16px;cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.25);transition:transform .18s, box-shadow .18s, background .18s;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;}
.btn:hover,.topbar button:hover{transform:translateY(-1px);box-shadow:0 12px 28px rgba(0,0,0,.35), 0 0 0 3px color-mix(in srgb, var(--primary-0), transparent 65%)}
.btn:active{transform:translateY(0)}
.wrap{padding:24px}
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:16px}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;padding:18px;grid-auto-rows:minmax(260px, auto)}
.card{background:linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,.0)), var(--surface);padding:16px;border-radius:14px;border:1px solid var(--border);display:flex;flex-direction:column;align-items:stretch;position:relative;transition:box-shadow .18s, background-color .18s, border-color .18s;min-height:220px;height:100%;overflow:hidden;box-shadow:0 1px 0 rgba(255,255,255,.04) inset, 0 12px 28px rgba(0,0,0,.25);cursor:default}
.card-body{display:flex;justify-content:space-between;align-items:stretch;width:100%;gap:18px;height:100%}
.card-info{display:flex;flex-direction:column;gap:6px;flex:1 1 auto;min-width:0}
.card:hover{box-shadow:0 18px 40px rgba(0,0,0,.42);z-index:1;background:var(--surface-2);border-color:var(--ring)}
.card-header{display:flex;align-items:center;gap:10px;margin:0}
.card .name{font-weight:600}
.badge{display:inline-block;font-size:11px;padding:3px 8px;border-radius:999px;margin-right:6px;color:#0b1220;background:var(--primary-3)}
.card-status{display:flex;align-items:stretch;justify-content:flex-end;flex:0 0 170px;min-width:150px;height:100%;cursor:pointer;border-left:1px solid var(--border);border-radius:16px;overflow:hidden;transition:transform .18s}
.card-status:focus-visible{outline:none}
.status{display:flex;align-items:center;justify-content:center;padding:0 18px;border-radius:16px;font-weight:700;color:#0b1220;font-size:17px;letter-spacing:.2px;width:100%;min-height:100%;text-align:center;box-shadow:inset 0 -2px 8px rgba(0,0,0,.15), 0 6px 18px rgba(0,0,0,.3);border:1px solid color-mix(in srgb, var(--border), white 20%);transition:box-shadow .18s, transform .18s}
.card-status:hover .status,.card-status:focus-visible .status{box-shadow:0 0 0 3px color-mix(in srgb, var(--ring), transparent 40%), inset 0 -2px 8px rgba(0,0,0,.2);transform:translateY(-2px)}
.status.ok{background:var(--ok)}.status.stale{background:var(--stale)}.status.missing{background:var(--missing)}.status.noitems{background:var(--noitems)}.status.inprocess{background:var(--primary-3)}
.path{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.footer{color:var(--muted);font-size:12px;margin-top:8px}
.title{font-weight:600;margin:8px 0 6px;white-space:normal;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;line-height:1.4;max-height:4.2em;word-break:break-word;overflow-wrap:anywhere;word-break:break-word;overflow-wrap:anywhere}
.columns{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;align-items:start;width:100%;padding:0 12px}
.col{min-width:0}
.col-tools{margin:10px 0 16px}
.col-tools .col-search{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:8px 12px;color:var(--fg)}
.columns .grid{display:grid;grid-template-columns:1fr;grid-auto-rows:auto;gap:18px;padding:0}
.columns .grid .card{min-height:0;height:100%}
.columns .grid .grid-sentinel{height:2px;width:100%}
.col-stats{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 14px;color:var(--muted);font-size:.85rem}
.col-stats .stat{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;font-weight:600;background:linear-gradient(120deg,color-mix(in srgb,var(--surface),transparent 5%),color-mix(in srgb,var(--surface-2),transparent 20%));border:1px solid var(--border);box-shadow:0 6px 18px rgba(0,0,0,.25);letter-spacing:.2px}
.col-stats .stat .dot{width:8px;height:8px;border-radius:50%;box-shadow:0 0 6px rgba(0,0,0,.3)}
.col-stats .stat.ready .dot{background:var(--ok)}
.col-stats .stat.stale .dot{background:var(--stale)}
.col-stats .stat.missing .dot{background:var(--missing)}
.col-stats .stat strong{font-size:1rem;color:var(--fg)}
.col-header-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.col-header{flex:1;background:color-mix(in srgb, var(--surface), transparent 10%);color:var(--fg);font-weight:700;padding:10px 16px;border:1px solid var(--border);border-radius:12px;letter-spacing:.2px;margin:0}
.col-header-row .run-column{min-width:64px;height:36px;border-radius:12px;padding:6px 14px}
.topbar .actions{display:flex;gap:10px}
.topbar .actions input[type=search]{background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--fg);padding:8px 12px;min-width:240px}
.topbar #schedule{display:flex;gap:8px;align-items:center;border-left:1px solid var(--border);padding-left:10px}
.topbar #schedule label{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}
.topbar #schedule input[type=time]{background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--fg);padding:6px 8px}
.topbar #schedule #sch-info{color:var(--muted);font-size:12px}
/* Manual page views */
.view{font-size:14px;line-height:1.5;white-space:pre-wrap;word-break:break-word}
.kv{margin:2px 0}
.imgs{display:flex;flex-wrap:wrap;gap:8px;padding:6px 0}
.imgs img{max-width:180px;border-radius:8px;border:1px solid var(--border)}
.json{background:var(--bg2);border:1px solid var(--border);border-radius:8px;padding:10px;overflow:auto;max-height:320px;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;font-size:12px;line-height:1.4;margin-top:8px}
/* Clickable field without color change, with bottom stripe */
.auto-search{color:inherit;text-decoration:underline;text-underline-offset:2px}
.auto-search:hover{opacity:.9}
main{width:100%;overflow-x:auto;flex:1 0 auto}
body > .wrap{flex:1 0 auto;width:100%}
.site-footer{padding:20px;text-align:center;color:var(--muted);font-size:13px;margin-top:auto}
.nav .logout-link{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:10px;padding:6px 10px;margin-right:8px;cursor:pointer;font-size:13px}
.nav .logout-link:hover{color:var(--primary-3);border-color:var(--primary-2)}
.theme-toggle{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:10px;padding:6px 12px;margin-right:10px;cursor:pointer;font-size:13px}
.theme-toggle:hover{color:var(--primary-3);border-color:var(--primary-2)}
.auth-body{min-height:100vh;background:var(--bg);display:flex;flex-direction:column}
.auth-wrap{flex:1 0 auto;display:flex;align-items:center;justify-content:center}
.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:28px;max-width:360px;width:100%;box-shadow:0 16px 40px rgba(0,0,0,.4);display:flex;flex-direction:column;gap:14px}
.auth-card form{display:flex;flex-direction:column;gap:12px}
.auth-card label{display:flex;flex-direction:column;gap:6px;font-size:14px}
.auth-card input,.auth-card select{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:10px;color:var(--fg)}
.user-form{display:flex;flex-direction:column;gap:12px}
.user-list{display:flex;flex-direction:column;gap:12px;margin-top:10px;max-height:70vh;overflow:auto;padding-right:8px}
.user-list::-webkit-scrollbar{width:8px}
.user-list::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--border), transparent 20%);border-radius:10px}
.user-list::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--primary-0), transparent 40%)}
.user-row{display:grid;grid-template-columns:minmax(120px,0.7fr) minmax(180px,1fr) minmax(220px,1.2fr) minmax(120px,0.5fr) minmax(120px,0.5fr);gap:16px;padding:18px;border:1px solid var(--border);border-radius:16px;background:var(--surface);align-items:center}
.user-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}
.user-field span{font-weight:500}
.user-field input,.user-field select{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:10px;color:var(--fg);min-width:140px}
.user-row .btn{width:100%;min-height:44px}
.user-save{min-width:110px}
.user-delete{min-width:110px}
.btn.danger{background:linear-gradient(180deg, var(--secondary-b-0), var(--secondary-b-1));color:#fff;border-color:var(--secondary-b-2)}
.btn.danger:hover{box-shadow:0 0 0 3px color-mix(in srgb, var(--secondary-b-0), transparent 50%)}
@media (max-width:1024px){
  .user-row{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));}
}
.spinner{width:16px;height:16px;border:2px solid #64748b;border-top-color:#e5e7eb;border-radius:50%;display:inline-block;margin-left:8px;animation:spin .8s linear infinite}
.hidden{display:none}@keyframes spin{to{transform:rotate(360deg)}}
.busy-msg{margin-left:8px;color:var(--muted);font-size:12px}
.card.skeleton{position:relative;overflow:hidden;border-color:var(--border)}
.card.skeleton .badge,.card.skeleton .status{visibility:hidden}
.skeleton-line{height:12px;background:var(--border);border-radius:6px;margin:6px 0}
.skeleton-line.wide{height:16px}.skeleton-line.sm{width:60%}.skeleton-line.md{width:80%}.skeleton-line.lg{width:90%}
.shimmer{position:absolute;inset:0;background:linear-gradient(110deg, rgba(255,255,255,0), rgba(255,255,255,.08), rgba(255,255,255,0));background-size:200% 100%;animation:shimmer 1.2s linear infinite}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@media (max-width:1200px){
  .card-status{flex:0 0 140px}
}
@media (max-width:900px){
  .card-body{flex-direction:column;gap:12px}
  .card-status{flex:0 0 auto;height:80px;width:100%}
  .status{border-radius:14px}
}
.grid-menu{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;max-width:1200px;margin:0 auto;padding:10px}
.admin-layout{display:grid;grid-template-columns:minmax(520px,3fr) minmax(320px,1fr);gap:28px;max-width:1320px;margin:0 auto;width:100%}
@media (max-width:1100px){.admin-layout{grid-template-columns:1fr;}}
.admin-users{min-height:520px}
.admin-form{align-self:flex-start;max-width:420px;width:100%}
.user-list{display:flex;flex-direction:column;gap:12px;margin-top:10px;max-height:70vh;overflow:auto;padding-right:8px}
.user-list::-webkit-scrollbar{width:8px}
.user-list::-webkit-scrollbar-thumb{background:color-mix(in srgb, var(--border), transparent 20%);border-radius:10px}
.user-list::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb, var(--primary-0), transparent 40%)}
.user-row{display:grid;grid-template-columns:minmax(120px,0.7fr) minmax(180px,1fr) minmax(220px,1.2fr) minmax(120px,0.5fr) minmax(120px,0.5fr);gap:16px;padding:18px;border:1px solid var(--border);border-radius:16px;background:var(--surface);align-items:center}
.user-field{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}
.user-field span{font-weight:500}
.user-field input,.user-field select{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:10px;color:var(--fg);min-width:140px}
.user-row .btn{width:100%;min-height:44px}
.user-save{min-width:110px}
.user-delete{min-width:110px}
.btn.danger{background:linear-gradient(180deg, var(--secondary-b-0), var(--secondary-b-1));color:#fff;border-color:var(--secondary-b-2)}
.btn.danger:hover{box-shadow:0 0 0 3px color-mix(in srgb, var(--secondary-b-0), transparent 50%)}
@media (max-width:1024px){
  .user-row{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));}
}
.editor-wrap{display:grid;grid-template-columns:minmax(320px,360px) minmax(0,1fr);gap:20px;align-items:flex-start}
@media (max-width:1100px){.editor-wrap{grid-template-columns:1fr}}
.editor-controls{display:flex;flex-direction:column;gap:14px}
.editor-controls .control-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;align-items:flex-end;margin:0;width:100%}
.editor-controls label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}
.editor-controls label span{color:var(--fg);font-weight:500}
.editor-controls select,.editor-controls textarea{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:8px;color:var(--fg);width:100%;min-height:40px}
.editor-controls textarea{min-width:auto;width:100%;min-height:70px;resize:vertical}
.editor-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}
.editor-controls .actions-row{display:grid;grid-template-columns:repeat(2,minmax(140px,1fr));gap:12px}
.editor-controls .btn-pair{display:contents}
.editor-controls .btn-pair .btn{width:100%}
.editor-controls .status-stack{grid-column:1/-1;align-items:flex-start;text-align:left}
.editor-controls select,.editor-controls textarea,.editor-controls label{width:100%}
.editor-controls #factory-row{grid-template-columns:minmax(0,1fr);align-items:center}
.editor-controls #factory-row button{align-self:stretch;height:42px}
.editor-controls #ean-row{grid-template-columns:1fr}

.page-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.page-controls input{width:82px;text-align:center;border-radius:10px;border:1px solid var(--border);background:var(--bg2);color:var(--fg);padding:8px}
.btn.slim{padding:8px 12px;min-width:40px}
.status-stack{display:flex;flex-direction:column;align-items:flex-end;text-align:right;gap:4px;min-width:160px}
.subtle{font-size:12px;opacity:.85}
.editor-controls .import-primary{width:100%;padding:14px 18px;font-size:17px;margin-top:4px}
.editor-table-card{overflow:auto}
.table-toolbar{display:flex;justify-content:flex-end;padding:0 0 10px;gap:12px}
.table-toolbar label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}
.table-toolbar input{min-width:220px;border-radius:10px;border:1px solid var(--border);background:var(--bg2);color:var(--fg);padding:6px 10px}
.editor-table-wrapper{overflow:auto;max-height:calc(100vh - 200px)}
.editor-table-wrapper::-webkit-scrollbar,
#editor-table textarea::-webkit-scrollbar{width:10px;height:10px;background:transparent}
.editor-table-wrapper::-webkit-scrollbar-track,
#editor-table textarea::-webkit-scrollbar-track{background:color-mix(in srgb, var(--surface-2), transparent 30%);border-radius:999px}
.editor-table-wrapper::-webkit-scrollbar-thumb,
#editor-table textarea::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--primary-0),var(--primary-1));border-radius:999px;border:2px solid color-mix(in srgb, var(--surface-2), transparent 10%)}
.editor-table-wrapper::-webkit-scrollbar-thumb:hover,
#editor-table textarea::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--primary-3),var(--primary-0))}
.editor-table-wrapper{scrollbar-width:thin;scrollbar-color:var(--primary-2) color-mix(in srgb, var(--surface-2), transparent 40%)}
#editor-table textarea{scrollbar-width:thin;scrollbar-color:var(--primary-2) color-mix(in srgb, var(--surface-2), transparent 40%)}
#editor-table{width:100%;border-collapse:collapse}
#editor-table td.preview-cell{width:210px;min-width:200px;position:relative}
#editor-table .preview-thumb{position:relative;width:100%;padding-top:65%;border-radius:8px;background:var(--bg2);overflow:hidden;display:block}
#editor-table .preview-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;cursor:zoom-in}
#editor-table .preview-thumb::after{content:'';position:absolute;inset:0;border-radius:8px;pointer-events:none;box-shadow:0 0 0 1px rgba(0,0,0,.25)}
#editor-table .preview-meta.mini{display:flex;align-items:center;justify-content:space-between;font-size:12px;margin-top:4px;gap:6px}
#editor-table .preview-meta .preview-mini{background:var(--bg2);border:1px solid var(--border);color:var(--fg);border-radius:6px;width:32px;height:24px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
#editor-table .preview-meta .preview-mini:disabled{opacity:.4;cursor:default}
#editor-table th,#editor-table td{border:1px solid var(--border);padding:6px 8px;text-align:left;vertical-align:top;background:var(--surface)}
#editor-table thead tr.column-bulk-row th{background:color-mix(in srgb,var(--surface-2),transparent 12%);padding:10px 8px;border-bottom:1px solid color-mix(in srgb,var(--border),transparent 40%)}
.col-bulk-control{display:flex;align-items:top;gap:8px;width:100%}
.col-bulk-control input,.col-bulk-control textarea{flex:1;min-width:0;padding:8px 12px;border-radius:12px;border:1px solid color-mix(in srgb,var(--border),transparent 20%);background:color-mix(in srgb,var(--bg2),transparent 10%);color:var(--fg);font-size:13px;resize:none;min-height:38px;font-family:"Inter",system-ui}
.col-bulk-control textarea{min-height:48px;max-height:90px}
.col-bulk-apply{min-width:36px;height:36px;border-radius:12px;border:1px solid color-mix(in srgb,var(--primary-0),transparent 20%);background:linear-gradient(135deg,var(--primary-1),var(--primary-2));color:#fff;cursor:pointer;font-weight:600;box-shadow:0 4px 12px rgba(0,0,0,.25);transition:transform .15s,box-shadow .15s}
.col-bulk-apply:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(0,0,0,.3)}
.col-bulk-placeholder{font-size:12px;color:var(--muted);display:block;text-align:center}
.col-spec-quick{display:flex;gap:8px;align-items:center}
.col-spec-quick select,.col-spec-quick input{flex:1;border-radius:12px;border:1px solid color-mix(in srgb,var(--border),transparent 20%);background:color-mix(in srgb,var(--bg2),transparent 8%);color:var(--fg);padding:8px 12px;height:38px;font-size:13px;font-family:"Inter",system-ui}
.col-spec-quick select{appearance:none;background-image:url('data:image/svg+xml,%3Csvg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"12\\\" height=\\\"8\\\" viewBox=\\\"0 0 12 8\\\" fill=\\\"none\\\"%3E%3Cpath d=\\\"M1 1.5L6 6.5L11 1.5\\\" stroke=\\\"white\\\" stroke-width=\\\"2\\\"/%3E%3C/svg%3E');background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}
#editor-table textarea{width:100%;min-width:0;height:42px;max-height:220px;background:var(--bg2);border:1px solid var(--border);border-radius:8px;color:var(--fg);font:13px/1.4 "Inter",system-ui;resize:vertical;white-space:pre-wrap;box-sizing:border-box;display:block;word-break:break-word;overflow:auto;padding:8px}
#editor-table tr.dirty{background:color-mix(in srgb, var(--primary-3), transparent 90%)}
#editor-table tr.invalid{box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--secondary-b-0), transparent 50%)}
#editor-table tr.server-error{box-shadow:inset 4px 0 0 var(--secondary-b-0)}
#editor-table td.invalid-cell{background:color-mix(in srgb, var(--secondary-b-3), transparent 85%)}
#editor-table textarea.invalid-input{border-color:var(--secondary-b-0);box-shadow:0 0 0 1px color-mix(in srgb, var(--secondary-b-0), transparent 40%)}
#editor-table td[class*='col-']{min-width:150px}
#editor-table td.col-artikelnummer{min-width:180px}
#editor-table td.col-artikelnummer textarea{min-height:90px;font-size:13px}
#editor-table td.col-name{min-width:320px}
#editor-table td.col-name textarea{min-height:120px;font-size:14px;line-height:1.45}
#editor-table td.col-kurzbeschreibung{min-width:280px}
#editor-table td.col-kurzbeschreibung textarea{min-height:110px;font-size:13px}
#editor-table td.col-beschreibung{min-width:360px}
#editor-table td.col-beschreibung textarea{min-height:140px;font-size:13px}
#editor-table th[data-col="Artikelbeschreibung"],
#editor-table td[data-col="Artikelbeschreibung"]{min-width:475px;width:475px}
#editor-table td[data-col="Artikelbeschreibung"] textarea{min-height:140px;font-size:14px;line-height:1.5;width:100%}
#editor-table td.col-customitemspecifics{min-width:280px}
#editor-table td.col-customitemspecifics textarea{font-family:"JetBrains Mono","Consolas",monospace;min-height:120px;white-space:pre}
#editor-table td.col-galleryurl,#editor-table td.col-pictureurl,#editor-table td.col-pictureurls{min-width:260px}
#editor-table td.col-galleryurl textarea,#editor-table td.col-pictureurl textarea,#editor-table td.col-pictureurls textarea{white-space:normal;word-break:break-all;min-height:110px;font-family:"JetBrains Mono","Consolas",monospace}
#editor-table td.col-startpreis,#editor-table td.col-currency,#editor-table td.col-categoryid,#editor-table td.col-category2id,#editor-table td.col-shopkat,#editor-table td.col-kollektion,#editor-table td.col-i-stammartikel,#editor-table td.col-id{min-width:110px}
#editor-table td.col-startpreis textarea,#editor-table td.col-currency textarea,#editor-table td.col-categoryid textarea,#editor-table td.col-category2id textarea,#editor-table td.col-shopkat textarea,#editor-table td.col-kollektion textarea,#editor-table td.col-i-stammartikel textarea,#editor-table td.col-id textarea{height:56px;max-height:80px;text-align:center;font-size:14px}
#editor-table td.col-beschreibung .beschreibung-field{display:flex;gap:6px;align-items:flex-start}
#editor-table td.col-beschreibung textarea{flex:1}
#editor-table td.col-beschreibung .preview-html{height:36px;min-width:36px;padding:0 8px}
#editor-table td.custom-specs-cell{min-width:600px}
.custom-specs{display:flex;flex-direction:column;gap:8px}
.custom-specs-list{display:flex;flex-direction:column;gap:6px;max-height:170px;overflow:auto;padding-right:4px;background:color-mix(in srgb,var(--bg2),transparent 15%);border:1px solid var(--border);border-radius:10px;padding:6px}
.custom-spec-row{display:grid;grid-template-columns:150px minmax(0,1fr) 40px;gap:8px;align-items:flex-start}
.custom-spec-row input{width:100%;border:1px solid color-mix(in srgb,var(--border),transparent 20%);border-radius:10px;background:color-mix(in srgb,var(--bg2),transparent 10%);color:var(--fg);padding:6px 12px;height:40px;font-size:13px;font-family:"Inter",system-ui}
.spec-values{display:flex;flex-direction:column;gap:6px}
.spec-value-row{display:flex;gap:8px;align-items:center}
.spec-name-input,.spec-value-input{border-radius:10px;border:1px solid color-mix(in srgb,var(--border),transparent 25%);background:color-mix(in srgb,var(--bg2),transparent 12%);color:var(--fg);padding:6px 12px;height:38px;font-size:13px;font-family:"Inter",system-ui}
.spec-name-input{min-width:140px}
.spec-value-row input{flex:1}
.value-controls{display:flex;align-items:center;gap:6px;margin-left:auto;flex-shrink:0}
.spec-value-row input{flex:1;width:100%}
.value-controls .value-add,.spec-value-add{min-width:34px;height:34px;border-radius:10px;border:1px solid color-mix(in srgb,var(--primary-0),transparent 20%);background:linear-gradient(135deg,var(--primary-1),var(--primary-2));color:#fff;font-weight:600;cursor:pointer;box-shadow:0 3px 9px rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center}
.value-controls .value-remove,.spec-value-remove{display:none;margin-left:6px}
.value-controls .value-remove.visible,.spec-value-remove.visible{display:flex;background:linear-gradient(135deg,#ff7b7b,#d04949);border-color:color-mix(in srgb,#ff7b7b,transparent 30%);min-width:34px;height:34px;border-radius:10px;color:#fff;font-weight:600;cursor:pointer;box-shadow:0 3px 9px rgba(0,0,0,.25);align-items:center;justify-content:center}
.value-controls button:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}
.spec-entry-remove{min-width:36px;height:36px;border-radius:12px;border:1px solid color-mix(in srgb,#ff7b7b,transparent 30%);background:linear-gradient(135deg,#ff7b7b,#d04949);color:#fff;font-weight:600;cursor:pointer;box-shadow:0 3px 9px rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center}
.spec-entry-remove.hidden{display:none}
.custom-spec-row .btn{min-width:20px;padding:2px 4px;font-size:12px;height:32px;border-radius:6px;text-align:center}
.custom-specs .add-spec{align-self:flex-start;margin-top:2px;padding:6px 12px}
.bulk-specs-panel{width:min(720px,95%);max-height:90vh;overflow:hidden}
.bulk-specs-list{display:flex;flex-direction:column;gap:8px;max-height:55vh;overflow:auto;padding-right:6px}
.bulk-specs-list .custom-spec-row{grid-template-columns:150px minmax(0,1fr) 30px}
.bulk-specs-panel .add-spec{align-self:flex-start}
#editor-table tr.selected{outline:2px solid color-mix(in srgb,var(--primary-0),transparent 40%);outline-offset:-2px}
#editor-table caption{caption-side:top;text-align:left;font-size:13px;color:var(--muted)}
.hidden{display:none!important}

#image-preview-overlay{position:fixed;pointer-events:none;display:none;align-items:center;justify-content:center;z-index:9999}
#image-preview-overlay.show{display:flex}
#image-preview-overlay img{max-width:340px;max-height:340px;border-radius:14px;box-shadow:0 22px 45px rgba(0,0,0,.55);background:rgba(5,7,14,.92);padding:10px;object-fit:contain}
.tile{background:linear-gradient(160deg, rgba(64,224,207,.12), rgba(64,224,207,.02)), var(--surface);border:1px solid color-mix(in srgb, var(--border), transparent 20%);border-radius:18px;padding:20px;text-decoration:none;color:var(--fg);box-shadow:0 12px 32px rgba(0,0,0,.35);transition:transform .2s, background .2s, border-color .2s, box-shadow .2s;display:flex;flex-direction:column;gap:8px;min-height:140px}
.tile:hover{transform:translateY(-6px) scale(1.01);background:linear-gradient(160deg, rgba(111,240,226,.2), rgba(64,224,207,.04)), var(--surface-2);border-color:var(--ring);box-shadow:0 18px 46px rgba(0,0,0,.45)}
.tile h3{margin:0;font-size:20px}
.tile .muted{font-size:14px}
.msg-ok{color:var(--primary-3)}
.msg-err{color:var(--secondary-b-0)}
.muted{color:var(--muted);font-size:13px}
.lookup-table{width:100%;border-collapse:collapse;margin-top:12px}
.lookup-table th,.lookup-table td{border:1px solid var(--border);padding:6px 8px;text-align:left;font-size:13px}
.lookup-table tbody tr:hover{background:color-mix(in srgb, var(--surface-2), transparent 40%)}
/* Tables */
table{border-collapse:separate;border-spacing:0;width:100%;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden}
th,td{border-bottom:1px solid var(--border);padding:10px 12px;font-size:13px}
th{position:sticky;top:0;background:var(--surface-2);text-align:left}
tbody tr:nth-child(odd){background:color-mix(in srgb, var(--surface), transparent 15%)}
tbody tr:hover{background:color-mix(in srgb, var(--surface-2), transparent 30%)}
input.cell{width:100%;background:var(--bg2);border:1px solid var(--border);border-radius:8px;color:var(--fg);padding:6px 8px}
.vtext-collapsible{position:relative;padding-right:20px;}
.vtext-collapsible .expand-toggle{position:absolute;right:2px;top:2px;background:transparent;border:0;color:var(--muted);cursor:pointer}
.vtext-collapsible .vtext-preview{white-space:pre-wrap;word-break:break-word}
.vtext-collapsible .vtext-full{white-space:pre-wrap;word-break:break-word}
.hidden{display:none}
/* File list */
.file-list{min-width:240px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:8px;max-height:480px;overflow:auto}
.file-list .item{padding:6px 8px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px}
.file-list .item:hover{background:var(--surface-2)}
.file-list .item.active{background:color-mix(in srgb, var(--primary-1), transparent 70%)}
.file-list .item .item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-list .item .item-del{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:8px;padding:2px 6px;cursor:pointer}
.file-list .item .item-del:hover{border-color:var(--primary-0);color:var(--primary-3)}


.card.inprocess{border-color:var(--primary-0);box-shadow:0 0 0 2px color-mix(in srgb, var(--primary-0), transparent 60%), 0 10px 26px rgba(0,0,0,.35)}
.card.inprocess .badge{background:var(--primary-3)}



.status.inprocess{background:var(--primary-3)}
.card.inprocess{background:linear-gradient(180deg, rgba(64,224,207,.10), rgba(64,224,207,.04)), var(--surface-2);border-color:var(--primary-0);box-shadow:0 0 0 2px color-mix(in srgb, var(--primary-0), transparent 60%), 0 10px 26px rgba(0,0,0,.35)}
.card.inprocess:hover{background:linear-gradient(180deg, rgba(64,224,207,.12), rgba(64,224,207,.04)), var(--surface-2);border-color:var(--primary-0)}



/* Manual compare view */
.view{display:block;min-height:220px;max-height:none;overflow:auto;padding:6px}
.view .kv{padding:6px 8px;border:1px solid transparent;border-radius:10px;margin:4px 0;background:transparent}
.view .kv.same{background:color-mix(in srgb, var(--primary-0), transparent 85%);border-color:color-mix(in srgb, var(--primary-0), transparent 45%);box-shadow:0 0 0 2px color-mix(in srgb, var(--primary-0), transparent 80%) inset}
.view .json{max-height:220px;overflow:auto;background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:8px}
.view .imgs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.view .imgs img{max-width:120px;max-height:120px;border-radius:10px;border:1px solid var(--border);object-fit:cover}
.html-editor{display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px}
.html-editor .controls .control-row{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.html-editor .controls select,.html-editor .controls textarea,.html-editor .controls button{width:100%}
.html-editor-card{display:flex;flex-direction:column;gap:12px;min-height:70vh}
.html-editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.html-editor-toolbar label{display:flex;flex-direction:column;gap:4px;min-width:220px}
.html-editor-toolbar select{min-width:220px}
#html-input{flex:1;min-height:520px;height:100%;background:var(--bg2);border:1px solid var(--border);border-radius:12px;color:var(--fg);padding:12px;font:14px/1.5 "JetBrains Mono",monospace;resize:vertical}
.small-label{font-size:12px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--muted)}
#html-input{flex:1;min-height:520px;height:100%;background:var(--bg2);border:1px solid var(--border);border-radius:12px;color:var(--fg);padding:12px;font:14px/1.5 "JetBrains Mono",monospace;resize:vertical}
.html-editor-workspace{display:flex;gap:16px;align-items:stretch;flex-wrap:wrap;min-height:520px}
.workspace-column{flex:1 1 340px;display:flex;flex-direction:column;gap:6px;min-height:520px}
.workspace-column textarea{flex:1;min-height:480px}
.preview-pane{flex:1 1 420px;display:flex;flex-direction:column;gap:12px;background:color-mix(in srgb, var(--surface), transparent 4%);border:1px solid color-mix(in srgb, var(--border), transparent 40%);border-radius:14px;padding:12px;min-height:520px}
.preview-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.preview-header .muted{font-size:12px;display:block}
.preview-actions{display:flex;gap:8px;flex-wrap:wrap}
.preview-pane iframe{flex:1;border:1px dashed var(--border);border-radius:12px;background:#fff;min-height:100%;height:100%}
.btn.ghost.active{background:rgba(255,255,255,.08);border-color:var(--primary-0);color:var(--primary-3)}
.btn.ghost{background:transparent;color:var(--fg);border:1px dashed color-mix(in srgb, var(--fg), transparent 50%);box-shadow:none}
.btn.ghost:hover{color:var(--fg);border-color:var(--primary-0);box-shadow:0 0 0 2px color-mix(in srgb, var(--primary-0), transparent 70%)}
.html-preview{position:fixed;inset:0;background:rgba(0,0,0,.7);display:none;align-items:center;justify-content:center;z-index:9999}
.html-preview.show{display:flex}
.html-preview-content{background:var(--surface);padding:12px;border-radius:12px;width:80vw;height:80vh;display:flex;flex-direction:column;gap:10px}
.html-preview iframe{flex:1;border:1px solid var(--border);border-radius:8px;background:#fff}
.html-editor{display:grid;grid-template-columns:320px minmax(0,1fr);gap:20px}
.html-editor .controls .control-row{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.html-editor .controls select,.html-editor .controls textarea,.html-editor .controls button{width:100%}
.html-editor-card{display:flex;flex-direction:column;gap:12px}
.html-editor-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.html-editor-toolbar label{display:flex;flex-direction:column;gap:4px;min-width:220px}
.html-editor-toolbar select{min-width:220px}
#html-input{flex:1;min-height:520px;height:100%;background:var(--bg2);border:1px solid var(--border);border-radius:12px;color:var(--fg);padding:12px;font:14px/1.5 "JetBrains Mono",monospace;resize:vertical}
.html-preview{position:fixed;inset:0;background:rgba(0,0,0,.7);display:none;align-items:center;justify-content:center;z-index:9999}
.html-preview.show{display:flex}
.html-preview-content{background:var(--surface);padding:12px;border-radius:12px;width:80vw;height:80vh;display:flex;flex-direction:column;gap:10px}
.html-preview iframe{flex:1;border:1px solid var(--border);border-radius:8px;background:#fff}
.template-card{display:flex;flex-direction:column;gap:10px}
.template-flex{display:flex;gap:20px;align-items:flex-start;flex-wrap:wrap;margin-top:12px}
.block-column,.library-column{flex:1 1 320px;display:flex;flex-direction:column;gap:12px}
.block-list{display:flex;flex-direction:column;gap:10px;min-height:120px}
.block-card{border:1px dashed color-mix(in srgb, var(--border), transparent 25%);border-radius:14px;padding:14px;display:flex;gap:12px;align-items:flex-start;background:color-mix(in srgb, var(--surface), transparent 5%);box-shadow:0 6px 16px rgba(0,0,0,.15);position:relative;transition:border-color .15s, box-shadow .15s}
.block-card.block-hover{border-color:var(--primary-0);box-shadow:0 0 0 2px color-mix(in srgb, var(--primary-0), transparent 70%), 0 12px 32px rgba(0,0,0,.25)}
.block-card.block-content{border-style:solid;border-color:color-mix(in srgb, var(--border), transparent 35%);background:color-mix(in srgb, var(--surface), transparent 12%);box-shadow:none}
.block-card.block-content .block-body{color:var(--muted)}
.block-card.block-content .block-handle{visibility:hidden}
.block-card::after{content:attr(data-label);position:absolute;top:10px;right:14px;font-size:11px;text-transform:uppercase;letter-spacing:.2em;color:var(--muted)}
.block-card .block-handle{width:24px;cursor:grab;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--muted)}
.block-card.dragging{opacity:.55}
.block-card .block-body{flex:1;display:flex;flex-direction:column;gap:8px}
.block-card input[type=text]{width:100%;padding:8px 10px;border-radius:10px;border:1px solid var(--border);background:var(--bg2)}
.block-banner-preview{width:100%;min-height:90px;border-radius:10px;background:linear-gradient(135deg, rgba(255,255,255,.08), rgba(255,255,255,.02));border:1px dashed var(--border);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:13px;overflow:hidden}
.block-banner-preview img{width:100%;height:auto;display:block;object-fit:cover}
.block-actions{display:flex;gap:6px;flex-wrap:wrap}
.block-actions .btn{padding:6px 10px;min-width:70px}
.block-dropzone{border:2px dashed color-mix(in srgb, var(--primary-0), transparent 40%);border-radius:12px;padding:14px;text-align:center;color:var(--muted);font-size:13px}
.block-dropzone.active{color:var(--primary-3);border-color:var(--primary-0);background-color:color-mix(in srgb, var(--primary-0), transparent 85%)}
.banner-library{display:flex;flex-direction:column;gap:12px}
.banner-card{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:14px;border:1px solid var(--border);background:color-mix(in srgb, var(--surface), transparent 8%);box-shadow:0 6px 16px rgba(0,0,0,.12)}
.banner-thumb{width:120px;height:72px;border-radius:10px;border:1px solid var(--border);background:#111 url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 120 72\"><rect width=\"120\" height=\"72\" fill=\"%23111\"/><path d=\"M10 54 L45 28 L70 46 L92 24 L110 54 Z\" fill=\"none\" stroke=\"%23fff\" stroke-width=\"4\"/></svg>') center/40% no-repeat;overflow:hidden;position:relative;flex-shrink:0}
.banner-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.banner-fields{flex:1;display:flex;flex-direction:column;gap:8px}
.banner-fields input{width:100%;padding:8px 10px;border-radius:10px;border:1px solid var(--border);background:var(--bg2)}
.banner-actions{display:flex;gap:8px;flex-wrap:wrap}
.banner-actions .btn{padding:6px 10px;min-width:90px}
.footer-field textarea{min-height:90px}
.csvtool-controls{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end;margin:20px 0}
.csvtool-controls label{display:flex;flex-direction:column;gap:6px}
.csvtool-controls select{min-width:160px;padding:8px;border-radius:10px;border:1px solid var(--border);background:var(--bg2);color:var(--fg)}
.csvtool-actions{display:flex;gap:10px;flex-wrap:wrap}
.csvtool-layout{display:flex;gap:16px;margin-top:20px;flex-wrap:wrap}
.csvtool-files{flex:0 0 260px;border:1px solid var(--border);border-radius:14px;padding:12px;background:color-mix(in srgb, var(--surface), transparent 3%);max-height:520px;overflow:auto}
.csvtool-files ul{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:6px}
.csvtool-files li{padding:8px 10px;border-radius:10px;border:1px solid transparent;cursor:pointer;background:var(--bg2);transition:border-color .15s,color .15s}
.csvtool-files li.active{border-color:var(--accent);color:var(--accent)}
.csvtool-files li:hover{border-color:var(--border)}
.csvtool-table{flex:1 1 520px;min-width:0;border:1px solid var(--border);border-radius:14px;padding:12px;background:color-mix(in srgb, var(--surface), transparent 5%);display:flex;flex-direction:column;gap:12px}
.csvtool-table-wrap{overflow:auto}
.csvtool-table-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.csvtool-preview textarea{width:100%;min-height:72px;border-radius:10px;border:1px solid var(--border);background:var(--bg);color:var(--fg);padding:8px;resize:vertical}
.csvtool-preview td img{margin:2px;max-width:100px;border-radius:8px;box-shadow:0 0 0 1px var(--border)}
.csvtool-links{display:flex;flex-direction:column;gap:4px}
.csvtool-links a{color:var(--accent);word-break:break-all}
@media (max-width:900px){
  .csvtool-layout{flex-direction:column}
  .csvtool-files,
  .csvtool-table{width:100%}
}
.mirror-card{display:flex;flex-direction:column;gap:16px}
.mirror-controls{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}
.mirror-field{display:flex;flex-direction:column;gap:6px;min-width:220px}
.mirror-field select,.mirror-field input{min-height:40px;border-radius:10px;border:1px solid var(--border);background:var(--bg2);color:var(--fg);padding:8px}
.mirror-btns{display:flex;gap:10px;flex-wrap:wrap}
.mirror-pool{display:flex;flex-direction:column;gap:4px;padding:10px;border:1px dashed var(--border);border-radius:12px;background:color-mix(in srgb, var(--surface), transparent 8%)}
.mirror-status{min-height:18px}
.mirror-table{border:1px solid var(--border);border-radius:14px;padding:12px;min-height:280px}
.mirror-table input{width:100%;border-radius:10px;border:1px solid var(--border);padding:6px;background:var(--bg);color:var(--fg)}
.mirror-table-view input.invalid-input{border-color:var(--accent-red,#f66);box-shadow:0 0 0 1px color-mix(in srgb, var(--accent-red,#f66), transparent 60%)}
.mirror-table-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}
.mirror-table-actions{display:flex;gap:8px;flex-wrap:wrap}
.mirror-grid{width:100%;border-collapse:collapse;border:1px solid color-mix(in srgb,var(--border),transparent 30%);border-radius:12px;overflow:hidden}
.mirror-grid th,.mirror-grid td{padding:6px 8px;border-bottom:1px solid color-mix(in srgb,var(--border),transparent 40%);vertical-align:middle;font-size:13px}
.mirror-grid thead th{background:color-mix(in srgb,var(--surface),transparent 80%);text-align:left;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.mirror-grid tbody tr:nth-child(odd){background:color-mix(in srgb,var(--surface),transparent 96%)}
.mirror-grid input[type=text]{width:140px;max-width:100%;border-radius:8px;border:1px solid var(--border);padding:4px 6px;background:var(--bg2);color:var(--fg)}
.mirror-grid input[type=text]:disabled{opacity:.4;cursor:not-allowed}
.mirror-grid tr.mirror-row-duplicate{background:color-mix(in srgb,var(--accent),transparent 93%)}
.mirror-grid tr.mirror-row-excluded{opacity:.55}
.mirror-flag{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;text-transform:uppercase}
.mirror-flag.danger{background:color-mix(in srgb,var(--accent),transparent 65%);color:var(--accent)}
.mirror-flag.safe{background:color-mix(in srgb,var(--primary-1),transparent 65%);color:var(--primary-3)}
.mirror-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:12px}
.mirror-column{border:1px solid var(--border);border-radius:12px;padding:10px;background:color-mix(in srgb, var(--surface), transparent 6%)}
.mirror-column-body{display:flex;flex-direction:column;gap:4px;font-size:14px}
.mirror-column-body .count{font-size:28px;font-weight:bold}
.mirror-column-body .file{font-size:12px;color:var(--muted);word-break:break-all}
.mirror-missing{margin-top:12px;padding:10px;border-radius:12px;border:1px dashed var(--border);background:color-mix(in srgb, var(--surface), transparent 10%);min-height:40px;font-size:14px}
.mirror-section{margin-top:20px;display:flex;flex-direction:column;gap:10px}
.mirror-section-head h3{margin:0}
.mirror-add-ean{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.mirror-add-ean textarea{min-height:80px;border-radius:10px;border:1px solid var(--border);padding:8px;background:var(--bg);color:var(--fg);resize:vertical}






.sync-card{display:flex;flex-direction:column;gap:16px}
.sync-toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.sync-toolbar label{display:flex;flex-direction:column;gap:4px}
.sync-toolbar select{min-width:140px;padding:8px;border-radius:10px;border:1px solid var(--border);background:var(--bg2);color:var(--fg)}
.sync-toolbar .sync-search{flex:1 1 240px;display:flex;flex-direction:column;gap:4px}
.sync-toolbar .sync-search input{border-radius:10px;border:1px solid var(--border);background:var(--bg);color:var(--fg);padding:8px 10px}
.sync-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;max-height:70vh;overflow:auto;padding-right:8px}
.sync-columns::-webkit-scrollbar{width:10px}
.sync-columns::-webkit-scrollbar-track{background:color-mix(in srgb,var(--surface),transparent 80%);border-radius:10px}
.sync-columns::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--primary-1),var(--primary-2));border-radius:10px;border:2px solid color-mix(in srgb,var(--surface),transparent 85%)}
.sync-columns:hover::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--primary-2),var(--primary-3))}
.sync-column{border:1px solid var(--border);border-radius:12px;padding:12px;background:color-mix(in srgb, var(--surface), transparent 6%);display:flex;flex-direction:column}
.sync-column-head{margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.sync-column-head .count-pill{font-size:12px;padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--primary-0),transparent 70%);color:var(--primary-3);border:1px solid color-mix(in srgb,var(--primary-0),transparent 50%)}
.mini-clone-btn{border:1px solid color-mix(in srgb,var(--border),transparent 20%);background:color-mix(in srgb,var(--surface),transparent 6%);color:var(--fg);border-radius:8px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-weight:bold;cursor:pointer;transition:transform .15s,box-shadow .15s}
.mini-clone-btn:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(0,0,0,.25)}
.sync-column ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.sync-column li{padding:6px 8px;border-radius:8px;background:var(--bg);border:1px solid transparent;display:flex;justify-content:space-between;align-items:center;gap:8px;min-height:46px}
.sync-column li.missing{border-color:var(--accent);color:var(--accent)}
.sync-row-actions{display:flex;gap:6px;margin-left:auto}
.mirror-btn{border:1px solid color-mix(in srgb,var(--border),transparent 20%);background:color-mix(in srgb,var(--surface),transparent 8%);color:var(--fg);width:32px;height:32px;border-radius:8px;font-size:14px;font-weight:bold;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .15s,box-shadow .15s}
.mirror-btn:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(0,0,0,.25)}
.sync-create{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin:12px 0}
.sync-create label{display:flex;flex-direction:column;gap:4px}
.sync-create select,.sync-create input{min-height:38px;border-radius:10px;border:1px solid var(--border);background:var(--bg2);color:var(--fg);padding:6px 10px}
.sync-create .sync-name{flex:1 1 260px}
.sync-refresh-group{display:flex;gap:8px;align-items:center}
.sync-column .delete-btn{background:linear-gradient(135deg,#ff6b6b,#c63939);color:#fff;border:none;border-radius:8px;padding:4px 10px;font-size:13px;cursor:pointer;transition:transform .15s,opacity .15s,box-shadow .15s;display:flex;align-items:center;justify-content:center}
.sync-column .delete-btn:hover{transform:translateY(-1px);box-shadow:0 6px 14px rgba(0,0,0,.2)}
.sync-column .delete-btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}
.sync-column .delete-btn .icon-trash{width:16px;height:16px;display:block;color:#fff}
.sync-column .rename-btn{color:var(--fg);border:1px solid color-mix(in srgb,var(--border),transparent 20%);border-radius:8px;padding:4px 12px;font-size:13px;font-weight:600;cursor:pointer;transition:transform .15s,box-shadow .15s,opacity .15s;background:color-mix(in srgb,var(--surface),transparent 10%);box-shadow:0 2px 6px rgba(0,0,0,.25)}
.sync-column .rename-btn:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(0,0,0,.25)}
.sync-column .rename-btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}
.modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;z-index:2100}
.modal.visible{display:flex}
.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(2px)}
.modal-panel{position:relative;z-index:1;width:min(420px,90%);padding:20px;border-radius:18px;border:1px solid color-mix(in srgb,var(--border),transparent 15%);background:color-mix(in srgb,var(--surface),transparent 4%);box-shadow:0 20px 45px rgba(0,0,0,.4);display:flex;flex-direction:column;gap:14px}
.modal-panel h3{margin:0}
.modal-field{display:flex;flex-direction:column;gap:6px}
.modal-field input{min-height:44px;border-radius:12px;border:1px solid var(--border);background:color-mix(in srgb,var(--bg2),transparent 5%);color:var(--fg);padding:10px 12px;font-size:16px}
.modal-actions{display:flex;justify-content:flex-end;gap:10px}
body.modal-open{overflow:hidden}
