@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600;700&family=Inter:wght@400;500;600;700&display=swap');
:root{--ink:#243046;--muted:#778399;--line:#e4e8f0;--teal:#16c4c3;--blue:#4d74ee;--purple:#7650df;--gold:#a98236}*{box-sizing:border-box}body{margin:0;background:#f2f4f8;color:var(--ink);font:14px Inter,system-ui,-apple-system,Segoe UI,sans-serif;min-height:100vh}.auth-shell{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(390px,.9fr);max-width:1500px;margin:auto;padding:24px;gap:28px;align-items:stretch}.auth-brand{position:relative;min-height:calc(100vh - 48px);border-radius:23px;padding:clamp(32px,5vw,78px);overflow:hidden;background:linear-gradient(140deg,#18c3c6 0%,#377cd9 46%,#7450dd 100%);color:#fff;display:flex;flex-direction:column;justify-content:center}.brand-mark{display:grid;place-items:center;width:42px;height:42px;background:#ffffff28;border:1px solid #ffffff5e;border-radius:14px;font-size:25px}.eyebrow{font-size:11px;letter-spacing:3px;font-weight:700;margin:24px 0 12px;color:#f1f5ff}.auth-brand h1{font:500 clamp(38px,4.2vw,65px)/1.06 'Cormorant Garamond',Georgia,serif;letter-spacing:-.4px;margin:0;max-width:600px}.auth-brand h1 em{font-weight:400;color:#fbe7b0}.auth-brand>p:not(.eyebrow){max-width:430px;color:#edf5ff;line-height:1.7;font-size:14px}.auth-art{height:215px;max-width:530px;width:100%;margin-top:40px;position:relative}.art-photo{position:absolute;left:0;top:0;width:43%;height:100%;border-radius:5px 0 0 5px;background:linear-gradient(155deg,#779a8b66,#5d684b77),url('assets/demo-couple.jpg') center/cover;border:6px solid #fff7e6;box-shadow:0 20px 35px #19284c25;transform:rotate(-2deg)}.art-paper{position:absolute;left:36%;top:8%;width:61%;height:90%;background:linear-gradient(120deg,#fffaf0,#e9d6b6);border:1px solid #c5ab78;box-shadow:0 20px 35px #19284c25;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;color:#8c6b2e}.art-paper small{font-size:8px;letter-spacing:4px}.art-paper strong{font:600 clamp(19px,2.1vw,31px)/1.05 'Cormorant Garamond',Georgia,serif;letter-spacing:4px;margin:16px 0}.art-paper span{font-size:16px;color:#b79a5c}.auth-card{align-self:center;justify-self:center;width:min(100%,480px);padding:clamp(28px,4vw,54px);background:#fff;border:1px solid #e7eaf1;border-radius:20px;box-shadow:0 20px 60px #31415c0d}.auth-logo{font-size:23px;font-weight:700;letter-spacing:-.9px;color:#27374b;margin-bottom:34px}.auth-logo span{font-weight:400;color:#287ed9}.step-tag{display:inline-flex;align-items:center;padding:6px 9px;border-radius:5px;background:#edf2ff;color:#5c61ca;font-size:9px;font-weight:800;letter-spacing:1.4px}.auth-card h2{margin:14px 0 8px;font-size:26px;letter-spacing:-.8px}.muted{color:var(--muted);line-height:1.65;font-size:12px;margin:0 0 24px}.auth-card form{display:flex;flex-direction:column;gap:9px}.auth-card label,.admin-card label{font-size:11px;color:#46536a;font-weight:700;margin-top:9px;display:flex;align-items:baseline;gap:8px}.auth-card label small,.admin-card label small{font-size:9px;font-weight:500;color:#8d98aa}.auth-card input,.admin-card input,.admin-card select,.inline-form input{height:43px;width:100%;border:1px solid #dfe4ed;border-radius:8px;padding:0 12px;font:12px Inter,sans-serif;color:#26334a;background:#fff;outline:0}.auth-card input:focus,.admin-card input:focus,.admin-card select:focus{border-color:#7a8dee;box-shadow:0 0 0 3px #7784ef20}.primary{height:45px;display:flex;align-items:center;justify-content:center;gap:12px;border:0;border-radius:9px;background:linear-gradient(105deg,var(--teal),var(--blue) 57%,var(--purple));color:white;font-weight:700;font-size:12px;cursor:pointer;margin-top:16px;text-decoration:none;box-shadow:0 8px 18px #4765db24}.primary:hover{filter:brightness(1.04);transform:translateY(-1px)}.primary span{font-size:17px;font-weight:400}.block-link{padding:14px}.auth-note{display:flex;align-items:center;gap:8px;margin-top:24px;color:#758197;font-size:10px}.lock-dot{color:#11b4a9;font-size:9px}.auth-foot{font-size:10px;line-height:1.6;color:#919bae;margin:26px 0 0}.alert{padding:11px 13px;border-radius:8px;background:#eff6ff;color:#3e6090;font-size:11px;line-height:1.5;margin:13px 0}.alert.error{background:#fff0f0;color:#a33f4a;border:1px solid #f7dada}.alert.success{background:#effaf4;color:#287b4d;border:1px solid #d4efdf}.secondary-link{display:block;margin-top:18px;color:#5366c7;font-size:11px;text-decoration:none}.admin-body{padding:0 20px 50px}.admin-header{height:68px;max-width:1420px;margin:auto;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e1e6ee}.admin-header .auth-logo{margin:0}.admin-header nav{display:flex;align-items:center;gap:22px}.admin-header nav a,.nav-signout{font:600 11px Inter,sans-serif;color:#66748a;text-decoration:none;background:none;border:0;cursor:pointer}.admin-header nav form{margin:0}.admin-main{max-width:1420px;margin:34px auto 0}.admin-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.admin-heading h1{font-size:29px;letter-spacing:-1px;margin:10px 0 5px}.admin-heading .muted{margin:0}.user-count{font-size:29px;font-weight:700;padding:12px 18px;background:#fff;border:1px solid var(--line);border-radius:12px}.user-count small{display:block;font-size:10px;color:var(--muted);font-weight:500}.admin-grid{display:grid;grid-template-columns:minmax(275px,.65fr) minmax(0,1.8fr);gap:18px;align-items:start}.admin-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:22px;min-width:0}.admin-card h2{font-size:15px;margin:0 0 14px}.admin-card form:not(.inline-form){display:flex;flex-direction:column;gap:8px}.admin-card .primary{width:100%}.users-card{padding:22px 0 0}.users-card h2{padding:0 22px}.user-table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:11px}th{text-align:left;background:#f7f8fb;color:#7d899b;font-size:9px;text-transform:uppercase;letter-spacing:.5px;padding:12px 14px}td{border-top:1px solid #eef0f5;padding:14px;vertical-align:top}td strong,td small{display:block}td small{color:#8894a6;font-size:9px;line-height:1.55;margin-top:4px;overflow-wrap:anywhere}.pill{display:inline-block;font-size:8px;border-radius:4px;padding:4px 5px;margin:0 3px 3px 0;background:#edf0f7;color:#657087}.pill.admin{background:#eeeafd;color:#6e57c5}.pill.active{background:#e6f8f0;color:#2f9366}.pill.inactive{background:#fff0ef;color:#bc5555}details summary{font-size:9px;color:#5366c7;cursor:pointer;white-space:nowrap;margin-bottom:7px}.inline-form{display:flex;gap:4px;align-items:center;margin:5px 0 8px}.inline-form input{height:30px;min-width:100px;font-size:9px;padding:0 6px}.small-action{border:1px solid #dce3ed;border-radius:5px;background:#f6f8fb;padding:6px 8px;font-size:9px;font-weight:700;white-space:nowrap;cursor:pointer;color:#4d5d77}.small-action.danger{color:#aa4a4a;background:#fff5f3;border-color:#f5d7d4}@media(max-width:850px){.auth-shell{grid-template-columns:1fr;padding:12px;gap:12px}.auth-brand{min-height:330px;padding:30px}.auth-brand h1{font-size:42px}.auth-art{display:none}.auth-card{width:min(100%,480px);margin:14px 0}.admin-grid{grid-template-columns:1fr}.admin-header nav{gap:12px}.admin-heading{align-items:flex-start;gap:12px}.user-count{font-size:20px}}@media(max-width:500px){.auth-brand{min-height:270px;padding:26px}.auth-brand h1{font-size:34px}.auth-brand>p:not(.eyebrow){font-size:12px}.auth-card{padding:25px 20px}.admin-body{padding:0 10px 30px}.admin-header nav{gap:8px}.admin-header nav a,.nav-signout{font-size:9px}.admin-heading h1{font-size:24px}}
.setup-help{margin:13px 0;padding:12px 13px;border:1px solid #e5e9f1;border-radius:8px;background:#f8faff;color:#55637a;font-size:11px;line-height:1.6}.setup-help strong{display:block;color:#2f3e55;font-size:11px;margin-bottom:5px}.setup-help ol{padding-left:18px;margin:5px 0 8px}.setup-help li{margin:4px 0}.setup-help code{font:10px ui-monospace,SFMono-Regular,Consolas,monospace;background:#edf1f8;padding:2px 4px;border-radius:3px}.setup-help p{margin:8px 0 0;font-size:10px;color:#7b8799}

/* v144.3: responsive split-screen authentication pages with restrained motion. */
.auth-shell {
  width: 100%;
  max-width: 1800px;
  min-height: 100svh;
  grid-template-columns: minmax(0, 1.12fr) minmax(360px, .88fr);
  gap: clamp(18px, 3vw, 56px);
  padding: clamp(12px, 1.15vw, 20px);
  overflow: hidden;
}
.auth-brand {
  isolation: isolate;
  min-height: calc(100svh - clamp(24px, 2.3vw, 40px));
  animation: auth-panel-enter .7s cubic-bezier(.2,.7,.2,1) both;
}
.auth-brand::before {
  content: '';
  position: absolute;
  z-index: -1;
  width: clamp(300px, 36vw, 620px);
  aspect-ratio: 1;
  top: -24%;
  right: -13%;
  border: 1px solid rgba(255,255,255,.24);
  border-radius: 50%;
  background: radial-gradient(circle at 42% 42%, rgba(255,255,255,.19), rgba(255,255,255,0) 66%);
  box-shadow: 0 0 0 34px rgba(255,255,255,.035), 0 0 0 74px rgba(255,255,255,.025);
  pointer-events: none;
  animation: auth-orbit 16s ease-in-out infinite alternate;
}
.auth-brand::after {
  content: '✦';
  position: absolute;
  z-index: 0;
  top: 17%;
  right: 13%;
  color: rgba(255,255,255,.72);
  font-size: clamp(14px, 1.5vw, 23px);
  text-shadow: 0 0 18px rgba(255,255,255,.55);
  pointer-events: none;
  animation: auth-sparkle 4.6s ease-in-out infinite;
}
.auth-brand > * { position: relative; z-index: 1; }
.auth-brand .brand-mark { object-fit: contain; padding: 7px; transition: transform .35s ease, box-shadow .35s ease; }
.auth-brand .brand-mark:hover { transform: rotate(-7deg) scale(1.04); box-shadow: 0 9px 24px rgba(14,28,64,.18); }
.auth-brand h1 { text-wrap: balance; }
.auth-card {
  animation: auth-card-enter .65s .08s cubic-bezier(.2,.7,.2,1) both;
  transition: box-shadow .25s ease, border-color .25s ease;
}
.auth-card:focus-within { box-shadow: 0 22px 66px rgba(45,70,120,.14); border-color: rgba(111,130,230,.35); }
.auth-art { perspective: 900px; }
.art-photo { animation: album-photo-float 7.5s ease-in-out infinite; will-change: transform; }
.art-paper { animation: album-paper-float 8.5s ease-in-out infinite; will-change: transform; }
.auth-art::after {
  content: '';
  position: absolute;
  z-index: 3;
  left: 8%;
  top: 8%;
  width: 42%;
  height: 85%;
  pointer-events: none;
  background: linear-gradient(110deg, transparent 25%, rgba(255,255,255,.24) 48%, transparent 72%);
  transform: translateX(-130%) skewX(-12deg);
  animation: album-sheen 8s 1.8s ease-in-out infinite;
}
.auth-card input, .auth-card button, .auth-card a { transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease, background-color .18s ease; }
.auth-links a:focus-visible, .primary:focus-visible, .auth-card input:focus-visible {
  outline: 3px solid rgba(90,110,231,.28);
  outline-offset: 2px;
}
@keyframes auth-panel-enter { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
@keyframes auth-card-enter { from { opacity: 0; transform: translateY(12px) scale(.992); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes auth-orbit { from { transform: translate3d(0,0,0) rotate(0deg); } to { transform: translate3d(-16px,18px,0) rotate(7deg); } }
@keyframes auth-sparkle { 0%,100% { opacity: .45; transform: translateY(0) scale(.92) rotate(0deg); } 50% { opacity: 1; transform: translateY(-8px) scale(1.08) rotate(14deg); } }
@keyframes album-photo-float { 0%,100% { transform: rotate(-2deg) translateY(0); } 50% { transform: rotate(-1deg) translateY(-5px); } }
@keyframes album-paper-float { 0%,100% { transform: rotate(0deg) translateY(0); } 50% { transform: rotate(.8deg) translateY(4px); } }
@keyframes album-sheen { 0%,58%,100% { transform: translateX(-130%) skewX(-12deg); opacity: 0; } 65% { opacity: .85; } 81% { transform: translateX(160%) skewX(-12deg); opacity: 0; } }
@media (max-width: 850px) {
  .auth-shell { grid-template-columns: minmax(0,1fr); min-height: 100svh; align-items: start; padding: 12px; gap: 16px; }
  .auth-brand { min-height: auto; padding: clamp(25px, 5vw, 40px); border-radius: 19px; }
  .auth-brand h1 { font-size: clamp(36px, 6.4vw, 49px); }
  .auth-brand > p:not(.eyebrow) { max-width: 560px; }
  .auth-art { display: block; height: clamp(125px, 23vw, 180px); max-width: 440px; margin-top: 23px; }
  .auth-card { justify-self: center; align-self: start; width: min(100%, 520px); margin: 0 auto 14px; padding: clamp(26px, 4vw, 42px); }
  .auth-brand::before { right: -15%; top: -35%; width: clamp(270px, 56vw, 420px); }
}
@media (max-width: 520px) {
  .auth-shell { padding: 10px; gap: 12px; }
  .auth-brand { padding: 23px 21px; border-radius: 16px; }
  .auth-brand h1 { font-size: clamp(32px, 8vw, 40px); }
  .auth-brand .eyebrow { margin-top: 17px; letter-spacing: 2.2px; }
  .auth-brand > p:not(.eyebrow) { font-size: 12px; line-height: 1.6; margin-bottom: 0; }
  .auth-art { height: 122px; max-width: 330px; margin-top: 18px; }
  .art-paper strong { margin: 9px 0; letter-spacing: 2.5px; }
  .auth-card { padding: 25px 21px; border-radius: 16px; }
  .auth-logo { margin-bottom: 24px; }
  .auth-card h2 { font-size: 24px; }
  .auth-note, .auth-foot { font-size: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .auth-brand, .auth-card, .auth-brand::before, .auth-brand::after, .art-photo, .art-paper, .auth-art::after { animation: none !important; }
  .auth-card, .auth-brand .brand-mark, .auth-card input, .auth-card button, .auth-card a { transition: none !important; }
}
