/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[2]!../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[3]!./components/ui/Input/Input.module.css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.Input_field__1Pcf6 {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.Input_labelRow__6rah2 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 5px;
}

.Input_label__CR3VX {
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--gray-700);
  line-height: 1;
}

.Input_labelAction__lej0P {
  font-size: 0.75rem;
  color: var(--brand-600);
  text-decoration: none;
  transition: color 0.12s ease;
}

.Input_labelAction__lej0P:hover {
  color: var(--brand-700);
}

.Input_input__DfZui {
  height: 34px;
  padding: 0 10px;
  width: 100%;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  font-family: inherit;
  font-size: 0.8125rem;
  color: var(--gray-900);
  background: var(--surface);
  outline: none;
  transition: border-color 0.12s ease;
}

.Input_input__DfZui::placeholder {
  color: var(--gray-400);
}

.Input_input__DfZui:hover:not(:focus):not(.Input_error__cpLMX) {
  border-color: var(--gray-300);
}

.Input_input__DfZui:focus:not(.Input_error__cpLMX) {
  border-color: var(--brand-500);
  box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.10);
}

.Input_error__cpLMX {
  border-color: var(--error-border);
}

.Input_error__cpLMX:focus {
  border-color: var(--error);
  box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.08);
}

.Input_hint__s2k4R {
  margin-top: 6px;
}

.Input_errorMessage__DP_8n {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-top: 4px;
  font-size: 0.75rem;
  color: var(--error);
  line-height: 1.3;
}

.Input_errorMessage__DP_8n svg {
  flex-shrink: 0;
}

/* ── Show/hide password toggle ── */
.Input_inputWrap__eawnk {
  position: relative;
  display: flex;
  align-items: center;
}

.Input_inputWrap__eawnk .Input_input__DfZui {
  padding-right: 36px;
}

.Input_eyeBtn__oVCGw {
  position: absolute;
  right: 0;
  top: 0;
  bottom: 0;
  width: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  cursor: pointer;
  color: var(--gray-400);
  transition: color 0.12s ease;
  padding: 0;
}

.Input_eyeBtn__oVCGw:hover {
  color: var(--gray-600);
}

