/* =========================================================
   NOIR & BLADE — admin panel
   Stavia na tokenoch zo style.css (farby, tlačidlá, modaly).
   ========================================================= */

body.admin{
  background:
    radial-gradient(900px 500px at 85% -10%, rgba(201,162,75,.07), transparent 60%),
    var(--ink);
  min-height:100vh;
}

/* ---------- PIN brána ---------- */
.gate{
  position:fixed; inset:0; z-index:60;
  display:flex; align-items:center; justify-content:center;
  padding:1.5rem;
  background:
    radial-gradient(700px 420px at 50% 20%, rgba(201,162,75,.08), transparent 65%),
    var(--ink);
}
.gate__card{
  width:min(380px, 100%);
  background:var(--coal); border:1px solid var(--line); border-radius:18px;
  padding:2.4rem 2.2rem; text-align:center;
  box-shadow:0 30px 80px rgba(0,0,0,.5);
  animation:gateIn .5s ease both;
}
@keyframes gateIn{
  from{ opacity:0; transform:translateY(18px); }
  to{ opacity:1; transform:translateY(0); }
}
.gate__card h1{
  font-family:var(--disp); font-size:2rem; letter-spacing:.06em;
  text-transform:uppercase; margin:.9rem 0 .5rem;
}
.gate__card p{ font-size:.9rem; margin-bottom:1.4rem; }
.gate__hint{ font-size:.78rem; color:var(--smoke); }
.gate__card input{
  width:100%; text-align:center; letter-spacing:.6em; font-size:1.5rem;
  background:var(--ink); border:1px solid var(--line); border-radius:10px;
  color:var(--cream); padding:.7rem 0 .7rem .6em; margin-bottom:1rem;
}
.gate__card input:focus{ outline:none; border-color:var(--brass); }
.gate__card .btn{ width:100%; justify-content:center; }
.gate__back{
  display:inline-block; margin-top:1.2rem;
  font-size:.82rem; color:var(--smoke);
}
.gate__back:hover{ color:var(--brass-hi); }
.gate.shake .gate__card{ animation:shake .4s ease; }
@keyframes shake{
  0%,100%{ transform:translateX(0); }
  25%{ transform:translateX(-8px); } 75%{ transform:translateX(8px); }
}

