:root{
  /* Color palette: soft neutrals + cool accents */
  --bg: #F6F8FA;           /* very light cool neutral */
  --surface: #FFFFFF;      /* card / surface */
  --muted: #C9D6DD;        /* muted borders / separators */
  --text: #163041;         /* deep navy for high contrast */
  --subtext: #4B6B77;      /* softer text */
  --accent: #6CB4EE;       /* calm sky blue for accents */
  --accent-2: #9AD7C6;     /* soft green for success state */
  --glass: rgba(255,255,255,0.6);
  --radius: 12px;
  --shadow-1: 0 6px 18px rgba(22,48,65,0.06);
  --shadow-2: 0 2px 8px rgba(22,48,65,0.04);
    --max-width: 1100px;
    /* Pastel polychromy gradients */
    --pastel-1-from: #FFF0F5; /* lavender blush */
    --pastel-1-to: #F0F7FF;   /* very soft sky */
    --pastel-2-from: #F6FFF2; /* pale mint */
    --pastel-2-to: #E8F7FF;   /* pale aqua */
    --pastel-3-from: #FFF8E8; /* warm cream */
    --pastel-3-to: #F6E8FF;   /* soft mauve */
    --accent-glow: rgba(108,180,238,0.18);
}

/* Base */
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial;
  background: linear-gradient(180deg,var(--bg), #F9FBFC);
  color:var(--text);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  line-height:1.45;
}

.container{
  width:100%;
  max-width:var(--max-width);
  margin:28px auto;
  padding:0 16px;
}

/* Top navigation fixed */
.top-nav{
  position:fixed;left:0;right:0;top:0;z-index:1100;
  backdrop-filter: blur(8px);
  background: linear-gradient(180deg, rgba(255,255,255,0.72), rgba(255,255,255,0.6));
  border-bottom: 1px solid rgba(16,32,40,0.04);
  box-shadow: 0 6px 18px rgba(22,48,65,0.04);
}

/* Content offset to avoid being hidden under fixed nav */
.main-content{padding-top:84px;padding-bottom:96px}

/* Navbar link underline animation */
.top-nav a{position:relative;color:var(--text);text-decoration:none;transition:color .18s ease}
.top-nav a::after{content:'';position:absolute;left:0;right:0;height:2px;bottom:-6px;background:linear-gradient(90deg,var(--accent),var(--accent-2));transform:scaleX(0);transform-origin:left;transition:transform .22s cubic-bezier(.2,.9,.2,1)}
.top-nav a:hover::after{transform:scaleX(1)}
.top-nav a:hover{color:var(--text)}

