/* Nickel App v1.3 — DA Nickel Agency */
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap');
:root {
    --c-bg:#ffffff;--c-bg-alt:#fafafa;--c-bg-card:#ffffff;--c-bg-elevated:#f5f5f7;
    --c-text:#2d2d2d;--c-text-muted:#6b6b6b;--c-text-subtle:#767676;
    --c-accent:#FCBCCC;--c-accent-dark:#f5a0b5;--c-accent-text:#b0547a;--c-accent-hover:#f9adbf;
    --c-accent-glow:rgba(252,188,204,0.20);--c-accent-soft:rgba(252,188,204,0.12);
    --c-dark:#1a1a1a;--c-white:#ffffff;--c-border:rgba(0,0,0,0.07);--c-border-strong:rgba(0,0,0,0.12);--c-border-hover:rgba(0,0,0,0.14);
    --c-success:#34d399;--c-warning:#fbbf24;--c-error:#f87171;
    --f-display:'Outfit',sans-serif;--f-body:'Plus Jakarta Sans',sans-serif;
    --r-sm:6px;--r-md:10px;--r-lg:14px;--r-xl:20px;--r-2xl:28px;--r-full:999px;
    --shadow-sm:0 1px 4px rgba(0,0,0,0.06);--shadow-md:0 4px 16px rgba(0,0,0,0.06);--shadow-lg:0 8px 32px rgba(0,0,0,0.08);--shadow-pink:0 4px 24px rgba(252,188,204,0.30);
    --t-fast:150ms;--t-normal:300ms;--ease-out:cubic-bezier(0.25,0.46,0.45,0.94);
    --sidebar-w:260px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:15px;-webkit-font-smoothing:antialiased}
body{font-family:var(--f-body);color:var(--c-text);background:var(--c-bg-alt);line-height:1.6;min-height:100vh;overflow-x:hidden}
a{color:var(--c-accent-text);text-decoration:none;transition:color var(--t-fast)}a:hover{color:var(--c-accent-dark)}

/* Layout */
.app{display:flex;min-height:100vh;width:100%;overflow-x:hidden}
.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--c-white);border-right:1px solid var(--c-border);position:fixed;top:0;left:0;bottom:0;display:flex;flex-direction:column;z-index:50;transition:transform var(--t-normal) var(--ease-out)}
.sidebar__brand{height:64px;padding:0 24px;border-bottom:1px solid var(--c-border);display:flex;align-items:center}
.sidebar__brand img{height:28px;display:block}
.sidebar__nav{flex:1;padding:16px 12px;overflow-y:auto}
.sidebar__section{font-family:var(--f-display);font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--c-accent-text);padding:20px 12px 8px}
.sidebar__link{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:var(--r-lg);color:var(--c-text-muted);font-size:.875rem;font-weight:500;transition:all var(--t-fast);margin-bottom:2px}
.sidebar__link:hover{background:var(--c-bg-elevated);color:var(--c-dark)}
.sidebar__link.active{background:var(--c-accent-soft);color:var(--c-accent-text)}
.sidebar__link svg{width:20px;height:20px;flex-shrink:0;opacity:.45}
.sidebar__link:hover svg{opacity:.7}.sidebar__link.active svg{opacity:1;color:var(--c-accent-text)}
.sidebar__badge{margin-left:auto;background:var(--c-accent-dark);color:var(--c-white);font-size:11px;font-weight:700;padding:2px 8px;border-radius:var(--r-full)}
.sidebar__user{padding:16px 20px;border-top:1px solid var(--c-border);display:flex;align-items:center;gap:12px}
.sidebar__avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--c-accent),var(--c-accent-dark));color:var(--c-white);display:flex;align-items:center;justify-content:center;font-family:var(--f-display);font-weight:700;font-size:13px}
.sidebar__user-info{flex:1;min-width:0}
.sidebar__user-name{color:var(--c-dark);font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar__user-role{color:var(--c-text-muted);font-size:11px}
.sidebar__logout{color:var(--c-text-subtle);margin-left:auto;padding:4px;border-radius:var(--r-sm);transition:all var(--t-fast)}
.sidebar__logout:hover{color:var(--c-error);background:rgba(248,113,113,0.08)}

.main{flex:1;margin-left:var(--sidebar-w);min-width:0;max-width:100%}
.topbar{display:flex;align-items:center;justify-content:space-between;height:64px;padding:0 32px;background:var(--c-white);border-bottom:1px solid var(--c-border);position:sticky;top:0;z-index:40;gap:12px}
.topbar__left{display:flex;align-items:center;gap:12px;min-width:0}
.topbar__back{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--r-md);border:1px solid var(--c-border);color:var(--c-text-muted);transition:all var(--t-fast);background:transparent;cursor:pointer;flex-shrink:0}
.topbar__back:hover{border-color:var(--c-accent);color:var(--c-accent-text)}
.topbar__title{font-family:var(--f-display);font-size:20px;font-weight:700;color:var(--c-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar__actions{display:flex;gap:10px;align-items:center;flex-shrink:0}
.content{padding:32px;max-width:100%;overflow-x:hidden}
.menu-btn{display:none;background:none;border:none;cursor:pointer;padding:6px;color:var(--c-dark)}
.overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.3);z-index:45}.overlay.show{display:block}