/* ---------- horná lišta ---------- */
.abar{
  position:sticky; top:8px; z-index:40;
  display:flex; align-items:center; gap:1rem;
  padding:.8rem 1.4rem;
  background:rgba(20,18,16,.92); backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.abar__tag{
  font-size:.68rem; letter-spacing:.22em; text-transform:uppercase;
  color:var(--brass); border:1px solid rgba(201,162,75,.4);
  border-radius:999px; padding:.3rem .8rem;
}
.abar__actions{ margin-left:auto; display:flex; gap:.55rem; flex-wrap:wrap; }

.wrap{ max-width:1080px; margin:0 auto; padding:1.8rem 1.4rem 4rem; }

/* ---------- štatistiky ---------- */
.statgrid{
  display:grid; grid-template-columns:repeat(4, 1fr); gap:1rem;
  margin-bottom:1.6rem;
}
.scard{
  background:var(--coal); border:1px solid var(--line); border-radius:var(--r);
  padding:1.1rem 1.2rem; position:relative; overflow:hidden;
}
.scard::after{
  content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:var(--brass); opacity:.7;
}
.scard b{
  display:block; font-family:var(--disp); font-size:2.1rem; line-height:1;
  color:var(--cream); letter-spacing:.03em;
}
.scard span{
  font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; color:var(--smoke);
}
.scard.gold b{ color:var(--brass-hi); }

/* ---------- filtre ---------- */
.filters{
  display:flex; align-items:flex-end; justify-content:space-between;
  gap:1rem; flex-wrap:wrap; margin-bottom:1.4rem;
}
.tabs{ display:flex; gap:.5rem; flex-wrap:wrap; }
.tab{
  border:1px solid var(--line); border-radius:999px;
  padding:.5rem 1.05rem; font-size:.85rem; color:var(--smoke);
  transition:.2s;
}
.tab:hover{ border-color:var(--brass); color:var(--cream); }
.tab.sel{ background:var(--brass); border-color:var(--brass); color:var(--ink); font-weight:700; }
.field--inline{ margin:0; min-width:210px; }

/* ---------- zoznam rezervácií ---------- */
.blist{ display:flex; flex-direction:column; gap:1.6rem; }
.dgroup__head{
  display:flex; align-items:baseline; gap:.8rem;
  padding-bottom:.5rem; margin-bottom:.8rem;
  border-bottom:1px dashed rgba(167,156,138,.25);
}
.dgroup__head h2{
  font-family:var(--disp); font-size:1.4rem; letter-spacing:.05em;
  text-transform:uppercase; color:var(--cream);
}
.dgroup__head small{ color:var(--smoke); font-size:.78rem; letter-spacing:.08em; }
.dgroup__head .today{ color:var(--brass-hi); }

.bkg{ display:flex; flex-direction:column; gap:.7rem; }
.brow{
  display:grid;
  grid-template-columns:86px 1fr auto;
  gap:1.1rem; align-items:center;
  background:var(--coal); border:1px solid var(--line); border-radius:var(--r);
  padding:.95rem 1.15rem;
  transition:border-color .2s;
}
.brow:hover{ border-color:rgba(201,162,75,.4); }
.brow.is-off{ opacity:.55; }
.brow__time b{
  display:block; font-family:var(--disp); font-size:1.5rem; line-height:1;
  color:var(--brass-hi); letter-spacing:.04em;
}
.brow__time span{ font-size:.72rem; color:var(--smoke); }
.brow__who{ min-width:0; }
.brow__who .nm{ font-weight:700; color:var(--cream); }
.brow__who .sv{ font-size:.86rem; color:var(--smoke); margin-top:.15rem; }
.brow__who .ct{
  font-size:.78rem; color:var(--smoke); margin-top:.3rem;
  display:flex; gap:.9rem; flex-wrap:wrap;
}
.brow__who .ct a{ color:var(--smoke); text-decoration:underline dotted; }
.brow__who .ct a:hover{ color:var(--brass-hi); }
.brow__who .note{
  margin-top:.35rem; font-size:.78rem; color:var(--cream);
  background:rgba(201,162,75,.07); border-left:2px solid var(--brass);
  padding:.3rem .55rem; border-radius:0 6px 6px 0;
}
.brow__side{ display:flex; flex-direction:column; align-items:flex-end; gap:.55rem; }
.brow__badges{ display:flex; gap:.4rem; flex-wrap:wrap; justify-content:flex-end; }
.brow__acts{ display:flex; gap:.45rem; flex-wrap:wrap; justify-content:flex-end; }
.brow__acts .btn{ padding:.42rem .85rem; font-size:.78rem; }
.reason{
  font-size:.75rem; color:#e0a196; text-align:right; max-width:280px;
}
.empty{
  text-align:center; color:var(--smoke); padding:3rem 1rem;
  border:1px dashed rgba(167,156,138,.3); border-radius:var(--r);
}

/* ---------- presun: sloty ---------- */
.slotgrid{
  display:grid; grid-template-columns:repeat(auto-fill, minmax(84px, 1fr));
  gap:.5rem; max-height:260px; overflow-y:auto; padding-right:.3rem;
}
.modal__foot{
  display:flex; justify-content:flex-end; gap:.6rem;
  margin-top:1.4rem; padding-top:1.1rem; border-top:1px solid var(--line);
}
.modal__card--sm{ max-width:460px; }
.mclosed{ color:var(--smoke); padding:1rem 0; }

/* ---------- koniec dňa ---------- */
.edlist{ display:flex; flex-direction:column; gap:.7rem; max-height:52vh; overflow-y:auto; }
.edrow{
  background:var(--ink); border:1px solid var(--line); border-radius:var(--r);
  padding:.9rem 1rem;
}
.edrow__top{
  display:flex; align-items:center; gap:.7rem; flex-wrap:wrap; margin-bottom:.5rem;
}
.edrow__top .nm{ font-weight:700; color:var(--cream); }
.edrow__top .sv{ font-size:.8rem; color:var(--smoke); }
.edrow__top .sent{
  margin-left:auto; font-size:.72rem; letter-spacing:.1em; text-transform:uppercase;
  color:#9ccc85;
}
.edrow__mail{
  font-size:.78rem; color:var(--smoke); background:var(--coal);
  border:1px solid var(--line); border-radius:8px; padding:.55rem .7rem;
  margin-bottom:.6rem; white-space:pre-wrap; max-height:96px; overflow:hidden;
  position:relative;
}
.edrow__mail::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:28px;
  background:linear-gradient(transparent, var(--coal));
}
.edrow__acts{ display:flex; gap:.45rem; flex-wrap:wrap; }
.edrow__acts .btn{ padding:.4rem .8rem; font-size:.76rem; }
.edempty{ color:var(--smoke); padding:1.2rem 0; }

/* ---------- pätička ---------- */
.afoot{
  border-top:1px solid var(--line); background:var(--coal);
  padding:1.1rem 1.4rem; text-align:center;
}
.afoot p{ font-size:.78rem; }

