:root{
  --brown:#103890; --brown-2:#0C2A6E; --tan:#DCE3F3; --tan-mut:#9FB0D6;
  --cream:#F4EFE6; --card:#FFFFFF; --line:#EBE3D6; --line-2:#F0EADF;
  --ink:#2A1C15; --ink-2:#5C4C41; --muted:#8C7B6D;
  --clay:#103890; --clay-deep:#0C2A6E;
  --amber-bg:#F5E2BE; --amber:#B9862C;
  --red-bg:#F3D6CF; --red:#BE4E3E;
  --blue-bg:#D8E4F1; --blue:#3E6EA0;
  --green-bg:#DCE9D2; --green:#517E3F;
  --purple:#6D5AA8; --pink:#B23A6B;
  --r:16px;
  --sh:0 1px 2px rgba(42,28,21,.05), 0 10px 26px rgba(42,28,21,.05);
}
*{box-sizing:border-box;}
html,body{margin:0;}
body{background:var(--cream);color:var(--ink);font-family:"Inter",system-ui,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;}
.serif{font-family:"Fraunces",Georgia,serif;}
.mono{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;}
h1,h2,h3{margin:0;}
a{text-decoration:none;color:inherit;}
button{font-family:inherit;cursor:pointer;border:none;background:none;}

.layout{display:flex;min-height:100vh;}

/* ---------------- sidebar ---------------- */
.sidebar{width:266px;flex:none;background:var(--brown);color:var(--tan);
  position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:22px 16px;overflow-y:auto;}
.logo{padding:2px 2px 16px;}
.logo .plate{background:#FFFFFF;border-radius:12px;padding:11px 13px;display:inline-block;box-shadow:0 1px 3px rgba(0,0,0,.16);}
.logo .plate img{display:block;width:184px;height:auto;}
.s-label{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--tan-mut);margin:18px 8px 8px;font-weight:600;}
.s-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:11px;color:var(--tan);
  font-weight:500;font-size:13.5px;transition:background .15s,color .15s;}