/* Cards */
.card{background:var(--c-bg-card);border-radius:var(--r-xl);border:1px solid var(--c-border);padding:24px;transition:box-shadow var(--t-normal);overflow:hidden}
.card:hover{box-shadow:var(--shadow-sm)}
.card--stat{text-align:center;padding:28px 16px}
.card--stat .stat__icon{width:44px;height:44px;border-radius:var(--r-lg);display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
.card--stat .stat__value{font-family:var(--f-display);font-size:32px;font-weight:800;color:var(--c-dark);line-height:1}
.card--stat .stat__label{font-size:13px;color:var(--c-text-muted);margin-top:6px}
.card__title{font-family:var(--f-display);font-size:16px;font-weight:700;margin-bottom:16px;color:var(--c-dark)}

/* Grid */
.grid{display:grid;gap:20px}
.grid--2{grid-template-columns:repeat(2,1fr)}
.grid--3{grid-template-columns:repeat(3,1fr)}
.grid--4{grid-template-columns:repeat(4,1fr)}
.grid--stats{grid-template-columns:repeat(2,1fr)}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;font-family:var(--f-body);font-size:.875rem;font-weight:600;border:1px solid transparent;border-radius:var(--r-full);cursor:pointer;transition:all var(--t-normal) var(--ease-out);text-decoration:none;white-space:nowrap;line-height:1}
.btn--primary{background:var(--c-dark);color:var(--c-white);border-color:var(--c-dark)}.btn--primary:hover{background:#333;transform:translateY(-1px);box-shadow:var(--shadow-md);color:var(--c-white)}
.btn--pink{background:var(--c-accent);color:var(--c-dark);border-color:var(--c-accent)}.btn--pink:hover{background:var(--c-accent-hover);transform:translateY(-1px);box-shadow:var(--shadow-pink)}
.btn--outline{background:transparent;color:var(--c-dark);border-color:var(--c-border-hover)}.btn--outline:hover{border-color:var(--c-dark);background:var(--c-bg-alt)}
.btn--accent{background:var(--c-accent-soft);color:var(--c-accent-text)}.btn--accent:hover{background:var(--c-accent-glow)}
.btn--danger{background:rgba(248,113,113,0.08);color:#dc2626}.btn--danger:hover{background:#fecaca}
.btn--sm{padding:8px 18px;font-size:.75rem}.btn--full{width:100%}.btn svg{width:16px;height:16px}

/* Tabs */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:20px}
.tabs--mobile{display:none;margin-bottom:20px}
.tab{display:inline-flex;align-items:center;padding:8px 18px;border-radius:var(--r-full);font-size:.8125rem;font-weight:600;color:var(--c-text-muted);background:var(--c-bg-elevated);border:1px solid var(--c-border);transition:all var(--t-fast);text-decoration:none}
.tab:hover{border-color:var(--c-accent);color:var(--c-accent-text);background:var(--c-accent-soft)}
.tab.active{background:var(--c-dark);color:var(--c-white);border-color:var(--c-dark)}

/* Table */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.card .table-wrap{margin:0 -24px;padding:0 24px}
table{width:100%;border-collapse:collapse;min-width:480px}
th{font-family:var(--f-display);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--c-text-muted);text-align:left;padding:12px 14px;border-bottom:1px solid var(--c-border-strong);white-space:nowrap}
td{padding:14px;border-bottom:1px solid var(--c-border);font-size:.875rem;vertical-align:middle}
tr:hover td{background:var(--c-bg-alt)}tr:last-child td{border-bottom:none}
td:last-child{padding-right:20px}
th:last-child{padding-right:20px}