/* Outlined button for register */
.btn-outline{background:transparent;border:1px solid var(--accent);color:var(--accent);padding:8px 12px;border-radius:10px;font-weight:600;transition:background .16s ease,color .16s ease,transform .12s ease}
.btn-outline:hover{background:var(--accent);color:#fff;transform:translateY(-2px);box-shadow:0 8px 20px rgba(108,180,238,0.12)}

/* Bottom bar fixed */
.bottom-bar{position:fixed;left:0;right:0;bottom:0;z-index:1150;background:linear-gradient(180deg, rgba(255,255,255,0.9), rgba(250,250,252,0.95));backdrop-filter:blur(6px);border-top:1px solid rgba(16,32,40,0.04);box-shadow:0 -6px 18px rgba(22,48,65,0.03)}
.bottom-bar .container{display:flex;align-items:center;justify-content:space-between;padding:10px 16px}
.bottom-bar .links{display:flex;gap:12px;align-items:center}
.bottom-bar .small{font-size:0.92rem;color:var(--subtext)}

.card{
  background:var(--surface);
  border:1px solid var(--muted);
  border-radius:var(--radius);
  box-shadow:var(--shadow-1);
  padding:20px;
}

.header{
  display:flex;align-items:center;justify-content:space-between;
  gap:12px;margin-bottom:18px;
}
.brand{display:flex;align-items:center;gap:12px}
.logo{
  width:48px;height:48px;border-radius:10px;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  box-shadow:var(--shadow-2), inset 0 -6px 12px rgba(255,255,255,0.15);
}
.title{font-weight:600;font-size:1.125rem;color:var(--text)}
.subtitle{font-size:0.95rem;color:var(--subtext)}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:10px;border:none;cursor:pointer;font-weight:600}
.btn-ghost{background:transparent;color:var(--text);border:1px solid transparent}
.btn-primary{background:linear-gradient(180deg,var(--accent),#4FAEE8);color:white;box-shadow:0 8px 20px var(--accent-glow);transition:transform .18s ease, box-shadow .18s ease}
.btn-primary:hover{transform:translateY(-3px);box-shadow:0 18px 36px rgba(79,174,232,0.16)}
.btn-sec{background:linear-gradient(180deg,var(--accent-2),#7FE0C9);color:var(--text);transition:transform .18s ease}
.btn-sec:hover{transform:translateY(-2px)}

/* Soft gradient utility classes */
.gradient-soft-1{background:linear-gradient(135deg,var(--pastel-1-from),var(--pastel-1-to))}
.gradient-soft-2{background:linear-gradient(135deg,var(--pastel-2-from),var(--pastel-2-to))}
.gradient-soft-3{background:linear-gradient(135deg,var(--pastel-3-from),var(--pastel-3-to))}

/* Decorative floating shapes (polychrome) */
.decor-shape{
  position:absolute;border-radius:50%;filter:blur(36px);opacity:0.75;pointer-events:none;transform:translate3d(0,0,0);
}

/* subtle motion */
@keyframes floaty { 0%{transform:translateY(0)}50%{transform:translateY(-8px)}100%{transform:translateY(0)} }
.floaty{animation:floaty 6s ease-in-out infinite}

/* Parallax container helper (Rellax defaults will use data attributes) */
.parallax-wrap{position:relative;overflow:visible}

/* Forms */
.field{display:flex;flex-direction:column;gap:8px}
.input{
  padding:12px 14px;border-radius:10px;border:1px solid var(--muted);background:var(--glass);
  color:var(--text);outline:none;font-size:1rem
}
.input:focus{border-color:var(--accent);box-shadow:0 6px 16px rgba(107,180,238,0.12)}

/* Typography */
h1{font-size:1.5rem;margin:0 0 8px;color:var(--text)}
h2{font-size:1.125rem;margin:0 0 8px;color:var(--text)}
p{margin:0 0 12px;color:var(--subtext)}
code{background:#F3F7F9;padding:2px 6px;border-radius:6px;color:var(--text);font-family:monospace}

/* Layout helpers */
.row{display:flex;gap:16px;flex-wrap:wrap}
.col{flex:1 1 0}
.stack{display:flex;flex-direction:column;gap:12px}

/* Small utility */
.muted{color:var(--subtext)}

/* Responsive adjustments */
@media (max-width:800px){
  .container{margin:18px auto;padding:0 12px}
  .header{flex-direction:column;align-items:flex-start}
  .logo{width:44px;height:44px}
  .title{font-size:1rem}
}

@media (max-width:420px){
  .btn{padding:8px 10px;font-size:0.95rem}
  h1{font-size:1.125rem}
}

/* Accessibility helpers */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Subtle decorative glass layer for headers or hero */
.glass-hero{
  background: linear-gradient(180deg, rgba(255,255,255,0.6), rgba(255,255,255,0.35));
  border-radius:16px;padding:20px;border:1px solid rgba(255,255,255,0.45);
  box-shadow: 0 10px 30px rgba(22,48,65,0.06);
}

/* Make cards transition nicely when their background or transform changes */
.card{transition:transform .28s cubic-bezier(.2,.9,.2,1), box-shadow .28s ease, background .28s ease}
.card:hover{transform:translateY(-6px)}

/* Fullscreen overlay loader (soft pastel ring + floating dots) */
.overlay-center{display:flex;flex-direction:column;align-items:center;gap:12px}
.loader-ring{
  width:96px;height:96px;border-radius:50%;position:relative;
  background: conic-gradient(from 0deg at 50% 50%, rgba(108,180,238,0.18), rgba(154,215,198,0.14), rgba(246,232,255,0.14));
  display:grid;place-items:center;box-shadow:0 8px 30px rgba(22,48,65,0.06);
  animation:rotateRing 1.8s linear infinite;
}
.loader-ring::after{
  content:'';width:64px;height:64px;border-radius:50%;background:var(--surface);box-shadow:inset 0 1px 0 rgba(255,255,255,0.6);
}
@keyframes rotateRing{to{transform:rotate(360deg)}}

.loader-dots{display:flex;gap:8px;margin-top:6px}
.loader-dots .dot{width:10px;height:10px;border-radius:50%;background:var(--accent);opacity:0.9;transform:translateY(0);animation:dotBounce 1s ease-in-out infinite}
.loader-dots .dot:nth-child(2){animation-delay:0.12s;background:var(--accent-2)}
.loader-dots .dot:nth-child(3){animation-delay:0.24s;background:var(--muted)}
@keyframes dotBounce{0%,100%{transform:translateY(0);opacity:0.9}50%{transform:translateY(-8px);opacity:1}}

/* Subtle background gradient shift while loading */
.overlay-bg-anim{background:linear-gradient(180deg,var(--pastel-1-from),var(--pastel-2-to));animation:shiftBG 6s ease-in-out infinite;opacity:0.92}
@keyframes shiftBG{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}



/* Formatted table minimal */
table{width:100%;border-collapse:collapse}
th,td{padding:10px;border-bottom:1px solid rgba(16,32,40,0.04);text-align:left}
th{color:var(--subtext);font-weight:600}
