/* Trang đăng nhập Client Portal – phong cách landing Creative, font hệ thống Client (Inter) */
/* Inter nạp bằng <link> trong index.php (preconnect + stylesheet), không dùng @import */
:root{
  --navy:#051C2C;--blue:#0087CC;--blue-ink:#0072AD;--cyan:#03CDEF;
  --ink:#1F2A33;--muted:#5C6670;--field:#D5DAE0;--danger:#B3261E;
  /* Font hệ thống của Client Portal */
  --sans:Inter,system-ui,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;color:var(--ink);font:14px/1.55 var(--sans);-webkit-font-smoothing:antialiased}
a{color:var(--blue-ink);text-decoration:none}a:hover{color:var(--navy);text-decoration:underline}

body.landing{min-height:100vh;overflow-x:hidden;background:linear-gradient(180deg,#C9DCF2 0%,#E3EEFA 38%,#F5F9FD 70%,#FFFFFF 100%);color:var(--navy)}
.sky{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.pattern{position:fixed;inset:-200px;z-index:0;pointer-events:none;opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='200' viewBox='0 0 570 518'%3E%3Cpolygon points='265,0 0,518 319,518 270,426 165,426 289,167 461,518 569,518 304,0' fill='none' stroke='%230087CC' stroke-opacity='.10' stroke-width='5'/%3E%3C/svg%3E");
  background-size:220px 200px;animation:drift 60s linear infinite;mask-image:radial-gradient(ellipse at 50% 45%,#000 0,transparent 75%);-webkit-mask-image:radial-gradient(ellipse at 50% 45%,#000 0,transparent 75%)}
@keyframes drift{to{transform:translate(220px,-200px)}}

/* header */
.l-top{position:fixed;top:0;left:0;right:0;z-index:30;display:flex;justify-content:space-between;align-items:center;padding:26px 40px}
.l-logo img{display:block;width:150px;height:auto}

/* stage */
/* Màn rộng: chữ A + lời chào bên trái, khung đăng nhập canh giữa theo chiều dọc bên phải – luôn thấy đủ nút Đăng nhập từ 1280×720 */
.stage{position:relative;z-index:10;min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,400px);grid-template-rows:minmax(0,1fr) auto;column-gap:clamp(24px,4vw,72px);row-gap:18px;padding:96px 40px 32px}
.mark-wrap{grid-column:1;grid-row:1;position:relative;display:flex;align-items:center;justify-content:center;min-height:0;will-change:transform}
.mark{position:relative;width:min(30vw,380px,40vh);aspect-ratio:570/518;transform-style:preserve-3d;will-change:transform;z-index:2}
.mark-svg{width:100%;height:100%;display:block;filter:drop-shadow(0 30px 40px rgba(0,114,173,.28));overflow:visible}
.shine{animation:shine 5.5s ease-in-out infinite}
@keyframes shine{0%,55%{transform:skewX(-18deg) translateX(0)}100%{transform:skewX(-18deg) translateX(1100px)}}
.mark-shadow{position:absolute;left:12%;right:12%;bottom:-70px;height:28px;border-radius:50%;background:radial-gradient(closest-side,rgba(5,28,44,.22),transparent);filter:blur(6px)}

.words{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:1}
.words.over{z-index:3}
.word{font-family:var(--sans);font-weight:600;font-synthesis:none;letter-spacing:-.045em;font-size:clamp(56px,min(9.5vw,17vh),160px);line-height:1;white-space:nowrap;transition:opacity .45s,transform .45s}
.word.solid{color:var(--navy)}
.word.outline{color:#fff;filter:url(#wordOutline)}
.word.out{opacity:0;transform:translateY(18px)}


/* copy */
.l-copy{grid-column:1;grid-row:2;align-self:end;max-width:620px}
.l-eyebrow{font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--blue-ink);font-weight:600;margin:0 0 12px}
.l-copy h1{font-family:var(--sans);font-weight:500;font-size:clamp(24px,min(3vw,4.4vh),40px);line-height:1.2;color:var(--navy);margin:0 0 12px;letter-spacing:-.02em}
.l-sub{margin:0;color:var(--muted);font-size:15px;max-width:520px}
.l-copyright{margin:18px 0 0;font-size:12px;color:rgba(5,28,44,.45)}

/* login card */
.l-card{grid-column:2;grid-row:1/-1;justify-self:end;align-self:center;width:100%;background:rgba(255,255,255,.72);backdrop-filter:blur(16px) saturate(140%);-webkit-backdrop-filter:blur(16px) saturate(140%);
  border:1px solid rgba(255,255,255,.95);border-radius:16px;box-shadow:0 24px 60px rgba(5,28,44,.14);padding:24px 26px;transition:transform .35s,box-shadow .35s}
.l-card-head{font-family:var(--sans);font-size:22px;font-weight:500;letter-spacing:-.01em;color:var(--navy);line-height:1.2}
.l-form label.lb{font-weight:500}
.l-card-sub{margin:2px 0 18px;color:var(--muted);font-size:13px}

.l-form label.lb{display:block;font-weight:500;font-size:12.5px;color:var(--ink);margin:0 0 6px}
.in{position:relative;display:flex;align-items:center;margin-bottom:14px}
.in>svg{position:absolute;left:13px;color:#8A949E;pointer-events:none}
.in input{width:100%;height:44px;padding:0 42px 0 38px;border:1px solid var(--field);border-radius:10px;background:rgba(255,255,255,.9);font:inherit;color:var(--navy);transition:border-color .2s,box-shadow .2s}
.in input::placeholder{color:#A3ACB5}
.in input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px rgba(0,135,204,.14);background:#fff}
.in:focus-within>svg{color:var(--blue-ink)}
.eye{position:absolute;right:6px;width:32px;height:32px;border:none;background:none;border-radius:8px;color:#8A949E;cursor:pointer;display:flex;align-items:center;justify-content:center}
.eye.on{color:var(--blue-ink)}
.eye:hover{color:var(--navy);background:#EEF5FC}
.row{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:2px 0 18px;font-size:13px}
.chk{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--ink)}
.chk input{width:16px;height:16px;accent-color:var(--blue-ink);margin:0}
.go{width:100%;height:46px;display:flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:999px;background:var(--blue-ink);color:#fff;font:inherit;font-weight:600;font-size:14.5px;cursor:pointer;box-shadow:0 10px 24px rgba(0,114,173,.25);transition:background .2s,transform .2s,box-shadow .2s}
.go:hover{background:var(--navy);transform:translateY(-1px);box-shadow:0 14px 30px rgba(5,28,44,.22)}
.go svg{transition:transform .2s}.go:hover svg{transform:translateX(3px)}
.msg{display:none;margin:0 0 14px;padding:10px 12px;border-radius:10px;font-size:13px}
.msg.e{display:block;background:#FDECEA;color:var(--danger);border:1px solid #FADCDC}
.msg.ok{display:block;background:#ECFBFD;color:var(--blue-ink);border:1px solid #C6F2FA}
.in.err input{border-color:var(--danger)}
.l-note{font-size:12.5px;margin:16px 0 0;padding-top:14px;border-top:1px solid rgba(5,28,44,.1);color:var(--muted);text-align:center}

/* gợi ý nằm ngay dưới chữ A (trong .mark-wrap) để không đè lên phần mô tả */
.l-scroll{position:absolute;left:50%;bottom:0;transform:translateX(-50%);margin:0;white-space:nowrap;pointer-events:none;z-index:5;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:rgba(5,28,44,.45)}

/* intro */
.intro{display:none;position:fixed;inset:0;z-index:100;background:#F2F7FC;align-items:center;justify-content:center;transition:opacity .6s ease .1s,visibility .6s}
.js .intro{display:flex}
.intro-in{text-align:center}
.intro-mark{width:64px;height:auto;fill:#00B0E9;animation:pulse 1.2s ease-in-out infinite alternate}
@keyframes pulse{to{transform:translateY(-6px);fill:#0072AD}}
.intro-t1{font-family:var(--sans);font-size:28px;font-weight:500;letter-spacing:-.02em;color:var(--navy);margin:18px 0 4px}
.intro-t2{color:var(--muted);margin:0 0 18px;font-size:14px}
.intro-bar{width:200px;height:2px;background:rgba(5,28,44,.1);margin:0 auto;overflow:hidden}.intro-bar span{display:block;height:100%;width:0;background:var(--blue);animation:load 1s ease-in-out forwards}
@keyframes load{to{width:100%}}
.ready .intro,.skip-intro .intro{opacity:0;visibility:hidden}
.js .mark-wrap{opacity:0;transform:translate(30vw,25vh) scale(.6) rotate(12deg);transition:opacity 1s ease,transform 1.6s cubic-bezier(.16,1,.3,1)}
.ready .mark-wrap,.skip-intro .mark-wrap{opacity:1;transform:none}
.js .l-copy,.js .l-card{opacity:0;translate:0 24px;transition:opacity .6s ease .35s,translate .6s ease .35s,transform .35s,box-shadow .35s}
.ready .l-copy,.ready .l-card,.skip-intro .l-copy,.skip-intro .l-card{opacity:1;translate:0 0}
.skip-intro .mark-wrap,.skip-intro .l-copy,.skip-intro .l-card{transition-delay:0s}

@media (hover:none){.l-scroll{display:none}}
/* Mobile / tablet: logo → chữ A thu nhỏ → khung đăng nhập → lời chào; ô email, mật khẩu, nút nằm trong màn đầu ở 390×844 */
@media (max-width:900px){
  .stage{grid-template-columns:1fr;grid-template-rows:auto auto auto;padding:80px 16px 28px;gap:18px;column-gap:0}
  .mark-wrap{grid-column:1;grid-row:1;min-height:170px;flex-direction:column}.mark{width:min(38vw,170px)}
  .mark-shadow{bottom:-34px;height:18px}
  .word{font-size:clamp(44px,13vw,72px)}
  .l-card{grid-column:1;grid-row:2;justify-self:center;align-self:auto;width:min(100%,440px)}
  .l-copy{grid-column:1;grid-row:3;align-self:start}
  .l-top{position:absolute;padding:18px 16px}.l-scroll{display:none}
  .eyebrow-brand{display:none} /* mobile: chỉ giữ “Hệ thống quản trị” cho gọn một dòng */
}
@media (prefers-reduced-motion:reduce){
  .pattern,.shine,.intro-mark,.intro-bar span{animation:none}.intro,.js .intro{display:none}
  .mark-wrap,.l-copy,.l-card,.js .mark-wrap,.js .l-copy,.js .l-card{opacity:1;transform:none;translate:0 0;transition:none}
}