/* Badge */
.badge{display:inline-flex;align-items:center;padding:3px 12px;border-radius:var(--r-full);font-size:12px;font-weight:600;white-space:nowrap}
.badge--success{background:#ecfdf5;color:#059669}.badge--warning{background:#fffbeb;color:#d97706}.badge--error{background:#fef2f2;color:#dc2626}
.badge--accent{background:var(--c-accent-soft);color:var(--c-accent-text)}.badge--muted{background:var(--c-bg-elevated);color:var(--c-text-muted)}

/* Forms */
.form-group{margin-bottom:20px}
.form-label{display:block;font-size:.875rem;font-weight:500;color:var(--c-dark);margin-bottom:.5rem}
.form-input,.form-textarea,.form-select{width:100%;padding:14px 1.5rem;background:var(--c-white);border:1px solid var(--c-border);border-radius:var(--r-lg);color:var(--c-text);font-size:1rem;font-family:var(--f-body);transition:border-color var(--t-fast),box-shadow var(--t-fast)}
.form-input:focus,.form-textarea:focus,.form-select:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-glow)}
.form-input::placeholder,.form-textarea::placeholder{color:var(--c-text-subtle)}
.form-textarea{resize:vertical;min-height:100px}
.form-select{appearance:none;-webkit-appearance:none;padding-right:44px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%236b6b6b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-check{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;cursor:pointer}
.form-check input[type="checkbox"]{width:18px;height:18px;accent-color:var(--c-accent-dark)}

/* Flash */
.flash{padding:14px 20px;border-radius:var(--r-lg);margin-bottom:20px;font-size:.875rem;font-weight:500}
.flash--success{background:#ecfdf5;color:#059669;border:1px solid #a7f3d0}
.flash--error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}

/* Progress */
.progress{height:8px;background:var(--c-bg-elevated);border-radius:var(--r-full);overflow:hidden}
.progress__bar{height:100%;border-radius:var(--r-full);background:linear-gradient(90deg,var(--c-accent),var(--c-accent-text));transition:width .5s var(--ease-out)}

/* Stages */
.stage{display:flex;align-items:center;gap:12px;padding:12px 16px;border:1px solid var(--c-border);border-radius:var(--r-lg);margin-bottom:8px;transition:all var(--t-fast)}
.stage:hover{border-color:var(--c-accent)}.stage.completed{background:#ecfdf5;border-color:#a7f3d0}
.stage__check{width:22px;height:22px;border-radius:50%;border:2px solid var(--c-border-strong);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;background:none;transition:all var(--t-fast)}
.stage.completed .stage__check{background:#059669;border-color:#059669;color:var(--c-white)}
.stage__name{flex:1;font-size:.875rem;font-weight:500;min-width:0}.stage.completed .stage__name{text-decoration:line-through;color:var(--c-text-muted)}
.stage__actions{display:flex;gap:4px;flex-shrink:0}

/* Empty */
.empty{text-align:center;padding:48px 20px;color:var(--c-text-muted)}
.empty__icon{font-size:48px;margin-bottom:12px;opacity:.3}
.empty__title{font-family:var(--f-display);font-size:18px;font-weight:600;color:var(--c-dark);margin-bottom:4px}

/* Avatar */
.avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--c-accent),var(--c-accent-text));color:var(--c-white);display:inline-flex;align-items:center;justify-content:center;font-family:var(--f-display);font-weight:700;font-size:13px;flex-shrink:0}

/* File card */
.file-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--c-border);border-radius:var(--r-lg);margin-bottom:8px;transition:all var(--t-fast)}
.file-card:hover{border-color:var(--c-accent)}
.file-card__icon{width:40px;height:40px;border-radius:var(--r-md);background:var(--c-bg-elevated);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.file-card__info{flex:1;min-width:0}
.file-card__name{font-size:.875rem;font-weight:600;color:var(--c-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.file-card__meta{font-size:12px;color:var(--c-text-muted)}

/* Modal */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,0.35);z-index:100;display:none;align-items:center;justify-content:center;padding:20px}
.modal-bg.open{display:flex}
.modal{background:var(--c-white);border-radius:var(--r-2xl);padding:32px;max-width:500px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-lg)}
.modal__title{font-family:var(--f-display);font-size:20px;font-weight:700;margin-bottom:20px}

/* Msg card */
.msg-card{padding:16px;border:1px solid var(--c-border);border-radius:var(--r-lg);margin-bottom:10px;transition:all var(--t-fast)}
.msg-card:hover{border-color:var(--c-accent)}
.msg-card--unread{border-left:3px solid var(--c-accent-dark);background:var(--c-accent-soft)}

