/*
 * 东易日盛项目管理系统 — 登录页重设计（左右分栏：品牌墙 + 登录卡）
 *
 * 通过 web_include_css 站点级加载，但每条规则都限定在 `body.dyrs-login` 下。
 * 该 class 由 public/js/login.js 仅在 Frappe 登录页（存在 section.for-login 时）
 * 添加，因此本文件在其它门户 / 网页上完全不生效。
 *
 * 我们不 fork Frappe 的 www/login.html —— 仅重写其既有 DOM 并注入品牌墙，
 * login.js 的登录 / 找回密码 / 2FA / 邮件链接等行为保持不变。
 *
 * 注：品牌墙文案在 login.js 中以中文直出（系统名 / 公司字号 / 标语属于品牌业务
 * 数据，按 CLAUDE.md 的种子/业务数据例外）；登录卡内的通用微文案走 __() 翻译。
 */

body.dyrs-login {
	--dyrs-green-1: #2a6b65;
	--dyrs-green-2: #184540;
	--dyrs-green-3: #0e2d2a;
	--dyrs-cream: #faf8f5;
	--dyrs-ink: #15302c;
	--dyrs-muted: #6b7d79;
	--dyrs-btn: #21675f;
	--dyrs-btn-hover: #1a534c;
	--dyrs-field-bg: #f7faf9;
	--dyrs-field-border: #dde4e2;
	--dyrs-focus: #2a6b65;
	--dyrs-focus-ring: rgba(42, 107, 101, 0.16);

	background: var(--dyrs-cream);
}

/* ---------- 1. 接管视口：隐藏 Frappe 页面外壳 ---------- */

body.dyrs-login .navbar,
body.dyrs-login .web-footer,
body.dyrs-login footer.web-footer,
body.dyrs-login .web-footer-wrapper {
	display: none !important;
}

body.dyrs-login .page-content-wrapper,
body.dyrs-login main,
body.dyrs-login main.container,
body.dyrs-login .container,
body.dyrs-login .row,
body.dyrs-login .main-column,
body.dyrs-login .page_content {
	width: 100%;
	max-width: none;
	margin: 0;
	padding: 0;
	background: transparent;
	border: 0;
}

/* 若主题走带侧栏的布局分支，隐藏空侧栏 */
body.dyrs-login .page-sidebar,
body.dyrs-login .web-sidebar {
	display: none;
}

body.dyrs-login .page_content {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
	padding: 48px 24px;
}

/* ---------- 2. 品牌墙 ---------- */

body.dyrs-login .dyrs-brand {
	position: relative;
	width: 100%;
	min-height: 240px;
	overflow: hidden;
	color: var(--dyrs-cream);
	background: linear-gradient(150deg, var(--dyrs-green-1) 0%, var(--dyrs-green-2) 55%, var(--dyrs-green-3) 100%);
	-webkit-font-smoothing: antialiased;
}

/* 蓝图网格 + 柔光，呼应工程/项目主题 */
body.dyrs-login .dyrs-brand__bg {
	position: absolute;
	inset: 0;
	background-image:
		radial-gradient(900px 480px at 78% 8%, rgba(250, 248, 245, 0.10), transparent 60%),
		radial-gradient(640px 640px at 12% 92%, rgba(42, 107, 101, 0.45), transparent 60%),
		linear-gradient(rgba(250, 248, 245, 0.045) 1px, transparent 1px),
		linear-gradient(90deg, rgba(250, 248, 245, 0.045) 1px, transparent 1px);
	background-size: auto, auto, 46px 46px, 46px 46px;
	pointer-events: none;
}

body.dyrs-login .dyrs-brand__inner {
	position: relative;
	z-index: 1;
	display: flex;
	flex-direction: column;
	justify-content: center;
	height: 100%;
	box-sizing: border-box;
	padding: 56px 48px;
	gap: 18px;
}

