/* =========================================================
   COMPONENTS — mise en page & composants de l'Atelier
   S'appuie sur les variables définies dans tokens.css.
   ========================================================= */

/* barre d'en-tête persistante (sticky top) — pattern AdriaFlow */
.app-topbar{
  position:sticky;top:0;z-index:900;
  /* neutralise le padding du body pour un fond pleine largeur */
  margin:-32px -20px 28px;
  background:#ffffff;
  border-bottom:1px solid var(--panel-edge);
  box-shadow:0 1px 3px rgba(21,38,58,.06);
}
.app-topbar__inner{
  max-width:1080px;margin:0 auto;
  min-height:64px;padding:10px 28px;
  display:flex;align-items:center;justify-content:space-between;gap:16px;
}
/* groupe gauche : logo + nom d'outil sur une seule ligne */
.topbar-brand{display:flex;align-items:center;gap:10px;text-decoration:none;min-width:0;flex:1 1 auto;}
.topbar-logo{max-height:36px;width:auto;height:auto;display:block;flex:none;}
.topbar-tool{
  font-family:var(--serif);font-weight:700;font-size:16px;color:var(--teal);
  letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;
}
/* droite : bouton réglages, centré verticalement */
.topbar-actions{display:flex;align-items:center;gap:10px;flex:0 0 auto;}
.topbar-settings{
  width:40px;height:40px;padding:0;border-radius:8px;
  border:1px solid var(--panel-edge);background:var(--panel);color:var(--ink-dim);
  cursor:pointer;font-size:18px;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;transition:all .15s;
}
.topbar-settings:hover{border-color:var(--amber);color:var(--amber);}
.topbar-key-warn{
  display:inline-flex;align-items:center;gap:7px;
  font-family:var(--sans);font-size:12px;font-weight:600;color:var(--warn);
  background:rgba(193,91,69,.08);border:1px solid rgba(193,91,69,.30);
  border-radius:20px;padding:7px 12px;cursor:pointer;transition:all .15s;white-space:nowrap;
}
.topbar-key-warn:hover{background:rgba(193,91,69,.14);border-color:var(--warn);}
.topbar-key-warn .dot{width:7px;height:7px;border-radius:50%;background:var(--warn);flex:none;}
.topbar-key-warn[hidden]{display:none;}
@media (max-width:760px){
  .app-topbar{margin:-32px -20px 22px;}
  .app-topbar__inner{min-height:58px;padding:8px 18px;}
  .topbar-logo{max-height:30px;}
  .topbar-key-warn{font-size:0;gap:0;padding:9px;}      /* n'affiche que la pastille sur mobile */
  .topbar-key-warn .dot{width:9px;height:9px;}
}

/* header */
header{margin-bottom:34px;}
.eyebrow{
  font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--amber);font-weight:700;margin-bottom:10px;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.eyebrow::before{content:"";width:18px;height:1px;background:var(--amber);display:inline-block;}
h1{
  font-family:var(--serif);font-weight:800;font-size:clamp(28px,4vw,42px);
  margin:0 0 8px;color:var(--teal);letter-spacing:-.01em;
}
header p{color:var(--ink-dim);font-size:14.5px;max-width:600px;line-height:1.6;margin:0;}

/* layout */
.stage{display:grid;grid-template-columns:230px 1fr;gap:28px;align-items:start;}
.stage.no-rail{grid-template-columns:1fr;}
@media (max-width:760px){.stage{grid-template-columns:1fr;}
  .stack-rail{flex-direction:row;overflow-x:auto;padding-bottom:6px;}
  .stack-rail .layer-chip{min-width:150px;}
}

/* stacked rail (signature element) */
.stack-rail{
  display:flex;flex-direction:column;gap:8px;
  position:sticky;top:24px;
}
.layer-chip{
  position:relative;
  border:1px solid var(--panel-edge);
  background:var(--panel);
  padding:10px 12px;border-radius:6px;
  transition:all .35s cubic-bezier(.2,.7,.2,1);
  opacity:.55;
  transform:translateX(0) scale(1);
}
.layer-chip .num{
  font-family:var(--serif);font-weight:600;font-size:11px;color:var(--ink-faint);
  display:block;margin-bottom:2px;
}
.layer-chip .lbl{font-size:12.5px;color:var(--ink-dim);letter-spacing:.01em;}
.layer-chip.done{
  opacity:1;border-color:var(--amber);
  background:rgba(40,141,152,.07);
  box-shadow:0 3px 10px -4px rgba(40,141,152,.25);
}
.layer-chip.done .num{color:var(--amber);}
.layer-chip.done .lbl{color:var(--ink);}
.layer-chip.active{
  opacity:1;border-color:var(--amber);
  transform:translateX(6px);
  box-shadow:0 3px 12px -4px rgba(40,141,152,.3);
}
.layer-chip.optional-tag{
  position:absolute;right:10px;top:10px;font-size:9.5px;color:var(--ink-faint);
  letter-spacing:.08em;text-transform:uppercase;
}
.completion{
  margin-top:14px;padding:12px 12px 10px;border:1px solid var(--panel-edge);
  border-radius:6px;background:var(--panel);
}
.completion .pct{font-family:var(--serif);font-weight:700;font-size:26px;color:var(--amber);line-height:1;}
.completion .pct-label{font-size:10.5px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.12em;margin-top:4px;}
.bar-track{height:3px;background:var(--panel-edge);border-radius:2px;margin-top:10px;overflow:hidden;}
.bar-fill{height:100%;background:linear-gradient(90deg,var(--amber-soft),var(--amber));width:0%;transition:width .5s ease;}