/* View switch */
.view-switch{position:fixed;bottom:24px;right:24px;z-index:200;display:flex;align-items:center;gap:10px;background:var(--c-dark);color:var(--c-white);padding:12px 20px;border-radius:var(--r-full);box-shadow:var(--shadow-lg);font-size:.875rem;font-weight:600;text-decoration:none;transition:all var(--t-normal)}
.view-switch:hover{background:#333;transform:translateY(-2px);color:var(--c-white)}
.view-switch__dot{width:8px;height:8px;border-radius:50%;background:var(--c-accent);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}

/* Login */
.login-page{min-height:100vh;max-height:100vh;display:flex;overflow:hidden}
.login-left{flex:1;background:var(--c-bg-alt);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px;border-right:1px solid var(--c-border)}
.login-left__tagline{color:var(--c-text-muted);font-size:16px;margin-top:12px}
.login-right{width:480px;display:flex;align-items:center;justify-content:center;padding:48px;background:var(--c-white)}
.login-card{width:100%;max-width:380px}
.login-card h2{font-family:var(--f-display);font-size:24px;font-weight:700;margin-bottom:8px}
.login-card p{color:var(--c-text-muted);margin-bottom:32px}

/* Responsive */
@media(max-width:1024px){.grid--4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:768px){
    .sidebar{transform:translateX(-100%);box-shadow:none}
    .sidebar.open{transform:translateX(0);box-shadow:var(--shadow-lg)}
    .main{margin-left:0}
    .menu-btn{display:flex}
    .content{padding:16px}
    .topbar{height:56px;padding:0 16px}
    .topbar__title{font-size:16px}
    .topbar__actions{gap:6px}
    .grid--2,.grid--3{grid-template-columns:1fr}
    .grid--4,.grid--stats{grid-template-columns:repeat(2,1fr);gap:12px}
    .form-row{grid-template-columns:1fr}
    .card{padding:16px;border-radius:var(--r-lg)}
    .card--stat{padding:16px 12px}
    .card--stat .stat__value{font-size:24px}
    .card--stat .stat__icon{width:36px;height:36px;margin-bottom:10px}
    .stage{padding:10px 12px;gap:10px}
    .file-card{padding:10px 12px;gap:10px;flex-wrap:wrap}
    .table-wrap{margin:0 -16px;padding:0 16px}
    .card .table-wrap{margin:0 -16px;padding:0 16px}
    table{min-width:380px}
    th,td{padding:10px 8px;font-size:13px}
    .view-switch{bottom:16px;right:16px;padding:10px 16px;font-size:.75rem}
    .login-page{flex-direction:column;max-height:100svh;min-height:100svh}
    .login-left{flex:0 0 auto;min-height:auto;padding:24px;border-right:none;border-bottom:1px solid var(--c-border)}
    .login-left img{height:32px!important}
    .login-left__tagline{font-size:13px;margin-top:6px}
    .login-right{width:100%;flex:1;padding:24px;align-items:center;justify-content:center}
    .login-card h2{font-size:20px}
    .login-card p{margin-bottom:20px;font-size:14px}
    .login-card .form-input{padding:12px 16px}
    .login-card .btn{padding:12px}
    .modal{padding:24px;margin:12px}
    .empty{padding:32px 16px}
    .tabs--desktop{display:none}
    .tabs--mobile{display:block}
    /* PWA mobile — safe areas pour iPhone notch */
    .topbar{padding-left:max(16px, env(safe-area-inset-left));padding-right:max(16px, env(safe-area-inset-right))}
    .content{padding-left:max(16px, env(safe-area-inset-left));padding-right:max(16px, env(safe-area-inset-right));padding-bottom:max(16px, env(safe-area-inset-bottom))}
    .sidebar__user{padding-bottom:max(16px, env(safe-area-inset-bottom))}
    /* Boutons plus gros pour tactile */
    .btn{padding:12px 20px;font-size:.875rem;min-height:44px}
    .btn--sm{padding:10px 16px;font-size:.8rem;min-height:40px}
    .sidebar__link{padding:12px 14px;min-height:44px}
    /* Tracker flottant en bas — espace safe area */
    .tracker-float{bottom:max(28px, calc(env(safe-area-inset-bottom) + 12px));right:max(16px, env(safe-area-inset-right))}
    .view-switch{bottom:max(16px, calc(env(safe-area-inset-bottom) + 8px))}
    /* Messages split → stack */
    .msg-split{flex-direction:column!important}
    .msg-split>*{width:100%!important;min-width:0!important}
    /* Avatar plus petit mobile */
    .avatar{width:32px;height:32px;font-size:12px}
    /* Badges wrap */
    .badge{font-size:11px;padding:2px 10px}
}
@media(max-width:380px){
    .grid--stats{gap:8px}
    .card--stat{padding:14px 8px}
    .card--stat .stat__value{font-size:20px}
    .card--stat .stat__label{font-size:11px}
    .content{padding:12px}
    .topbar__title{font-size:14px;max-width:140px}
    .coins-badge{padding:4px 10px;font-size:.75rem}
    .tracker-btn{padding:6px 10px;font-size:.75rem}
}

/* PWA standalone — viewport padding for notch */
@supports(padding: max(0px)){
    body{
        padding-top:env(safe-area-inset-top);
    }
}

/* Prevent text selection on interactive elements in PWA */
@media(display-mode: standalone){
    .sidebar__link,.btn,.tab,.badge,.tracker-btn,.coins-badge{
        -webkit-user-select:none;user-select:none;
        -webkit-touch-callout:none;
    }
    /* Prevent pull-to-refresh on iOS */
    body{overscroll-behavior-y:contain}
}

/* ═══════════════════════════════════════════
   CALENDRIER ÉDITORIAL — Nickel App v1.11
═══════════════════════════════════════════ */

/* Layout calendrier */
.cal-wrapper{display:flex;gap:0;height:calc(100vh - 64px);overflow:hidden}
.cal-tools{width:200px;min-width:200px;background:var(--c-white);border-right:1px solid var(--c-border);padding:20px 14px;overflow-y:auto;flex-shrink:0}
.cal-tools__title{font-family:var(--f-display);font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--c-text-muted);margin-bottom:10px;padding:0 4px}
.cal-tools__sep{height:1px;background:var(--c-border);margin:16px 0}
.cal-area{flex:1;overflow:auto;padding:24px 28px}

