/* ============================================================================
   login.css — Halaman Login CMH Financial
   Kartu 2 kolom: brand (fleksibel) + form (fixed 420px). Aksen teal brand.
   ============================================================================ */
:root{
	/* palet brand (diturunkan dari ikon logo) */
	--brand:#1690a3;
	--brand-dark:#0f7387;
	--brand-deep:#0b5f76;
	--brand-rgb:22,144,163;

	--ink:#12202b;
	--muted:#6b7c88;
	--line:#dbe4e7;
	--stage:#eaf1f3;          /* base-200: warna dasar "panggung" */
	--radius:24px;

	--shadow-focus:0 0 0 4px rgba(var(--brand-rgb),.16);

	--font-heading:"Plus Jakarta Sans","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
	--font-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}

*{ box-sizing:border-box; }

html,body{ height:100%; }

/* =======================================================================
   PANGGUNG (latar halaman) — kartu putih butuh latar bertekstur agar
   shadow-nya terbaca. Lapisan: warna dasar → aurora → grid → noise.
   ======================================================================= */
body{
	position:relative;
	z-index:0;
	margin:0;
	min-height:100vh;
	min-height:100dvh;
	display:flex;
	align-items:center;
	justify-content:center;
	padding:16px;
	font-family:var(--font-body);
	color:var(--ink);
	background-color:var(--stage);
	/* fallback (browser tanpa color-mix) */
	background-image:
		radial-gradient(ellipse 120% 90% at 50% 45%, rgba(255,255,255,.6), transparent 70%),
		radial-gradient(760px 620px at 6% 2%, rgba(22,144,163,.26), transparent 65%),
		radial-gradient(680px 560px at 96% 96%, rgba(78,190,205,.22), transparent 62%),
		radial-gradient(620px 520px at 94% 4%, rgba(11,95,118,.14), transparent 60%);
	background-image:
		radial-gradient(ellipse 120% 90% at 50% 45%, rgba(255,255,255,.6), transparent 70%),
		radial-gradient(760px 620px at 6% 2%, color-mix(in oklab, var(--brand) 26%, transparent), transparent 65%),
		radial-gradient(680px 560px at 96% 96%, color-mix(in oklab, var(--brand) 22%, white), transparent 62%),
		radial-gradient(620px 520px at 94% 4%, color-mix(in oklab, var(--brand-deep) 14%, transparent), transparent 60%);
	background-attachment:fixed;
	overflow:hidden;
}
/* grid garis halus, memudar ke tepi */
body::before{
	content:"";
	position:fixed;
	inset:0;
	z-index:-1;
	pointer-events:none;
	background-image:
		linear-gradient(to right, rgba(22,144,163,.1) 1px, transparent 1px),
		linear-gradient(to bottom, rgba(22,144,163,.1) 1px, transparent 1px);
	background-size:34px 34px;
	-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 45%, #000 30%, transparent 95%);
	        mask-image:radial-gradient(ellipse 70% 60% at 50% 45%, #000 30%, transparent 95%);
}
/* noise tipis supaya gradien tidak terasa "plastik" */
body::after{
	content:"";
	position:fixed;
	inset:0;
	z-index:-1;
	pointer-events:none;
	opacity:.035;
	background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ======================= KARTU UTAMA =======================
   Grid 50/50 (brand | form) — proporsi seragam dengan login lab-sync. */
.auth-card{
	position:relative;
	z-index:1;
	width:100%;
	max-width:1024px;
	display:grid;
	grid-template-columns:1fr 1fr;
	min-height:42rem;   /* 672px — tinggi terpakai kartu login lab-sync */
	background:#fff;
	border:1px solid rgba(203,217,221,.6);
	border-radius:var(--radius);
	overflow:hidden;
	box-shadow:0 28px 70px -20px rgba(11,95,118,.38),
	           0 8px 24px -12px rgba(11,95,118,.2);
	box-shadow:0 28px 70px -20px color-mix(in oklab, var(--brand-deep) 38%, transparent),
	           0 8px 24px -12px color-mix(in oklab, var(--brand-deep) 20%, transparent);
	animation:cardIn .7s cubic-bezier(.2,.8,.25,1) both;
}
@keyframes cardIn{
	from{ opacity:0; transform:translateY(28px) scale(.98); }
	to{ opacity:1; transform:translateY(0) scale(1); }
}

/* ======================= PANEL BRAND (kiri) ======================= */
.auth-brand{
	position:relative;
	display:flex;
	flex-direction:column;
	padding:32px;
	overflow:hidden;
	color:#fff;
	background:
		radial-gradient(rgba(255,255,255,.06) 1px, transparent 1px) 0 0/24px 24px,
		linear-gradient(145deg,var(--brand) 0%,var(--brand-dark) 46%,var(--brand-deep) 100%);
}
/* sorotan lembut agar gradien tidak terasa rata */
.auth-brand::after{
	content:"";
	position:absolute; inset:0;
	background:radial-gradient(420px 420px at 72% 22%,rgba(255,255,255,.1),transparent 70%);
	pointer-events:none;
}
.auth-brand > *{ position:relative; z-index:1; }

.auth-brand__logo{
	display:block;
	align-self:flex-start;   /* wajib: img di flex-column ikut melar & gepeng */
	height:48px;
	width:auto;
	max-width:100%;
	object-fit:contain;
	filter:drop-shadow(0 12px 24px rgba(0,0,0,.22));
}
/* ilustrasi (mengisi ruang tengah) */
.auth-brand__art{
	flex:1;
	display:flex;
	align-items:center;
	justify-content:center;
	padding:24px 0;
	min-height:0;
}
/* ukuran ilustrasi dipatok (bukan melar) supaya tinggi kartu stabil — sama
   seperti lab-sync: max-w-xs, naik ke max-w-sm di ≥1280px. */
.auth-brand__art img{
	width:100%;
	max-width:400px;
	height:auto;
	user-select:none;
}

.auth-brand__title{
	margin:0 0 8px;
	font-family:var(--font-heading);
	font-size:24px;
	font-weight:800;
	letter-spacing:-.3px;
	color:#fff;
}
.auth-brand__desc{
	margin:0 0 20px;
	max-width:42ch;
	font-size:13.5px;
	line-height:1.6;
	color:rgba(255,255,255,.75);
}
.auth-brand__chips{
	display:flex;
	flex-wrap:wrap;
	gap:8px;
	list-style:none;
	margin:0;
	padding:0;
}
.auth-brand__chips li{
	display:flex;
	align-items:center;
	gap:7px;
	padding:6px 12px;
	font-size:12.5px;
	color:rgba(255,255,255,.92);
	background:rgba(255,255,255,.12);
	border:1px solid rgba(255,255,255,.18);
	border-radius:999px;
}
.auth-brand__chips svg{ width:14px; height:14px; flex:0 0 auto; }

/* ======================= PANEL FORM (kanan) ======================= */
.auth-form{
	display:flex;
	flex-direction:column;
	padding:40px;
	background:#fff;
}
/* form terpusat vertikal; footer tetap menempel di bawah */
.auth-form__inner{
	flex:1;
	display:flex;
	flex-direction:column;
	justify-content:center;
	width:100%;
	max-width:448px;     /* lebar isi form disamakan (max-w-md lab-sync) */
	margin-inline:auto;
}
/* logo versi warna: hanya muncul saat panel brand disembunyikan (mobile).
   align-self wajib: tanpa itu img ter-stretch selebar kolom flex → gambar gepeng. */
.auth-form__logo{
	display:none;
	align-self:flex-start;
	height:48px;
	width:auto;
	margin-bottom:28px;
}

.auth-form__head h1{
	margin:0 0 6px;
	font-family:var(--font-heading);
	font-size:30px;
	font-weight:800;
	letter-spacing:-.5px;
	line-height:1.15;
}
.auth-form__head p{
	margin:0 0 24px;
	font-size:14px;
	color:var(--muted);
}

/* alert error — ringkas */
.auth-alert{
	display:flex;
	align-items:flex-start;
	gap:8px;
	margin-bottom:16px;
	padding:10px 12px;
	font-size:14px;
	line-height:1.45;
	color:#b42318;
	background:#fef3f2;
	border:1px solid #fecdc9;
	border-radius:10px;
}
.auth-alert svg{ width:16px; height:16px; flex:0 0 auto; margin-top:2px; }

/* ======================= KONTROL FORM ======================= */
.field + .field{ margin-top:18px; }

.field label{
	display:block;
	margin-bottom:8px;
	font-size:12px;
	font-weight:700;
	text-transform:uppercase;
	letter-spacing:.05em;
	color:rgba(107,124,136,.9);
}

.field__wrap{ position:relative; }

.field__icon{
	position:absolute;
	left:14px;
	top:50%;
	transform:translateY(-50%);
	width:16px;
	height:16px;
	color:#93a3ab;
	pointer-events:none;
	transition:color .2s;
}
/* ikon ikut brand saat ada fokus di dalam grup (padanan group-focus-within) */
.field__wrap:focus-within .field__icon{ color:var(--brand); }

.field__input{
	width:100%;
	height:44px;
	padding:0 14px 0 40px;
	font-family:inherit;
	font-size:15px;
	color:var(--ink);
	background:#fff;
	border:1.5px solid var(--line);
	border-radius:12px;
	outline:none;
	box-shadow:0 1px 2px rgba(16,40,50,.05);
	transition:border-color .18s, box-shadow .18s;
}
.field__input--pwd{ padding-right:44px; }
.field__input::placeholder{ color:#9aabb2; }
.field__input:hover:not(:focus){
	border-color:rgba(22,144,163,.42);
	border-color:color-mix(in oklab, var(--brand) 32%, var(--line));
}
/* focus ring wajib terlihat (WCAG 2.4.7) */
.field__input:focus{
	border-color:var(--brand);
	box-shadow:var(--shadow-focus), 0 0 18px -6px rgba(var(--brand-rgb),.45);
}

.field__toggle{
	position:absolute;
	right:4px;
	top:50%;
	transform:translateY(-50%);
	width:40px;
	height:40px;
	display:grid;
	place-items:center;
	border:0;
	background:transparent;
	color:#93a3ab;
	cursor:pointer;
	border-radius:8px;
	transition:color .2s, background .2s;
}
.field__toggle:hover{ color:var(--brand); background:rgba(var(--brand-rgb),.09); }
.field__toggle:focus-visible{ outline:none; box-shadow:var(--shadow-focus); color:var(--brand); }

/* checkbox "Ingat saya" */
.field-remember{
	display:flex;
	align-items:center;
	gap:10px;
	margin-top:16px;
	font-size:14px;
	color:#33454f;
	cursor:pointer;
	user-select:none;
	width:fit-content;
}
.field-remember input{
	width:16px;
	height:16px;
	margin:0;
	accent-color:var(--brand);
	cursor:pointer;
}
.field-remember input:focus-visible{ outline:2px solid var(--brand); outline-offset:2px; }

/* tombol submit */
.btn-login{
	width:100%;
	height:44px;
	margin-top:12px;
	display:flex;
	align-items:center;
	justify-content:center;
	gap:8px;
	font-family:inherit;
	font-size:14px;
	font-weight:600;
	letter-spacing:.02em;
	color:#fff;
	border:0;
	border-radius:12px;
	cursor:pointer;
	background:linear-gradient(180deg,#31a2b3 0%,var(--brand-dark) 100%);
	background:linear-gradient(180deg,color-mix(in oklab, var(--brand) 90%, white) 0%,var(--brand-dark) 100%);
	box-shadow:0 12px 24px -14px rgba(var(--brand-rgb),.75);
	transition:transform .15s, box-shadow .2s, filter .2s;
}
.btn-login:hover{ transform:translateY(-1px); filter:brightness(1.05); box-shadow:0 16px 28px -14px rgba(var(--brand-rgb),.85); }
.btn-login:active{ transform:translateY(0); filter:brightness(1); }
.btn-login:focus-visible{ outline:none; box-shadow:var(--shadow-focus); }
.btn-login svg{ transition:transform .2s; }
.btn-login:hover svg{ transform:translateX(3px); }
/* state loading: warna teks DIKUNCI agar tetap terbaca di atas gradien */
.btn-login:disabled,
.btn-login.is-loading{
	color:#fff;
	cursor:progress;
	opacity:.85;
	transform:none;
	filter:none;
}
.btn-login .spinner{
	width:16px;
	height:16px;
	border:2px solid rgba(255,255,255,.4);
	border-top-color:#fff;
	border-radius:50%;
	animation:spin .7s linear infinite;
}
@keyframes spin{ to{ transform:rotate(360deg); } }

.auth-form__by{
	display:flex;
	align-items:center;
	justify-content:center;
	gap:8px;
	margin:28px 0 0;
	color:#9aabb2;
	font-size:11px;
	letter-spacing:.02em;
	text-transform:uppercase;
}
.auth-form__by img{
	height:36px;
	width:auto;
}

.auth-form__foot{
	margin:10px 0 0;
	text-align:center;
	font-size:12px;
	color:#9aabb2;
}

/* ======================= RESPONSIF =======================
   <1024px: panel brand disembunyikan, kartu jadi 1 kolom, logo warna muncul.
   Ambang mengikuti lab-sync (lg): di bawah itu kolom 50/50 jadi terlalu sempit. */
@media (min-width:1280px){
	.auth-brand{ padding:40px; }
	.auth-brand__logo{ height:56px; }
	.auth-brand__art img{ max-width:480px; }
}
@media (max-width:1023px){
	.auth-card{
		grid-template-columns:1fr;
		min-height:0;
		max-width:440px;
	}
	.auth-brand{ display:none; }
	.auth-form__logo{ display:block; }
	.auth-form{ padding:32px 28px; }
}
@media (max-width:420px){
	body{ padding:12px; }
	.auth-form{ padding:28px 22px; }
	.auth-form__head h1{ font-size:26px; }
}

@media (prefers-reduced-motion:reduce){
	.auth-card{ animation:none; }
	.btn-login:hover{ transform:none; }
	.btn-login .spinner{ animation-duration:2s; }
}
