:root{
  --primary:#4f46e5;
  --primary-dark:#3730a3;
  --primary-light:#818cf8;
  --accent:#06b6d4;
  --success:#16a34a;
  --danger:#dc2626;
  --warning:#f59e0b;
  --bg:#f4f6fb;
  --card:#ffffff;
  --text:#1e293b;
  --muted:#64748b;
  --radius:16px;
  --shadow:0 10px 30px rgba(79,70,229,0.10);
  --shadow-lg:0 20px 50px rgba(30,41,59,0.15);
}
*{box-sizing:border-box;margin:0;padding:0;}
body{
  font-family:'Segoe UI',Roboto,Arial,sans-serif;
  background:linear-gradient(135deg,#eef2ff 0%,#f4f6fb 60%,#e0f2fe 100%);
  color:var(--text);
  min-height:100vh;
}
a{text-decoration:none;color:inherit;}
img{max-width:100%;display:block;}

/* ---------- Animations ---------- */
@keyframes fadeInUp{from{opacity:0;transform:translateY(24px);}to{opacity:1;transform:translateY(0);}}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}
@keyframes floatY{0%,100%{transform:translateY(0);}50%{transform:translateY(-10px);}}
@keyframes pulseRing{0%{box-shadow:0 0 0 0 rgba(79,70,229,.4);}100%{box-shadow:0 0 0 18px rgba(79,70,229,0);}}
.fade-up{animation:fadeInUp .6s ease both;}
.fade-in{animation:fadeIn .5s ease both;}
.float{animation:floatY 4s ease-in-out infinite;}
.stagger > *{animation:fadeInUp .5s ease both;}
.stagger > *:nth-child(1){animation-delay:.05s;}
.stagger > *:nth-child(2){animation-delay:.12s;}
.stagger > *:nth-child(3){animation-delay:.19s;}
.stagger > *:nth-child(4){animation-delay:.26s;}
.stagger > *:nth-child(5){animation-delay:.33s;}

