/* Cockpit Artisan — style. Réutilise les tokens skb-ui (OKLCH sombre/clair) + châssis façon Hub/SeoBox. */
@import url('https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Instrument+Serif:ital@0;1&display=swap');

:root{
  --bg:oklch(0.208 0.042 265.8); --surface:oklch(0.262 0.040 261); --surface-2:oklch(0.171 0.041 265);
  --ink:oklch(0.972 0.006 248); --ink-soft:oklch(0.869 0.022 253); --muted:oklch(0.704 0.040 257); --faint:oklch(0.58 0.035 258);
  --line:oklch(1 0 0 / 0.09); --line-strong:oklch(1 0 0 / 0.16);
  --primary:oklch(0.48 0.158 254); --primary-text:oklch(0.74 0.15 262); --primary-ink:oklch(0.99 0.005 254);
  --primary-weak:oklch(0.60 0.20 264 / 0.18); --primary-hover:oklch(0.66 0.20 263);
  --accent:oklch(0.55 0.205 27); --accent-weak:oklch(0.62 0.20 25 / 0.18); --accent-ink:oklch(0.74 0.16 25);
  --success:oklch(0.55 0.13 150); --success-weak:oklch(0.72 0.15 162 / 0.18); --success-ink:oklch(0.86 0.12 162);
  --danger:oklch(0.55 0.19 27); --danger-weak:oklch(0.66 0.20 22 / 0.18); --danger-ink:oklch(0.78 0.15 22);
  --warn-ink:oklch(0.82 0.13 78); --warn-weak:oklch(0.80 0.13 78 / 0.16);
  --font-display:'Instrument Serif',Georgia,serif;
  --brandgrad:linear-gradient(135deg,var(--primary),oklch(0.55 0.19 285));
  --glow:radial-gradient(1100px 460px at 70% -22%,oklch(0.30 0.07 264),transparent);
  --r-sm:8px; --r-md:11px; --r-lg:14px; --r-pill:999px;
  --sh-1:0 1px 2px oklch(0 0 0 / 0.40); --sh-2:0 22px 60px -22px oklch(0 0 0 / 0.70);
  --ease:cubic-bezier(0.22,1,0.36,1); --dur:180ms; --mono:'SF Mono',ui-monospace,Consolas,monospace;
}
:root[data-theme=light]{
  --bg:oklch(1 0 0); --surface:oklch(0.985 0.003 254); --surface-2:oklch(0.966 0.005 254);
  --ink:oklch(0.24 0.02 256); --ink-soft:oklch(0.34 0.02 256); --muted:oklch(0.50 0.016 256); --faint:oklch(0.62 0.014 256);
  --line:oklch(0.918 0.004 254); --line-strong:oklch(0.86 0.006 254);
  --primary-weak:oklch(0.952 0.034 254); --primary-text:oklch(0.45 0.16 254); --primary-hover:oklch(0.42 0.16 254);
  --accent-weak:oklch(0.955 0.04 27); --accent-ink:oklch(0.49 0.19 27);
  --success-weak:oklch(0.95 0.045 150); --success-ink:oklch(0.40 0.10 150);
  --danger-weak:oklch(0.955 0.04 27); --danger-ink:oklch(0.47 0.17 27);
  --warn-ink:oklch(0.46 0.11 70); --warn-weak:oklch(0.92 0.09 78 / 0.5);
  --glow:radial-gradient(1100px 460px at 70% -22%,oklch(0.955 0.03 262),transparent);
  --sh-1:0 1px 2px oklch(0.24 0.02 150 / 0.06); --sh-2:0 18px 50px -18px oklch(0.30 0.06 260 / 0.20);
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:'Geist','Inter',-apple-system,'Segoe UI',Roboto,system-ui,sans-serif;color:var(--ink);
  background:var(--surface-2);overflow:hidden;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;
  font-variant-numeric:tabular-nums;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
button{font:inherit;cursor:pointer;color:inherit}
h1,h2,h3,h4{font-weight:600;letter-spacing:-.01em}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:8px;border:2px solid var(--surface-2)}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}
.app{display:flex;height:100vh;height:100dvh}
.hidden{display:none!important}