/* main panel */
.panel{
  background:var(--panel);
  border:1px solid var(--panel-edge);
  border-radius:10px;
  padding:34px 34px 26px;
  min-height:420px;
  display:flex;flex-direction:column;
  position:relative;
  overflow:hidden;
  box-shadow:0 1px 2px rgba(21,38,58,.04), 0 12px 32px -16px rgba(21,38,58,.10);
}
.q-eyebrow{font-size:11px;color:var(--teal);letter-spacing:.16em;text-transform:uppercase;font-weight:700;margin-bottom:10px;}
.q-title{font-family:var(--serif);font-weight:700;font-size:24px;color:var(--teal);margin:0 0 6px;letter-spacing:-.01em;}
.q-hint{font-size:13.5px;color:var(--ink-dim);line-height:1.6;margin:0 0 20px;max-width:620px;}
.q-questions{font-size:12.5px;color:var(--ink-faint);margin:0 0 18px;line-height:1.7;font-style:italic;}

textarea{
  width:100%;min-height:96px;resize:vertical;
  background:var(--bg-soft);border:1px solid var(--panel-edge);
  border-radius:8px;color:var(--ink);font-family:var(--sans);font-size:14.5px;
  padding:14px;line-height:1.55;outline:none;transition:border-color .2s;
}
textarea:focus{border-color:var(--amber);}
textarea::placeholder{color:var(--ink-faint);}

.chip-group{margin-top:16px;}
.chip-group-label{font-size:10.5px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.1em;margin:14px 0 8px;font-weight:600;}
.chips{display:flex;flex-wrap:wrap;gap:7px;}
.chip{
  font-size:12.5px;padding:6px 12px;border-radius:20px;
  border:1px solid var(--panel-edge);background:var(--panel);color:var(--ink-dim);
  cursor:pointer;transition:all .15s;font-family:var(--sans);
}
.chip:hover{border-color:var(--amber);color:var(--ink);}
.chip.picked{background:rgba(40,141,152,.12);border-color:var(--amber);color:var(--amber);}

.nav{
  margin-top:auto;padding-top:26px;
  display:flex;justify-content:space-between;align-items:center;
  border-top:1px solid var(--panel-edge);margin-top:24px;
  flex-wrap:wrap;gap:12px;
}
.btn{
  font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.01em;
  padding:11px 20px;border-radius:8px;border:1px solid var(--panel-edge);
  background:var(--panel);color:var(--ink-dim);cursor:pointer;transition:all .15s;
}
.btn:hover{border-color:var(--ink-dim);color:var(--ink);}
.btn.primary{
  background:var(--amber);border-color:var(--amber);color:#ffffff;
}
.btn.primary:hover{background:var(--amber-soft);border-color:var(--amber-soft);}
.btn.ghost{border-color:transparent;background:transparent;color:var(--ink-faint);}
.btn.ghost:hover{color:var(--ink-dim);}
.btn:disabled{opacity:.35;cursor:not-allowed;}

.step-tag{font-size:11px;color:var(--ink-faint);letter-spacing:.05em;}

/* screens (mode select / gallery / builder / result) */
.screen{display:none;}
.screen.show{display:block;}

.result-header{margin-bottom:22px;}
.develop-anim{
  height:2px;background:linear-gradient(90deg,transparent,var(--amber),transparent);
  background-size:200% 100%;animation:sweep 1.8s ease-in-out;margin-bottom:22px;
}
@keyframes sweep{0%{background-position:200% 0;opacity:0;}20%{opacity:1;}100%{background-position:-200% 0;opacity:1;}}