.s-item svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.7;flex:none;}
.s-item:hover{background:rgba(255,255,255,.06);color:#FBF6F0;}
.s-item.active{background:rgba(255,255,255,.15);color:#FFFFFF;box-shadow:inset 0 0 0 1px rgba(255,255,255,.10);}
.s-spacer{flex:1;}
.g-card{display:flex;align-items:center;gap:11px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);
  border-radius:13px;padding:11px;margin-top:10px;}
.g-card .g{width:32px;height:32px;border-radius:9px;background:#fff;display:grid;place-items:center;flex:none;
  color:var(--brown);font-family:"Fraunces";font-weight:600;}
.g-card b{display:block;color:#FBF6F0;font-size:12.5px;}
.g-card span{font-size:11px;color:var(--tan-mut);}
.g-card form{margin-left:auto;}
.g-card .out{color:var(--tan-mut);font-size:11.5px;padding:6px 8px;border-radius:8px;}
.g-card .out:hover{background:rgba(255,255,255,.1);color:#fff;}

/* ---------------- main ---------------- */
.main{flex:1;min-width:0;display:flex;flex-direction:column;}
.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:18px;
  padding:16px 34px;background:rgba(244,239,230,.86);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);}
.search{flex:1;max-width:760px;display:flex;align-items:center;gap:10px;background:var(--card);
  border:1px solid var(--line);border-radius:13px;padding:11px 14px;box-shadow:var(--sh);color:var(--muted);}
.search svg{width:17px;height:17px;stroke:var(--muted);fill:none;stroke-width:2;}
.search input{border:none;outline:none;background:none;flex:1;font-family:inherit;font-size:14px;color:var(--ink);}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:16px;}
.user{display:flex;align-items:center;gap:11px;}
.user .av{width:44px;height:44px;border-radius:50%;background:var(--brown);color:#F3E7DC;display:grid;place-items:center;font-weight:600;font-family:"Fraunces";}
.user b{display:block;font-size:14px;}
.user span{font-size:12px;color:var(--muted);}

.content{padding:30px 34px 48px;max-width:1360px;width:100%;}
.hello{font-size:40px;font-weight:500;letter-spacing:-.01em;line-height:1.05;}
.subtitle{color:var(--ink-2);margin-top:10px;font-size:15px;}

/* flash */
.flash{margin:0 34px;margin-top:16px;padding:12px 16px;border-radius:12px;font-weight:500;font-size:13.5px;border:1px solid transparent;}
.flash.ok{background:var(--green-bg);color:var(--green);border-color:#C8DCBA;}
.flash.warn{background:var(--amber-bg);color:var(--amber);border-color:#E8D2A4;}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:26px 0 8px;}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;display:flex;gap:14px;align-items:center;box-shadow:var(--sh);}
.kpi .ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;flex:none;}
.kpi .ic svg{width:22px;height:22px;fill:none;stroke-width:2;}
.kpi .n{font-family:"Fraunces";font-size:30px;font-weight:600;line-height:1;}
.kpi .l{color:var(--muted);font-size:12.5px;margin-top:4px;}
.ic.amber{background:var(--amber-bg);} .ic.amber svg{stroke:var(--amber);}
.ic.red{background:var(--red-bg);} .ic.red svg{stroke:var(--red);}
.ic.blue{background:var(--blue-bg);} .ic.blue svg{stroke:var(--blue);}
.ic.green{background:var(--green-bg);} .ic.green svg{stroke:var(--green);}

/* sections */
.sec-head{display:flex;align-items:center;justify-content:space-between;margin:34px 0 16px;gap:12px;flex-wrap:wrap;}
.sec-head h2{font-family:"Fraunces";font-size:26px;font-weight:500;}

/* cards & tables */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);}
.table-wrap{overflow-x:auto;}
table.list{width:100%;border-collapse:collapse;font-size:13.5px;}
table.list th{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:left;padding:14px 16px;border-bottom:1px solid var(--line);}
table.list td{padding:13px 16px;border-bottom:1px solid var(--line-2);vertical-align:middle;}
table.list tr:last-child td{border-bottom:none;}
table.list tr.rowlink{cursor:pointer;}
table.list tr.rowlink:hover td{background:#FCFAF6;}
.badge{display:inline-block;font-size:11.5px;font-weight:600;border-radius:999px;padding:4px 11px;white-space:nowrap;}
.badge.amber{background:var(--amber-bg);color:var(--amber);}
.badge.green{background:var(--green-bg);color:var(--green);}
.badge.red{background:var(--red-bg);color:var(--red);}
.badge.muted{background:#EEE9E0;color:var(--muted);}
.badge.blue{background:var(--blue-bg);color:var(--blue);}
.empty{padding:36px;text-align:center;color:var(--muted);}

/* forms */
.form{padding:20px 22px;display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;}
.form .full{grid-column:1/3;}
.field label{display:block;font-size:11.5px;font-weight:600;color:var(--ink-2);margin-bottom:5px;}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-family:inherit;font-size:13px;background:#FCFBF9;color:var(--ink);}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid #DCE6F7;border-color:var(--clay);}
.form-foot{display:flex;justify-content:flex-end;gap:10px;padding:16px 22px 22px;}
.btn{display:inline-flex;align-items:center;gap:8px;background:var(--clay);color:#fff;border-radius:11px;padding:11px 16px;font-weight:600;font-size:13.5px;box-shadow:var(--sh);}
.btn:hover{background:var(--clay-deep);}
.btn.ghost{background:#F1EBE4;color:var(--ink);box-shadow:none;}
.btn.sm{padding:8px 12px;font-size:12.5px;border-radius:9px;}
.btn.danger{background:var(--red);}
.btn.danger:hover{background:#A03D2F;}
.btn.green{background:var(--green);}
.btn.green:hover{background:#40662F;}
.errbox{margin:18px 22px 0;background:var(--red-bg);color:var(--red);border-radius:11px;padding:12px 16px;font-size:13px;}
.errbox ul{margin:0;padding-left:18px;}

/* dropzone */
.dropzone{display:block;border:1.5px dashed #C6D3EE;border-radius:12px;padding:18px;text-align:center;background:#FAFBFE;cursor:pointer;transition:border-color .15s,background .15s;}
.dropzone:hover,.dropzone.drag{border-color:var(--clay);background:#EEF3FC;}
.dropzone svg{width:26px;height:26px;stroke:var(--clay);fill:none;stroke-width:1.7;}
.dropzone .dz-t{font-size:13px;font-weight:600;margin-top:6px;}
.dropzone .dz-s{font-size:11.5px;color:var(--muted);margin-top:2px;}
.filelist{margin-top:10px;display:flex;flex-direction:column;gap:6px;}
.fileitem{display:flex;align-items:center;gap:10px;background:#F4F6FB;border:1px solid var(--line);border-radius:9px;padding:8px 10px;font-size:12.5px;}
.fileitem .fi{width:28px;height:28px;border-radius:7px;background:#E1EAF8;display:grid;place-items:center;font-family:"IBM Plex Mono";font-size:8px;font-weight:600;color:var(--blue);flex:none;}
.fileitem b{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fileitem span.sz{color:var(--muted);}

/* detail */
.detail-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px;align-items:start;}
.dl{padding:20px 22px;display:grid;grid-template-columns:1fr 1fr;gap:14px 20px;margin:0;}
.dl div dt{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;}
.dl div dd{margin:3px 0 0;font-size:14px;}
.dl .full{grid-column:1/3;}
.conflict{background:var(--red-bg);border:1px solid #E5BCB2;border-radius:12px;padding:12px 16px;color:var(--red);font-size:13px;margin:18px 22px 0;}
.conflict b{display:block;margin-bottom:4px;}

/* planning */
.pl-nav{display:flex;align-items:center;gap:10px;}
.pl-nav a{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 13px;font-weight:600;font-size:13px;box-shadow:var(--sh);}
.pl-nav a:hover{background:#FCFAF6;}
.planning{overflow-x:auto;}
.pl-grid{display:grid;grid-template-columns:150px repeat(7,minmax(120px,1fr));min-width:1000px;}
.pl-grid .hd{padding:11px 10px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;border-bottom:1px solid var(--line);text-align:center;}
.pl-grid .hd.today{color:var(--clay);}
.pl-grid .lieu{padding:14px 14px;font-weight:600;font-size:13px;border-bottom:1px solid var(--line-2);border-right:1px solid var(--line-2);display:flex;align-items:center;}
.pl-grid .cell{border-bottom:1px solid var(--line-2);border-right:1px solid var(--line-2);padding:6px;min-height:56px;display:flex;flex-direction:column;gap:5px;}
.evt{display:block;border-radius:9px;padding:6px 8px;font-size:11.5px;line-height:1.35;background:var(--blue-bg);color:var(--blue);border:1px solid #C3D4E7;}
.evt b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.evt.validee{background:var(--green-bg);color:var(--green);border-color:#C8DCBA;}
.evt.conflit{background:var(--red-bg);color:var(--red);border-color:#E5BCB2;}
.evt:hover{filter:brightness(.97);}
.legend{display:flex;gap:16px;margin-top:12px;font-size:12px;color:var(--muted);align-items:center;flex-wrap:wrap;}
.legend .sw{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:6px;vertical-align:-1px;}

/* sidebar count */
.s-item .count{margin-left:auto;background:rgba(255,255,255,.15);border-radius:999px;padding:1px 9px;font-size:11px;font-family:"IBM Plex Mono";color:#FBF6F0;}
.s-item.active .count{background:rgba(255,255,255,.25);}

/* kanban */
.kb{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:start;}
.kb-col{background:#EFE8DB;border:1px solid var(--line);border-radius:var(--r);padding:10px;display:flex;flex-direction:column;gap:8px;min-height:120px;}
.kb-col.over{outline:2px dashed var(--clay);outline-offset:2px;background:#EAF0FA;}
.kb-head{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 6px;}
.kb-n{font-family:"IBM Plex Mono";font-size:12px;color:var(--muted);background:var(--card);border:1px solid var(--line);border-radius:999px;padding:1px 9px;}
.kb-card{display:block;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 12px;box-shadow:var(--sh);transition:transform .1s,box-shadow .15s;}
.kb-card[draggable=true]{cursor:grab;}
.kb-card:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(42,28,21,.1);}
.kb-card.dragging{opacity:.45;}
.kb-card b{font-size:13px;display:block;margin-bottom:3px;}
.kb-meta{font-size:11.5px;color:var(--muted);}
.kb-empty{text-align:center;color:var(--muted);font-size:12px;padding:14px 0;}

/* plan / timeline */
.timeline{display:flex;flex-direction:column;gap:14px;max-width:860px;}
.tl-group{display:flex;gap:16px;}
.tl-date{flex:none;width:64px;text-align:center;background:var(--card);border:1px solid var(--line);border-radius:13px;padding:10px 0;box-shadow:var(--sh);height:fit-content;}
.tl-date b{font-size:22px;display:block;line-height:1;}
.tl-date span{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);}
.tl-items{flex:1;display:flex;flex-direction:column;gap:8px;}
.tl-item{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:11px 14px;box-shadow:var(--sh);flex-wrap:wrap;}
.tl-item:hover{background:#FCFAF6;}
.tl-item b{font-size:13.5px;}
.tl-meta{font-size:12px;color:var(--muted);margin-left:auto;}

/* calendrier */
.cal{display:grid;grid-template-columns:repeat(7,1fr);}
.cal-hd{padding:11px 8px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;text-align:center;border-bottom:1px solid var(--line);}
.cal-day{min-height:96px;border-bottom:1px solid var(--line-2);border-right:1px solid var(--line-2);padding:7px 7px 9px;}
.cal-day:nth-child(7n+1){border-left:none;}
.cal-day.out{background:#F7F3EB;}
.cal-day.out .cal-num{color:#C9BFB2;}
.cal-day.today{box-shadow:inset 0 0 0 2px var(--clay);border-radius:4px;}
.cal-num{font-family:"IBM Plex Mono";font-size:11.5px;color:var(--muted);display:block;margin-bottom:4px;}
.cal-evt{display:block;font-size:11px;line-height:1.3;background:var(--blue-bg);color:var(--blue);border:1px solid #C3D4E7;border-radius:6px;padding:2px 6px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cal-evt.validee{background:var(--green-bg);color:var(--green);border-color:#C8DCBA;}
.cal-more{font-size:10.5px;color:var(--muted);display:block;margin-top:3px;}

/* créneaux (formulaire) */
.creneau-row{display:grid;grid-template-columns:1.3fr 1fr 1fr 34px;gap:8px;margin-bottom:8px;align-items:center;}
.creneau-row select,.creneau-row input{border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-family:inherit;font-size:13px;background:#FCFBF9;color:var(--ink);}
.creneau-row .rm-creneau{width:32px;height:32px;border-radius:8px;color:var(--muted);font-size:18px;line-height:1;}
.creneau-row .rm-creneau:hover{color:var(--red);background:var(--red-bg);}
.creneaux-list{display:flex;flex-direction:column;gap:6px;}
.creneau-item{display:flex;align-items:center;gap:10px;font-size:13px;flex-wrap:wrap;}

/* checklist */
.checklist{display:flex;flex-direction:column;gap:6px;}
.checklist form{margin:0;}
.check-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;font-size:13px;padding:8px 10px;border-radius:9px;border:1px solid var(--line);background:#FCFBF9;color:var(--ink);}
.check-item:not(.static):hover{background:#F4F0E8;}
.check-item.done{background:var(--green-bg);border-color:#C8DCBA;color:var(--green);}
.check-box{width:18px;height:18px;flex:none;border:1.5px solid var(--muted);border-radius:5px;display:grid;place-items:center;font-size:12px;font-weight:700;background:#fff;}
.check-item.done .check-box{border-color:var(--green);color:var(--green);}
.btn[disabled]{opacity:.45;cursor:not-allowed;}

/* fil de discussion */
.comments{display:flex;flex-direction:column;gap:12px;}
.comment{background:#F6F2EA;border:1px solid var(--line);border-radius:12px;padding:11px 14px;max-width:85%;}
.comment.from-dt{background:var(--blue-bg);border-color:#C3D4E7;align-self:flex-end;}
.comment-meta{font-size:11.5px;color:var(--muted);margin-bottom:4px;}
.comment-body{font-size:13.5px;white-space:pre-wrap;}

/* planning : type de créneau */
.evt .evt-type{display:block;font-size:10px;letter-spacing:.06em;text-transform:uppercase;opacity:.75;}

/* régie (détail demande) */
.regie-item{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px solid var(--line-2);font-size:13px;flex-wrap:wrap;}
.regie-item form{margin:0;display:flex;}
.regie-item .rm{color:var(--muted);font-size:16px;line-height:1;padding:2px 7px;border-radius:6px;}
.regie-item .rm:hover{color:var(--red);background:var(--red-bg);}
.regie-add{display:flex;gap:8px;margin-top:12px;align-items:center;}
.regie-add select,.regie-add input{border:1px solid var(--line);border-radius:9px;padding:8px 10px;font-family:inherit;font-size:12.5px;background:#FCFBF9;color:var(--ink);}
.regie-add select{flex:1;min-width:140px;}

/* partage fiche espace */
.esp-share{display:flex;gap:8px;margin-top:10px;align-items:center;flex-wrap:wrap;}
.esp-share input{flex:1;min-width:150px;border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-size:11px;background:#FCFBF9;color:var(--ink-2);}
.esp-share form{margin:0;}

/* bilan : barres */
.bar-row{display:flex;align-items:center;gap:10px;padding:6px 0;}
.bar-label{width:170px;flex:none;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.bar-track{flex:1;height:14px;background:#F1EADF;border-radius:999px;overflow:hidden;}
.bar-fill{height:100%;background:var(--green);border-radius:999px;min-width:2px;}
.bar-fill.blue{background:var(--blue);}
.bar-fill.amber{background:var(--amber);}
.bar-val{font-size:11.5px;color:var(--muted);min-width:76px;text-align:right;}

/* fiches des espaces */
.esp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px;}
.esp-card{overflow:hidden;display:flex;flex-direction:column;}
.esp-photo{height:170px;background:#EFE8DB;}
.esp-photo img{width:100%;height:100%;object-fit:cover;display:block;}
.esp-placeholder{display:grid;place-items:center;background:linear-gradient(135deg,#DCE3F3,#EFE8DB);}
.esp-placeholder span{font-size:44px;font-weight:600;color:var(--brown);opacity:.35;}
.esp-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1;}
.esp-head{display:flex;gap:8px;flex-wrap:wrap;}
.esp-body h3{font-size:19px;font-weight:600;}
.esp-desc{margin:0;font-size:13px;color:var(--ink-2);}
.esp-dims{border-collapse:collapse;font-size:12.5px;margin-top:2px;}
.esp-dims td{padding:5px 0;border-top:1px solid var(--line-2);}
.esp-dims td:first-child{color:var(--muted);padding-right:14px;}
.esp-dims td.mono{text-align:right;}
.esp-note{margin:4px 0 0;font-size:12px;color:var(--amber);background:var(--amber-bg);border-radius:9px;padding:7px 11px;}

/* login */
.login-wrap{min-height:100vh;display:grid;place-items:center;background:var(--brown);padding:20px;}
.login-card{background:var(--card);border-radius:20px;box-shadow:0 24px 60px rgba(0,0,0,.35);width:min(420px,100%);padding:34px;}
.login-card .plate{text-align:center;margin-bottom:22px;}
.login-card .plate img{width:210px;height:auto;}
.login-card h1{font-family:"Fraunces";font-size:24px;font-weight:600;text-align:center;}
.login-card .sub{text-align:center;color:var(--muted);font-size:13px;margin:6px 0 22px;}
.login-card .field{margin-bottom:14px;}
.login-card .btn{width:100%;justify-content:center;margin-top:6px;}
.login-err{background:var(--red-bg);color:var(--red);border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:14px;}

/* audit */
.audit-time{font-family:"IBM Plex Mono";font-size:11px;color:var(--muted);white-space:nowrap;}

:focus-visible{outline:2px solid var(--clay);outline-offset:2px;border-radius:6px;}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;}}
@media (max-width:980px){
  .sidebar{position:static;width:100%;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px 4px;}
  .logo{padding:0 12px 0 0;} .s-label,.s-spacer,.g-card{display:none;}
  .s-item{padding:8px 10px;}
  .layout{flex-direction:column;}
  .kpis{grid-template-columns:repeat(2,1fr);}
  .detail-grid{grid-template-columns:1fr;}
  .kb{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:560px){
  .kpis{grid-template-columns:1fr;} .form{grid-template-columns:1fr;} .form .full{grid-column:1;}
  .content{padding:22px 18px 40px;} .topbar{padding:14px 18px;} .hello{font-size:32px;}
  .dl{grid-template-columns:1fr;} .dl .full{grid-column:1;}
}
