:root{
  --navy:#0B2A3A; --ink:#143845; --muted:#5C7683;
  --lime:#9ACA3C; --teal:#3FBB8F; --cyan:#17A9D6;
  --line:#DCE7EA; --grad:linear-gradient(115deg,var(--lime) 0%,var(--teal) 48%,var(--cyan) 100%);
  --danger:#B3261E; --danger-bg:#FBEAEA; --danger-border:#F3CFCF;
  --ok:#0a7a1e; --ok-bg:#e6ffe6; --ok-border:#7ac97a;
  --warn:#a66a00;
}
*{box-sizing:border-box}
body{
  margin:0;
  font-family:'IBM Plex Sans',system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  color:var(--ink);
}

/* ===================== Auth shell: login / activate / forgot-password / brak dostępu ===================== */
body.auth-page{
  min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center;
  background:var(--navy); padding:1.5rem; position:relative; overflow:hidden;
}
body.auth-page::before{ content:""; position:absolute; inset:auto 0 0 0; height:3px; background:var(--grad); }
body.auth-page::after{
  content:""; position:absolute; top:50%; left:50%; width:640px; height:640px;
  transform:translate(-50%,-50%); background:var(--grad); opacity:.18; filter:blur(90px);
  border-radius:50%; pointer-events:none;
}

.brand{ position:relative; z-index:1; margin-bottom:1.4rem; }
.brand-mark{
  display:inline-block; background:#fff; color:var(--navy); font-weight:700; font-size:1.05rem;
  padding:.5rem .9rem; border-radius:12px; box-shadow:0 6px 18px -10px rgba(0,0,0,.5); letter-spacing:-.01em;
}
.brand-mark span{ background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.brand-mark img{ display:block; width:auto; max-width:220px; object-fit:contain; }

.card{
  position:relative; z-index:1; background:#fff; border-radius:1rem; width:100%; max-width:360px;
  padding:2.1rem 2rem 2rem; box-shadow:0 24px 60px -20px rgba(0,0,0,.55); text-align:center; overflow:hidden;
}
.card::before{ content:""; position:absolute; inset:0 0 auto 0; height:4px; background:var(--grad); }
.card h1{
  font-weight:600; letter-spacing:-.01em; color:var(--navy); font-size:1.35rem; margin:0 0 .3rem;
}
.card .sub{ color:var(--muted); font-size:.86rem; margin:0 0 1.3rem; }

.card .error{
  display:none; background:var(--danger-bg); color:var(--danger); border:1px solid var(--danger-border);
  border-radius:.6rem; padding:.6rem .8rem; font-size:.84rem; margin-bottom:1.1rem; text-align:left;
}
.card .notice-error{
  background:var(--danger-bg); color:var(--danger); border:1px solid var(--danger-border);
  border-radius:.6rem; padding:.6rem .8rem; font-size:.84rem; margin-bottom:1.1rem; text-align:left;
}
.card .notice-success{
  background:var(--ok-bg); color:var(--ok); border:1px solid var(--ok-border);
  border-radius:.6rem; padding:.6rem .8rem; font-size:.84rem; margin-bottom:1.1rem; text-align:left;
}

.card form{ display:flex; flex-direction:column; gap:.7rem; }
.card input[type=email],
.card input[type=password],
.card input[type=text]{
  padding:.7rem .85rem; font-size:.95rem; width:100%; border:1px solid var(--line); border-radius:.6rem;
  font-family:inherit; color:var(--ink); background:#F7FAFB;
}
.card input:focus{
  outline:none; border-color:var(--cyan); box-shadow:0 0 0 .2rem rgba(23,169,214,.2); background:#fff;
}
.card button{
  padding:.75rem 1.2rem; border:0; border-radius:.6rem; background:var(--grad); color:#06303e;
  font-weight:600; font-size:.95rem; font-family:inherit; cursor:pointer; transition:filter .15s ease;
}
.card button:hover{ filter:brightness(1.06); }
.card button:active{ filter:brightness(.97); }
.card .links{ margin-top:1.1rem; margin-bottom:0; font-size:.85rem; }
.card .links a{ color:var(--cyan); text-decoration:none; }
.card .links a:hover{ text-decoration:underline; }

@media(max-width:380px){
  .card{padding:1.7rem 1.4rem 1.6rem}
}

/* ===================== App shell: panel admina ===================== */
body.app-page{ margin:0; background:#F7FAFB; }

.app-nav{
  background:var(--navy); color:#fff; padding:.9rem 1.6rem; display:flex; align-items:center;
  gap:1.4rem; position:relative;
}
.app-nav::after{ content:""; position:absolute; inset:auto 0 0 0; height:3px; background:var(--grad); }
.app-nav .brand-mark{ padding:.3rem .7rem; font-size:.9rem; }
.app-nav a{ color:#DCE7EA; text-decoration:none; font-size:.9rem; }
.app-nav a:hover{ color:#fff; text-decoration:underline; }
.app-nav strong{ font-size:.95rem; }

.app-content{ max-width:820px; margin:2.5rem auto; padding:0 1.6rem 3rem; }
.app-content h2{ color:var(--navy); font-weight:600; }

.flash{
  background:var(--ok-bg); border:1px solid var(--ok-border); color:var(--ok);
  padding:.7rem 1rem; border-radius:.6rem; margin:1rem 0; font-size:.9rem;
}
.app-content .err{
  background:var(--danger-bg); border:1px solid var(--danger-border); color:var(--danger);
  padding:.7rem 1rem; border-radius:.6rem; margin:1rem 0; font-size:.9rem; display:block;
}

.app-content table{
  border-collapse:collapse; width:100%; margin-top:1rem; background:#fff; border-radius:.6rem;
  overflow:hidden; box-shadow:0 1px 3px rgba(11,42,58,.08);
}
.app-content th, .app-content td{ border-bottom:1px solid var(--line); padding:.7rem .9rem; text-align:left; font-size:.92rem; }
.app-content th{ background:#EEF4F5; color:var(--navy); font-weight:600; }
.app-content tr:last-child td{ border-bottom:none; }
.status-invited{ color:var(--warn); font-weight:600; }
.status-active{ color:var(--ok); font-weight:600; }

.app-content fieldset{
  margin-bottom:1.2rem; border:1px solid var(--line); border-radius:.6rem; padding:1rem 1.2rem; background:#fff;
}
.app-content legend{ font-weight:600; color:var(--navy); padding:0 .4rem; }
.app-content fieldset label{ display:block; margin:.35rem 0; font-size:.92rem; }
.select-all{ font-style:italic; color:var(--muted); font-size:.85rem; margin-bottom:.5rem; display:block; }

.app-content form.inline{ display:inline; }
.app-content input[type=email],
.app-content input[type=text]{
  padding:.6rem .8rem; font-size:.9rem; width:100%; max-width:340px; border:1px solid var(--line);
  border-radius:.5rem; font-family:inherit; margin:.6rem 0; display:block;
}
.app-content button{
  padding:.6rem 1.1rem; border:0; border-radius:.5rem; background:var(--grad); color:#06303e;
  font-weight:600; font-size:.88rem; font-family:inherit; cursor:pointer;
}
.app-content button:hover{ filter:brightness(1.06); }
