:root { --navy:#092965; --blue:#5d7fbd; --pale:#e9f0ff; --paper:#fbfcf8; --ink:#11264d; --muted:#6c7a91; --line:#d7dfeb; --good:#5b7725; --warn:#9a6517; --bad:#a24349; --lime:#c5ec68; --shadow:0 18px 55px rgba(23, 52, 103, .1); }
* { box-sizing:border-box; }
body { margin:0; min-width:320px; color:var(--ink); background:radial-gradient(circle at 90% 0,#dce9ff 0,transparent 32rem),linear-gradient(135deg,#f7f9fd,#fafaf3); font-family:Aptos, "Avenir Next", "Segoe UI", sans-serif; }
button,input,select,textarea { font:inherit; } button { cursor:pointer; } button:disabled { cursor:not-allowed; opacity:.48; }
.login-page { display:grid; place-items:center; min-height:100vh; padding:28px; }.login-card { width:min(100%,440px); padding:38px; background:rgba(255,255,255,.85); border:1px solid #dbe4f3; box-shadow:var(--shadow); }.brand { color:var(--navy); font-size:13px; font-weight:800; letter-spacing:.16em; }.brand::before { content:"EF"; display:inline-grid; place-items:center; width:34px; height:34px; margin-right:10px; color:white; background:var(--navy); font-family:Georgia, serif; letter-spacing:0; }.login-card h1 { margin:34px 0 10px; font:600 38px/1.05 Georgia, serif; letter-spacing:-.04em; }.login-card p { color:var(--muted); line-height:1.55; }.field { display:grid; gap:7px; margin:17px 0; color:#586983; font-size:12px; font-weight:700; }.field input,.field select,.field textarea { width:100%; padding:11px 12px; color:var(--ink); border:1px solid #cbd7e8; border-radius:3px; background:white; }.field textarea { min-height:82px; resize:vertical; }.primary,.secondary,.danger { display:inline-flex; align-items:center; justify-content:center; border:0; border-radius:3px; padding:11px 15px; font-size:13px; font-weight:800; text-align:center; }.primary { color:#fff; background:var(--navy); }.secondary { color:var(--navy); border:1px solid #bfcce0; background:#fff; }.danger { color:#fff; background:var(--bad); }.login-card .primary { width:100%; margin-top:12px; }.hint { margin-top:23px; padding-top:16px; border-top:1px solid var(--line); color:var(--muted); font-size:11px; }
.app-shell { display:grid; grid-template-columns:235px minmax(0,1fr); min-height:100vh; }.side { display:flex; position:sticky; top:0; flex-direction:column; height:100vh; padding:25px 17px; color:#dbe7ff; background:var(--navy); }.side .brand { color:white; }.side .brand::before { color:var(--navy); background:#b9d0ff; }.environment { width:max-content; margin:42px 5px 17px; padding:5px 7px; color:#bbcff5; border:1px solid #315289; font:10px/1.1 ui-monospace, monospace; letter-spacing:.08em; }.menu { display:grid; gap:5px; }.menu button { display:flex; align-items:center; gap:11px; width:100%; padding:11px 10px; color:#d4e2fb; border:0; border-radius:4px; background:transparent; text-align:left; }.menu button span { width:18px; color:#82a6df; font:10px ui-monospace, monospace; }.menu button.active,.menu button:hover { color:var(--navy); background:#c6d9fb; }.user { margin-top:auto; padding:16px 8px 3px; border-top:1px solid #23467d; font-size:12px; }.user span { display:block; margin-top:3px; color:#98b2df; font-size:10px; }.logout { margin-top:13px; padding:0; color:#b8cdf1; border:0; background:none; font-size:11px; text-align:left; }
.main { width:min(1430px,100%); padding:0 clamp(22px,5vw,78px) 64px; }.topbar { display:flex; align-items:center; justify-content:space-between; min-height:84px; border-bottom:1px solid var(--line); }.crumb { color:#71809a; font:11px ui-monospace, monospace; letter-spacing:.04em; }.page-head { display:flex; align-items:end; justify-content:space-between; gap:25px; padding:45px 0 28px; }.eyebrow { margin:0 0 8px; color:#63799e; font:10px ui-monospace, monospace; letter-spacing:.1em; }.page-head h1,.card h2 { margin:0; font-family:Georgia, serif; letter-spacing:-.04em; }.page-head h1 { font-size:clamp(34px,4vw,54px); line-height:1; }.page-head p:not(.eyebrow) { margin:10px 0 0; color:var(--muted); font-size:13px; }.status { display:inline-block; padding:6px 8px; color:#536b17; background:#e7f1c8; font:10px ui-monospace, monospace; letter-spacing:.05em; }.status.brouillon,.status.a_completer { color:#79661b; background:#faedc8; }.status.a_corriger { color:#8b4248; background:#f6dde1; }.status.valide_pour_traitement { color:#40651b; background:#dff0c1; }.metrics { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }.metric,.card { border:1px solid var(--line); background:rgba(255,255,255,.76); box-shadow:0 3px 16px rgba(29,55,99,.025); }.metric { min-height:124px; padding:20px; }.metric span,.metric small { display:block; color:var(--muted); font-size:11px; }.metric b { display:block; margin:9px 0 5px; font:42px/.9 Georgia, serif; }.toolbar { display:flex; justify-content:space-between; gap:13px; margin:38px 0 14px; }.search { width:min(100%,360px); padding:10px 12px; border:1px solid #cdd8e8; border-radius:3px; background:#fff; }.dossiers { border-top:1px solid var(--line); }.dossier-row { display:grid; grid-template-columns:50px minmax(150px,1fr) 185px 112px 20px; align-items:center; gap:16px; width:100%; padding:16px 7px; color:var(--ink); border:0; border-bottom:1px solid var(--line); background:transparent; text-align:left; }.dossier-row:hover { background:rgba(161,189,240,.16); }.company-mark { display:grid; place-items:center; width:36px; height:36px; color:var(--navy); border-radius:50%; background:#c4d8fb; font:11px ui-monospace, monospace; }.dossier-row b,.dossier-row small { display:block; }.dossier-row b { font-size:13px; }.dossier-row small { margin-top:3px; color:var(--muted); font-size:10px; }.progress { height:4px; background:#e0e5ec; }.progress i { display:block; height:100%; background:var(--navy); }.empty { padding:42px 0; color:var(--muted); text-align:center; }
.wizard { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr); gap:18px; }.card { padding:23px; }.card h2 { font-size:23px; }.card p { color:var(--muted); font-size:12px; line-height:1.55; }.step-list { display:grid; gap:0; margin-top:19px; }.step-list div { display:grid; grid-template-columns:30px 1fr; gap:10px; padding:12px 0; border-bottom:1px solid #e7ebf2; }.step-list b { display:grid; place-items:center; width:24px; height:24px; color:white; border-radius:50%; background:var(--navy); font-size:11px; }.step-list span { color:var(--muted); font-size:11px; }.form-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:0 16px; }.form-grid .wide { grid-column:1/-1; }.actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:21px; }.note { padding:12px; color:#5e6d82; border-left:3px solid #a9c0ed; background:#f0f5ff; font-size:11px; line-height:1.55; }.detail-grid { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(290px,.7fr); gap:18px; }.document-list,.history { display:grid; gap:8px; margin-top:16px; }.document { display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; padding:13px; border:1px solid #e0e6ef; background:#fff; }.document b,.document small { display:block; }.document b { font-size:12px; }.document small { margin-top:3px; color:var(--muted); font-size:10px; }.document a { color:var(--blue); font-size:11px; font-weight:800; }.check { display:grid; grid-template-columns:18px 1fr auto; align-items:center; gap:8px; padding:10px 0; border-bottom:1px solid #e7ebf2; font-size:11px; }.check i { width:9px; height:9px; border-radius:50%; background:#b4becc; }.check.ok i { background:#82a33f; }.check small { color:var(--muted); }.upload { margin-top:20px; padding-top:18px; border-top:1px solid var(--line); }.upload-row { display:grid; grid-template-columns:1fr 1.4fr auto; gap:8px; align-items:end; }.upload-row input,.upload-row select { width:100%; padding:9px; border:1px solid #cbd7e8; border-radius:3px; background:white; font-size:11px; }.history article { padding:10px 0; border-bottom:1px solid #e7ebf2; }.history b,.history span { display:block; font-size:11px; }.history span { margin-top:3px; color:var(--muted); font-size:10px; }.role-lock { padding:12px; color:#7a651b; background:#fbf1d4; font-size:11px; line-height:1.5; }
#toast { position:fixed; right:24px; bottom:24px; max-width:390px; padding:13px 16px; transform:translateY(25px); opacity:0; color:white; border-left:4px solid #bdd969; background:var(--navy); box-shadow:var(--shadow); font-size:12px; pointer-events:none; transition:.22s ease; } #toast.show { transform:none; opacity:1; }
@media (max-width:860px) { .app-shell { display:block; }.side { position:relative; width:100%; height:auto; min-height:0; padding:17px; }.environment,.user { display:none; }.menu { grid-template-columns:repeat(3,1fr); margin-top:18px; }.menu button { justify-content:center; font-size:11px; }.menu button span { display:none; }.main { padding:0 18px 45px; }.wizard,.detail-grid { grid-template-columns:1fr; }.dossier-row { grid-template-columns:42px 1fr 18px; gap:10px; }.dossier-row .status,.dossier-row .progress { display:none; } }
@media (max-width:560px) { .topbar { min-height:65px; }.page-head { align-items:flex-start; flex-direction:column; padding:31px 0 22px; }.metrics { gap:7px; }.metric { min-height:95px; padding:13px; }.metric b { font-size:30px; }.metric small { display:none; }.form-grid { grid-template-columns:1fr; }.form-grid .wide { grid-column:auto; }.upload-row { grid-template-columns:1fr; }.toolbar { align-items:stretch; flex-direction:column; }.toolbar .primary { width:100%; }.card { padding:18px; } }

/* Mobile-first field workflow, layered over the desktop back-office layout. */
.terrain-start { display:grid; place-items:center; width:min(100%,510px); margin:0 0 25px; padding:18px 16px; color:white; border:0; border-radius:16px; background:var(--navy); box-shadow:0 13px 24px rgba(9,41,101,.17); text-align:center; }.terrain-start small,.terrain-start b { display:block; }.terrain-start small { color:#bbceef; font:700 9px ui-monospace,monospace; letter-spacing:.07em; }.terrain-start b { margin-top:5px; font-size:13px; }.mobile-capture { display:grid; place-items:center; position:relative; margin:18px 0 24px; padding:18px 16px; overflow:hidden; border:1px solid #bacbe7; border-radius:15px; background:#f7faff; cursor:pointer; text-align:center; }.mobile-capture input { position:absolute; inset:0; width:100%; opacity:0; cursor:pointer; }.mobile-capture b,.mobile-capture small { display:block; }.mobile-capture b { font-size:12px; }.mobile-capture small { margin-top:5px; color:var(--muted); font-size:10px; }.back-mobile { display:none; }
.ai-extraction { display:flex; align-items:center; justify-content:space-between; gap:14px; margin:-6px 0 19px; padding:13px 14px; border:1px solid #dce5f4; border-radius:12px; background:#f9fbff; }.ai-extraction p { margin:0; }.ai-extraction b,.ai-extraction span { display:block; }.ai-extraction b { color:var(--ink); font-size:11px; }.ai-extraction span { margin-top:3px; color:var(--muted); font-size:10px; }.ai-extraction .secondary { flex:0 0 auto; padding:9px 11px; white-space:nowrap; font-size:11px; }.ai-extraction[data-state="ready"] { border-color:#b9cae7; background:#f2f6ff; }.ai-extraction[data-state="loading"] { border-color:#dfc87e; background:#fff9e9; }.ai-extraction[data-state="success"] { border-color:#bbd97d; background:#f5fae9; }.ai-extraction[data-state="empty"] { border-color:#dfc87e; background:#fff9e9; }
.document-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; }.document-sign { padding:8px 10px; font-size:10px; }.signature-layout { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr); gap:18px; }.signature-card { max-width:760px; }.consent { display:flex; align-items:flex-start; gap:9px; margin:18px 0; color:#53627a; font-size:11px; line-height:1.5; }.consent input { width:16px; height:16px; margin:1px 0 0; accent-color:var(--navy); }.signature-pad-wrap { position:relative; margin:19px 0 9px; overflow:hidden; border:1px solid #aebfdb; border-radius:12px; background:repeating-linear-gradient(0deg,#fff,#fff 35px,#edf2fa 36px); }.signature-pad-wrap canvas { display:block; width:100%; height:180px; touch-action:none; }.signature-pad-wrap span { position:absolute; right:14px; bottom:12px; color:#99a7bd; font:10px ui-monospace,monospace; pointer-events:none; }.clear-signature { padding:0; color:#60759b; border:0; background:transparent; font-size:11px; text-decoration:underline; }.signature-summary { align-self:start; }
.zoning-layout { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(290px,.75fr); gap:18px; }.plan-head { display:flex; align-items:flex-start; justify-content:space-between; gap:15px; }.plan-hint { padding:7px 9px; color:#5b6f95; border-radius:20px; background:#edf3ff; font-size:10px; white-space:nowrap; }.zoning-stage { position:relative; margin-top:19px; overflow:hidden; border:1px solid #c8d5e7; border-radius:12px; background:repeating-conic-gradient(#f6f8fc 0 25%,#eff3f9 0 50%) 50%/18px 18px; cursor:crosshair; touch-action:none; }.zoning-stage img { display:block; width:100%; min-height:240px; max-height:680px; object-fit:contain; }.zone-overlay,.zone-draft { position:absolute; inset:0; pointer-events:none; }.saved-zone,.zone-draft { position:absolute; border:2px solid var(--navy); background:rgba(197,236,104,.27); }.saved-zone { border-color:#527c29; background:rgba(197,236,104,.34); }.zone-draft { border-style:dashed; background:rgba(93,127,189,.18); }.zones-card { margin-top:18px; }.zone-list { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:17px; }.zone-row { display:grid; grid-template-columns:12px 1fr auto; gap:9px; align-items:center; padding:11px; border:1px solid #e1e7f0; border-radius:10px; background:white; }.zone-swatch { width:10px; height:10px; border-radius:2px; background:var(--lime); }.zone-row b,.zone-row small { display:block; }.zone-row b { font-size:11px; }.zone-row small { margin-top:3px; color:var(--muted); font-size:10px; }.zone-delete { padding:0; color:#a24349; border:0; background:transparent; font-size:10px; text-decoration:underline; }.empty-zone { color:var(--muted); font-size:12px; }.plan-pdf-note { display:grid; gap:5px; margin-top:18px; padding:20px; color:#69778e; border:1px dashed #bdcbe0; border-radius:12px; background:#f7faff; font-size:11px; line-height:1.55; }
.correspondence-layout { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(290px,.8fr); gap:18px; }.correspondence-card { max-width:820px; }.attachment-list { display:grid; gap:8px; margin:12px 0 18px; }.attachment-choice { display:flex; align-items:center; gap:10px; padding:11px; border:1px solid #e1e7f0; border-radius:10px; background:#fff; cursor:pointer; }.attachment-choice input { width:16px; height:16px; accent-color:var(--navy); }.attachment-choice b,.attachment-choice small { display:block; }.attachment-choice b { font-size:11px; }.attachment-choice small { margin-top:3px; color:var(--muted); font-size:10px; }.correspondence-summary { align-self:start; }

@media (max-width:860px) { .app-shell { display:block; }.side { display:flex; position:fixed; z-index:10; top:auto; right:0; bottom:0; left:0; width:100%; height:69px; min-height:0; padding:7px 10px calc(7px + env(safe-area-inset-bottom)); background:rgba(9,41,101,.98); box-shadow:0 -10px 30px rgba(13,32,75,.15); }.side .brand,.environment,.user { display:none; }.menu { grid-template-columns:repeat(3,1fr); gap:0; width:100%; margin:0; }.menu button { display:grid; gap:3px; place-items:center; padding:4px; color:#bbcae9; border-radius:10px; font-size:9px; font-weight:700; text-align:center; }.menu button span { display:block; width:auto; color:inherit; font-size:19px; line-height:17px; }.menu button.active,.menu button:hover { color:var(--navy); background:var(--lime); }.main { padding:0 18px calc(91px + env(safe-area-inset-bottom)); }.topbar { min-height:62px; border:0; }.crumb { display:flex; align-items:center; gap:7px; color:var(--navy); font:800 10px "Avenir Next Rounded","Trebuchet MS",sans-serif; letter-spacing:.08em; }.crumb::before { content:"EF"; display:grid; place-items:center; width:27px; height:27px; color:white; border-radius:8px 8px 8px 2px; background:var(--navy); font:700 11px Georgia,serif; letter-spacing:0; }.topbar-create { display:none; }.page-head { align-items:flex-start; flex-direction:column; padding:18px 0 18px; }.page-head h1 { font:600 34px/.98 Georgia,"Iowan Old Style",serif; letter-spacing:-.05em; }.page-head p:not(.eyebrow) { max-width:330px; margin-top:8px; font-size:12px; line-height:1.45; }.dashboard-head { padding-bottom:17px; }.metrics { grid-template-columns:repeat(3,1fr); gap:7px; margin-top:2px; }.metric { min-height:82px; padding:11px 9px; border-radius:13px; background:rgba(255,255,255,.9); }.metric span { font-size:9px; line-height:1.2; }.metric b { margin:8px 0 0; font-size:29px; }.metric small { display:none; }.toolbar { align-items:flex-end; margin:29px 0 7px; }.toolbar h2 { margin:0; font:600 22px Georgia,serif; letter-spacing:-.04em; }.toolbar .search { width:40px; height:40px; padding:0; border-radius:50%; background:transparent; color:transparent; }.toolbar .search::placeholder { color:transparent; }.toolbar .search:focus { width:100%; padding:10px 12px; border-radius:10px; color:var(--ink); }.toolbar .search:focus::placeholder { color:#7a879d; }.dossiers { border:0; }.dossier-row { grid-template-columns:42px 1fr 18px; gap:10px; padding:13px 5px; border:1px solid #e3e9f3; border-width:0 0 1px; }.dossier-row .status,.dossier-row .progress { display:none; }.dossier-row b { font-size:12px; }.dossier-row small { font-size:9px; }.company-mark { width:34px; height:34px; border-radius:11px; }.wizard,.detail-grid,.signature-layout,.zoning-layout,.correspondence-layout { grid-template-columns:1fr; }.wizard { gap:14px; }.journey-card,.signature-summary,.correspondence-summary { display:none; }.card { padding:18px; border-radius:16px; }.create-head { padding-bottom:6px; }.create-head .status { display:none; }.back-mobile { display:inline-block; margin-bottom:19px; padding:7px 9px; border-radius:8px; font-size:10px; }.create-card h2 { font-size:27px; }.create-card > p:not(.eyebrow) { font-size:11px; }.detail-grid { gap:13px; }.document { padding:11px; border-radius:10px; }.upload-row { grid-template-columns:1fr; }.role-lock { border-radius:9px; }.actions .primary { flex:1; }.terrain-start { width:100%; margin-bottom:20px; }.note { border-radius:0 9px 9px 0; }.zone-list { grid-template-columns:1fr; }.plan-hint { white-space:normal; } }
@media (max-width:560px) { body { background:radial-gradient(circle at 100% 0,#dce9ff 0,transparent 20rem),linear-gradient(135deg,#f7f9fd,#fafaf3); }.form-grid { grid-template-columns:1fr; }.form-grid .wide { grid-column:auto; }.field { margin:13px 0; }.field input,.field select,.field textarea { border-radius:10px; }.field textarea { min-height:70px; }.actions { position:sticky; bottom:68px; z-index:3; margin:20px -18px -18px; padding:12px 18px; border-top:1px solid var(--line); background:rgba(255,255,255,.96); }.actions > button { flex:1 1 130px; min-height:42px; }.mobile-capture { margin-bottom:19px; }.detail-grid .card h2 { font-size:21px; }.check { grid-template-columns:16px 1fr auto; }.check small { font-size:9px; }.login-page { align-items:start; padding:80px 20px 30px; }.login-card { padding:28px 23px; border-radius:20px; }.login-card h1 { margin-top:27px; font-size:35px; } }

.document-simulation { display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; margin-top:15px; padding:13px; border:1px dashed #9db3da; border-radius:10px; background:#f5f8ff; }.document-simulation b,.document-simulation span { display:block; }.document-simulation b { font-size:11px; }.document-simulation span { margin-top:3px; color:#63728a; font-size:10px; line-height:1.45; }.document-simulation .secondary { font-size:10px; white-space:nowrap; }
.calculation-card { max-width:920px; }.category-rows { display:grid; gap:9px; margin:12px 0; }.calculation-row { display:grid; grid-template-columns:1fr 1.4fr .8fr auto; gap:10px; align-items:end; padding:11px; border:1px solid #e1e7f0; border-radius:10px; background:#fff; }.calculation-row .field { margin:0; }
.qualification-steps { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }.qualification-step { display:flex; flex-direction:column; min-height:245px; }.qualification-step .actions,.qualification-step > .secondary { margin-top:auto; }.qualification-step .actions { position:static; padding:0; border:0; background:transparent; }.generated-documents { margin-top:18px; }
@media (max-width:860px) { .qualification-steps { grid-template-columns:1fr; gap:13px; }.qualification-step { min-height:0; }.qualification-step .actions { position:static; margin:17px 0 0; padding:0; background:transparent; } }
@media (max-width:560px) { .document-simulation { grid-template-columns:1fr; }.document-simulation .secondary { width:100%; }.calculation-row { grid-template-columns:1fr; }.calculation-row .zone-delete { justify-self:start; } }

.login-register { width:100%; margin-top:10px; text-align:center; }
.auditor-visibility { display:flex; align-items:center; gap:8px; margin-top:10px; color:#55647a; font-size:11px; }
.auditor-visibility input { width:16px; height:16px; accent-color:var(--navy); }
.auditor-assignment { margin-top:4px; }
.assigned-auditors { display:flex; flex-wrap:wrap; gap:7px; margin:12px 0; }
.assigned-auditors span { padding:6px 8px; color:#28446f; border-radius:99px; background:#edf3ff; font-size:10px; font-weight:700; }
.auditor-list { display:grid; gap:9px; margin-top:15px; }
.auditor-row { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:12px; border:1px solid #e1e7f0; border-radius:10px; background:#fff; }
.auditor-row b,.auditor-row small { display:block; }.auditor-row b { font-size:12px; }.auditor-row small { margin-top:3px; color:var(--muted); font-size:10px; }
.auditor-row > div:last-child { display:flex; align-items:center; gap:8px; }.auditor-row .secondary { padding:8px 10px; font-size:10px; }
.auditor-admin-note { margin-top:18px; }.auditor-admin-note p:last-child { max-width:750px; color:#5b6a82; line-height:1.6; }
.document-viewer { min-height:72vh; }.document-viewer iframe,.document-preview-image { display:block; width:100%; min-height:62vh; margin-top:16px; border:1px solid #d7e0ee; border-radius:10px; background:#f8faff; }.document-preview-image { min-height:0; max-height:78vh; object-fit:contain; }
@media (max-width:560px) { .auditor-row { align-items:flex-start; flex-direction:column; }.auditor-row > div:last-child { width:100%; justify-content:space-between; }.document-viewer { margin:0 -8px; padding:14px; }.document-viewer iframe { min-height:68vh; }.document-preview-image { max-height:68vh; } }