/* Étiquettes draggables */
.drag-label{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:var(--r-lg);border:1.5px solid transparent;font-size:.8rem;font-weight:600;cursor:grab;margin-bottom:6px;transition:all var(--t-fast);user-select:none;background:var(--c-bg-alt)}
.drag-label:hover{transform:translateX(2px);box-shadow:var(--shadow-sm)}
.drag-label:active{cursor:grabbing;opacity:.8}
.drag-label__icon{font-size:15px;flex-shrink:0}
.drag-label--tournage{border-color:rgba(59,130,246,.25);color:#1d4ed8;background:rgba(59,130,246,.06)}
.drag-label--montage{border-color:rgba(139,92,246,.25);color:#6d28d9;background:rgba(139,92,246,.06)}
.drag-label--copywriting{border-color:rgba(245,158,11,.25);color:#b45309;background:rgba(245,158,11,.06)}
.drag-label--post_organique{border-color:rgba(16,185,129,.25);color:#065f46;background:rgba(16,185,129,.06)}
.drag-label--campagne_ads{border-color:rgba(239,68,68,.25);color:#b91c1c;background:rgba(239,68,68,.06)}
.drag-label--organique_ads{border-color:rgba(176,84,122,.3);color:var(--c-accent-text);background:var(--c-accent-soft)}

/* Navigation mois */
.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.cal-nav__title{font-family:var(--f-display);font-size:22px;font-weight:800;color:var(--c-dark)}
.cal-nav__btns{display:flex;gap:6px;align-items:center}
.cal-filter{display:flex;gap:8px;align-items:center;margin-bottom:18px;flex-wrap:wrap}
.cal-filter__label{font-size:12px;font-weight:600;color:var(--c-text-muted)}

/* Grille */
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--c-border);border-left:1px solid var(--c-border)}
.cal-grid__header{background:var(--c-bg-alt);padding:8px 0;text-align:center;font-family:var(--f-display);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--c-text-muted);border-right:1px solid var(--c-border);border-bottom:1px solid var(--c-border)}
.cal-cell{min-height:110px;border-right:1px solid var(--c-border);border-bottom:1px solid var(--c-border);padding:6px;position:relative;transition:background var(--t-fast);vertical-align:top}
.cal-cell--empty{background:var(--c-bg-alt);opacity:.5}
.cal-cell--today{background:rgba(252,188,204,.08)}
.cal-cell--today .cal-cell__day{color:var(--c-accent-text);font-weight:800}
.cal-cell.drag-over{background:var(--c-accent-soft);outline:2px dashed var(--c-accent-dark);outline-offset:-2px}
.cal-cell__day{font-family:var(--f-display);font-size:13px;font-weight:600;color:var(--c-text-muted);margin-bottom:4px;display:inline-block;width:24px;height:24px;line-height:24px;text-align:center;border-radius:50%}

/* Chips de cartes */
.cal-chip{display:flex;align-items:center;gap:5px;padding:3px 7px;border-radius:var(--r-sm);margin-bottom:3px;font-size:.7rem;font-weight:600;cursor:pointer;transition:all var(--t-fast);border:1px solid transparent;max-width:100%;overflow:hidden}
.cal-chip:hover{transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,.1)}
.cal-chip__icon{font-size:11px;flex-shrink:0}
.cal-chip__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-chip__status{margin-left:auto;width:6px;height:6px;border-radius:50%;flex-shrink:0}

/* Couleurs chips par type */
.cal-chip--tournage{background:rgba(59,130,246,.12);color:#1d4ed8;border-color:rgba(59,130,246,.2)}
.cal-chip--montage{background:rgba(139,92,246,.12);color:#6d28d9;border-color:rgba(139,92,246,.2)}
.cal-chip--copywriting{background:rgba(245,158,11,.12);color:#b45309;border-color:rgba(245,158,11,.2)}
.cal-chip--post_organique{background:rgba(16,185,129,.12);color:#065f46;border-color:rgba(16,185,129,.2)}
.cal-chip--campagne_ads{background:rgba(239,68,68,.12);color:#b91c1c;border-color:rgba(239,68,68,.2)}
.cal-chip--organique_ads{background:var(--c-accent-soft);color:var(--c-accent-text);border-color:rgba(176,84,122,.2)}
/* Chips production en ghost côté client */
.cal-chip--ghost{background:var(--c-bg-elevated);color:var(--c-text-muted);border-color:var(--c-border);cursor:default;opacity:.7}
.cal-chip--ghost:hover{transform:none;box-shadow:none}

/* Dot statut dans chip */
.status-dot--draft{background:var(--c-text-muted)}
.status-dot--in_progress,.status-dot--pending_validation{background:var(--c-warning)}
.status-dot--done,.status-dot--validated{background:var(--c-success)}
.status-dot--revision_requested{background:var(--c-error)}

/* Modale carte — plus large */
.card-modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:200;display:none;align-items:flex-start;justify-content:center;padding:40px 20px;overflow-y:auto}
.card-modal-bg.open{display:flex}
.card-modal{background:var(--c-white);border-radius:var(--r-2xl);padding:0;max-width:680px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.12);position:relative;animation:modalSlide .2s var(--ease-out)}
@keyframes modalSlide{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
.card-modal__header{padding:24px 28px 20px;border-bottom:1px solid var(--c-border);display:flex;align-items:center;gap:12px}
.card-modal__type-badge{width:36px;height:36px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.card-modal__titles{flex:1;min-width:0}
.card-modal__name{font-family:var(--f-display);font-size:18px;font-weight:700}
.card-modal__meta{font-size:12px;color:var(--c-text-muted);margin-top:2px}
.card-modal__close{width:32px;height:32px;border-radius:var(--r-md);border:1px solid var(--c-border);background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--c-text-muted);transition:all var(--t-fast);flex-shrink:0}
.card-modal__close:hover{border-color:var(--c-error);color:var(--c-error)}
.card-modal__body{padding:24px 28px}
.card-modal__footer{padding:16px 28px 24px;display:flex;gap:10px;justify-content:flex-end;border-top:1px solid var(--c-border)}

/* Statut selector */
.status-selector{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:4px}
.status-btn{padding:6px 14px;border-radius:var(--r-full);font-size:.75rem;font-weight:600;border:1.5px solid transparent;cursor:pointer;transition:all var(--t-fast);background:var(--c-bg-elevated);color:var(--c-text-muted)}
.status-btn.active--draft{background:var(--c-bg-elevated);border-color:var(--c-border-strong);color:var(--c-text)}
.status-btn.active--in_progress,.status-btn.active--pending_validation{background:#fffbeb;border-color:var(--c-warning);color:#b45309}
.status-btn.active--done,.status-btn.active--validated{background:#ecfdf5;border-color:var(--c-success);color:#059669}
.status-btn.active--revision_requested{background:#fef2f2;border-color:var(--c-error);color:#dc2626}

/* Section labels in modal */
.modal-section{margin-bottom:20px}
.modal-section__label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--c-accent-text);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--c-accent-soft)}

/* Checklist */
.checklist-item{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--c-border)}
.checklist-item:last-child{border-bottom:none}
.checklist-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--c-accent-text)}
.checklist-item input[type=text]{flex:1;border:none;outline:none;font-family:var(--f-body);font-size:.875rem;color:var(--c-text);background:transparent}
.checklist-item input[type=text]:focus{color:var(--c-dark)}
.checklist-add{display:flex;align-items:center;gap:8px;padding:8px 0;color:var(--c-text-muted);font-size:.8rem;cursor:pointer;transition:color var(--t-fast)}
.checklist-add:hover{color:var(--c-accent-text)}

/* Network checkboxes */
.network-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.network-check{display:flex;align-items:center;gap:8px;padding:10px 14px;border:1.5px solid var(--c-border);border-radius:var(--r-lg);font-size:.8rem;font-weight:600;cursor:pointer;transition:all var(--t-fast)}
.network-check:has(input:checked){border-color:var(--c-accent-dark);background:var(--c-accent-soft);color:var(--c-accent-text)}
.network-check input{width:15px;height:15px;accent-color:var(--c-accent-text)}

/* Format checkboxes */
.format-grid{display:flex;gap:8px}
.format-check{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 8px;border:1.5px solid var(--c-border);border-radius:var(--r-lg);font-size:.7rem;font-weight:700;cursor:pointer;transition:all var(--t-fast);text-align:center}
.format-check:has(input:checked){border-color:var(--c-accent-dark);background:var(--c-accent-soft);color:var(--c-accent-text)}
.format-check input{accent-color:var(--c-accent-text)}
.format-check__icon{font-size:18px}

/* Commentaires */
.comments-area{margin-top:20px;padding-top:20px;border-top:1px solid var(--c-border)}
.comment-item{display:flex;gap:10px;margin-bottom:14px}
.comment-item__avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--c-accent),var(--c-accent-dark));color:var(--c-white);display:flex;align-items:center;justify-content:center;font-family:var(--f-display);font-weight:700;font-size:11px;flex-shrink:0}
.comment-item__bubble{flex:1;min-width:0}
.comment-item__meta{font-size:11px;color:var(--c-text-muted);margin-bottom:4px}
.comment-item__body{font-size:.875rem;background:var(--c-bg-elevated);padding:10px 14px;border-radius:var(--r-lg);line-height:1.6}

