:root{--bg:#f5f7fb;--card:#ffffff;--text:#18212f;--muted:#6b7280;--line:#d9dee8;--primary:#0f766e;--primary-dark:#115e59;--danger:#b42318}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif}a{color:inherit}button,input{font:inherit}.shell{min-height:100vh;display:grid;place-items:center;padding:24px}.card{width:100%;max-width:460px;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 12px 32px rgba(24,33,47,.08)}.brand{font-size:30px;font-weight:800;letter-spacing:.3px;margin-bottom:24px;text-align:center}.dual{margin-bottom:18px}.dual .en{font-weight:700;font-size:18px}.dual .divider{height:1px;background:var(--line);margin:5px 0}.dual .pt{color:var(--muted);font-size:15px}.field{display:grid;grid-gap:7px;gap:7px;margin-bottom:14px}.field label{font-weight:700;font-size:14px}.field input{width:100%;border:1px solid var(--line);border-radius:10px;padding:13px 14px;outline:none;background:white}.field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(15,118,110,.1)}.button{width:100%;border:none;border-radius:10px;padding:13px 16px;background:var(--primary);color:white;font-weight:800;cursor:pointer}.button:hover{background:var(--primary-dark)}.button.secondary{background:#eef2f7;color:var(--text);margin-top:10px}.meta{margin-top:16px;color:var(--muted);font-size:13px;text-align:center}.error{color:var(--danger)}.error,.success{margin:12px 0;font-size:14px}.success{color:var(--primary)}.dashboard{min-height:100vh;padding:24px}.topbar{margin:0 auto 22px;display:flex;justify-content:space-between;align-items:center}.grid,.topbar{max-width:1100px}.grid{margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px;gap:16px}.tile{background:white;border:1px solid var(--line);border-radius:16px;padding:20px}.tile h3{margin:0 0 8px}.tile p{margin:0;color:var(--muted)}.small-button{border:none;border-radius:9px;padding:10px 12px;background:#eef2f7;cursor:pointer}