/* Latest design kit: fa- namespace; rem units. */

.fa-auth-page{background:#fff}.fa-auth-layout{display:grid;grid-template-columns:1fr 1fr;min-height:100svh}.fa-auth-brand-panel{position:relative;isolation:isolate;overflow:hidden;background:var(--ink);color:white;padding:3rem 3.75rem;display:flex;flex-direction:column;justify-content:space-between;min-height:100svh}.fa-auth-logo{width:10.9375rem;display:block}.fa-auth-logo img{display:block;width:100%;height:auto;filter:brightness(0) invert(1)}.fa-brand-message{padding:5rem 0;position:relative}.fa-brand-message h2{font-size:clamp(2.5rem,4.4vw,4.375rem);font-weight:800;line-height:1.2;letter-spacing:-.055em;margin:0 0 1.875rem}.fa-brand-message h2 span{color:var(--brand)}.fa-brand-message p{font-size:1.0625rem;line-height:1.9;color:#bbbcc6}.fa-auth-connection{display:flex;gap:1rem;align-items:center;margin-top:3.125rem;color:#c5c5cd;font:0.8125rem Consolas,monospace}.fa-auth-connection i{width:2.1875rem;height:0.0625rem;background:#ffffff30}.fa-auth-connection strong{border:0.0625rem solid #e7483050;border-radius:0.5rem;padding:0.5625rem 0.875rem;color:var(--brand);background:#e748300a}.fa-brand-bottom{display:flex;justify-content:space-between;gap:1.25rem;flex-wrap:wrap;color:#888b98;font-size:0.6875rem}.fa-auth-glow{position:absolute;inset:0;z-index:-1;pointer-events:none}.fa-auth-glow:before{content:"";position:absolute;inset:15% -60% -35%;background:radial-gradient(ellipse at 40% 65%,#e7483055,transparent 45%),radial-gradient(ellipse at 75% 60%,#e7483030,transparent 35%);filter:blur(4.375rem);animation:auth-drift 18s ease-in-out infinite alternate}@keyframes auth-drift{from{transform:translate(-4%,8%) rotate(-7deg);opacity:.6}to{transform:translate(5%,-8%) rotate(6deg);opacity:1}}.fa-auth-form-panel{padding:2.625rem 3.75rem 1.75rem;display:flex;flex-direction:column;min-width:0}.fa-auth-top{display:flex;justify-content:flex-end;align-items:center;gap:1.5625rem}.fa-auth-top>a:last-child{font-size:0.8125rem;color:var(--muted)}.fa-mobile-auth-logo{display:none}.fa-auth-form-wrap{width:100%;max-width:26.25rem;margin:auto;padding:4.0625rem 0 3.125rem}.fa-auth-form-wrap h1{font-size:2.25rem;line-height:1.3;letter-spacing:-.05em;margin:0 0 0.9375rem}.fa-auth-intro{color:var(--muted);font-size:1rem;margin:0 0 2rem;line-height:1.8}.fa-google-login{display:flex;align-items:center;justify-content:center;gap:0.8125rem;border:0.0625rem solid var(--line);border-radius:0.625rem;padding:0.875rem 1.125rem;font-size:0.875rem;font-weight:650;position:relative;transition:background .2s}.fa-google-login:hover{background:var(--surface)}.fa-google-symbol{font:bold 1.1875rem Arial;color:var(--ink)}.fa-external-symbol{position:absolute;right:1.125rem;color:#9b9ba4}.fa-auth-divider{display:flex;align-items:center;gap:1rem;font-size:0.75rem;color:#93939d;margin:1.75rem 0}.fa-auth-divider:before,.fa-auth-divider:after{content:"";height:0.0625rem;flex:1;background:var(--line)}.fa-field{margin-bottom:1.125rem}.fa-field label{display:block;font-size:0.875rem;font-weight:650;margin-bottom:0.5rem}.fa-field input{display:block;width:100%;min-height:3.25rem;border:0.0625rem solid #dcdce2;border-radius:0.625rem;padding:0.8125rem 0.9375rem;font:0.9375rem var(--font-body);color:var(--ink);background:#fff;transition:border-color .2s,box-shadow .2s}.fa-field input::placeholder{color:#a2a2ac}.fa-field input:focus{outline:0;border-color:var(--ink);box-shadow:0 0 0 0.1875rem #0f101209}.fa-field input[aria-invalid=true]{border-color:var(--brand)}.fa-password-wrap{position:relative}.fa-password-wrap input{padding-right:4.125rem}.fa-password-wrap button{position:absolute;right:0.4375rem;top:0.4375rem;height:2.375rem;padding:0 0.625rem;border:0;background:transparent;border-radius:0.3125rem;font-size:0.75rem;color:var(--muted)}.fa-field-error{font-size:0.75rem;color:#b52f1d;line-height:1.6;margin:0.375rem 0 0}.fa-field-error:empty{display:none}.fa-password-help{text-align:right;margin:0 0 1.5625rem;font-size:0.8125rem;color:var(--muted)}.fa-password-help a:hover,.fa-signup-prompt a:hover{color:var(--brand)}.fa-login-submit{width:100%;justify-content:space-between;padding:0.9375rem 1.25rem}.fa-signup-prompt{text-align:center;color:var(--muted);font-size:0.875rem;margin:1.5625rem 0 0}.fa-signup-prompt a{font-weight:700;color:var(--ink);margin-left:0.5rem}.fa-preview-notice{border-top:0.0625rem solid var(--line);margin-top:1.875rem;padding-top:1.125rem;font-size:0.75rem;line-height:1.8;color:#8a8a94}.fa-preview-notice a{text-decoration:underline;text-underline-offset:0.1875rem}.fa-login-feedback{background:var(--surface);padding:0.875rem 1rem;border-radius:0.5625rem;font-size:0.8125rem;color:var(--muted);margin-top:0.9375rem}.fa-auth-legal{display:flex;justify-content:center;gap:1rem;font-size:0.75rem;color:#898994}.fa-auth-legal a:hover{color:var(--ink)}@media(max-width:68.75rem){.fa-auth-brand-panel{padding:2.5rem 2.1875rem}.fa-auth-form-panel{padding:2.1875rem}.fa-brand-message h2{font-size:2.8125rem}.fa-auth-form-wrap h1{font-size:1.9375rem}}@media(max-width:47.5rem){.fa-auth-layout{display:block}.fa-auth-brand-panel{display:none}.fa-auth-form-panel{min-height:100svh;padding:1.5625rem 1.5rem}.fa-mobile-auth-logo{display:block;width:7.8125rem}.fa-mobile-auth-logo img{display:block;width:100%;height:auto}.fa-auth-top{justify-content:space-between}.fa-auth-top>a:last-child{font-size:0.75rem}.fa-auth-form-wrap{padding:3.75rem 0 2.8125rem;max-width:26.25rem}.fa-auth-form-wrap h1{font-size:1.9375rem}.fa-auth-legal{padding-top:0.625rem}}@media(prefers-reduced-motion:reduce){.fa-auth-glow:before{animation:none}.fa-field input,.fa-google-login{transition:none}}

/* Production login uses real GIS and existing authentication handlers. */
.fa-auth-page,
.fa-auth-page *,
.fa-auth-page *::before,
.fa-auth-page *::after { box-sizing:border-box; }
.fa-auth-page { color:var(--ink);font-family:var(--font-body); }
.fa-auth-page a { color:inherit;text-decoration:none; }
.fa-auth-page a:hover { color:var(--brand); }
.fa-auth-form-wrap h1 { font-weight:800; }
.fa-auth-page #googleButtonArea { min-height:2.75rem;display:flex;justify-content:center; }
.fa-auth-page .fa-google-login { width:100%;color:var(--ink);background:#fff;cursor:pointer; }
.fa-auth-page #loginAlert { font-size:.85rem;border-radius:var(--radius); }
.fa-auth-page .fa-login-submit { justify-content:center; }
.fa-auth-page :is(a,button):focus-visible { outline:.1875rem solid var(--brand);outline-offset:.1875rem; }

/* Auth forms: login, password reset, signup이 필드와 버튼 스타일을 공유한다. */
.fa-reset-form-wrap { max-width:28rem; }
.fa-auth-inline-row {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:.5rem;
  align-items:stretch;
}
.fa-auth-inline-row .fa-auth-inline-button {
  min-width:7.5rem;
  border:.0625rem solid var(--border-soft);
  border-radius:var(--radius);
  padding:.75rem 1rem;
  background:#fff;
  color:var(--ink);
  font:700 .8125rem var(--font-body);
  white-space:nowrap;
  transition:border-color .2s,background-color .2s;
}
.fa-auth-inline-row .fa-auth-inline-button:hover:not(:disabled) {
  border-color:var(--ink);
  background:var(--surface);
}
.fa-auth-inline-row .fa-auth-inline-button:disabled {
  cursor:not-allowed;
  color:#a0a0a8;
  background:var(--surface);
}
.fa-auth-help {
  margin:.5rem 0 0;
  color:var(--muted);
  font-size:.8125rem;
  line-height:1.65;
}
.fa-auth-alert {
  margin:0 0 1rem;
  padding:.8125rem .9375rem;
  border:.0625rem solid var(--line);
  border-radius:var(--radius);
  background:var(--surface);
  color:var(--muted);
  font-size:.8125rem;
  line-height:1.6;
}
.fa-auth-alert[data-type="success"] {
  border-color:#cce5d4;
  background:#f1faf4;
  color:#216b3a;
}
.fa-auth-alert[data-type="error"] {
  border-color:#f0cbc5;
  background:var(--brand-soft);
  color:#a72f1f;
}
.fa-reset-back {
  margin:1.5rem 0 0;
  text-align:center;
  color:var(--muted);
  font-size:.875rem;
}
.fa-reset-back a {
  color:var(--ink);
  font-weight:700;
}
.fa-reset-email-summary {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  margin-bottom:1.5rem;
  padding:.875rem 1rem;
  border-radius:var(--radius);
  background:var(--surface);
  font-size:.8125rem;
  color:var(--muted);
}
.fa-reset-email-summary strong {
  color:var(--ink);
  font-weight:700;
  overflow-wrap:anywhere;
}
.fa-reset-email-summary button {
  flex:0 0 auto;
  border:0;
  padding:0;
  background:transparent;
  color:var(--muted);
  font:600 .75rem var(--font-body);
  text-decoration:underline;
  text-underline-offset:.1875rem;
}
.fa-reset-success { padding:1rem 0; }
.fa-reset-success-mark {
  display:grid;
  place-items:center;
  width:3.5rem;
  height:3.5rem;
  margin-bottom:1.5rem;
  border-radius:50%;
  background:var(--ink);
  color:#fff;
  font-size:1.375rem;
}
.fa-reset-success h2 {
  margin:0 0 .75rem;
  font-size:1.75rem;
  letter-spacing:-.04em;
}
.fa-reset-success p {
  margin:0 0 2rem;
  color:var(--muted);
  line-height:1.75;
}
@media(max-width:35rem) {
  .fa-auth-inline-row { grid-template-columns:1fr; }
  .fa-auth-inline-row .fa-auth-inline-button { min-height:3rem; }
  .fa-reset-form-wrap { padding-top:3rem; }
}
@media(prefers-reduced-motion:reduce) {
  .fa-auth-inline-row .fa-auth-inline-button { transition:none; }
}

/* Signup: full-width standalone shell, without navbar, footer, or brand panel. */
.fa-signup-layout {
  min-height:100svh;
  padding:2.625rem 3.75rem 4.5rem;
}
.fa-signup-top {
  justify-content:space-between;
}
.fa-signup-logo {
  display:block;
  width:10.9375rem;
}
.fa-signup-logo img {
  display:block;
  width:100%;
  height:auto;
}
.fa-signup-form-wrap {
  width:100%;
  max-width:35rem;
  margin:5rem auto 0;
}
.fa-signup-header { margin-bottom:2.25rem; }
.fa-signup-header h1 {
  margin:0 0 .9375rem;
  font-size:2.25rem;
  font-weight:800;
  line-height:1.3;
  letter-spacing:-.05em;
}
.fa-signup-header p {
  margin:0;
  color:var(--muted);
  font-size:1rem;
  line-height:1.8;
}
.fa-signup-section {
  margin-top:2.25rem;
  padding-top:2.25rem;
  border-top:.0625rem solid var(--line);
}
.fa-signup-section-title {
  margin:0 0 1.25rem;
  color:var(--muted);
  font-size:.8125rem;
  font-weight:750;
  letter-spacing:.02em;
}
.fa-signup-agreements {
  margin:0;
  padding:0;
  border-top:.0625rem solid var(--line);
  list-style:none;
}
.fa-signup-agreement {
  display:grid;
  grid-template-columns:1.25rem minmax(0,1fr);
  gap:.75rem;
  padding:1rem 0;
  border-bottom:.0625rem solid var(--line);
}
.fa-signup-agreement input {
  width:1.125rem;
  height:1.125rem;
  margin:.125rem 0 0;
  accent-color:var(--ink);
}
.fa-signup-agreement label {
  color:var(--muted);
  font-size:.8125rem;
  line-height:1.7;
}
.fa-signup-agreement strong {
  color:var(--ink);
  font-weight:750;
}
.fa-signup-agreement a {
  color:var(--ink);
  font-weight:700;
  text-decoration:underline;
  text-underline-offset:.1875rem;
}
.fa-signup-submit { margin-top:2rem; }
.fa-signup-success { padding:1rem 0; }
.fa-signup-success-mark {
  display:grid;
  place-items:center;
  width:3.5rem;
  height:3.5rem;
  margin-bottom:1.5rem;
  border-radius:50%;
  background:var(--ink);
  color:#fff;
  font-size:1.375rem;
}
.fa-signup-success h2 {
  margin:0 0 .75rem;
  font-size:2rem;
  font-weight:800;
  letter-spacing:-.045em;
}
.fa-signup-success p {
  margin:0 0 2rem;
  color:var(--muted);
  line-height:1.75;
}
@media(max-width:47.5rem) {
  .fa-signup-layout { padding:1.5625rem 1.5rem 3.5rem; }
  .fa-signup-logo { width:7.8125rem; }
  .fa-signup-form-wrap { margin-top:3.75rem; }
  .fa-signup-header h1 { font-size:1.9375rem; }
}

/* FlameBox registration: shared auth fields and buttons with a compact standalone card. */
.fa-registration-page { min-width:20rem;min-height:100svh; }
.fa-registration-shell {
  display:flex;
  min-height:100svh;
  align-items:center;
  justify-content:center;
  padding:3rem 1.5rem;
}
.fa-registration-card {
  width:100%;
  max-width:28.75rem;
  padding:2.5rem;
  border:.0625rem solid var(--line);
  border-radius:var(--radius-lg);
  background:#fff;
  box-shadow:0 1.5rem 4rem rgba(15,16,18,.06);
}
.fa-registration-logo {
  display:block;
  width:15rem;
  margin:0 auto 2rem;
}
.fa-registration-logo img { display:block;width:100%;height:auto; }
.fa-registration-card #regHeader { text-align:center; }
.fa-registration-card #regHeader h1 {
  margin:0 0 .625rem;
  font-size:1.875rem;
  font-weight:800;
  line-height:1.25;
  letter-spacing:-.045em;
}
.fa-registration-page #googleButtonArea { overflow:hidden; }
.fa-registration-hint {
  margin:.75rem 0 0;
  color:#8a8a94;
  font-size:.75rem;
  line-height:1.55;
  text-align:center;
}
.fa-registration-card .fa-login-submit { margin-top:1rem; }
.fa-registration-details {
  margin-top:1.25rem;
  color:var(--muted);
  font-size:.75rem;
}
.fa-registration-details summary {
  width:max-content;
  margin:0 auto;
  padding:.25rem;
  cursor:pointer;
  text-align:center;
}
.fa-registration-details summary::marker { color:#8a8a94; }
.fa-registration-details summary:hover { color:var(--ink); }
.fa-registration-id {
  margin-top:.875rem;
  padding:.875rem 1rem;
  overflow-wrap:anywhere;
  border-radius:var(--radius);
  color:var(--ink);
  background:var(--surface);
  font:.75rem/1.6 var(--font-mono);
}
.fa-registration-page :is(input,a,button,summary):focus-visible {
  outline:.1875rem solid var(--brand);
  outline-offset:.1875rem;
}

/* Existing post-auth state remains functionally unchanged until its redesign pass. */
.fa-registration-page .reg-logo { margin-bottom:1.125rem;font-size:1.05rem;font-weight:900;color:var(--ink); }
.fa-registration-page .reg-appid-hint { color:var(--muted);font-size:.78rem; }
.fa-registration-page .reg-section-title { margin-bottom:.5rem;color:var(--ink);font-size:.88rem;font-weight:700; }
.fa-registration-page .reg-wait-icon { display:flex;width:4rem;height:4rem;align-items:center;justify-content:center;margin:0 auto 1rem;border-radius:50%;background:var(--brand-soft);font-size:1.6rem; }
.fa-registration-page .reg-spinner { width:1.625rem;height:1.625rem;border:.1875rem solid rgba(231,72,48,.22);border-top-color:var(--brand);border-radius:50%;animation:reg-spin .9s linear infinite; }
@keyframes reg-spin { to { transform:rotate(360deg); } }
.fa-registration-page .reg-done-icon { color:var(--brand);background:var(--brand-soft); }
.fa-registration-page .reg-code-tabs { overflow:hidden;border:.0625rem solid var(--line);border-radius:var(--radius); }
.fa-registration-page .reg-os-tabs { display:flex;background:#e6e6e6; }
.fa-registration-page .reg-os-tab { flex:1;padding:.55rem 0;border:0;background:transparent;color:#777;font-size:.85rem;font-weight:600;cursor:pointer;transition:background .15s,color .15s; }
.fa-registration-page .reg-os-tab.active { color:var(--ink);background:var(--surface); }
.fa-registration-page .reg-cmd-box { display:flex;min-height:4rem;align-items:flex-start;padding:.875rem 1rem;color:#333;background:var(--surface);font:.88rem var(--font-mono); }
.fa-registration-page .reg-cmd-prompt { margin-right:.4em;color:var(--brand); }

@media(max-width:32rem) {
  .fa-registration-shell { align-items:flex-start;padding:1.5rem 1rem; }
  .fa-registration-card { padding:2rem 1.5rem;border-radius:1rem;box-shadow:none; }
  .fa-registration-logo { width:8.5rem; }
  .fa-registration-card #regHeader h1 { font-size:1.75rem; }
}
