/* ClarioDB V1.1 — styles applicatifs */
/* =================================================================
   ClarioDB — tokens (alignés sur cdn/css/clariodb.css)
   ================================================================= */
:root{
  --font-ui:'Hanken Grotesk',-apple-system,'SF Pro Text','Segoe UI',sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
  --font-hand:'Nothing You Could Do',cursive;

  --ink:#0F1729;
  --canvas:#FAFAF7;
  --surface:#FFFFFF;
  --surface-2:#FAFAF7;
  --sidebar:#FAFAF7;

  --text:#1F1F1D;
  --ink-soft:#3a3f49;
  --muted:#6B6A64;
  --faint:#9A998F;

  --line:rgba(15,23,41,.085);
  --line-soft:rgba(15,23,41,.05);
  --border-strong:rgba(15,23,41,.16);

  --teal:#0D9488;
  --teal-dark:#0F766E;
  --teal-light:#5EEAD4;
  --accent:#0D9488;
  --accent-press:#0F766E;
  --accent-tint:#E6F5F2;
  --accent-tint-2:#CCFBF1;
  --accent-glow:rgba(13,148,136,.22);

  --add:#10B981;  --add-bg:#E7F8F0; --add-line:#bfe9d6;
  --del:#DC2626;  --del-bg:#FDECEC; --del-line:#f6c9c9;
  --warn:#F59E0B; --warn-bg:#FEF6E7; --warn-line:#f5dca0;
  --info:#3B82F6; --info-bg:#EAF0FE;

  --type-int:#7C3AED;
  --type-real:#B45309;
  --type-text:#0F766E;
  --type-date:#1D4ED8;
  --type-fk:#BE185D;
  --pk:#D9A406; --link:#0D9488; --link-dim:rgba(13,148,136,.18);
  --t-kw:#7C3AED; --t-fn:#1D4ED8; --t-str:#B45309; --t-num:#0F766E; --t-op:#6B6A64; --t-com:#9A998F; --t-tbl:#0D9488; --t-col:#BE185D; --gutter:#9A998F; --editor-bg:#FFFFFF;
  --c1:#0D9488; --c2:#7C3AED; --c3:#F59E0B; --c4:#3B82F6; --c5:#EC4899; --c6:#10B981; --c-track:rgba(15,23,41,.06);

  --radius:8px; --radius-sm:6px; --radius-lg:12px;

  --shadow-sm:0 1px 2px rgba(15,23,41,.05);
  --shadow:0 4px 16px -4px rgba(15,23,41,.12),0 2px 6px -2px rgba(15,23,41,.07);
  --shadow-pop:0 4px 16px rgba(15,23,41,.10);
  --shadow-card:0 8px 24px rgba(15,23,41,.10);
  --shadow-modal:0 24px 60px rgba(15,23,41,.30);
  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
}
*{box-sizing:border-box;}
html,body{height:100%;}
body{margin:0;font-family:var(--font-ui);color:var(--text);background:var(--canvas);font-size:14px;line-height:1.45;
  -webkit-font-smoothing:antialiased;overflow:hidden;}
button{font-family:inherit;} a{color:inherit;text-decoration:none;}
::selection{background:var(--accent-tint-2);}
*::-webkit-scrollbar{width:11px;height:11px;}
*::-webkit-scrollbar-thumb{background:rgba(15,23,41,.16);border-radius:20px;border:3px solid transparent;background-clip:content-box;}
*::-webkit-scrollbar-thumb:hover{background:rgba(15,23,41,.28);background-clip:content-box;}

/* =================================================================
   LOGIN
   ================================================================= */
#login{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(120% 90% at 85% 8%,var(--accent-tint) 0%,transparent 46%),
             radial-gradient(90% 90% at 8% 100%,#eef4f3 0%,transparent 52%),var(--canvas);
  transition:opacity .5s var(--ease),visibility .5s;}
#login.hide{opacity:0;visibility:hidden;}
.login-deco{position:absolute;inset:0;overflow:hidden;pointer-events:none;}
.grid-bg{position:absolute;inset:0;
  background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--line-soft) 1px,transparent 1px);
  background-size:40px 40px;mask-image:radial-gradient(circle at 50% 38%,#000 0%,transparent 70%);}
.login-card{position:relative;width:400px;max-width:92vw;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius-lg);padding:36px 36px 28px;box-shadow:var(--shadow-modal);animation:cardIn .7s var(--ease-out) both;}
@keyframes cardIn{from{opacity:0;transform:translateY(22px) scale(.97);}to{opacity:1;transform:none;}}
.brand-lockup{display:flex;align-items:center;gap:12px;margin-bottom:24px;}
.brand-mark{flex:none;}
.brand-name{font-weight:700;font-size:22px;letter-spacing:-.02em;color:var(--ink);}
.brand-tag{font-size:12.5px;color:var(--muted);margin-top:1px;}
.login-title{font-size:21px;font-weight:700;letter-spacing:-.02em;margin:0 0 4px;color:var(--ink);}
.login-sub{color:var(--muted);font-size:13px;margin:0 0 26px;}
.field{margin-bottom:15px;animation:fieldIn .6s var(--ease-out) both;}
.field:nth-of-type(1){animation-delay:.08s;}.field:nth-of-type(2){animation-delay:.16s;}
@keyframes fieldIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.field label{display:block;font-size:12px;font-weight:600;color:var(--ink-soft);margin-bottom:6px;}
.input-wrap{position:relative;}
.input-wrap>i{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--faint);font-size:15px;transition:color .2s;}
.field input{width:100%;height:44px;border:1.5px solid var(--line);border-radius:var(--radius);padding:0 14px 0 38px;
  font-family:inherit;font-size:14px;color:var(--text);background:var(--surface-2);transition:.2s;outline:none;}
.field input:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 4px var(--accent-glow);}
.input-wrap:focus-within>i{color:var(--accent);}
.login-row{display:flex;justify-content:space-between;align-items:center;margin:4px 0 22px;font-size:12.5px;}
.login-row label{display:flex;gap:7px;align-items:center;color:var(--ink-soft);cursor:pointer;}
.login-row a{color:var(--accent);font-weight:600;}.login-row a:hover{text-decoration:underline;}
.btn-primary{width:100%;height:46px;border:none;border-radius:var(--radius);background:var(--ink);color:#fff;font-weight:600;
  font-size:14.5px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:9px;transition:.12s var(--ease);position:relative;overflow:hidden;}
.btn-primary:hover{background:#1a2540;box-shadow:0 8px 20px -6px rgba(15,23,41,.4);}
.btn-primary:active{transform:scale(.985);}
.btn-primary.loading{pointer-events:none;color:transparent;}
.btn-primary .spin{position:absolute;}
.login-foot{text-align:center;margin-top:22px;font-size:11px;color:var(--faint);font-family:var(--font-mono);letter-spacing:.02em;}
.login-hand{font-family:var(--font-hand);font-size:18px;color:var(--accent-press);text-align:center;margin-top:18px;opacity:.9;}
/* animated login logo + atmosphere */
.lg-blob{position:absolute;border-radius:50%;filter:blur(60px);}
.lg-blob.b1{width:380px;height:380px;background:rgba(13,148,136,.22);top:-130px;right:-90px;animation:blob1 15s ease-in-out infinite;}
.lg-blob.b2{width:330px;height:330px;background:rgba(94,234,212,.20);bottom:-130px;left:-100px;animation:blob2 17s ease-in-out infinite;}
@keyframes blob1{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(-34px,42px) scale(1.12);}}
@keyframes blob2{0%,100%{transform:translate(0,0) scale(1);}50%{transform:translate(42px,-32px) scale(1.1);}}
.lg-bg-logo{position:absolute;left:50%;top:50%;width:118vmin;transform:translate(-50%,-50%);opacity:.04;animation:lgBg 13s ease-in-out infinite;}
@keyframes lgBg{0%,100%{transform:translate(-50%,-50%) scale(1) rotate(-3deg);}50%{transform:translate(-50%,-50%) scale(1.05) rotate(3deg);}}
[data-theme="dark"] .lg-bg-logo{opacity:.07;}
.lg-head{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:24px;}
.alogo{width:74px;height:74px;margin-bottom:14px;animation:lgFloat 5.5s ease-in-out infinite;filter:drop-shadow(0 12px 26px rgba(13,148,136,.42));}
@keyframes lgFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-6px);}}
.alogo .sq{transform-box:fill-box;transform-origin:center;animation:lgSq .8s var(--ease-out) both;}
@keyframes lgSq{0%{transform:scale(.55) rotate(-8deg);opacity:0;}60%{opacity:1;}100%{transform:scale(1) rotate(0);opacity:1;}}
.alogo .cc{transform-box:fill-box;transform-origin:center;opacity:0;animation:lgC .55s var(--ease-out) .3s forwards;}
@keyframes lgC{from{opacity:0;transform:scale(.6);}to{opacity:1;transform:scale(1);}}
.alogo .ln{stroke-dasharray:26;stroke-dashoffset:26;animation:lgDraw .5s var(--ease-out) var(--d) forwards;}
@keyframes lgDraw{to{stroke-dashoffset:0;}}
.alogo .lines{animation:lgBreathe 3.4s ease-in-out 1.8s infinite;}
@keyframes lgBreathe{0%,100%{opacity:1;}50%{opacity:.5;}}
.lg-word{font-size:27px;font-weight:800;letter-spacing:-.025em;color:var(--ink);position:relative;overflow:hidden;animation:fieldIn .6s var(--ease-out) .35s both;}
.lg-word::after{content:"";position:absolute;top:0;left:-130%;width:55%;height:100%;transform:skewX(-18deg);background:linear-gradient(100deg,transparent,rgba(255,255,255,.65),transparent);animation:lgSheen 5s ease-in-out 1.4s infinite;}
@keyframes lgSheen{0%,58%{left:-130%;}82%,100%{left:140%;}}
.lg-tag{font-size:13px;color:var(--muted);margin-top:3px;animation:fieldIn .6s var(--ease-out) .45s both;}
.login-title,.login-sub{text-align:center;}