@media (max-width: 768px) {
  .Input_input__DfZui {
    min-height: 44px;
    font-size: 1rem;
    padding: 0 12px;
  }

  .Input_inputWrap__eawnk .Input_input__DfZui {
    padding-right: 44px;
  }

  .Input_eyeBtn__oVCGw {
    width: 44px;
  }
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[2]!../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[3]!./components/ui/Button/Button.module.css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.Button_button__WQ3_h {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 32px;
  padding: 0 12px;
  border: none;
  border-radius: var(--radius-md);
  font-family: inherit;
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: -0.01em;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  white-space: nowrap;
  text-decoration: none;
  transition: background-color 0.12s ease, opacity 0.12s ease;
  outline: none;
  flex-shrink: 0;
}

.Button_button__WQ3_h:focus-visible {
  outline: 2px solid var(--brand-500);
  outline-offset: 2px;
}

.Button_button__WQ3_h:active:not(:disabled) {
  opacity: 0.85;
}

.Button_button__WQ3_h:disabled {
  opacity: 0.45;
  cursor: not-allowed;
  pointer-events: none;
}

.Button_fullWidth__I0BsA {
  width: 100%;
}

/* Primary */
.Button_primary___5QRF {
  background: var(--gray-900);
  color: #ffffff;
}

.Button_primary___5QRF:hover:not(:disabled) {
  background: var(--gray-800);
}

/* Secondary */
.Button_secondary__z8DZE {
  background: transparent;
  color: var(--gray-700);
  border: 1px solid var(--border);
}

.Button_secondary__z8DZE:hover:not(:disabled) {
  background: var(--gray-50);
  border-color: var(--gray-300);
}

/* Ghost */
.Button_ghost__9OlTm {
  background: transparent;
  color: var(--gray-600);
  padding: 0;
  height: auto;
}

.Button_ghost__9OlTm:hover:not(:disabled) {
  color: var(--gray-900);
}

.Button_ghost__9OlTm:focus-visible {
  outline: none;
  text-decoration: underline;
}

/* Mobile touch targets */
@media (max-width: 768px) {
  .Button_button__WQ3_h:not(.Button_ghost__9OlTm) {
    min-height: 44px;
    font-size: 0.9375rem;
    padding: 0 16px;
  }
}

/* Spinner */
.Button_spinner___jPhu {
  flex-shrink: 0;
  animation: Button_spin__Y6hGi 0.65s linear infinite;
}

@keyframes Button_spin__Y6hGi {
  to { transform: rotate(360deg); }
}

/* Arrow */
.Button_arrow__T0tx2 {
  flex-shrink: 0;
  transition: transform 0.12s ease;
}

.Button_button__WQ3_h:hover:not(:disabled) .Button_arrow__T0tx2 {
  transform: translateX(2px);
}

/*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[2]!../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[3]!./components/ui/Toast/Toast.module.css ***!
  \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.Toast_container__KfvnW {
  position: fixed;
  bottom: 24px;
  right: 24px;
  z-index: 9000;
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 340px;
  max-width: calc(100vw - 32px);
  pointer-events: none;
}

.Toast_toast__NvarH {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  border-radius: var(--radius-lg);
  border: 1px solid transparent;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.10), 0 1px 4px rgba(0, 0, 0, 0.06);
  pointer-events: all;
  animation: Toast_slideUp__mPywb 0.22s cubic-bezier(0.16, 1, 0.3, 1) both;
  will-change: transform, opacity;
}

.Toast_toast__NvarH.Toast_exiting__s7exy {
  animation: Toast_fadeOut__5GKN1 0.22s ease-out forwards;
}

/* Variant backgrounds */
.Toast_success__SwFdr {
  background: var(--success-bg);
  border-color: var(--success-border);
}
.Toast_error__XcBxw {
  background: var(--error-bg);
  border-color: var(--error-border);
}
.Toast_warning__YI5j3 {
  background: #fffbeb;
  border-color: #fcd34d;
}
.Toast_info__HTO15 {
  background: #f0f9ff;
  border-color: #bae6fd;
}

/* Icons */
.Toast_icon__ZU854 {
  flex-shrink: 0;
  margin-top: 1px;
}
.Toast_success__SwFdr .Toast_icon__ZU854 { color: var(--success); }
.Toast_error__XcBxw   .Toast_icon__ZU854 { color: var(--error); }
.Toast_warning__YI5j3 .Toast_icon__ZU854 { color: #d97706; }
.Toast_info__HTO15    .Toast_icon__ZU854 { color: var(--brand-500); }

/* Body */
.Toast_body__K6uIo {
  flex: 1 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.Toast_title__E5wO4 {
  font-size: 0.8125rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--text-primary);
}

.Toast_message__a8pmb {
  font-size: 0.8125rem;
  line-height: 1.4;
  color: var(--text-secondary);
}

.Toast_toast__NvarH.Toast_success__SwFdr .Toast_message__a8pmb,
.Toast_toast__NvarH.Toast_error__XcBxw .Toast_message__a8pmb,
.Toast_toast__NvarH.Toast_warning__YI5j3 .Toast_message__a8pmb,
.Toast_toast__NvarH.Toast_info__HTO15 .Toast_message__a8pmb {
  color: var(--text-primary);
}

/* Close button */
.Toast_close__UA2Rl {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border: none;
  background: transparent;
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  cursor: pointer;
  padding: 0;
  transition: background 0.12s, color 0.12s;
}

.Toast_close__UA2Rl:hover {
  background: rgba(0, 0, 0, 0.06);
  color: var(--text-primary);
}

/* Animations */
@keyframes Toast_slideUp__mPywb {
  from {
    opacity: 0;
    transform: translateY(12px) scale(0.97);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes Toast_fadeOut__5GKN1 {
  from {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
  to {
    opacity: 0;
    transform: translateY(4px) scale(0.97);
  }
}

@media (prefers-reduced-motion: reduce) {
  .Toast_toast__NvarH,
  .Toast_toast__NvarH.Toast_exiting__s7exy {
    animation: none;
  }
}

/* Mobile: bottom center, full width */
@media (max-width: 640px) {
  .Toast_container__KfvnW {
    right: 16px;
    left: 16px;
    bottom: 80px; /* above bottom nav */
    width: auto;
    max-width: none;
  }
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[2]!../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[3]!./components/logo.module.css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.logo_logo__8FrRD {
  display: inline-flex;
  align-items: center;
  gap: 0.5em;
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1;
  white-space: nowrap;
}

.logo_word__dUbqV {
  color: inherit;
}

/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[2]!../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[3]!./app/(auth)/auth.module.css ***!
  \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* ── Two-column shell ───────────────────────────────────────── */
.auth_shell__lu2p_ {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 100vh;
}

/* ── Left: brand panel ─────────────────────────────────────── */
.auth_panel__Hr1FP {
  position: relative;
  z-index: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 52px 48px;
  background-color: var(--brand-700);
  background-image: radial-gradient(rgba(255, 255, 255, 0.08) 1px, transparent 1px);
  background-size: 24px 24px;
}

/* Large echo of the logo's interlocking rings, bled off the top-right corner */
.auth_panelRings__i3vhB {
  position: absolute;
  z-index: -1;
  top: -70px;
  right: -90px;
  width: 300px;
  height: 300px;
  pointer-events: none;
}

.auth_panelRingA__MdzRd,
.auth_panelRingB__mlV2l {
  position: absolute;
  width: 230px;
  height: 230px;
  border-radius: 50%;
  border: 1.5px solid rgba(255, 255, 255, 0.09);
}

.auth_panelRingA__MdzRd { top: 0; left: 0; }
.auth_panelRingB__mlV2l { top: 58px; left: 100px; }

/* ── Right: form panel ─────────────────────────────────────── */
.auth_formSide__ZIj_l {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 48px 40px;
  background: var(--surface);
  border-left: 1px solid var(--gray-100);
}

.auth_formInner__HzZKd {
  width: 100%;
  max-width: 380px;
}

/* ── Brand mark (shared by both pages) ─────────────────────── */
.auth_brandRow__wTR4A {
  display: flex;
  align-items: center;
  gap: 10px;
}

/* ── Panel divider ─────────────────────────────────────────── */
.auth_panelDivider__6sD8k {
  height: 1px;
  background: rgba(255, 255, 255, 0.10);
}

/* ── Headline block ────────────────────────────────────────── */
.auth_panelContent__5AaNq {
  display: flex;
  flex-direction: column;
  gap: 28px;
}

.auth_panelTag__oo921 {
  font-size: 0.8125rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.52);
}

.auth_panelHeadline__kGInL {
  font-size: clamp(1.875rem, 3.2vw, 2.625rem);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.025em;
  color: #ffffff;
  text-wrap: balance;
}

.auth_panelSubline__U1Bl5 {
  font-size: 0.9375rem;
  color: rgba(255, 255, 255, 0.68);
  max-width: 310px;
  line-height: 1.65;
  text-wrap: pretty;
}

/* ── Feature list ──────────────────────────────────────────── */
.auth_featureList__8RU9I {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin: 0;
  padding: 0;
}

.auth_featureItem__LzY0b {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  opacity: 0;
  animation: auth_featureIn__w0_ct 0.5s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.auth_featureItem__LzY0b:nth-child(1) { animation-delay: 0.1s; }
.auth_featureItem__LzY0b:nth-child(2) { animation-delay: 0.18s; }
.auth_featureItem__LzY0b:nth-child(3) { animation-delay: 0.26s; }

@keyframes auth_featureIn__w0_ct {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .auth_featureItem__LzY0b {
    animation: none;
    opacity: 1;
  }
}

.auth_featureIcon__rfsqS {
  width: 34px;
  height: 34px;
  border-radius: 9px;
  background: rgba(255, 255, 255, 0.11);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.18);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
}

.auth_featureIcon__rfsqS svg {
  width: 15px;
  height: 15px;
  color: rgba(255, 255, 255, 0.88);
}

.auth_featureText__XafiU {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.auth_featureName__C4nzC {
  font-size: 0.875rem;
  font-weight: 600;
  color: #ffffff;
  line-height: 1.3;
}

.auth_featureDetail__H4anE {
  font-size: 0.8125rem;
  color: rgba(255, 255, 255, 0.60);
  line-height: 1.4;
}

/* ── Shared mobile logo (shown when brand panel is hidden) ─── */
.auth_mobileLogoWrap__EgA27 {
  display: none;
  margin-bottom: 32px;
  align-self: flex-start;
}

@media (max-width: 900px) {
  .auth_mobileLogoWrap__EgA27 {
    display: block;
  }
}

/* ── Form heading (right panel) ────────────────────────────── */
.auth_formHeading__QubO7 {
  margin-bottom: 32px;
}

.auth_formHeading__QubO7 h1 {
  font-size: 1.75rem;
  font-weight: 700;
  color: var(--gray-900);
  letter-spacing: -0.022em;
  line-height: 1.2;
  margin-bottom: 6px;
}

.auth_formHeading__QubO7 p {
  font-size: 0.9375rem;
  color: var(--text-secondary);
}

.auth_formDivider___JELf {
  height: 1px;
  background: var(--gray-100);
  margin-bottom: 28px;
}

.auth_form__D8pF_ {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.auth_serverError__E4rSB {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 12px 16px;
  border-radius: var(--radius-md);
  background: var(--error-bg);
  border: 1px solid var(--error-border);
  font-size: 0.875rem;
  color: var(--error);
  line-height: 1.4;
}

.auth_serverError__E4rSB svg {
  flex-shrink: 0;
}

.auth_formFooter__84wea {
  margin-top: 24px;
  text-align: center;
  font-size: 0.875rem;
  color: var(--text-secondary);
}

.auth_formFooter__84wea a {
  font-weight: 600;
}

/* ── Mobile ────────────────────────────────────────────────── */
@media (max-width: 900px) {
  .auth_shell__lu2p_ {
    grid-template-columns: 1fr;
  }

  .auth_panel__Hr1FP {
    display: none;
  }

  .auth_formSide__ZIj_l {
    min-height: 100svh;
    padding: 48px 32px;
    border-left: none;
    /* Stack mobile logo above the form */
    flex-direction: column;
    align-items: center;
    justify-content: safe center;
  }

  .auth_formInner__HzZKd {
    width: 100%;
  }
}

@media (max-width: 540px) {
  .auth_formSide__ZIj_l {
    padding: 36px 20px;
  }
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[2]!../../node_modules/.pnpm/next@14.2.29_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[7].use[3]!./app/(auth)/login/login.module.css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/* Login-specific overrides — layout lives in auth.module.css */

/* Error shown above the form (from OAuth redirect params) */
.login_topError__yIWXz {
  margin-bottom: 4px;
}

/* Google sign-in button */
.login_googleBtn__e3_nr {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  height: 42px;
  padding: 0 16px;
  border-radius: var(--radius-md);
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--gray-800);
  font-size: 0.9375rem;
  font-weight: 500;
  text-decoration: none;
  transition: background-color 0.12s ease, border-color 0.12s ease;
  margin-bottom: 4px;
}

.login_googleBtn__e3_nr:hover {
  background: var(--bg-subtle);
  border-color: var(--gray-300);
  color: var(--gray-900);
}

.login_googleBtn__e3_nr:focus-visible {
  outline: 2px solid var(--brand-500);
  outline-offset: 2px;
}

/* "or" divider */
.login_divider__igArU {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 4px 0;
  color: var(--gray-300);
  font-size: 0.75rem;
}

.login_divider__igArU::before,
.login_divider__igArU::after {
  content: "";
  flex: 1 1;
  height: 1px;
  background: var(--border);
}

/* Disabled / loading states */
.login_disabledNotice__uVAGd {
  font-size: 0.875rem;
  color: var(--gray-400);
  text-align: center;
  padding: 12px 0;
}

.login_loadingForm__K_LPA {
  height: 120px;
  border-radius: var(--radius-md);
  background: var(--gray-100);
  animation: login_pulse__IGxWB 1.6s ease-in-out infinite;
}

@keyframes login_pulse__IGxWB {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.45; }
}

@media (prefers-reduced-motion: reduce) {
  .login_loadingForm__K_LPA { animation: none; opacity: 0.6; }
}

@media (pointer: coarse) {
  .login_googleBtn__e3_nr { min-height: 44px; }
}

