:root {
    --ink: #17222d;
    --muted: #66727f;
    --line: #dfe5e9;
    --paper: #ffffff;
    --canvas: #f3f6f7;
    --nav: #13262e;
    --nav-soft: #203943;
    --brand: #2563b9;
    --brand-dark: #174a87;
    --brand-soft: #e7f0fb;
    --accent: #d99a31;
    --danger: #bd3e45;
    --warning: #a8650c;
    --radius: 14px;
    --shadow: 0 10px 30px rgba(25, 47, 58, .07);
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif; color: var(--ink); background: var(--canvas); }
body { margin: 0; min-height: 100vh; font-size: 15px; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
h1, h2, h3, p { margin-top: 0; }
h1 { font-size: clamp(27px, 3vw, 38px); line-height: 1.12; letter-spacing: -.035em; margin-bottom: 8px; }
h2 { font-size: 19px; margin-bottom: 5px; letter-spacing: -.01em; }
p { color: var(--muted); line-height: 1.55; }

.app-shell { display: grid; grid-template-columns: 252px minmax(0, 1fr); min-height: 100vh; }
.sidebar { position: sticky; top: 0; height: 100vh; overflow-y: auto; background: var(--nav); color: #fff; padding: 26px 18px 20px; display: flex; flex-direction: column; z-index: 40; }
.brand { display: flex; gap: 12px; align-items: center; padding: 0 8px 28px; }
.brand-mark { width: 38px; height: 38px; border-radius: 11px; display: inline-grid; place-items: center; flex: 0 0 auto; background: var(--brand); color: white; font-weight: 800; letter-spacing: -.04em; box-shadow: inset 0 0 0 1px rgba(255,255,255,.16); }
.brand-mark.large { width: 50px; height: 50px; border-radius: 15px; font-size: 18px; }
.brand strong, .auth-brand strong { display: block; font-size: 16px; }
.brand small, .auth-brand small { display: block; color: #aebfc6; margin-top: 2px; font-size: 12px; }
.entity-switcher { margin: -12px 8px 10px; }
.entity-switcher label { display: block; margin-bottom: 5px; color: #91a4ac; font-size: 9px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.entity-switcher select { width: 100%; min-height: 36px; border: 1px solid rgba(255,255,255,.18); border-radius: 8px; padding: 0 8px; background: #20343d; color: white; font-size: 12px; font-weight: 700; }
.main-nav { display: flex; flex-direction: column; gap: 5px; }
.main-nav > a { color: #cbd6da; padding: 11px 12px; border-radius: 9px; font-weight: 560; transition: .15s ease; }
.main-nav > a { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.main-nav > a:hover { color: white; background: var(--nav-soft); }
.main-nav > a.active { color: white; background: var(--brand); }
.main-nav > a small { display: block; color: #93a8b1; font-size: 9px; margin-top: 2px; text-transform: uppercase; letter-spacing: .05em; }
.main-nav > a.active small { color: #dceaff; }
.nav-badge { min-width: 21px; height: 21px; padding: 0 6px; display: inline-grid; place-items: center; border-radius: 999px; background: var(--danger); color: white; font-size: 10px; font-weight: 850; }
.nav-section { margin: 20px 12px 4px; color: #78909a; font-size: 10px; letter-spacing: .12em; text-transform: uppercase; font-weight: 800; }
.sidebar-footer { margin-top: auto; padding: 16px 8px 0; border-top: 1px solid rgba(255,255,255,.1); }
.user-chip { display: flex; gap: 10px; align-items: center; }
.user-chip .avatar { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: var(--brand-soft); color: var(--brand-dark); font-weight: 800; }
.user-chip strong { display: block; font-size: 13px; }
.user-chip small { display: block; color: #9eb0b7; margin-top: 2px; font-size: 11px; }
.sidebar-footer .link-button { margin-top: 13px; color: #aebfc6; }

.main-content { min-width: 0; overflow-x: hidden; }
.topbar { height: 67px; padding: 0 32px; background: rgba(255,255,255,.92); border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; position: sticky; top: 0; z-index: 30; backdrop-filter: blur(10px); }
.topbar-title { font-weight: 720; }
.global-search { display: flex; width: min(320px, 28vw); margin-left: auto; margin-right: 12px; }
.global-search input { width: 100%; height: 36px; border: 1px solid var(--line); border-radius: 8px 0 0 8px; padding: 7px 10px; background: #f8fafb; }
.global-search button { border: 1px solid var(--line); border-left: 0; border-radius: 0 8px 8px 0; background: white; color: var(--brand-dark); font-weight: 700; font-size: 11px; }
.global-month { display: flex; align-items: center; gap: 7px; margin-right: 16px; }
.global-month label { color: var(--muted); font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.global-month select { height: 36px; max-width: 165px; border: 1px solid var(--line); border-radius: 8px; background: white; padding: 0 8px; color: var(--ink); font-weight: 650; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.local-status { font-size: 12px; color: var(--muted); display: flex; align-items: center; gap: 7px; }
.local-status span { width: 8px; height: 8px; border-radius: 50%; background: var(--brand); box-shadow: 0 0 0 4px var(--brand-soft); }
.menu-button { display: none; border: 0; background: transparent; color: var(--ink); font-weight: 700; }
.content-wrap { min-width: 0; padding: 34px; max-width: 1600px; margin: 0 auto; }
.page-heading { display: flex; gap: 24px; align-items: flex-start; justify-content: space-between; margin: 2px 0 26px; }
.page-heading p { margin-bottom: 0; }
.heading-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.api-provider-tabs { display: flex; gap: 8px; margin: -8px 0 22px; padding: 5px; width: fit-content; max-width: 100%; border: 1px solid var(--line); border-radius: 12px; background: #eaf0f3; }
.api-provider-tabs a { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 0 20px; border-radius: 8px; color: var(--muted); font-weight: 750; }
.api-provider-tabs a:hover { color: var(--ink); background: rgba(255,255,255,.7); }
.api-provider-tabs a.active { color: var(--brand-dark); background: white; box-shadow: 0 1px 3px rgba(25,47,58,.12); }
.api-provider-placeholder { max-width: 900px; }
.api-provider-placeholder .panel-header { align-items: flex-start; }
.eyebrow { display: block; text-transform: uppercase; letter-spacing: .12em; color: var(--brand-dark); font-size: 11px; font-weight: 800; margin-bottom: 8px; }
.back-link { color: var(--brand-dark); font-weight: 700; display: inline-block; margin-bottom: 14px; font-size: 13px; }

.button { border: 1px solid transparent; border-radius: 9px; min-height: 42px; padding: 10px 16px; display: inline-flex; align-items: center; justify-content: center; font-weight: 720; transition: .15s ease; white-space: nowrap; }
.button:hover { transform: translateY(-1px); }
.button.primary { background: var(--brand); color: white; }
.button.primary:hover { background: var(--brand-dark); }
.button.secondary { background: white; color: var(--ink); border-color: var(--line); }
.button.danger { background: white; color: var(--danger); border-color: #e8b9bc; }
.button.danger:hover { background: #fdeff0; }
.button.ghost { color: var(--muted); }
.button.full { width: 100%; }
.link-button { border: 0; padding: 0; background: transparent; color: var(--brand-dark); }
.link-button.strong { font-weight: 750; }
.danger-text { color: var(--danger); font-weight: 720; }

.metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-bottom: 20px; }
.metric-grid.five { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.metric-grid.six { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.metric-card { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); min-height: 142px; display: flex; flex-direction: column; }
.metric-card > span, .finance-card > span { color: var(--muted); font-weight: 650; font-size: 13px; }
.metric-card strong { font-size: 38px; line-height: 1; margin: 16px 0 10px; letter-spacing: -.05em; }
.metric-card small { color: var(--brand-dark); margin-top: auto; font-weight: 650; }
.metric-card.accent { background: var(--nav); color: white; border-color: var(--nav); }
.metric-card.accent > span { color: #b8c8ce; }
.metric-card.accent small { color: #9cc7ff; }
.metric-card.neutral { background: #f8fafb; }

.dashboard-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 20px; }
.dashboard-finance { margin: 30px 0; }
.section-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; margin-bottom: 14px; }
.section-heading h2 { font-size: 24px; margin: 0; }
.comparison-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin-bottom: 20px; }
.comparison-grid.four { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 0; }
.comparison-card { background: white; border: 1px solid var(--line); border-radius: 12px; padding: 16px; box-shadow: var(--shadow); }
.comparison-card:hover { border-color: #a9bfd9; transform: translateY(-1px); }
.comparison-card > span, .comparison-card small { display: block; color: var(--muted); font-size: 11px; }
.comparison-card strong { display: block; font-size: 21px; margin: 10px 0 5px; letter-spacing: -.025em; }
.variance { margin-top: 11px; padding-top: 9px; border-top: 1px solid var(--line); color: #53616c; font-size: 12px; font-weight: 760; }
.variance.positive { color: var(--brand-dark); }
.variance.negative { color: var(--danger); }
.annual-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: 20px; margin-bottom: 20px; }
.year-comparison { margin-bottom: 20px; }
.annual-summary .info-box { margin-top: 15px; }
.trend-bars { display: grid; gap: 13px; }
.trend-bars > div { display: grid; grid-template-columns: 34px minmax(100px, 1fr) 95px 40px; align-items: center; gap: 10px; }
.trend-bars span, .trend-bars small { color: var(--muted); font-size: 11px; font-weight: 720; }
.trend-bars strong { text-align: right; font-size: 12px; }
.trend-track { height: 9px; overflow: hidden; border-radius: 999px; background: #e7edf1; }
.trend-track i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--brand-dark), var(--brand)); }
.panel { min-width: 0; background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow); padding: 22px; }
.panel-header { display: flex; justify-content: space-between; align-items: flex-start; padding-bottom: 18px; border-bottom: 1px solid var(--line); margin-bottom: 18px; }
.panel-header p { margin: 0; font-size: 13px; }
.table-panel { padding: 0; overflow: hidden; }
.table-scroll { max-width: 100%; overflow: auto; overscroll-behavior-x: contain; }
table { width: 100%; border-collapse: collapse; }
th { text-align: left; padding: 13px 15px; color: #53616c; background: #f7f9fa; border-bottom: 1px solid var(--line); font-size: 11px; letter-spacing: .045em; text-transform: uppercase; white-space: nowrap; }
td { padding: 13px 15px; border-bottom: 1px solid #e9edef; vertical-align: middle; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover { background: #fbfcfc; }
td strong { font-size: 14px; }
td small { display: block; color: var(--muted); margin-top: 3px; }
table.dense { font-size: 13px; }
table.dense th, table.dense td { padding: 10px 11px; }
.actions-col { text-align: right; }
.row-actions { display: flex; justify-content: flex-end; gap: 14px; align-items: center; }
.row-actions a, .table-link { color: var(--brand-dark); font-weight: 720; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; }
.company-tag { display: inline-flex; align-items: center; width: fit-content; padding: 2px 7px; border-radius: 5px; background: var(--brand-soft); color: var(--brand-dark); font-size: 10px; font-weight: 800; letter-spacing: .035em; }
.company-tag.serdenet { background: #eef0f4; color: #48586c; }
.company-tag.external { background: #fff0d7; color: var(--warning); }
.status, .role-pill { display: inline-flex; align-items: center; width: fit-content; border-radius: 999px; padding: 4px 9px; font-size: 11px; font-weight: 760; background: #edf1f3; color: #53616c; white-space: nowrap; }
.status.active, .status.success, .status.validated { background: var(--brand-soft); color: var(--brand-dark); }
.status.inactive, .status.error, .status.negative { background: #fde9e9; color: var(--danger); }
.status.warning, .status.submitted, .status.running { background: #fff0d7; color: var(--warning); }
.status.pending { background: #fff0d7; color: var(--warning); }
.status.approved { background: var(--brand-soft); color: var(--brand-dark); }
.status.rejected { background: #fde9e9; color: var(--danger); }
.status.preview, .status.ambiguous, .status.new { background: #fff0d7; color: var(--warning); }
.status.applied, .status.matched { background: var(--brand-soft); color: var(--brand-dark); }
.status.replaced, .status.rolled_back, .status.ignored { background: #edf1f3; color: #53616c; }
.status.draft { background: #e9eef4; color: #53677a; }
.status.large { padding: 7px 12px; font-size: 12px; }
.role-pill.admin { background: var(--nav); color: white; }

.alert-list { display: grid; gap: 10px; }
.data-alert { min-width: 0; padding: 13px 14px; background: #f7f9fa; border-radius: 10px; display: flex; align-items: center; gap: 10px; }
.data-alert strong { min-width: 0; font-size: 13px; overflow-wrap: anywhere; }
.data-alert small { margin-left: auto; flex: 0 0 auto; color: var(--brand-dark); font-weight: 720; }
.data-alert span { width: 9px; height: 9px; border-radius: 50%; background: #6f8490; }
.data-alert.warning span { background: var(--accent); }
.data-alert.info span { background: #487db3; }
.summary-list { margin: 0; }
.summary-list div { display: flex; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid var(--line); }
.summary-list div:last-child { border-bottom: 0; }
.summary-list dt { color: var(--muted); }
.summary-list dd { margin: 0; font-weight: 650; text-align: right; }
.empty-state { min-height: 140px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; color: var(--muted); padding: 28px; }
.empty-state strong { color: var(--ink); margin-bottom: 5px; }
.empty-state.compact { min-height: 90px; padding: 15px; }

.filter-bar { display: flex; gap: 10px; margin-bottom: 15px; max-width: 720px; }
.filter-bar.short { max-width: 380px; align-items: flex-end; }
.filter-bar.wide-filter { max-width: 720px; align-items: flex-end; }
.filter-bar label { flex: 1; font-size: 12px; font-weight: 700; color: var(--muted); }
.filter-bar label input { margin-top: 5px; }
.filter-bar label select { margin-top: 5px; }
.pointage-filter { max-width: 920px; align-items: flex-end; }
.pointage-filter label:first-child { flex: 0 0 290px; }
.pointage-filter label:nth-child(2) { flex: 1 1 420px; }
.pointage-filter .button { min-height: 42px; }
.form-control { display: block; width: 100%; min-height: 42px; border: 1px solid #cbd4d9; border-radius: 8px; padding: 9px 11px; background: white; color: var(--ink); outline: none; }
.form-control:focus { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(37,99,185,.13); }
textarea.form-control { min-height: 100px; resize: vertical; }
.form-panel { max-width: 920px; }
.two-column-layout { display: grid; grid-template-columns: minmax(300px, .8fr) minmax(0, 1.2fr); gap: 20px; align-items: start; }
.activity-list { display: grid; gap: 12px; }
.activity-card { border: 1px solid var(--line); border-radius: 11px; padding: 14px 16px; background: #fff; }
.activity-card p { margin: 9px 0 0; font-size: 13px; }
.activity-card p strong { color: var(--ink); }
.activity-card-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.activity-card-header small { display: block; margin-top: 4px; color: var(--muted); }
.activity-card .link-button { margin-top: 10px; font-size: 12px; }
.form-card { max-width: 820px; }
.employee-payfit-panel { margin-bottom: 18px; }
.employee-payfit-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.employee-payfit-heading h2 { margin: 5px 0 0; }
.employee-payfit-panel > p { margin: 12px 0; color: var(--muted); }
.employee-payfit-panel > .button { margin-top: 4px; }
.employee-payfit-pending { margin: 14px 0; padding: 13px 16px; border-radius: 10px; background: #fff5e7; color: #704600; }
.employee-payfit-pending ul { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 9px 0 0; padding-left: 18px; }
.employee-payfit-clear { color: #246147 !important; }
.employee-payfit-rules { margin-top: 17px; padding-top: 14px; border-top: 1px solid var(--line); }
.employee-payfit-rules summary { cursor: pointer; color: var(--brand-dark); font-weight: 720; }
.employee-payfit-rules p { color: var(--muted); font-size: 13px; }
.employee-payfit-rule-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; }
.employee-payfit-rule-grid > div { padding: 12px; border: 1px solid var(--line); border-radius: 9px; }
.employee-payfit-rule-grid ul { margin: 8px 0 0; padding-left: 18px; color: var(--muted); font-size: 13px; }
.employee-field-source { display: inline-block; margin-left: 8px; padding: 3px 7px; border-radius: 999px; background: #e8f0fa; color: var(--brand-dark); font-size: 10px; font-weight: 720; vertical-align: middle; }
.employee-field-source.block { background: #edf1f3; color: #53616c; }
.employee-field-source.review { background: #fff0d7; color: #805100; }
.form-grid { display: grid; gap: 19px; }
.form-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.form-grid label, .stack-form label { display: block; font-weight: 680; font-size: 13px; }
.form-grid label > .form-control, .stack-form label > .form-control { margin-top: 7px; }
.form-grid label > small { display: block; color: var(--muted); font-weight: 400; margin-top: 5px; }
.form-grid .checkbox-label { display: flex; align-items: center; gap: 9px; align-self: end; min-height: 42px; }
.form-check-input { width: 18px; height: 18px; accent-color: var(--brand); order: -1; }
input[type="checkbox"] { width: 19px; height: 19px; min-height: 19px; padding: 0; border-radius: 4px; accent-color: var(--brand); }
.span-two { grid-column: 1 / -1; }
.form-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; padding-top: 20px; border-top: 1px solid var(--line); }
.field-error { color: var(--danger); display: block; margin-top: 5px; font-size: 12px; }
.form-errors { background: #fde9e9; color: var(--danger); border-radius: 9px; padding: 12px 14px; }
.stack-form { display: grid; gap: 16px; }

.auth-shell { min-height: 100vh; display: grid; place-items: center; padding: 30px; background: radial-gradient(circle at 15% 15%, rgba(37,99,185,.18), transparent 30%), var(--nav); }
.auth-card { width: min(430px, 100%); background: white; border-radius: 18px; padding: 34px; box-shadow: 0 24px 70px rgba(0,0,0,.25); }
.auth-card.wide { width: min(760px, 100%); }
.auth-brand { display: flex; gap: 12px; align-items: center; margin-bottom: 34px; }
.auth-brand small { color: var(--muted); }
.auth-card h1 { font-size: 30px; }
.auth-note { display: block; margin-top: 22px; color: var(--muted); text-align: center; line-height: 1.45; }

.login-web-shell { width: min(1180px, 100%); min-height: min(680px, calc(100vh - 60px)); display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(390px, .92fr); overflow: hidden; border-radius: 26px; background: white; box-shadow: 0 28px 90px rgba(0,0,0,.3); }
.login-web-visual { position: relative; overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; padding: 44px 48px; background: radial-gradient(circle at 12% 8%, rgba(76,180,255,.5), transparent 34%), radial-gradient(circle at 88% 84%, rgba(32,201,183,.3), transparent 36%), linear-gradient(145deg, #092f5a 0%, #0b4f8b 49%, #082944 100%); color: #f3f9ff; }
.login-web-brand { position: relative; z-index: 2; display: flex; align-items: center; gap: 14px; }
.login-web-brand > span:last-child { min-width: 0; }
.login-web-brand strong { display: block; color: #f3f9ff; font-size: 17px; line-height: 1.22; }
.login-web-brand small { display: block; margin-top: 3px; color: #bdd8ee; font-size: 12px; }
.login-web-mark { width: 48px; height: 48px; display: grid; grid-template-columns: repeat(2, 7px); grid-template-rows: repeat(2, 7px); place-content: center; gap: 4px; flex: 0 0 auto; border: 1px solid rgba(255,255,255,.2); border-radius: 15px; background: rgba(255,255,255,.14); backdrop-filter: blur(8px); }
.login-web-mark i { display: block; width: 7px; height: 7px; border-radius: 2px; background: currentColor; }
.login-web-message { position: relative; z-index: 2; max-width: 500px; padding: 50px 0; }
.login-web-kicker { display: block; margin-bottom: 12px; color: #90d5ff; font-size: 12px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.login-web-message h1 { margin: 0 0 18px; color: #f3f9ff; font-size: clamp(40px, 4.2vw, 58px); font-weight: 720; line-height: 1.04; letter-spacing: -.045em; }
.login-web-message p { max-width: 430px; margin: 0; color: #bdd8ee; font-size: 17px; line-height: 1.55; }
.login-web-security { position: relative; z-index: 2; display: flex; align-items: center; gap: 8px; color: #bdd8ee; font-size: 12px; }
.login-web-security span, .login-web-protected span { width: 18px; height: 18px; display: inline-grid; place-items: center; border-radius: 50%; background: rgba(255,255,255,.14); color: inherit; font-size: 11px; font-weight: 800; }
.login-web-orbit { position: absolute; border: 1px solid rgba(255,255,255,.18); border-radius: 50%; pointer-events: none; }
.login-web-orbit.orbit-one { width: 330px; height: 330px; right: -125px; top: -95px; }
.login-web-orbit.orbit-two { width: 485px; height: 485px; right: -205px; top: -175px; }
.login-web-panel { display: grid; place-items: center; padding: 54px 64px; background: white; }
.login-web-form { width: min(100%, 410px); }
.login-web-form h2 { margin: 0 0 8px; color: var(--ink); font-size: 31px; line-height: 1.15; letter-spacing: -.03em; }
.login-web-intro { margin: 0 0 32px; color: var(--muted); font-size: 15px; }
.login-web-form .form-errors { margin-bottom: 18px; }
.login-web-field { display: grid; gap: 8px; margin-bottom: 18px; color: var(--ink); font-size: 13px; font-weight: 750; }
.login-web-field input { width: 100%; min-height: 54px; border: 1px solid #d8e3ee; border-radius: 13px; padding: 0 15px; outline: 0; background: #f5f8fc; color: var(--ink); font-size: 16px; font-weight: 500; transition: border-color .15s ease, box-shadow .15s ease, background .15s ease; }
.login-web-field input:focus { border-color: var(--brand); background: white; box-shadow: 0 0 0 4px rgba(37,99,185,.12); }
.login-web-submit { min-height: 54px; margin-top: 7px; border-radius: 13px; background: linear-gradient(135deg, var(--brand), var(--brand-dark)); box-shadow: 0 12px 28px rgba(37,99,185,.24); }
.login-web-submit span { margin-left: 4px; font-size: 18px; line-height: 1; }
.login-web-protected { display: flex; align-items: center; justify-content: center; gap: 7px; margin-top: 23px; color: var(--muted); font-size: 11px; }
.login-web-protected span { background: var(--brand-soft); color: var(--brand-dark); }

@media (max-width: 820px) {
    .login-web-shell { min-height: 0; grid-template-columns: 1fr; }
    .login-web-visual { min-height: 285px; padding: 32px; }
    .login-web-message { padding: 42px 0 12px; }
    .login-web-message h1 { font-size: 38px; }
    .login-web-message p, .login-web-security { display: none; }
    .login-web-panel { padding: 42px 30px 48px; }
}

@media (max-width: 560px) {
    .login-web-shell { border-radius: 20px; }
    .login-web-visual { min-height: 245px; padding: 26px 24px; }
    .login-web-brand strong { font-size: 15px; }
    .login-web-brand small { font-size: 11px; }
    .login-web-mark { width: 43px; height: 43px; border-radius: 13px; }
    .login-web-message { padding: 34px 0 6px; }
    .login-web-message h1 { margin-bottom: 0; font-size: 32px; }
    .login-web-panel { padding: 34px 22px 38px; }
    .login-web-form h2 { font-size: 27px; }
    .login-web-intro { margin-bottom: 25px; }
}

.flash { padding: 13px 15px; border-radius: 10px; margin-bottom: 18px; background: #e8f0f7; color: #2c5b80; }
.flash.success { background: var(--brand-soft); color: var(--brand-dark); }
.flash.error { background: #fde9e9; color: var(--danger); }
.flash.info { background: #edf1f3; color: #53616c; }
.impersonation-banner { position: sticky; top: 67px; z-index: 29; min-height: 48px; display: flex; justify-content: center; align-items: center; gap: 10px; padding: 8px 18px; background: #fff0d7; border-bottom: 1px solid #e3bd7b; color: #774800; }
.impersonation-banner form { display: inline; }
.impersonation-banner button { border: 1px solid #b77c1d; background: white; color: #754800; border-radius: 7px; padding: 6px 10px; font-weight: 700; }
.credentials-box { border: 1px solid #e0b55f; background: #fff6e6; border-radius: 12px; padding: 16px; margin-bottom: 18px; }
.credentials-box strong { display: block; margin-bottom: 10px; }
.credentials-box code { display: block; padding: 5px 0; }
.role-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.role-card-head { display: flex; justify-content: space-between; gap: 15px; }
.role-card-head span { color: var(--muted); font-size: 12px; }
.role-card p { min-height: 45px; }
.role-card summary { color: var(--brand-dark); font-weight: 720; cursor: pointer; }
.role-card ul { color: var(--muted); line-height: 1.5; padding-left: 20px; }
.pagination { display: flex; justify-content: center; align-items: center; gap: 18px; padding: 16px; border-top: 1px solid var(--line); color: var(--muted); }
.pagination a { color: var(--brand-dark); font-weight: 720; }
.sort-link { display: inline-flex; align-items: center; gap: 4px; }
.sort-link:hover, .sort-link.active { color: var(--brand-dark); }
.sort-link.active::after { content: "↕"; font-size: 10px; }
.weekly-plan-grid { display: grid; grid-template-columns: repeat(7, minmax(72px, 1fr)); gap: 10px; }
.weekly-plan-grid label { text-align: center; }
.weekly-plan-grid label > span { display: block; margin-bottom: 6px; color: var(--muted); }
.weekly-plan-grid input { text-align: center; }
.weekly-total { color: var(--muted); font-size: 13px; }
.weekly-total strong { color: var(--brand-dark); font-size: 18px; }
.compact-number { max-width: 150px; }

.pointage-heading { align-items: center; }
.pointage-heading-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.pointage-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); background: var(--nav); color: white; border-radius: 13px; margin-bottom: 16px; overflow: hidden; }
.pointage-contract-details { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0 0 12px; border: 1px solid var(--line); border-radius: 11px; overflow: hidden; background: white; }
.pointage-contract-details div { padding: 10px 13px; border-right: 1px solid var(--line); }
.pointage-contract-details div:last-child { border-right: 0; }
.pointage-contract-details dt { color: var(--muted); font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.pointage-contract-details dd { margin: 4px 0 0; font-weight: 760; }
.pointage-contract-details small { display: block; color: var(--muted); margin-top: 2px; font-size: 10px; }
.pointage-summary div { padding: 15px 18px; border-right: 1px solid rgba(255,255,255,.13); }
.pointage-summary div:last-child { border-right: 0; }
.pointage-summary span { display: block; color: #b9c8ce; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; }
.pointage-summary strong { display: block; font-size: 20px; margin-top: 5px; }
.pointage-panel { padding: 0; border-radius: 8px; }
.pointage-scroll { overflow: auto; max-height: calc(100vh - 310px); }
.pointage-table { width: max-content; min-width: 100%; font-size: 11px; }
.pointage-table th { background: #24424d; color: white; border-color: #3a5660; text-align: center; padding: 7px 3px; }
.pointage-table td { padding: 0; height: 37px; border-right: 1px solid #dfe5e9; text-align: center; }
.pointage-table .day-col { width: 42px; min-width: 42px; }
.pointage-table .day-col span, .pointage-table .day-col small { display: block; }
.pointage-table .day-col small { color: #b9c8ce; font-size: 8px; margin-top: 2px; }
.pointage-table .weekend { background: #edf1f3; }
.pointage-table th.weekend { background: #1b333d; }
.pointage-cell input { width: 41px; height: 36px; border: 0; text-align: center; background: transparent; padding: 2px; font-size: 11px; color: var(--ink); -moz-appearance: textfield; }
.pointage-cell input::-webkit-inner-spin-button { display: none; }
.pointage-cell input:focus { outline: 2px solid var(--brand); outline-offset: -2px; background: white; }
.pointage-cell input.save-success { background: var(--brand-soft); }
.pointage-cell input.save-error { background: #fde9e9; outline: 2px solid var(--danger); outline-offset: -2px; }
.techniline-manual-cell { background: #eaf2ff !important; }
.techniline-manual-cell input { font-weight: 800; color: var(--brand-dark); }
.techniline-hours-total { display: inline-flex; align-items: center; padding: 10px 15px; border-radius: 10px; background: var(--brand-soft); color: var(--brand-dark); white-space: nowrap; }
.techniline-other-view { display: block; margin-top: 3px; color: var(--brand-dark); font-size: 10px; font-weight: 700; }
.techniline-other-view:hover { text-decoration: underline; }
.techniline-assignment-group { margin-bottom: 15px; }
.techniline-needs-panel { margin-bottom: 18px; }
.techniline-needs-panel .dense td small { display:block; margin-top:4px; color:var(--muted); }
.techniline-shift-section { padding:0; overflow:hidden; margin-top:18px; }
.techniline-shift-section .panel-header { display:flex; justify-content:space-between; align-items:center; gap:16px; }
.techniline-shift-list { padding:0 22px 8px; }
.techniline-shift-row { display:flex; justify-content:space-between; align-items:center; gap:18px; padding:15px 0; border-top:1px solid var(--line); }
.techniline-shift-row strong,.techniline-shift-row small { display:block; }
.techniline-shift-row small { margin-top:4px; color:var(--muted); }
.techniline-shift-status { display:grid; justify-items:end; gap:7px; }
.techniline-weekdays { border:0; padding:0; margin:0; }
.techniline-weekdays legend { font-weight:700; font-size:13px; margin-bottom:10px; }
.techniline-weekdays small { display:block; color:var(--muted); margin-top:8px; }
.techniline-weekday-options > div { display:flex; flex-wrap:wrap; gap:8px; }
.techniline-weekday-options label { display:inline-flex; align-items:center; gap:7px; border:1px solid var(--line); border-radius:10px; padding:9px 12px; cursor:pointer; background:#fff; }
.techniline-weekday-options input { accent-color:var(--brand); }
@media(max-width:700px) { .techniline-shift-row,.techniline-shift-section .panel-header { align-items:flex-start; flex-direction:column; }.techniline-shift-status { justify-items:start; } }
.pointage-cell.overtime-cell { background: #fff0f0 !important; box-shadow: inset 0 0 0 2px #d92d3a; }
.pointage-cell.overtime-cell input { color: #b4232a; font-weight: 800; }
.overtime-panel { margin-top: 18px; }
.overtime-day-detail { display: inline-block; margin: 0 8px 4px 0; white-space: nowrap; }
.pointage-dialog { width: min(620px, calc(100vw - 28px)); max-height: min(90vh, 820px); max-height: min(88dvh, 820px); overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; touch-action: pan-y; padding: 24px; border: 1px solid var(--line); border-radius: 16px; color: var(--ink); box-shadow: 0 24px 80px rgba(20,35,45,.28); }
.pointage-dialog::backdrop { background: rgba(14,28,38,.48); }
.pointage-dialog form { display: grid; gap: 14px; }
.pointage-dialog h2 { margin: 0; }
.pointage-dialog label { display: grid; gap: 6px; }
.pointage-dialog [hidden] { display: none !important; }
.pointage-dialog .form-actions { position: sticky; bottom: -24px; display: flex; justify-content: flex-end; gap: 8px; padding: 14px 0 0; margin: 0 -1px -1px; background: #fff; border-top: 1px solid var(--line); z-index: 1; }
.overtime-hour-input { min-width: 130px; }
.overtime-hour-input input { margin-top: 6px; }
.pointage-table .sticky-col { position: sticky; left: 0; z-index: 5; background: white; text-align: left; }
.pointage-table th.sticky-col { z-index: 8; background: #24424d; }
.pointage-table .chantier-col { width: 220px; min-width: 220px; max-width: 220px; padding: 7px 10px; }
.pointage-table .sticky-col-two { position: sticky; left: 220px; z-index: 5; width: 66px; min-width: 66px; background: white; border-right: 2px solid #b9c5ca; }
.pointage-table th.sticky-col-two { z-index: 8; background: #24424d; }
.pointage-table .total-col, .pointage-table .line-total { width: 78px; min-width: 78px; max-width: 78px; box-sizing: border-box; padding-left: 4px; padding-right: 4px; background: var(--brand-soft); font-weight: 800; font-size: 10px; white-space: nowrap; overflow: hidden; }
.pointage-table .pointage-total-value { display: block; width: 100%; min-width: 0; overflow: hidden; text-overflow: clip; white-space: nowrap; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.pointage-summary strong { font-size: 16px; }
.pointage-table td.chantier-col strong { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.line-request-link { color: var(--brand-dark); font-size: 9px; font-weight: 760; }
.supp-label { color: var(--warning); }
.pointage-table .overtime-row td, .pointage-table .overtime-row input, .overtime-row .supp-label { color: var(--danger); font-weight: 760; }
.pointage-table .absence-grid-row td { background: #fffaf0; border-top: 2px solid #e8d6a8; }
.pointage-table .supplementary-total-row td { background: var(--brand-soft); border-top: 2px solid var(--brand); font-weight: 800; }
.absence-grid-row .absence-code { display: block; color: #895d00; font-weight: 800; }
.absence-grid-row td small { display: block; color: var(--muted); font-size: 8px; }
.administrative-elements .administrative-fields { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 16px; align-items: end; }
.administrative-elements .administrative-fields > p { min-width: 0; margin: 0; }
.administrative-elements .administrative-fields input { width: 100%; }
.administrative-elements .administrative-fields > p:last-child { grid-column: 1 / -1; }
.administrative-elements .administrative-fields textarea { width: 100%; min-height: 150px; resize: vertical; }
.administrative-elements .form-actions { display: flex; justify-content: flex-end; margin-top: 18px; }
.assignment-group-actions { display: flex; justify-content: flex-end; gap: 8px; padding: 10px 16px 0; }
.assignment-employee-list { display: grid; gap: 10px; padding: 14px; }
.assignment-filter-control { min-width: 190px; }
.assignment-employee-group { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; background: #fff; }
.assignment-employee-group > summary { list-style: none; cursor: pointer; display: grid; grid-template-columns: 24px minmax(220px, 1fr) auto; align-items: center; gap: 10px; padding: 14px 16px; background: #f7f9fa; }
.assignment-employee-group > summary::-webkit-details-marker { display: none; }
.assignment-employee-group summary small { display: block; color: var(--muted); margin-top: 3px; }
.assignment-chevron { font-size: 25px; color: var(--brand); transition: transform .15s ease; }
.assignment-employee-group[open] .assignment-chevron { transform: rotate(90deg); }
.assignment-summary-stats { display: flex; gap: 18px; color: var(--brand-dark); font-size: 13px; }
.permission-module { margin-bottom: 18px; }
.permission-tools { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 16px; }
.permission-tools > .form-control { flex: 1 1 280px; max-width: 520px; }
.permission-tools label { display: inline-flex; align-items: center; gap: 8px; color: var(--muted); font-size: 13px; }
.permission-row[hidden], .permission-module[hidden] { display: none !important; }
.permission-row select { min-width: 0; }
.permission-module .button { white-space: nowrap; }
.permission-rows { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 24px; }
.permission-row { display: grid; grid-template-columns: minmax(180px, 1fr) minmax(230px, .8fr); gap: 14px; align-items: center; padding: 12px 0; border-top: 1px solid var(--line); }
.permission-row small { display: block; color: var(--muted); margin-top: 4px; }
table:has(th:first-child .sort-link[href*="sort=code"]) th:first-child,
table:has(th:first-child .sort-link[href*="sort=code"]) tbody > tr > td:first-child { display: none; }
.connection-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.connection-card small { color: var(--muted); }
@media (max-width: 1100px) {
    .administrative-elements .administrative-fields { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .permission-rows, .connection-grid { grid-template-columns: 1fr; }
}
@media (max-width: 700px) {
    .administrative-elements .administrative-fields { grid-template-columns: 1fr; }
    .permission-row { grid-template-columns: 1fr; }
    .assignment-employee-group > summary { grid-template-columns: 22px 1fr; }
    .assignment-summary-stats { grid-column: 2; }
}
.frequency { font-size: 9px; font-weight: 700; color: var(--muted); }
.sticky-actions { position: sticky; bottom: 0; z-index: 20; margin-top: 14px; padding: 12px 15px; display: flex; align-items: center; justify-content: space-between; gap: 16px; background: rgba(255,255,255,.95); border: 1px solid var(--line); border-radius: 11px; box-shadow: 0 -8px 24px rgba(25,47,58,.08); backdrop-filter: blur(10px); }
.sticky-actions span { color: var(--muted); font-size: 13px; }
.sticky-actions div { display: flex; gap: 9px; }
.planning-manual-hours { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.planning-manual-hours label { display: grid; gap: 4px; min-width: 92px; color: var(--muted); font-size: 11px; font-weight: 700; }
.planning-manual-hours .form-control { padding: 7px 8px; }
.correction-actions label { min-width: min(520px, 58vw); color: var(--warning); font-size: 11px; font-weight: 760; }
.correction-actions label input { margin-top: 5px; }
.absence-panel { margin-top: 20px; }
.compact-list { display: grid; gap: 0; }
.compact-list > a, .compact-list > div, .compact-list > span { padding: 11px 2px; border-bottom: 1px solid var(--line); color: var(--brand-dark); }
.compact-list > a:last-child, .compact-list > div:last-child, .compact-list > span:last-child { border-bottom: 0; }
.compact-list > div { display: flex; justify-content: space-between; align-items: center; gap: 16px; color: var(--ink); }
.compact-list strong, .compact-list small { display: block; }
.compact-list small { color: var(--muted); margin-top: 3px; }

.finance-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-bottom: 20px; }
.finance-card { background: white; border: 1px solid var(--line); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); }
.finance-card strong { display: block; font-size: 27px; margin-top: 14px; letter-spacing: -.035em; }
.finance-card small { color: var(--muted); }
.finance-card.revenue { border-top: 4px solid var(--brand); }
.finance-card.result { background: var(--nav); color: white; }
.finance-card.result > span { color: #b9c8ce; }
.finance-card.result.negative { background: #702f33; }
.finance-heading { margin-bottom: 12px; }
.finance-heading .heading-actions { min-width: 0; }
.finance-heading .inline-form { min-width: 0; max-width: 100%; flex: 1 1 100%; flex-wrap: wrap; }
.finance-heading .inline-form .form-control { flex: 1 1 150px; min-width: 0; }
.finance-entity-switch { display: flex; flex-wrap: wrap; gap: 5px; width: fit-content; max-width: 100%; padding: 5px; margin: 0 0 20px; border: 1px solid var(--line); border-radius: 14px; background: #e9eff5; }
.finance-entity-switch a { padding: 11px 18px; border-radius: 10px; color: var(--nav); font-weight: 760; text-decoration: none; transition: background .15s, box-shadow .15s; }
.finance-entity-switch a:hover { background: #f7faff; }
.finance-entity-switch a.selected { background: white; color: var(--brand); box-shadow: 0 2px 10px rgba(17, 52, 82, .13); }
.finance-issue { border: 1px solid var(--line); border-left: 4px solid #4b85b7; border-radius: 11px; background: white; }
.finance-issue.warning { border-left-color: #e3a12f; }
.finance-issue summary { display: flex; justify-content: space-between; gap: 16px; align-items: center; padding: 14px 18px; cursor: pointer; list-style: none; }
.finance-issue summary::-webkit-details-marker { display: none; }
.finance-issue summary span { color: var(--brand); font-size: 13px; font-weight: 700; white-space: nowrap; }
.finance-issue[open] summary { border-bottom: 1px solid var(--line); }
.finance-issue p { margin: 13px 18px 0; color: var(--muted); }
.finance-issue-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(235px, 1fr)); gap: 8px; padding: 14px 18px 18px; max-height: 330px; overflow: auto; }
.finance-issue-list a { display: flex; justify-content: space-between; gap: 8px; padding: 10px 12px; background: #f5f8fb; border-radius: 8px; color: var(--nav); font-weight: 650; }
.finance-issue-list small { color: var(--brand); white-space: nowrap; }
#chantiers tr:target, #salaries tr:target { outline: 3px solid #2e6cc3; outline-offset: -3px; scroll-margin-top: 150px; background: #f1f7ff; }
.finance-subnav { display: flex; gap: 7px; margin-bottom: 20px; position: sticky; top: 76px; z-index: 22; width: fit-content; padding: 5px; border: 1px solid var(--line); border-radius: 11px; background: rgba(255,255,255,.94); box-shadow: var(--shadow); backdrop-filter: blur(10px); }
.finance-subnav a { padding: 8px 13px; border-radius: 7px; color: var(--brand-dark); font-size: 12px; font-weight: 760; }
.finance-subnav a:hover { background: var(--brand-soft); }
.finance-alerts { display: grid; gap: 9px; margin-bottom: 20px; }
.finance-overview-grid, .finance-ranking-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; margin-block: 20px; }
.comparison-details + .finance-overview-grid, #absences + .finance-ranking-grid { margin-top: 20px; }
#ecarts { margin-bottom: 20px; }
.finance-detail-section > .table-scroll > table.finance-comparison-table { min-width: 1100px; table-layout: fixed; }
.finance-comparison-table .indicator-col { width: 18%; }
.finance-comparison-table .amount-col { width: 15%; }
.finance-comparison-table .difference-col { width: 15%; }
.finance-comparison-table .explanation-col { width: 37%; }
.finance-comparison-table td { font-variant-numeric: tabular-nums; }
.finance-comparison-table .finance-nowrap { display: inline-block; white-space: nowrap; }
.finance-comparison-table td small { white-space: nowrap; }
.finance-overview-grid { margin-top: 20px; }
.finance-detail-section#absences { margin-block: 20px; }
.summary-list .summary-total { margin-top: 4px; border-top: 2px solid var(--line); border-bottom: 0; font-size: 15px; }
.panel-header.padded { padding: 18px 20px 14px; margin: 0; }
.finance-detail-section { margin-top: 20px; scroll-margin-top: 140px; }
.request-card:target, .movement-absence-period:target { outline: 3px solid #2e6cc3; outline-offset: 3px; scroll-margin-top: 140px; }
tr:target { scroll-margin-top: 140px; }
tr:target td { background: #eaf3ff; }
.finance-section-heading { min-width: 0; display: flex; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; gap: 18px 24px; padding: 22px; border-bottom: 1px solid var(--line); }
.finance-section-heading > div { min-width: 0; flex: 1 1 420px; }
.finance-section-heading p { max-width: 780px; margin-bottom: 0; font-size: 13px; }
.finance-section-heading .inline-form { min-width: min(370px, 100%); }
.finance-filter-form { display: grid; grid-template-columns: minmax(230px, 1fr) auto; gap: 8px; min-width: 390px; }
.finance-filter-form.client-sort-form { grid-template-columns: minmax(180px, 1fr) 145px minmax(170px, .8fr) 125px auto; min-width: 850px; }
.finance-filter-form.employee-sort-form { grid-template-columns: minmax(180px, 1fr) 155px 165px 125px auto; min-width: 860px; }
.finance-table-scroll { max-height: 650px; }
.finance-table-scroll thead { position: sticky; top: 0; z-index: 4; }
.finance-table-scroll table { min-width: 980px; }
.finance-table-scroll td { white-space: nowrap; }
.finance-detail-section > .table-scroll > table { min-width: 900px; }
.comparison-details table { min-width: 1040px; }
.finance-card, .metric-card { overflow-wrap: anywhere; }
.financial-negative { color: var(--danger); font-weight: 760; }
.workflow-status { display: flex; gap: 10px; flex-wrap: wrap; margin: -8px 0 18px; }
.workflow-pill { display: flex; align-items: center; gap: 9px; padding: 9px 13px; border: 1px solid #e2c878; border-radius: 999px; background: #fff9e7; color: #725c17; }
.workflow-pill span { font-size: 10px; font-weight: 850; letter-spacing: .08em; text-transform: uppercase; }
.workflow-pill strong { font-size: 12px; }
.workflow-pill.ready { border-color: #8dc9ad; background: #eaf8f1; color: #176342; }
.closing-checklist { display: grid; }
.closing-item { min-width: 0; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 14px 20px; border-top: 1px solid var(--line); }
.closing-item:first-child { border-top: 0; }
.closing-item:hover { background: #f7fafc; }
.closing-icon { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; background: #fff1cf; color: #8b6410; font-weight: 900; }
.closing-item.ready .closing-icon { background: #dff5ea; color: #176342; }
.closing-item strong, .closing-item small { display: block; }
.closing-item > span:nth-child(2) { min-width: 0; }
.closing-item small { margin-top: 3px; color: var(--muted); line-height: 1.4; overflow-wrap: anywhere; }
.closing-item .table-link { justify-self: end; white-space: nowrap; }
.success-card { border-color: #8dc9ad; background: #f0fbf6; }
.comparison-details { margin-top: 0; border-top: 1px solid var(--line); padding: 0; overflow: hidden; background: #fbfcfd; }
.comparison-details summary { display: flex; align-items: center; gap: 9px; cursor: pointer; list-style: none; padding: 14px 20px; color: var(--brand-dark); font-weight: 800; }
.comparison-details summary::-webkit-details-marker { display: none; }
.comparison-details summary::before { content: "+"; width: 24px; height: 24px; display: inline-grid; place-items: center; border-radius: 50%; background: var(--brand-soft); font-size: 17px; line-height: 1; }
.comparison-details[open] summary { border-bottom: 1px solid var(--line); }
.comparison-details[open] summary::before { content: "−"; }
.comparison-details > .table-scroll { padding: 0 20px 20px; }
.explanation-cell { min-width: 280px; white-space: normal !important; color: var(--muted); line-height: 1.4; }
.expandable-finance-row { cursor: pointer; }
.expandable-finance-row:hover, .expandable-finance-row.expanded { background: #f0f6fd; }
.row-expand-button { width: 25px; height: 25px; margin-right: 7px; border: 0; border-radius: 50%; background: #e7eff8; color: var(--brand-dark); font-size: 18px; font-weight: 900; cursor: pointer; }
.finance-breakdown-row > td { padding: 0 !important; background: #f7fafc; }
.breakdown-content { padding: 16px 20px 20px; border-bottom: 2px solid #aab9c6; }
.breakdown-heading { display: flex; justify-content: space-between; gap: 20px; margin-bottom: 12px; }
.breakdown-heading span, .breakdown-costs { color: var(--muted); font-size: 12px; }
.breakdown-content table { background: white; border: 1px solid var(--line); }
.breakdown-costs { margin-top: 10px; text-align: right; }
.audit-details { min-width: 300px; }
.audit-details summary { cursor: pointer; color: var(--brand-dark); font-weight: 780; }
.audit-details > strong { display: block; margin: 10px 0 5px; font-size: 11px; color: var(--muted); text-transform: uppercase; }
.audit-details dl { margin: 0; display: grid; gap: 4px; }
.audit-details dl div { display: grid; grid-template-columns: minmax(110px, .8fr) minmax(170px, 1.4fr); gap: 8px; border-top: 1px solid var(--line); padding-top: 4px; }
.audit-details dt { color: var(--muted); }
.audit-details dd { margin: 0; white-space: normal; }
.absence-summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(155px, 1fr)); gap: 10px; margin-bottom: 18px; }
.compact-card { display: flex; flex-direction: column; gap: 5px; padding: 13px 15px; border: 1px solid var(--line); border-radius: 10px; background: #fbfcfd; }
.compact-card:hover, .compact-card.selected { border-color: #9cb8da; background: var(--brand-soft); }
.compact-card strong { font-size: 18px; }
.compact-card small { color: var(--muted); }
.absence-code { display: inline-flex; width: fit-content; padding: 3px 8px; border-radius: 999px; background: var(--nav); color: white; font-size: 10px; font-weight: 850; letter-spacing: .05em; }
.absence-code-cp { background:#f0eaff; color:#6341a5; }
.absence-code-mal { background:#ffeaed; color:#a32739; }
.absence-code-at { background:#fff0d8; color:#8b5100; }
.absence-code-css { background:#edf0f4; color:#46576a; }
.absence-code-abs { background:#eaf1ff; color:#24518a; }
.absence-code-aut { background:#e4f6ef; color:#176347; }
.absence-code-inj { background:#ffe8dc; color:#9a3f15; }
.absence-code-formation { background:#e1f4f3; color:#176b68; }
.absence-code small { margin-left:3px; font-size:9px; opacity:.8; }
.movement-absence-tools { display:grid; grid-template-columns:auto minmax(240px,520px) auto; gap:10px 14px; align-items:center; padding:0 22px 14px; }
.movement-absence-tools label { color:var(--muted); font-size:13px; font-weight:700; }
.movement-absence-tools .form-control { width:100%; height:44px; }
.movement-employee-list { display:grid; gap:10px; padding:0 22px 22px; }
.movement-employee-list [hidden] { display:none !important; }
.movement-calendar-group { border:1px solid var(--line); border-radius:12px; overflow:hidden; background:#fff; }
.movement-calendar-group > summary { display:flex; align-items:center; gap:10px; padding:13px 16px; cursor:pointer; list-style:none; background:#eef4fa; }
.movement-calendar-group > summary::-webkit-details-marker { display:none; }
.movement-calendar-group > summary small { margin-left:auto; color:var(--muted); }
.movement-calendar-group > summary .assignment-chevron { transition:transform .15s ease; }
.movement-calendar-group[open] > summary .assignment-chevron { transform:rotate(90deg); }
.movement-calendar-children { display:grid; gap:9px; padding:10px; }
.movement-week-group > summary { background:#f6f9fc; }
.movement-week-group .movement-employee-name small { white-space:normal; line-height:1.4; }
.movement-employee-group { overflow:hidden; border:1px solid var(--line); border-radius:12px; background:#fff; }
.movement-employee-group > summary { display:grid; grid-template-columns:24px minmax(180px,1fr) auto; gap:12px; align-items:center; padding:14px 16px; list-style:none; cursor:pointer; background:#f7f9fa; }
.movement-employee-group > summary::-webkit-details-marker { display:none; }
.movement-employee-group .assignment-chevron { transition:transform .15s ease; }
.movement-employee-group[open] .assignment-chevron { transform:rotate(90deg); }
.movement-employee-group[open] > summary { border-bottom:1px solid var(--line); background:#f2f6fa; }
.movement-employee-name strong,.movement-employee-name small { display:block; }
.movement-employee-name small { margin-top:3px; color:var(--muted); }
.movement-employee-motifs { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.movement-absence-periods { display:grid; gap:10px; padding:12px; }
.movement-absence-period { min-width:0; padding:14px 16px; border:1px solid var(--line); border-radius:10px; background:white; }
.movement-absence-period-head { display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.movement-absence-period-title { flex:1 1 220px; min-width:0; }
.movement-absence-period-title strong,.movement-absence-period-title small { display:block; }
.movement-absence-period-title small { margin-top:3px; color:var(--muted); }
.movement-absence-meta { display:flex; flex-wrap:wrap; gap:6px 18px; margin-top:12px; color:var(--muted); font-size:12px; }
.movement-absence-meta strong { color:var(--text); }
.movement-absence-days { margin-top:10px; color:var(--brand-dark); font-size:12px; }
.movement-absence-days summary { width:fit-content; cursor:pointer; font-weight:700; }
.movement-absence-days ul { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:4px 18px; margin:8px 0 0; padding-left:18px; color:var(--muted); }
.movement-absence-actions { justify-content:flex-end; margin-top:10px; }
[data-instant-filter-empty][hidden] { display:none !important; }
.separated-list, .movement-section { margin-bottom: 20px; }
.padded-list { padding: 0 22px 22px; }
.unread-row { background: #eef5ff; }
.unread-row:hover { background: #e5f0ff; }
.section-tabs { display: flex; width: fit-content; gap: 7px; margin: 0 0 18px; padding: 5px; border: 1px solid var(--line); border-radius: 11px; background: white; box-shadow: var(--shadow); }
.section-tabs a { display: inline-flex; align-items: center; gap: 8px; padding: 10px 15px; border-radius: 8px; color: var(--brand-dark); font-size: 13px; font-weight: 760; }
.section-tabs a:hover { background: var(--brand-soft); }
.section-tabs a.active { background: var(--brand); color: white; }
.section-tabs a span { min-width: 21px; height: 21px; padding: 0 6px; display: inline-grid; place-items: center; border-radius: 999px; background: #edf1f3; color: #53616c; font-size: 10px; }
.section-tabs a.active span { background: rgba(255,255,255,.22); color: white; }
.pennylane-table select { min-width: 310px; }
.inline-form { display: flex; gap: 8px; }
.note-panel { max-width: 900px; }
.note-panel p { margin-bottom: 0; }
.info-box { margin-top: 20px; background: #f0f5f7; color: #53616c; border-radius: 10px; padding: 13px; font-size: 13px; line-height: 1.5; }
.read-only-notice { border-left: 4px solid var(--brand); margin: 0 0 16px; }
.compact-panel { padding: 15px 18px; margin-bottom: 16px; display: flex; justify-content: space-between; align-items: center; gap: 18px; }
.compact-panel small { display: block; color: var(--muted); margin-top: 4px; }
.compact-panel form { display: flex; gap: 8px; }
.address-cell { min-width: 230px; max-width: 340px; white-space: normal; line-height: 1.35; }
.map-link { color:inherit; font-weight:inherit; text-decoration:none; }
.map-link:hover span { color:var(--brand-dark); text-decoration:underline; text-underline-offset:2px; }
.map-link-icon { width:11px; height:11px; margin-left:3px; vertical-align:-1px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; color:var(--brand); }
.duplicate-section { margin-bottom: 26px; }
.panel-header.standalone { margin-bottom: 14px; padding: 0 0 12px; }
.duplicate-card { margin-bottom: 12px; }
.duplicate-records { display: grid; gap: 8px; margin: 14px 0; }
.duplicate-records > div { border: 1px solid var(--line); border-radius: 9px; padding: 10px 12px; }
.duplicate-records strong, .duplicate-records small { display: block; }
.duplicate-records small { color: var(--muted); margin-top: 4px; }
.duplicate-actions, .duplicate-actions form { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; }
.duplicate-actions { justify-content: flex-end; border-top: 1px solid var(--line); padding-top: 13px; }
.duplicate-actions label { color: var(--muted); font-size: 11px; font-weight: 750; }
.duplicate-actions select { margin-top: 5px; min-width: 260px; }
.search-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.search-panel .panel-header { align-items: center; }
.search-result { display: block; padding: 11px 4px; border-bottom: 1px solid var(--line); }
.search-result:last-child { border-bottom: 0; }
.search-result:hover strong { color: var(--brand-dark); }
.search-result strong, .search-result small { display: block; }
.search-result small { color: var(--muted); margin-top: 4px; }
.global-results-search { max-width: 900px; }

.print-page { background: #eef2f5; color: #111; padding: 18px; }
.print-toolbar { max-width: 1500px; margin: 0 auto 16px; padding: 12px 16px; display: flex; justify-content: space-between; align-items: center; gap: 20px; background: white; border-radius: 10px; box-shadow: var(--shadow); }
.print-toolbar strong, .print-toolbar small { display: block; }
.print-toolbar small { color: var(--muted); margin-top: 4px; }
.print-sheet { width: 100%; max-width: 1500px; min-height: 760px; margin: 0 auto 20px; padding: 18px; background: white; box-shadow: var(--shadow); break-after: page; }
.print-sheet-header { display: flex; justify-content: space-between; align-items: flex-start; border-bottom: 3px solid var(--brand); padding-bottom: 10px; }
.print-sheet-header h1 { font-size: 20px; margin: 3px 0 0; }
.print-departure { margin: 8px 0; padding: 6px 9px; border-left: 3px solid var(--brand); background: #edf4fb; color: #1b506f; font-size: 10px; font-weight: 800; }
.dashboard-finance-loading { margin: 16px 0; padding: 18px; color: #637385; }
.pointage-table .outside-employment, .print-pointage-table .outside-employment { background: #edf0f3; }
.pointage-employment-banner { display:flex; align-items:center; gap:18px; flex-wrap:wrap; margin:0 0 16px; padding:12px 16px; border:1px solid #b6c7d5; border-left:5px solid var(--brand); border-radius:10px; background:#edf4fb; color:#183d58; }
.pointage-employment-dates { display:flex; gap:18px; flex-wrap:wrap; }
.pointage-employment-dates div { display:grid; gap:2px; padding-right:18px; border-right:1px solid #b6c7d5; }
.pointage-employment-dates span { font-size:10px; font-weight:800; letter-spacing:.09em; }
.pointage-employment-dates strong { font-size:17px; line-height:1.1; white-space:nowrap; }
.pointage-employment-banner p { margin:0; font-size:12px; line-height:1.4; }
.print-employment-banner { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:8px 0; padding:7px 10px; border-left:4px solid var(--brand); background:#edf4fb; color:#1b506f; font-size:9px; font-weight:700; }
.print-employment-dates { display:flex; gap:12px; font-size:11px; white-space:nowrap; }
.print-employment-dates b { font-size:8px; letter-spacing:.04em; }
.pointage-table th.outside-employment, .print-pointage-table th.outside-employment { background:#6d7b87 !important; color:#fff !important; }
.pointage-table th.outside-employment small, .print-pointage-table th.outside-employment small { color:#eef2f5; }
.pointage-table td.outside-employment, .print-pointage-table td.outside-employment { background:#d8dfe5 !important; color:#40515e; box-shadow:inset 2px 0 0 #b5c0c9; }
.pointage-table td.outside-employment input { color:#40515e; }
.print-brand { color: var(--brand-dark); font-size: 11px; font-weight: 900; letter-spacing: .16em; }
.print-company-picker { max-width: 780px; margin: 8vh auto; padding: clamp(22px, 5vw, 44px); background: #fff; border: 1px solid var(--line); border-radius: 20px; box-shadow: var(--shadow); }
.print-company-picker h1 { margin: 8px 0; font-size: clamp(25px, 4vw, 34px); }
.print-company-picker header > p { max-width: 650px; color: var(--muted); }
.print-company-picker form { margin-top: 28px; }
.print-company-options { display: grid; gap: 12px; margin: 0 0 24px; padding: 0; border: 0; }
.print-company-option { display: flex; align-items: center; gap: 14px; padding: 17px 18px; border: 1px solid var(--line); border-radius: 14px; cursor: pointer; }
.print-company-option:has(input:checked) { border-color: var(--brand); background: #f1f6fb; box-shadow: 0 0 0 2px color-mix(in srgb, var(--brand) 14%, transparent); }
.print-company-option input { width: 20px; height: 20px; accent-color: var(--brand); }
.print-company-option strong, .print-company-option small { display: block; }
.print-company-option small { margin-top: 4px; color: var(--muted); }
.print-company-divider { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin: 0 0 8px; padding: 7px 10px; border-left: 4px solid var(--brand); background: #eef4fa; color: var(--brand-dark); }
.print-company-divider strong { text-transform: uppercase; letter-spacing: .08em; }
.print-company-divider span { color: var(--muted); font-size: 10px; }
.print-period { text-align: right; }
.print-period strong, .print-period span { display: block; }
.print-period span { color: #555; margin-top: 3px; font-size: 10px; }
.print-identity { display: grid; grid-template-columns: 1.6fr .8fr .7fr .8fr .9fr .9fr; margin: 10px 0; border: 1px solid #999; }
.print-identity div { padding: 6px 8px; border-right: 1px solid #999; }
.print-identity div:last-child { border-right: 0; }
.print-identity dt { font-size: 7px; font-weight: 800; color: #555; text-transform: uppercase; }
.print-identity dd { margin: 2px 0 0; font-size: 10px; font-weight: 750; }
.print-identity .print-overtime dd { color: #b4232a; }
.print-contract { display: flex; gap: 18px; margin: -4px 0 8px; padding: 5px 8px; border: 1px solid #aaa; border-top: 0; }
.print-contract div { display: flex; align-items: baseline; gap: 5px; }
.print-contract dt { color: #555; font-size: 7px; font-weight: 800; text-transform: uppercase; }
.print-contract dd { margin: 0; font-size: 8px; font-weight: 750; }
.print-pointage-table { table-layout: fixed; border-collapse: collapse; font-size: 6.5px; }
.print-pointage-table th, .print-pointage-table td { border: 1px solid #777; padding: 2px 1px; text-align: center; height: 17px; }
.print-pointage-table th { background: #24424d; color: white; font-size: 6px; }
.print-pointage-table th small { display: block; color: #d2dde1; font-size: 5px; }
.print-pointage-table .print-client { width: 120px; text-align: left; padding-left: 4px; font-size: 7px; }
.print-pointage-table .print-total { width: 52px; min-width: 52px; max-width: 52px; box-sizing: border-box; white-space: nowrap; overflow: hidden; font-variant-numeric: tabular-nums; }
.print-pointage-table .print-total strong { display: block; overflow: hidden; text-overflow: clip; white-space: nowrap; }
.print-pointage-table tbody td strong { font-size:7px; font-weight:600; line-height:1.2; }
.print-pointage-table tbody .print-total { background:#f6f8fa; font-size:7px; }
.print-pointage-table .weekend { background: #e8edf0; }
.print-pointage-table th.weekend { background: #172f39; }
.print-pointage-table tfoot td { background: var(--brand-soft); font-size: 8px; font-weight: 800; }
.print-pointage-table .overtime-row td { color: #b4232a; font-weight: 800; }
.print-pointage-table .overtime-cell { background: #ffe3e3 !important; color: #a31624; font-weight: 900; box-shadow: inset 0 0 0 1px #d92d3a; }
.print-overtime-summary { margin-top: 10px; padding: 8px; border: 1px solid #cc8186; background: #fff8f8; font-size: 8px; break-inside: avoid; }
.print-overtime-summary > strong { display: block; margin-bottom: 5px; color: #a31624; }
.print-overtime-summary table { width: 100%; border-collapse: collapse; }
.print-overtime-summary th, .print-overtime-summary td { border: 1px solid #d7b3b5; padding: 4px; text-align: left; vertical-align: top; }
.print-pointage-table .absence-grid-row td { background: #fff8e8; border-top: 2px solid #d8bb76; }
.print-pointage-table .absence-grid-row td strong { display: block; color: #805b08; font-weight: 800; }
.print-pointage-table .absence-grid-row td small { display: block; color: #6d5a31; font-size: 5px; }
.print-admin-elements { display: flex; flex-wrap: wrap; gap: 6px 18px; margin-top: 9px; padding: 7px 9px; border: 1.5px solid #4b5960; font-size: 8px; }
.print-admin-elements strong { width: 100%; }
.print-admin-note { flex-basis: 100%; margin: 2px 0 0; padding-top: 6px; border-top: 1px solid #aeb9bf; white-space: normal; line-height: 1.4; }
.print-empty { max-width: 700px; margin: 100px auto; text-align: center; }
.request-context { max-width: 920px; margin: -8px 0 16px; }
.request-list { display: grid; gap: 16px; }
.request-card { max-width: 1120px; }
.request-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; border-bottom: 1px solid var(--line); padding-bottom: 14px; }
.request-card-head p { margin-bottom: 0; }
.request-details { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 15px; margin: 18px 0 0; }
.request-details div { min-width: 0; }
.request-details .wide { grid-column: 1 / -1; }
.request-details dt { color: var(--muted); font-size: 11px; font-weight: 760; text-transform: uppercase; letter-spacing: .045em; }
.request-details dd { margin: 5px 0 0; line-height: 1.45; }
.review-form { display: grid; gap: 12px; border-top: 1px solid var(--line); margin-top: 18px; padding-top: 16px; }
.review-form label { color: var(--muted); font-size: 12px; font-weight: 700; }
.review-form textarea { margin-top: 6px; min-height: 70px; }
.review-form > div { display: flex; justify-content: flex-end; gap: 10px; }
.review-meta { display: block; color: var(--muted); border-top: 1px solid var(--line); margin-top: 18px; padding-top: 14px; }
.timeline { display: grid; gap: 15px; }
.timeline > div { position: relative; padding-left: 22px; }
.timeline-dot { position: absolute; left: 0; top: 5px; width: 10px; height: 10px; border-radius: 50%; background: #7c8c94; }
.timeline-dot.success { background: var(--brand); }
.timeline-dot.error { background: var(--danger); }
.timeline strong, .timeline small { display: block; }
.timeline small { color: var(--muted); margin: 3px 0; }
.timeline p { margin: 0; font-size: 12px; }
.error-page { max-width: 620px; padding: 70px 0; }
.error-page > span { color: var(--danger); font-weight: 800; text-transform: uppercase; font-size: 11px; letter-spacing: .12em; }

.planning-models { margin-top: 22px; }
.planning-models .panel-header, .table-panel > .panel-header { padding: 20px 22px 16px; margin: 0; }
.planning-heading { align-items: center; }
.planning-editor { display: grid; gap: 9px; }
.planning-meta { padding: 18px; }
.planning-site-card { padding: 0; overflow: hidden; }
.planning-site-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 14px 0 0; background: #f7f9fb; }
.planning-site-toggle { min-width: 0; flex: 1; display: flex; align-items: center; gap: 10px; padding: 12px 18px; border: 0; background: transparent; color: var(--ink); text-align: left; cursor: pointer; }
.planning-site-toggle:hover .planning-site-summary strong { color: var(--brand-dark); }
.planning-site-chevron { width: 28px; height: 28px; flex: 0 0 28px; display: grid; place-items: center; border-radius: 50%; background: var(--brand-soft); color: var(--brand-dark); font-size: 23px; font-weight: 900; line-height: 1; transition: transform .16s ease, background .16s ease; }
.planning-site-card.expanded .planning-site-chevron { transform: rotate(90deg); background: #dbeafb; }
.planning-site-summary { min-width: 0; display: block; }
.planning-site-summary strong, .planning-site-summary small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.planning-site-summary small { margin-top: 3px; color: var(--muted); font-size: 11px; }
.planning-site-body { border-top: 1px solid var(--line); padding-bottom: 1px; }
.planning-site-body[hidden] { display: none; }
.planning-site-name { flex: 1; }
.planning-site-name label { display: grid; grid-template-columns: 90px minmax(220px, 460px); align-items: center; gap: 10px; font-size: 12px; font-weight: 800; }
.planning-site-body .planning-site-name { padding: 14px 18px 0; }
.planning-site-name small { display: block; margin: 5px 0 0 100px; color: var(--muted); }
.button.compact { min-height: 34px; padding: 6px 11px; font-size: 12px; }
.planning-task-table { min-width: 1220px; }
.planning-task-table th, .planning-task-table td { padding: 8px; text-align: center; border-right: 1px solid #edf1f3; }
.planning-task-table th:nth-child(3), .planning-task-table td:nth-child(3),
.planning-task-table th:nth-child(6), .planning-task-table td:nth-child(6),
.planning-task-table th:nth-child(8), .planning-task-table td:nth-child(8),
.planning-task-table th:nth-child(10), .planning-task-table td:nth-child(10) { border-left: 2px solid #d3dee5; }
.planning-task-table tbody tr:nth-child(even) { background: #fcfdfe; }
.planning-task-table tbody tr:hover { background: #f0f6fd; }
.planning-task-table th:nth-child(10), .planning-task-table td:nth-child(10) { text-align: left; min-width: 220px; }
.planning-task-table th:nth-child(7), .planning-task-table td:nth-child(7),
.planning-task-table th:nth-child(9), .planning-task-table td:nth-child(9) { min-width: 170px; }
.compact-control { min-width: 96px; min-height: 35px; padding: 6px 8px; }
.micro-control { min-width: 96px; min-height: 31px; padding: 5px 7px; margin-top: 5px; font-size: 11px; }
.frequency-cell { min-width: 126px; background: #fafcfd; }
.frequency-cell .frequency-select, .frequency-cell .frequency-note-select, .frequency-cell .frequency-note-custom { width: 118px; min-width: 118px; }
.frequency-cell .frequency-note-select[hidden], .frequency-cell .frequency-note-custom[hidden] { display: none; }
.planning-text { min-width: 175px; min-height: 35px; padding: 6px 8px; }
.check-cell input { width: 21px; height: 21px; accent-color: var(--brand); }
.check-cell .bin-blue { accent-color: #1757a6; }
.check-cell .bin-yellow { accent-color: #d2a300; }
.bin-choice.blue { color: #1757a6; font-weight: 800; background: #e8f1fb; }
.bin-choice.yellow { color: #8a6700; font-weight: 800; background: #fff7cc; }
.bin-choice.verify { color: var(--danger); font-weight: 800; background: #fde9e9; }
.add-planning-site { display: flex; align-items: flex-end; gap: 12px; }
.add-planning-site label { flex: 1; font-size: 12px; font-weight: 800; }
.add-planning-site select { margin-top: 7px; }
.select-search { margin: 7px 0; font-weight: 500; }
.select-search + select { margin-top: 0; }
.planning-actions { gap: 20px; }
.planning-actions > div { display: flex; flex-wrap: wrap; gap: 9px; }
.assignment-line-panel { margin: 0 16px 16px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px; background: #fbfcfd; }
.assignment-line-panel summary { cursor: pointer; font-weight: 800; color: var(--brand-dark); }
.assignment-line-panel > p { margin: 8px 0 10px; color: var(--muted); font-size: 12px; }
.assignment-line-table { min-width: 1280px; }
.assignment-line-table th, .assignment-line-table td { padding: 6px; text-align: center; }
.assignment-line-table .compact-number { min-width: 74px; }
.assignment-line-table .assignment-field-invalid { border:2px solid var(--danger); background:#fff0f0; box-shadow:0 0 0 2px rgba(190,40,47,.12); }
.planning-assignment-error[hidden] { display:none; }
.planning-base-summary { padding: 0 22px 18px; }

.password-required-card { max-width: 720px; margin: 40px auto; padding: 28px; }
.password-required-card h1 { margin: 7px 0 9px; }
.password-required-card p { color: var(--muted); max-width: 620px; }
.narrow-form { max-width: 520px; margin-top: 22px; }
.complaint-status-tabs { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 16px; padding: 5px; border: 1px solid var(--line); border-radius: 11px; background: white; box-shadow: var(--shadow); }
.complaint-status-tabs a { display: inline-flex; align-items: center; gap: 7px; padding: 9px 12px; border-radius: 8px; color: var(--brand-dark); font-size: 12px; font-weight: 760; }
.complaint-status-tabs a:hover, .complaint-status-tabs a.active { background: var(--brand); color: white; }
.complaint-status-tabs a span { min-width: 20px; padding: 2px 6px; border-radius: 999px; background: #edf1f3; color: #53616c; text-align: center; font-size: 10px; }
.complaint-status-tabs a.active span { background: rgba(255,255,255,.22); color: white; }
.complaint-filter-panel { padding: 12px 16px; margin-bottom: 16px; }
.complaint-filter-panel .inline-form { width: min(100%, 700px); }
.complaint-filter-panel .form-control { flex: 1; }
.complaint-list { display: grid; gap: 14px; }
.complaint-card { max-width: 1160px; padding: 0; overflow: hidden; }
.complaint-card.urgent { border-left: 5px solid var(--danger); }
.complaint-card-head { display: flex; justify-content: space-between; gap: 20px; padding: 18px 20px 14px; border-bottom: 1px solid var(--line); }
.complaint-card-head h2 { margin: 9px 0 3px; font-size: 18px; }
.complaint-card-head h2 a { color: var(--ink); }
.complaint-card-head h2 a:hover { color: var(--brand-dark); }
.complaint-card-head p { margin: 0; color: var(--muted); }
.complaint-card-date { min-width: 110px; text-align: right; }
.complaint-card-date strong, .complaint-card-date small { display: block; }
.complaint-card-date small { margin-top: 5px; color: var(--muted); }
.complaint-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; padding: 16px 20px; margin: 0; }
.complaint-summary dt, .complaint-details dt { color: var(--muted); font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.complaint-summary dd, .complaint-details dd { margin: 4px 0 0; line-height: 1.45; }
.complaint-summary .wide { grid-column: 1 / -1; }
.complaint-card-foot { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 11px 20px; border-top: 1px solid var(--line); background: #fbfcfd; color: var(--muted); font-size: 11px; }
.complaint-card-foot .table-link { margin-left: auto; }
.complaint-detail-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(280px, .8fr); gap: 18px; align-items: start; }
.complaint-main-panel, .complaint-side-panel, .complaint-action-panel { overflow: hidden; }
.complaint-details { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; padding: 20px; margin: 0; }
.complaint-details .wide { grid-column: 1 / -1; }
.complaint-details dd small { display: block; margin-top: 4px; color: var(--muted); }
.preformatted { white-space: pre-wrap; }
.complaint-return, .complaint-response { margin: 0 20px 20px; padding: 15px 17px; border-radius: 10px; background: #f0f5f7; }
.complaint-response { background: #eaf8f1; }
.complaint-return h3, .complaint-response h3 { margin: 0 0 3px; font-size: 14px; }
.complaint-return small, .complaint-response small { color: var(--muted); }
.complaint-return p, .complaint-response p { margin: 10px 0 0; }
.complaint-photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; padding: 16px; }
.complaint-photos a { display: block; overflow: hidden; border: 1px solid var(--line); border-radius: 9px; background: #f4f7f8; }
.complaint-photos img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; }
.complaint-photo-section { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); }
.complaint-action-panel { margin-top: 18px; }
.complaint-action-panel > .stack-form, .complaint-action-panel > .inline-form { padding: 0 20px 20px; }
.complaint-start-form { padding-top: 0 !important; margin-top: -6px; margin-bottom: 9px; }
.compact-info { margin: 0; align-self: end; }
.check-label { display: flex; align-items: center; gap: 8px; }
.check-label input { width: 19px; height: 19px; accent-color: var(--brand); }
.audit-request-check { padding:14px 16px; border:1px solid #b9cfe6; border-radius:10px; background:#f2f7fc; }
.audit-request-check .check-label { color:var(--ink); font-weight:800; }
.audit-request-check>small { margin:4px 0 0 27px; color:var(--muted); }
.audit-request-panel { border-left:4px solid var(--brand); }
.credentials-box small { display: block; margin-top: 7px; color: var(--muted); }

@media (max-width: 900px) {
    .complaint-detail-grid { grid-template-columns: 1fr; }
    .complaint-summary, .complaint-details { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 620px) {
    .complaint-card-head { flex-direction: column; gap: 8px; }
    .complaint-card-date { text-align: left; }
    .complaint-summary, .complaint-details { grid-template-columns: 1fr; }
    .complaint-summary .wide, .complaint-details .wide { grid-column: auto; }
    .complaint-card-foot .table-link { margin-left: 0; width: 100%; }
}
.update-assignment-choice { display: flex; align-items: center; gap: 8px; max-width: 420px; font-size: 12px; color: var(--muted); }
.update-assignment-choice input { width: 18px; height: 18px; accent-color: var(--brand); }
.status.returned { background: #fff0d8; color: #8a4b00; }
.calendar-month-grid { display: grid; grid-template-columns: repeat(7, minmax(150px, 1fr)); gap: 10px; align-items: stretch; overflow-x: auto; padding-bottom: 8px; }
.calendar-day { min-height: 130px; padding: 12px; margin: 0; }
.calendar-day > header { padding-bottom: 8px; margin-bottom: 8px; border-bottom: 1px solid var(--line); color: var(--brand); }
.calendar-day.weekend { background: #f5f7fa; }
.calendar-event { margin-top: 7px; padding: 7px 8px; border-radius: 7px; font-size: 11px; line-height: 1.3; }
.calendar-event strong, .calendar-event small { display: block; }
.calendar-event.absence { background: #fff0d8; color: #774300; }
.calendar-event.replacement { background: #e8f1ff; color: #164a88; }
.dashboard-grid.two-columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }

@media (max-width: 1100px) {
    .comparison-grid { grid-template-columns: repeat(3, 1fr); }
    .annual-grid { grid-template-columns: 1fr; }
    .metric-grid.five { grid-template-columns: repeat(3, 1fr); }
    .metric-grid.six { grid-template-columns: repeat(3, 1fr); }
    .global-search { display: none; }
    .metric-grid { grid-template-columns: repeat(2, 1fr); }
    .pointage-summary { grid-template-columns: repeat(2, 1fr); }
    .pointage-contract-details { grid-template-columns: repeat(2, 1fr); }
    .finance-grid { grid-template-columns: repeat(2, 1fr); }
    .finance-overview-grid, .finance-ranking-grid { grid-template-columns: 1fr; gap: 20px; margin-block: 20px; }
    .finance-section-heading { align-items: stretch; flex-direction: column; }
    .finance-section-heading .inline-form, .finance-filter-form, .finance-filter-form.client-sort-form, .finance-filter-form.employee-sort-form { min-width: 0; width: 100%; }
    .finance-filter-form.client-sort-form, .finance-filter-form.employee-sort-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 820px) {
    .app-shell { display: block; }
    .sidebar { position: fixed; width: 260px; transform: translateX(-105%); transition: transform .2s ease; box-shadow: 15px 0 40px rgba(0,0,0,.25); }
    .sidebar.open { transform: translateX(0); }
    .menu-button { display: block; }
    .topbar { padding: 0 18px; }
    .content-wrap { padding: 22px 16px; }
    .page-heading { flex-direction: column; }
    .dashboard-grid, .role-grid { grid-template-columns: 1fr; }
    .dashboard-grid.two-columns { grid-template-columns: 1fr; }
    .two-column-layout { grid-template-columns: 1fr; }
    .comparison-grid { grid-template-columns: repeat(2, 1fr); }
    .section-heading { align-items: stretch; flex-direction: column; }
    .search-grid { grid-template-columns: 1fr; }
    .compact-panel { align-items: stretch; flex-direction: column; }
    .compact-panel .heading-actions, .compact-panel form { width: 100%; }
    .form-grid.two { grid-template-columns: 1fr; }
    .request-details { grid-template-columns: 1fr 1fr; }
    .span-two { grid-column: auto; }
    .weekly-plan-grid { grid-template-columns: repeat(4, minmax(72px, 1fr)); }
    .planning-site-head, .add-planning-site { align-items: stretch; flex-direction: column; }
    .planning-site-name label { grid-template-columns: 1fr; }
    .planning-site-name small { margin-left: 0; }
}

@media (max-width: 560px) {
    .metric-grid, .finance-grid { grid-template-columns: 1fr; }
    .comparison-grid { grid-template-columns: 1fr; }
    .trend-bars > div { grid-template-columns: 30px 1fr 82px; }
    .trend-bars small { display: none; }
    .metric-card { min-height: 120px; }
    .auth-shell { padding: 16px; }
    .auth-card { padding: 24px; }
    .pointage-summary { grid-template-columns: 1fr; }
    .pointage-contract-details { grid-template-columns: 1fr; }
    .filter-bar, .inline-form, .sticky-actions { flex-direction: column; align-items: stretch; }
    .finance-filter-form { grid-template-columns: 1fr; }
    .finance-subnav { position: static; width: 100%; justify-content: space-between; }
    .section-tabs { width: 100%; overflow-x: auto; }
    .section-tabs a { white-space: nowrap; }
    .request-card-head { flex-direction: column; }
    .request-details { grid-template-columns: 1fr; }
    .global-month label { display: none; }
    .local-status { display: none; }
    .metric-grid.five { grid-template-columns: 1fr; }
    .metric-grid.six { grid-template-columns: 1fr; }
    .weekly-plan-grid { grid-template-columns: repeat(2, minmax(72px, 1fr)); }
}

@media print {
    @page { size: A4 landscape; margin: 6mm; }
    .print-page { background: white; padding: 0; }
    .print-toolbar { display: none; }
    .print-company-divider { break-after: avoid; }
    .print-sheet { width: 100%; max-width: none; min-height: 0; margin: 0; padding: 0 2px 0 0; box-shadow: none; break-after: page; page-break-after: always; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
    .print-sheet:last-child { break-after: auto; page-break-after: auto; }
    .print-pointage-table { font-size: 6px; }
    .print-pointage-table th, .print-pointage-table td { height: 16px; padding: 1px; }
    .print-pointage-table .print-client { width: 105px; }
}

/* V10 calendar distinctions */
.calendar-legend { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 18px; font-size: 12px; }
.calendar-legend .legend { border-radius: 999px; padding: 5px 9px; border: 1px solid var(--line); background: #fff; }
.calendar-event.absence-open, .calendar-legend .absence-open { background: #fff0d8; color: #774300; }
.calendar-event.absence-replaced, .calendar-legend .absence-replaced { background: #e7f8ef; color: #17613a; }
.calendar-event.absence-partial, .calendar-legend .absence-partial { background: #e5f4ea; color: #205d3d; border-left: 3px solid #d69b28; }
.calendar-event.absence-pending, .calendar-legend .absence-pending { background: #f4edf9; color: #5e2f7e; }
.calendar-event.appointment, .calendar-legend .appointment { background: #eef6ff; color: #174c78; }
.calendar-event.birthday, .calendar-legend .birthday { background: #fff3c8; color: #765400; }
.dashboard-followup-grid { margin-top: 14px; }

.calendar-day.outside-month { opacity: .55; }
.calendar-day.outside-month > header { color: var(--muted); }
.calendar-week-switcher { display:flex; align-items:center; justify-content:space-between; gap:12px; width:100%; margin:0 0 22px; padding:6px 8px; border:1px solid var(--line); border-radius:18px; background:#fff; box-shadow:0 8px 24px rgba(24,48,77,.06); }
.calendar-week-arrow { display:flex; flex:none; align-items:center; justify-content:center; width:40px; height:40px; border:1px solid #d7e4f2; border-radius:12px; background:#f3f8fd; color:var(--brand); font-size:30px; line-height:1; text-decoration:none; transition:background .15s ease, transform .15s ease; }
.calendar-week-arrow:hover,.calendar-week-arrow:focus-visible { background:#e2eefb; transform:translateY(-1px); }
.calendar-week-arrow:focus-visible { outline:3px solid var(--brand); outline-offset:2px; }
.calendar-week-current { display:flex; flex-direction:column; align-items:center; min-width:0; text-align:center; line-height:1.3; }
.calendar-week-current span { color:var(--muted); font-size:9px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.calendar-week-current strong { color:var(--ink); font-size:18px; }
.calendar-week-current small { color:var(--muted); font-size:11px; }
.calendar-weeks { display:grid; gap:12px; }
.calendar-week { display:grid; grid-template-columns:70px repeat(7,minmax(0,1fr)); border:1px solid var(--line); border-radius:16px; overflow:hidden; background:white; }
.calendar-week .calendar-day { border:0; border-left:1px solid var(--line); border-radius:0; min-width:0; padding:8px; overflow-wrap:anywhere; box-shadow:none; }
.week-number { display:flex; flex-direction:column; align-items:center; justify-content:center; color:var(--brand); gap:8px; }
.week-number small { font-size:10px; }.week-number strong { font-size:28px; }
.category-filters { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px; }
.backlog-section { margin-top:16px; }
.backlog-dispatch { margin:24px 0 8px; max-width:100%; }
.backlog-dispatch-heading { display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:10px 18px; margin-bottom:8px; }
.backlog-dispatch-heading h2 { margin:0; font-size:1.1rem; }
.backlog-dispatch-heading p { margin:4px 0 0; color:var(--muted); }
.backlog-dispatch-list { border-top:1px solid var(--line); }
.backlog-dispatch-row { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:12px 18px; padding:10px 0; border-bottom:1px solid var(--line); }
.backlog-dispatch-name { min-width:0; overflow-wrap:anywhere; }
.backlog-dispatch-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:8px; }
.backlog-dispatch-actions form { margin:0; }
.backlog-dispatch-subtitle { margin:18px 0 8px; font-size:1rem; }
.backlog-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:10px; }
.backlog-day { min-width:0; min-height:150px; border:1px solid var(--line); border-radius:12px; background:#fbfcfd; overflow:hidden; }
.backlog-day.focus-day, .backlog-sunday.focus-day { border:2px solid #2764b2; box-shadow:0 0 0 3px #2764b22b; }
.backlog-day > header { display:flex; justify-content:space-between; gap:6px; padding:10px; background:#f0f3f5; color:var(--ink); font-size:13px; text-transform:capitalize; }
.backlog-day > header span { color:var(--muted); white-space:nowrap; }
.backlog-card { display:grid; gap:8px; padding:10px; border-top:1px solid var(--line); overflow-wrap:anywhere; }
.backlog-cancel-form { margin:0; justify-self:start; }
.backlog-cancel { border:0; padding:0; background:none; color:#a6373c; font:inherit; font-size:.82rem; font-weight:700; cursor:pointer; }
.backlog-cancel:hover { text-decoration:underline; }
.backlog-card.self-covered {
  --self-covered-accent:#6d28d9;
  --self-covered-soft:#f5efff;
  --self-covered-badge:#ede9fe;
  background:var(--self-covered-soft);
  border-left:4px solid var(--self-covered-accent);
  grid-template-columns:minmax(0,1fr) auto;
  align-items:start;
}
.backlog-card.self-covered-evan { --self-covered-accent:#2563b9; --self-covered-soft:#eef5ff; --self-covered-badge:#dbeafe; }
.backlog-card.self-covered-cyril { --self-covered-accent:#13847b; --self-covered-soft:#edf9f7; --self-covered-badge:#dff5f1; }
.backlog-card.self-covered-souleymane { --self-covered-accent:#bb7719; --self-covered-soft:#fff8ea; --self-covered-badge:#ffedc7; }
.backlog-card.self-covered-ben { --self-covered-accent:#72529f; --self-covered-soft:#f5efff; --self-covered-badge:#ede9fe; }
.backlog-card .self-covered-label { color:var(--self-covered-accent); font-weight:700; }
.self-covered-status { background:var(--self-covered-badge); color:var(--self-covered-accent); width:max-content; justify-self:end; }
.backlog-unassign { color:var(--self-covered-accent); font-size:.82rem; font-weight:700; justify-self:end; text-decoration:underline; }
.backlog-overtime-option { margin:8px 0 0; padding:14px; border:1px solid var(--line); border-radius:10px; background:#f8fafc; }
.backlog-overtime-option legend { padding:0 5px; color:var(--ink); font-weight:750; }
.backlog-overtime-option .backlog-option-toggle { display:flex; align-items:center; gap:9px; font-weight:700; }
.backlog-overtime-option .help-text { display:block; margin:7px 0 0 28px; color:var(--muted); font-weight:400; line-height:1.45; }
.backlog-overtime-option > label:not(.backlog-option-toggle) { display:block; margin-top:12px; }
.backlog-card > div:first-child { display:grid; gap:5px; }
.backlog-site-link { color:var(--brand); font-weight:700; text-decoration:none; }
.backlog-site-link:hover { text-decoration:underline; }
.backlog-card small { color:var(--muted); line-height:1.35; }
.backlog-card-action { display:flex; flex-wrap:wrap; }
.pointage-convert-cell { display:block; margin:3px auto 0; padding:1px 4px; border:1px solid #ef4444; border-radius:5px; background:#fff5f5; color:#b91c1c; font-size:9px; font-weight:800; line-height:1.2; cursor:pointer; }
.pointage-convert-line { border:0; background:transparent; padding:0; cursor:pointer; font:inherit; }
.backlog-day-empty { margin:0; padding:12px 10px; color:var(--muted); font-size:12px; }
.backlog-sunday { margin-top:16px; padding:12px; border:1px dashed var(--line); border-radius:12px; }
.backlog-sunday h3 { margin:0 0 8px; font-size:15px; text-transform:capitalize; }
.backlog-pending-row { display:flex; align-items:center; flex-wrap:wrap; gap:12px; justify-content:space-between; padding:12px 0; border-top:1px solid var(--line); }
.backlog-employee { border-top:1px solid var(--line); padding:16px 0; }
.backlog-employee > header, .backlog-subheading { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.backlog-employee h3 { margin:0; }
.backlog-absence { margin-top:12px; padding:12px; border-radius:12px; background:#f7f9fa; }
.backlog-subheading { font-size:13px; }
.backlog-sites { list-style:none; margin:8px 0 0; padding:0; }
.backlog-sites li { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 0; border-top:1px solid var(--line); }
.backlog-sites li span { display:grid; gap:3px; }
.backlog-sites small { color:var(--muted); }
.status.partial { background:#e5f4ea; color:#205d3d; border-left:3px solid #d69b28; }
.status.open { background:#fff0d8; color:#774300; }
@media(max-width:1050px) { .backlog-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media(max-width:700px) { .backlog-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .backlog-pending-row { align-items:flex-start; flex-direction:column; gap:6px; } }
@media(max-width:700px) { .backlog-dispatch-row { grid-template-columns:1fr; align-items:flex-start; } .backlog-dispatch-actions { justify-content:flex-start; } }
@media(max-width:420px) { .backlog-grid { grid-template-columns:1fr; } }
.calendar-event.caretaker { display:block; background:#f0e6fa; color:#603986; }
.absence-replacement-link { color:inherit; text-decoration:none; }
.chief-overview { display:grid; grid-template-columns:minmax(0,2.2fr) minmax(0,1fr) minmax(0,1fr); gap:20px; align-items:stretch; }
.chief-indicators { min-width:0; }.chief-indicators .metric-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.chief-indicators .metric-card { min-width:0; padding:20px; min-height:160px; }
.dashboard-week-card { min-width:0; padding:22px; margin:0; }.dashboard-week-card h2 { font-size:21px; }.dashboard-week-card strong { display:block; }.dashboard-week-card a { color:inherit; }
.week-navigation { display:flex; align-items:center; justify-content:space-between; margin-top:24px; }.week-navigation a { font-size:28px; padding:4px 12px; }
.team-label { margin:8px 0; }.form-grid>* { min-width:0; }.form-control { max-width:100%; }
@media(max-width:1100px) { .chief-overview { grid-template-columns:repeat(2,minmax(0,1fr)); }.chief-indicators { grid-column:1/-1; } }
@media(max-width:700px) { .chief-overview { grid-template-columns:minmax(0,1fr); }.calendar-week { grid-template-columns:40px repeat(7,minmax(0,1fr)); }.week-number small { font-size:7px; }.week-number strong { font-size:20px; }.calendar-week .calendar-day { padding:3px; }.calendar-event { padding:4px; font-size:10px; } }
.fitted-table { width:100%; min-width:0 !important; table-layout:fixed; }
.fitted-table th,.fitted-table td { min-width:0; white-space:normal; overflow-wrap:anywhere; padding:10px 7px; }
.fitted-table .row-actions { flex-wrap:wrap; }
.category-filters .button { white-space:normal; }
dialog[open] { position:fixed; top:30%; z-index:1000; max-width:90vw; box-shadow:0 10px 100px #0004; }
.pointage-dialog[open] { top:max(5dvh,env(safe-area-inset-top,0px)); bottom:max(5dvh,env(safe-area-inset-bottom,0px)); margin-block:0; max-height:none; }

.calendar-event.caretaker,.legend.caretaker { background:#e0f3f0; color:#176e64; }
.calendar-day header small { display:block; }

.filter-count { display:inline-block; min-width:24px; padding:2px 7px; border-radius:20px; background:rgba(120,145,165,.17); }.primary .filter-count { background:rgba(255,255,255,.2); }

.employee-table th:first-child,.client-table th:first-child { width:7%; }
.employee-table th:nth-child(2),.client-table th:nth-child(2) { width:20%; }
.employee-table th:last-child,.client-table th:last-child { width:13%; }
.client-table.entity-TECHNILINE th:nth-child(4),.client-table:not(.entity-TECHNILINE) th:nth-child(5) { width:20%; }
.client-table th:first-child { width:5%; }
.client-table th:nth-child(2) { width:17%; }
.client-table th:last-child { width:10%; }
.client-table th.syndic-heading { width:22%; }
.client-table td.syndic-cell { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; overflow-wrap:normal; hyphens:none; }
.fitted-table td { overflow-wrap:break-word; hyphens:auto; }
.fitted-table th { overflow-wrap:normal; hyphens:auto; font-size:10px; letter-spacing:.02em; }
.row-action-menu summary { cursor:pointer; color:var(--blue); font-weight:600; }
.row-action-menu form { margin:8px 0; }
.row-action-menu button { max-width:100%; white-space:normal; text-align:left; overflow-wrap:normal; }

.notification-layout { display:grid; grid-template-columns:minmax(240px,.8fr) minmax(0,1.2fr); gap:24px; align-items:start; }
.notification-layout .form-card { width:100%; min-width:0; margin:0; }
.notification-rule-list { max-height:720px; overflow-y:auto; }
.notification-rule-list .activity-card { margin:10px 0; padding:12px; }
@media(max-width:900px) { .notification-layout { grid-template-columns:minmax(0,1fr); }.notification-rule-list { max-height:300px; } }

.notification-rule-list .activity-card small { display:block; margin:6px 0; color:var(--muted); }
.notification-rule-list .activity-card form { display:flex; gap:16px; }

/* Présentation commune des filtres et actions de la revue locale V1.2. */
.team-filters { padding:8px; border:1px solid var(--line); border-radius:16px; background:white; gap:8px; margin-bottom:28px; }
.employee-status-filters { padding:8px; border:1px solid var(--line); border-radius:16px; background:white; gap:8px; margin-bottom:10px; }
.employee-status-filters .button { gap:12px; min-height:44px; border:0; padding:8px 16px; font-size:14px; }
.employee-status-filters .filter-count { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; padding:0; font-size:13px; flex:none; border-radius:50%; background:var(--surface-soft); }
.team-filters .button { gap:12px; min-height:48px; border:0; padding:10px 18px; font-size:14px; }
.team-filters .filter-count { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; padding:0; font-size:13px; flex:none; border-radius:50%; }
.category-filters:not(.team-filters) { gap:10px; margin-bottom:24px; }
.category-filters.employee-status-filters { margin-bottom:10px; }
.planning-list-tabs { display:flex; flex-wrap:wrap; gap:8px; padding:0 18px 12px; }
.planning-list-tabs .button { min-height:36px; padding:7px 11px; font-size:12px; gap:8px; }
.planning-list-count { display:inline-flex; min-width:22px; justify-content:center; border-radius:99px; padding:2px 6px; background:rgba(107,126,142,.16); }
.planning-list-tabs .primary .planning-list-count { background:rgba(255,255,255,.23); }
.planning-list-search { display:flex; align-items:center; flex-wrap:wrap; gap:8px; padding:0 18px 16px; }
.planning-list-search input[type="search"] { width:min(390px,100%); }
.fitted-table .row-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; flex-wrap:nowrap; }
.fitted-table .row-actions > a { border:1px solid var(--line); background:white; border-radius:8px; padding:7px 9px; font-size:12px; white-space:nowrap; }
.row-action-menu { position:relative; }
.row-action-menu summary { display:flex; align-items:center; justify-content:center; width:32px; height:32px; border:1px solid var(--line); border-radius:8px; list-style:none; font-size:0; }
.row-action-menu summary::-webkit-details-marker { display:none; }
.row-action-menu summary::after { content:'⋯'; font-size:23px; line-height:1; }
.row-action-menu[open] { z-index:20; padding:8px; border-radius:10px; background:white; border:1px solid var(--line); box-shadow:0 6px 20px #14252f18; }
.row-action-menu[open] form { min-width:130px; }
.site-picker { border:1px solid var(--line); background:white; border-radius:10px; padding:12px; max-height:300px; overflow:auto; font-weight:400; }
.site-picker-tools { display:flex; flex-wrap:wrap; gap:16px; padding-bottom:10px; margin-bottom:4px; border-bottom:1px solid var(--line); }
.site-picker-option,.form-grid .site-picker-option,.stack-form .site-picker-option { display:flex; align-items:center; gap:10px; padding:8px 4px; cursor:pointer; font-size:14px; }
.site-picker-option input { width:18px; height:18px; flex:none; accent-color:var(--brand); }
.caretaker-create > summary { width:max-content; max-width:100%; list-style:none; cursor:pointer; }
.caretaker-create > summary::-webkit-details-marker { display:none; }
.caretaker-fields { margin-top:24px; }
.pointage-filter { display:grid; width:100%; max-width:none; grid-template-columns:minmax(180px,240px) minmax(260px,1fr) auto auto; align-items:end; gap:16px; }
.pointage-filter label { display:flex; flex-direction:column; gap:8px; min-width:0; }
.pointage-filter .form-control,.pointage-filter .button { height:44px; min-height:44px; }
@media(max-width:800px) { .pointage-filter { grid-template-columns:minmax(0,1fr); }.fitted-table .row-actions { flex-wrap:wrap; } }
@media(max-width:700px) {
    .movement-absence-tools { grid-template-columns:minmax(0,1fr); padding-inline:14px; }
    .movement-employee-list { padding-inline:14px; }
    .movement-employee-group > summary { grid-template-columns:20px minmax(0,1fr); gap:8px; padding:12px; }
    .movement-employee-motifs { grid-column:2; justify-content:flex-start; }
    .movement-absence-periods { padding:8px; }
    .movement-absence-period { padding:12px; }
    .movement-absence-meta { display:grid; gap:5px; }
}

.calendar-event.appointment { display:block; background:#eef6ff; padding:8px; border-radius:9px; color:#174c78; }
.chief-overview { align-items:start; }
.chief-indicators .metric-card { min-height:106px; padding:14px 16px; }
.chief-indicators .metric-card strong { font-size:34px; margin:9px 0 7px; }
.chief-indicators .metric-card small { font-size:12px; }
.chief-indicators .dashboard-followup-grid .metric-card { min-height:92px; }
.dashboard-week-card { display:flex; flex-direction:column; height:480px; padding:20px; }
.dashboard-week-card h2 { font-size:20px; margin-bottom:6px; }
.dashboard-week-card h3 { font-size:16px; margin:18px 0 10px; }
.week-navigation { margin-top:16px; color:var(--brand-dark); }
.week-navigation strong { font-size:15px; }
.dashboard-week-card .week-dates { text-align:center; margin:4px 0 18px; font-size:12px; }
.dashboard-events { min-height:0; flex:1; overflow:auto; }
.dashboard-leave-row { padding:14px 0; border-top:1px solid var(--line); }
.dashboard-leave-row,.dashboard-leave-row>a { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; }
.dashboard-leave-row>a { width:100%; }
.dashboard-leave-row small,.dashboard-rdv-row small { display:block; color:var(--muted); font-size:12px; margin-top:4px; }
.leave-badge { border-radius:20px; padding:6px 9px; font-size:10px; font-weight:700; flex:none; max-width:100px; text-align:center; }
.leave-badge.covered { background:#e7f8ef; color:#17613a; }.leave-badge.open { background:#fff0d8; color:#774300; }.leave-badge.pending { background:#f4edf9; color:#5e2f7e; }
.leave-badge.partial { background:#e5f4ea; color:#205d3d; border-left:3px solid #d69b28; }
.dashboard-rdv-row { display:block; padding:14px 0; border-bottom:1px solid var(--line); }
.dashboard-rdv-row>div { display:grid; grid-template-columns:45px minmax(0,1fr); gap:12px; margin-top:7px; }
.dashboard-card-footer { display:block; margin-top:14px; font-size:12px; color:var(--brand-dark); }
.site-picker { padding:8px 10px; max-height:230px; }
.site-picker-tools { padding-bottom:6px; gap:12px; font-size:12px; }
.site-picker-option,.form-grid .site-picker-option,.stack-form .site-picker-option { padding:4px 2px; gap:8px; line-height:1.3; font-size:13px; min-height:28px; }
.replacement-prompt { border:0; padding:0; border-radius:16px; width:560px; max-width:calc(100vw - 32px); }
.replacement-prompt[open] { top:50%; left:50%; transform:translate(-50%,-50%); margin:0; box-shadow:0 20px 80px #102c4955; }
.replacement-prompt::backdrop { background:#112c4966; backdrop-filter:blur(3px); }
.prompt-banner { padding:14px 24px; background:var(--brand); color:white; font-weight:700; }
.prompt-body { padding:24px; }.prompt-body h2 { margin:0 0 12px; font-size:22px; }.prompt-body .form-actions { gap:10px; flex-wrap:wrap; margin-top:24px; }
.employee-table td { hyphens:none; overflow-wrap:normal; }
.employee-table th:first-child { width:5%; }.employee-table th:nth-child(2) { width:17%; }.employee-table th:last-child { width:12%; }
.employee-table.entity-TF_SDN th:nth-child(5),.employee-table.entity-TF_SDN th:nth-child(6) { width:10%; }
.employee-table.entity-TF_SDN th:nth-child(4) { width:7%; }
.employee-table .company-tag { max-width:100%; padding:3px 4px; font-size:9px; }
.employee-table.entity-TECHNILINE th:nth-child(3),.employee-table.entity-TECHNILINE th:nth-child(4) { width:11%; }
.employee-table.entity-TECHNILINE th:first-child { width:8%; }
.employee-table.entity-TECHNILINE td:first-child .mono { font-size:11px; letter-spacing:-.03em; }
.employee-cost-note { margin:0 0 12px; font-size:13px; }
@media(max-width:1400px) { .employee-table td { font-size:12px; } }
@media(max-width:1100px) { .employee-table td { font-size:11px; }.employee-table .row-actions { gap:4px; }.employee-table .row-actions>a { padding:6px 4px; font-size:10px; } }
@media(max-width:700px) { .dashboard-week-card { height:auto; max-height:480px; }.dashboard-events { max-height:320px; } }
.date-range { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:19px; grid-column:1/-1; }
.date-range > p { margin:0; }
.date-range label { min-width:0; }
.date-range .form-control { width:100%; min-width:0; }
@media(min-width:1101px) { .chief-overview { align-items:stretch; }.dashboard-week-card { height:auto; contain:size; } }
.chief-indicators > .metric-grid:last-child { margin-bottom:0; }
.chief-overview { margin-bottom:20px; }
.employee-table th,.employee-table td { white-space:nowrap; hyphens:none; }
.employee-table th { font-size:10px; letter-spacing:0; }
.employee-table td:nth-child(2) { white-space:normal; overflow-wrap:normal; }
.employee-table td:nth-child(2) strong { font-size:inherit; }
.employee-table td small { display:block; font-size:10px; color:var(--muted); }
.employee-table .company-tag { white-space:nowrap; }
.employee-table th,.employee-table td { padding:9px 4px; }
.employee-table th { font-size:9px; }
@media(max-width:1400px) { .employee-table td { font-size:11px; } }
.employee-table.financial-columns.entity-TF_SDN th:nth-child(1) { width:5%; }
.employee-table.financial-columns.entity-TF_SDN th:nth-child(2) { width:17%; }
.employee-table.financial-columns.entity-TF_SDN th:nth-child(3) { width:6%; }
.employee-table.financial-columns.entity-TF_SDN th:nth-child(4) { width:7%; }
.employee-table.financial-columns.entity-TF_SDN th:nth-child(5),.employee-table.financial-columns.entity-TF_SDN th:nth-child(6) { width:8%; }
.employee-table.financial-columns.entity-TF_SDN th:nth-child(7),.employee-table.financial-columns.entity-TF_SDN th:nth-child(8),.employee-table.financial-columns.entity-TF_SDN th:nth-child(10) { width:7%; }
.employee-table.financial-columns.entity-TF_SDN th:nth-child(9) { width:4%; }
.employee-table.financial-columns.entity-TF_SDN th:nth-child(11) { width:8%; }
.employee-table.financial-columns.entity-TF_SDN th:nth-child(12) { width:5%; }
.employee-table.financial-columns.entity-TF_SDN th:nth-child(13) { width:11%; }
.employee-table .employee-state-cell { padding-right:14px; }
.employee-table .employee-actions-cell { padding-left:14px; }
.employee-state-list { display:flex; flex-direction:column; align-items:flex-start; gap:5px; min-width:0; }
.employee-table .employee-state-list .status { max-width:100%; white-space:normal; text-align:center; line-height:1.2; }
.employee-table .employee-actions-cell .row-actions { justify-content:flex-start; }
.calendar-event.caretaker-open,.legend.caretaker-open { background:#fce7ef; color:#8d2852; }
.calendar-event.caretaker-covered,.legend.caretaker-covered { background:#d9f2f6; color:#126475; }
.calendar-event.caretaker-partial,.legend.caretaker-partial { background:#e7f1f5; color:#175f70; border-left:3px solid #d69b28; }
.dashboard-week-card .week-navigation a { padding-top:0; padding-bottom:0; line-height:1; }
.dashboard-week-card .week-dates { margin-top:2px; margin-bottom:12px; }
.dashboard-week-lists { display:grid; grid-template-rows:minmax(0,1fr) minmax(0,1fr); gap:12px; flex:1; min-height:0; }
.dashboard-agent-list,.dashboard-guardian-list { min-height:0; overflow-y:auto; scrollbar-gutter:stable; }
.dashboard-guardian-section { display:flex; flex-direction:column; min-height:0; }
.dashboard-guardian-section h3 { flex:none; margin:0 0 10px; }
.dashboard-guardian-list { flex:1; }
.dashboard-agent-list:focus-visible,.dashboard-guardian-list:focus-visible { outline:2px solid var(--brand); outline-offset:2px; }
@media(max-width:1100px) { .dashboard-week-lists { flex:none; height:300px; } }

.caretaker-days { max-width: 620px; margin: 12px 0 20px; padding: 10px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-soft); }
.caretaker-days legend { padding: 0 6px; color: var(--muted); font-weight: 700; }
.caretaker-day { display: grid; grid-template-columns: 18px minmax(130px, 1fr) 160px; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--line); }
.caretaker-day:last-child { border-bottom: 0; }
.caretaker-day input[type=checkbox] { width: 18px; height: 18px; margin: 0; }
.caretaker-day > div { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.caretaker-day input[type=number] { width: 125px; min-width: 0; padding: 8px 10px; }
.bulk-employees-field { grid-column: 1 / -1; }
.bulk-employee-search { max-width: 420px; margin: 4px 0 8px; }
.bulk-employees-field #id_employees { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 6px 16px; max-height: 220px; overflow-y: auto; overflow-x: hidden; margin: 0; padding: 10px 12px; list-style: none; border: 1px solid var(--line); border-radius: 8px; background: var(--surface-soft); }
.bulk-employees-field #id_employees > * { min-width: 0; margin: 0; }
.bulk-employees-field #id_employees label { display: flex; align-items: flex-start; gap: 7px; margin: 0; white-space: normal; overflow-wrap: anywhere; font-size: 13px; }
.bulk-employees-field #id_employees input { width: 16px; height: 16px; margin: 0; }
@media(max-width:800px) { .bulk-employees-field #id_employees { grid-template-columns: 1fr; } }
.select-search + select.search-open { position: relative; z-index: 3; box-shadow: 0 4px 12px rgba(20, 45, 70, .12); }

/* Réglages des notifications : liste courte et explicite des destinataires. */
.notification-editor { min-width: 0; }
.notification-section { display: block; }
.notification-section h3 { margin: 0 0 14px; }
.notification-section > small { color: var(--muted); }
.notification-switches { display: flex; flex-wrap: wrap; gap: 14px 24px; margin: 0 0 10px; }
.notification-switches label, .notification-linked-option { display: inline-flex; align-items: center; gap: 9px; font-weight: 650; }
.field-intro { margin: 0 0 10px; }
.field-intro strong, .field-intro small { display: block; }
.field-intro small { margin-top: 4px; color: var(--muted); }
.notification-recipient-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; margin: 12px 0 16px; }
.notification-recipient-option { display: flex; align-items: center; gap: 10px; min-height: 42px; padding: 9px 11px; border: 1px solid var(--line); border-radius: 8px; background: white; font-weight: 650; }
.notification-recipient-option.primary-recipient { border-color: #b9d0ed; background: #f5f9fe; }
.notification-recipient-option input, .notification-linked-option input { width: 18px; height: 18px; margin: 0; accent-color: var(--brand); flex: 0 0 auto; }
.notification-summary { margin: 14px 0; }
.notification-summary strong, .notification-summary span, .notification-summary small { display: block; }
.notification-summary span { margin-top: 4px; color: var(--ink); font-weight: 650; }
.notification-summary small { margin-top: 4px; }
@media(max-width:620px) { .notification-recipient-grid { grid-template-columns: minmax(0, 1fr); } }

/* Centre de réglage des notifications. */
.notification-settings-layout { grid-template-columns: minmax(290px,.78fr) minmax(0,1.22fr); gap:18px; }
.notification-settings-layout [hidden] { display:none!important; }
.notification-rule-list { max-height:calc(100vh - 150px); overflow-y:auto; }
.notification-list-tools { display:grid; gap:8px; margin:0 0 18px; }
.notification-list-tools label,.notification-recipient-toolbar label { color:var(--muted); font-size:.85rem; font-weight:750; }
.notification-list-tools input,.notification-list-tools select,.notification-recipient-toolbar input { width:100%; min-width:0; }
.notification-rule-cards { display:grid; gap:10px; }
.notification-rule-card { padding:16px; border:1px solid var(--line); border-radius:16px; background:#fff; box-shadow:0 3px 14px rgba(20,45,70,.035); }
.notification-rule-card.selected { border-color:#3975bf; box-shadow:0 0 0 2px rgba(44,105,185,.14); }
.notification-rule-card-top,.notification-rule-facts,.notification-rule-actions { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.notification-category { color:var(--brand); font-size:.73rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.notification-state { border-radius:99px; padding:4px 9px; background:#e9f7ee; color:#19653a; font-size:.76rem; font-weight:800; }
.notification-state.off { background:#eef1f4; color:#64717e; }
.notification-rule-card h3 { margin:10px 0 5px; font-size:1.05rem; line-height:1.25; }
.notification-rule-description { color:var(--muted); margin:0 0 11px; font-size:.87rem; }
.notification-rule-facts { justify-content:flex-start; font-size:.81rem; font-weight:650; color:#295580; }
.notification-rule-facts span { background:#f0f6fc; border-radius:7px; padding:5px 8px; }
.notification-rule-people { color:#526371; font-size:.81rem; line-height:1.4; margin:11px 0 12px; }
.notification-rule-actions { justify-content:flex-start; border-top:1px solid var(--line); padding-top:11px; }
.notification-rule-actions form { display:flex; gap:12px; }
.notification-form-section { padding:23px 0; border-top:1px solid var(--line); }
.notification-form-section:first-of-type { border-top:0; padding-top:3px; }
.notification-section-heading { display:flex; align-items:flex-start; gap:12px; margin-bottom:17px; }
.notification-section-heading h3 { margin:0; font-size:1.16rem; }
.notification-section-heading p { margin:4px 0 0; color:var(--muted); font-size:.88rem; }
.notification-step { display:grid; place-items:center; flex:0 0 30px; width:30px; height:30px; border-radius:50%; background:#e9f2ff; color:var(--brand); font-size:.9rem; font-weight:800; }
.notification-help,.notification-timing-note { border-radius:12px; background:#f1f6fb; color:#42576b; padding:11px 13px; margin:12px 0; font-size:.88rem; }
.notification-timing-note strong,.notification-timing-note span { display:block; }
.notification-timing-note span { margin-top:4px; }
.notification-toggle { display:inline-flex; align-items:center; gap:9px; font-weight:700; margin:8px 0; }
.notification-toggle input { width:19px; height:19px; accent-color:var(--brand); }
.notification-weekdays { margin:15px 0; }
.notification-weekdays > strong { display:block; margin-bottom:9px; }
.notification-weekdays > div { display:flex; gap:8px; flex-wrap:wrap; }
.notification-weekdays label { display:inline-flex; gap:5px; align-items:center; border:1px solid var(--line); border-radius:9px; padding:8px 10px; background:white; font-weight:650; }
.notification-weekdays input { accent-color:var(--brand); }
.notification-recipient-toolbar { display:grid; gap:5px; margin-bottom:11px; }
.notification-recipient-grid { max-height:280px; overflow:auto; padding-right:4px; }
.notification-recipient-option { align-items:flex-start; font-size:.85rem; min-width:0; }
.notification-recipient-option span { min-width:0; }
.notification-recipient-option strong,.notification-recipient-option small { display:block; overflow-wrap:anywhere; }
.notification-recipient-option small { margin-top:4px; font-size:.73rem; color:var(--muted); font-weight:500; }
.notification-channel-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; margin-bottom:13px; }
.notification-channel-card { display:flex; gap:8px; align-items:flex-start; border:1px solid var(--line); border-radius:13px; padding:13px; background:#fbfdff; cursor:pointer; }
.notification-channel-card input { width:18px; height:18px; margin-top:2px; flex:0 0 auto; accent-color:var(--brand); }
.notification-channel-card strong,.notification-channel-card small { display:block; }
.notification-channel-card small { color:var(--muted); font-size:.76rem; line-height:1.4; margin-top:5px; font-weight:500; }
.notification-message-panel { border:1px solid var(--line); border-radius:12px; padding:12px 14px; margin:10px 0; }
.notification-message-panel summary { cursor:pointer; font-weight:800; color:var(--ink); }
.notification-message-panel label { display:block; }
.notification-message-panel p { margin:12px 0; }
.notification-message-panel textarea,.notification-message-panel input { width:100%; }
.notification-variable-panel { padding:12px; border-radius:12px; background:#f5f8fb; margin-top:12px; }
.notification-variable-panel p { color:var(--muted); margin:5px 0 10px; font-size:.82rem; }
.notification-variable-panel .category-filters { display:flex; flex-wrap:wrap; gap:6px; }
.notification-variable-panel .button { font-size:.78rem; padding:6px 9px; }
.notification-form-actions { position:sticky; bottom:0; z-index:2; background:rgba(255,255,255,.97); border-top:1px solid var(--line); padding:13px 0; }
.notification-history,.notification-sms-note { margin-top:18px; }
.notification-history summary { cursor:pointer; font-weight:800; }
.notification-history-list { max-height:360px; overflow:auto; }
.notification-history-list p { border-bottom:1px solid var(--line); padding:7px 0; }
.notification-sms-note h2 { margin-top:0; }
.notification-heading-actions { display:flex; flex-wrap:wrap; gap:10px; justify-content:flex-end; }
.oneoff-form { max-width:1050px; margin:0 auto; }
.oneoff-form .notification-form-section:first-child { border-top:0; }
.oneoff-form .notification-section-heading h2 { margin:0; font-size:1.2rem; }
.oneoff-form label:not(.notification-channel-card) { display:block; font-weight:750; }
.oneoff-form > .notification-form-section > p > label { margin-bottom:6px; }
.oneoff-form > .notification-form-section > p > input,
.oneoff-form > .notification-form-section > p > select,
.oneoff-form > .notification-form-section > p > textarea { display:block; width:100%; }
.oneoff-form small { display:block; margin-top:5px; color:var(--muted); font-weight:500; }
.oneoff-recipient-columns { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.oneoff-recipient-columns h3 { font-size:1rem; margin:6px 0 9px; }
.oneoff-recipient-columns input[type=search] { width:100%; margin-bottom:10px; }
.oneoff-choice-list { max-height:270px; overflow:auto; border:1px solid var(--line); border-radius:12px; padding:10px; }
.oneoff-choice-list > div { display:grid; gap:3px; }
.oneoff-choice-list label { display:flex!important; align-items:center; gap:9px; padding:7px 9px; border-radius:8px; cursor:pointer; font-size:.9rem; }
.oneoff-choice-list label:hover { background:#f1f6fb; }
.oneoff-choice-list label:has(input:checked) { background:#e9f2ff; color:var(--brand); }
.oneoff-choice-list input { flex:0 0 auto; accent-color:var(--brand); }
.oneoff-preview { border-top:1px solid var(--line); padding:20px 0 4px; }
.oneoff-preview h2,.oneoff-preview h3 { margin:0 0 12px; }
.oneoff-preview > p { line-height:1.55; overflow-wrap:anywhere; }
.oneoff-preview-list { display:grid; gap:6px; margin:12px 0; }
.oneoff-preview-list > div { display:flex; justify-content:space-between; gap:10px; padding:10px 12px; border:1px solid var(--line); border-radius:9px; }
.oneoff-preview-list span { color:var(--muted); }
@media(max-width:1100px) { .notification-settings-layout { grid-template-columns:minmax(0,1fr); } .notification-rule-list { max-height:440px; } }
@media(max-width:680px) { .notification-channel-grid,.oneoff-recipient-columns { grid-template-columns:minmax(0,1fr); } .notification-rule-list { max-height:360px; } .notification-form-actions { position:static; } .notification-heading-actions { justify-content:flex-start; } .oneoff-preview-list > div { flex-direction:column; gap:2px; } }

/* Audits opérationnels : formulaires simples côté chefs, éditeur complet côté direction. */
.audit-start-panel { border-top:4px solid var(--brand); }
.audit-start-form { display:grid; grid-template-columns:minmax(215px,1.05fr) minmax(240px,1.25fr) minmax(180px,.8fr) auto; align-items:end; gap:16px; }
.audit-start-form label,.audit-filter-grid label { display:grid; gap:7px; min-width:0; font-weight:700; color:var(--muted); }
.audit-start-form .form-control,.audit-filter-grid .form-control { width:100%; }
.audit-client-presence { min-width:0; margin:0; padding:0; border:0; }
.audit-client-presence legend { margin-bottom:7px; color:var(--muted); font-weight:700; }
.audit-client-presence #id_client_present { display:flex; min-height:42px; align-items:center; gap:18px; margin:0; padding:0 14px; border:1px solid var(--line); border-radius:8px; background:white; }
.audit-client-presence #id_client_present>div { display:block; }
.audit-client-presence label { display:flex; grid:unset; flex-direction:row; align-items:center; gap:7px; margin:0; color:var(--ink); white-space:nowrap; }
.audit-client-presence input.form-control { width:18px !important; min-width:18px; height:18px; margin:0; padding:0; accent-color:var(--brand); box-shadow:none; }
.audit-metrics { margin-top:24px; margin-bottom:24px; }
.audit-filter-grid { display:grid; grid-template-columns:repeat(4,minmax(150px,1fr)) auto auto; align-items:end; gap:14px; }
.audit-filter-grid .checkbox-label { display:flex; min-height:42px; align-items:center; color:var(--ink); }
.audit-filter-panel { margin-bottom:24px; }
.audit-dashboard-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; margin-bottom:24px; }
.audit-dashboard-grid .panel { margin:0; }
.audit-builder-form { display:grid; gap:20px; }
.audit-template-settings { margin:0; }
.audit-builder-toolbar,.audit-builder-category-head { display:flex; align-items:center; justify-content:space-between; gap:18px; }
.audit-builder-toolbar h2,.audit-builder-toolbar p { margin:0; }
.audit-builder-toolbar p { margin-top:5px; color:var(--muted); }
.audit-builder-categories { display:grid; gap:18px; }
.audit-builder-category { margin:0; }
.audit-builder-category-head .category-title { flex:1; font-size:18px; font-weight:800; }
.audit-builder-category>textarea { width:100%; margin:12px 0; }
.audit-builder-questions { display:grid; gap:10px; margin:12px 0; }
.audit-builder-question { display:grid; grid-template-columns:minmax(240px,1.6fr) minmax(220px,1fr) auto; align-items:center; gap:9px; padding:11px; border:1px solid var(--line); border-radius:10px; background:var(--surface-soft); }
.builder-check { display:inline-flex; align-items:center; gap:6px; margin:0; font-size:12px; font-weight:700; }
.builder-check input { width:17px; height:17px; margin:0; accent-color:var(--brand); }
.builder-actions { display:flex; align-items:center; flex-wrap:wrap; justify-content:flex-end; gap:7px; }
.audit-form-category { overflow:hidden; }
.audit-question-list { display:grid; gap:1px; margin:0 -24px -24px; background:var(--line); }
.audit-question-card { display:grid; grid-template-columns:minmax(200px,.85fr) minmax(0,1.15fr); gap:22px; align-items:center; min-width:0; padding:18px 24px; background:white; }
.audit-question-card.has-alert { background:#fff8f6; }
.audit-question-main { display:grid; gap:4px; min-width:0; overflow-wrap:anywhere; }
.audit-question-main small { color:var(--muted); }
.audit-answer { display:grid; gap:9px; }
.audit-context-strip { display:flex; align-items:center; flex-wrap:wrap; gap:28px 60px; margin-bottom:20px; }
.audit-context-strip div { display:grid; gap:3px; }
.audit-context-strip small { color:var(--muted); font-size:11px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.audit-rating-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; min-width:0; }
.audit-rating-grid label { position:relative; display:block; margin:0; cursor:pointer; }
.audit-rating-grid input { position:absolute; width:1px; height:1px; opacity:0; }
.audit-rating-grid span { display:grid; align-content:center; min-width:0; min-height:60px; padding:9px 6px; border:1px solid var(--line); border-radius:9px; background:white; text-align:center; overflow-wrap:anywhere; font-size:12px; font-weight:800; line-height:1.2; transition:.15s ease; }
.audit-rating-grid span small { display:block; margin-top:3px; color:var(--muted); font-size:10px; font-weight:650; }
.audit-rating-grid input:focus-visible+span { outline:2px solid var(--brand); outline-offset:2px; }
.audit-rating-grid .rating-not-done input:checked+span { border-color:#c94a42; background:#fff0ed; color:#8f241d; box-shadow:0 0 0 1px #c94a42; }
.audit-rating-grid .rating-improve input:checked+span { border-color:#d8992f; background:#fff7e6; color:#805100; box-shadow:0 0 0 1px #d8992f; }
.audit-rating-grid .rating-well input:checked+span { border-color:#2c8b61; background:#eaf8f1; color:#176441; box-shadow:0 0 0 1px #2c8b61; }
.audit-rating-grid .rating-na input:checked+span { border-color:#8393a2; background:#f0f3f5; color:#4f5f6c; box-shadow:0 0 0 1px #8393a2; }
.audit-category-comment { display:grid; gap:7px; margin-top:22px; font-weight:800; }
.audit-category-comment>small { color:var(--muted); font-weight:500; }
.audit-category-comment.readonly { padding:15px 18px; border-top:1px solid var(--line); background:var(--surface-soft); }
.audit-category-comment.readonly p { margin:6px 0 0; font-weight:500; }
.audit-choice-row { display:flex; flex-wrap:wrap; gap:10px 20px; }
.audit-choice-row label,.audit-check-answer { display:inline-flex; align-items:center; gap:7px; font-weight:750; }
.audit-choice-row input,.audit-check-answer input { width:18px; height:18px; margin:0; accent-color:var(--brand); }
.audit-comment { font-size:13px; }
.signature-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.signature-box { display:grid; gap:10px; min-width:0; padding:16px; border:1px solid var(--line); border-radius:12px; background:var(--surface-soft); }
.signature-box canvas { display:block; width:100%; height:180px; border:1px dashed #9babb9; border-radius:9px; background:white; touch-action:none; }
.signature-box img { display:block; width:100%; max-width:420px; height:130px; object-fit:contain; border-radius:8px; background:white; }
.signature-grid.readonly .signature-box { align-content:start; }
.signature-grid.single { grid-template-columns:minmax(0,620px); }
.audit-alert-row { background:#fff4f1; }
.audit-alert-row td:first-child { border-left:3px solid var(--danger); }
.status.audit-result-not_done { background:#ffe4df; color:#8f241d; }
.status.audit-result-improve { background:#fff0cc; color:#805100; }
.status.audit-result-well_done { background:#dcf5e8; color:#176441; }
.status.audit-result-not_assigned { background:#edf1f4; color:#536270; }
.metric-name { font-size:19px !important; overflow-wrap:anywhere; }
.danger-text { color:var(--danger) !important; }
.replacement-source-choice { display:grid; gap:9px; min-width:260px; margin:10px 0; padding:12px; border:1px solid var(--line); border-radius:10px; background:var(--surface-soft); }
.replacement-source-choice legend { padding:0 5px; color:var(--ink); }
.replacement-source-option { display:flex; align-items:flex-start; gap:9px; margin:0; padding:10px 12px; border:1px solid var(--line); border-radius:8px; background:white; cursor:pointer; }
.replacement-source-option input { flex:0 0 auto; width:17px; height:17px; margin:2px 0 0; accent-color:var(--brand); }
.replacement-source-option span { display:block; line-height:1.45; }
.replacement-source-detail { margin:0 0 7px 28px; padding:10px 12px; border-left:3px solid var(--brand); background:white; font-size:13px; }
.replacement-source-detail ul { display:grid; grid-template-columns:repeat(auto-fit,minmax(125px,1fr)); gap:3px 12px; margin:7px 0; padding-left:18px; }
.replacement-source-detail p { margin:7px 0 0; color:var(--muted); }
.planning-manual-hours.is-hidden,.replacement-source-detail.is-hidden { display:none; }
.replacement-hours-toggle { margin:8px 0; }
.replacement-hours-editor { margin:8px 0 12px; padding:12px; border:1px solid var(--line); border-radius:9px; background:#f6f9fc; }
.replacement-hours-editor.is-hidden { display:none; }
.replacement-hours-editor p { margin:0 0 10px; }
.replacement-hours-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(125px,1fr)); gap:10px; }
.replacement-hours-grid label { display:grid; gap:4px; font-size:12px; font-weight:700; }
.replacement-hours-grid small { color:var(--muted); font-size:11px; font-weight:500; }
.invoice-period-fields { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.invoice-period-fields label { display:flex; align-items:center; gap:5px; white-space:nowrap; }
.invoice-period-fields input,.invoice-amount { min-height:40px; padding:7px 9px; border:1px solid var(--line); border-radius:8px; color:var(--ink); background:#fff; font:inherit; }
.invoice-period-fields input { width:145px; }
.invoice-amount-field { display:flex; align-items:center; gap:7px; white-space:nowrap; }
.invoice-amount { width:132px; text-align:right; }
.invoice-recalculation-note { display:block; max-width:230px; margin-top:4px; color:var(--muted); font-size:11px; line-height:1.35; }
.quote-filters { display:grid; grid-template-columns:minmax(220px,1.5fr) repeat(2,minmax(150px,.7fr)) auto; gap:14px; align-items:end; margin-bottom:18px; }
.quote-filters label,.quote-editor label { display:grid; gap:7px; font-size:13px; font-weight:700; color:var(--ink); }
.quote-filters input,.quote-filters select,.quote-editor input:not([type=hidden]),.quote-editor select,.quote-editor textarea { width:100%; min-height:42px; padding:9px 11px; border:1px solid var(--line); border-radius:9px; background:#fff; color:var(--ink); font:inherit; }
.quote-editor textarea { min-height:90px; resize:vertical; }
.quote-filter-actions,.quote-heading-actions { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.button.small { min-height:34px; padding:6px 11px; font-size:12px; }
.quote-status { display:inline-flex; padding:5px 9px; border-radius:20px; background:#edf1f4; color:#485663; font-size:11px; font-weight:800; }
.quote-status-sent { background:#e5f0ff; color:#1f5595; }.quote-status-accepted { background:#e0f4e9; color:#176441; }.quote-status-declined { background:#fde8e5; color:#a9362f; }
.quote-editor { display:grid; gap:18px; }
.quote-section { padding:24px; }
.quote-section-heading { display:flex; align-items:flex-start; gap:14px; margin-bottom:22px; }
.quote-section-heading > span { display:grid; place-items:center; width:34px; height:34px; flex:none; border-radius:50%; color:white; background:var(--brand); font-weight:800; }
.quote-section-heading h2 { margin:0 0 5px; font-size:19px; }.quote-section-heading p,.muted { margin:0; color:var(--muted); font-size:13px; }
.quote-editor .form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }.quote-editor .form-grid .wide { grid-column:1/-1; }
.quote-recipient-picker { display:grid; gap:8px; padding:15px; border:1px solid #c9d9ec; border-radius:11px; background:#f5f9fe; }
.quote-recipient-picker small { color:var(--muted); font-size:12px; font-weight:500; }
.quote-recipient-picker select[size]:not([size="1"]) { height:auto; }
.quote-total-preview { display:grid; gap:5px; align-content:center; padding:12px 15px; border:1px solid #c9d9ec; border-radius:10px; background:#f4f8fc; }
.quote-total-preview span,.quote-total-preview small { color:var(--muted); font-size:12px; }.quote-total-preview strong { color:var(--brand-dark); font-size:22px; }
.field-error,.field-error-box { color:var(--danger); }.field-error-box { margin:10px 0; padding:10px 13px; border-radius:8px; background:#fde9e9; }
.scope-blocks { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:13px; margin:18px 0 26px; }
.scope-block { padding:14px; border:1px solid var(--line); border-radius:11px; background:#fbfcfd; }.scope-block h3 { margin:0; font-size:14px; }
.scope-block-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 9px; }.scope-block-heading select { width:180px; min-height:36px; font-size:12px; }
.scope-task-row { display:block; padding:8px 0; border-top:1px solid #e9edef; }
.custom-scope-section { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:22px 0 10px; }.custom-scope-section .subsection-title { margin-top:0; }.custom-scope-actions { display:flex; align-items:end; gap:10px; }.custom-scope-actions label { display:grid; gap:4px; font-size:12px; font-weight:700; }.custom-scope-actions select { min-width:180px; }.custom-scope-list { display:grid; gap:9px; }.custom-scope-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; align-items:end; padding:12px; border:1px solid var(--line); border-radius:10px; background:#fbfcfd; }.custom-scope-row label { display:grid; gap:6px; font-size:12px; font-weight:700; }.custom-scope-row .button { min-height:36px; }
.quote-editor .scope-task-check { display:flex; grid-template-columns:none; align-items:flex-start; gap:9px; font-weight:500; line-height:1.4; }.scope-task-check input { width:18px!important; height:18px; min-height:18px!important; flex:none; margin:0; }
.quote-editor .scope-block-heading select { padding:6px 8px; }
.quote-scope-settings { padding:20px; }.quote-scope-toolbar { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-bottom:18px; }.quote-scope-toolbar h2 { margin:0 0 4px; }.quote-scope-template-blocks { display:grid; gap:16px; margin-bottom:20px; }.quote-template-block { padding:17px; border:1px solid var(--line); border-radius:12px; background:#fbfcfd; }.quote-template-header { display:grid; grid-template-columns:minmax(0,1fr) 210px auto; gap:12px; align-items:end; }.quote-template-header label,.quote-template-line label { display:grid; gap:5px; font-size:12px; font-weight:700; }.quote-template-controls { display:flex; flex-wrap:wrap; gap:6px; }.quote-template-lines { display:grid; gap:8px; margin:16px 0; }.quote-template-line { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; align-items:end; }.quote-template-line .button { min-width:34px; }.quote-template-controls .danger { color:#aa3838; }
.quote-template-question { grid-template-columns:repeat(2,minmax(0,1fr)); }.quote-template-question .quote-template-controls { grid-column:1/-1; }.quote-scope-preview-condition { margin:0 0 6px; color:#637482; font-size:12px; font-style:italic; }
.quote-frequency-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin:0 0 26px; }.quote-frequency-row { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:10px; padding:10px 12px; border:1px solid var(--line); border-radius:9px; background:#fbfcfd; }.quote-frequency-row label { display:grid; gap:5px; font-size:12px; font-weight:700; }.quote-frequency-row .button:disabled { opacity:.45; cursor:not-allowed; }
.quote-scope-preview-dialog { width:min(860px,calc(100% - 24px)); max-height:90vh; overflow:auto; padding:22px; border:1px solid var(--line); border-radius:14px; box-shadow:0 25px 70px rgba(16,35,55,.24); }.quote-scope-preview-dialog::backdrop { background:rgba(13,29,45,.55); }.quote-scope-preview-top { display:flex; align-items:start; justify-content:space-between; gap:16px; }.quote-scope-preview-top h2 { margin:2px 0 0; }.quote-scope-preview-dialog > .muted { margin:8px 0 16px; }.quote-scope-preview-paper { padding:35px 38px; border:1px solid #d7e0e6; background:#fff; color:#24313b; }.quote-scope-preview-paper > h3 { margin:0 0 6px; color:#123657; font-size:20px; }.quote-scope-preview-summary { margin:0 0 20px; color:#667784; font-size:13px; }.quote-scope-preview-block { margin:0 0 17px; break-inside:avoid; }.quote-scope-preview-block h4 { display:flex; justify-content:space-between; gap:12px; margin:0 0 6px; padding-bottom:6px; border-bottom:1px solid #cbd8e1; color:#2165a5; font-size:15px; }.quote-scope-preview-block h4 small { font-size:13px; font-weight:600; white-space:nowrap; }.quote-scope-preview-block ul,.quote-scope-preview-questions ul { margin:0; padding-left:20px; line-height:1.65; }.quote-scope-preview-questions { margin-top:24px; padding-top:14px; border-top:1px solid #cbd8e1; }.quote-scope-preview-questions h4 { margin:0 0 8px; color:#123657; }.quote-scope-preview-questions .muted { margin:0 0 8px; }
.quote-scope-preview-frequency { margin:22px 0 12px; padding:10px 13px; border:1px solid #8eb7e7; background:#edf4fa; color:#2165a5; font-size:15px; }
.subsection-title { margin:10px 0 5px; font-size:16px; }.particularity-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-top:14px; }
.quote-editor .particularity-row { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 12px; border:1px solid var(--line); border-radius:9px; background:#fff; font-weight:550; }.quote-editor .particularity-row select { width:100px; min-height:36px; padding:6px 8px; }
.quote-form-actions { display:flex; justify-content:flex-end; gap:9px; padding-bottom:10px; }.quote-alert { margin:0 0 18px; padding:14px 17px; border:1px solid #e8d29d; border-radius:10px; background:#fff8e7; color:#70510d; }.quote-alert p { margin:5px 0 0; font-size:13px; }
.quote-summary-cards { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:18px; }.quote-summary-cards > div { display:grid; gap:7px; padding:15px; border:1px solid var(--line); border-radius:11px; background:#fff; }.quote-summary-cards small { color:var(--muted); font-size:11px; text-transform:uppercase; letter-spacing:.04em; }.quote-summary-cards strong { font-size:15px; }
.quote-preview-panel { padding:0; overflow:hidden; }.quote-preview-heading { display:flex; align-items:center; justify-content:space-between; gap:15px; padding:18px 22px; border-bottom:1px solid var(--line); }.quote-preview-heading h2 { margin:0 0 4px; font-size:17px; }.quote-preview-heading p { margin:0; color:var(--muted); font-size:12px; }.quote-pdf-preview { display:block; width:100%; height:78vh; min-height:560px; border:0; background:#e9edf0; }
.quote-history-list { display:grid; gap:12px; }
@media(max-width:900px) { .quote-filters { grid-template-columns:repeat(2,minmax(0,1fr)); }.quote-summary-cards { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px) { .quote-filters,.quote-editor .form-grid,.scope-blocks,.particularity-grid,.quote-summary-cards,.quote-frequency-list { grid-template-columns:1fr; }.quote-editor .form-grid .wide { grid-column:auto; }.scope-block-heading,.custom-scope-section,.custom-scope-actions,.quote-scope-toolbar { align-items:stretch; flex-direction:column; }.scope-block-heading select,.custom-scope-actions select { width:100%; }.custom-scope-row,.quote-template-header,.quote-template-line,.quote-template-question,.quote-frequency-row { grid-template-columns:1fr; gap:8px; }.quote-scope-preview-dialog { padding:14px; }.quote-scope-preview-paper { padding:20px; }.quote-scope-preview-block h4 { flex-direction:column; gap:2px; }.quote-section { padding:17px; }.quote-filter-actions,.quote-form-actions { width:100%; }.quote-form-actions { flex-direction:column-reverse; }.quote-form-actions .button { width:100%; }.quote-preview-heading { align-items:flex-start; flex-direction:column; }.quote-pdf-preview { min-height:480px; height:70vh; } }
@media(max-width:1250px) {
  .audit-builder-question { grid-template-columns:minmax(200px,1.5fr) minmax(180px,1fr) auto; }
  .audit-builder-question .builder-check,.audit-builder-question .builder-actions { grid-column:auto; }
  .audit-filter-grid { grid-template-columns:repeat(3,minmax(150px,1fr)); }
  .audit-question-card { grid-template-columns:1fr; gap:14px; }
}
@media(max-width:850px) {
  .audit-start-form,.audit-filter-grid,.audit-dashboard-grid,.signature-grid,.audit-question-card { grid-template-columns:1fr; }
  .audit-builder-toolbar,.audit-builder-category-head { align-items:flex-start; flex-direction:column; }
  .audit-builder-question { grid-template-columns:1fr; }
  .audit-rating-grid { grid-template-columns:repeat(2,minmax(120px,1fr)); }
  .audit-question-list { margin-left:-16px; margin-right:-16px; }
  .audit-question-card { padding:16px; }
}

.advance-export-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-top:18px; }
.advance-export-card { padding:24px; min-width:0; }
.advance-export-card-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.advance-export-card-head h2 { margin:0; }
.advance-export-card p { margin:0 0 10px; }
.advance-export-card small { color:var(--muted); }
.advance-export-actions { margin-top:22px; }
.advance-export-error { color:var(--danger); white-space:normal; overflow-wrap:anywhere; }
@media(max-width:850px) { .advance-export-grid { grid-template-columns:1fr; } }

.pointage-subtabs { display:flex; flex-wrap:wrap; gap:6px; width:fit-content; max-width:100%; padding:5px; margin:0 0 20px; border:1px solid var(--line); border-radius:14px; background:#eef3f7; }
.pointage-subtabs a { display:inline-flex; align-items:center; min-height:40px; padding:8px 16px; border-radius:10px; color:var(--ink); font-weight:750; text-decoration:none; white-space:nowrap; }
.pointage-subtabs a.active { background:#fff; color:var(--brand); box-shadow:0 2px 8px #1b385018; }

/* TECHNILINE: shared employee/site pointages and movement views. */
.techniline-pointage-tabs { display:flex; align-items:center; gap:7px; width:fit-content; max-width:100%; flex-wrap:wrap; }
.techniline-pointage-tabs .techniline-advance-tab { margin-left:16px; border:1px solid #bdd2ea; border-radius:11px; background:#fff; color:var(--brand); }
.techniline-total-card { display:grid; gap:2px; min-width:190px; padding:11px 15px; border:1px solid #bcd1e7; border-radius:13px; background:#f0f7ff; }
.techniline-total-card small,.techniline-total-card span { color:var(--muted); font-size:11px; }
.techniline-total-card strong { color:var(--brand-dark); font-size:22px; line-height:1.15; }
.techniline-employee-summary { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:16px; }
.techniline-employee-summary span { padding:11px 15px; border:1px solid var(--line); border-radius:11px; background:#fff; color:var(--muted); }
.techniline-employee-summary strong { margin-left:7px; color:var(--ink); }
.techniline-pointage .day-col,.techniline-pointage .pointage-cell { width:58px; min-width:58px; }
.techniline-pointage .day-col .absence-code { display:block; margin:2px auto 0; font-size:8px; font-style:normal; }
.techniline-pointage .pointage-cell { padding:2px 3px; height:62px; }
.techniline-pointage .pointage-cell .techniline-hour-input { display:block; width:100%; height:28px; border:1px solid transparent; border-radius:5px; font-size:11px; font-weight:700; }
.techniline-pointage .techniline-overtime-input { display:flex; align-items:center; gap:2px; font-size:8px; font-weight:800; color:#a52b36; }
.techniline-pointage .techniline-overtime-input input { width:34px; height:20px; border:1px solid #f0d5d8; border-radius:4px; color:#a52b36; font-size:9px; }
.techniline-pointage .techniline-overtime-read { display:block; margin-top:4px; font-size:9px; font-weight:700; color:#a52b36; }
.techniline-pointage .techniline-absence-cell { background:#fff4db !important; }
.techniline-pointage .absence-code { display:inline-block; padding:3px 5px; border-radius:5px; background:#f3dba4; color:#674700; font-size:9px; font-weight:800; }
.techniline-pointage .line-total { min-width:90px; max-width:90px; width:90px; }
.techniline-pointage .line-total small { display:block; margin-top:3px; color:#a52b36; font-size:9px; }
.techniline-admin-panel { margin-top:20px; padding:0; overflow:hidden; }
.techniline-admin-panel .panel-header { padding:18px 22px; border-bottom:1px solid var(--line); }
.techniline-admin-form { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:15px; padding:20px 22px; }
.techniline-admin-form label { display:grid; gap:6px; font-weight:700; }
.techniline-admin-form .form-actions { grid-column:1 / -1; justify-content:flex-end; }
.techniline-admin-read { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; padding:20px 22px; }
.techniline-admin-read span { padding:9px 12px; border-radius:8px; background:#f4f7fa; }
.techniline-admin-read p { grid-column:1 / -1; white-space:pre-line; }
.techniline-movement-panel { margin-bottom:18px; }
.techniline-movement-actions form { display:inline-flex; gap:5px; margin:2px; }
.techniline-site-selection select { min-height:160px; }
@media(max-width:800px) {
  .techniline-pointage-tabs .techniline-advance-tab { margin-left:0; }
  .techniline-admin-form,.techniline-admin-read { grid-template-columns:1fr; }
}
@media print {
  body:has(.techniline-pointage) .sidebar,body:has(.techniline-pointage) .topbar,
  body:has(.techniline-pointage) .back-link,body:has(.techniline-pointage) .sticky-actions,
  body:has(.techniline-pointage) .techniline-other-view,body:has(.techniline-pointage) .flash { display:none !important; }
  body:has(.techniline-pointage) .app-shell,body:has(.techniline-pointage) .main-content,
  body:has(.techniline-pointage) .content-wrap { display:block; width:100%; max-width:none; margin:0; padding:0; background:#fff; }
  body:has(.techniline-pointage) .pointage-scroll { overflow:visible; }
  body:has(.techniline-pointage) .techniline-pointage { width:100%; table-layout:fixed; font-size:7px; }
  body:has(.techniline-pointage) .techniline-pointage .chantier-col { width:120px; min-width:120px; max-width:120px; }
  body:has(.techniline-pointage) .techniline-pointage .day-col,
  body:has(.techniline-pointage) .techniline-pointage .pointage-cell { width:24px; min-width:24px; padding:1px; }
  body:has(.techniline-pointage) .techniline-pointage .line-total { width:48px; min-width:48px; max-width:48px; }
  body:has(.techniline-pointage) .techniline-pointage .pointage-cell { height:28px; }
  body:has(.techniline-pointage) .techniline-admin-panel { break-inside:avoid; }
}
.advance-heading { margin-bottom:16px; }
.advance-toolbar { display:flex; justify-content:space-between; align-items:flex-end; gap:18px; margin-bottom:18px; }
.advance-month-picker { display:grid; gap:5px; min-width:220px; }
.advance-month-picker label { font-size:12px; font-weight:800; color:var(--muted); }
.advance-month-summary { padding:10px 2px; color:var(--muted); white-space:nowrap; }
.advance-month-summary strong { color:var(--ink); font-size:18px; }
.advance-create { padding:0; margin-bottom:20px; overflow:visible; }
.advance-create summary { display:flex; align-items:center; gap:12px; padding:16px 20px; cursor:pointer; color:var(--brand); font-weight:800; list-style:none; }
.advance-create summary::-webkit-details-marker { display:none; }
.advance-plus { display:grid; place-items:center; flex:0 0 30px; width:30px; height:30px; border-radius:50%; color:#fff; background:var(--brand); font-size:23px; line-height:1; }
.advance-create-form { padding:0 20px 20px; border-top:1px solid var(--line); }
.advance-create-fields { display:grid; grid-template-columns:minmax(0,2fr) minmax(160px,1fr); align-items:end; gap:16px; padding-top:18px; }
.advance-create-fields label { display:block; margin:0 0 6px; font-weight:750; }
.advance-employee-field { min-width:0; }
.advance-employee-field input { margin-bottom:8px; }
.advance-employee-field select { max-width:100%; }
.advance-form-footer { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-top:18px; }
.advance-form-footer small { color:var(--muted); line-height:1.4; }
.advance-list { padding:0; overflow:hidden; }
.advance-list-header { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:20px 22px; border-bottom:1px solid var(--line); }
.advance-list-header h2 { margin:4px 0 0; font-size:22px; }
.advance-list-search { width:min(300px,100%); }
.advance-row { display:grid; grid-template-columns:minmax(0,1fr) minmax(120px,auto) auto; align-items:center; gap:20px; min-height:66px; padding:12px 22px; border-bottom:1px solid var(--line); }
.advance-row:last-child { border-bottom:0; }
.advance-row[hidden] { display:none; }
.advance-person { display:grid; gap:3px; min-width:0; }
.advance-person strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.advance-person small { color:var(--muted); font-size:11px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.advance-amount { font-size:19px; text-align:right; white-space:nowrap; }
.advance-row-actions { display:flex; align-items:center; justify-content:flex-end; gap:14px; font-size:13px; font-weight:750; white-space:nowrap; }
.advance-row-actions a { text-decoration:none; }
.advance-row-actions form { margin:0; }
.advance-row-actions button { padding:0; font-size:13px; }
.advance-empty { padding:22px; color:var(--muted); margin:0; }
.advance-delivery { display:flex; flex-wrap:wrap; align-items:center; gap:10px 18px; margin-top:18px; color:var(--muted); }
.advance-delivery p { margin:0; font-size:13px; }
.advance-downloads { display:flex; flex-wrap:wrap; gap:14px; width:100%; font-size:13px; font-weight:750; }
@media(max-width:700px) {
  .advance-toolbar,.advance-list-header,.advance-form-footer { align-items:stretch; flex-direction:column; }
  .advance-month-summary { padding:0; }
  .advance-create-fields { grid-template-columns:1fr; }
  .advance-row { grid-template-columns:minmax(0,1fr) auto; gap:6px 14px; padding:14px 16px; }
  .advance-row-actions { grid-column:1 / -1; justify-content:flex-start; }
  .advance-list-header { padding:16px; }
  .advance-list-search { width:100%; }
}
