:root{
  --navy:#1F3864;
  --navy-deep:#132445;
  --ink:#20242B;
  --ink-soft:#54606E;
  --paper:#F3F5F4;
  --card:#FFFFFF;
  --line:#D9DEDA;
  --line-strong:#B7BFB9;
  --green-bg:#DCEEE2; --green-fg:#1E6B45; --green-line:#9FCBAE;
  --red-bg:#FBE1DF; --red-fg:#9C2A24; --red-line:#E6ABA4;
  --amber-bg:#FBEBCF; --amber-fg:#8A5A0B; --amber-line:#E9C688;
  --grey-bg:#EAEAE7; --grey-fg:#6B6F6A; --grey-line:#CBCDC8;
  --radius:10px;
  --serif:'Source Serif 4', Georgia, serif;
  --sans:'Inter', system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--sans);}
button{font-family:var(--sans);cursor:pointer;}
input, select, textarea{font-family:var(--sans);}
a{color:var(--navy);}
::selection{background:#c9d8ee;}

.topbar{
  background:var(--navy);
  color:#fff;
  padding:14px 28px;
  display:flex;
  align-items:center;
  justify-content:space-between;
}
.topbar .brand{display:flex;align-items:center;gap:12px;}
.topbar .crest{
  width:34px;height:34px;border-radius:50%;
  border:1.5px solid rgba(255,255,255,0.55);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-weight:600;font-size:14px;
}
.topbar h1{font-family:var(--serif);font-weight:600;font-size:17px;margin:0;letter-spacing:.2px;}
.topbar .sub{font-size:11.5px;color:#C9D3E4;margin-top:1px;}
.topbar-right{display:flex;align-items:center;gap:16px;font-size:13px;color:#D7DEEC;}
.topbar-right form{margin:0;}
.topbar-right button{
  background:rgba(255,255,255,0.08);
  border:1px solid rgba(255,255,255,0.28);
  color:#fff;padding:7px 14px;border-radius:8px;font-size:13px;
}
.topbar-right button:hover{background:rgba(255,255,255,0.16);}

.shell{max-width:980px;margin:0 auto;padding:36px 24px 60px;}

/* ---------- LOGIN ---------- */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;}
.login-card{
  width:380px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:36px 34px 30px;
  box-shadow:0 1px 3px rgba(20,30,40,0.06);
}
.login-crest{
  width:56px;height:56px;border-radius:50%;
  border:2px solid var(--navy);margin:0 auto 18px;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--serif);font-weight:600;color:var(--navy);font-size:22px;
}
.login-card h2{font-family:var(--serif);font-size:19px;text-align:center;margin:0 0 4px;color:var(--navy-deep);}
.login-card .tagline{text-align:center;font-size:12.5px;color:var(--ink-soft);margin:0 0 26px;}
.field{margin-bottom:16px;}
.field label{display:block;font-size:12px;color:var(--ink-soft);margin-bottom:6px;font-weight:500;}
.field input{
  width:100%;height:38px;border:1px solid var(--line-strong);border-radius:8px;
  padding:0 12px;font-size:14px;background:#fff;color:var(--ink);
}
.field input:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(31,56,100,0.12);}
.login-btn{
  width:100%;height:40px;background:var(--navy);color:#fff;border:none;border-radius:8px;
  font-size:14px;font-weight:600;margin-top:4px;
}
.login-btn:hover{background:var(--navy-deep);}
.login-err{
  background:var(--red-bg);color:var(--red-fg);border:1px solid var(--red-line);
  border-radius:8px;padding:9px 12px;font-size:12.5px;margin-bottom:14px;
}
.login-note{font-size:11px;color:#9AA2AC;text-align:center;margin-top:18px;line-height:1.5;}

/* ---------- DASHBOARD ---------- */
.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:22px;flex-wrap:wrap;gap:12px;}
.page-head h2{font-family:var(--serif);font-size:24px;margin:0;color:var(--navy-deep);}
.page-head p{margin:4px 0 0;color:var(--ink-soft);font-size:13.5px;}
.btn-primary{
  background:var(--navy);color:#fff;border:none;border-radius:8px;
  padding:10px 18px;font-size:13.5px;font-weight:600;white-space:nowrap;
}
.btn-primary:hover{background:var(--navy-deep);}
.btn-ghost{
  background:#fff;color:var(--navy);border:1px solid var(--line-strong);border-radius:8px;
  padding:9px 15px;font-size:13px;font-weight:500;
}
.btn-ghost:hover{background:#EEF1F5;}
.btn-text{background:none;border:none;color:var(--ink-soft);font-size:12.5px;padding:6px 4px;text-decoration:underline;}
.btn-text:hover{color:var(--red-fg);}

.site-list{display:flex;flex-direction:column;gap:10px;}
.site-card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 18px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;
}
.site-main{flex:1;min-width:220px;}
.site-main .name{font-family:var(--serif);font-size:16px;font-weight:600;color:var(--ink);text-decoration:none;}
.site-main .meta{font-size:12.5px;color:var(--ink-soft);margin-top:3px;}
.badge{
  display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;
  padding:5px 11px;border-radius:20px;border:1px solid transparent;white-space:nowrap;
}
.badge-green{background:var(--green-bg);color:var(--green-fg);border-color:var(--green-line);}
.badge-red{background:var(--red-bg);color:var(--red-fg);border-color:var(--red-line);}
.badge-amber{background:var(--amber-bg);color:var(--amber-fg);border-color:var(--amber-line);}
.badge-grey{background:var(--grey-bg);color:var(--grey-fg);border-color:var(--grey-line);}
.site-actions{display:flex;gap:8px;flex-wrap:wrap;}
.site-actions form{margin:0;}