/* Sidebar */
.side{width:266px;flex:none;background:var(--surface-2);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:12px;gap:4px;transition:width .22s var(--ease);overflow:hidden;position:relative}
.app.sb-collapsed .side{width:66px;padding:12px 9px}
.side-top{display:flex;align-items:center;justify-content:space-between;padding:4px 4px 8px}
.brand{display:flex;align-items:center;gap:10px;min-width:0}
.brand .mark{width:30px;height:30px;flex:none;border-radius:8px;background:var(--brandgrad);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;color:#fff;box-shadow:0 4px 14px color-mix(in oklch,var(--primary) 45%,transparent)}
.brand .txt b{font-size:16px;letter-spacing:-.02em;white-space:nowrap}
.brand .txt small{display:block;color:var(--faint);font-size:11px;font-weight:500;margin-top:-2px;white-space:nowrap}
.iconbtn{width:32px;height:32px;flex:none;border-radius:8px;border:1px solid transparent;background:none;color:var(--muted);display:flex;align-items:center;justify-content:center;font-size:16px}
.iconbtn:hover{background:var(--bg);color:var(--ink)}
.app.sb-collapsed .side-top{flex-direction:column;gap:8px}
.app.sb-collapsed .brand .txt{display:none}
.i-expand{display:none}.app.sb-collapsed .i-collapse{display:none}.app.sb-collapsed .i-expand{display:inline}
.sgroup{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--faint);font-weight:700;padding:14px 10px 6px;white-space:nowrap}
.app.sb-collapsed .sgroup{text-align:center;padding:12px 0 6px;font-size:9px}
.navitem{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:var(--r-md);color:var(--muted);font-size:14px;font-weight:500;border:1px solid transparent;transition:.12s;width:100%;text-align:left;background:none;white-space:nowrap}
.navitem .ic{width:20px;flex:none;text-align:center;font-size:15px}
.navitem:hover{background:var(--bg);color:var(--ink)}
.navitem.active{background:var(--primary-weak);color:var(--primary-text);font-weight:600}
.navitem .count{margin-left:auto;font-size:11px;font-weight:700;color:var(--faint);background:var(--bg);border:1px solid var(--line);border-radius:var(--r-pill);padding:1px 8px;min-width:22px;text-align:center}
.navitem.active .count{color:var(--primary-text);border-color:transparent;background:color-mix(in oklch,var(--primary) 16%,transparent)}
.navitem.warn .count{color:var(--danger-ink);background:var(--danger-weak);border-color:transparent}
.app.sb-collapsed .navitem{justify-content:center;padding:9px 0}
.app.sb-collapsed .navitem .lbl,.app.sb-collapsed .navitem .count{display:none}
.side-foot{margin-top:auto;border-top:1px solid var(--line);padding-top:8px}
.foot-row{display:flex;align-items:center;gap:4px}
.foot-btn{display:flex;align-items:center;gap:11px;flex:1;min-width:0;padding:9px 10px;border-radius:var(--r-md);background:none;border:1px solid transparent;color:var(--muted);font-size:14px;font-weight:500;white-space:nowrap}
.foot-btn:hover{background:var(--bg);color:var(--ink)}
.foot-btn .av{width:26px;height:26px;flex:none;border-radius:50%;background:var(--primary-weak);color:var(--primary-text);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;border:1px solid color-mix(in oklch,var(--primary) 30%,transparent)}
.foot-btn .who small{display:block;color:var(--faint);font-size:11px;font-weight:500}
.foot-gear{width:38px;height:38px;flex:none;border:1px solid transparent;background:none;color:var(--muted);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-size:15px}
.foot-gear:hover{background:var(--bg);color:var(--ink)}
.app.sb-collapsed .foot-btn .who{display:none}
.app.sb-collapsed .foot-row{flex-direction:column}

