:root{
  --bg:#060606;
  --surface:#0e0e0e;
  --surface-2:#151515;
  --text:#f5f2ec;
  --muted:#a7a09a;
  --line:rgba(255,255,255,.12);
  --line-strong:rgba(255,255,255,.26);
  --danger:#e9aaaa;
}
*{box-sizing:border-box}
html{color-scheme:dark}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Arial,sans-serif;font-size:16px}
button,input,textarea,select{font:inherit}
button,a,label,input,textarea,select{-webkit-tap-highlight-color:transparent}
button{color:inherit}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
::selection{background:var(--text);color:#050505}
:focus-visible{outline:2px solid var(--text);outline-offset:3px}
[hidden]{display:none!important}

.kicker,.panel-label{margin:0 0 12px;color:var(--muted);font-size:.72rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase}
.primary-button,.secondary-button,.text-button,.danger-button,.upload-button{
  min-height:46px;
  padding:0 18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--line);
  border-radius:999px;
  background:transparent;
  color:var(--text);
  font-weight:800;
  font-size:.75rem;
  letter-spacing:.07em;
  text-decoration:none;
  text-transform:uppercase;
  cursor:pointer;
  transition:background .2s ease,border-color .2s ease,color .2s ease,transform .2s ease;
}
.primary-button{background:var(--text);border-color:var(--text);color:#050505}
.primary-button:hover{background:#dedad3;border-color:#dedad3;transform:translateY(-1px)}
.secondary-button:hover,.upload-button:hover{border-color:var(--line-strong);background:rgba(255,255,255,.06)}
.text-button{min-height:40px;padding-inline:10px;border:0;color:var(--muted);text-transform:none}
.text-button:hover{color:var(--text)}
.danger-button{border-color:rgba(233,170,170,.3);color:var(--danger)}
.danger-button:hover{background:rgba(233,170,170,.08);border-color:rgba(233,170,170,.5)}
button:disabled{opacity:.45;cursor:wait;transform:none!important}

/* Connexion et première installation */
.auth-body{min-height:100svh;background:radial-gradient(circle at 76% 18%,rgba(255,255,255,.07),transparent 24%),var(--bg)}
.auth-shell{min-height:100svh;padding:30px;display:grid;place-items:center}
.auth-card{width:min(580px,100%);padding:clamp(34px,6vw,68px);border:1px solid var(--line);background:rgba(12,12,12,.9);box-shadow:0 40px 120px rgba(0,0,0,.5)}
.auth-card h1{margin:0;font-family:Anton,Impact,sans-serif;font-size:clamp(3rem,7vw,5rem);font-weight:400;line-height:1.12;letter-spacing:.01em;text-wrap:balance}
.auth-intro{margin:24px 0 30px;color:var(--muted);line-height:1.7}
.auth-form{display:grid;gap:18px}
.auth-form label,.password-card label{display:grid;gap:8px;color:#d5d2cc;font-size:.82rem;font-weight:700}
.auth-form input,.password-card input,.editor-content input[type="text"],.editor-content textarea{
  width:100%;
  min-height:50px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:8px;
  background:#090909;
  color:var(--text);
}
.auth-form input:focus,.password-card input:focus,.editor-content input:focus,.editor-content textarea:focus{outline:0;border-color:rgba(255,255,255,.48);box-shadow:0 0 0 3px rgba(255,255,255,.07)}
.auth-form .primary-button{width:100%;margin-top:4px}
.form-error{margin:0;padding:12px 14px;border:1px solid rgba(233,170,170,.25);background:rgba(233,170,170,.06);color:var(--danger);font-size:.88rem;line-height:1.5}
.back-link{display:inline-flex;margin-top:30px;color:var(--muted);font-size:.82rem}
.back-link:hover{color:var(--text)}

/* Structure de l’administration */
.admin-body{min-height:100svh}
.admin-header{
  position:sticky;
  z-index:100;
  top:0;
  min-height:72px;
  padding:12px clamp(18px,3vw,46px);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  border-bottom:1px solid var(--line);
  background:rgba(6,6,6,.9);
  backdrop-filter:blur(18px);
}
.admin-brand{font-family:Anton,Impact,sans-serif;font-size:1.45rem;letter-spacing:.06em}
.admin-brand span{margin-left:8px;color:var(--muted);font-family:Inter,Arial,sans-serif;font-size:.58rem;font-weight:800;letter-spacing:.18em;vertical-align:middle}
.admin-header-actions{display:flex;align-items:center;gap:9px}
.admin-header-actions form{margin:0}
.admin-layout{width:min(1720px,100%);margin:0 auto;display:grid;grid-template-columns:260px minmax(0,1fr)}
.category-panel{position:sticky;top:72px;height:calc(100svh - 72px);padding:42px 24px;border-right:1px solid var(--line)}
.category-panel nav{display:grid;gap:5px}
.category-button{
  width:100%;
  min-height:48px;
  padding:10px 12px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  border:1px solid transparent;
  border-radius:8px;
  background:transparent;
  color:var(--muted);
  text-align:left;
  cursor:pointer;
}
.category-button:hover{background:rgba(255,255,255,.04);color:var(--text)}
.category-button.active{border-color:var(--line);background:var(--surface-2);color:var(--text)}
.category-button span{font-size:.9rem;font-weight:700}
.category-button small{min-width:28px;color:var(--muted);font-size:.72rem;text-align:right}
.category-status-dot{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:#7b7b76}
.category-button[data-status="published"] .category-status-dot{background:#d8d4cc}
.category-button[data-status="coming-soon"] .category-status-dot{border:1px solid #aaa69f;background:transparent}
.panel-help{margin:34px 0 0;color:#817e79;font-size:.78rem;line-height:1.65}
.workspace{min-width:0;padding:clamp(30px,4vw,66px)}
.workspace-header{display:flex;align-items:flex-end;justify-content:space-between;gap:30px}
.workspace-header h1{margin:0;font-family:Anton,Impact,sans-serif;font-size:clamp(4rem,7vw,8rem);font-weight:400;line-height:1.12;letter-spacing:.01em}
.category-count{margin:18px 0 0;color:var(--muted);font-size:.92rem}
.workspace-actions{display:flex;align-items:flex-end;gap:10px}
.status-field{display:grid;gap:7px;color:var(--muted);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.status-field select{min-height:46px;padding:0 38px 0 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text)}

.upload-panel{
  margin:clamp(32px,5vw,68px) 0 30px;
  padding:clamp(24px,3vw,38px);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:26px;
  border:1px dashed rgba(255,255,255,.23);
  background:rgba(255,255,255,.025);
  transition:border-color .2s ease,background .2s ease;
}
.upload-panel.is-dragging{border-color:var(--text);background:rgba(255,255,255,.07)}
.upload-panel h2{margin:0;font-size:clamp(1.5rem,2.3vw,2.5rem)}
.upload-panel p:not(.panel-label){margin:10px 0 0;color:var(--muted);font-size:.86rem;line-height:1.6}
.upload-button{flex:0 0 auto;background:var(--text);border-color:var(--text);color:#050505}
.upload-button input,.secondary-button input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

.bulk-toolbar{margin:0 0 22px;padding:18px;border:1px solid var(--line);background:var(--surface);display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.bulk-intro p:last-child{margin:0;color:var(--muted);font-size:.8rem}
.bulk-intro .panel-label{margin-bottom:5px}
.bulk-quick-actions,.bulk-selection-actions>div{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.bulk-quick-actions .secondary-button,.bulk-selection-actions .secondary-button{min-height:40px;padding-inline:14px;font-size:.68rem}
.bulk-selection-actions{width:100%;padding-top:16px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px}
.bulk-selection-actions strong{font-size:.86rem}

.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.photo-card{position:relative;min-width:0;border:1px solid var(--line);background:var(--surface);transition:transform .2s ease,border-color .2s ease,opacity .2s ease}
.photo-card.is-selected{border-color:rgba(255,255,255,.72);box-shadow:0 0 0 2px rgba(255,255,255,.12)}
.photo-card[draggable="true"]{cursor:grab}
.photo-card.is-dragging{opacity:.35}
.photo-card.is-drop-target{border-color:#fff;transform:translateY(-3px)}
.photo-card.is-hidden .photo-image{opacity:.35;filter:grayscale(1)}
.photo-card.is-hidden::after{content:"MASQUÉE";position:absolute;top:14px;left:14px;padding:7px 9px;background:rgba(6,6,6,.86);font-size:.65rem;font-weight:800;letter-spacing:.15em}
.photo-image{position:relative;aspect-ratio:4/3;overflow:hidden;background:#111;transition:opacity .2s ease}
.photo-image img{width:100%;height:100%;object-fit:cover}
.photo-selector{position:absolute;z-index:3;top:12px;left:12px;width:38px;height:38px;padding:0;display:grid;place-items:center;border:1px solid rgba(255,255,255,.32);border-radius:50%;background:rgba(6,6,6,.78);color:#050505;font-size:1rem;font-weight:900;cursor:pointer;backdrop-filter:blur(8px)}
.photo-selector[aria-pressed="true"]{border-color:#f5f2ec;background:#f5f2ec}
.drag-handle{position:absolute;z-index:2;top:12px;right:12px;width:38px;height:38px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:rgba(6,6,6,.72);font-size:1rem;cursor:grab;backdrop-filter:blur(8px)}
.photo-info{padding:18px}
.photo-title{margin:0;overflow:hidden;font-size:1rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}
.photo-caption{min-height:1.35em;margin:7px 0 0;overflow:hidden;color:var(--muted);font-size:.78rem;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}
.photo-actions{margin-top:17px;display:grid;grid-template-columns:44px 1fr 1fr 44px;gap:7px}
.photo-actions button{min-height:42px;border:1px solid var(--line);border-radius:8px;background:transparent;cursor:pointer}
.photo-actions button:hover{border-color:var(--line-strong);background:rgba(255,255,255,.055)}
.photo-actions .edit-photo{font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.photo-actions .portfolio-photo{font-size:.68rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
.photo-actions .portfolio-photo.active{border-color:var(--text);background:var(--text);color:#050505}
.empty-grid{grid-column:1/-1;padding:80px 24px;border:1px solid var(--line);color:var(--muted);text-align:center}

/* Éditeur */
dialog{padding:0;border:0;background:transparent;color:var(--text)}
dialog::backdrop{background:rgba(0,0,0,.82);backdrop-filter:blur(10px)}
.editor-dialog{width:min(1050px,calc(100% - 28px));max-height:calc(100svh - 28px)}
.editor-card{position:relative;display:grid;grid-template-columns:minmax(300px,.85fr) minmax(400px,1.15fr);overflow:hidden;border:1px solid var(--line-strong);background:#0b0b0b;box-shadow:0 40px 120px rgba(0,0,0,.65)}
.dialog-close{position:absolute;z-index:4;top:14px;right:14px;width:42px;height:42px;border:1px solid var(--line);border-radius:50%;background:rgba(6,6,6,.82);color:var(--text);font-size:1.5rem;cursor:pointer}
.editor-preview{min-height:640px;background:#080808}
.editor-preview img{width:100%;height:100%;object-fit:cover}
.editor-content{max-height:calc(100svh - 30px);overflow:auto;padding:clamp(34px,4vw,58px)}
.editor-content h2,.password-card h2{margin:0 0 26px;font-family:Anton,Impact,sans-serif;font-size:clamp(2.8rem,5vw,5rem);font-weight:400;line-height:.92}
.language-tabs{display:flex;gap:7px;margin-bottom:20px}
.language-tabs button{min-width:46px;height:40px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-size:.73rem;font-weight:800;cursor:pointer}
.language-tabs button.active{background:var(--text);border-color:var(--text);color:#050505}
.language-fields{display:grid;gap:16px}
.language-fields label{display:grid;gap:8px;color:#d5d2cc;font-size:.8rem;font-weight:700}
.translation-note{margin:0;padding:11px 13px;border:1px solid var(--line);color:var(--muted);font-size:.78rem;line-height:1.45}
.editor-content textarea{min-height:110px;resize:vertical}
.visibility-field{margin:22px 0;padding:18px;display:flex;align-items:center;gap:12px;border:1px solid var(--line);font-size:.85rem;font-weight:700}
.visibility-field input{width:19px;height:19px;accent-color:#f5f2ec}
.replace-field{padding:18px;display:flex;align-items:center;justify-content:space-between;gap:18px;border:1px solid var(--line);color:var(--muted);font-size:.78rem;line-height:1.5}
.editor-actions{margin-top:24px;display:flex;justify-content:space-between;gap:12px}

.password-dialog{width:min(540px,calc(100% - 28px))}
.password-card{position:relative;padding:clamp(34px,5vw,56px);display:grid;gap:18px;border:1px solid var(--line-strong);background:#0b0b0b}
.password-card h2{margin-bottom:8px}
.password-card .primary-button{margin-top:6px}

.save-bar{position:fixed;z-index:90;left:50%;bottom:18px;transform:translateX(-50%);min-width:min(520px,calc(100% - 24px));padding:9px 9px 9px 20px;display:flex;align-items:center;justify-content:space-between;gap:20px;border:1px solid var(--line-strong);border-radius:999px;background:rgba(15,15,15,.94);box-shadow:0 18px 60px rgba(0,0,0,.5);backdrop-filter:blur(15px)}
.save-bar span{font-size:.82rem;font-weight:700}
.toast{position:fixed;z-index:400;right:20px;bottom:20px;max-width:min(430px,calc(100% - 40px));padding:15px 18px;border:1px solid var(--line-strong);background:#151515;color:var(--text);box-shadow:0 18px 60px rgba(0,0,0,.5);font-size:.86rem;line-height:1.5;opacity:0;visibility:hidden;transform:translateY(10px);transition:.22s}
.toast.show{opacity:1;visibility:visible;transform:translateY(0)}
.toast.error{border-color:rgba(233,170,170,.45);color:#ffd4d4}

@media(max-width:1180px){
  .photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .admin-layout{grid-template-columns:220px minmax(0,1fr)}
}
@media(max-width:820px){
  .admin-header{position:relative;align-items:flex-start}
  .admin-header-actions{flex-wrap:wrap;justify-content:flex-end}
  .admin-header-actions .secondary-button{display:none}
  .admin-layout{display:block}
  .category-panel{position:relative;top:auto;width:100%;height:auto;padding:20px;border-right:0;border-bottom:1px solid var(--line)}
  .category-panel nav{display:flex;overflow:auto;padding-bottom:4px}
  .category-button{width:auto;flex:0 0 auto}
  .category-button small{min-width:auto}
  .panel-help{display:none}
  .workspace{padding:28px 18px 100px}
  .workspace-header{align-items:flex-start;flex-direction:column}
  .workspace-actions{width:100%}
  .workspace-actions .status-field{flex:1}
  .workspace-actions select{width:100%}
  .upload-panel{align-items:flex-start;flex-direction:column}
  .upload-button{width:100%}
  .bulk-toolbar,.bulk-selection-actions{align-items:stretch;flex-direction:column}
  .bulk-quick-actions,.bulk-selection-actions>div{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .bulk-quick-actions .secondary-button,.bulk-selection-actions .secondary-button,.bulk-selection-actions .text-button{width:100%}
  .editor-card{grid-template-columns:1fr}
  .editor-preview{min-height:260px;max-height:38svh}
  .editor-content{max-height:58svh}
}
@media(max-width:560px){
  .auth-shell{padding:12px}
  .auth-card{padding:32px 22px}
  .admin-header{min-height:64px;padding:12px 16px}
  .admin-brand{font-size:1.15rem}
  .admin-brand span{display:none}
  .photo-grid{grid-template-columns:1fr}
  .bulk-quick-actions,.bulk-selection-actions>div{grid-template-columns:1fr}
  .workspace-header h1{font-size:4rem}
  .workspace-actions{align-items:stretch;flex-direction:column}
  .workspace-actions .primary-button{width:100%}
  .replace-field,.editor-actions{align-items:stretch;flex-direction:column}
  .editor-actions .primary-button,.editor-actions .danger-button,.replace-field .secondary-button{width:100%}
  .editor-content{padding:34px 20px 24px}
  .save-bar{bottom:9px;border-radius:16px}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* V2 — admin unifié */
.admin-mode-nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.admin-mode-nav .active{background:#fff;color:#070707;border-color:#fff}.category-add{width:100%;margin:12px 0}.category-dialog .category-editor-card{width:min(700px,calc(100vw - 28px));grid-template-columns:1fr}.category-editor-content{padding:34px}.category-editor-content>label,.category-language-fields label{display:grid;gap:8px;margin-top:14px;color:#aaa;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}.category-editor-content input,.category-editor-content textarea{width:100%;border:1px solid #333;background:#090909;color:#fff;border-radius:12px;padding:13px 14px;font:500 .95rem/1.4 Inter,sans-serif}.category-editor-content textarea{min-height:120px;resize:vertical}.workspace-actions{flex-wrap:wrap}.workspace-actions .danger-button{min-height:42px}.category-panel .category-button{cursor:pointer}.category-status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#666;margin-right:10px}.category-button[data-status="published"] .category-status-dot{background:#7fe49a}.category-button[data-status="coming-soon"] .category-status-dot{background:#f4b35e}.category-button[data-status="hidden"] .category-status-dot{background:#777}
@media(max-width:980px){.admin-header{gap:10px;flex-wrap:wrap}.admin-mode-nav{order:3;width:100%}.workspace-actions{justify-content:flex-start}.workspace-actions .status-field{width:100%}}
