:root{--navy:#12314d;--blue:#176b87;--teal:#0f8b8d;--ink:#172b3a;--muted:#627687;--line:#d8e3e9;--bg:#eef4f6;--white:#fff;--danger:#b42318;--ok:#16725b;--shadow:0 20px 60px rgba(19,49,77,.14)}
*{box-sizing:border-box}html{min-height:100%}body{min-height:100vh;margin:0;background:linear-gradient(145deg,#e8f1f4,#f8fbfc 60%,#e4f0f1);color:var(--ink);font-family:"Microsoft JhengHei","Noto Sans TC",Arial,sans-serif;display:flex;flex-direction:column}.auth-shell{width:min(1040px,calc(100% - 32px));margin:auto;display:grid;grid-template-columns:1.05fr .95fr;background:#fff;border:1px solid rgba(18,49,77,.09);border-radius:24px;overflow:hidden;box-shadow:var(--shadow)}.brand-panel{position:relative;overflow:hidden;padding:54px 48px;background:linear-gradient(135deg,#12314d,#176b87 72%,#168f91);color:#fff}.brand-panel:after{content:"";position:absolute;width:320px;height:320px;border:62px solid rgba(255,255,255,.07);border-radius:50%;right:-150px;bottom:-145px}.brand-mark{width:58px;height:58px;border:1px solid rgba(255,255,255,.32);border-radius:15px;display:grid;place-items:center;background:rgba(255,255,255,.1);overflow:hidden}.brand-mark img{width:50px;height:50px;display:block;object-fit:contain}.eyebrow,.form-kicker{font-size:.72rem;letter-spacing:.15em;font-weight:800;text-transform:uppercase}.eyebrow{margin:32px 0 7px;color:#88dcda}.brand-panel h1{font-size:clamp(1.75rem,3.2vw,2.5rem);line-height:1.25;margin:0}.system-name{margin:9px 0 0;color:#d9eef2}.intro{max-width:430px;margin:35px 0 0;color:#e9f4f6}.security-note{margin-top:28px;padding:14px 16px;border:1px solid rgba(255,255,255,.22);border-radius:12px;background:rgba(255,255,255,.09);font-size:.86rem;color:#e7f5f5}.form-panel{padding:46px 44px;align-self:center}.auth-form{display:none}.auth-form.active{display:grid;animation:enter .22s ease}@keyframes enter{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.auth-form header{margin-bottom:22px}.form-kicker{margin:0;color:var(--teal)}.auth-form h2{margin:4px 0 2px;color:var(--navy);font-size:1.55rem}.auth-form header p:last-child{margin:0;color:var(--muted);font-size:.88rem}.auth-form label{font-size:.84rem;font-weight:800;color:#365367;margin:12px 0 5px}.auth-form input{width:100%;border:1.5px solid #cddce3;border-radius:9px;padding:11px 12px;background:#fbfdfe;color:var(--ink);font:inherit}.auth-form input:focus{outline:3px solid rgba(15,139,141,.12);border-color:var(--teal);background:#fff}.auth-form input.invalid{border-color:var(--danger);background:#fff7f6}.primary,.link-button,.muted-link{border:0;font:inherit;cursor:pointer}.primary{margin-top:22px;border-radius:10px;padding:12px 20px;background:var(--navy);color:#fff;font-weight:800}.primary:hover{background:#1a466b}.primary:disabled{opacity:.65;cursor:wait}.link-button,.muted-link{justify-self:center;background:transparent;padding:8px;color:var(--blue);font-weight:700}.link-button{margin-top:6px}.muted-link{color:#82929e;font-size:.83rem;cursor:not-allowed}.hint{margin:4px 0 0;color:var(--muted);font-size:.75rem}.message{display:none;border-radius:10px;padding:11px 13px;margin-bottom:17px;font-size:.85rem}.message.show{display:block}.message.error{background:#fff1f0;border:1px solid #f0b9b5;color:#87251e}.message.success{background:#edf8f3;border:1px solid #bfe2d4;color:#12654f}.message.info{background:#edf4f7;border:1px solid #c9dde6;color:#28566b}footer{text-align:center;padding:20px;color:var(--muted);font-size:.76rem}
@media(max-width:760px){body{display:block}.auth-shell{grid-template-columns:1fr;margin:18px auto}.brand-panel{padding:34px 26px}.brand-panel .intro,.security-note{margin-top:18px}.form-panel{padding:31px 25px}.brand-panel:after{width:220px;height:220px;right:-125px;bottom:-130px}}
@media(max-width:420px){.auth-shell{width:calc(100% - 20px);border-radius:18px}.brand-panel{padding:28px 20px}.form-panel{padding:27px 19px}}
.brand-mark{background:#fff;border-color:rgba(255,255,255,.72)}
.auth-form input::placeholder{color:#8a9aa6;opacity:1}
.brand-panel h1{font-size:clamp(1.75rem,3vw,2.15rem);white-space:nowrap}
@media(max-width:760px){.brand-panel h1{font-size:clamp(1.65rem,7.5vw,2.05rem);white-space:normal;text-wrap:balance}}
