.cnx{--bg:#FAFAF9;--fg:#1C1917;--card:#FFF;--border:#E7E5E4;--muted:#F5F5F4;--mfg:#6B645E;--ring:#A8A29E;--accent:#A16207;--success:#15803D;--destructive:#B91C1C;min-height:100%;display:flex;flex-direction:column;background:var(--bg);color:var(--fg);font:14px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}.cnx *{box-sizing:border-box}.cnx a{color:var(--fg);text-decoration:underline;text-underline-offset:2px}.cnx a:hover{color:var(--accent)}.cnx h1,.cnx p{margin:0;text-wrap:pretty}.cnx .top{justify-content:space-between;padding:18px 24px}.cnx .logo,.cnx .top{display:flex;align-items:center}.cnx .logo{gap:10px;text-decoration:none}.cnx .logo i{width:30px;height:30px;border-radius:7px;background:var(--fg);color:var(--bg);display:grid;place-items:center}.cnx .logo b{font-size:15px;font-weight:600;letter-spacing:-.01em}.cnx .back{font-size:13.5px;color:var(--mfg);text-decoration:none;display:inline-flex;align-items:center;gap:6px}.cnx .back:hover{color:var(--fg)}.cnx main{flex:1;display:grid;place-items:center;padding:24px 16px 64px}.cnx .box{width:100%;max-width:400px}.cnx h1{font-size:24px;font-weight:620;letter-spacing:-.02em}.cnx .sub{color:var(--mfg);margin-top:6px;font-size:14.5px}.cnx .card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:24px;margin-top:24px;box-shadow:0 1px 0 rgba(28,25,23,.04),0 1px 2px rgba(28,25,23,.04);display:flex;flex-direction:column;gap:18px}.cnx label{display:block;font-size:13px;font-weight:500;margin-bottom:6px}.cnx .hint{font-size:12.5px;color:var(--mfg);margin-top:6px}.cnx .field{position:relative}.cnx input[type=password],.cnx input[type=text]{width:100%;height:42px;border:1px solid var(--border);border-radius:8px;background:var(--card);padding:0 12px;font:inherit;font-size:14.5px;color:var(--fg);outline:none;transition:border-color .15s,box-shadow .15s}.cnx input:focus{border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in oklab,var(--ring) 25%,transparent)}.cnx input[aria-invalid=true]{border-color:var(--destructive)}.cnx input[aria-invalid=true]:focus{box-shadow:0 0 0 3px color-mix(in oklab,var(--destructive) 18%,transparent)}.cnx .pwd{padding-right:44px}.cnx .eye{position:absolute;right:5px;top:5px;width:32px;height:32px;border:0;background:none;border-radius:6px;color:var(--mfg);display:grid;place-items:center;cursor:pointer}.cnx .eye:hover{color:var(--fg);background:var(--muted)}.cnx .check{display:flex;align-items:center;gap:8px;font-size:13.5px;cursor:pointer;margin:0;font-weight:400}.cnx .check input{width:16px;height:16px;accent-color:var(--fg);margin:0}.cnx .btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:42px;border-radius:8px;border:0;background:var(--fg);color:var(--bg);font:inherit;font-size:14.5px;font-weight:500;cursor:pointer}.cnx .btn:hover{background:#292524}.cnx .btn:disabled{opacity:.7;cursor:default}.cnx .spin{width:16px;height:16px;border:2px solid color-mix(in oklab,var(--bg) 35%,transparent);border-top-color:var(--bg);border-radius:50%;animation:cnx-s .7s linear infinite}@keyframes cnx-s{to{transform:rotate(1turn)}}.cnx .alert{display:flex;gap:10px;align-items:flex-start;border:1px solid color-mix(in oklab,var(--destructive) 28%,transparent);background:color-mix(in oklab,var(--destructive) 7%,transparent);border-radius:8px;padding:10px 12px;font-size:13.5px}.cnx .alert svg{flex:none;margin-top:2px;color:var(--destructive)}.cnx .alert.ok{border-color:color-mix(in oklab,var(--success) 28%,transparent);background:color-mix(in oklab,var(--success) 7%,transparent)}.cnx .alert.ok svg{color:var(--success)}.cnx .err{font-size:12.5px;color:var(--destructive);margin-top:6px}.cnx .foot{margin-top:20px;font-size:13px;color:var(--mfg);text-align:center;display:flex;flex-direction:column;gap:6px}.cnx .lien{background:none;border:0;padding:0;font:inherit;font-size:13px;color:var(--mfg);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.cnx .lien:hover{color:var(--fg)}.cnx footer{padding:0 24px 24px;font-size:12.5px;color:var(--mfg);display:flex;justify-content:center;gap:18px}.cnx footer a{color:var(--mfg);text-decoration:none}.cnx footer a:hover{color:var(--fg)}