/* =================================================================
   APP SHELL
   ================================================================= */
#app{display:none;flex-direction:column;height:100vh;opacity:0;transition:opacity .5s var(--ease);}
#app.show{display:flex;opacity:1;}
.topbar{height:52px;flex:none;display:flex;align-items:center;gap:10px;padding:0 12px;background:var(--surface);border-bottom:1px solid var(--line);z-index:30;}
.tb-brand{display:flex;align-items:center;gap:8px;padding-right:4px;}
.db-switch{display:flex;align-items:center;gap:8px;height:34px;padding:0 9px 0 11px;border-radius:var(--radius-sm);cursor:pointer;
  font-weight:700;font-size:14px;letter-spacing:-.01em;transition:.15s;border:1px solid transparent;color:var(--ink);}
.db-switch:hover{background:var(--surface-2);border-color:var(--line);}
.db-switch .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-tint);}
.db-switch .bi-chevron-down{font-size:11px;color:var(--muted);}
.tb-search{flex:1;max-width:540px;margin:0 auto;position:relative;}
.tb-search i{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--faint);font-size:14px;}
.tb-search input{width:100%;height:36px;border:1px solid var(--line);background:var(--surface-2);border-radius:var(--radius);
  padding:0 64px 0 36px;font-family:inherit;font-size:13px;color:var(--text);outline:none;transition:.2s;}
.tb-search input:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 4px var(--accent-glow);}
.tb-search .kbd{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-family:var(--font-mono);font-size:11px;
  color:var(--faint);background:#fff;border:1px solid var(--line);border-radius:5px;padding:1px 6px;}
.tb-actions{display:flex;align-items:center;gap:4px;}
.icon-btn{width:34px;height:34px;border:none;background:transparent;border-radius:var(--radius-sm);color:var(--muted);
  display:flex;align-items:center;justify-content:center;font-size:16px;cursor:pointer;transition:.15s;}
.icon-btn:hover{background:var(--surface-2);color:var(--ink);}
.icon-btn.active{background:var(--accent-tint);color:var(--accent-press);}
.changes-pill{display:flex;align-items:center;gap:8px;height:34px;padding:0 6px 0 12px;border-radius:var(--radius);
  border:1px solid var(--line);background:var(--surface);font-weight:600;font-size:13px;cursor:pointer;transition:.18s;margin-left:4px;color:var(--ink);}
.changes-pill:hover{box-shadow:var(--shadow-sm);}
.changes-pill.has-changes{border-color:var(--warn-line);background:var(--warn-bg);color:#92590a;}
.changes-pill .cnt{min-width:20px;height:20px;border-radius:20px;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-size:11px;background:rgba(15,23,41,.07);color:var(--ink-soft);padding:0 6px;transition:.18s;}
.changes-pill.has-changes .cnt{background:var(--warn);color:#fff;}
.changes-pill .live{width:8px;height:8px;border-radius:50%;background:#cbd0d8;transition:.18s;}
.changes-pill.has-changes .live{background:var(--warn);animation:pulse 2s infinite;}
@keyframes pulse{0%,100%{box-shadow:0 0 0 3px rgba(245,158,11,.25);}50%{box-shadow:0 0 0 6px rgba(245,158,11,0);}}
.avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--teal),var(--teal-dark));color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;cursor:pointer;margin-left:6px;flex:none;transition:transform .15s;}
.avatar:hover{transform:scale(1.06);}

.body{flex:1;display:flex;min-height:0;}
.sidebar{width:258px;flex:none;background:var(--sidebar);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;}
.sb-search{padding:11px 12px 8px;position:relative;}
.sb-search i{position:absolute;left:23px;top:50%;transform:translateY(-50%);color:var(--faint);font-size:13px;}
.sb-search input{width:100%;height:32px;border:1px solid var(--line);background:#fff;border-radius:var(--radius-sm);
  padding:0 10px 0 32px;font-size:12.5px;outline:none;transition:.2s;}
.sb-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);}
.sb-scroll{flex:1;overflow-y:auto;padding:4px 8px 16px;}
.sb-group-head{display:flex;align-items:center;justify-content:space-between;padding:9px 8px 5px;
  font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);}
.sb-group-head .add{cursor:pointer;color:var(--faint);transition:.15s;width:18px;height:18px;display:flex;align-items:center;justify-content:center;border-radius:5px;}
.sb-group-head .add:hover{color:var(--accent);background:var(--accent-tint);}
.sb-item{display:flex;align-items:center;gap:9px;height:32px;padding:0 9px;border-radius:var(--radius-sm);cursor:pointer;
  color:var(--ink-soft);font-size:13px;font-weight:500;transition:.14s;position:relative;user-select:none;}
.sb-item:hover{background:rgba(15,23,41,.045);color:var(--ink);}
.sb-item.active{background:var(--accent-tint);color:var(--accent-press);font-weight:600;}
.sb-item.active::before{content:"";position:absolute;left:-8px;top:6px;bottom:6px;width:3px;border-radius:3px;background:var(--accent);}
.sb-item .ic{width:17px;text-align:center;font-size:14px;flex:none;color:var(--muted);}
.sb-item.active .ic{color:var(--accent);}
.sb-item .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sb-item .badge{font-family:var(--font-mono);font-size:10.5px;color:var(--faint);background:#fff;border:1px solid var(--line);border-radius:5px;padding:0 5px;height:17px;display:flex;align-items:center;}
.sb-item.active .badge{background:#fff;color:var(--accent-press);border-color:var(--accent-tint-2);}
.sb-item .caret{font-size:10px;color:var(--faint);transition:transform .2s var(--ease);width:12px;}

/* dossiers + actions au survol */
.db-head .db-newfolder,.folder-head .folder-del,.table-item .row-move{margin-left:6px;width:20px;height:20px;border-radius:5px;display:flex;align-items:center;justify-content:center;color:var(--faint);opacity:0;transition:.13s;flex:none;font-size:12px;}
.db-head:hover .db-newfolder,.folder-head:hover .folder-del,.table-item:hover .row-move{opacity:1;}
.db-head .db-newfolder:hover,.table-item .row-move:hover{background:var(--accent-tint);color:var(--accent-press);}
.folder-head .folder-del:hover{background:var(--del-bg);color:var(--del);}
.sb-folder .folder-head .ic{color:var(--c3,#F59E0B);}
.sb-folder.closed .folder-head .caret{transform:rotate(-90deg);}
.sb-folder.closed .sb-foldertables{display:none;}
.sb-foldertables{margin-left:15px;padding-left:6px;border-left:1.5px solid var(--line);}
.table-item .row-move{order:2;} .table-item .badge{order:3;}

/* popover de config de carte dashboard */
.wcfg{min-width:248px;}
.wcfg .wf{display:flex;flex-direction:column;gap:5px;padding:7px 11px;}
.wcfg .wf label{font-size:11px;font-weight:700;color:var(--muted);letter-spacing:.02em;}
.wcfg .wf select,.wcfg .wf input{height:33px;border:1px solid var(--line);background:var(--surface-2);border-radius:7px;padding:0 9px;font-family:inherit;font-size:12.5px;color:var(--text);outline:none;width:100%;}
.wcfg .wf select:focus,.wcfg .wf input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);}
.wcfg .wf .hint{font-size:10.5px;color:var(--faint);}
.sb-db.collapsed .caret{transform:rotate(-90deg);}
.sb-tables{overflow:hidden;transition:max-height .28s var(--ease),opacity .2s;max-height:600px;opacity:1;padding-left:14px;margin-top:1px;}
.sb-db.collapsed .sb-tables{max-height:0;opacity:0;}
.sb-tables .sb-item{height:30px;font-size:12.5px;}
.sb-foot{flex:none;border-top:1px solid var(--line);padding:7px 8px;}
.sb-foot .sb-item{font-weight:600;}

.main{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--canvas);position:relative;}
.tabbar{height:42px;flex:none;display:flex;align-items:flex-end;background:var(--surface);border-bottom:1px solid var(--line);padding:0 8px;overflow-x:auto;position:relative;z-index:2;}
.tab{display:flex;align-items:center;gap:7px;height:34px;padding:0 12px;margin:0 1px;border-radius:var(--radius-sm) var(--radius-sm) 0 0;
  font-size:12.5px;font-weight:500;color:var(--muted);cursor:pointer;white-space:nowrap;border:1px solid transparent;border-bottom:none;transition:.14s;position:relative;}
.tab:hover{background:var(--surface-2);color:var(--ink);}
.tab.active{background:var(--canvas);color:var(--ink);font-weight:600;border-color:var(--line);}
.tab.active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--canvas);}
.tab .ic{font-size:13px;} .tab .ic.q{color:var(--type-int);}
.tab .x{font-size:11px;color:var(--faint);width:16px;height:16px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:.12s;margin-left:2px;}
.tab .x:hover{background:rgba(15,23,41,.08);color:var(--ink);}