/* ---------- responzivita ---------- */
@media (max-width:900px){
  .statgrid{ grid-template-columns:repeat(2, 1fr); }
}
@media (max-width:680px){
  .abar{ flex-wrap:wrap; }
  .abar__actions{ width:100%; margin-left:0; }
  .brow{ grid-template-columns:70px 1fr; }
  .brow__side{ grid-column:1 / -1; flex-direction:row; align-items:center;
    justify-content:space-between; flex-wrap:wrap; }
  .brow__badges, .brow__acts{ justify-content:flex-start; }
}
@media (max-width:420px){
  .statgrid{ grid-template-columns:1fr 1fr; gap:.6rem; }
  .scard b{ font-size:1.7rem; }
}

/* ---------- recenzie v administrácii ---------- */
.admin-reviews{
  margin:2rem 0 4rem;
  padding:1.4rem;
  border:1px solid var(--line);
  border-radius:var(--r);
  background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.02));
  box-shadow:0 18px 45px rgba(0,0,0,.24);
}
.admin-section-head{
  display:flex;
  justify-content:space-between;
  align-items:end;
  gap:1rem;
  margin-bottom:1.1rem;
  border-bottom:1px solid var(--line);
  padding-bottom:1rem;
}
.admin-section-head p:last-child{ max-width:28rem; font-size:.92rem; }
.radmin{ display:grid; gap:.85rem; }
.rarow{
  display:grid;
  grid-template-columns:1fr auto;
  gap:1.2rem;
  padding:1rem;
  border:1px solid rgba(201,162,75,.14);
  border-radius:var(--r);
  background:rgba(20,18,16,.68);
}
.rarow.is-off{ opacity:.62; }
.rarow .nm{ color:var(--cream); font-weight:700; }
.rarow .sv{ color:var(--smoke); font-size:.86rem; margin:.12rem 0 .45rem; }
.rarow p{ max-width:65ch; }
.rarow__acts{ display:flex; align-items:center; justify-content:flex-end; gap:.55rem; flex-wrap:wrap; }
@media (max-width:760px){
  .admin-section-head,.rarow{ grid-template-columns:1fr; display:grid; }
  .rarow__acts{ justify-content:flex-start; }
}

/* ---------- kalendáre barberov ---------- */
.calendar-admin{
  margin:0 0 1.6rem;
  padding:1.4rem;
  border:1px solid var(--line);
  border-radius:var(--r);
  background:linear-gradient(180deg, rgba(201,162,75,.055), rgba(255,255,255,.018));
  box-shadow:0 18px 45px rgba(0,0,0,.2);
}
.calbar{
  display:flex; align-items:end; justify-content:space-between;
  gap:1rem; flex-wrap:wrap; margin-bottom:1rem;
}
.cal-summary{
  color:var(--smoke); font-size:.88rem; max-width:42rem;
}
.cal-summary strong{ color:var(--brass-hi); }
.cal-week{
  display:grid; grid-template-columns:repeat(2, minmax(0,1fr));
  gap:.7rem; margin-top:.9rem;
}
.cal-day{
  display:grid; grid-template-columns:1fr 116px 116px;
  align-items:end; gap:.65rem;
  padding:.85rem;
  border:1px solid rgba(201,162,75,.14);
  border-radius:12px;
  background:rgba(20,18,16,.64);
}
.cal-day label:not(.checkline){ display:grid; gap:.25rem; color:var(--smoke); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; }
.cal-day input[type="time"], .cal-block-form input[type="date"], .cal-block-form input[type="time"]{
  width:100%; border:1px solid var(--line); background:var(--ink); color:var(--cream);
  border-radius:9px; padding:.58rem .65rem; color-scheme:dark;
}
.checkline{ display:flex; align-items:center; gap:.5rem; color:var(--cream); font-size:.9rem; }
.checkline input{ accent-color:var(--brass); }
.cal-actions{ display:flex; justify-content:flex-end; margin:.9rem 0 1.2rem; }
.cal-block-form{
  border-top:1px dashed rgba(167,156,138,.25);
  padding-top:1.2rem;
  display:grid; gap:.75rem;
}
.cal-block-form .form-row{ display:grid; grid-template-columns:1fr 130px 130px; gap:.75rem; }
.cal-block-form .btn{ justify-self:start; }
.cal-blocks{ display:grid; gap:.65rem; margin-top:1.1rem; }
.blockrow{
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:.85rem 1rem; border:1px solid rgba(201,162,75,.14);
  background:rgba(10,9,8,.45); border-radius:12px;
}
.blockrow b{ display:block; color:var(--cream); }
.blockrow span{ display:block; color:var(--smoke); font-size:.84rem; margin-top:.12rem; }
.empty--sm{ padding:1.2rem .8rem; }
@media (max-width:820px){
  .cal-week{ grid-template-columns:1fr; }
  .cal-day{ grid-template-columns:1fr 1fr 1fr; }
}
@media (max-width:560px){
  .cal-day, .cal-block-form .form-row{ grid-template-columns:1fr; }
  .blockrow{ align-items:flex-start; flex-direction:column; }
}