/* Validation buttons */
.validation-bar{display:flex;gap:8px;padding:14px;background:var(--c-bg-alt);border-radius:var(--r-lg);margin-top:16px}

/* Rich text area simple */
.richtext{width:100%;min-height:140px;padding:14px;border:1px solid var(--c-border);border-radius:var(--r-lg);font-family:var(--f-body);font-size:.875rem;color:var(--c-text);resize:vertical;line-height:1.7;transition:border-color var(--t-fast)}
.richtext:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-glow)}
.char-counter{font-size:11px;color:var(--c-text-muted);text-align:right;margin-top:4px}

/* Section fusion organique+ads */
.modal-fusion-sep{display:flex;align-items:center;gap:12px;margin:24px 0}
.modal-fusion-sep::before,.modal-fusion-sep::after{content:'';flex:1;height:1px;background:var(--c-border)}
.modal-fusion-sep span{font-size:.7rem;font-weight:700;color:var(--c-text-muted);text-transform:uppercase;letter-spacing:.08em;padding:4px 12px;background:var(--c-bg-elevated);border-radius:var(--r-full)}

/* Client calendar — lecture seule */
.cal-chip--readonly{cursor:default}
.cal-chip--readonly:hover{transform:none;box-shadow:none}

/* Calendriers list */
.cal-list-card{border:1px solid var(--c-border);border-radius:var(--r-xl);padding:20px 24px;transition:all var(--t-fast);background:var(--c-white);display:flex;align-items:center;gap:16px}
.cal-list-card:hover{border-color:var(--c-accent);box-shadow:var(--shadow-sm)}
.cal-list-card__icon{width:44px;height:44px;border-radius:var(--r-lg);background:var(--c-accent-soft);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}

/* Responsive calendar */
@media(max-width:768px){
    .cal-tools{display:none}
    .cal-area{padding:12px}
    .cal-chip{font-size:.65rem;padding:2px 5px}
    .cal-cell{min-height:70px;padding:4px}
    .card-modal{margin:0}
    .card-modal-bg{padding:0;align-items:flex-end}
    .card-modal{border-radius:var(--r-2xl) var(--r-2xl) 0 0}
}