.prompt-card{
  background:var(--bg-soft);border:1px solid var(--panel-edge);border-radius:8px;
  padding:22px 24px;margin-bottom:16px;position:relative;
}
.prompt-card .cardlabel{
  font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--amber);
  margin-bottom:10px;font-weight:700;
}
.prompt-card.negative .cardlabel{color:var(--warn);}
.prompt-text{
  font-family:var(--serif);font-weight:500;font-size:16px;line-height:1.75;color:var(--ink);
  white-space:pre-wrap;
}
.prompt-card.negative .prompt-text{font-family:var(--sans);font-weight:400;font-size:13.5px;color:var(--ink-dim);}
.copy-btn{
  position:absolute;top:18px;right:18px;
  font-size:11px;padding:6px 12px;border-radius:6px;
  border:1px solid var(--panel-edge);background:var(--panel);color:var(--ink-dim);
  cursor:pointer;transition:all .15s;
}
.copy-btn:hover{border-color:var(--amber);color:var(--amber);}
.copy-btn.copied{border-color:var(--ok);color:var(--ok);}

.inspired-note{
  background:rgba(21,62,100,.05);border:1px solid var(--panel-edge);border-left:3px solid var(--teal);
  border-radius:6px;padding:12px 16px;margin-bottom:18px;font-size:12.5px;color:var(--ink-dim);line-height:1.6;
}
.inspired-note strong{color:var(--ink);}

.layer-recap{margin-top:26px;}
.layer-recap-title{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);margin-bottom:12px;font-weight:600;}
.recap-row{
  display:grid;grid-template-columns:170px 1fr;gap:14px;
  padding:9px 0;border-bottom:1px solid var(--panel-edge);font-size:13px;
}
.recap-row .rk{color:var(--ink-faint);font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;padding-top:1px;}
.recap-row .rv{color:var(--ink-dim);line-height:1.5;}
.recap-row.empty .rv{color:var(--ink-faint);font-style:italic;}

.result-actions{display:flex;gap:10px;margin-top:26px;flex-wrap:wrap;}

/* realism module bar */
.mode-bar{
  display:none;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px;
  margin-top:20px;padding:14px 18px;
  border:1px solid var(--panel-edge);border-radius:8px;
  background:rgba(21,62,100,.04);
}
.mode-left{display:flex;align-items:center;gap:12px;}
.switch{
  position:relative;width:40px;height:22px;border-radius:12px;
  background:var(--panel-edge);border:1px solid var(--panel-edge);cursor:pointer;
  transition:background .2s;flex:none;
}
.switch::after{
  content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;
  background:#ffffff;box-shadow:0 1px 3px rgba(21,38,58,.3);transition:all .2s;
}
.switch.on{background:rgba(21,62,100,.4);border-color:var(--teal);}
.switch.on::after{left:20px;}
.mode-title{font-size:13.5px;color:var(--ink);font-weight:600;}
.mode-sub{font-size:12px;color:var(--ink-faint);margin-top:2px;}
#presetBtn{display:none;}
#presetBtn.show{display:inline-block;}

.checklist{margin-top:26px;}
.checklist-title{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);margin-bottom:12px;font-weight:600;}
.check-row{
  display:flex;align-items:flex-start;gap:10px;padding:8px 0;
  border-bottom:1px solid var(--panel-edge);font-size:13px;color:var(--ink-dim);
}
.check-mark{font-size:14px;flex:none;width:18px;text-align:center;padding-top:1px;}
.check-row.ok .check-mark{color:var(--ok);}
.check-row.miss .check-mark{color:var(--warn);}
.check-row.ok{color:var(--ink);}

.rule-note{
  margin-top:16px;font-size:12.5px;color:var(--teal);line-height:1.6;
  border-left:2px solid var(--teal);padding:2px 0 2px 12px;
}
.required-warning{
  margin-top:14px;font-size:12.5px;color:var(--warn);line-height:1.6;
  border-left:2px solid var(--warn);padding:8px 0 8px 12px;background:rgba(193,91,69,.05);
}

/* mode badge (shown in builder/result) */
.mode-badge{display:none;align-items:center;gap:10px;margin-bottom:18px;font-size:12px;color:var(--ink-dim);}
.mode-badge .pill{background:var(--bg-soft);border:1px solid var(--panel-edge);padding:5px 12px;border-radius:20px;font-weight:600;color:var(--ink);}
.mode-badge-change{background:none;border:none;color:var(--teal);font-size:11.5px;cursor:pointer;text-decoration:underline;padding:0;font-family:var(--sans);}

