@import url('https://fonts.googleapis.com/css2?family=Vazirmatn:wght@400;500;600;700;800&display=swap');

:root{
  --bg:#eef1f8;
  --bg-grad: radial-gradient(1200px 600px at 10% -10%, #e0e7ff 0%, transparent 60%),
             radial-gradient(1000px 500px at 100% 0%, #ffe4f1 0%, transparent 55%),
             #eef1f8;
  --card:#ffffff;
  --ink:#1f2333;
  --muted:#6b7280;
  --border:#e6e8f0;
  --accent:#6d5bf6;
  --accent2:#a855f7;
  --accent-grad: linear-gradient(135deg,#6d5bf6 0%,#a855f7 100%);
  --danger:#ef4444;
  --warn-bg:#fff7e0;
  --warn-border:#ffcd39;
  --radius:16px;
  --shadow: 0 4px 20px rgba(50,50,120,0.08);
  --shadow-lg: 0 10px 40px rgba(50,50,120,0.16);
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:"Vazirmatn","Tahoma",sans-serif;
  background:var(--bg-grad);
  background-attachment:fixed;
  color:var(--ink);
  direction:rtl;
}
a{color:var(--accent); text-decoration:none;}

/* ---------------- Topbar ---------------- */
.topbar{
  background:var(--accent-grad);
  color:#fff;
  padding:16px 26px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  box-shadow: 0 4px 24px rgba(109,91,246,0.35);
  position:sticky; top:0; z-index:50;
  flex-wrap:wrap; gap:10px;
}
.topbar .brand{font-weight:800; font-size:19px; display:flex; align-items:center; gap:8px;}
.topbar .brand .logo-dot{width:10px;height:10px;border-radius:50%;background:#fff;box-shadow:0 0 12px #fff;}
.topbar .clock{
  font-size:13px; background:rgba(255,255,255,0.18); padding:6px 14px; border-radius:999px;
  backdrop-filter: blur(4px);
}
.topbar .user-info{font-size:13px; display:flex; gap:14px; align-items:center; flex-wrap:wrap;}
.topbar a{color:#fff; opacity:0.92;}
.topbar a:hover{opacity:1; text-decoration:underline;}
.topbar .btn.secondary{background:rgba(255,255,255,0.15); color:#fff; border-color:rgba(255,255,255,0.4);}
.topbar .btn.secondary:hover{background:rgba(255,255,255,0.28);}

.container{max-width:1450px; margin:26px auto; padding:0 20px;}

/* ---------------- Cards ---------------- */
.card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:22px;
  margin-bottom:22px;
  box-shadow: var(--shadow);
  transition: box-shadow .2s ease;
}

/* ---------------- Buttons ---------------- */
.btn{
  display:inline-block;
  padding:10px 18px;
  border-radius:10px;
  border:1px solid var(--accent);
  background:var(--accent-grad);
  color:#fff;
  cursor:pointer;
  font-family:inherit;
  font-size:14px;
  font-weight:600;
  transition: transform .15s ease, box-shadow .15s ease;
  box-shadow: 0 3px 10px rgba(109,91,246,0.3);
}
.btn:hover{transform: translateY(-1px); box-shadow: 0 6px 16px rgba(109,91,246,0.4);}
.btn:active{transform: translateY(0);}
.btn.secondary{background:#fff; color:var(--accent); box-shadow:none;}
.btn.secondary:hover{background:#f3f0ff;}
.btn.danger{background:#fff; color:var(--danger); border-color:var(--danger); box-shadow:none;}
.btn.danger:hover{background:#fef2f2;}
.btn.small{padding:6px 12px; font-size:12px;}

/* ---------------- Inputs ---------------- */
input[type=text], input[type=password], select, textarea{
  width:100%;
  padding:10px 12px;
  border:1.5px solid var(--border);
  border-radius:10px;
  font-family:inherit;
  font-size:14px;
  background:#fbfbfe;
  transition: border-color .15s ease, box-shadow .15s ease;
}
input:focus, select:focus, textarea:focus{
  outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(109,91,246,0.15); background:#fff;
}
label{font-size:13px; color:var(--muted); display:block; margin-bottom:6px; font-weight:600;}
.field{margin-bottom:14px;}
.grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:14px;}

/* ---------------- Table ---------------- */
table{width:100%; border-collapse:separate; border-spacing:0 8px; font-size:13.5px;}
thead tr{background:transparent;}
th{padding:10px 10px; text-align:right; color:var(--muted); font-weight:700; font-size:12.5px; letter-spacing:.03em;}
td{padding:14px 10px; background:#fff; vertical-align:middle; border-top:1px solid var(--border); border-bottom:1px solid var(--border);}
td:first-child{border-radius:12px 0 0 12px; border-right:1px solid var(--border);}
td:last-child{border-radius:0 12px 12px 0; border-left:1px solid var(--border);}
tbody tr{transition: transform .12s ease;}
tbody tr:hover td{background:#f8f8ff;}
tr.needs-edit td{
  background: linear-gradient(0deg, var(--warn-bg), var(--warn-bg));
  font-weight:700;
  border-top:1.5px solid var(--warn-border);
  border-bottom:1.5px solid var(--warn-border);
  animation: pulseWarn 2.2s ease-in-out infinite;
}
@keyframes pulseWarn{
  0%,100%{ box-shadow: 0 0 0 rgba(255,205,57,0); }
  50%{ box-shadow: 0 0 0 4px rgba(255,205,57,0.18); }
}

/* ---------------- Badges ---------------- */
.badge{
  display:inline-flex; align-items:center; gap:5px;
  padding:5px 12px;
  border-radius:999px;
  font-size:11.5px;
  font-weight:700;
  white-space:nowrap;
  margin:2px;
  border:1px solid transparent;
  transition: transform .12s ease;
  cursor:pointer;
}
.badge:hover{transform: scale(1.04);}
.badge.pending{background:#fff3cd; color:#92400e; border-color:#ffe08a;}
.badge.progress{background:#dbeafe; color:#1e40af; border-color:#a9c9fb;}
.badge.done{background:#d1fae5; color:#065f46; border-color:#86e5c0; box-shadow:0 0 0 2px rgba(16,185,129,0.08);}
.badge.alt{background:#ede9fe; color:#5b21b6; border-color:#cdb9fb;}
.badge.waiting{background:#fee2e2; color:#991b1b; border-color:#fbb3b3;}
.badge.flagged{outline:2px solid #ef4444; outline-offset:1px; animation: flagPulse 1.4s ease-in-out infinite;}
@keyframes flagPulse{
  0%,100%{ box-shadow: 0 0 0 0 rgba(239,68,68,0.45); }
  50%{ box-shadow: 0 0 0 6px rgba(239,68,68,0); }
}
.badge .flag-icon{font-size:12px;}
.svc-meta{font-size:10.5px; color:var(--muted); margin-right:4px; margin-top:1px;}
.svc-row{margin-bottom:6px;}

.pkg-pill{
  display:inline-block; padding:5px 14px; border-radius:8px; font-size:12px; color:#fff; font-weight:700;
  box-shadow: 0 2px 8px rgba(0,0,0,0.12);
}

/* ---------------- Deadline chip ---------------- */
.deadline-chip{
  display:inline-block; padding:5px 11px; border-radius:8px; font-size:11.5px; font-weight:700; white-space:nowrap;
}
.deadline-chip.ok{background:#e0f2fe; color:#075985;}
.deadline-chip.warn{background:#fff3cd; color:#92400e;}
.deadline-chip.danger{background:#fee2e2; color:#991b1b; animation: flagPulse 1.4s ease-in-out infinite;}
.deadline-chip.done{background:#d1fae5; color:#065f46;}

/* ---------------- Stats cards ---------------- */
.stats-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:14px; margin-bottom:22px;}
.stat-card{
  background:#fff; border-radius:14px; padding:16px 18px; box-shadow: var(--shadow);
  border:1px solid var(--border); position:relative; overflow:hidden;
}
.stat-card .stat-icon{font-size:22px; margin-bottom:6px; display:block;}
.stat-card .stat-value{font-size:26px; font-weight:800; color:var(--ink);}
.stat-card .stat-label{font-size:12px; color:var(--muted); font-weight:600; margin-top:2px;}
.stat-card.accent{background:var(--accent-grad); color:#fff;}
.stat-card.accent .stat-value, .stat-card.accent .stat-label{color:#fff;}
.stat-card.danger-card{background:linear-gradient(135deg,#fecaca,#fca5a5);}
.stat-card.danger-card .stat-value{color:#7f1d1d;}
.stat-card.danger-card .stat-label{color:#7f1d1d;}

/* ---------------- Filters / toolbar ---------------- */
.filters{display:flex; flex-wrap:wrap; gap:12px; align-items:end;}
.filters .field{margin-bottom:0; min-width:170px;}
.toolbar{display:flex; justify-content:space-between; align-items:center; margin-bottom:18px; flex-wrap:wrap; gap:10px;}
.toolbar h2{font-weight:800;}

/* ---------------- Website credentials ---------------- */
details.host-creds{
  background:#f6f5ff; border:1px dashed #c9c3f7; border-radius:10px; padding:6px 10px; margin-top:6px; font-size:12px;
}
details.host-creds summary{cursor:pointer; color:var(--accent); font-weight:600; list-style:none;}
details.host-creds summary::-webkit-details-marker{display:none;}
details.host-creds .cred-row{display:flex; align-items:center; gap:6px; margin-top:6px;}
details.host-creds .cred-row code{background:#fff; padding:3px 8px; border-radius:6px; border:1px solid var(--border); flex:1; overflow:hidden; text-overflow:ellipsis;}
.copy-btn{cursor:pointer; background:#fff; border:1px solid var(--border); border-radius:6px; padding:3px 8px; font-size:11px;}
.copy-btn:hover{background:#f0f0ff;}

.service-block{border:1.5px solid var(--border); border-radius:12px; padding:16px; margin-bottom:14px; background:#fbfbfe;}
.service-block h4{margin:0 0 12px; font-size:14.5px; color:var(--accent);}

.flash{padding:12px 16px; border-radius:12px; margin-bottom:18px; font-size:14px; font-weight:600; display:flex; align-items:center; gap:8px;}
.flash.ok{background:#d1fae5; color:#065f46;}
.flash.err{background:#fee2e2; color:#991b1b;}

.needs-edit-toggle{cursor:pointer; font-size:19px; transition: transform .15s ease;}
.needs-edit-toggle:hover{transform: scale(1.2) rotate(-8deg);}

.login-wrap{display:flex; align-items:center; justify-content:center; min-height:100vh; background:var(--bg-grad);}
.login-card{width:360px; text-align:center;}
.login-card .emoji-lg{font-size:40px; margin-bottom:6px;}
.small-muted{color:var(--muted); font-size:12px;}
.actions-cell{white-space:nowrap;}

/* ---------------- Celebration overlay ---------------- */
#celebrate-overlay{
  position:fixed; inset:0; display:none; align-items:center; justify-content:center;
  z-index:999; pointer-events:none;
}
#celebrate-badge{
  background: linear-gradient(145deg, #ffd76a, #ff9f43 60%, #ff7b54);
  color:#5a2d00;
  padding:26px 46px;
  border-radius:22px;
  font-size:28px;
  font-weight:800;
  text-align:center;
  box-shadow: 0 20px 60px rgba(255,145,0,0.45), inset 0 2px 0 rgba(255,255,255,0.6);
  transform: scale(0) rotate(-8deg);
  border: 3px solid #fff;
}
#celebrate-badge .sub{display:block; font-size:14px; font-weight:600; margin-top:6px; color:#7a3e00;}
#celebrate-badge .trophy{font-size:52px; display:block; margin-bottom:4px; filter: drop-shadow(0 6px 10px rgba(0,0,0,0.25));}
.celebrate-pop{
  animation: popIn 0.55s cubic-bezier(.2,1.4,.4,1) forwards, floatY 2.2s ease-in-out 0.6s infinite, fadeOutCel .5s ease 2.6s forwards;
}
@keyframes popIn{ to{ transform: scale(1) rotate(0deg); } }
@keyframes floatY{ 0%,100%{ transform: translateY(0) rotate(0);} 50%{ transform: translateY(-10px) rotate(1.5deg);} }
@keyframes fadeOutCel{ to{ opacity:0; transform: scale(.85) translateY(-30px);} }

.confetti-piece{
  position:fixed; top:-20px; width:9px; height:14px; z-index:998; pointer-events:none;
  animation: confettiFall linear forwards;
  border-radius:2px;
}
@keyframes confettiFall{
  to{ transform: translateY(105vh) rotate(600deg); opacity:0.9; }
}

@media (max-width: 720px){
  table, thead, tbody, tr, th, td{display:block;}
  thead{display:none;}
  tbody tr{margin-bottom:14px; border-radius:14px; overflow:hidden; box-shadow: var(--shadow);}
  td{border:none; padding:8px 14px;}
  td:before{content: attr(data-label); display:block; font-size:11px; color:var(--muted); font-weight:700; margin-bottom:3px;}
}