/* Calendrier — override content padding */
.content--calendar{padding:0;overflow:hidden;height:calc(100vh - 64px)}

/* ═══════════════════════════════════════
   TIME TRACKER WIDGET
═══════════════════════════════════════ */
.tracker-widget{display:flex;align-items:center;gap:8px;flex-shrink:0}
.tracker-btn{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border-radius:var(--r-full);font-size:.8rem;font-weight:700;border:1.5px solid var(--c-border);background:var(--c-white);cursor:pointer;transition:all var(--t-fast);color:var(--c-text-muted);font-family:var(--f-body)}
.tracker-btn:hover{border-color:var(--c-dark);color:var(--c-dark)}
.tracker-btn--running{border-color:#ef4444;background:#fef2f2;color:#dc2626;animation:trackerPulse 2s infinite}
@keyframes trackerPulse{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,.3)}50%{box-shadow:0 0 0 6px rgba(239,68,68,0)}}
.tracker-dot{width:8px;height:8px;border-radius:50%;background:#ef4444;flex-shrink:0}
.tracker-dot--idle{background:var(--c-text-muted)}
.tracker-time{font-family:var(--f-display);font-size:.85rem;letter-spacing:.04em;min-width:52px}

/* Popover tracker */
.tracker-popover{position:absolute;top:calc(100% + 10px);right:0;width:300px;background:var(--c-white);border-radius:var(--r-xl);box-shadow:0 8px 32px rgba(0,0,0,.12);border:1px solid var(--c-border);z-index:300;display:none;padding:20px}
.tracker-popover.open{display:block}
.tracker-popover__title{font-family:var(--f-display);font-size:15px;font-weight:700;margin-bottom:16px;color:var(--c-dark)}

/* Corbeille drag & drop */
.cal-trash{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(20px);background:#fef2f2;border:2px dashed #f87171;border-radius:var(--r-xl);padding:14px 28px;display:none;align-items:center;gap:10px;font-size:.85rem;font-weight:600;color:#dc2626;z-index:500;transition:all .2s var(--ease-out);opacity:0}
.cal-trash.visible{display:flex;opacity:1;transform:translateX(-50%) translateY(0)}
.cal-trash.drag-over{background:#fee2e2;border-style:solid;transform:translateX(-50%) translateY(0) scale(1.05)}
.cal-trash__icon{font-size:20px;transition:transform .2s}
.cal-trash.drag-over .cal-trash__icon{transform:scale(1.2)}

/* Chip animation suppression */
@keyframes chipDelete{0%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.1) rotate(3deg)}100%{opacity:0;transform:scale(0) rotate(-5deg)}}
.cal-chip--deleting{animation:chipDelete .35s var(--ease-out) forwards;pointer-events:none}

/* Badge live client */
.live-badge{display:flex;align-items:center;gap:8px;padding:12px 16px;background:linear-gradient(135deg,rgba(52,211,153,.08),rgba(16,185,129,.05));border:1px solid rgba(52,211,153,.25);border-radius:var(--r-lg);margin-bottom:16px;font-size:.875rem;color:#065f46;font-weight:500}
.live-badge__dot{width:8px;height:8px;border-radius:50%;background:#10b981;flex-shrink:0;animation:pulse 2s infinite}

/* Section temps sur page projet */
.time-entry-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--c-border);font-size:.875rem}
.time-entry-row:last-child{border-bottom:none}
.time-entry-row__user{font-weight:600;min-width:0;flex:1}
.time-entry-row__duration{font-family:var(--f-display);font-weight:700;color:var(--c-dark);flex-shrink:0}
.time-entry-row__desc{color:var(--c-text-muted);font-size:.8rem;margin-top:2px}

/* Rapport facturation */
.report-stat{text-align:center;padding:20px;border:1px solid var(--c-border);border-radius:var(--r-xl);background:var(--c-white)}
.report-stat__value{font-family:var(--f-display);font-size:28px;font-weight:800;color:var(--c-dark)}
.report-stat__label{font-size:12px;color:var(--c-text-muted);margin-top:4px}

/* Étiquette envoi_validation */
.drag-label--envoi_validation{border-color:rgba(252,188,204,.5);color:var(--c-accent-text);background:var(--c-accent-soft)}
.cal-chip--envoi_validation{background:var(--c-accent-soft);color:var(--c-accent-text);border-color:rgba(176,84,122,.2)}

/* Chrono flottant (overlay toutes pages) */
.tracker-float{position:fixed;bottom:28px;right:24px;z-index:400;display:none;flex-direction:column;align-items:flex-end;gap:8px}
.tracker-float.active{display:flex}
.tracker-float__pill{display:flex;align-items:center;gap:8px;background:var(--c-dark);color:var(--c-white);padding:10px 16px;border-radius:var(--r-full);box-shadow:0 4px 20px rgba(0,0,0,.2);font-family:var(--f-display);font-size:.875rem;font-weight:700;cursor:pointer;transition:all var(--t-fast)}
.tracker-float__pill:hover{background:#333;transform:translateY(-2px)}
.tracker-float__dot{width:8px;height:8px;border-radius:50%;background:#ef4444;animation:pulse 1.5s infinite;flex-shrink:0}
.tracker-float__dot--paused{background:var(--c-warning);animation:none}
.tracker-float__actions{display:flex;gap:6px}
.tracker-float__btn{width:34px;height:34px;border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all var(--t-fast);box-shadow:var(--shadow-sm)}
.tracker-float__btn--pause{background:var(--c-white);color:var(--c-dark)}
.tracker-float__btn--pause:hover{background:var(--c-bg-elevated)}
.tracker-float__btn--stop{background:#ef4444;color:var(--c-white)}
.tracker-float__btn--stop:hover{background:#dc2626}

/* ── Statuts binaires ── */
.status-dot--en_attente{background:var(--c-warning)}
.status-dot--termine{background:var(--c-success)}
.status-btn.active--en_attente{background:#fffbeb;border-color:var(--c-warning);color:#b45309}
.status-btn.active--termine{background:#ecfdf5;border-color:var(--c-success);color:#059669}

/* ── Chips calendrier — couleurs refondues ── */
/* Production : tons froids/pastel */
.cal-chip--tournage{background:rgba(99,102,241,.10);color:#4338ca;border-color:rgba(99,102,241,.22)}
.cal-chip--envoi_validation{background:rgba(148,163,184,.13);color:#475569;border-color:rgba(148,163,184,.3)}
/* Diffusion : tons chauds/prononcés */
.cal-chip--post_organique{background:rgba(245,158,11,.13);color:#b45309;border-color:rgba(245,158,11,.28)}
.cal-chip--campagne_ads{background:rgba(239,68,68,.13);color:#b91c1c;border-color:rgba(239,68,68,.25)}
.cal-chip--organique_ads{background:rgba(236,72,153,.12);color:#be185d;border-color:rgba(236,72,153,.25)}

/* Drag labels idem */
.drag-label--tournage{border-color:rgba(99,102,241,.3);color:#4338ca;background:rgba(99,102,241,.07)}
.drag-label--envoi_validation{border-color:rgba(148,163,184,.4);color:#475569;background:rgba(148,163,184,.08)}
.drag-label--post_organique{border-color:rgba(245,158,11,.3);color:#b45309;background:rgba(245,158,11,.07)}
.drag-label--campagne_ads{border-color:rgba(239,68,68,.25);color:#b91c1c;background:rgba(239,68,68,.06)}
.drag-label--organique_ads{border-color:rgba(236,72,153,.25);color:#be185d;background:rgba(236,72,153,.06)}

/* ── Nickel Coins Badge (topbar) ── */
.coins-badge{display:flex;align-items:center;gap:6px;background:var(--c-accent-soft);border:1.5px solid rgba(176,84,122,.2);border-radius:var(--r-full);padding:6px 12px;text-decoration:none;transition:all var(--t-fast);cursor:pointer}
.coins-badge:hover{background:var(--pink-dark, #f5a0b5);transform:translateY(-1px)}
.coins-badge__value{font-family:var(--f-display);font-weight:800;font-size:.875rem;color:var(--c-dark)}

/* ── Forfait Heures ── */
.hours-header{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.hours-quarter-badge{background:var(--c-dark);color:#fff;padding:6px 14px;border-radius:var(--r-full);font-family:var(--f-display);font-weight:700;font-size:.875rem;letter-spacing:.5px}
.hours-contract-info{font-size:13px;color:var(--c-text-muted)}
.hours-gauge-card{padding:28px}
.hours-gauge-top{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:20px}
.hours-gauge-used,.hours-gauge-remaining{text-align:center}
.hours-gauge-number{font-family:var(--f-display);font-size:2.5rem;font-weight:800;line-height:1}
.hours-gauge-label{display:block;font-size:12px;color:var(--c-text-muted);margin-top:4px}
.hours-gauge-bar{width:100%;height:14px;background:var(--c-bg-elevated);border-radius:var(--r-full);overflow:hidden}
.hours-gauge-bar--sm{height:8px;margin-top:10px}
.hours-gauge-fill{height:100%;border-radius:var(--r-full);transition:width .6s ease}
.hours-gauge-pct{text-align:center;font-size:12px;color:var(--c-text-muted);margin-top:8px}
.hours-surplus-alert{margin-top:16px;padding:12px 16px;background:#fef2f2;border:1px solid #fecaca;border-radius:var(--r-md);color:#991b1b;font-size:13px}
.hours-months-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px}
.hours-month-card{padding:20px}
.hours-month-card--current{border:2px solid var(--c-accent);background:var(--c-accent-soft)}
.hours-month-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.hours-month-name{font-family:var(--f-display);font-weight:700;font-size:15px}
.hours-month-badge{font-size:10px;font-weight:700;background:var(--c-accent);color:#fff;padding:2px 8px;border-radius:var(--r-full);text-transform:uppercase;letter-spacing:.5px}
.hours-month-total{font-family:var(--f-display);font-size:1.5rem;font-weight:800;color:var(--c-dark)}
.hours-month-total span{font-size:.875rem;font-weight:500;color:var(--c-text-muted)}
.hours-month-detail{margin-top:10px;font-size:12px;color:var(--c-text-muted);line-height:1.8}

@media(max-width:768px){
    .hours-months-grid{grid-template-columns:1fr}
    .hours-gauge-number{font-size:1.75rem}
}
