:root{
  --bg:#f4f1eb;--paper:#fffdf9;--ink:#161616;--muted:#716c64;
  --line:#ddd6cb;--soft:#ece7df;--accent:#ad8e55;--red:#8a3131;
  --green:#476b51;--shadow:0 18px 50px rgba(26,22,17,.08)
}
*{box-sizing:border-box}
html{background:var(--bg);color:var(--ink)}
body{margin:0;background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}
button,input,a{font:inherit}button{touch-action:manipulation}a{color:inherit}img{max-width:100%}
.container{width:min(1180px,100%);margin:auto;padding:18px 16px 120px}
.admin-header,.public-header{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:4px 0 22px;border-bottom:1px solid var(--line)}
.brand-link img,.public-brand img{display:block;width:150px;height:auto}
.admin-nav{display:flex;align-items:center;gap:16px;font-size:.77rem;font-weight:750}
.admin-nav a,.link-button{color:inherit;text-decoration:none;border:0;background:none;padding:0;cursor:pointer}
.admin-nav a:hover,.link-button:hover{text-decoration:underline}
.eyebrow{margin-top:32px;color:var(--muted);font-size:.71rem;font-weight:800;text-transform:uppercase;letter-spacing:.18em}
.eyebrow.gold{color:var(--accent)}.eyebrow.no-top{margin-top:0}
h1{margin:8px 0 12px;font:500 clamp(2.7rem,8vw,5.8rem)/.94 Georgia,"Times New Roman",serif;letter-spacing:-.045em}
h2{font-family:Georgia,"Times New Roman",serif;font-weight:500}
.compact-title{font-size:clamp(2.5rem,6vw,4.7rem)}
.lead,.muted{max-width:760px;margin:0;color:var(--muted);line-height:1.55}
.primary,.secondary,.danger{min-height:50px;border-radius:13px;font-weight:790;cursor:pointer}
.primary{width:100%;border:0;background:var(--ink);color:#fff}
.secondary{border:1px solid var(--line);background:#fff;color:var(--ink);padding:0 14px}
.secondary.compact{min-height:42px;font-size:.78rem}
.danger{border:1px solid #d8b6b6;background:#fff7f7;color:var(--red);padding:0 14px}
.delete-button{min-height:50px;border:1px solid #c8c1b8;background:#f2eee8;color:#5f5850;border-radius:13px;padding:0 14px;font-weight:790;cursor:pointer}
.delete-button:hover{background:#e9e3da;color:#2b2926}
.button-link{display:inline-flex;align-items:center;text-decoration:none}
.alert{margin-top:18px;padding:12px 14px;border-radius:12px;font-size:.88rem}
.alert-error{background:#fff0f0;color:#7b2929;border:1px solid #e3bcbc}
.alert-success{background:#eef7ef;color:#365c40;border:1px solid #bfd4c2}
label{display:block;font-size:.78rem;font-weight:760}
label>input{margin-top:7px}
input{width:100%;height:52px;padding:0 14px;border:1px solid var(--line);border-radius:13px;background:#fff;color:var(--ink);outline:none}
input:focus{border-color:#938878;box-shadow:0 0 0 4px rgba(173,142,85,.12)}

/* login */
.login-body{min-height:100vh;display:grid;place-items:center;padding:18px}
.login-shell{width:min(430px,100%)}
.login-card{background:var(--paper);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);padding:26px}
.login-logo{width:150px;height:auto}.login-title{font-size:clamp(2.4rem,10vw,4rem)}
.login-form{display:grid;gap:14px;margin-top:22px}

/* admin */
.sync-panel{margin-top:26px;padding:14px 16px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.5);display:flex;flex-direction:column;gap:12px}
.sync-copy{margin-top:4px;color:var(--muted);font-size:.79rem;line-height:1.45}
.creator{margin-top:14px;background:var(--paper);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);overflow:hidden}
.project-fields{display:grid;gap:12px;padding:16px;border-bottom:1px solid var(--line)}
.roles-section{padding:16px}
.section-head{display:flex;justify-content:space-between;align-items:end;gap:14px;margin-bottom:14px}
.section-head h2{margin:3px 0 0;font-size:1.55rem}
.roles-list{display:grid;gap:12px}
.role-editor{border:1px solid var(--line);border-radius:16px;padding:14px;background:#fff}
.role-editor-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px}
.role-number{font:500 1.1rem Georgia,"Times New Roman",serif;color:var(--accent)}
.remove-role{font-size:.72rem;color:var(--muted)}
.selected-talents{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}
.role-empty{width:100%;padding:11px;border:1px dashed var(--line);border-radius:10px;color:var(--muted);font-size:.76rem}
.selected-talent{display:flex;align-items:center;gap:7px;padding:5px 8px 5px 5px;background:#f3f0ea;border-radius:999px;font-size:.73rem;font-weight:700}
.selected-talent img{width:28px;height:28px;border-radius:50%;object-fit:cover;background:#e7e3dd}
.actionbar{position:fixed;z-index:20;left:0;right:0;bottom:0;padding:12px 16px max(12px,env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg) 72%,rgba(244,241,235,.96),rgba(244,241,235,0))}
.actionbar-inner{width:min(1180px,100%);margin:auto}

/* picker */
body.picker-open{overflow:hidden}
.picker[hidden]{display:none}
.picker{position:fixed;inset:0;z-index:100}
.picker-backdrop{position:absolute;inset:0;background:rgba(22,22,22,.42)}
.picker-sheet{
  position:absolute;
  left:50%;
  bottom:0;
  transform:translateX(-50%);
  width:min(980px,96vw);
  height:min(90vh,880px);
  background:var(--bg);
  border-radius:24px 24px 0 0;
  box-shadow:0 -20px 60px rgba(0,0,0,.18);
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.picker-top{
  flex:0 0 auto;
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:14px;
  padding:20px 22px 12px;
}
.picker-top h2{
  margin:3px 0 0;
  font-size:1.6rem;
}
.icon-button{
  flex:0 0 auto;
  border:0;
  background:#fff;
  width:42px;
  height:42px;
  border-radius:50%;
  font-size:1.55rem;
  line-height:1;
  cursor:pointer;
  box-shadow:0 1px 0 rgba(0,0,0,.04);
}
.picker-search{
  flex:0 0 auto;
  padding:0 22px 12px;
}
.picker-search input{
  height:50px;
}
.filters{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  margin-top:9px;
}
.filter{
  border:1px solid var(--line);
  background:#fff;
  border-radius:999px;
  padding:8px 11px;
  color:var(--muted);
  font-size:.73rem;
  font-weight:740;
  cursor:pointer;
}
.filter.active{
  background:var(--ink);
  border-color:var(--ink);
  color:#fff;
}

/* Important: rows keep their intrinsic height and the GRID itself scrolls.
   This prevents the browser from squeezing 54 portraits into thin strips. */
.picker-grid{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  grid-auto-rows:max-content;
  align-content:start;
  gap:11px;
  padding:4px 22px 18px;
  scrollbar-gutter:stable;
}

.picker-card{
  min-width:0;
  height:auto;
  align-self:start;
  display:flex;
  flex-direction:column;
  position:relative;
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  background:#fff;
  text-align:left;
  color:var(--ink);
  padding:0;
  cursor:pointer;
  box-shadow:0 1px 0 rgba(0,0,0,.02);
  transition:transform .12s ease, border-color .12s ease, box-shadow .12s ease;
}
.picker-card:hover{
  border-color:#bcb4a9;
  box-shadow:0 7px 18px rgba(0,0,0,.06);
}
.picker-card[aria-pressed="true"]{
  border-color:var(--ink);
  box-shadow:0 0 0 2px var(--ink);
}
.picker-photo{
  position:relative;
  display:block;
  width:100%;
  aspect-ratio:3/4;
  flex:0 0 auto;
  overflow:hidden;
  background:#e8e5df;
}
.picker-photo img,
.picker-photo .photo-placeholder{
  display:flex;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center top;
  background:#e8e5df;
}
.photo-placeholder{
  align-items:center;
  justify-content:center;
  font:500 2rem Georgia,serif;
  color:#877f75;
}
.tick{
  position:absolute;
  top:9px;
  right:9px;
  width:29px;
  height:29px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:var(--ink);
  color:#fff;
  font-size:.78rem;
  font-weight:850;
  opacity:0;
  transform:scale(.78);
  transition:.12s ease;
  box-shadow:0 2px 8px rgba(0,0,0,.18);
}
.picker-card[aria-pressed="true"] .tick{
  opacity:1;
  transform:scale(1);
}
.picker-meta{
  display:block;
  flex:0 0 auto;
  min-height:58px;
  padding:9px 10px 10px;
  background:#fff;
}
.picker-card[aria-pressed="true"] .picker-meta{
  background:#f1eee8;
}
.talent-name{
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font:500 .92rem/1.2 Georgia,"Times New Roman",serif;
}
.talent-type{
  display:block;
  margin-top:4px;
  color:var(--muted);
  font-size:.58rem;
  text-transform:uppercase;
  letter-spacing:.1em;
}
.picker-actions{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:12px;
  min-height:72px;
  padding:11px 22px max(11px,env(safe-area-inset-bottom));
  border-top:1px solid var(--line);
  background:rgba(244,241,235,.98);
}
.counter{
  flex:1;
  color:var(--muted);
  font-size:.78rem;
}
.compact-primary{
  width:auto;
  min-width:120px;
  padding:0 22px;
  min-height:48px;
}

@media(max-width:619px){
  .picker-sheet{
    width:100%;
    height:92vh;
    border-radius:20px 20px 0 0;
  }
  .picker-top{padding:16px 14px 10px}
  .picker-search{padding:0 14px 10px}
  .picker-grid{padding:4px 14px 16px;gap:9px}
  .picker-actions{padding-left:14px;padding-right:14px}
  .picker-meta{min-height:56px;padding:8px}
  .talent-name{font-size:.86rem}
}

@media(min-width:620px){
  .picker-grid{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
}

@media(min-width:900px){
  .picker-grid{
    grid-template-columns:repeat(5,minmax(0,1fr));
  }
}


/* proposal list */
.proposal-list{display:grid;gap:12px;margin-top:28px}
.proposal-row{display:flex;flex-direction:column;gap:14px;padding:16px;background:var(--paper);border:1px solid var(--line);border-radius:16px}
.proposal-new{box-shadow:0 0 0 2px var(--accent)}
.proposal-film{font:500 1.35rem Georgia,"Times New Roman",serif}
.proposal-director{margin-top:3px;font-size:.78rem}
.proposal-meta{margin-top:5px;color:var(--muted);font-size:.76rem;line-height:1.45}
.status{display:inline-flex;margin-top:8px;border-radius:999px;padding:5px 9px;font-size:.68rem;font-weight:800}
.status-active{background:#edf6ef;color:var(--green)}.status-expired{background:#eeeae5;color:#746d65}.status-revoked{background:#faecec;color:var(--red)}
.proposal-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.proposal-actions form{margin:0}
.empty-state{margin-top:28px;padding:30px;border:1px dashed var(--line);border-radius:16px;color:var(--muted)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 14px;border-radius:999px;font-size:.8rem}

/* public */
.public-body{background:#f7f4ee}
.public-container{width:min(1120px,100%);margin:auto;padding:18px 16px 56px}
.agency-cta{display:inline-flex;align-items:center;gap:5px;text-decoration:none;font-size:.74rem;font-weight:780;border-bottom:1px solid currentColor;padding-bottom:2px}
.public-hero{text-align:center;padding:34px 0 34px}
.public-title{margin:8px auto 7px;max-width:900px;font:500 clamp(2rem,5vw,3.8rem)/.98 Georgia,"Times New Roman",serif;letter-spacing:-.035em}
.public-director{font:500 .98rem Georgia,"Times New Roman",serif;color:var(--muted)}
.characters-recap{
  max-width:700px;
  margin:0 auto 12px;
  color:var(--ink);
  font-size:.92rem;
  line-height:1.5;
}
.characters-recap strong{
  font-weight:700;
}
.gold-rule{width:46px;height:2px;background:var(--accent);margin:17px auto}
.public-intro{max-width:620px;margin:0 auto;color:var(--muted);line-height:1.53;font-size:.9rem}
.roles-public{display:grid;gap:38px}
.public-role{padding-top:22px;border-top:1px solid var(--line)}
.role-heading{margin-bottom:13px}
.role-heading h2{margin:4px 0 3px;font-size:clamp(1.7rem,5vw,2.5rem)}
.role-count{color:var(--muted);font-size:.76rem}
.public-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;align-items:start}
.public-card{background:#fff;border:1px solid var(--line);border-radius:15px;overflow:hidden}
.public-photo-wrap{width:100%;aspect-ratio:4/5;max-height:230px;overflow:hidden;background:#eae6df}
.public-photo-wrap img{display:block;width:100%;height:100%;object-fit:cover}
.public-card-body{display:flex;flex-direction:column;gap:8px;padding:10px}
.public-name{font:500 .98rem/1.15 Georgia,"Times New Roman",serif}
.public-type{margin-top:3px;color:var(--muted);font-size:.6rem;text-transform:uppercase;letter-spacing:.11em}
.profile-link{align-self:flex-start;text-decoration:none;font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid currentColor;padding-bottom:2px}
.public-footer{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;margin-top:42px;padding-top:22px;border-top:1px solid var(--line)}
.public-footer img{width:130px;height:auto}.public-footer a{font-size:.72rem;font-weight:750}
.public-footer small{max-width:620px;color:var(--muted);font-size:.65rem;line-height:1.45}
.expired-shell{width:min(620px,100%);margin:0 auto;min-height:100vh;padding:80px 20px;display:flex;flex-direction:column;align-items:center;text-align:center}
.expired-logo{width:150px}.expired-title{margin-top:12px;font:500 clamp(2.3rem,8vw,4rem)/1 Georgia,"Times New Roman",serif}

@media(min-width:620px){
  .sync-panel{flex-direction:row;justify-content:space-between;align-items:center}
  .project-fields{grid-template-columns:1fr 1fr;padding:20px}
  .roles-section{padding:20px}
  .picker-sheet{left:50%;right:auto;width:min(760px,94vw);transform:translateX(-50%);padding:20px}
  .picker-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .public-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  .public-photo-wrap{max-height:250px}
}
@media(min-width:900px){
  .container,.public-container{padding-left:24px;padding-right:24px}
  .role-editor{padding:16px}
  .proposal-row{flex-direction:row;justify-content:space-between;align-items:center}
  .public-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
  .public-card{max-width:235px}
  .public-photo-wrap{height:255px;aspect-ratio:auto;max-height:none}
}
.pdf-button{border:1px solid #111;background:#111;color:#fff;border-radius:999px;padding:9px 13px;font-size:.72rem;font-weight:800;cursor:pointer;margin-right:10px}@media print{@page{size:A4;margin:11mm}.no-print{display:none!important}body,.public-body{background:#fff!important}.public-container{width:100%!important;max-width:none!important;padding:0!important}.public-title{font-size:26pt!important}.public-intro{font-size:8.5pt!important;line-height:1.35!important}.public-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:4mm!important}.public-card{break-inside:avoid!important;page-break-inside:avoid!important;max-width:none!important}.public-photo-wrap{height:52mm!important;aspect-ratio:auto!important}.public-photo-wrap img{width:100%!important;height:100%!important;object-fit:cover!important}.public-card-body{padding:3mm!important}.public-name{font-size:10pt!important}.public-type,.profile-link{font-size:6.5pt!important}}
.pdf-button{text-decoration:none;display:inline-block}

/* Eviter le zoom automatique de Safari sur les champs */
@media (max-width:619px) {
  input:not([type="checkbox"]):not([type="radio"]),
  textarea,
  select {
    font-size:16px !important;
  }
}

/* Fenêtre de sélection adaptée à Safari iPhone */
@media (max-width:619px) {
  .picker-sheet {
    height:86vh;
    height:86svh;
    max-height:calc(100svh - 20px);
  }
}
