:root{
  --ink:#1a1a1a; --ink-soft:#4a4a4a; --ink-mute:#8a8a8a;
  --cream:#f7f3ee; --cream-deep:#ede5d8; --paper:#fffdfa;
  --accent:#7a6a4f; --gold:#b29768; --line:#d9d0bf;
  --ok:#3f7a52; --ko:#a23b3b;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Inter',sans-serif;background:var(--cream);color:var(--ink);font-weight:300;line-height:1.6;font-size:15px;}
.serif{font-family:'Cormorant Garamond',serif;}
button,input,select,textarea{font-family:inherit;font-size:15px;}
a{color:var(--accent);}
img{display:block;}

/* header */
header{background:var(--ink);color:#fff;padding:16px 28px;display:flex;align-items:center;gap:18px;position:sticky;top:0;z-index:50;}
header .logo{height:52px;opacity:.95;}
header .spacer{flex:1;}
header .btn.ghost{color:#fff;border-color:rgba(255,255,255,.4);}
header .btn.ghost:hover{border-color:#cbb990;}

/* barre de navigation persistante (SPEC-0013) — alignée à gauche, après le logo (SPEC-0021) */
.mainnav{display:flex;align-items:center;gap:4px;margin-left:8px;flex-wrap:wrap;}
.mainnav .navlink{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.62);
  text-decoration:none;padding:7px 13px;border-radius:2px;border-bottom:2px solid transparent;transition:color .2s,border-color .2s;}
.mainnav .navlink:hover{color:#fff;}
.mainnav .navlink.active{color:#fff;border-bottom-color:#cbb990;}
@media(max-width:680px){header{flex-wrap:wrap;}.mainnav{margin-left:0;width:100%;order:3;}}

.wrap{max-width:1080px;margin:0 auto;padding:32px 28px 80px;}
.eyebrow{font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--accent);font-weight:500;margin-bottom:14px;}
h2.title{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:38px;margin-bottom:22px;}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 20px;background:var(--ink);color:#fff;border:none;cursor:pointer;
  font-size:12px;letter-spacing:.18em;text-transform:uppercase;transition:opacity .2s;border-radius:2px;}
.btn:hover{opacity:.85;}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line);}
.btn.gold{background:var(--accent);}
.btn.sm{padding:6px 12px;font-size:11px;letter-spacing:.12em;}
.btn:disabled{opacity:.45;cursor:wait;}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}