/* Workspace */
.workspace{flex:1;display:flex;min-width:0;position:relative}
.convo{flex:1;display:flex;flex-direction:column;min-width:0;position:relative;background:var(--glow),var(--bg)}
.theme-toggle{position:absolute;top:13px;right:16px;z-index:20;width:36px;height:36px;border-radius:10px;border:1px solid var(--line-strong);background:var(--bg);color:var(--ink);display:flex;align-items:center;justify-content:center;font-size:16px}
.theme-toggle:hover{border-color:var(--primary)}
.mobar{display:none;flex:0 0 52px;align-items:center;gap:6px;padding:0 8px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.mobar-btn{width:40px;height:40px;border:none;background:none;color:var(--ink);font-size:20px;border-radius:9px;display:flex;align-items:center;justify-content:center}
.mobar-title{flex:1;text-align:center;font-weight:700;font-size:15px}
.scroll{flex:1;overflow-y:auto}
.board{max-width:1080px;margin:0 auto;padding:30px 30px 60px}
.bhead{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}
.bhead .word{font-family:var(--font-display);font-size:40px;font-weight:400;line-height:1;background:linear-gradient(90deg,var(--ink),var(--primary));-webkit-background-clip:text;background-clip:text;color:transparent}
.bhead .sub{color:var(--muted);font-size:14.5px;padding-bottom:5px}
.bhead .refresh{margin-left:auto;font-size:12.5px;color:var(--muted);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:7px 12px;font-weight:600;display:flex;align-items:center;gap:7px}
.bhead .refresh:hover{border-color:var(--primary);color:var(--ink)}
.alert{display:flex;align-items:center;gap:13px;margin-top:20px;background:var(--danger-weak);border:1px solid color-mix(in oklch,var(--danger) 30%,transparent);border-radius:var(--r-lg);padding:13px 16px}
.alert .aic{font-size:20px;flex:none}
.alert .atx{flex:1;min-width:0;font-size:13.5px;line-height:1.45}
.alert .atx b{color:var(--danger-ink);font-weight:700}
.alert .atx small{display:block;color:var(--muted);font-size:12px;margin-top:1px}
.alert .abtn2{font-size:12.5px;font-weight:600;color:var(--danger-ink);background:var(--bg);border:1px solid color-mix(in oklch,var(--danger) 35%,transparent);border-radius:var(--r-sm);padding:7px 11px;white-space:nowrap}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px}
.kpi{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;box-shadow:var(--sh-1)}
.kpi .n{font-size:26px;font-weight:700;letter-spacing:-.02em}
.kpi .l{font-size:12.5px;color:var(--muted);margin-top:2px}
.kpi.k-urgent .n{color:var(--accent-ink)} .kpi.k-confirm .n{color:var(--warn-ink)} .kpi.k-live .n{color:var(--primary-text)}
.stsec{margin-top:26px}
.stsec .sh{display:flex;align-items:center;gap:9px;font-size:12.5px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--faint);padding:0 2px 10px}
.stsec .sh .dot{width:8px;height:8px;border-radius:50%;flex:none}
.stsec .sh .c{color:var(--faint);font-weight:600}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(288px,1fr));gap:12px}
.card{text-align:left;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);padding:15px 16px;transition:.15s;box-shadow:var(--sh-1);position:relative;display:flex;flex-direction:column;gap:9px}
.card:hover{transform:translateY(-2px);border-color:var(--primary);box-shadow:var(--sh-2)}
.card .top{display:flex;align-items:center;gap:8px}
.card .ref{font-family:var(--mono);font-size:11.5px;color:var(--faint);font-weight:600}
.card .badge{margin-left:auto;font-size:10.5px;font-weight:700;border-radius:var(--r-pill);padding:2px 9px;white-space:nowrap}
.b-urgent{background:var(--accent-weak);color:var(--accent-ink)}
.b-normal{background:var(--surface-2);color:var(--muted)}
.card .cli{font-size:15px;font-weight:600;letter-spacing:-.01em}
.card .desc{font-size:13px;color:var(--muted);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card .meta{display:flex;align-items:center;gap:8px;margin-top:2px;padding-top:10px;border-top:1px dashed var(--line)}
.card .loc{font-size:12px;color:var(--faint);display:flex;align-items:center;gap:4px}
.card .who2{margin-left:auto;display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-soft);font-weight:500}
.card .who2 .av{width:22px;height:22px;border-radius:50%;background:var(--primary-weak);color:var(--primary-text);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex:none}
.card .when{font-size:12px;color:var(--muted)}
.card.confirm{border-left:3px solid var(--warn-ink)}

