/* ==========================================================================
   Admin panel
   ========================================================================== */
:root{
  --ink:#14151a; --ink-2:#2f3138; --muted:#6b7280;
  --line:#e4e6eb; --line-soft:#eff0f4;
  --bg:#f4f5f8; --card:#ffffff;
  --accent:#6d28d9; --accent-600:#5b21b6; --accent-50:#f3f0ff; --accent-200:#c4b5fd;
  --sidebar:#16161d; --sidebar-2:#1e1b2e;
  --ok:#15803d; --ok-bg:#f0fdf4; --warn:#b45309; --warn-bg:#fffbeb;
  --err:#b91c1c; --err-bg:#fef2f2;
  --radius:12px; --radius-sm:9px;
  --shadow-sm:0 1px 2px rgba(16,18,24,.06),0 1px 3px rgba(16,18,24,.05);
  --shadow:0 4px 16px rgba(16,18,24,.08);
  --shadow-lg:0 20px 50px rgba(16,18,24,.16);
  --ease:cubic-bezier(.4,0,.2,1);
  --sidebar-w:258px;
  --font:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;font-family:var(--font);font-size:15px;line-height:1.6;color:var(--ink-2);background:var(--bg);-webkit-font-smoothing:antialiased}
body.no-scroll{overflow:hidden}
img{max-width:100%;display:block}
a{color:var(--accent);text-decoration:none}
h1,h2,h3,h4{color:var(--ink);margin:0 0 .6em;line-height:1.25;font-weight:650;letter-spacing:-.015em}
h1{font-size:1.5rem} h2{font-size:1.18rem} h3{font-size:1rem}
p{margin:0 0 1em}
svg{flex:none}
:focus-visible{outline:3px solid var(--accent-200);outline-offset:2px;border-radius:4px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

/* Layout ---------------------------------------------------------------- */
.admin{display:flex;min-height:100vh}
.sidebar{
  position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);z-index:60;
  background:linear-gradient(175deg,var(--sidebar),var(--sidebar-2));
  color:#c9cbd4;display:flex;flex-direction:column;
  transition:transform .3s var(--ease);
}
.sidebar__brand{display:flex;align-items:center;gap:.7rem;padding:1.25rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.08)}
.sidebar__mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none;
  background:linear-gradient(135deg,var(--accent),#a78bfa);color:#fff;font-weight:700;font-size:1rem}
.sidebar__name{font-weight:650;color:#fff;font-size:.95rem;line-height:1.2}
.sidebar__name span{display:block;font-size:.7rem;font-weight:400;color:#8b8f9c;letter-spacing:.06em;text-transform:uppercase}
.sidebar__nav{flex:1;overflow-y:auto;padding:.9rem .75rem}
.sidebar__group{font-size:.66rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#6b6f7d;padding:1rem .75rem .45rem}
.sidebar__link{
  display:flex;align-items:center;gap:.75rem;padding:.68rem .8rem;border-radius:9px;
  color:#c9cbd4;font-size:.9rem;font-weight:500;margin-bottom:.15rem;
  transition:background .16s var(--ease),color .16s var(--ease);
}
.sidebar__link svg{width:17px;height:17px;opacity:.75}
.sidebar__link:hover{background:rgba(255,255,255,.07);color:#fff}
.sidebar__link.is-active{background:var(--accent);color:#fff;box-shadow:0 4px 14px rgba(109,40,217,.4)}
.sidebar__link.is-active svg{opacity:1}
.sidebar__badge{margin-left:auto;background:#ef4444;color:#fff;font-size:.68rem;font-weight:700;border-radius:99px;padding:.06rem .42rem;min-width:19px;text-align:center}
.sidebar__foot{padding:.9rem 1rem;border-top:1px solid rgba(255,255,255,.08);font-size:.8rem}
.sidebar__foot a{display:flex;align-items:center;gap:.5rem;color:#9ba0ad;padding:.4rem 0}
.sidebar__foot a:hover{color:#fff}
.sidebar__foot svg{width:15px;height:15px}

.main{flex:1;min-width:0;margin-left:var(--sidebar-w);display:flex;flex-direction:column}
.topbar{
  position:sticky;top:0;z-index:50;background:rgba(255,255,255,.97);
  border-bottom:1px solid var(--line);padding:.85rem 1.6rem;
  display:flex;align-items:center;gap:1rem;
}
.topbar h1{margin:0;font-size:1.22rem}
.topbar__sub{font-size:.83rem;color:var(--muted);margin:0}
.topbar__right{margin-left:auto;display:flex;align-items:center;gap:.6rem}
.topbar__user{display:flex;align-items:center;gap:.55rem;padding:.35rem .7rem;border-radius:99px;background:var(--bg);font-size:.85rem;color:var(--ink-2)}
.topbar__avatar{width:28px;height:28px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:.78rem;font-weight:700}
.content{padding:1.6rem;max-width:1400px;width:100%}
.burger{display:none;width:40px;height:40px;border:1px solid var(--line);background:#fff;border-radius:10px;cursor:pointer;place-items:center}
.burger svg{width:18px;height:18px}
.sidebar-backdrop{position:fixed;inset:0;background:rgba(15,17,22,.5);z-index:55;opacity:0;visibility:hidden;transition:opacity .25s var(--ease),visibility .25s}
.sidebar-backdrop.is-open{opacity:1;visibility:visible}

/* Cards / panels -------------------------------------------------------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-bottom:1.4rem;overflow:hidden}
.card__head{padding:1rem 1.25rem;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.card__head h2{margin:0;font-size:1.02rem}
.card__head p{margin:.15rem 0 0;font-size:.83rem;color:var(--muted);width:100%}
.card__head .spacer{margin-left:auto}
.card__body{padding:1.25rem}
.card__foot{padding:1rem 1.25rem;border-top:1px solid var(--line-soft);background:#fafbfc;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1rem;margin-bottom:1.6rem}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.15rem 1.25rem;box-shadow:var(--shadow-sm);
  display:flex;gap:1rem;align-items:center;transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.stat:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.stat__icon{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:var(--accent-50);color:var(--accent)}
.stat__icon svg{width:21px;height:21px}
.stat__value{font-size:1.65rem;font-weight:700;color:var(--ink);line-height:1.1}
.stat__label{font-size:.8rem;color:var(--muted)}

/* Buttons --------------------------------------------------------------- */
.btn{
  --bg:var(--accent);--fg:#fff;--bd:transparent;
  display:inline-flex;align-items:center;justify-content:center;gap:.45rem;
  font-size:.88rem;font-weight:600;padding:.62rem 1.1rem;border-radius:9px;
  border:1px solid var(--bd);background:var(--bg);color:var(--fg);cursor:pointer;white-space:nowrap;
  transition:filter .18s var(--ease),transform .18s var(--ease),background .18s var(--ease),color .18s var(--ease);
}
.btn:hover{filter:brightness(1.07);transform:translateY(-1px)}
.btn:active{transform:none}
.btn svg{width:16px;height:16px}
.btn--light{--bg:#fff;--fg:var(--ink-2);--bd:var(--line)}
.btn--light:hover{--bg:var(--bg);--fg:var(--accent);--bd:var(--accent-200);filter:none}
.btn--danger{--bg:#fff;--fg:var(--err);--bd:#fecaca}
.btn--danger:hover{--bg:var(--err);--fg:#fff;--bd:var(--err);filter:none}
.btn--ok{--bg:var(--ok)}
.btn--sm{padding:.4rem .7rem;font-size:.8rem;border-radius:7px}
.btn--sm svg{width:14px;height:14px}
.btn--icon{padding:.45rem;width:34px;height:34px}
.btn--block{display:flex;width:100%}
.btn[disabled]{opacity:.55;pointer-events:none}
.btn-row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}

/* Forms ----------------------------------------------------------------- */
.field{margin-bottom:1.1rem}
.field:last-child{margin-bottom:0}
.field > label,.label{display:block;font-size:.84rem;font-weight:600;color:var(--ink);margin-bottom:.35rem}
.hint{font-size:.78rem;color:var(--muted);margin:.35rem 0 0}
.req{color:var(--err)}
.input,.textarea,.select{
  width:100%;font:inherit;font-size:.9rem;color:var(--ink);background:#fff;
  border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:.6rem .8rem;
  transition:border-color .18s var(--ease),box-shadow .18s var(--ease);
}
.input:focus,.textarea:focus,.select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3.5px rgba(109,40,217,.13)}
.input[readonly]{background:var(--bg);color:var(--muted)}
.textarea{min-height:110px;resize:vertical;line-height:1.6}
.textarea--sm{min-height:70px}
.select{appearance:none;padding-right:2.2rem;
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .7rem center;background-size:15px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:0 1.1rem}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:0 1.1rem}
.file{
  display:flex;align-items:center;gap:.7rem;padding:.75rem;border:1.5px dashed var(--line);
  border-radius:var(--radius-sm);background:#fcfcfd;font-size:.86rem;cursor:pointer;
  transition:border-color .18s var(--ease),background .18s var(--ease);
}
.file:hover{border-color:var(--accent-200);background:var(--accent-50)}
.file input[type=file]{font-size:.84rem;min-width:0}
.switch{display:inline-flex;align-items:center;gap:.6rem;cursor:pointer;font-size:.88rem;user-select:none}
/* .field > label sets display:block and beats a plain .switch on specificity, which
   collapsed the inline track to 0x0 and left only the white knob floating over the
   label text. These two rules keep the toggle a flex row wherever it is used. */
.field > label.switch,.field > label.checkline{display:inline-flex;margin-bottom:0;font-weight:500}
.switch__track,.switch input + .switch__track{display:block}
.switch input{position:absolute;opacity:0;width:0;height:0}
.switch__track{width:42px;height:24px;border-radius:99px;background:#d4d7de;position:relative;transition:background .2s var(--ease);flex:none}
.switch__track::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:var(--shadow-sm);transition:transform .2s var(--ease)}
.switch input:checked + .switch__track{background:var(--accent)}
.switch input:checked + .switch__track::after{transform:translateX(18px)}
.switch input:focus-visible + .switch__track{box-shadow:0 0 0 3px var(--accent-200)}
.checkline{display:inline-flex;align-items:center;gap:.45rem;font-size:.88rem;cursor:pointer}
.checkline input{width:16px;height:16px;accent-color:var(--accent)}

/* Tables ---------------------------------------------------------------- */
.table-wrap{overflow-x:auto}
table.tbl{width:100%;border-collapse:collapse;font-size:.88rem}
.tbl th,.tbl td{padding:.75rem .9rem;text-align:left;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.tbl th{font-size:.72rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);background:#fafbfc;white-space:nowrap}
.tbl tbody tr{transition:background .14s var(--ease)}
.tbl tbody tr:hover{background:#fbfbfd}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.tbl .actions{text-align:right;white-space:nowrap}
.tbl__thumb{width:46px;height:46px;border-radius:8px;object-fit:contain;background:var(--bg);border:1px solid var(--line);padding:3px}
.tbl__title{font-weight:600;color:var(--ink)}
.tbl__meta{font-size:.78rem;color:var(--muted)}

.badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.74rem;font-weight:600;padding:.2rem .55rem;border-radius:99px;border:1px solid transparent;white-space:nowrap}
.badge--ok{background:var(--ok-bg);color:var(--ok);border-color:#bbf7d0}
.badge--off{background:#f3f4f6;color:#6b7280;border-color:#e5e7eb}
.badge--warn{background:var(--warn-bg);color:var(--warn);border-color:#fde68a}
.badge--new{background:var(--accent-50);color:var(--accent);border-color:var(--accent-200)}

/* Alerts ---------------------------------------------------------------- */
.alert{display:flex;gap:.65rem;align-items:flex-start;padding:.85rem 1rem;border-radius:var(--radius-sm);
  border:1px solid var(--line);background:#fff;font-size:.88rem;margin-bottom:1.1rem}
.alert svg{width:17px;height:17px;margin-top:2px}
.alert--success{background:var(--ok-bg);border-color:#bbf7d0;color:#14532d}
.alert--error{background:var(--err-bg);border-color:#fecaca;color:#7f1d1d}
.alert--info{background:var(--accent-50);border-color:var(--accent-200);color:#4c1d95}
.alert--warn{background:var(--warn-bg);border-color:#fde68a;color:#78350f}

.empty-box{text-align:center;padding:2.6rem 1.5rem;color:var(--muted)}
.empty-box svg{width:38px;height:38px;color:var(--accent-200);margin-bottom:.7rem}
.empty-box h3{color:var(--ink-2);margin-bottom:.25rem;font-size:1rem}
.empty-box p{margin:0;font-size:.88rem}

/* Sortable media grid --------------------------------------------------- */
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}
.media{border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:hidden;
  box-shadow:var(--shadow-sm);transition:box-shadow .2s var(--ease),border-color .2s var(--ease),opacity .2s}
.media:hover{box-shadow:var(--shadow);border-color:var(--accent-200)}
.media.is-dragging{opacity:.45}
.media.is-over{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-200)}
.media__figure{position:relative;aspect-ratio:4/3;background:linear-gradient(145deg,#fafafb,#eef0f4);display:grid;place-items:center}
.media__figure img{width:100%;height:100%;object-fit:contain;padding:8px}
.media__handle{position:absolute;top:7px;left:7px;background:rgba(255,255,255,.95);border:1px solid var(--line);
  border-radius:7px;padding:.2rem .45rem;font-size:.7rem;color:var(--muted);cursor:grab;display:flex;align-items:center;gap:.25rem}
.media__handle:active{cursor:grabbing}
.media__pos{position:absolute;top:7px;right:7px;background:var(--accent);color:#fff;border-radius:99px;
  min-width:22px;height:22px;display:grid;place-items:center;font-size:.72rem;font-weight:700;padding:0 .3rem}
.media__body{padding:.7rem .75rem;display:grid;gap:.45rem}
.media__body .input{font-size:.8rem;padding:.4rem .55rem}
.media__foot{display:flex;gap:.4rem;align-items:center;padding:.5rem .75rem .75rem}
.media__foot .btn{flex:1}
.dropzone{border:2px dashed var(--line);border-radius:var(--radius);padding:1.6rem;text-align:center;background:#fcfcfd}
.dropzone svg{width:32px;height:32px;color:var(--accent-200);margin-bottom:.5rem}

/* Preview chip (logo, brochure, hero image) ------------------------------ */
.preview{display:flex;align-items:center;gap:.85rem;padding:.7rem .85rem;border:1px solid var(--line);
  border-radius:var(--radius-sm);background:#fcfcfd;margin-bottom:.7rem}
.preview img{width:64px;height:44px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:6px;padding:3px}
.preview__name{font-size:.84rem;color:var(--ink);word-break:break-all}
.preview__meta{font-size:.76rem;color:var(--muted)}
.preview .spacer{margin-left:auto}

/* Rich text editor ------------------------------------------------------ */
.editor{border:1.5px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:#fff;position:relative}
.editor:focus-within{border-color:var(--accent);box-shadow:0 0 0 3.5px rgba(109,40,217,.13)}
.editor__bar{display:flex;flex-wrap:wrap;gap:2px;padding:.4rem;border-bottom:1px solid var(--line);background:#fafbfc}
.editor__sep{width:1px;background:var(--line);margin:.25rem .3rem}
.editor__btn{
  min-width:30px;height:30px;padding:0 .45rem;border:1px solid transparent;background:none;border-radius:6px;
  cursor:pointer;font-size:.82rem;font-weight:600;color:var(--ink-2);display:inline-flex;align-items:center;justify-content:center;
  transition:background .14s var(--ease),color .14s var(--ease);
}
.editor__btn:hover{background:var(--accent-50);color:var(--accent)}
.editor__btn.is-active{background:var(--accent);color:#fff}
.editor__btn svg{width:15px;height:15px}
.editor__area{min-height:260px;max-height:640px;overflow-y:auto;padding:1rem 1.1rem;font-size:.94rem;line-height:1.7;color:var(--ink-2);outline:0}
.editor__area:empty::before{content:attr(data-placeholder);color:#9aa0ab}
.editor__area h2{font-size:1.3rem;margin:1.2em 0 .5em}
.editor__area h3{font-size:1.12rem;margin:1.1em 0 .5em}
.editor__area h4{font-size:1rem;margin:1em 0 .5em}
.editor__area img{max-width:100%;height:auto;border-radius:6px}
.editor__area img.is-selected{outline:3px solid var(--accent);outline-offset:2px}
.editor__area blockquote{margin:1em 0;padding:.6rem 1rem;border-left:4px solid var(--accent-200);background:var(--accent-50);border-radius:0 6px 6px 0}
.editor__area ul,.editor__area ol{padding-left:1.4rem}
.editor__area a{color:var(--accent);text-decoration:underline}
.editor__area table{border-collapse:collapse;width:100%}
.editor__area td,.editor__area th{border:1px solid var(--line);padding:.4rem .6rem}
.editor__source{display:none;width:100%;min-height:300px;border:0;padding:1rem;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82rem;line-height:1.6;resize:vertical;outline:0}
.editor.is-source .editor__area{display:none}
.editor.is-source .editor__source{display:block}
.editor__float{
  position:absolute;z-index:80;display:none;gap:2px;padding:.3rem;background:#fff;
  border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow-lg);
}
.editor__float.is-open{display:flex}

/* Tabs ------------------------------------------------------------------ */
.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--line);margin-bottom:1.3rem;overflow-x:auto}
.tabs button{background:none;border:0;border-bottom:3px solid transparent;padding:.7rem 1rem;cursor:pointer;
  font-size:.88rem;font-weight:600;color:var(--muted);white-space:nowrap;transition:color .18s,border-color .18s}
.tabs button:hover{color:var(--ink)}
.tabs button.is-active{color:var(--accent);border-bottom-color:var(--accent)}

/* Login ----------------------------------------------------------------- */
.login{min-height:100vh;display:grid;place-items:center;padding:1.5rem;
  background:linear-gradient(140deg,#16161d,#2c1e4f 55%,#3b2470)}
.login__card{width:100%;max-width:420px;background:#fff;border-radius:18px;box-shadow:var(--shadow-lg);padding:2.2rem}
.login__mark{width:54px;height:54px;border-radius:15px;display:grid;place-items:center;margin:0 auto 1.1rem;
  background:linear-gradient(135deg,var(--accent),#a78bfa);color:#fff;font-size:1.3rem;font-weight:700}
.login__card h1{text-align:center;font-size:1.3rem;margin-bottom:.25rem}
.login__card .sub{text-align:center;color:var(--muted);font-size:.87rem;margin-bottom:1.6rem}
.login__foot{text-align:center;margin-top:1.3rem;font-size:.83rem;color:var(--muted)}

/* Misc ------------------------------------------------------------------ */
.toolbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:1.2rem}
.toolbar .input,.toolbar .select{width:auto;min-width:190px}
.toolbar .spacer{margin-left:auto}
.sticky-save{position:sticky;bottom:0;z-index:20;background:rgba(255,255,255,.97);border-top:1px solid var(--line);
  padding:.85rem 1.25rem;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;box-shadow:0 -4px 16px rgba(16,18,24,.06)}
.split{display:grid;grid-template-columns:1fr 340px;gap:1.4rem;align-items:start}
.modal{position:fixed;inset:0;z-index:100;display:none;place-items:center;padding:1.5rem;background:rgba(15,17,22,.55)}
.modal.is-open{display:grid}
.modal__card{background:#fff;border-radius:14px;box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:88vh;overflow-y:auto}
.modal__head{padding:1rem 1.25rem;border-bottom:1px solid var(--line-soft);display:flex;align-items:center;gap:1rem}
.modal__head h2{margin:0;font-size:1.05rem}
.modal__close{margin-left:auto;width:32px;height:32px;border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer;font-size:1.1rem;line-height:1;color:var(--muted)}
.modal__body{padding:1.25rem}
.modal__foot{padding:1rem 1.25rem;border-top:1px solid var(--line-soft);display:flex;gap:.6rem;justify-content:flex-end;background:#fafbfc}
.dl{display:grid;grid-template-columns:150px 1fr;gap:.55rem 1rem;font-size:.89rem}
.dl dt{color:var(--muted)}
.dl dd{margin:0;color:var(--ink);word-break:break-word}

@media (max-width:1100px){.split{grid-template-columns:1fr}}
@media (max-width:900px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.is-open{transform:translateX(0)}
  .main{margin-left:0}
  .burger{display:grid}
  .content{padding:1.1rem}
  .grid-2,.grid-3{grid-template-columns:1fr}
  .topbar{padding:.75rem 1.1rem}
  .topbar h1{font-size:1.08rem}
  .topbar__user span{display:none}
}
@media (max-width:640px){
  .media-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
  .stat__value{font-size:1.4rem}
  .card__body{padding:1rem}
  .dl{grid-template-columns:1fr;gap:.15rem .5rem}
  .dl dt{font-size:.78rem;margin-top:.5rem}
}
