/**
 * Optimus Engine Core — branded sign-in, registration, password and sign-up screens.
 *
 * Replaces WordPress's login.css on wp-login.php (its dependencies — buttons, forms, dashicons —
 * stay loaded) and styles wp-signup.php / wp-activate.php. Colors, radius and font come from CSS
 * custom properties printed by the Branding module (Brand::cssVars):
 *   --oc-primary(-600|-700|-50|-100) --oc-on-primary --oc-ring --oc-accent --oc-bg --oc-ink(-2)
 *   --oc-muted --oc-line(-2) --oc-surface --oc-field --oc-radius(-sm|-lg) --oc-font --oc-overlay --oc-photo
 * Layouts: body.oc-layout-split | oc-layout-centered | oc-layout-fullscreen. Screen: body.oc-screen-{login|register|…}.
 * Markup: .oc-auth > .oc-auth__panel + .oc-auth__main > .oc-auth__stage > #login (the card) + .oc-auth__foot
 */

/* ------------------------------------------------------------------ *
 * Base
 * ------------------------------------------------------------------ */

html { background: var(--oc-bg, #f4f6fb); }
body.oc-login {
	margin: 0; padding: 0; min-height: 100vh; min-width: 0; height: auto;
	background: var(--oc-bg, #f4f6fb); color: var(--oc-ink, #0f172a);
	font-family: var(--oc-font, system-ui, sans-serif); font-size: 15px; line-height: 1.5;
	-webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility;
}
body.oc-login *, body.oc-login *::before, body.oc-login *::after { box-sizing: border-box; }
body.oc-login h1, body.oc-login h2, body.oc-login h3, body.oc-login input, body.oc-login select, body.oc-login button, body.oc-login textarea { font-family: var(--oc-font); }
body.oc-login a { color: var(--oc-primary); text-decoration: none; transition: color .15s ease; }
body.oc-login a:hover { color: var(--oc-primary-700); text-decoration: underline; text-underline-offset: 3px; }
body.oc-login a:focus { outline: 0; box-shadow: none; }
body.oc-login a:focus-visible { outline: 2px solid var(--oc-primary); outline-offset: 2px; border-radius: 4px; }
body.oc-login p { margin: 0 0 16px; }
body.oc-login .screen-reader-text, body.oc-login .screen-reader-text span {
	border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal !important;
}
body.oc-login.no-js .hide-if-no-js, body.oc-login .hidden { display: none; }
body.oc-login input::-ms-reveal, body.oc-login .input::-ms-clear { display: none; }

/* ------------------------------------------------------------------ *
 * Shell
 * ------------------------------------------------------------------ */

.oc-auth { min-height: 100vh; display: grid; grid-template-columns: minmax(0, 1fr); }
.oc-auth__main { position: relative; display: flex; flex-direction: column; align-items: center; min-width: 0; padding: 40px 24px 24px; }
.oc-auth__stage { flex: 1 0 auto; width: 100%; max-width: 420px; display: flex; flex-direction: column; justify-content: center; padding: 24px 0; }
.oc-auth__foot {
	width: 100%; max-width: 920px; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 24px;
	padding-top: 16px; font-size: 13px; color: var(--oc-muted);
}
.oc-auth__foot nav { display: flex; flex-wrap: wrap; gap: 4px 18px; }
body.oc-login .oc-auth__foot a { color: var(--oc-muted); font-weight: 500; }
body.oc-login .oc-auth__foot a:hover { color: var(--oc-ink); }

/* Brand panel (split layout) */
.oc-auth__panel { display: none; }
.oc-layout-split .oc-auth { grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); }
.oc-layout-split .oc-auth__panel {
	display: block; position: sticky; top: 0; height: 100vh; overflow: hidden; color: #fff; isolation: isolate;
	background:
		radial-gradient(70% 60% at 88% 8%, var(--oc-accent) 0%, transparent 62%),
		radial-gradient(60% 55% at 0% 100%, var(--oc-primary) 0%, transparent 70%),
		linear-gradient(155deg, var(--oc-primary-700) 0%, #0b1530 78%);
}
.oc-layout-split .oc-auth__panel::before {
	/* Soft grid texture */
	content: ""; position: absolute; inset: 0; z-index: -1; opacity: .16;
	background-image: linear-gradient(rgba(255, 255, 255, .5) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .5) 1px, transparent 1px);
	background-size: 56px 56px;
	-webkit-mask-image: radial-gradient(80% 70% at 30% 40%, #000 0%, transparent 75%); mask-image: radial-gradient(80% 70% at 30% 40%, #000 0%, transparent 75%);
}
.oc-layout-split.oc-has-photo .oc-auth__panel { background: #0b1530 var(--oc-photo) center / cover no-repeat; }
.oc-layout-split.oc-has-photo .oc-auth__panel::before {
	opacity: 1; -webkit-mask-image: none; mask-image: none; background-size: auto;
	background-image: linear-gradient(180deg, rgba(2, 6, 23, calc(var(--oc-overlay) * .55)) 0%, rgba(2, 6, 23, calc(var(--oc-overlay) * .35)) 40%, rgba(2, 6, 23, calc(var(--oc-overlay) + .12)) 100%);
}
.oc-auth__panel-inner { height: 100%; display: flex; flex-direction: column; padding: clamp(32px, 4.5vw, 64px); }
.oc-auth__brand { display: inline-flex; align-self: flex-start; color: #fff !important; text-decoration: none !important; }
.oc-auth__brand .oc-logo { max-height: 44px; }
.oc-auth__brand--plain img.oc-logo { filter: brightness(0) invert(1); }
.oc-auth__brand .oc-logo__mark { background: rgba(255, 255, 255, .16); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .25); }
.oc-auth__brand .oc-logo__name { color: #fff; }
.oc-auth__pitch { margin-top: auto; max-width: 560px; padding-bottom: clamp(0px, 2vh, 24px); }
body.oc-login .oc-auth__headline { margin: 0 0 14px; font-size: clamp(28px, 2.7vw, 42px); line-height: 1.12; font-weight: 700; letter-spacing: -.025em; text-wrap: balance; text-shadow: 0 1px 24px rgba(2, 6, 23, .25); }
body.oc-login .oc-auth__sub { margin: 0; font-size: 17px; line-height: 1.55; color: rgba(255, 255, 255, .82); max-width: 460px; }

.oc-layout-split .oc-auth__main { background: var(--oc-surface); }
.oc-layout-split .oc-auth__stage { max-width: 400px; }
.oc-layout-centered .oc-auth__stage, .oc-layout-fullscreen .oc-auth__stage { max-width: 448px; }

/* Centered */
.oc-layout-centered .oc-auth {
	background:
		radial-gradient(640px 420px at 0% 0%, var(--oc-primary-100) 0%, transparent 70%),
		radial-gradient(560px 420px at 100% 100%, var(--oc-primary-50) 0%, transparent 70%),
		var(--oc-bg);
}

/* Fullscreen photo */
.oc-layout-fullscreen .oc-auth {
	position: relative; isolation: isolate;
	background:
		radial-gradient(60% 60% at 85% 10%, var(--oc-accent) 0%, transparent 60%),
		linear-gradient(155deg, var(--oc-primary-700) 0%, #0b1530 80%);
}
.oc-layout-fullscreen.oc-has-photo .oc-auth { background: #0b1530 var(--oc-photo) center / cover no-repeat fixed; }
.oc-layout-fullscreen.oc-has-photo .oc-auth::before { content: ""; position: absolute; inset: 0; z-index: -1; background: rgba(2, 6, 23, var(--oc-overlay)); }
.oc-layout-fullscreen .oc-auth__foot { color: rgba(255, 255, 255, .72); }
body.oc-layout-fullscreen .oc-auth__foot a { color: rgba(255, 255, 255, .85); }
body.oc-layout-fullscreen .oc-auth__foot a:hover { color: #fff; }

/* ------------------------------------------------------------------ *
 * The card (#login on wp-login.php, .oc-auth__card elsewhere)
 * ------------------------------------------------------------------ */

body.oc-login #login, body.oc-login .oc-auth__card { width: 100%; margin: 0; padding: 0; position: relative; }
.oc-layout-centered #login, .oc-layout-fullscreen #login, .oc-layout-centered .oc-auth__card, .oc-layout-fullscreen .oc-auth__card {
	background: var(--oc-surface); border: 1px solid var(--oc-line); border-radius: var(--oc-radius-lg);
	padding: 36px 36px 28px !important; box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 24px 48px -12px rgba(15, 23, 42, .16);
}
.oc-layout-fullscreen #login, .oc-layout-fullscreen .oc-auth__card { box-shadow: 0 30px 80px -20px rgba(2, 6, 23, .55); border-color: transparent; }
.oc-auth__card--wide { max-width: 100%; }
.oc-page-signup .oc-auth__stage, .oc-page-activate .oc-auth__stage { max-width: 560px; }
.oc-screen-confirm_admin_email .oc-auth__stage, .oc-die .oc-auth__stage { max-width: 480px; }

/* Logo */
body.oc-login .wp-login-logo { margin: 0 0 28px; padding: 0; font-size: inherit; line-height: 1; text-align: left; }
body.oc-login .wp-login-logo a {
	display: inline-flex; align-items: center; width: auto; height: auto; margin: 0; padding: 0; overflow: visible; text-indent: 0;
	background: none; color: var(--oc-ink); text-decoration: none; font-size: inherit;
}
body.oc-login .wp-login-logo a:hover { text-decoration: none; }
.oc-logo { display: inline-flex; align-items: center; gap: 10px; }
img.oc-logo { display: block; max-height: 40px; max-width: 220px; width: auto; height: auto; }
.oc-logo__mark {
	display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; flex: none; border-radius: calc(var(--oc-radius-sm) + 2px);
	background: linear-gradient(135deg, var(--oc-primary) 0%, var(--oc-accent) 100%); color: #fff;
}
.oc-logo__name { font-size: 20px; font-weight: 700; letter-spacing: -.02em; color: var(--oc-ink); }
@media (min-width: 961px) {
	.oc-layout-split:not(.oc-interim) #login > .wp-login-logo, .oc-layout-split .oc-auth__card > .wp-login-logo { display: none; }
}

/* Intro */
.oc-auth__intro { margin: 0 0 26px; }
body.oc-login .oc-auth__title, body.oc-login .mu_register > h2:first-child, body.oc-login .wp-activate-container > h2:first-child, body.oc-login .admin-email__heading {
	margin: 0 0 8px; padding: 0; font-size: 28px; line-height: 1.2; font-weight: 700; letter-spacing: -.025em; color: var(--oc-ink); border: 0; text-wrap: balance;
}
body.oc-login .oc-auth__text { margin: 0; color: var(--oc-muted); font-size: 15.5px; line-height: 1.55; }

/* ------------------------------------------------------------------ *
 * Forms
 * ------------------------------------------------------------------ */

body.oc-login form { margin: 0; padding: 0; background: none; border: 0; box-shadow: none; overflow: visible; font-weight: 400; }
body.oc-login #login form p, body.oc-login .oc-auth__card form p { margin: 0 0 18px; }
body.oc-login label, body.oc-login .mu_register .label-heading, body.oc-login .mu_register legend {
	display: inline-block; margin: 0 0 7px; padding: 0; font-size: 14px; font-weight: 600; line-height: 1.4; color: var(--oc-ink-2); vertical-align: baseline;
}
body.oc-login form .user-pass-wrap > label, body.oc-login form p > label:first-child { display: block; }

body.oc-login input[type="text"], body.oc-login input[type="email"], body.oc-login input[type="password"], body.oc-login input[type="number"], body.oc-login input[type="url"], body.oc-login input[type="tel"], body.oc-login select {
	display: block; width: 100%; height: 48px; margin: 0; padding: 0 14px; min-height: 0;
	font: 400 15.5px/1.2 var(--oc-font); color: var(--oc-ink); background: var(--oc-field);
	border: 1px solid var(--oc-line-2); border-radius: var(--oc-radius-sm); box-shadow: 0 1px 2px rgba(15, 23, 42, .04);
	transition: border-color .15s ease, box-shadow .15s ease; -webkit-appearance: none; appearance: none;
}
body.oc-login select {
	padding-right: 40px; cursor: pointer;
	background: var(--oc-field) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") right 14px center / 16px no-repeat;
}
body.oc-login input[type="text"]:hover, body.oc-login input[type="email"]:hover, body.oc-login input[type="password"]:hover, body.oc-login select:hover { border-color: var(--oc-muted); }
body.oc-login input[type="text"]:focus, body.oc-login input[type="email"]:focus, body.oc-login input[type="password"]:focus, body.oc-login input[type="number"]:focus, body.oc-login input[type="url"]:focus, body.oc-login select:focus {
	outline: 0; border-color: var(--oc-primary); box-shadow: 0 0 0 4px var(--oc-ring);
}
body.oc-login input::placeholder { color: var(--oc-muted); opacity: .8; }
body.oc-login input:-webkit-autofill { -webkit-box-shadow: 0 0 0 40px var(--oc-field) inset; -webkit-text-fill-color: var(--oc-ink); }

/* Password + show/hide */
body.oc-login .wp-pwd { position: relative; margin: 0; }
body.oc-login .wp-pwd input.password-input, body.oc-login .wp-pwd input[type="password"], body.oc-login .wp-pwd input[type="text"] { padding-right: 52px; font-family: var(--oc-font); }
body.oc-login .user-pass-wrap { margin: 0 0 18px; }
body.oc-login .button.wp-hide-pw {
	position: absolute; top: 4px; right: 4px; width: 40px; height: 40px; min-height: 0; margin: 0; padding: 0;
	display: inline-flex; align-items: center; justify-content: center;
	background: transparent; border: 0; border-radius: calc(var(--oc-radius-sm) - 2px); box-shadow: none; color: var(--oc-muted); transform: none;
}
body.oc-login .button.wp-hide-pw:hover { background: var(--oc-primary-50); color: var(--oc-primary-700); }
body.oc-login .button.wp-hide-pw:focus { outline: 0; box-shadow: 0 0 0 3px var(--oc-ring); background: transparent; color: var(--oc-primary-700); border: 0; }
body.oc-login .button.wp-hide-pw .dashicons { width: 20px; height: 20px; font-size: 20px; top: 0; position: static; line-height: 1; }

/* Strength meter */
body.oc-login #pass-strength-result {
	width: 100%; margin: 10px 0 0; padding: 8px 12px; border: 0; border-radius: calc(var(--oc-radius-sm) - 2px);
	font-size: 13px; font-weight: 600; text-align: left; color: var(--oc-ink-2); background: var(--oc-line); opacity: 1;
}
body.oc-login #pass-strength-result.short { background: #fee2e2; color: #991b1b; }
body.oc-login #pass-strength-result.bad { background: #ffedd5; color: #9a3412; }
body.oc-login #pass-strength-result.good { background: #fef9c3; color: #854d0e; }
body.oc-login #pass-strength-result.strong { background: #dcfce7; color: #166534; }
body.oc-login input#pass1.short { border-color: #f87171; }
body.oc-login input#pass1.bad { border-color: #fb923c; }
body.oc-login input#pass1.good { border-color: #facc15; }
body.oc-login input#pass1.strong { border-color: #22c55e; }
body.oc-login .pw-weak { margin: 12px 0 18px; display: flex; align-items: center; gap: 8px; }
body.oc-login .pw-weak label { margin: 0; font-weight: 500; }
body.oc-login .user-pass1-wrap > p { margin: 0; }
body.oc-login .indicator-hint, body.oc-login #reg_passmail, body.oc-login p.description { font-size: 13.5px; line-height: 1.5; color: var(--oc-muted); }

/* Checkboxes & radios */
body.oc-login input[type="checkbox"], body.oc-login input[type="radio"] {
	-webkit-appearance: auto; appearance: auto; width: 18px; height: 18px; min-width: 18px; margin: 0; padding: 0;
	accent-color: var(--oc-primary); border: 0; box-shadow: none; vertical-align: middle; cursor: pointer;
}
body.oc-login input[type="checkbox"]:checked::before, body.oc-login input[type="radio"]:checked::before { content: none; display: none; }
body.oc-login input[type="checkbox"]:focus-visible, body.oc-login input[type="radio"]:focus-visible { outline: 2px solid var(--oc-primary); outline-offset: 2px; }
body.oc-login form .forgetmenot { display: flex; align-items: center; gap: 9px; margin: 0 0 22px !important; float: none; }
body.oc-login form .forgetmenot label { margin: 0; font-weight: 500; color: var(--oc-ink-2); cursor: pointer; }

/* Buttons */
body.oc-login .button, body.oc-login input[type="submit"], body.oc-login button.button {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 46px; min-height: 0; margin: 0; padding: 0 20px;
	font: 600 15px/1 var(--oc-font); text-decoration: none; text-shadow: none; white-space: nowrap; cursor: pointer;
	color: var(--oc-ink); background: var(--oc-surface); border: 1px solid var(--oc-line-2); border-radius: var(--oc-radius-sm);
	box-shadow: 0 1px 2px rgba(15, 23, 42, .05); transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .1s ease; vertical-align: middle;
}
body.oc-login .button:hover, body.oc-login input[type="submit"]:hover { background: var(--oc-bg); border-color: var(--oc-muted); color: var(--oc-ink); text-decoration: none; }
body.oc-login .button:focus, body.oc-login input[type="submit"]:focus { outline: 0; box-shadow: 0 0 0 4px var(--oc-ring); border-color: var(--oc-primary); }
body.oc-login .button:active, body.oc-login input[type="submit"]:active { transform: translateY(1px); }
body.oc-login .button.button-primary, body.oc-login input[type="submit"].button-primary, body.oc-login .mu_register input[type="submit"], body.oc-login #activateform input[type="submit"] {
	color: var(--oc-on-primary); background: var(--oc-primary); border-color: var(--oc-primary);
	box-shadow: 0 1px 2px rgba(15, 23, 42, .1), 0 6px 16px -6px var(--oc-ring);
}
body.oc-login .button.button-primary:hover, body.oc-login input[type="submit"].button-primary:hover, body.oc-login .mu_register input[type="submit"]:hover, body.oc-login #activateform input[type="submit"]:hover {
	color: var(--oc-on-primary); background: var(--oc-primary-600); border-color: var(--oc-primary-600);
}
body.oc-login .button.button-primary:focus, body.oc-login input[type="submit"].button-primary:focus { box-shadow: 0 0 0 4px var(--oc-ring); color: var(--oc-on-primary); }
body.oc-login .button[disabled], body.oc-login .button:disabled, body.oc-login input[type="submit"]:disabled { opacity: .55; cursor: not-allowed; transform: none; }
body.oc-login .oc-button-ghost { background: transparent; border-color: transparent; box-shadow: none; color: var(--oc-ink-2); }
body.oc-login p.submit { margin: 0 !important; padding: 0; float: none; display: block; }
body.oc-login p.submit #wp-submit, body.oc-login p.submit .button-primary { width: 100%; height: 50px; float: none; font-size: 15.5px; }
body.oc-login .reset-pass-submit { display: flex !important; flex-wrap: wrap-reverse; gap: 10px; }
body.oc-login .reset-pass-submit .button { flex: 1 1 160px; width: auto !important; margin: 0; }
body.oc-login.login-action-lostpassword p.submit { margin-top: 4px !important; }

/* Links under the form */
body.oc-login #nav, body.oc-login #backtoblog { margin: 0; padding: 0; text-align: center; font-size: 0; }
body.oc-login #nav { margin-top: 24px; display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 22px; }
body.oc-login #nav a { font-size: 14.5px; font-weight: 600; color: var(--oc-primary); }
body.oc-login #backtoblog { margin-top: 14px; }
body.oc-login #backtoblog a { font-size: 14px; font-weight: 500; color: var(--oc-muted); }
body.oc-login #backtoblog a:hover { color: var(--oc-ink); }
body.oc-login .privacy-policy-page-link { display: none; }
.oc-auth__actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 8px 0 0 !important; }
.oc-auth__actions .button { flex: 1 1 160px; }

/* Notices */
body.oc-login .notice, body.oc-login .message, body.oc-login .success, body.oc-login #login_error, body.oc-login .mu_register .error, body.oc-login .mu_alert, body.oc-login .wp-activate-container .error {
	display: block; margin: 0 0 20px; padding: 12px 14px 12px 44px; position: relative;
	font-size: 14px; line-height: 1.5; color: var(--oc-ink); background: var(--oc-primary-50);
	border: 1px solid var(--oc-primary-100); border-radius: var(--oc-radius-sm); box-shadow: none; word-wrap: break-word;
}
body.oc-login .notice::before, body.oc-login .message::before, body.oc-login .success::before, body.oc-login #login_error::before, body.oc-login .mu_register .error::before, body.oc-login .mu_alert::before, body.oc-login .wp-activate-container .error::before {
	content: "i"; position: absolute; left: 13px; top: 12px; width: 20px; height: 20px; border-radius: 50%;
	display: inline-flex; align-items: center; justify-content: center; font: 700 12px/1 Georgia, serif; color: #fff; background: var(--oc-primary);
}
body.oc-login .notice p, body.oc-login .message p { margin: 0; }
body.oc-login .notice p + p, body.oc-login .message p + p { margin-top: 6px; }
body.oc-login .notice a, body.oc-login .message a { font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
body.oc-login .notice-error, body.oc-login #login_error, body.oc-login .mu_register .error, body.oc-login .wp-activate-container .error { background: #fef2f2; border-color: #fecaca; color: #7f1d1d; }
body.oc-login .notice-error::before, body.oc-login #login_error::before, body.oc-login .mu_register .error::before, body.oc-login .wp-activate-container .error::before { content: "!"; font-family: var(--oc-font); background: #dc2626; }
body.oc-login .notice-error a, body.oc-login #login_error a { color: #991b1b; }
body.oc-login .success, body.oc-login .notice-success { background: #f0fdf4; border-color: #bbf7d0; color: #14532d; }
body.oc-login .success::before, body.oc-login .notice-success::before { content: "✓"; font-family: var(--oc-font); background: #16a34a; }
body.oc-login .mu_alert { background: #fffbeb; border-color: #fde68a; color: #78350f; font-weight: 500; }
body.oc-login .mu_alert::before { content: "!"; font-family: var(--oc-font); background: #d97706; }
body.oc-login .login-error-list { margin: 0; padding: 0 0 0 16px; }
body.oc-login .login-error-list li + li { margin-top: 6px; }

/* Shake on error (WordPress adds .shake to the form) */
@keyframes oc-shake { 25% { transform: translateX(-12px); } 75% { transform: translateX(12px); } 100% { transform: translateX(0); } }
body.oc-login form.shake { animation: oc-shake .2s cubic-bezier(.19, .49, .38, .79) both; animation-iteration-count: 3; transform: translateX(0); }
@media (prefers-reduced-motion: reduce) { body.oc-login form.shake { animation: none; } }

/* Language switcher */
body.oc-login .language-switcher { width: 100%; max-width: 420px; margin: 18px auto 0; padding: 0; text-align: center; }
body.oc-login #language-switcher { display: inline-flex; align-items: center; gap: 8px; margin: 0; padding: 0; }
body.oc-login #language-switcher label { margin: 0; color: var(--oc-muted); }
body.oc-login #language-switcher label .dashicons { width: 20px; height: 20px; font-size: 20px; }
body.oc-login #language-switcher select { width: auto; min-width: 180px; height: 40px; font-size: 14px; }
body.oc-login #language-switcher .button { height: 40px; padding: 0 14px; font-size: 14px; }
.oc-layout-fullscreen .language-switcher #language-switcher label { color: rgba(255, 255, 255, .8); }

/* Admin email confirmation */
body.oc-login .admin-email-confirm-form .admin-email__details { color: var(--oc-ink-2); font-size: 14.5px; }
body.oc-login .admin-email-confirm-form .admin-email__details a { word-break: break-all; }
body.oc-login .admin-email__actions { display: flex; flex-direction: column; gap: 14px; margin-top: 8px; }
body.oc-login .admin-email__actions div { display: flex; flex-wrap: wrap-reverse; gap: 10px; padding: 0 !important; }
body.oc-login .admin-email__actions .button { flex: 1 1 150px; margin: 0 !important; }
body.oc-login .admin-email__later { text-align: center; margin: 0 !important; font-size: 14px; }

/* Interim (re-authentication modal inside wp-admin) */
html.interim-login, body.oc-interim { background: var(--oc-surface) !important; min-height: 0; }
body.oc-interim .oc-auth--interim { display: block; min-height: 0; padding: 22px 26px 14px; }
body.oc-interim .oc-auth__stage { max-width: 380px; margin: 0 auto; padding: 0; }
body.oc-interim #login { background: transparent !important; border: 0 !important; box-shadow: none !important; padding: 0 !important; }
body.oc-interim .wp-login-logo { margin-bottom: 16px; }
body.oc-interim img.oc-logo { max-height: 30px; }
body.oc-interim .oc-logo__mark { width: 30px; height: 30px; }
body.oc-interim .oc-logo__name { font-size: 17px; }
body.oc-interim .oc-auth__intro { margin-bottom: 16px; }
body.oc-interim .oc-auth__title { font-size: 21px; }
body.oc-interim .oc-auth__text { font-size: 14px; }
body.oc-interim #login form p, body.oc-interim .user-pass-wrap { margin-bottom: 12px !important; }
body.oc-interim input[type="text"], body.oc-interim input[type="password"] { height: 42px; }
body.oc-interim form .forgetmenot { margin-bottom: 14px !important; }
body.oc-interim p.submit #wp-submit { height: 44px; }
body.oc-interim.interim-login-success .oc-auth__intro { display: none; }

/* ------------------------------------------------------------------ *
 * SSO buttons (Authentication module contract)
 * ------------------------------------------------------------------ */

/* The buttons go below the password form ("Log In", then "or", then the providers), whatever hook printed them. */
body.oc-login #loginform, body.oc-login #registerform { display: flex; flex-direction: column; }
body.oc-login #loginform > .oc-sso, body.oc-login #registerform > .oc-sso { order: 10; margin: 20px 0 0; }
body.oc-login #loginform > .oc-sso-note, body.oc-login #registerform > .oc-sso-note { order: 11; margin: 16px 0 0 !important; }
body.oc-login .oc-sso { display: flex; flex-direction: column; gap: 10px; margin: 6px 0 20px; }
body.oc-login .oc-sso__divider { display: flex; align-items: center; gap: 14px; margin: 4px 0 6px; font-size: 13px; font-weight: 500; color: var(--oc-muted); text-transform: none; }
body.oc-login .oc-sso__divider::before, body.oc-login .oc-sso__divider::after { content: ""; flex: 1; height: 1px; background: var(--oc-line-2); }
body.oc-login .oc-sso__btn {
	position: relative; display: flex; align-items: center; justify-content: center; width: 100%; min-height: 48px; padding: 10px 48px;
	font: 600 15px/1.25 var(--oc-font); color: var(--oc-ink) !important; text-align: center; text-decoration: none !important;
	background: var(--oc-surface); border: 1px solid var(--oc-line-2); border-radius: var(--oc-radius-sm);
	box-shadow: 0 1px 2px rgba(15, 23, 42, .05); transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease;
}
body.oc-login .oc-sso__btn:hover { background: var(--oc-bg); border-color: var(--oc-muted); }
body.oc-login .oc-sso__btn:focus-visible { outline: 0; box-shadow: 0 0 0 4px var(--oc-ring); border-color: var(--oc-primary); }
body.oc-login .oc-sso__icon { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; }
body.oc-login .oc-sso__icon svg, body.oc-login .oc-sso__icon img { width: 20px; height: 20px; display: block; }
body.oc-login .oc-sso-note { margin: 0 0 16px !important; font-size: 13.5px; line-height: 1.5; color: var(--oc-muted); text-align: center; }

/* SSO only (password sign-in turned off for this user group) */
.oc-no-password #loginform > p, .oc-no-password .user-pass-wrap, .oc-no-password .forgetmenot, .oc-no-password .submit, .oc-no-password #nav, .oc-no-password .oc-sso__divider { display: none !important; }
.oc-no-password .oc-sso, body.oc-login.oc-no-password #loginform > .oc-sso { margin-top: 0; }
.oc-no-password #loginform > p.oc-sso-note { display: block !important; }

/* ------------------------------------------------------------------ *
 * Multisite sign-up (wp-signup.php) and activation (wp-activate.php)
 * ------------------------------------------------------------------ */

body.oc-login #signup-content, body.oc-login .widecolumn { width: auto; margin: 0; padding: 0; float: none; }
body.oc-login .mu_register, body.oc-login .wp-activate-container { width: auto; margin: 0; }
body.oc-login .mu_register form, body.oc-login .wp-activate-container form { margin: 22px 0 0; }
body.oc-login .mu_register h2, body.oc-login .wp-activate-container h2 { font-size: 22px; font-weight: 700; letter-spacing: -.02em; margin: 0 0 10px; color: var(--oc-ink); }
body.oc-login .mu_register p, body.oc-login .wp-activate-container p { color: var(--oc-ink-2); }
body.oc-login .mu_register fieldset { margin: 0 0 18px; padding: 0; border: 0; }
body.oc-login .mu_register label, body.oc-login .mu_register .label-heading, body.oc-login .mu_register legend { display: block; margin: 18px 0 7px; }
body.oc-login .mu_register #setupform > label:first-of-type, body.oc-login .mu_register form > label:first-child { margin-top: 0; }
body.oc-login .mu_register input[type="text"], body.oc-login .mu_register input[type="email"], body.oc-login .mu_register input[type="password"] { margin: 0 0 6px; font-size: 15.5px; }
body.oc-login .mu_register label.checkbox, body.oc-login .mu_register .wp-signup-radio-button, body.oc-login .mu_register .signup-options label, body.oc-login .mu_register .privacy-intro label {
	display: inline-flex; align-items: center; gap: 9px; margin: 6px 18px 6px 0; font-weight: 500; color: var(--oc-ink-2); cursor: pointer;
}
body.oc-login .mu_register .signup-options { display: flex; flex-direction: column; gap: 4px; }
body.oc-login .mu_register .signup-options .wp-signup-radio-button { display: flex; padding: 12px 14px; margin: 0; border: 1px solid var(--oc-line-2); border-radius: var(--oc-radius-sm); }
body.oc-login .mu_register .signup-options .wp-signup-radio-button:has(input:checked) { border-color: var(--oc-primary); background: var(--oc-primary-50); }
body.oc-login .mu_register .prefix_address, body.oc-login .mu_register .suffix_address { font-size: 15px; color: var(--oc-muted); display: inline-block; }
body.oc-login .mu_register .wp-signup-blogname { display: flex; align-items: center; gap: 8px; }
body.oc-login .mu_register #blogname { flex: 1; }
body.oc-login .mu_register p.error { margin-top: 4px; }
body.oc-login .mu_register form > p:not(.submit):not(.error), body.oc-login .mu_register form fieldset > p { font-size: 13.5px; line-height: 1.5; color: var(--oc-muted); margin: 6px 0 4px; }
body.oc-login .mu_register input[type="submit"], body.oc-login #activateform input[type="submit"], body.oc-login #activateform #submit { width: 100%; height: 50px; margin: 10px 0 0; font-size: 15.5px; }
body.oc-login .mu_register .submit { margin: 10px 0 0; }
body.oc-login .mu_register p + p { margin-top: 0; }
body.oc-login #activateform #key { margin-bottom: 4px; }
body.oc-login .wp-activate-container form br, body.oc-login .mu_register form label + br { display: none; }
body.oc-login .wp-activate-container label { display: block; }
body.oc-login .mu_register > p:only-child, body.oc-login .mu_register > h2 + p { color: var(--oc-ink-2); }
body.oc-login #signup-welcome { margin: 0 0 18px; padding: 16px; background: var(--oc-bg); border-radius: var(--oc-radius-sm); }
body.oc-login #signup-welcome p { margin: 0; display: flex; flex-wrap: wrap; gap: 4px 10px; }
body.oc-login #signup-welcome p + p { margin-top: 8px; }
body.oc-login span.h3 { padding: 0; font-size: 14px; font-weight: 600; color: var(--oc-muted); }
body.oc-login .view { margin: 0; display: flex; flex-wrap: wrap; gap: 8px 18px; }

/* ------------------------------------------------------------------ *
 * Responsive
 * ------------------------------------------------------------------ */

@media (max-width: 960px) {
	.oc-layout-split .oc-auth { grid-template-columns: minmax(0, 1fr); }
	.oc-layout-split .oc-auth__panel { display: none; }
	.oc-layout-split .oc-auth__main { background: var(--oc-surface); }
}
@media (max-width: 600px) {
	.oc-auth__main { padding: 20px 18px 18px; }
	.oc-auth__stage { padding: 12px 0; justify-content: flex-start; }
	.oc-layout-centered #login, .oc-layout-centered .oc-auth__card { padding: 26px 22px 22px !important; border-radius: var(--oc-radius); }
	.oc-layout-fullscreen #login, .oc-layout-fullscreen .oc-auth__card { padding: 26px 22px 22px !important; border-radius: var(--oc-radius); }
	.oc-layout-fullscreen .oc-auth__stage { justify-content: center; }
	body.oc-login .oc-auth__title { font-size: 25px; }
	.oc-auth__foot { justify-content: center; text-align: center; }
	.oc-auth__foot nav { justify-content: center; }
	.oc-layout-fullscreen.oc-has-photo .oc-auth { background-attachment: scroll; }
}
@media (max-width: 380px) {
	.oc-layout-centered #login, .oc-layout-fullscreen #login, .oc-layout-centered .oc-auth__card, .oc-layout-fullscreen .oc-auth__card { padding: 22px 18px 18px !important; }
}

/* RTL */
.rtl .oc-auth__brand { align-self: flex-end; }
body.oc-login.rtl .button.wp-hide-pw { right: auto; left: 4px; }
body.oc-login.rtl .wp-pwd input.password-input { padding-right: 14px; padding-left: 52px; }
body.oc-login.rtl .wp-login-logo { text-align: right; }
body.oc-login.rtl .notice, body.oc-login.rtl .message, body.oc-login.rtl #login_error { padding: 12px 44px 12px 14px; }
body.oc-login.rtl .notice::before, body.oc-login.rtl .message::before, body.oc-login.rtl #login_error::before { left: auto; right: 13px; }
body.oc-login.rtl .oc-sso__icon { left: auto; right: 16px; }

/* ------------------------------------------------------------------ *
 * Dark mode (v1.9.8): body.oc-scheme-dark, or oc-scheme-auto on a device in dark mode — set by AuthShell when
 * the Optimus admin design is on (Core → Branding → Admin color mode).
 * ------------------------------------------------------------------ */

body.oc-login.oc-scheme-dark {
	--oc-bg: #0b1120;
	--oc-ink: #e6ebf2;
	--oc-ink-2: #c9d3e0;
	--oc-muted: #9eacc0;
	--oc-line: rgba(148, 163, 184, .18);
	--oc-line-2: rgba(148, 163, 184, .32);
	--oc-surface: #111a2b;
	--oc-field: #0c1423;
	--oc-primary-50: rgba(148, 163, 184, .12);
	--oc-primary-100: rgba(148, 163, 184, .2);
	color-scheme: dark;
}
body.oc-login.oc-scheme-dark a:not(.button) { color: var(--oc-primary-ink-dark, #8fb0ff); }
body.oc-login.oc-scheme-dark a:not(.button):hover { color: #fff; }
body.oc-login.oc-scheme-dark .notice-error, body.oc-login.oc-scheme-dark #login_error { background: rgba(239, 68, 68, .12); border-color: rgba(248, 113, 113, .35); color: #fecaca; }
body.oc-login.oc-scheme-dark .notice-error a, body.oc-login.oc-scheme-dark #login_error a { color: #fecaca; }
body.oc-login.oc-scheme-dark .success, body.oc-login.oc-scheme-dark .notice-success, body.oc-login.oc-scheme-dark .message, body.oc-login.oc-scheme-dark .notice-info { background: rgba(34, 197, 94, .1); border-color: rgba(74, 222, 128, .3); color: #bbf7d0; }
body.oc-login.oc-scheme-dark .mu_alert { background: rgba(245, 158, 11, .12); border-color: rgba(251, 191, 36, .3); color: #fde68a; }
body.oc-login.oc-scheme-dark select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239eacc0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); }
body.oc-login.oc-scheme-dark input[type="checkbox"] { background: var(--oc-field); border-color: var(--oc-line-2); }
body.oc-login.oc-scheme-dark .button.wp-hide-pw, body.oc-login.oc-scheme-dark .button.wp-hide-pw .dashicons { color: var(--oc-muted); background: transparent; }
body.oc-login.oc-scheme-dark .oc-button-ghost, body.oc-login.oc-scheme-dark .button:not(.button-primary) { background: var(--oc-surface); color: var(--oc-ink); border-color: var(--oc-line-2); }
html:has(body.oc-login.oc-scheme-dark) { background: #0b1120; }
@media (prefers-color-scheme: dark) {
body.oc-login.oc-scheme-auto {
	--oc-bg: #0b1120;
	--oc-ink: #e6ebf2;
	--oc-ink-2: #c9d3e0;
	--oc-muted: #9eacc0;
	--oc-line: rgba(148, 163, 184, .18);
	--oc-line-2: rgba(148, 163, 184, .32);
	--oc-surface: #111a2b;
	--oc-field: #0c1423;
	--oc-primary-50: rgba(148, 163, 184, .12);
	--oc-primary-100: rgba(148, 163, 184, .2);
	color-scheme: dark;
}
body.oc-login.oc-scheme-auto a:not(.button) { color: var(--oc-primary-ink-dark, #8fb0ff); }
body.oc-login.oc-scheme-auto a:not(.button):hover { color: #fff; }
body.oc-login.oc-scheme-auto .notice-error, body.oc-login.oc-scheme-auto #login_error { background: rgba(239, 68, 68, .12); border-color: rgba(248, 113, 113, .35); color: #fecaca; }
body.oc-login.oc-scheme-auto .notice-error a, body.oc-login.oc-scheme-auto #login_error a { color: #fecaca; }
body.oc-login.oc-scheme-auto .success, body.oc-login.oc-scheme-auto .notice-success, body.oc-login.oc-scheme-auto .message, body.oc-login.oc-scheme-auto .notice-info { background: rgba(34, 197, 94, .1); border-color: rgba(74, 222, 128, .3); color: #bbf7d0; }
body.oc-login.oc-scheme-auto .mu_alert { background: rgba(245, 158, 11, .12); border-color: rgba(251, 191, 36, .3); color: #fde68a; }
body.oc-login.oc-scheme-auto select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239eacc0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); }
body.oc-login.oc-scheme-auto input[type="checkbox"] { background: var(--oc-field); border-color: var(--oc-line-2); }
body.oc-login.oc-scheme-auto .button.wp-hide-pw, body.oc-login.oc-scheme-auto .button.wp-hide-pw .dashicons { color: var(--oc-muted); background: transparent; }
body.oc-login.oc-scheme-auto .oc-button-ghost, body.oc-login.oc-scheme-auto .button:not(.button-primary) { background: var(--oc-surface); color: var(--oc-ink); border-color: var(--oc-line-2); }
html:has(body.oc-login.oc-scheme-auto) { background: #0b1120; }
}