/* mode select screen */
.mode-intro-hint{font-size:12px;color:var(--ink-faint);margin-top:16px;text-align:center;}
.mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:24px;}
.mode-card{
  text-align:left;background:var(--panel);border:1px solid var(--panel-edge);border-radius:10px;
  padding:22px 20px;cursor:pointer;transition:all .2s;position:relative;overflow:hidden;
  font-family:var(--sans);
  box-shadow:0 1px 2px rgba(21,38,58,.03);
}
.mode-card::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--accent,var(--amber));}
.mode-card:hover{border-color:var(--accent,var(--amber));transform:translateY(-3px);box-shadow:0 14px 28px -14px rgba(21,38,58,.22);}
.mode-emoji{font-size:30px;margin-bottom:10px;}
.mode-label{font-family:var(--serif);font-weight:700;font-size:19px;color:var(--teal);margin-bottom:6px;}
.mode-tagline{font-size:12.5px;color:var(--ink-dim);line-height:1.55;margin-bottom:14px;min-height:38px;}
.mode-rule{font-size:11.5px;color:var(--accent,var(--amber));line-height:1.5;font-style:italic;font-weight:500;border-top:1px solid var(--panel-edge);padding-top:10px;}

/* gallery screen */
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin-top:22px;}
.example-card{
  background:var(--panel);border:1px solid var(--panel-edge);border-radius:8px;
  padding:17px 17px 15px;display:flex;flex-direction:column;gap:8px;
  box-shadow:0 1px 2px rgba(21,38,58,.03);
}
.ex-title{font-family:var(--serif);font-weight:600;font-size:16.5px;color:var(--teal);}
.ex-context{font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em;line-height:1.4;}
.ex-why{margin-top:2px;}
.ex-why summary{font-size:12px;color:var(--amber);cursor:pointer;list-style:none;font-weight:600;}
.ex-why summary::-webkit-details-marker{display:none;}
.ex-why summary::before{content:"▸ ";}
.ex-why[open] summary::before{content:"▾ ";}
.ex-why p{font-size:12px;color:var(--ink-dim);line-height:1.6;margin:8px 0 0;}
.ex-use{margin-top:8px;align-self:flex-start;font-size:12px;padding:8px 14px;}
.gallery-actions{display:flex;justify-content:space-between;margin-top:26px;flex-wrap:wrap;gap:10px;}

/* retouche photo (upload + edition) */
.upload-zone{
  border:2px dashed var(--panel-edge);border-radius:10px;
  padding:30px 20px;text-align:center;cursor:pointer;
  background:var(--bg-soft);transition:all .15s;margin:10px 0 12px;
}
.upload-zone:hover{border-color:var(--amber);}
.upload-zone.dragover{border-color:var(--amber);background:rgba(40,141,152,.08);}
.upload-icon{font-size:28px;margin-bottom:8px;}
.upload-text{font-size:13.5px;color:var(--ink);font-weight:600;}
.upload-sub{font-size:11.5px;color:var(--ink-faint);margin-top:4px;}
#photoPreview{display:none;max-width:100%;max-height:280px;border-radius:8px;margin:0 auto;}
.upload-note{font-size:12px;color:var(--ink-faint);line-height:1.6;margin:0 0 26px;}
#btnRemovePhoto{margin:0 0 14px;font-size:12px;padding:6px 12px;}
.edit-field{margin-bottom:22px;}
.edit-label{display:block;font-size:12.5px;font-weight:600;color:var(--ink);margin-bottom:8px;}
.identity-level-group{display:flex;gap:8px;flex-wrap:wrap;}
.identity-option{
  display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-dim);
  border:1px solid var(--panel-edge);border-radius:20px;padding:7px 14px;cursor:pointer;transition:all .15s;
}
.identity-option:has(input:checked){border-color:var(--amber);color:var(--amber);background:rgba(40,141,152,.08);}
.field-note{font-size:11.5px;color:var(--ink-faint);line-height:1.6;margin:8px 0 0;}
.contradiction-warning{
  background:rgba(193,91,69,.07);border:1px solid var(--warn);border-left:3px solid var(--warn);
  border-radius:6px;padding:12px 16px;font-size:12.5px;color:var(--ink-dim);line-height:1.6;
}
.contradiction-warning strong{color:var(--warn);}

/* intention (builder) */
.intention-block{margin-bottom:24px;padding:14px 16px;border:1px solid var(--panel-edge);border-radius:8px;background:var(--bg-soft);}
.intention-block label{display:block;font-size:12px;font-weight:600;color:var(--ink);margin-bottom:8px;}
.intention-block input{
  width:100%;background:var(--panel);border:1px solid var(--panel-edge);border-radius:6px;
  color:var(--ink);font-family:var(--sans);font-size:13.5px;padding:10px 12px;outline:none;transition:border-color .2s;
}
.intention-block input:focus{border-color:var(--amber);}
.intention-block input::placeholder{color:var(--ink-faint);}

