/* Login scene: quarry artwork with a floating card. */
.login-page{display:flex;align-items:center;justify-content:flex-end;min-height:100dvh;margin:0;padding:32px 7vw;background:#0c3b2d;overflow:hidden}
.login-scene{position:fixed;inset:0;z-index:0;width:100vw;height:100dvh;pointer-events:none}
.login-scene-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center center}
.login-scene-shade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,32,24,.05) 36%,rgba(8,32,24,.22) 72%,rgba(8,32,24,.38) 100%)}
.login-dust span{position:absolute;left:calc(6% + var(--d) * 8%);bottom:8%;width:5px;height:5px;border-radius:50%;background:#f6edd4;opacity:.0;animation:dust-rise 11s linear infinite;animation-delay:calc(var(--d) * -1.3s)}
.login-card{position:relative;z-index:1;width:min(400px,calc(100vw - 32px));min-height:0;margin:0;padding:34px 32px 22px;border-radius:28px;background:linear-gradient(165deg,rgba(255,255,255,.62),rgba(255,255,255,.34));border:1px solid rgba(255,255,255,.72);box-shadow:0 24px 60px rgba(6,30,22,.28),inset 0 1px 0 rgba(255,255,255,.9),inset 0 -24px 48px rgba(255,255,255,.18);backdrop-filter:blur(22px) saturate(1.45);-webkit-backdrop-filter:blur(22px) saturate(1.45);animation:login-card-in .72s cubic-bezier(.16,.84,.28,1) both;overflow:hidden}
.login-card>*{position:relative;z-index:1}
.login-card:before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.55),transparent 32%);pointer-events:none}
.login-card:after{content:"";position:absolute;top:-20%;left:-40%;width:42%;height:140%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.72),transparent);transform:rotate(16deg);animation:card-sheen 7s ease-in-out infinite;pointer-events:none}
.login-mark{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:18px}
.login-mark .brand-logo-lg{width:64px;height:64px;margin:0 0 8px;animation:logo-float 4.5s ease-in-out infinite}
.login-mark strong{color:#0b4d3b;font-size:22px;letter-spacing:1.4px}
.login-mark small{margin-top:2px;color:#c6a15b;font-size:9px;letter-spacing:2.2px}
.login-card h2{margin:0;text-align:center;color:#0b4d3b;font-size:28px;letter-spacing:-.4px}
.login-lead{margin:4px 0 8px;text-align:center;color:#5f7468;font-size:15px}
.login-lead em{color:#0b4d3b;font-style:normal;font-weight:700}
.login-card .alert{margin-top:12px;animation:login-error .35s ease}
.login-card label{display:block;margin-top:16px}
.login-card .field-label-text{color:#6d5a32;font-size:13px}
.login-card .field-label-text>.icon{color:#c6a15b}
.login-card .input-with-icon{position:relative}
.login-card .input-with-icon>.icon{position:absolute;left:14px;top:50%;z-index:1;width:18px;height:18px;margin:0;color:#8a7344;pointer-events:none;transform:translateY(-50%)}
.login-card .required-indicator{display:none}
.login-card input{min-height:50px;border-radius:12px;border-color:#e6dcc4;background:#fffdf8;line-height:1.4;transition:border-color .2s,box-shadow .2s}
.login-card .input-with-icon>input{padding:12px 46px 12px 44px!important}
.login-card input:focus{background:#fff;border-color:#c6a15b;box-shadow:0 0 0 4px #c6a15b22}
.login-card input:-webkit-autofill,.login-card input:-webkit-autofill:hover,.login-card input:-webkit-autofill:focus{-webkit-text-fill-color:#173f30;caret-color:#173f30;box-shadow:0 0 0 1000px #fffdf8 inset;transition:none}
.login-card input:-webkit-autofill:focus{box-shadow:0 0 0 1000px #fffdf8 inset,0 0 0 4px #c6a15b22}
.login-card .input-with-icon:focus-within>.icon{color:#0b4d3b}
.login-card .password-toggle{position:absolute;right:8px;width:34px;height:34px;display:grid;place-items:center;border-radius:9px;color:#8a7344}
.login-card .password-toggle:hover,.login-card .password-toggle[aria-pressed="true"]{background:#f6edd4;color:#0b4d3b}
.login-card .password-toggle .icon{width:18px;height:18px}
.caps-warning{margin:8px 0 0;color:#966a2b;font-size:12px}
.login-options{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}
.login-card label.remember{display:inline-flex!important;flex-direction:row;align-items:center;gap:8px;width:auto;margin:0!important;color:#5f7468;font-size:13px;font-weight:500;line-height:1.2;white-space:nowrap}
.login-card label.remember input{width:18px;height:18px;min-width:18px;min-height:18px;flex:none;margin:0;padding:0;border-radius:5px;accent-color:#0b4d3b;box-shadow:none}
.forgot-link{flex:none;color:#0b4d3b;font-size:13px;font-weight:650;white-space:nowrap}
.forgot-link:hover{color:#8a7344}
.forgot-panel{margin:10px 0 0;padding:10px 12px;border-radius:10px;background:#f7f3e8;color:#5f7468;font-size:12px;line-height:1.55}
.login-card .btn.primary{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;margin-top:18px;border-radius:14px;background:linear-gradient(180deg,#176348,#0b4d3b);box-shadow:0 10px 22px #0b4d3b33;transition:transform .2s,box-shadow .2s,background .2s}
.login-card .btn.primary:hover{transform:translateY(-2px);box-shadow:0 14px 26px #0b4d3b40}
.login-card .btn.primary:active{transform:translateY(0)}
.login-card .btn.primary>.icon{width:18px;height:18px;transition:transform .2s}
.login-card .btn.primary:hover>.icon{transform:translateX(4px)}
.login-status{min-height:18px;margin:10px 0 0;color:#69806a;font-size:12px;text-align:center}
.login-foot{margin:16px 0 0;padding-top:14px;border-top:1px solid #efe6d4;color:#7d8d82;font:12px 'Noto Sans Thai',sans-serif;text-align:center}
.login-contacts{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:6px;color:#0b4d3b}
.login-contacts span{display:inline-flex;align-items:center;gap:5px}
.login-known{display:flex;align-items:center;gap:12px;margin:0 0 14px;padding:10px 12px;border:1px solid #ead9ad;border-radius:14px;background:#fffaf0;text-align:left}
.login-known img{width:54px;height:54px;object-fit:cover;object-position:center top;border-radius:12px;border:2px solid #e7d3a1;flex:none}
.login-known small{display:block;color:#8d7a4e;font-size:11px}
.login-known strong{color:#0b4d3b;font-size:16px}
.login-contacts .icon{width:14px;height:14px;color:#c6a15b}
.login-card.is-submitting .btn.primary>.icon{display:none}
.login-spinner{width:17px;height:17px;border:2px solid #ffffff55;border-top-color:#fff;border-radius:50%;animation:login-spin .7s linear infinite}
@keyframes login-card-in{from{opacity:0;transform:translateX(28px) scale(.98)}to{opacity:1;transform:none}}
@keyframes card-sheen{0%{transform:rotate(16deg) translateX(-30%)}55%,100%{transform:rotate(16deg) translateX(340%)}}
@keyframes logo-float{50%{transform:translateY(-4px)}}
@keyframes dust-rise{0%{opacity:0;transform:translateY(0)}12%{opacity:.45}100%{opacity:0;transform:translateY(-68vh)}}
@keyframes login-spin{to{transform:rotate(360deg)}}
@keyframes login-error{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
@media(max-width:860px){.login-page{justify-content:center;padding:20px 16px}.login-scene-shade{background:rgba(8,32,24,.42)}.login-card{width:min(420px,calc(100vw - 32px))}}
@media(prefers-reduced-motion:reduce){.login-page *,.login-page *:after,.login-page *:before{animation:none!important;transition:none!important}.login-card .btn.primary:hover{transform:none}}