.empty{
  text-align:center;padding:60px 20px;color:var(--ink-soft);
  background:var(--card);border:1px dashed var(--line-strong);border-radius:var(--radius);
}
.empty h3{font-family:var(--serif);color:var(--navy-deep);margin:0 0 6px;font-size:17px;}
.empty p{font-size:13.5px;margin:0 0 16px;}

.overlay{
  position:fixed;inset:0;background:rgba(20,25,32,0.45);
  display:flex;align-items:center;justify-content:center;z-index:50;padding:20px;
}
.modal{
  background:#fff;border-radius:14px;width:100%;max-width:460px;padding:26px 26px 22px;
  box-shadow:0 8px 30px rgba(0,0,0,0.18);
}
.modal h3{font-family:var(--serif);margin:0 0 18px;color:var(--navy-deep);font-size:18px;}
.modal .field input{width:100%;border:1px solid var(--line-strong);border-radius:8px;padding:9px 11px;font-size:13.5px;}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px;}

/* ---------- AUDIT VIEW ---------- */
.crumb{font-size:12.5px;color:var(--ink-soft);margin-bottom:8px;}
.crumb a{color:var(--navy);text-decoration:none;}
.crumb a:hover{text-decoration:underline;}
.audit-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px;flex-wrap:wrap;gap:14px;}
.audit-head h2{font-family:var(--serif);font-size:22px;margin:0;color:var(--navy-deep);}
.audit-head .meta{font-size:12.5px;color:var(--ink-soft);margin-top:4px;}