body.dyrs-login .dyrs-brand__logo {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-bottom: 6px;
}

body.dyrs-login .dyrs-brand__logo img {
	width: 56px;
	height: 56px;
	border-radius: 14px;
	box-shadow: 0 6px 18px rgba(0, 0, 0, 0.25);
	background: rgba(250, 248, 245, 0.08);
	padding: 4px;
}

body.dyrs-login .dyrs-brand__wordmark {
	font-size: 22px;
	font-weight: 600;
	letter-spacing: 3px;
	color: var(--dyrs-cream);
}

body.dyrs-login .dyrs-brand__title {
	margin: 0;
	font-size: 34px;
	line-height: 1.25;
	font-weight: 700;
	letter-spacing: 1px;
	color: #ffffff;
}

body.dyrs-login .dyrs-brand__tagline {
	margin: 0;
	font-size: 16px;
	line-height: 1.6;
	color: rgba(250, 248, 245, 0.78);
}

body.dyrs-login .dyrs-brand__footer {
	position: absolute;
	left: 48px;
	bottom: 32px;
	z-index: 1;
	font-size: 13px;
	letter-spacing: 0.5px;
	color: rgba(250, 248, 245, 0.55);
}

/* ---------- 3. 登录卡（把每个 section 当作一张卡片） ---------- */

body.dyrs-login section.for-login,
body.dyrs-login section.for-email-login,
body.dyrs-login section.for-forgot,
body.dyrs-login section.for-signup,
body.dyrs-login section.for-login-with-email-link {
	width: 100%;
	max-width: 408px;
	margin: 0;
	padding: 44px 40px;
	background: #ffffff;
	border: 1px solid rgba(21, 48, 44, 0.06);
	border-radius: 16px;
	box-shadow: 0 18px 48px rgba(21, 48, 44, 0.10), 0 2px 6px rgba(21, 48, 44, 0.04);
}

/* 卡片头部：去掉默认 cube logo，左对齐标题 */
body.dyrs-login .page-card-head {
	text-align: left;
	margin-bottom: 26px;
}

body.dyrs-login .page-card-head .app-logo {
	display: none;
}

body.dyrs-login .page-card-head h4 {
	margin: 0;
	font-size: 22px;
	font-weight: 700;
	color: var(--dyrs-ink);
	letter-spacing: 0.5px;
}

body.dyrs-login .page-card-head .dyrs-card-sub {
	margin: 8px 0 0;
	font-size: 13px;
	color: var(--dyrs-muted);
}

/* 内层 page-card：去掉它自带的卡片样式（边框/阴影/背景），并入外层卡 */
body.dyrs-login .login-content.page-card {
	max-width: none;
	margin: 0;
	padding: 0;
	background: transparent;
	border: 0;
	box-shadow: none;
}

/* ---------- 4. 表单字段 ---------- */

body.dyrs-login .form-group {
	margin-bottom: 16px;
}

body.dyrs-login .form-control {
	height: 46px;
	padding: 10px 14px 10px 40px;
	font-size: 14px;
	color: var(--dyrs-ink);
	background: var(--dyrs-field-bg);
	border: 1px solid var(--dyrs-field-border);
	border-radius: 10px;
	box-shadow: none;
	transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}

body.dyrs-login .form-control::placeholder {
	color: #9aa8a4;
}

body.dyrs-login .form-control:focus {
	background: #ffffff;
	border-color: var(--dyrs-focus);
	box-shadow: 0 0 0 3px var(--dyrs-focus-ring);
	outline: none;
}

body.dyrs-login .email-field,
body.dyrs-login .password-field {
	position: relative;
}

body.dyrs-login .field-icon {
	color: #8aa39d;
	z-index: 2;
}

/* 显示/隐藏密码 */
body.dyrs-login .toggle-password {
	cursor: pointer;
	font-size: 13px;
	color: var(--dyrs-btn);
}

