/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* ALFRED — FONT FACES */
@font-face{font-family:'Geist Sans';src:url('/fonts/geist/GeistSans-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Geist Sans';src:url('/fonts/geist/GeistSans-Medium.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'Geist Sans';src:url('/fonts/geist/GeistSans-SemiBold.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Geist Sans';src:url('/fonts/geist/GeistSans-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'Geist Mono';src:url('/fonts/geist/GeistMono-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Geist Mono';src:url('/fonts/geist/GeistMono-Medium.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* ALFRED — DESIGN TOKENS */
:root{
	/* Typographie */
	--font-sans:'Geist Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
	--font-mono:'Geist Mono','Fira Code',monospace;

	/* Surfaces */
	--bg:#0f1117;
	--bg-card:#1a1d27;
	--bg-sidebar:#151720;
	--bg-hover:#252836;
	--bg-input:#13151d;
	--border:#2a2d3a;

	/* Texte */
	--text:#e4e4e7;
	--text-heading:#f4f4f5;
	--text-muted:#8b8d97;

	/* Accent — cyan/turquoise */
	--accent:#30ece8;
	--accent2:#e594a0;
	--accent-hover:#5ef2ef;
	--accent-subtle:rgba(48,236,232,0.15);

	/* Status */
	--green:#22c55e;
	--green-subtle:rgba(34,197,94,0.15);
	--orange:#f59e0b;
	--orange-subtle:rgba(245,158,11,0.15);
	--red:#ef4444;
	--red-subtle:rgba(239,68,68,0.15);
	--blue:#3b82f6;
	--blue-subtle:rgba(59,130,246,0.15);
	--purple:#a855f7;

	/* Ombres */
	--shadow-color:rgba(0,0,0,0.4);

	/* Layout */
	--radius:10px;
	--sidebar-w:240px
}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* ALFRED — LIGHT MODE */
[data-theme="light"]{
	--bg:#f5f5f7;
	--bg-card:#ffffff;
	--bg-sidebar:#ffffff;
	--bg-hover:#f0f0f2;
	--bg-input:#f0f0f2;
	--border:#e2e2e5;
	--text:#1a1a1a;
	--text-heading:#0a0a0a;
	--text-muted:#6b6b73;
	--accent:#0ea5e9;
	--accent2:#e594a0;
	--accent-hover:#0284c7;
	--accent-subtle:rgba(14,165,233,0.1);
	--green:#16a34a;
	--green-subtle:rgba(22,163,74,0.1);
	--orange:#d97706;
	--orange-subtle:rgba(217,119,6,0.1);
	--red:#dc2626;
	--red-subtle:rgba(220,38,38,0.1);
	--blue:#2563eb;
	--blue-subtle:rgba(37,99,235,0.1);
	--purple:#7c3aed;
	--shadow-color:rgba(0,0,0,0.08)
}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* GLOBAL RESET */
*{box-sizing:border-box}
body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
code,pre,kbd,.font-mono{font-family:var(--font-mono)}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* SIDEBAR — LAYOUT */
.alfred-sidebar{position:fixed;top:0;left:0;height:100vh;width:var(--sidebar-w);background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:40}
.alfred-sidebar__header{padding:1rem 1rem 0.75rem;border-bottom:1px solid var(--border)}
.alfred-sidebar__logo{text-decoration:none;display:flex;align-items:center;gap:0.925rem}
.alfred-sidebar__logo-circle{display:flex;align-items:center;justify-content:center;width:54px;height:54px;flex-shrink:0;padding:3px;background:var(--text);border-radius:50%}
.alfred-sidebar__logo-svg{width:100%;height:100%;color:var(--bg)}
.alfred-sidebar__logo-text{display:flex;flex-direction:column;color:var(--text-heading);line-height:1.1;position:relative;align-items:flex-start}
.alfred-sidebar__logo-text__title{font-size:1.5rem;font-weight:700;position:relative;}
.alfred-sidebar__logo-butterfly{width:14px;height:auto;position:absolute;top:5px;right:-9px;animation:butterfly-float 5s ease-in-out infinite}
.alfred-sidebar__logo-sub{font-size:0.7rem;font-weight:400;color:var(--text-muted);letter-spacing:0.03em;margin-top:0.125rem}
@keyframes butterfly-float{0%,100%{transform:translateY(0) scaleX(1)}25%{transform:translateY(-1px) scaleX(0.7)}50%{transform:translateY(0.5px) scaleX(1)}75%{transform:translateY(-0.5px) scaleX(0.75)}}
[data-theme="light"] .alfred-sidebar__logo-circle{background:var(--accent-subtle);border-radius:50%}
[data-theme="light"] .alfred-sidebar__logo-svg{color:var(--text-heading);border-radius:50%}

/* Sync zone — boutons [L][J] + statut en bas de sidebar */
.alfred-sidebar__sync-zone{padding:0.5rem 0.75rem;border-top:1px solid var(--border)}
.alfred-sidebar__sync-buttons{display:flex;gap:0.375rem;margin-bottom:0.375rem}
.alfred-sidebar__sync-btn{display:flex;align-items:center;justify-content:space-between;flex:1;height:30px;padding-inline:0.45rem;border-radius:0.375rem;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;font-size:0.6875rem;font-weight:700;font-family:var(--font-mono);transition:color 0.2s,background 0.2s,border-color 0.2s}
.alfred-sidebar__sync-btn > span{line-height:0}
.alfred-sidebar__sync-btn:hover{color:var(--accent);background:var(--bg-hover);border-color:var(--accent)}
.alfred-sidebar__sync-btn[data-state="syncing"] .alfred-sidebar__sync-icon{animation:spin 0.8s linear infinite}
.alfred-sidebar__sync-icon{display:flex;align-items:center}
@keyframes spin{to{transform:rotate(360deg)}}
.alfred-sidebar__nav{flex:1;overflow-y:auto;padding:1rem 0.75rem;}
.alfred-sidebar__nav::-webkit-scrollbar {
	display: none; /* Chrome, Safari */
}
.alfred-sidebar__section{margin-bottom:1.5rem}
.alfred-sidebar__section + .alfred-sidebar__section{border-top:1px var(--border) solid;padding-top:0.6rem;}
.alfred-sidebar__section-label{font-size:0.625rem;font-weight:600;text-transform:uppercase;letter-spacing:0.1em;color:var(--text-muted);padding:0 0.5rem;margin:0 0 0.5rem}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* SIDEBAR — NAV ITEMS */
.alfred-sidebar__nav-item{display:flex;align-items:center;gap:0.625rem;padding:0.5rem 0.75rem;border-radius:0.5rem;font-size:0.8125rem;color:var(--text-muted);text-decoration:none;transition:background 0.15s,color 0.15s}
.alfred-sidebar__nav-item + .alfred-sidebar__nav-item,
.alfred-sidebar__nav-item + .alfred-sidebar__nav-row{margin-top:0.375rem;}
.alfred-sidebar__nav-item:hover{background:var(--bg-hover);color:var(--text)}
.alfred-sidebar__nav-item[data-state="active"]{background:var(--accent-subtle);color:var(--accent);font-weight:500}
.alfred-sidebar__nav-icon{width:18px;height:18px;flex-shrink:0;opacity:0.7}
.alfred-sidebar__nav-item:hover .alfred-sidebar__nav-icon{opacity:1}
.alfred-sidebar__nav-item[data-state="active"] .alfred-sidebar__nav-icon{opacity:1}
.alfred-sidebar__nav-row{display:flex;gap:0.2rem;}
.alfred-sidebar__nav-row .alfred-sidebar__nav-item{flex:1}
.alfred-sidebar__nav-add{display:flex;align-items:center;justify-content:center;width:35px;border:none;background:var(--border);color:var(--text-muted);font-size:1rem;font-weight:600;cursor:pointer;border-radius:0.375rem;transition:all 0.15s;flex-shrink:0}
.alfred-sidebar__nav-add:hover{color:var(--accent);background:var(--bg-hover)}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* SIDEBAR — SYNC STATUS */
.alfred-sidebar__sync-status{display:flex;flex-direction:row;gap:0.125rem}
.alfred-sidebar__sync-status > span{display:block;text-align:center;flex:1}
.alfred-sidebar__sync-text{font-size:0.5625rem;color:var(--text-muted);margin:0;opacity:0.7;font-family:var(--font-mono)}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* SIDEBAR — USER FOOTER */
.alfred-sidebar__footer{padding:0.75rem;border-top:1px solid var(--border);position:relative}
.alfred-sidebar__user-trigger{display:flex;align-items:center;gap:0.625rem;width:100%;padding:0.5rem;border-radius:0.5rem;border:none;background:transparent;cursor:pointer;transition:background 0.15s;text-align:left;color:var(--text)}
.alfred-sidebar__user-trigger:hover{background:var(--bg-hover)}
.alfred-sidebar__avatar{width:2rem;height:2rem;border-radius:9999px;background:var(--accent-subtle);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:0.75rem;font-weight:700;flex-shrink:0}
.alfred-sidebar__user-info{min-width:0;flex:1}
.alfred-sidebar__user-name{font-size:0.8125rem;font-weight:500;color:var(--text);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alfred-sidebar__user-role{font-size:0.625rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.05em;margin:0}
.alfred-sidebar__chevron{width:16px;height:16px;color:var(--text-muted);transition:transform 0.2s;flex-shrink:0}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* SIDEBAR — USER POPOVER */
.alfred-sidebar__popover{position:absolute;bottom:100%;left:0.75rem;right:0.75rem;margin-bottom:0.5rem;background:var(--bg-card);border:1px solid var(--border);border-radius:0.5rem;padding:0.25rem;box-shadow:0 -4px 24px var(--shadow-color,rgba(0,0,0,0.4));z-index:50}
.alfred-sidebar__popover[data-state="closed"]{display:none}
.alfred-sidebar__popover[data-state="open"]{display:block}
.alfred-sidebar__popover-item{display:flex;align-items:center;gap:0.625rem;padding:0.5rem 0.75rem;border-radius:0.375rem;font-size:0.8125rem;color:var(--text-muted);text-decoration:none;transition:background 0.15s,color 0.15s;border:none;background:none;width:100%;cursor:pointer;text-align:left}
.alfred-sidebar__popover-item:hover{background:var(--bg-hover);color:var(--text)}
.alfred-sidebar__popover-item--danger:hover{color:var(--red)}
.alfred-sidebar__popover-icon{width:16px;height:16px;flex-shrink:0}
.alfred-sidebar__popover-separator{height:1px;background:var(--border);margin:0.25rem 0}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* LOGIN — page de connexion */
.login__logo{display:flex;justify-content:center;margin-bottom:1.25rem}
.login__logo-svg{width:100px;height:100px;color:var(--text-muted);background:var(--text);border-radius:50%;padding:4px}
.login__logo-svg path:first-child,.login__logo-svg path:nth-child(2),.login__logo-svg path:nth-child(3){fill:var(--bg)}
.login__title{font-size:2rem;font-weight:700;color:var(--text-heading);margin:0 0 0.25rem;position:relative;display:inline-block}
.login__title-butterfly{width:18px;height:auto;position:absolute;top:15px;right:-12px;animation:butterfly-float 5s ease-in-out infinite}
.login__subtitle{font-size:0.875rem;color:var(--text-muted);margin:0;letter-spacing:0.03em}
@keyframes butterfly-float{0%,100%{transform:translateY(0) scaleX(1)}25%{transform:translateY(-1px) scaleX(0.7)}50%{transform:translateY(0.5px) scaleX(1)}75%{transform:translateY(-0.5px) scaleX(0.75)}}

/* Body scroll lock — appliqué via JS quand un drawer/modal est ouvert */
body.alfred-scroll-locked{overflow:hidden}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* MAIN CONTENT */
.alfred-main{margin-left:var(--sidebar-w);min-height:100vh}
.alfred-main__inner{padding:2rem}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* PUSH OVERLAY — voile plein écran pour opérations longues
   (push Jira, sync Logipub manuelle, etc.). Monté dans <body>
   par AlfredPushOverlay.js. */
.alfred-push-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,0.8);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity 0.25s ease}
.alfred-push-overlay[data-state="open"]{opacity:1;pointer-events:auto}
.alfred-push-overlay__card{display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding:3rem 4rem;background:var(--bg-card);border:1px solid var(--border);border-radius:1rem;box-shadow:0 30px 80px rgba(0,0,0,0.6);transform:scale(0.88);transition:transform 0.35s cubic-bezier(0.34,1.56,0.64,1)}
.alfred-push-overlay[data-state="open"] .alfred-push-overlay__card{transform:scale(1)}
.alfred-push-overlay__icon{display:flex;align-items:center;justify-content:center;width:3.5rem;height:3.5rem}
.alfred-push-overlay__spinner{width:3rem;height:3rem;border:3px solid var(--border);border-top-color:var(--accent);border-radius:9999px;animation:alfred-overlay-spin 0.8s linear infinite}
.alfred-push-overlay__check{width:3rem;height:3rem;color:var(--green);animation:alfred-overlay-pop 0.4s cubic-bezier(0.34,1.56,0.64,1)}
.alfred-push-overlay__x{width:3rem;height:3rem;color:var(--red);animation:alfred-overlay-pop 0.4s cubic-bezier(0.34,1.56,0.64,1)}
.alfred-push-overlay__text{display:flex;flex-direction:column;gap:0.375rem;text-align:center;max-width:22rem}
.alfred-push-overlay__label{font-size:1.0625rem;font-weight:600;color:var(--text);line-height:1.3}
.alfred-push-overlay__sub{font-size:0.8125rem;color:var(--text-muted);line-height:1.4}

@keyframes alfred-overlay-spin{to{transform:rotate(360deg)}}
@keyframes alfred-overlay-pop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.15);opacity:1}100%{transform:scale(1);opacity:1}}

/* /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ */
/* LOADER INLINE — capsule spinner + message persona.
   Utilisable dans n'importe quel conteneur (drawer body,
   section, modale). Monté par AlfredLoader.inline(). */
.alfred-loader{display:flex;align-items:center;justify-content:center;padding:2rem 1rem;min-height:80px}
.alfred-loader__capsule{display:inline-flex;align-items:center;gap:0.75rem;padding:0.75rem 1.25rem;background:var(--bg-hover);border:1px solid var(--border);border-radius:9999px}
.alfred-loader__spinner{width:1.125rem;height:1.125rem;border:2px solid var(--border);border-top-color:var(--accent);border-radius:9999px;animation:alfred-overlay-spin 0.8s linear infinite;flex-shrink:0}
.alfred-loader__message{font-size:0.8125rem;color:var(--text-muted);font-weight:500}