/* ---------- Navbar ---------- */
.navbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 32px;background:rgba(255,255,255,.85);backdrop-filter:blur(10px);
  position:sticky;top:0;z-index:50;box-shadow:0 2px 12px rgba(0,0,0,.05);
}
.navbar .brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1.2rem;color:var(--primary-dark);}
.navbar .brand img{height:36px;width:36px;border-radius:8px;object-fit:cover;}
.navbar nav a{margin-left:22px;font-weight:500;color:var(--muted);transition:.2s;}
.navbar nav a:hover{color:var(--primary);}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:12px 26px;border:none;border-radius:12px;font-weight:600;font-size:.95rem;
  cursor:pointer;transition:.25s ease;
}
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-light));color:#fff;box-shadow:var(--shadow);}
.btn-primary:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);}
.btn-outline{background:#fff;border:2px solid var(--primary);color:var(--primary);}
.btn-outline:hover{background:var(--primary);color:#fff;}
.btn-danger{background:var(--danger);color:#fff;}
.btn-success{background:var(--success);color:#fff;}
.btn-sm{padding:8px 16px;font-size:.85rem;border-radius:8px;}
.btn:disabled{opacity:.5;cursor:not-allowed;}

/* ---------- Cards ---------- */
.card{
  background:var(--card);border-radius:var(--radius);padding:24px;
  box-shadow:var(--shadow);transition:transform .3s ease, box-shadow .3s ease;
}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);}
.stat-card{display:flex;align-items:center;gap:16px;}
.stat-card .icon{
  width:54px;height:54px;border-radius:14px;display:flex;align-items:center;justify-content:center;
  font-size:1.4rem;color:#fff;background:linear-gradient(135deg,var(--primary),var(--accent));
}
.stat-card .value{font-size:1.6rem;font-weight:700;}
.stat-card .label{color:var(--muted);font-size:.85rem;}

/* ---------- Forms ---------- */
.form-group{margin-bottom:18px;}
label{display:block;margin-bottom:6px;font-weight:600;font-size:.9rem;color:var(--text);}
input,select,textarea{
  width:100%;padding:12px 14px;border-radius:10px;border:1.5px solid #e2e8f0;
  font-size:.95rem;transition:.2s;background:#f8fafc;
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);background:#fff;box-shadow:0 0 0 4px rgba(79,70,229,.12);}

/* ---------- Auth pages ---------- */
.auth-wrapper{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;}
.auth-box{width:100%;max-width:440px;background:#fff;border-radius:20px;padding:40px 34px;box-shadow:var(--shadow-lg);}
.auth-box h2{margin-bottom:6px;color:var(--primary-dark);}
.auth-box p.sub{color:var(--muted);margin-bottom:24px;font-size:.9rem;}

/* ---------- Landing ---------- */
.hero{padding:90px 8vw 60px;text-align:center;}
.hero h1{font-size:2.6rem;background:linear-gradient(135deg,var(--primary-dark),var(--accent));-webkit-background-clip:text;color:transparent;line-height:1.25;}
.hero p{max-width:640px;margin:18px auto 30px;color:var(--muted);font-size:1.05rem;}
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px;padding:20px 8vw 80px;}
.feature-card{background:#fff;border-radius:18px;padding:26px;box-shadow:var(--shadow);}
.feature-card .emoji{font-size:1.8rem;margin-bottom:10px;}
.feature-card h3{margin-bottom:8px;font-size:1.05rem;}
.feature-card p{color:var(--muted);font-size:.88rem;}

/* ---------- Layout / Dashboard ---------- */
.dash-wrap{display:flex;min-height:100vh;}
.sidebar{
  width:250px;background:linear-gradient(180deg,var(--primary-dark),var(--primary));
  color:#fff;padding:24px 18px;position:sticky;top:0;height:100vh;
}
.sidebar .brand{font-weight:700;font-size:1.15rem;margin-bottom:30px;display:flex;gap:10px;align-items:center;}
.sidebar a{display:flex;align-items:center;gap:10px;color:rgba(255,255,255,.85);padding:11px 14px;border-radius:10px;margin-bottom:4px;font-size:.92rem;transition:.2s;}
.sidebar a:hover,.sidebar a.active{background:rgba(255,255,255,.15);color:#fff;}
.main-content{flex:1;padding:26px 32px;}
.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px;flex-wrap:wrap;gap:14px;}
.topbar .greet h2{font-size:1.5rem;}
.topbar .greet p{color:var(--muted);font-size:.9rem;}
.avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;border:2px solid var(--primary);}
.grid{display:grid;gap:20px;}
.grid-4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));}
.grid-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));}

.quote-banner{
  background:linear-gradient(135deg,var(--accent),var(--primary));color:#fff;border-radius:16px;
  padding:18px 24px;margin-bottom:22px;font-style:italic;box-shadow:var(--shadow);
}
.badge{padding:4px 12px;border-radius:20px;font-size:.75rem;font-weight:600;}
.badge-success{background:#dcfce7;color:var(--success);}
.badge-danger{background:#fee2e2;color:var(--danger);}
.badge-warning{background:#fef3c7;color:#b45309;}
.badge-pending{background:#e0e7ff;color:var(--primary-dark);}

table{width:100%;border-collapse:collapse;}
table th,table td{padding:12px 14px;text-align:left;font-size:.88rem;border-bottom:1px solid #eef1f6;}
table th{color:var(--muted);font-weight:600;background:#f8fafc;}

.alert{padding:13px 16px;border-radius:10px;margin-bottom:18px;font-size:.9rem;}
.alert-success{background:#dcfce7;color:#166534;}
.alert-danger{background:#fee2e2;color:#991b1b;}

.checkin-btn{
  width:120px;height:120px;border-radius:50%;border:none;color:#fff;font-weight:700;font-size:1rem;
  background:linear-gradient(135deg,var(--success),#22c55e);cursor:pointer;animation:pulseRing 2.2s infinite;
}
.checkout-btn{background:linear-gradient(135deg,var(--danger),#f87171);}

/* Responsive */
@media(max-width:900px){
  .sidebar{position:fixed;left:-260px;z-index:100;transition:.3s;box-shadow:var(--shadow-lg);}
  .sidebar.open{left:0;}
  .main-content{padding:18px;}
  .hero h1{font-size:1.9rem;}
}