body.dyrs-login .toggle-password:hover {
	color: var(--dyrs-btn-hover);
}

/* 忘记密码 */
body.dyrs-login .forgot-password-message {
	margin: 4px 0 0;
	text-align: right;
}

body.dyrs-login .forgot-password-message a,
body.dyrs-login .sign-up-message a {
	color: var(--dyrs-btn);
	font-size: 13px;
	text-decoration: none;
}

body.dyrs-login .forgot-password-message a:hover,
body.dyrs-login .sign-up-message a:hover {
	color: var(--dyrs-btn-hover);
	text-decoration: underline;
}

/* ---------- 5. 按钮 ---------- */

body.dyrs-login .page-card-actions {
	margin-top: 22px;
}

body.dyrs-login .btn-primary,
body.dyrs-login .btn-login {
	height: 46px;
	font-size: 15px;
	font-weight: 600;
	letter-spacing: 2px;
	color: #ffffff;
	background: linear-gradient(180deg, var(--dyrs-btn) 0%, var(--dyrs-btn-hover) 100%);
	border: 0;
	border-radius: 10px;
	box-shadow: 0 8px 20px rgba(33, 103, 95, 0.28);
	transition: filter 0.15s ease, box-shadow 0.15s ease, transform 0.05s ease;
}

body.dyrs-login .btn-primary:hover,
body.dyrs-login .btn-login:hover {
	filter: brightness(1.06);
	box-shadow: 0 10px 24px rgba(33, 103, 95, 0.34);
	color: #ffffff;
}

body.dyrs-login .btn-primary:active,
body.dyrs-login .btn-login:active {
	transform: translateY(1px);
}

body.dyrs-login .btn-primary:focus {
	box-shadow: 0 0 0 3px var(--dyrs-focus-ring), 0 8px 20px rgba(33, 103, 95, 0.28);
}

/* 无效登录抖动时的红色提示保持可读 */
body.dyrs-login .page-card-body.invalid .form-control {
	border-color: #d9534f;
}

/* ---------- 6. 企业内部部署：精简次要入口 ---------- */
/*
 * 默认隐藏「邮件链接登录」按钮与其上方的 “or” 分隔线，以及登录卡底部的
 * 「没有账号？注册」邀请（找回密码页里的「返回登录」用的也是 .sign-up-message，
 * 但它是 form 内的子节点，不受下面的直接子选择器影响，故予以保留）。
 * 如需恢复邮件链接登录，删除下面这条规则即可（或在系统设置里关掉该功能）。
 */
body.dyrs-login .login-with-email-link {
	display: none;
}

body.dyrs-login .social-logins .login-divider {
	display: none;
}

body.dyrs-login section.for-login > .sign-up-message {
	display: none;
}

/* ---------- 7. 桌面端：左右分栏 ---------- */

@media (min-width: 992px) {
	body.dyrs-login .dyrs-brand {
		position: fixed;
		top: 0;
		left: 0;
		width: 46%;
		height: 100vh;
		min-height: 100vh;
	}

	body.dyrs-login .page_content {
		padding-left: calc(46% + 48px);
		padding-right: 48px;
	}
}

/* ---------- 8. 移动端：品牌墙收为顶部条 ---------- */

@media (max-width: 991px) {
	body.dyrs-login .dyrs-brand__inner {
		padding: 36px 28px 40px;
		gap: 12px;
	}

	body.dyrs-login .dyrs-brand__title {
		font-size: 26px;
	}

	body.dyrs-login .dyrs-brand__footer {
		display: none;
	}

	body.dyrs-login .page_content {
		min-height: auto;
		padding: 28px 18px 48px;
	}

	body.dyrs-login section.for-login,
	body.dyrs-login section.for-email-login,
	body.dyrs-login section.for-forgot,
	body.dyrs-login section.for-signup,
	body.dyrs-login section.for-login-with-email-link {
		padding: 32px 24px;
	}
}