/* cards dashboard */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,300px));gap:18px;justify-content:start;}
.card{display:flex;flex-direction:column;}
.card .meta{flex:1;}
.card.new{min-height:180px;}
.card.new.ai{border-color:var(--accent);color:var(--accent);}
.card{background:var(--paper);border:1px solid var(--line);padding:22px 24px;cursor:pointer;transition:border-color .2s,transform .2s,box-shadow .2s;}
.card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 14px 30px rgba(0,0,0,.07);}
.card h3{font-family:'Cormorant Garamond',serif;font-size:26px;font-weight:400;}
.card .meta{font-size:13px;color:var(--ink-mute);margin-top:6px;}
.badge{display:inline-block;font-size:10px;letter-spacing:.15em;text-transform:uppercase;padding:3px 9px;border-radius:20px;margin-top:12px;}
.badge.published{background:#e3efe6;color:var(--ok);}
.badge.draft{background:#efe7d8;color:var(--accent);}
.badge.expired{background:#f0dede;color:var(--ko);}
.card.new{display:flex;align-items:center;justify-content:center;border-style:dashed;color:var(--accent);font-size:15px;}
.badges{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;align-items:center;}
.badge,.sigbadge{display:inline-flex;align-items:center;line-height:1;height:22px;padding:0 11px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;border-radius:20px;margin:0;}
.sig-nouveau{background:#eef0f2;color:#5a6b7a;}
.sig-en-cours{background:#fbf3e3;color:#9a7a2a;}
.sig-brouillon{background:#f3eee3;color:#8a6a3a;}
.sig-erreur{background:#f3dede;color:var(--ko);}
.sig-envoye{background:#eaf2fb;color:#3a6ea5;}
.sig-accepte{background:#e3efe6;color:var(--ok);}
.sig-refuse{background:#f3dede;color:var(--ko);}
.sig-archive{background:#ece8e2;color:#8a8a8a;}
.badge.archived{background:#ece8e2;color:#8a8a8a;}
/* SPEC-0031 — onglet Devis / Contrat (Zoho) */
.zoho-parties{border:1px solid var(--line);background:var(--paper);border-radius:6px;padding:12px 16px;margin:4px 0 18px;font-size:14px;}
.zoho-parties b{font-weight:600;}
.zoho-sec{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:500;margin:22px 0 10px;}
.devis-line{display:grid;grid-template-columns:200px 1fr 130px;gap:12px;align-items:center;margin:7px 0;}
.devis-line>.dl-label{font-size:13px;color:var(--ink-soft);}
.devis-line>.dl-label.req{color:var(--ink);font-weight:500;}
.devis-line input{margin:0;}
.devis-line input.dl-price{text-align:right;}
/* SPEC-0038 — grand champ description du devis (pleine largeur, multiligne) */
.dl-biglabel{font-size:13px;font-weight:500;color:var(--ink);margin:6px 0 6px;}
.dl-desc-big{display:block;width:100%;min-height:220px;line-height:1.6;padding:12px 14px;border:1px solid var(--line);border-radius:2px;font-family:inherit;font-size:14px;resize:vertical;white-space:pre-wrap;margin:0 0 12px;}
.zoho-opts{margin-top:18px;display:flex;flex-direction:column;gap:10px;}
.zoho-opts label{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--ink-soft);cursor:pointer;}
.zoho-opts input{width:auto;margin-top:2px;}
@media(max-width:640px){.devis-line{grid-template-columns:1fr;}}
.btn.ghost.danger{color:var(--ko);border-color:#e3c9c9;}
.btn.ghost.danger:hover{border-color:var(--ko);}
.danger-zone{margin-top:34px;border-top:1px solid var(--line);padding-top:20px;}
.filterbar{display:flex;gap:20px;margin-bottom:22px;align-items:center;flex-wrap:wrap;}
.filterbar label{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-mute);}
.filterbar select{width:auto;min-width:160px;}

/* réglages : champ clé élégant (groupe unifié) */
.keyfield{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:6px;background:#fff;padding:2px 8px 2px 14px;transition:border-color .2s,box-shadow .2s;}
.keyfield:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px rgba(122,106,79,.08);}
.keyfield::before{content:'🔑';font-size:14px;opacity:.55;flex-shrink:0;}
.keyfield input[type=password],.keyfield input[type=text]{flex:1;border:none;background:transparent;padding:12px 0;font-family:ui-monospace,Menlo,monospace;letter-spacing:.1em;width:auto;}
.keyfield input:focus{outline:none;}
.keyfield .iconbtn{flex-shrink:0;border:none;background:none;width:32px;height:32px;font-size:16px;opacity:.6;
  display:inline-flex;align-items:center;justify-content:center;color:var(--ink-soft);transition:opacity .2s,color .2s;}
.keyfield .iconbtn svg{width:19px;height:19px;display:block;}
.keyfield .iconbtn:hover{opacity:1;color:var(--accent);}
.keystate{display:inline-flex;align-items:center;gap:6px;font-size:11px;letter-spacing:.06em;margin-top:9px;padding:3px 10px;border-radius:20px;background:var(--cream-deep);color:var(--ink-mute);}
.keystate.ok{background:#e3efe6;color:var(--ok);}
.cost{font-size:12px;color:var(--accent);}

/* connexion + admins */
.login{max-width:380px;margin:60px auto;}
.login .btn{width:100%;}
.err{color:var(--ko);font-size:13px;min-height:18px;margin-top:10px;text-align:center;}
.userbox{display:flex;align-items:center;gap:14px;margin-left:18px;flex-shrink:0;}
.userbox .whoami{font-size:12px;color:#cbb990;letter-spacing:.04em;white-space:nowrap;}
.userbox .btn{flex-shrink:0;}
.admin-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);background:var(--paper);margin-bottom:8px;font-size:14px;}
.admin-add{display:flex;gap:8px;margin-top:6px;}
.admin-add input{flex:1;}

/* SPEC-0028 — page Réglages en cartes par domaine (présentation hiérarchisée),
   textarea lourds repliés (accordéon), Enregistrer global collé en bas (sticky). */
.settings-card{border:1px solid var(--line);background:var(--paper);border-radius:3px;padding:22px 24px;margin-bottom:18px;}
.settings-card .card-title{font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:26px;margin-bottom:4px;}
.settings-card .card-desc{font-size:12.5px;color:var(--ink-mute);margin-bottom:18px;max-width:62ch;}
.settings-card .fld:last-child,.settings-card>.acc:last-child{margin-bottom:0;}
/* accordéon : replie les gros textarea (prompt d'extraction, config MCP) par défaut */
.acc{border:1px solid var(--line);border-radius:3px;background:var(--cream);margin-bottom:16px;}
.acc>summary{cursor:pointer;list-style:none;user-select:none;display:flex;align-items:center;gap:9px;
  padding:11px 14px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);}
.acc>summary::-webkit-details-marker{display:none;}
.acc>summary::before{content:'▸';color:var(--accent);transition:transform .15s;}
.acc[open]>summary{border-bottom:1px solid var(--line);color:var(--ink);}
.acc[open]>summary::before{transform:rotate(90deg);}
.acc-body{padding:14px;}
.acc-body>*:last-child{margin-bottom:0;}
/* barre d'enregistrement globale — collée en bas tant que les réglages PUT sont visibles */
.settings-save{position:sticky;bottom:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:14px;
  margin:6px 0 24px;padding:12px 18px;background:rgba(247,243,238,.94);backdrop-filter:blur(4px);
  border:1px solid var(--line);border-radius:3px;box-shadow:0 4px 18px rgba(0,0,0,.07);}
.settings-save-lbl{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);}
/* connecteur MCP distant mis en avant (SPEC-0026) */
.mcp-mode-lbl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-weight:500;margin-bottom:12px;}
@media(max-width:680px){.settings-save{flex-direction:column;align-items:stretch;}.settings-save .btn{width:100%;justify-content:center;}}

/* editor */
/* SPEC-0021 — en-tête d'éditeur figé : pinné juste sous le <header> global (sticky
   top:0, z-index:50). Seul #panel défile en dessous. */
.editor-head{position:sticky;top:var(--header-h,68px);z-index:30;background:var(--cream);padding-bottom:2px;}
.editor-head .tabs{margin-bottom:0;}
#panel{padding-top:24px;}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin:0 0 26px;flex-wrap:wrap;}
.tab{padding:11px 18px;cursor:pointer;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);border-bottom:2px solid transparent;}
.tab.active{color:var(--ink);border-color:var(--accent);}
.panel{display:none;}
.panel.active{display:block;}

/* SPEC-0027 — en-tête d'éditeur atteignable sur mobile (approche B) : onglets sticky
   en haut (scroll horizontal), actions Aperçu/PDF/Enregistrer/Publier détachées dans
   une barre fixe en bas (au pouce). Tout est sous @media → desktop (SPEC-0021) inchangé. */
.act-pdf .lbl-sm{display:none;}            /* desktop : label long « Télécharger le PDF » */
@media(max-width:680px){
  /* onglets : une seule rangée qui défile horizontalement, tous atteignables */
  .editor-head .tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
  .editor-head .tabs::-webkit-scrollbar{display:none;}
  .editor-head .tab{flex:0 0 auto;white-space:nowrap;}
  /* actions détachées en barre fixe basse (n'utilise PAS sticky → robuste iOS Safari) */
  .editor-actions{position:fixed;left:0;right:0;bottom:0;z-index:60;flex-wrap:nowrap;gap:8px;
    padding:10px 14px;background:var(--cream);border-top:1px solid var(--line);box-shadow:0 -4px 16px rgba(0,0,0,.10);}
  .editor-actions .btn{font-size:11px;letter-spacing:.08em;}
  .editor-actions .act-sec{flex:0 0 auto;padding:12px 12px;}
  .editor-actions .act-pri{flex:1;justify-content:center;padding:13px 8px;}
  .act-pdf .lbl-lg{display:none;}
  .act-pdf .lbl-sm{display:inline;}
  /* le contenu de l'éditeur ne doit pas passer sous la barre fixe */
  #panel{padding-bottom:96px;}
}

label.fld{display:block;margin-bottom:16px;}
label.fld>span{display:block;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:6px;}
.char-count{font-size:10px;letter-spacing:.04em;color:var(--ink-mute);text-align:right;margin-top:4px;font-variant-numeric:tabular-nums;}
.char-count.over{color:var(--ko);font-weight:600;}
input[type=text],input[type=email],input[type=date],input[type=password],select,textarea{width:100%;padding:11px 13px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:2px;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);}
/* sélecteurs natifs élégants (caret custom, suppression du chrome OS) */
select{-webkit-appearance:none;appearance:none;cursor:pointer;padding-right:38px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%237a6a4f' stroke-width='1.5' d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;}
textarea{min-height:78px;resize:vertical;line-height:1.6;white-space:pre-wrap;}
/* SPEC-0017 — saisie du résumé : champ agrandi, aéré, sauts de ligne préservés.
   Police lisible (hérite d'Inter via button,input,select,textarea) — PAS de monospace. */
textarea.resume-ta{min-height:380px;line-height:1.75;padding:16px 18px;font-size:15.5px;letter-spacing:.005em;}
textarea.resume-ta-modal{min-height:440px;}
.two{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;}

/* section cards */
.sec{background:var(--paper);border:1px solid var(--line);margin-bottom:14px;}
.sec.disabled{opacity:.55;}
.sec-head{display:flex;align-items:center;gap:12px;padding:13px 16px;background:var(--cream-deep);border-bottom:1px solid var(--line);}
.sec-head .type{font-weight:500;letter-spacing:.04em;}
.sec-head .grip{font-size:12px;color:var(--ink-mute);}
.sec-head .spacer{flex:1;}
.sec-body{padding:18px 16px;}
.sec-body.collapsed{display:none;}
.sec-cols{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start;}
.sec-form{min-width:0;}
/* SPEC-0021 — colle l'aperçu live sous l'en-tête d'éditeur figé (header global + .editor-head) */
.sec-preview-box{position:sticky;top:calc(var(--header-h,68px) + var(--editor-head-h,150px) + 16px);}
.sec-preview-lbl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:8px;}
.sec-preview{width:100%;height:520px;border:1px solid var(--line);background:#fff;border-radius:2px;}
/* SPEC-0018 — régénération IA ciblée d'un bloc (dans le formulaire de la carte) */
.sec-regen{margin-top:18px;padding:14px 14px 4px;border:1px dashed var(--line);border-radius:3px;background:var(--cream);}
.sec-regen-lbl{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:10px;}
.sec-regen select{font-size:12px;}
.sec-regen-custom{margin-top:10px;}
.sec-regen-custom textarea{min-height:90px;}
.btn.loading{position:relative;color:transparent !important;}
.btn.loading::after{content:'';position:absolute;width:14px;height:14px;top:calc(50% - 7px);left:calc(50% - 7px);
  border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
@media(max-width:900px){.sec-cols{grid-template-columns:1fr;}.sec-preview{height:360px;}}
.iconbtn{background:none;border:1px solid var(--line);cursor:pointer;width:30px;height:30px;border-radius:2px;color:var(--ink-soft);}
.iconbtn:hover{border-color:var(--accent);color:var(--accent);}

/* SPEC-0023 — barre « Ajouter une section » : dropdown custom + aperçu skeleton
   par item. Wireframes décoratifs (aria-hidden) en gris/crème sobres. */
.addsec{align-items:center;}
.addsec-dropdown{position:relative;}
.addsec-trigger{display:flex;align-items:center;gap:10px;min-width:300px;padding:7px 12px;
  background:#fff;border:1px solid var(--line);border-radius:2px;cursor:pointer;text-align:left;
  color:var(--ink);transition:border-color .2s;}
.addsec-trigger:hover,.addsec-trigger[aria-expanded=true]{border-color:var(--accent);}
.addsec-lbl{flex:1;font-size:14px;}
.addsec-caret{width:12px;height:8px;flex-shrink:0;
  background:no-repeat center/contain url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%237a6a4f' stroke-width='1.5' d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E");}
.addsec-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:40;min-width:340px;max-height:340px;overflow:auto;
  background:var(--paper);border:1px solid var(--line);border-radius:4px;box-shadow:0 14px 34px rgba(0,0,0,.12);padding:4px;}
.addsec-menu[hidden]{display:none;}
.addsec-item{display:flex;align-items:center;gap:12px;padding:7px 9px;border-radius:2px;cursor:pointer;outline:none;}
.addsec-item:hover,.addsec-item:focus,.addsec-item.sel{background:var(--cream-deep);}
.addsec-item:focus{box-shadow:0 0 0 2px rgba(122,106,79,.18) inset;}
.addsec-item-lbl{font-size:13px;color:var(--ink);}

/* ── wireframes (boîtes grises proportionnées) ───────────────────────────── */
.skel{--g:#e4ddcf;--g2:#d2c9b6;}
.skel-mini{display:block;width:80px;height:48px;flex-shrink:0;border:1px solid var(--line);
  background:var(--cream);border-radius:2px;padding:4px;overflow:hidden;}
.skel-mini>*{width:100%;height:100%;}
.skel i{display:block;height:5px;border-radius:2px;background:var(--g);margin:3px 0;}
.skel i.w80{width:80%;}.skel i.w70{width:70%;}.skel i.w60{width:60%;}.skel i.w50{width:50%;}
.skel .w40{width:40%;}
.skel-hero{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:var(--g);border-radius:2px;}
.skel-bar{display:block;height:5px;width:55%;background:#fff;opacity:.85;border-radius:2px;}
.skel-bar.w60{width:60%;}.skel-bar.w40{width:40%;}
.skel-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:9px;gap:3px;}
.skel-grid>span{background:var(--g);border-radius:1px;}
.skel-grid>span.tall{grid-row:span 2;}
.skel-band{background:var(--g);border-radius:2px;}
.skel-duo{display:flex;gap:5px;}
.skel-duo .skel-img{flex:0 0 42%;background:var(--g);border-radius:2px;}
.skel-duo .skel-txt{flex:1;display:flex;flex-direction:column;justify-content:center;}
.skel-video{display:flex;align-items:center;justify-content:center;background:#2b2722;border-radius:2px;}
.skel-play{width:0;height:0;border-style:solid;border-width:6px 0 6px 10px;border-color:transparent transparent transparent #cbb990;}
.skel-links{display:flex;flex-direction:column;gap:3px;}
.skel-links .skel-cover{flex:1;background:var(--g);border-radius:2px;}
.skel-links .skel-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;height:12px;flex-shrink:0;}
.skel-links .skel-thumbs i{height:100%;margin:0;background:var(--g2);}
.skel-time{display:flex;flex-direction:column;justify-content:center;gap:4px;}
.skel-time>span{display:flex;align-items:center;gap:5px;}
.skel-time b{width:14px;height:5px;background:var(--g2);border-radius:2px;flex-shrink:0;}
.skel-time i{margin:0;}
.skel-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;}
.skel-cards>span{background:var(--g);border-radius:2px;}
.skel-sign{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;}
.skel-sign .skel-cta{width:42%;height:9px;background:var(--accent);opacity:.55;border-radius:2px;}
.skel-sign .skel-bar{background:var(--g2);opacity:1;}
.skel-footer{background:#2b2722;border-radius:2px;}

/* switch */
.switch{position:relative;width:40px;height:22px;flex-shrink:0;}
.switch input{opacity:0;width:0;height:0;}
.slider{position:absolute;inset:0;background:#cfc4b1;border-radius:22px;transition:.2s;cursor:pointer;}
.slider::before{content:'';position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;}
.switch input:checked + .slider{background:var(--accent);}
.switch input:checked + .slider::before{transform:translateX(18px);}

/* SPEC-0007 — case « PDF » par section + toggle défaut réglages */
.pdf-toggle{display:inline-flex;align-items:center;gap:5px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);cursor:pointer;flex-shrink:0;}
/* checkbox PDF : carré crème → doré avec coche blanche (cohérent avec le design) */
.pdf-toggle input[type=checkbox]{appearance:none;-webkit-appearance:none;width:15px;height:15px;border:1px solid var(--line);border-radius:3px;background:#fff;cursor:pointer;position:relative;flex-shrink:0;transition:background .15s,border-color .15s;}
.pdf-toggle input[type=checkbox]:hover{border-color:var(--accent);}
.pdf-toggle input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent);}
.pdf-toggle input[type=checkbox]:checked::after{content:'';position:absolute;left:4.5px;top:1.5px;width:3.5px;height:7.5px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);}
.pdf-toggle input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(122,106,79,.18);}
label.switchfld{display:flex;align-items:center;gap:10px;margin-bottom:16px;cursor:pointer;}
label.switchfld input{width:16px;height:16px;cursor:pointer;}

/* arrays */
.arr-item{display:flex;gap:8px;align-items:flex-start;margin-bottom:8px;}
.arr-item .grow{flex:1;}
.subcard{border:1px solid var(--line);padding:12px;margin-bottom:10px;background:#fff;}
.imgpick{display:flex;gap:8px;align-items:center;}
.imgpick img{width:46px;height:46px;object-fit:cover;border:1px solid var(--line);background:var(--cream-deep);}
.imgpick select{flex:1;}

/* sélecteur d'image visuel */
.imgtile{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#fff;border:1px solid var(--line);
  padding:8px;cursor:pointer;border-radius:2px;transition:border-color .2s;}
.imgtile:hover{border-color:var(--accent);}
.imgtile-thumb{width:54px;height:54px;flex-shrink:0;border:1px solid var(--line);background:var(--cream-deep);overflow:hidden;display:flex;align-items:center;justify-content:center;}
.imgtile-thumb img{width:100%;height:100%;object-fit:cover;}
.imgtile-thumb.empty{border-style:dashed;color:var(--ink-mute);font-size:22px;}
.imgtile-lbl{display:flex;flex-direction:column;gap:3px;min-width:0;}
.imgtile-name{font-size:14px;color:var(--ink);word-break:break-all;}
.imgtile-badge,.chooser-badge{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:#fff;background:var(--accent);padding:2px 7px;border-radius:20px;align-self:flex-start;}
.modal.chooser{max-width:760px;}
.chooser-search{margin-bottom:14px;}
.chooser-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;max-height:62vh;overflow:auto;}
.chooser-cell{position:relative;border:1px solid var(--line);background:#fff;cursor:pointer;padding:0;display:flex;flex-direction:column;overflow:hidden;transition:border-color .15s,transform .15s;}
.chooser-cell:hover{border-color:var(--accent);transform:translateY(-2px);}
.chooser-cell.sel{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
.chooser-cell img{width:100%;height:90px;object-fit:cover;}
.chooser-cell .chooser-name{font-size:10px;color:var(--ink-mute);padding:5px 6px;word-break:break-all;}
.chooser-cell.empty{min-height:120px;align-items:center;justify-content:center;color:var(--ink-mute);font-size:13px;}
.chooser-badge{position:absolute;top:5px;right:5px;}

/* tags */
.tagbar{display:flex;flex-wrap:wrap;gap:5px;align-items:center;padding:8px 6px 2px;}
.tagbar.ro{padding:6px;}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:10px;letter-spacing:.03em;background:var(--cream-deep);color:var(--ink-soft);padding:3px 8px;border-radius:20px;}
.tagx{border:none;background:none;cursor:pointer;color:var(--ink-mute);font-size:12px;line-height:1;padding:0;}
.tagx:hover{color:var(--ko);}
.taginp{border:none;background:none;font-size:11px;width:60px;outline:none;color:var(--accent);padding:0;}
.chooser-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;}
.tagchip{font-size:11px;padding:4px 11px;border:1px solid var(--line);border-radius:20px;cursor:pointer;background:#fff;color:var(--ink-soft);letter-spacing:.03em;}
.tagchip:hover{border-color:var(--accent);}
.tagchip.on{background:var(--accent);color:#fff;border-color:var(--accent);}

/* gestionnaire d'images v2 */
.imgmgr-bar{margin:6px 0 16px;}
.imgmgr-top{display:flex;gap:12px;align-items:center;margin-bottom:10px;}
.imgmgr-search{max-width:280px;}
.imgmgr-top .row{margin-left:auto;}
.imgmgr-count{white-space:nowrap;}
.imgs.clean figure.imgcard{position:relative;border:1px solid var(--line);background:#fff;cursor:pointer;overflow:hidden;transition:border-color .15s,transform .15s,box-shadow .15s;}
.imgs.clean figure.imgcard:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 12px 26px rgba(0,0,0,.08);}
.imgs.clean .imgcard img{width:100%;height:118px;object-fit:cover;display:block;}
.imgs.clean .imgcard figcaption{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--ink-mute);padding:5px 7px;}
.imgs.clean .imgcard-name{word-break:break-all;flex:1;}
.imgs.clean .imgcard-n{background:var(--accent);color:#fff;border-radius:20px;padding:1px 7px;font-size:9px;}
.focus-dot{position:absolute;top:7px;left:7px;width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px #fff;}
/* détail image + zone de focus */
.modal.detail{max-width:680px;}
.focus-stage{position:relative;display:inline-block;line-height:0;cursor:crosshair;max-width:100%;}
.focus-stage img{max-width:100%;max-height:56vh;object-fit:contain;border:1px solid var(--line);}
.focus-marker{position:absolute;width:26px;height:26px;border:2px solid #fff;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 2px var(--accent),0 2px 8px rgba(0,0,0,.4);pointer-events:none;display:none;}
.focus-marker::after{content:'';position:absolute;inset:9px;border-radius:50%;background:var(--accent);}

/* actions sur les cartes du tableau de bord */
.card-actions{display:flex;gap:6px;margin-top:14px;}
.card-actions .mini{font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border:1px solid var(--line);
  background:#fff;color:var(--ink-soft);cursor:pointer;border-radius:2px;}
.card-actions .mini:hover{border-color:var(--accent);color:var(--accent);}
.card-actions .mini.danger:hover{border-color:var(--ko);color:var(--ko);}
.cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;}
.cols .col{border:1px solid var(--line);padding:10px;background:#fff;}
.cols .col h5{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-mute);margin-bottom:8px;}
.hint{font-size:12px;color:var(--ink-mute);margin-top:4px;}

/* images grid */
.imgs{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:12px;margin-top:18px;}
.imgs figure{border:1px solid var(--line);background:#fff;position:relative;}
.imgs img{width:100%;height:110px;object-fit:cover;}
.imgs figcaption{font-size:10px;padding:4px 6px;color:var(--ink-mute);word-break:break-all;}
.imgs .del{position:absolute;top:4px;right:4px;background:rgba(0,0,0,.6);color:#fff;border:none;width:22px;height:22px;border-radius:50%;cursor:pointer;}
.drop{border:2px dashed var(--line);padding:26px;text-align:center;color:var(--ink-mute);border-radius:4px;}
.drop.over{border-color:var(--accent);background:var(--cream-deep);}

/* log */
.log{background:#161311;color:#e7ddc8;font-family:ui-monospace,Menlo,monospace;font-size:12.5px;padding:16px;border-radius:4px;min-height:120px;max-height:340px;overflow:auto;white-space:pre-wrap;margin-top:16px;}

/* stats */
.stat-row{display:flex;gap:26px;margin:8px 0 22px;}
.stat{background:var(--paper);border:1px solid var(--line);padding:16px 22px;text-align:center;min-width:120px;}
.stat b{font-family:'Cormorant Garamond',serif;font-size:34px;font-weight:400;display:block;}
.stat span{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);}
table{width:100%;border-collapse:collapse;font-size:13px;}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);}
th{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);font-weight:500;}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;}
.dot.ok{background:var(--ok);}.dot.ko{background:var(--ko);}

/* modal */
.modal-bg{position:fixed;inset:0;background:rgba(26,26,26,.5);display:flex;align-items:center;justify-content:center;z-index:100;padding:24px;}
.modal{background:var(--cream);max-width:520px;width:100%;padding:36px;max-height:90vh;overflow:auto;}
.modal.wide{max-width:780px;} /* SPEC-0017 — modal « Créer depuis un résumé » élargi */
.modal h3{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:30px;margin-bottom:20px;}
.hidden{display:none !important;}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 22px;border-radius:3px;font-size:13px;z-index:200;opacity:0;transition:opacity .3s;}
.toast.show{opacity:1;}
/* SPEC-0019 — bandeau de génération IA asynchrone */
.aigen-banner{display:flex;align-items:center;gap:8px;padding:13px 18px;border-radius:4px;font-size:14px;margin-bottom:18px;border:1px solid var(--line);}
.aigen-banner.running{background:var(--cream-deep);color:var(--accent);border-color:var(--gold);}
.aigen-banner.error{background:#f0dede;color:var(--ko);border-color:#d8bcbc;}
@media(max-width:680px){.two,.cols{grid-template-columns:1fr;}}
/* SPEC-0006 — carnet de contacts (lignes liste + onglet Mariés) */
.contact-row{display:flex;align-items:center;gap:12px;}
.contact-row .grow{flex:1;min-width:0;}

/* SPEC-0035 — bandeau « offre acceptée » (feature 1) */
.accept-banner{display:flex;align-items:center;gap:9px;padding:11px 16px;border-radius:4px;font-size:13.5px;margin-bottom:18px;
  background:#e9f1ea;color:var(--ok);border:1px solid #c4ddca;}
.accept-banner .ab-mark{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;
  border-radius:50%;background:var(--ok);color:#fff;font-size:12px;line-height:1;}

/* SPEC-0035 — date picker custom à la charte (feature 5) */
.datepick{position:relative;}
.datepick-field{display:flex;align-items:center;gap:10px;width:100%;padding:11px 13px;text-align:left;cursor:pointer;
  border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:2px;font-size:15px;}
.datepick-field:hover,.datepick-field[aria-expanded=true]{border-color:var(--accent);}
.datepick-cal{display:inline-flex;color:var(--accent);flex-shrink:0;}
.datepick-cal svg{width:17px;height:17px;}
.datepick-lbl{flex:1;}
.datepick-lbl.ph{color:var(--ink-mute);}
.datepick-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:60;width:268px;padding:12px;
  background:var(--cream);border:1px solid var(--line);border-radius:4px;box-shadow:0 14px 34px rgba(0,0,0,.14);}
.dp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.dp-title{font-family:'Cormorant Garamond',serif;font-size:20px;font-style:italic;color:var(--ink);}
.dp-nav{width:30px;height:30px;border:1px solid var(--line);background:#fff;color:var(--ink-soft);cursor:pointer;
  border-radius:2px;font-size:16px;line-height:1;display:inline-flex;align-items:center;justify-content:center;}
.dp-nav:hover{border-color:var(--accent);color:var(--accent);}
.dp-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px;}
.dp-dow span{text-align:center;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-mute);}
.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.dp-cell{aspect-ratio:1;border:none;background:none;cursor:pointer;font-size:13px;color:var(--ink-soft);border-radius:3px;
  display:inline-flex;align-items:center;justify-content:center;}
.dp-cell.empty{cursor:default;}
.dp-cell:not(.empty):hover{background:var(--cream-deep);color:var(--ink);}
.dp-cell.sel{background:var(--accent);color:#fff;}
.dp-cell.sel:hover{background:var(--accent);color:#fff;}
.dp-manual{display:block;margin:10px auto 0;background:none;border:none;cursor:pointer;color:var(--accent);
  font-size:11px;letter-spacing:.04em;text-decoration:underline;}

/* SPEC-0035 — onglet Data : archive lecture seule (feature 7) */
.data-row{display:flex;align-items:center;gap:12px;padding:11px 14px;border:1px solid var(--line);background:var(--paper);
  margin-bottom:8px;border-radius:2px;}
.data-row .data-name{flex:1;min-width:0;font-size:14px;word-break:break-all;}
.data-row .data-size{font-size:12px;color:var(--ink-mute);font-variant-numeric:tabular-nums;white-space:nowrap;}
.data-json{font-family:ui-monospace,Menlo,monospace;font-size:12px;line-height:1.55;color:var(--ink-soft);
  white-space:pre-wrap;word-break:break-word;max-height:420px;overflow:auto;margin:0;}