/* tips + AI improve + where-to-use (result screen) */
.tip-line{font-size:12px;color:var(--ink-faint);margin:0 0 20px;line-height:1.6;}
.ai-improve-zone{margin:0 0 24px;}
.ai-improve-note{font-size:12px;color:var(--ink-faint);margin-top:8px;line-height:1.5;}
.prompt-card.ai-improved{border-color:var(--amber);margin-top:12px;}
.ai-error{font-size:12.5px;color:var(--warn);line-height:1.6;background:rgba(193,91,69,.06);border:1px solid var(--panel-edge);border-radius:6px;padding:14px 16px;margin:0;}

.where-to-use{margin:0 0 24px;border:1px solid var(--panel-edge);border-radius:8px;padding:14px 16px;background:var(--bg-soft);}
.where-to-use summary{font-size:12.5px;color:var(--teal);cursor:pointer;font-weight:600;list-style:none;}
.where-to-use summary::-webkit-details-marker{display:none;}
.where-to-use summary::before{content:"▸ ";}
.where-to-use[open] summary::before{content:"▾ ";}
.where-to-use ul{margin:12px 0 8px;padding-left:18px;font-size:12.5px;color:var(--ink-dim);line-height:1.75;}
.where-to-use p{font-size:12px;color:var(--ink-faint);margin:8px 0 0;line-height:1.6;}

/* bouton reglages IA (gear) */
.ai-settings-trigger{padding:11px 14px;font-size:15px;line-height:1;}

/* modale parametres IA (multi-provider BYOK) */
.ai-settings-overlay{
  display:none;position:fixed;inset:0;background:rgba(21,38,58,.55);
  align-items:center;justify-content:center;z-index:1000;padding:20px;
}
.ai-settings-overlay.open{display:flex;}
.ai-settings-modal{
  background:var(--panel);border-radius:12px;padding:28px;max-width:460px;width:100%;
  position:relative;box-shadow:0 24px 60px -20px rgba(21,38,58,.45);max-height:85vh;overflow-y:auto;
}
.ai-settings-modal h3{font-family:var(--serif);font-weight:700;font-size:19px;color:var(--teal);margin:0 0 8px;}
.ai-settings-modal .modal-sub{font-size:12.5px;color:var(--ink-dim);line-height:1.6;margin:0 0 18px;}
.modal-close{
  position:absolute;top:16px;right:16px;background:none;border:none;font-size:15px;
  color:var(--ink-faint);cursor:pointer;padding:6px;line-height:1;
}
.modal-close:hover{color:var(--ink);}
.provider-list{display:flex;flex-direction:column;gap:12px;}
.provider-card{border:1px solid var(--panel-edge);border-radius:8px;padding:12px 14px;transition:border-color .15s;}
.provider-card.selected{border-color:var(--amber);background:rgba(40,141,152,.05);}
.provider-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;flex-wrap:wrap;gap:6px;}
.provider-radio{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--ink);cursor:pointer;}
.free-badge{font-size:9.5px;background:var(--ok);color:#fff;padding:2px 6px;border-radius:10px;text-transform:uppercase;letter-spacing:.03em;margin-left:4px;}
.provider-link{font-size:11.5px;color:var(--teal);text-decoration:none;}
.provider-link:hover{text-decoration:underline;}
.provider-key-input{
  width:100%;background:var(--bg-soft);border:1px solid var(--panel-edge);border-radius:6px;
  padding:8px 10px;font-size:12.5px;font-family:var(--sans);color:var(--ink);outline:none;transition:border-color .15s;
}
.provider-key-input:focus{border-color:var(--amber);}
.modal-storage-note{font-size:11.5px;color:var(--ink-faint);line-height:1.6;margin:16px 0 0;border-top:1px solid var(--panel-edge);padding-top:12px;}
.remember-toggle{
  display:flex;align-items:flex-start;gap:8px;font-size:12px;color:var(--ink-dim);
  line-height:1.5;margin:0 0 16px;cursor:pointer;
}
.remember-toggle input{margin-top:2px;flex:none;}
.provider-key-row{display:flex;gap:8px;align-items:center;}
.provider-key-row .provider-key-input{flex:1;}
.provider-clear-btn{
  flex:none;font-size:11px;padding:8px 10px;border-radius:6px;border:1px solid var(--panel-edge);
  background:transparent;color:var(--ink-faint);cursor:pointer;white-space:nowrap;
}
.provider-clear-btn:hover{color:var(--warn);border-color:var(--warn);}