.theme-nav{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:22px;}
.theme-pill{
  border:1px solid var(--line-strong);background:#fff;border-radius:20px;
  padding:7px 13px;font-size:12.5px;color:var(--ink-soft);display:flex;align-items:center;gap:7px;
  text-decoration:none;
}
.theme-pill.active{background:var(--navy);color:#fff;border-color:var(--navy);}
.theme-pill .dot{width:7px;height:7px;border-radius:50%;background:var(--grey-line);flex-shrink:0;}
.theme-pill.active .dot{background:#fff;}
.theme-pill .dot.ok{background:#5DCAA5;}
.theme-pill .dot.warn{background:#EF9F27;}
.theme-pill .dot.bad{background:#E24B4A;}

.theme-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;}
.theme-panel h3{font-family:var(--serif);font-size:18px;margin:0 0 6px;color:var(--navy-deep);}
.theme-panel .intro{font-size:13px;color:var(--ink-soft);margin:0 0 20px;line-height:1.55;}

.point{border-top:1px solid var(--line);padding:16px 0;}
.point:first-of-type{border-top:none;}
.point-row{display:flex;gap:14px;align-items:flex-start;}
.point-num{
  width:24px;height:24px;border-radius:50%;background:var(--paper);color:var(--ink-soft);
  font-size:11.5px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;
}
.point-body{flex:1;min-width:0;}
.point-text{font-size:13.8px;line-height:1.5;color:var(--ink);}
.point-ref{font-size:11.5px;color:#8A93A0;font-style:italic;margin-top:4px;}
.point-controls{display:grid;grid-template-columns:160px 1fr 1fr;gap:12px;margin-top:12px;}
.point-controls select, .point-controls textarea{
  border:1px solid var(--line-strong);border-radius:7px;padding:7px 10px;font-size:12.8px;color:var(--ink);width:100%;
}
.point-controls select{height:34px;background:#fff;}
.point-controls textarea{min-height:34px;resize:vertical;font-family:var(--sans);}
.point-controls label{display:block;font-size:10.5px;color:var(--ink-soft);margin-bottom:4px;text-transform:uppercase;letter-spacing:.03em;}
select.st-Oui{background:var(--green-bg);border-color:var(--green-line);color:var(--green-fg);font-weight:600;}
select.st-Non{background:var(--red-bg);border-color:var(--red-line);color:var(--red-fg);font-weight:600;}
select.st-Partiel{background:var(--amber-bg);border-color:var(--amber-line);color:var(--amber-fg);font-weight:600;}
select.st-Non-applicable, select.st-Non-verifie{background:var(--grey-bg);border-color:var(--grey-line);color:var(--grey-fg);}

@media(max-width:680px){.point-controls{grid-template-columns:1fr;}}

.footbar{display:flex;justify-content:space-between;align-items:center;margin-top:26px;}
.savehint{font-size:12px;color:var(--ink-soft);}
.savehint.saving{color:var(--navy);}
.savehint.err{color:var(--red-fg);}

/* ---------- SYNTHESIS ---------- */
.report{background:#fff;border:1px solid var(--line);border-radius:12px;padding:0;overflow:hidden;}
.report-head{background:var(--navy);color:#fff;padding:26px 30px;}
.report-head .eyebrow{font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:#AEBEDA;margin-bottom:6px;}
.report-head h2{font-family:var(--serif);font-size:23px;margin:0 0 4px;}
.report-head .addr{font-size:13px;color:#D2DAEA;}
.report-body{padding:28px 30px 30px;}

.stamp-wrap{display:flex;gap:28px;align-items:center;margin-bottom:26px;flex-wrap:wrap;}
.stamp{
  width:118px;height:118px;border-radius:50%;flex-shrink:0;
  border:3px solid var(--stamp-color, var(--navy));
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  transform:rotate(-6deg);position:relative;
}
.stamp::before{content:"";position:absolute;inset:6px;border:1px solid var(--stamp-color, var(--navy));border-radius:50%;}
.stamp .pct{font-family:var(--serif);font-size:26px;font-weight:700;color:var(--stamp-color, var(--navy));}
.stamp .lbl{font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--stamp-color, var(--navy));margin-top:2px;text-align:center;padding:0 6px;}
.stamp-meta{flex:1;min-width:200px;}
.stamp-meta .row{display:flex;gap:8px;font-size:13px;color:var(--ink-soft);margin-bottom:5px;}
.stamp-meta .row b{color:var(--ink);font-weight:600;min-width:110px;}

table.theme-table{width:100%;border-collapse:collapse;margin-bottom:28px;font-size:13px;}
table.theme-table th{
  text-align:left;background:var(--paper);color:var(--ink-soft);font-weight:600;
  font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;padding:9px 12px;border-bottom:2px solid var(--line-strong);
}
table.theme-table td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top;}
table.theme-table tr:last-child td{border-bottom:none;}

.section-title{font-family:var(--serif);font-size:16px;color:var(--navy-deep);margin:0 0 12px;border-top:1px solid var(--line);padding-top:20px;}
.section-title.first{border-top:none;padding-top:0;}
.manq-item{border-left:3px solid var(--red-line);background:#FCF4F3;border-radius:0 8px 8px 0;padding:10px 14px;margin-bottom:8px;}
.manq-item.partiel{border-left-color:var(--amber-line);background:#FDF7EC;}
.manq-item .txt{font-size:13px;color:var(--ink);}
.manq-item .ref{font-size:11px;color:var(--ink-soft);font-style:italic;margin-top:3px;}
.manq-item .note{font-size:12px;color:var(--ink-soft);margin-top:4px;}
.no-manq{font-size:13px;color:var(--ink-soft);font-style:italic;}

.print-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;}

@media print{
  .topbar,.theme-nav,.audit-head .btn-ghost,.crumb,.print-actions,.footbar{display:none !important;}
  .shell{padding:0;max-width:100%;}
  .report{border:none;}
}