.toolbar{height:46px;flex:none;display:flex;align-items:center;gap:6px;padding:0 12px;background:var(--surface);border-bottom:1px solid var(--line);position:relative;z-index:2;}
.tool-btn{display:flex;align-items:center;gap:7px;height:32px;padding:0 11px;border-radius:var(--radius-sm);border:1px solid transparent;
  background:transparent;color:var(--ink-soft);font-size:12.5px;font-weight:600;cursor:pointer;transition:.14s;}
.tool-btn:hover{background:var(--surface-2);border-color:var(--line);color:var(--ink);}
.tool-btn i{font-size:14px;}
.tool-btn.primary{background:var(--ink);color:#fff;border-color:var(--ink);}
.tool-btn.primary:hover{background:#1a2540;box-shadow:0 4px 12px -4px rgba(15,23,41,.4);}
.tool-btn .chev{font-size:9px;color:var(--faint);margin-left:1px;}
.tool-btn.primary .chev{color:rgba(255,255,255,.6);}
.tool-btn.lock{color:var(--ink-soft);} .tool-btn.lock i{color:var(--muted);}
.tool-btn.edit-on{background:var(--warn-bg);border-color:var(--warn-line);color:#92590a;} .tool-btn.edit-on i{color:var(--warn);}
.tool-btn:disabled{opacity:.4;pointer-events:none;}
.insp-del:disabled{opacity:.45;pointer-events:none;}
[data-theme="dark"] .tool-btn.edit-on{color:#fbbf24;}
.tool-sep{width:1px;height:20px;background:var(--line);margin:0 4px;}
.tool-sort-badge{min-width:18px;height:18px;border-radius:9px;background:var(--accent-tint);color:var(--accent-press);
  font-family:var(--font-mono);font-size:11px;display:flex;align-items:center;justify-content:center;padding:0 5px;}
.toolbar .spacer{flex:1;}
.tool-info{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:14px;}
.tool-info .sel{color:var(--accent-press);font-weight:600;}
.pager{display:flex;align-items:center;gap:2px;}
.pager .pg{font-family:var(--font-mono);font-size:12px;background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:2px 9px;color:var(--text);}
.rows-sel{display:flex;align-items:center;gap:5px;height:30px;padding:0 9px;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:12px;color:var(--ink-soft);cursor:pointer;transition:.14s;font-weight:500;}
.rows-sel:hover{background:var(--surface-2);} .rows-sel i{font-size:9px;color:var(--faint);}

/* GRID */
.grid-wrap{flex:1;overflow:auto;position:relative;}
.grid-wm{position:absolute;left:50%;top:55%;transform:translate(-50%,-50%);width:56%;max-width:660px;opacity:.09;pointer-events:none;z-index:0;}
[data-theme="dark"] .grid-wm{opacity:.13;}
table.grid{border-collapse:separate;border-spacing:0;width:100%;font-size:13px;position:relative;z-index:1;}
.grid thead th{position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--line);padding:0;height:38px;text-align:left;font-weight:600;}
.grid thead th .th-in{display:flex;align-items:center;gap:6px;padding:0 12px;height:38px;cursor:pointer;transition:background .14s;}
.grid thead th .th-in:hover{background:var(--surface-2);}
.th-name{font-size:12.5px;color:var(--ink);font-weight:600;letter-spacing:-.01em;}
.th-type{font-size:10px;font-family:var(--font-mono);padding:1px 5px;border-radius:5px;font-weight:600;text-transform:uppercase;}
.tp-INTEGER{background:#f0eafe;color:var(--type-int);} .tp-REAL{background:#fdf2e3;color:var(--type-real);}
.tp-TEXT{background:var(--accent-tint);color:var(--type-text);} .tp-DATE{background:#eaf0fd;color:var(--type-date);}
.tp-REF{background:var(--accent-tint);color:var(--accent-press);text-transform:none;font-family:var(--font-mono);font-weight:600;}
.fk-id{font-family:var(--font-mono);font-size:10.5px;opacity:.55;font-weight:500;margin-left:1px;}
body.no-wm .grid-wm{display:none;}
.toggle.mini{width:34px;height:19px;}
.toggle.mini::after{width:14px;height:14px;}
.toggle.mini.on::after{transform:translateX(15px);}
.th-fk{color:var(--type-fk);font-size:11px;} .th-sort{margin-left:auto;color:var(--faint);font-size:11px;}
.th-menu{color:var(--faint);font-size:13px;width:18px;text-align:center;opacity:0;transition:.14s;}
.grid thead th:hover .th-menu{opacity:1;}
.th-check,.td-check{width:42px;text-align:center;}
.th-id{width:64px;} .col-new{width:130px;color:var(--muted);}
.col-new .th-in{color:var(--muted);font-weight:500;}.col-new .th-in:hover{color:var(--accent);}
.grid tbody td{border-bottom:1px solid var(--line-soft);padding:0;height:40px;background:transparent;transition:background .12s;}
.grid tbody tr:hover td{background:var(--surface-2);}
.grid tbody tr.selected td{background:var(--accent-tint)!important;}
.cell{padding:0 12px;height:40px;display:flex;align-items:center;cursor:text;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.cell.num,.cell.mono{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-soft);}
.cell.id{color:var(--muted);font-family:var(--font-mono);font-size:12.5px;}
.cell .fk{margin-left:6px;color:var(--type-fk);font-size:14px;opacity:.5;transition:.14s;cursor:pointer;flex:none;}
.cell .fk:hover{opacity:1;transform:scale(1.12);}
.fk-chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:3px 10px 3px 8px;border-radius:20px;background:var(--accent-tint);color:var(--accent-press);font-family:var(--font-ui);font-size:12px;font-weight:600;cursor:pointer;transition:.14s;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
.fk-chip i{font-size:13px;flex:none;}
.fk-chip:hover{background:var(--accent-tint-2);}
.view-toggle{display:flex;gap:2px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:2px;}
.view-toggle .vt{display:flex;align-items:center;gap:6px;height:26px;padding:0 11px;border:none;background:transparent;border-radius:5px;font-family:inherit;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer;transition:.14s;}
.view-toggle .vt:hover{color:var(--ink);}
.view-toggle .vt.on{background:var(--surface);color:var(--accent-press);box-shadow:var(--shadow-sm);}
.view-toggle .vt i{font-size:13px;}
.td-check .chk-wrap{display:flex;align-items:center;justify-content:center;height:40px;}
td.editing .cell{display:none;}
td .cell-edit{display:none;width:100%;height:40px;border:none;outline:2px solid var(--accent);outline-offset:-2px;background:#fff;padding:0 11px;font-family:inherit;font-size:13px;color:var(--text);box-shadow:0 0 0 4px var(--accent-glow);}
td.editing .cell-edit{display:block;}
td.dirty{background:var(--warn-bg)!important;}
td.dirty .cell{color:#b45309;font-weight:500;position:relative;}
td.dirty .cell::after{content:"";position:absolute;top:6px;right:6px;width:5px;height:5px;border-radius:50%;background:var(--warn);}
tr.to-delete td{background:var(--del-bg)!important;}
tr.to-delete .cell{color:#b91c1c;text-decoration:line-through;text-decoration-color:rgba(185,28,28,.5);opacity:.85;}
tr.to-delete .fk{display:none;}
.row-restore{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 9px;border:1px solid var(--del-line);background:#fff;color:#b91c1c;border-radius:6px;font-size:11.5px;font-weight:600;cursor:pointer;transition:.14s;white-space:nowrap;}
.row-restore:hover{background:var(--del-bg);}
.tool-btn.danger{color:var(--del);}
.tool-btn.danger:hover{background:var(--del-bg);border-color:var(--del-line);color:#b91c1c;}
.tool-btn.danger .del-badge{min-width:18px;height:18px;border-radius:9px;background:var(--del);color:#fff;font-family:var(--font-mono);font-size:11px;display:flex;align-items:center;justify-content:center;padding:0 5px;}
.pc-tag.D{background:var(--del-bg);color:var(--del);} .pc-tag.I{background:var(--add-bg);color:var(--add);}
#panelInner{flex:1;display:flex;flex-direction:column;min-height:0;}
.insp-foot{flex:none;border-top:1px solid var(--line);padding:12px 16px;}
.insp-del{width:100%;height:40px;border:1px solid var(--del-line);background:#fff;color:#b91c1c;border-radius:var(--radius);font-weight:600;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:.16s;}
.insp-del:hover{background:var(--del-bg);}
.insp-del.undo{border-color:var(--accent-tint-2);color:var(--accent-press);} .insp-del.undo:hover{background:var(--accent-tint);}
.code-wrap{padding:14px 16px;position:relative;}
.code-pre{font-family:var(--font-mono);font-size:12px;line-height:1.7;white-space:pre;overflow:auto;margin:0;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:14px;color:var(--ink-soft);}
.code-copy{position:absolute;top:20px;right:24px;z-index:2;cursor:pointer;font-size:10.5px;color:var(--muted);border:1px solid var(--line);background:#fff;border-radius:6px;padding:3px 8px;font-weight:600;transition:.14s;display:flex;align-items:center;gap:5px;}
.code-copy:hover{border-color:var(--accent);color:var(--accent-press);}
.j-key{color:#0F766E;font-weight:600;} .j-str{color:#B45309;} .j-num{color:#7C3AED;} .j-bool{color:#1D4ED8;} .j-null{color:var(--faint);}
.sql-kw{color:#7C3AED;font-weight:700;} .sql-tbl{color:#0F766E;font-weight:600;} .sql-col{color:var(--ink-soft);} .sql-str{color:#B45309;} .sql-num{color:#1D4ED8;} .sql-null{color:var(--faint);font-style:italic;} .sql-punc{color:var(--faint);}
.chk{width:16px;height:16px;border:1.5px solid #cbd0d8;border-radius:5px;cursor:pointer;transition:.14s;flex:none;display:flex;align-items:center;justify-content:center;background:#fff;}
.chk:hover{border-color:var(--accent);}
.chk.on{background:var(--accent);border-color:var(--accent);}
.chk.on::after{content:"\F633";font-family:"bootstrap-icons";color:#fff;font-size:11px;}
.status{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:20px;font-size:11.5px;font-weight:600;font-family:var(--font-ui);}
.status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;}
.st-livr{color:#0d7a44;background:var(--add-bg);} .st-exp{color:#1d4ed8;background:#eaf0fd;}
.st-att{color:#b45309;background:var(--warn-bg);} .st-ann{color:#b91c1c;background:var(--del-bg);}
.skel-row td{padding:0;}
.skel{height:12px;margin:0 12px;border-radius:5px;background:linear-gradient(90deg,#ecedea 25%,#f5f5f2 37%,#ecedea 63%);background-size:400% 100%;animation:shimmer 1.3s infinite;}
@keyframes shimmer{0%{background-position:100% 0;}100%{background-position:-100% 0;}}
.grid tbody tr.reveal{animation:rowIn .4s var(--ease-out) both;}
@keyframes rowIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
.empty-table{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--faint);text-align:center;}
.empty-table .bi{font-size:42px;opacity:.4;margin-bottom:14px;}
.empty-table .hand{font-family:var(--font-hand);font-size:19px;color:var(--accent-press);margin-top:10px;opacity:.85;}

/* RIGHT PANEL */
.panel{width:0;flex:none;background:var(--surface);border-left:1px solid var(--line);display:flex;flex-direction:column;transition:width .3s var(--ease);overflow:hidden;}
.panel.open{width:382px;}
.panel-head{height:52px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--line);}
.panel-head .ttl{font-weight:700;font-size:15px;letter-spacing:-.01em;display:flex;align-items:center;gap:9px;color:var(--ink);}
.panel-head .ttl .glyph{width:24px;height:24px;border-radius:7px;background:var(--accent-tint);color:var(--accent-press);display:flex;align-items:center;justify-content:center;font-size:13px;}
.panel-close{cursor:pointer;color:var(--faint);font-size:18px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:.14s;}
.panel-close:hover{background:var(--surface-2);color:var(--ink);}
.seg{display:flex;gap:2px;padding:8px 16px;border-bottom:1px solid var(--line-soft);}
.seg button{flex:1;height:30px;border:none;background:transparent;border-radius:var(--radius-sm);font-family:inherit;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;transition:.14s;}
.seg button:hover{background:var(--surface-2);color:var(--ink);}
.seg button.on{background:var(--ink);color:#fff;}
.panel-body{flex:1;overflow-y:auto;padding:14px 16px;}
.insp-field{margin-bottom:13px;}
.insp-field label{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--ink-soft);margin-bottom:5px;}
.insp-field label .t{font-size:9.5px;font-family:var(--font-mono);text-transform:uppercase;color:var(--faint);font-weight:600;}
.insp-field input,.insp-field textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 11px;font-family:inherit;font-size:13px;color:var(--text);background:var(--surface-2);outline:none;transition:.18s;resize:vertical;}
.insp-field input:focus,.insp-field textarea:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px var(--accent-glow);}
.insp-field input.mono,.insp-field textarea.mono{font-family:var(--font-mono);font-size:12.5px;}
.insp-empty{text-align:center;color:var(--faint);padding:48px 20px;}
.insp-empty i{font-size:30px;display:block;margin-bottom:12px;opacity:.5;}
.pc-empty{text-align:center;color:var(--faint);padding:36px 16px;}
.pc-empty .ring{width:54px;height:54px;border-radius:50%;background:var(--accent-tint);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;color:var(--accent);font-size:22px;}
.pc-empty .hand{font-family:var(--font-hand);font-size:18px;color:var(--accent-press);margin-top:10px;}
.pc-group{margin-bottom:14px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;animation:rowIn .35s var(--ease-out) both;}
.pc-group-head{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--surface-2);border-bottom:1px solid var(--line-soft);}
.pc-tag{width:20px;height:20px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex:none;}
.pc-tag.U{background:#fef3e2;color:var(--warn);}
.pc-path{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-soft);display:flex;align-items:center;gap:5px;flex:1;overflow:hidden;}
.pc-path b{color:var(--ink);} .pc-path .sep{color:var(--faint);}
.pc-revert{cursor:pointer;color:var(--faint);font-size:14px;transition:.14s;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:5px;}
.pc-revert:hover{color:var(--del);background:var(--del-bg);}
.pc-diff{padding:8px;}
.pc-line{font-family:var(--font-mono);font-size:12px;padding:7px 10px;border-radius:6px;margin:3px 0;display:flex;gap:8px;align-items:flex-start;word-break:break-word;}
.pc-line.del{background:var(--del-bg);color:#a31616;border:1px solid var(--del-line);}
.pc-line.add{background:var(--add-bg);color:#0d7a44;border:1px solid var(--add-line);}
.pc-line .mk{flex:none;font-weight:700;}
.panel-foot{flex:none;border-top:1px solid var(--line);padding:12px 16px;display:flex;gap:8px;}
.panel-foot .btn{flex:1;height:40px;border-radius:var(--radius);font-weight:600;font-size:13px;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--ink-soft);transition:.16s;display:flex;align-items:center;justify-content:center;gap:7px;}
.panel-foot .btn:hover{background:var(--surface-2);}
.panel-foot .btn.commit{background:var(--accent);border-color:var(--accent);color:#fff;flex:1.4;}
.panel-foot .btn.commit:hover{background:var(--accent-press);box-shadow:0 6px 16px -4px var(--accent-glow);}

/* DROPDOWN */
.menu{position:fixed;z-index:120;min-width:200px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-pop);padding:6px;opacity:0;transform:translateY(-6px) scale(.97);transform-origin:top left;
  transition:opacity .16s var(--ease),transform .16s var(--ease);pointer-events:none;}
.menu.open{opacity:1;transform:none;pointer-events:auto;}
.menu-label{font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);padding:6px 10px 4px;}
.menu-item{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--ink-soft);transition:background .12s;}
.menu-item:hover{background:var(--surface-2);color:var(--ink);}
.menu-item i{font-size:15px;width:18px;text-align:center;color:var(--muted);}
.menu-item .k{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;color:var(--faint);}
.menu-item.danger{color:var(--del);} .menu-item.danger i{color:var(--del);} .menu-item.danger:hover{background:var(--del-bg);}
.menu-item .dot{width:8px;height:8px;border-radius:50%;}
.menu-item .check{margin-left:auto;color:var(--accent);opacity:0;} .menu-item.sel .check{opacity:1;}
.menu-sep{height:1px;background:var(--line-soft);margin:5px 4px;}

/* FK POPOVER */
.fkpop{position:fixed;z-index:140;width:272px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-card);opacity:0;transform:scale(.95) translateY(-4px);transform-origin:top left;
  transition:.16s var(--ease);pointer-events:none;overflow:hidden;}
.fkpop.open{opacity:1;transform:none;pointer-events:auto;}
.fkpop-head{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--accent-tint);border-bottom:1px solid var(--accent-tint-2);}
.fkpop-head .ic{width:32px;height:32px;border-radius:9px;background:#fff;color:var(--accent-press);display:flex;align-items:center;justify-content:center;font-size:15px;flex:none;box-shadow:var(--shadow-sm);}
.fkpop-head .t1{font-weight:700;font-size:13.5px;color:var(--ink);}
.fkpop-head .t2{font-family:var(--font-mono);font-size:10.5px;color:var(--accent-press);}
.fkpop-body{padding:6px 14px;max-height:300px;overflow:auto;}
.fk-field{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--line-soft);}
.fk-field:last-child{border-bottom:none;}
.fk-field .k{color:var(--muted);font-family:var(--font-mono);font-size:11px;flex:none;}
.fk-field .v{color:var(--text);font-size:12.5px;font-weight:500;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fk-field .v.pk{color:var(--accent-press);font-family:var(--font-mono);}
.fkpop-foot{padding:10px 14px;border-top:1px solid var(--line-soft);}
.fkpop-foot button{width:100%;height:34px;border:1px solid var(--line);background:#fff;border-radius:var(--radius-sm);font-family:inherit;
  font-size:12.5px;font-weight:600;color:var(--ink-soft);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;transition:.14s;}
.fkpop-foot button:hover{border-color:var(--accent);color:var(--accent-press);background:var(--accent-tint);}

/* =================================================================
   AIU MODAL — cadre + grand glyphe + signature manuscrite Ada
   ================================================================= */
.scrim{position:fixed;inset:0;z-index:100;background:rgba(15,23,41,.55);
  display:flex;align-items:center;justify-content:center;padding:40px 20px;opacity:0;visibility:hidden;transition:opacity .22s var(--ease),visibility .22s;}
.scrim.open{opacity:1;visibility:visible;}
.aiu-modal{position:relative;background:var(--surface);border:2px solid var(--teal);border-radius:14px;max-width:520px;width:100%;max-height:86vh;
  padding:30px 30px 22px 116px;box-shadow:var(--shadow-modal);color:var(--teal);display:flex;flex-direction:column;overflow:hidden;
  transform:translateY(12px) scale(.98);opacity:0;transition:transform .26s var(--ease-out),opacity .26s;}
.scrim.open .aiu-modal{transform:none;opacity:1;}
.aiu-modal.wide{max-width:580px;}
.aiu-modal--question{border-color:#0D9488;color:#0D9488;}
.aiu-modal--warning{border-color:#DC2626;color:#DC2626;}
.aiu-modal--success{border-color:#10B981;color:#10B981;}
.aiu-modal--info{border-color:#3B82F6;color:#3B82F6;}
.aiu-symbol{position:absolute;left:16px;top:14px;width:88px;display:flex;align-items:flex-start;justify-content:center;line-height:.85;
  color:currentColor;z-index:2;font-family:var(--font-ui);font-weight:800;font-size:112px;opacity:.16;pointer-events:none;}
.aiu-symbol[data-glyph="?"]{font-size:128px;}
.aiu-x{position:absolute;right:14px;top:12px;cursor:pointer;color:var(--faint);font-size:17px;width:30px;height:30px;border-radius:7px;display:flex;align-items:center;justify-content:center;transition:.14s;z-index:3;}
.aiu-x:hover{background:var(--surface-2);color:var(--ink);}
.aiu-title{font-size:18px;font-weight:700;color:var(--ink);margin:0 0 8px;letter-spacing:-.01em;}
.aiu-desc{font-size:13px;line-height:1.55;color:var(--muted);margin:0 0 14px;}
.aiu-body{flex:1;overflow-y:auto;margin:0 0 6px;}
.aiu-sign{font-family:var(--font-hand);font-size:23px;color:var(--muted);text-align:right;margin:6px 0 14px;}
.aiu-foot{display:flex;justify-content:flex-end;gap:9px;flex:none;}
.mbtn{height:40px;padding:0 18px;border-radius:var(--radius);font-weight:600;font-size:13.5px;cursor:pointer;border:1px solid var(--line);
  background:#fff;color:var(--ink-soft);transition:.16s;display:flex;align-items:center;gap:8px;}
.mbtn:hover{background:var(--surface-2);}
.mbtn.primary{background:var(--accent);border-color:var(--accent);color:#fff;}
.mbtn.primary:hover{background:var(--accent-press);box-shadow:0 6px 16px -4px var(--accent-glow);}
.mbtn.primary.loading{pointer-events:none;}
.mbtn.dark{background:var(--ink);border-color:var(--ink);color:#fff;} .mbtn.dark:hover{background:#1a2540;}
.mbtn.danger{background:var(--del);border-color:var(--del);color:#fff;} .mbtn.danger:hover{background:#b91c1c;}
.frow{margin-bottom:14px;} .frow:last-child{margin-bottom:0;}
.frow label{display:block;font-size:12px;font-weight:600;color:var(--ink-soft);margin-bottom:6px;}
.frow input,.frow select,.frow textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;font-family:inherit;font-size:13px;background:var(--surface-2);outline:none;transition:.18s;}
.frow input:focus,.frow select:focus,.frow textarea:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px var(--accent-glow);}

/* BACKUP */
.bk-section{margin-bottom:16px;}
.bk-card{border:1px solid var(--line);border-radius:var(--radius);padding:14px 15px;background:var(--surface-2);}
.bk-card.accent{background:var(--accent-tint);border-color:var(--accent-tint-2);}
.bk-card-head{display:flex;align-items:center;gap:11px;margin-bottom:2px;}
.bk-card-head .ic{width:34px;height:34px;border-radius:9px;background:#fff;color:var(--accent-press);display:flex;align-items:center;justify-content:center;font-size:16px;flex:none;box-shadow:var(--shadow-sm);}
.bk-card-head h4{margin:0;font-size:14px;font-weight:700;color:var(--ink);}
.bk-card-head p{margin:1px 0 0;font-size:12px;color:var(--muted);}
.bk-now-btn{margin-left:auto;height:36px;padding:0 15px;border-radius:var(--radius-sm);background:var(--accent);color:#fff;border:none;font-weight:600;font-size:12.5px;cursor:pointer;display:flex;align-items:center;gap:7px;transition:.16s;flex:none;}
.bk-now-btn:hover{background:var(--accent-press);box-shadow:0 6px 16px -4px var(--accent-glow);}
.bk-now-btn.loading{pointer-events:none;}
.bk-btn-row{display:flex;gap:8px;margin-top:11px;flex-wrap:wrap;}
.bk-now-btn{margin-left:0;}
.bk-now-btn.ghost{background:var(--surface);color:var(--ink-soft);border:1px solid var(--line);}
.bk-now-btn.ghost:hover{border-color:var(--accent);color:var(--accent-press);background:var(--accent-tint);box-shadow:none;}
.bk-note{display:flex;align-items:flex-start;gap:8px;margin-top:11px;font-size:11.5px;line-height:1.45;color:var(--ink-soft);background:rgba(245,158,11,.10);border:1px solid rgba(245,158,11,.28);border-radius:9px;padding:8px 11px;}
.bk-note i{color:var(--warn);margin-top:1px;font-size:13px;flex:none;}
.bk-item .s .open-lock{color:var(--warn);}
.toggle{position:relative;width:42px;height:24px;border-radius:20px;background:#cdd2cb;cursor:pointer;transition:.2s;flex:none;}
.toggle.on{background:var(--accent);}
.toggle::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.2s var(--ease);box-shadow:var(--shadow-sm);}
.toggle.on::after{transform:translateX(18px);}
.bk-slider-row{display:flex;align-items:center;gap:14px;margin-top:14px;}
.bk-slider-row .val{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--accent-press);min-width:78px;text-align:right;}
input[type=range]{-webkit-appearance:none;appearance:none;flex:1;height:5px;border-radius:5px;background:var(--accent-tint-2);outline:none;}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;border:2px solid var(--accent);cursor:pointer;box-shadow:var(--shadow-sm);transition:transform .12s;}
input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15);}
.guard{margin-top:13px;padding:11px 13px;border-radius:var(--radius-sm);background:#fff;border:1px dashed var(--line);font-size:11.5px;color:var(--muted);line-height:1.6;}
.guard b{color:var(--ink-soft);}
.bk-list{margin-top:4px;}
.bk-item{display:flex;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid var(--line-soft);}
.bk-item:last-child{border-bottom:none;}
.bk-item .fic{width:34px;height:34px;border-radius:9px;background:var(--accent-tint);color:var(--accent-press);display:flex;align-items:center;justify-content:center;font-size:15px;flex:none;}
.bk-item .meta{flex:1;min-width:0;}
.bk-item .meta .n{font-size:13px;font-weight:600;font-family:var(--font-mono);color:var(--ink);}
.bk-item .meta .s{font-size:11.5px;color:var(--muted);} .bk-item .meta .s .lock{color:var(--accent-press);}
.bk-dl{width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid var(--line);background:#fff;color:var(--ink-soft);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.14s;flex:none;}
.bk-dl:hover{border-color:var(--accent);color:var(--accent-press);background:var(--accent-tint);}

/* TOASTS */
.toasts{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:300;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none;}
.toast{pointer-events:auto;min-width:330px;max-width:440px;display:flex;align-items:flex-start;gap:12px;padding:13px 15px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-modal);animation:toastUp .42s var(--ease-out) both;position:relative;overflow:hidden;}
.toast.out{animation:toastDown .3s var(--ease) forwards;}
@keyframes toastUp{from{opacity:0;transform:translateY(26px) scale(.96);}to{opacity:1;transform:none;}}
@keyframes toastDown{to{opacity:0;transform:translateY(20px) scale(.96);}}
.toast::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;}
.toast.success::before{background:var(--add);} .toast.warn::before{background:var(--warn);}
.toast.error::before{background:var(--del);} .toast.info::before{background:var(--info);}
.toast .ti{width:26px;height:26px;border-radius:8px;flex:none;display:flex;align-items:center;justify-content:center;font-size:15px;}
.toast.success .ti{background:var(--add-bg);color:var(--add);} .toast.warn .ti{background:var(--warn-bg);color:var(--warn);}
.toast.error .ti{background:var(--del-bg);color:var(--del);} .toast.info .ti{background:var(--info-bg);color:var(--info);}
.toast .tc{flex:1;} .toast .tc .tt{font-size:13px;font-weight:700;letter-spacing:-.01em;color:var(--ink);}
.toast .tc .td{font-size:12px;color:var(--muted);margin-top:1px;line-height:1.45;}
.toast .tx{cursor:pointer;color:var(--faint);font-size:14px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:5px;transition:.12s;flex:none;}
.toast .tx:hover{background:var(--surface-2);color:var(--ink);}
.toast .bar{position:absolute;bottom:0;left:0;height:2px;opacity:.4;animation:bar linear forwards;}
.toast.success .bar{background:var(--add);} .toast.warn .bar{background:var(--warn);} .toast.error .bar{background:var(--del);} .toast.info .bar{background:var(--info);}
@keyframes bar{from{width:100%;}to{width:0;}}
.spin{width:17px;height:17px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:rot .7s linear infinite;}
@keyframes rot{to{transform:rotate(360deg);}}
.fadein{animation:rowIn .4s var(--ease-out) both;}

/* =================================================================
   SCOPE — vue relations (diagramme ERD), intégrée
   ================================================================= */
.sc-overlay{position:fixed;top:52px;left:0;right:0;bottom:0;z-index:50;display:none;flex-direction:column;background:var(--canvas);}
.sc-overlay.open{display:flex;animation:rowIn .35s var(--ease-out);}
.sc-bar{height:50px;flex:none;display:flex;align-items:center;gap:12px;padding:0 14px;background:var(--surface);border-bottom:1px solid var(--line);z-index:6;}
.sc-title{display:flex;align-items:center;gap:9px;font-weight:700;font-size:14px;color:var(--ink);}
.sc-title>i{color:var(--accent);} .sc-title .sc-sub{font-weight:500;font-size:11.5px;color:var(--muted);}
.sc-search{margin-left:auto;position:relative;width:220px;}
.sc-search i{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--faint);font-size:13px;}
.sc-search input{width:100%;height:32px;border:1px solid var(--line);background:var(--surface-2);border-radius:var(--radius);padding:0 12px 0 32px;font-family:inherit;font-size:12.5px;color:var(--text);outline:none;transition:.2s;}
.sc-search input:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px var(--accent-glow);}
.sc-tbtn{width:34px;height:34px;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius-sm);color:var(--ink-soft);display:flex;align-items:center;justify-content:center;font-size:15px;transition:.15s;}
.sc-tbtn:hover{border-color:var(--accent);color:var(--accent-press);background:var(--accent-tint);}
.sc-tbtn.close{border-color:var(--del-line);color:var(--del);} .sc-tbtn.close:hover{background:var(--del-bg);color:#b91c1c;}
.sc-canvas{position:absolute;inset:50px 0 0 0;overflow:hidden;cursor:grab;background-image:radial-gradient(var(--line) 1.1px,transparent 1.1px);background-size:26px 26px;}
.sc-canvas.grabbing{cursor:grabbing;}
.sc-stage{position:absolute;top:0;left:0;width:4200px;height:2800px;transform-origin:0 0;will-change:transform;}
.sc-links{position:absolute;top:0;left:0;width:4200px;height:2800px;pointer-events:none;overflow:visible;}
.sc-lpath{fill:none;stroke:var(--link);stroke-width:2;opacity:.7;transition:stroke-width .15s,opacity .15s;pointer-events:stroke;cursor:pointer;}
.sc-ldot{fill:var(--link);}
.sc-labels{position:absolute;top:0;left:0;pointer-events:none;}
.sc-llabel{position:absolute;transform:translate(-50%,-50%);background:var(--surface);border:1px solid var(--line);border-radius:7px;padding:2px 8px;font-family:var(--font-mono);font-size:10.5px;color:var(--ink-soft);box-shadow:var(--shadow-sm);white-space:nowrap;pointer-events:auto;transition:.15s;}
.sc-llabel b{color:var(--type-fk);}
.sc-canvas.dim-on .sc-lpath{opacity:.12;} .sc-canvas.dim-on .sc-llabel{opacity:.25;}
.sc-lpath.hot{opacity:1;stroke-width:3.5;} .sc-llabel.hot{border-color:var(--accent);color:var(--ink);opacity:1;}
.sc-tcard{position:absolute;width:252px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden;user-select:none;transition:box-shadow .18s,opacity .2s,outline-color .18s;outline:2px solid transparent;outline-offset:2px;}
.sc-tcard:hover{box-shadow:var(--shadow-pop);}
.sc-tcard.focus{outline-color:var(--accent);box-shadow:0 0 0 4px var(--accent-glow),var(--shadow-pop);}
.sc-canvas.dim-on .sc-tcard:not(.focus):not(.related){opacity:.32;}
.sc-thead{height:40px;display:flex;align-items:center;gap:9px;padding:0 13px;cursor:grab;background:linear-gradient(180deg,var(--teal),var(--teal-dark));color:#fff;font-weight:700;font-size:13.5px;letter-spacing:-.01em;}
.sc-thead i{font-size:15px;opacity:.95;}
.sc-thead .cnt{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;background:rgba(255,255,255,.2);border-radius:6px;padding:1px 6px;font-weight:600;}
.sc-tcard.dragging .sc-thead{cursor:grabbing;}
.sc-tcol{height:30px;display:flex;align-items:center;gap:8px;padding:0 13px;border-top:1px solid var(--line-soft);font-size:12.5px;}
.sc-tcol .cn{display:flex;align-items:center;gap:6px;flex:1;font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sc-tcol .cn .pk{color:var(--pk);font-size:12px;flex:none;}
.sc-tcol.is-pk .cn{color:var(--ink);font-weight:600;}
.sc-tcol .ct{font-size:9.5px;font-family:var(--font-mono);font-weight:600;padding:1px 5px;border-radius:5px;text-transform:uppercase;flex:none;}
.sc-tcol .fkic{color:var(--type-fk);font-size:13px;flex:none;opacity:.7;}
.sc-tcol.is-fk{cursor:pointer;} .sc-tcol.is-fk:hover{background:var(--accent-tint);}
.sc-dock{position:absolute;left:16px;bottom:16px;z-index:8;display:flex;gap:8px;align-items:center;}
.sc-dgrp{display:flex;align-items:center;gap:2px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:4px;box-shadow:var(--shadow-sm);}
.sc-dbtn{min-width:34px;height:34px;padding:0 8px;border:none;background:transparent;border-radius:var(--radius-sm);color:var(--ink-soft);display:flex;align-items:center;justify-content:center;gap:7px;font-size:15px;font-weight:600;transition:.14s;}
.sc-dbtn.lbl{font-size:12.5px;} .sc-dbtn.lbl i{font-size:14px;}
.sc-dbtn:hover{background:var(--surface-2);color:var(--accent-press);}
.sc-dbtn.on{background:var(--accent-tint);color:var(--accent-press);}
.sc-zlevel{min-width:46px;text-align:center;font-family:var(--font-mono);font-size:12px;color:var(--muted);}
.sc-minimap{position:absolute;right:16px;bottom:16px;z-index:8;width:212px;height:148px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;cursor:pointer;}
.sc-minimap .mm-card{position:absolute;background:var(--accent);border-radius:2px;opacity:.55;}
.sc-minimap .mm-view{position:absolute;border:1.5px solid var(--accent-press);background:rgba(13,148,136,.10);border-radius:2px;}
.sc-minimap .mm-title{position:absolute;top:5px;left:8px;font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);z-index:2;}
.sc-detail{position:absolute;top:64px;right:16px;width:248px;z-index:8;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);overflow:hidden;opacity:0;transform:translateX(12px);pointer-events:none;transition:.22s var(--ease);}
.sc-detail.show{opacity:1;transform:none;pointer-events:auto;}
.sc-detail .dh{display:flex;align-items:center;gap:9px;padding:12px 14px;background:linear-gradient(180deg,var(--teal),var(--teal-dark));color:#fff;font-weight:700;}
.sc-detail .dh .x{margin-left:auto;cursor:pointer;opacity:.85;} .sc-detail .dh .x:hover{opacity:1;}
.sc-detail .db{padding:10px 14px;}
.sc-detail .db .lab{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin:0 0 2px;}
.sc-detail .db .rel{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px;}
.sc-detail .db .rel:last-of-type{border-bottom:none;}
.sc-detail .db .rel i{color:var(--type-fk);font-size:13px;}
.sc-detail .db .rel .ar{color:var(--faint);} .sc-detail .db .rel b{color:var(--accent-press);font-family:var(--font-mono);font-size:11.5px;}
.sc-detail .db .none{color:var(--faint);font-size:12px;padding:6px 0;}
.sc-detail .db .sign{font-family:var(--font-hand);font-size:17px;color:var(--accent-press);text-align:right;margin-top:8px;}
.sc-hint{position:absolute;top:60px;left:50%;transform:translateX(-50%);z-index:7;background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:6px 14px;font-size:12px;color:var(--muted);box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:8px;}
.sc-hint i{color:var(--accent-press);}

/* =================================================================
   SQL — éditeur + autocomplétion + prévisu (vue onglet « Query »)
   ================================================================= */
.sq-view{flex:1;display:none;flex-direction:column;min-width:0;background:var(--canvas);position:relative;z-index:1;}
.sq-view.show{display:flex;}
.sq-toolbar{height:46px;flex:none;display:flex;align-items:center;gap:8px;padding:0 12px;background:var(--surface);border-bottom:1px solid var(--line);z-index:2;}
.sq-live{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);font-weight:600;}
.sq-toggle{position:relative;width:36px;height:21px;border-radius:20px;background:#cdd2cb;cursor:pointer;transition:.2s;}
.sq-toggle.on{background:var(--accent);}
.sq-toggle::after{content:"";position:absolute;top:3px;left:3px;width:15px;height:15px;border-radius:50%;background:#fff;transition:.2s var(--ease);box-shadow:var(--shadow-sm);}
.sq-toggle.on::after{transform:translateX(15px);}
[data-theme="dark"] .sq-toggle{background:#39424f;}
.sq-editor{position:relative;flex:none;height:40%;min-height:110px;display:flex;background:var(--editor-bg);overflow:hidden;}
.sq-gutter{flex:none;width:48px;padding:13px 0;text-align:right;font-family:var(--font-mono);font-size:13px;line-height:21px;color:var(--gutter);background:var(--surface-2);border-right:1px solid var(--line);user-select:none;overflow:hidden;}
.sq-gutter div{padding:0 11px 0 0;}
.sq-edwrap{position:relative;flex:1;overflow:hidden;}
.sq-hl,.sq-ta{position:absolute;inset:0;margin:0;padding:13px 16px;font-family:var(--font-mono);font-size:13px;line-height:21px;white-space:pre;overflow:auto;border:0;tab-size:2;}
.sq-hl{pointer-events:none;color:var(--text);z-index:1;}
.sq-ta{z-index:2;background:transparent;color:transparent;caret-color:var(--accent);resize:none;outline:none;}
.sq-ta::selection{background:var(--accent-glow);}
.sq-view .t-kw{color:var(--t-kw);font-weight:700;} .sq-view .t-fn{color:var(--t-fn);font-weight:600;} .sq-view .t-str{color:var(--t-str);}
.sq-view .t-num{color:var(--t-num);} .sq-view .t-op{color:var(--t-op);} .sq-view .t-com{color:var(--t-com);font-style:italic;}
.sq-view .t-tbl{color:var(--t-tbl);font-weight:600;} .sq-view .t-col{color:var(--t-col);}
.sq-acpop{position:absolute;z-index:30;min-width:220px;max-width:320px;max-height:240px;overflow-y:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-pop);padding:5px;display:none;}
.sq-acpop.show{display:block;}
.sq-ac{display:flex;align-items:center;gap:9px;height:31px;padding:0 9px;border-radius:var(--radius-sm);cursor:pointer;font-size:12.5px;}
.sq-ac.sel{background:var(--accent-tint);}
.sq-ac .ic{width:18px;height:18px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:11px;flex:none;font-family:var(--font-mono);font-weight:700;}
.sq-ac .ic.kw{background:rgba(124,58,237,.14);color:var(--t-kw);} .sq-ac .ic.fn{background:rgba(29,78,216,.14);color:var(--t-fn);}
.sq-ac .ic.tbl{background:var(--accent-tint);color:var(--accent-press);} .sq-ac .ic.col{background:rgba(190,24,93,.12);color:var(--t-col);}
.sq-ac .lab{font-family:var(--font-mono);color:var(--ink-soft);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sq-ac.sel .lab{color:var(--ink);} .sq-ac .meta{font-size:10.5px;color:var(--faint);}
.sq-divider{height:7px;flex:none;background:var(--surface-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);cursor:row-resize;position:relative;}
.sq-divider::after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:34px;height:3px;border-radius:3px;background:var(--line);}
.sq-divider:hover::after{background:var(--accent);}
.sq-results{flex:1;display:flex;flex-direction:column;min-height:0;}
.sq-resbar{height:33px;flex:none;display:flex;align-items:center;gap:12px;padding:0 14px;background:var(--surface);border-bottom:1px solid var(--line);font-size:12px;}
.sq-status{display:flex;align-items:center;gap:7px;font-weight:600;color:var(--muted);}
.sq-status .dot{width:7px;height:7px;border-radius:50%;background:var(--faint);}
.sq-status.ok .dot{background:var(--add);} .sq-status.ok{color:var(--add);}
.sq-status.err .dot{background:var(--del);} .sq-status.err{color:var(--del);}
.sq-status.run .dot{background:var(--warn);animation:sqblink 1s infinite;}
@keyframes sqblink{50%{opacity:.3;}}
.sq-meta{margin-left:auto;color:var(--muted);font-family:var(--font-mono);font-size:11.5px;}
.sq-resscroll{flex:1;overflow:auto;position:relative;background:var(--canvas);}
table.sq-grid{border-collapse:separate;border-spacing:0;width:100%;font-size:12.5px;}
.sq-grid th{position:sticky;top:0;z-index:2;background:var(--surface);border-bottom:1px solid var(--line);text-align:left;padding:8px 13px;font-weight:700;color:var(--ink);font-size:12px;white-space:nowrap;}
.sq-grid th .ix{font-family:var(--font-mono);font-size:9px;color:var(--faint);font-weight:500;display:block;text-transform:uppercase;}
.sq-grid td{border-bottom:1px solid var(--line-soft);padding:7px 13px;color:var(--ink-soft);white-space:nowrap;}
.sq-grid td.num,.sq-grid td.mono{font-family:var(--font-mono);font-size:12px;} .sq-grid td.null{color:var(--faint);font-style:italic;}
.sq-grid tr:hover td{background:var(--surface-2);}
.sq-grid tr.reveal{animation:rowIn .3s var(--ease-out) both;}
.sq-empty,.sq-err{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;color:var(--faint);padding:28px;}
.sq-empty i{font-size:36px;opacity:.4;margin-bottom:12px;} .sq-empty .hand{font-family:var(--font-hand);font-size:18px;color:var(--accent-press);margin-top:10px;}
.sq-err{color:var(--del);} .sq-err i{font-size:32px;margin-bottom:12px;}
.sq-err pre{font-family:var(--font-mono);font-size:12px;background:var(--del-bg);border:1px solid var(--del-line);border-radius:8px;padding:12px 14px;max-width:560px;white-space:pre-wrap;color:#b91c1c;margin-top:6px;}
[data-theme="dark"] .sq-err pre{color:#fca5a5;}

/* =================================================================
   DASHBOARD + PALETTE DE COMMANDES
   ================================================================= */
.dash-view{flex:1;display:none;flex-direction:column;min-width:0;background:var(--canvas);position:relative;z-index:1;overflow:auto;}
.dash-view.show{display:flex;}
.dash-head{display:flex;align-items:center;gap:14px;padding:18px 22px 6px;flex:none;}
.dash-head h2{margin:0;font-size:19px;font-weight:800;letter-spacing:-.02em;color:var(--ink);}
.dash-head .sub{font-size:12.5px;color:var(--muted);margin-top:1px;}
.dash-head .acts{margin-left:auto;display:flex;gap:8px;}
.dash-body{padding:8px 22px 26px;flex:1;}
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:16px;}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:15px 17px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;}
.kpi .ic{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:16px;margin-bottom:10px;}
.kpi .v{font-size:24px;font-weight:800;letter-spacing:-.02em;color:var(--ink);line-height:1;}
.kpi .l{font-size:12px;color:var(--muted);margin-top:5px;font-weight:600;}
.kpi .trend{position:absolute;top:15px;right:15px;font-size:11px;font-weight:700;display:flex;align-items:center;gap:3px;}
.kpi .trend.up{color:var(--add);} .kpi .trend.down{color:var(--del);}
.dash-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
.wcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;min-width:0;overflow:hidden;}
.wcard.w2{grid-column:span 2;}
.wcard-h{display:flex;align-items:center;gap:9px;padding:13px 16px 6px;}
.wcard-h .t{font-size:13.5px;font-weight:700;color:var(--ink);}
.wcard-h .tools{margin-left:auto;display:flex;gap:2px;}
.wbtn{width:28px;height:28px;border:none;background:transparent;border-radius:7px;color:var(--faint);display:flex;align-items:center;justify-content:center;font-size:14px;transition:.13s;cursor:pointer;}
.wbtn:hover{background:var(--surface-2);color:var(--accent-press);}
.wcard-body{padding:6px 12px 14px;flex:1;min-height:170px;display:flex;align-items:center;justify-content:center;}
.wcard-body svg{width:100%;height:auto;display:block;}
.dash-add{border:1.5px dashed var(--line);border-radius:var(--radius-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;color:var(--muted);cursor:pointer;min-height:200px;transition:.16s;background:transparent;}
.dash-add:hover{border-color:var(--accent);color:var(--accent-press);background:var(--accent-tint);}
.dash-add i{font-size:24px;}
.chart-axis{font-family:var(--font-mono);font-size:9px;fill:var(--faint);}
.chart-grid-line{stroke:var(--line-soft);stroke-width:1;}
.chart-lbl{font-size:10.5px;fill:var(--muted);}
.chart-val{font-size:10px;font-weight:700;fill:var(--ink-soft);font-family:var(--font-mono);}
.donut-legend{display:flex;flex-direction:column;gap:6px;font-size:11.5px;}
.donut-legend .li{display:flex;align-items:center;gap:7px;color:var(--ink-soft);}
.donut-legend .sw{width:10px;height:10px;border-radius:3px;flex:none;}
.donut-legend .vv{margin-left:auto;font-family:var(--font-mono);font-weight:600;color:var(--muted);padding-left:14px;}
.dash-flex{display:flex;align-items:center;gap:14px;width:100%;}

/* command palette */
.cmdk-scrim{position:fixed;inset:0;z-index:90;background:rgba(15,23,41,.34);backdrop-filter:blur(3px);display:none;align-items:flex-start;justify-content:center;padding-top:11vh;}
.cmdk-scrim.open{display:flex;animation:cmdkFade .16s var(--ease-out);}
@keyframes cmdkFade{from{opacity:0;}to{opacity:1;}}
.cmdk{width:min(620px,92vw);background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 60px -12px rgba(15,23,41,.45);overflow:hidden;animation:cmdkPop .2s var(--ease-out);}
@keyframes cmdkPop{from{opacity:0;transform:translateY(-10px) scale(.98);}to{opacity:1;transform:none;}}
.cmdk-in{display:flex;align-items:center;gap:11px;padding:15px 18px;border-bottom:1px solid var(--line);}
.cmdk-in i{font-size:17px;color:var(--faint);}
.cmdk-in input{flex:1;border:none;background:transparent;outline:none;font-family:inherit;font-size:15.5px;color:var(--text);}
.cmdk-in .esc{font-family:var(--font-mono);font-size:10.5px;color:var(--faint);border:1px solid var(--line);border-radius:5px;padding:2px 6px;}
.cmdk-list{max-height:54vh;overflow-y:auto;padding:7px;}
.cmdk-group{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);padding:9px 11px 5px;}
.cmdk-item{display:flex;align-items:center;gap:12px;padding:9px 11px;border-radius:9px;cursor:pointer;}
.cmdk-item.sel{background:var(--accent-tint);}
.cmdk-item .ci{width:30px;height:30px;border-radius:8px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--accent-press);flex:none;}
.cmdk-item.sel .ci{background:#fff;}
[data-theme="dark"] .cmdk-item.sel .ci{background:var(--surface);}
.cmdk-item .cl{flex:1;min-width:0;}
.cmdk-item .cl .t{font-size:13.5px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cmdk-item .cl .d{font-size:11.5px;color:var(--muted);}
.cmdk-item .cl .d b{color:var(--accent-press);font-family:var(--font-mono);font-weight:600;}
.cmdk-item .tag{font-family:var(--font-mono);font-size:10px;color:var(--faint);border:1px solid var(--line);border-radius:5px;padding:2px 6px;}
.cmdk-empty{padding:34px;text-align:center;color:var(--faint);}
.cmdk-empty .hand{font-family:var(--font-hand);font-size:17px;color:var(--accent-press);margin-top:8px;}
.tb-search{cursor:text;}

/* =================================================================
   MODE SOMBRE — blanc sur noir
   ================================================================= */
html{transition:background .3s var(--ease);}
[data-theme="dark"]{
  --ink:#eef1f5; --canvas:#0c0e12; --surface:#15181e; --surface-2:#1c2027; --sidebar:#0f1216;
  --text:#dfe3ea; --ink-soft:#c3c9d3; --muted:#8b93a1; --faint:#646c7a;
  --line:rgba(255,255,255,.085); --line-soft:rgba(255,255,255,.05); --border-strong:rgba(255,255,255,.18);
  --teal:#14b8a6; --teal-dark:#0d9488; --teal-light:#5EEAD4;
  --accent:#14b8a6; --accent-press:#2dd4bf;
  --accent-tint:rgba(20,184,166,.15); --accent-tint-2:rgba(20,184,166,.30); --accent-glow:rgba(20,184,166,.30);
  --add:#34d399; --add-bg:rgba(52,211,153,.13); --add-line:rgba(52,211,153,.32);
  --del:#f87171; --del-bg:rgba(248,113,113,.13); --del-line:rgba(248,113,113,.32);
  --warn:#fbbf24; --warn-bg:rgba(251,191,36,.13); --warn-line:rgba(251,191,36,.32);
  --info:#60a5fa; --info-bg:rgba(96,165,250,.14);
  --type-int:#a78bfa; --type-real:#fbbf24; --type-text:#2dd4bf; --type-date:#60a5fa; --type-fk:#f472b6;
  --pk:#fbbf24; --link:#2dd4bf; --link-dim:rgba(45,212,191,.20);
  --t-kw:#c4b5fd; --t-fn:#93c5fd; --t-str:#fcd34d; --t-num:#5eead4; --t-op:#9aa3b2; --t-com:#646c7a; --t-tbl:#2dd4bf; --t-col:#f472b6; --gutter:#5b6472; --editor-bg:#12151b;
  --c1:#2dd4bf; --c2:#a78bfa; --c3:#fbbf24; --c4:#60a5fa; --c5:#f472b6; --c6:#34d399; --c-track:rgba(255,255,255,.07);
  --shadow-sm:0 1px 2px rgba(0,0,0,.5);
  --shadow:0 4px 16px -4px rgba(0,0,0,.6),0 2px 6px -2px rgba(0,0,0,.5);
  --shadow-pop:0 6px 20px rgba(0,0,0,.55); --shadow-card:0 10px 28px rgba(0,0,0,.6); --shadow-modal:0 24px 64px rgba(0,0,0,.72);
}
/* white surfaces -> elevated dark */
[data-theme="dark"] .sb-search input,
[data-theme="dark"] .sb-item .badge,[data-theme="dark"] .sb-item.active .badge,
[data-theme="dark"] .tb-search .kbd,
[data-theme="dark"] .chk,
[data-theme="dark"] .bk-card-head .ic,[data-theme="dark"] .bk-dl,
[data-theme="dark"] .fkpop-head .ic,[data-theme="dark"] .fkpop-foot button,
[data-theme="dark"] .row-restore,[data-theme="dark"] .insp-del,[data-theme="dark"] .code-copy,
[data-theme="dark"] .panel-foot .btn,[data-theme="dark"] .mbtn,
[data-theme="dark"] .changes-pill{background:var(--surface);}
[data-theme="dark"] .field input:focus,[data-theme="dark"] .tb-search input:focus,
[data-theme="dark"] .insp-field input:focus,[data-theme="dark"] .insp-field textarea:focus,
[data-theme="dark"] .frow input:focus,[data-theme="dark"] .frow select:focus,[data-theme="dark"] .frow textarea:focus,
[data-theme="dark"] td .cell-edit{background:var(--surface-2);}
/* primary (was ink) buttons -> teal in dark */
[data-theme="dark"] .btn-primary,[data-theme="dark"] .tool-btn.primary,[data-theme="dark"] .mbtn.dark,[data-theme="dark"] .seg button.on{background:var(--accent);border-color:var(--accent);color:#06231f;}
[data-theme="dark"] .btn-primary:hover,[data-theme="dark"] .tool-btn.primary:hover,[data-theme="dark"] .mbtn.dark:hover{background:var(--accent-press);}
[data-theme="dark"] .seg button.on{color:#06231f;}
/* type badges */
[data-theme="dark"] .tp-INTEGER{background:rgba(167,139,250,.16);} [data-theme="dark"] .tp-REAL{background:rgba(251,191,36,.16);}
[data-theme="dark"] .tp-TEXT{background:var(--accent-tint);} [data-theme="dark"] .tp-DATE{background:rgba(96,165,250,.16);}
[data-theme="dark"] .tp-REF{background:var(--accent-tint);color:var(--accent-press);}
/* status pills */
[data-theme="dark"] .st-livr{color:#34d399;} [data-theme="dark"] .st-exp{color:#60a5fa;background:rgba(96,165,250,.14);}
[data-theme="dark"] .st-att{color:#fbbf24;} [data-theme="dark"] .st-ann{color:#f87171;}
/* dirty / delete cell text */
[data-theme="dark"] td.dirty .cell{color:#fbbf24;} [data-theme="dark"] tr.to-delete .cell{color:#f87171;}
/* code highlight */
[data-theme="dark"] .j-key{color:#5eead4;} [data-theme="dark"] .j-str{color:#fcd34d;} [data-theme="dark"] .j-num{color:#a78bfa;} [data-theme="dark"] .j-bool{color:#60a5fa;}
[data-theme="dark"] .sql-kw{color:#a78bfa;} [data-theme="dark"] .sql-tbl{color:#5eead4;} [data-theme="dark"] .sql-str{color:#fcd34d;} [data-theme="dark"] .sql-num{color:#60a5fa;}
/* misc surfaces with light hovers */
[data-theme="dark"] .tab.active::after{background:var(--canvas);}
[data-theme="dark"] .toggle{background:#3a414c;}
[data-theme="dark"] .pc-tag.U{background:rgba(251,191,36,.16);}
/* login dark backdrop */
[data-theme="dark"] #login{background:radial-gradient(120% 90% at 85% 8%,rgba(20,184,166,.12) 0%,transparent 46%),radial-gradient(90% 90% at 8% 100%,rgba(20,184,166,.06) 0%,transparent 52%),var(--canvas);}

/* message d'erreur de connexion */
.lg-error{margin:-2px 0 14px;padding:9px 12px;border-radius:9px;background:var(--del-bg);border:1px solid var(--del-line);color:#b91c1c;font-size:12.5px;font-weight:600;animation:rowIn .25s var(--ease-out) both;}
[data-theme="dark"] .lg-error{color:#fca5a5;}

/* connexion verrouillée (tables chargées après saisie de la passphrase) */
.sb-item.sb-locked{opacity:.62;font-style:italic;cursor:pointer;font-size:12px;}
.sb-item.sb-locked .nm{color:var(--faint);}
.sb-item.sb-locked:hover{opacity:.9;}

/* indentation tables sous connexion (décalage + ligne guide) */
.sb-db .sb-tables{margin-left:13px;padding-left:10px;border-left:1.5px solid var(--line);}
.sb-db .sb-tables .table-item{padding-left:6px;}