/* Volet détail (écran scindé) */
.artpane{width:0;flex:none;overflow:hidden;background:var(--surface-2);border-left:1px solid var(--line);display:flex;flex-direction:column;transition:width .24s var(--ease)}
.app.split .artpane{width:min(46%,520px)}
.artpane-head{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line);background:var(--bg);flex:none}
.artpane-head .dot{width:9px;height:9px;flex:none;border-radius:50%}
.artpane-head b{font-family:var(--mono);font-size:13px}
.artpane-head .grow{flex:1}
.abtn{font-size:12.5px;color:var(--muted);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:6px 10px;white-space:nowrap;font-weight:600}
.abtn:hover{color:var(--ink);border-color:var(--muted)}
.artpane-body{flex:1;overflow-y:auto;padding:20px}
.d-cli{font-size:20px;font-weight:700;letter-spacing:-.01em}
.d-badges{display:flex;gap:7px;margin-top:9px;flex-wrap:wrap}
.pill{font-size:11px;font-weight:700;border-radius:var(--r-pill);padding:3px 10px}
.d-block{margin-top:20px}
.d-block .t{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-weight:700;margin-bottom:9px}
.d-row{display:flex;gap:10px;font-size:13.5px;padding:6px 0;border-bottom:1px solid var(--line)}
.d-row .k{color:var(--muted);width:120px;flex:none}
.d-row .v{color:var(--ink);font-weight:500}
.photos{display:flex;gap:8px;flex-wrap:wrap}
.photos .ph{width:74px;height:74px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--faint)}
.d-actions{position:sticky;bottom:0;background:linear-gradient(180deg,transparent,var(--surface-2) 30%);padding:16px 0 0;margin-top:24px;display:flex;flex-direction:column;gap:9px}
.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px;border-radius:var(--r-md);font-size:14px;font-weight:600;border:1px solid var(--line-strong);background:var(--bg);color:var(--ink);transition:.15s}
.btn:hover{border-color:var(--muted)}
.btn.primary{background:var(--primary);border-color:transparent;color:var(--primary-ink)}
.btn.primary:hover{background:var(--primary-hover)}
.btn.ghost{background:none}
.btn[disabled]{opacity:.55;cursor:default}

/* Login (overlay plein écran, façon Hub) */
.login{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:var(--glow),var(--surface-2);padding:24px}
.login-card{width:100%;max-width:360px;background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-lg);box-shadow:var(--sh-2);padding:28px 26px;text-align:center}
.login-card .mark{width:44px;height:44px;margin:0 auto 14px;border-radius:12px;background:var(--brandgrad);display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 6px 20px color-mix(in oklch,var(--primary) 45%,transparent)}
.login-card h1{font-size:19px;letter-spacing:-.01em}
.login-card p{color:var(--muted);font-size:13px;margin-top:6px}
.login-card input{width:100%;margin-top:18px;background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--r-md);color:var(--ink);padding:12px 14px;font-size:15px;outline:none}
.login-card input:focus{border-color:var(--primary)}
.login-card .btn{margin-top:12px}
.login-card .err{color:var(--danger-ink);font-size:12.5px;margin-top:10px;min-height:16px}

.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:var(--r-md);font-size:13.5px;font-weight:600;opacity:0;transition:.25s;box-shadow:var(--sh-2);z-index:120}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.scrim{display:none}

@media(max-width:900px){.kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){
  .mobar{display:flex}.theme-toggle{top:8px;right:10px}
  .side{position:fixed;top:0;left:0;height:100%;width:min(86vw,320px);transform:translateX(-100%);transition:transform .22s var(--ease);z-index:70;box-shadow:var(--sh-2)}
  .app.sidebar-open .side{transform:none}
  .scrim{position:fixed;inset:0;background:oklch(0.15 0.03 260 / 0.55);z-index:65}.app.sidebar-open .scrim{display:block}
  .board{padding:20px 16px 50px}.bhead .word{font-size:32px}
  .artpane{position:fixed;inset:0;width:100%!important;transform:translateX(100%);transition:transform .22s var(--ease);z-index:80;border-left:none}
  .app.split .artpane{transform:none;width:100%!important}
}
@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important}}
