/* Portal styles. Kept in a file because the app's CSP forbids inline styles. */
*{box-sizing:border-box}
    html,body{height:100%}
    body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI",sans-serif;
         color:#0f172a;background:#eef2f7;
         background-image:radial-gradient(900px 400px at 50% -10%,#dbeafe 0%,rgba(219,234,254,0) 60%);}
    .page{min-height:100%;display:flex;flex-direction:column;align-items:center;
          justify-content:center;padding:32px 18px;gap:18px}
    .brand{display:flex;align-items:center;gap:10px}
    .mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
          background:linear-gradient(140deg,#2563eb,#1e40af);color:#fff;font-weight:800;font-size:19px}
    .brand-name{font-size:19px;font-weight:700;letter-spacing:.2px}
    .brand-sub{font-size:12px;color:#64748b;margin-top:2px}
    .card{width:100%;max-width:400px;background:#fff;border-radius:18px;padding:26px 24px 24px;
          box-shadow:0 10px 30px -12px rgba(15,23,42,.25),0 2px 6px rgba(15,23,42,.05)}
    h1{font-size:21px;margin:0 0 4px;letter-spacing:-.2px}
    .lead{color:#64748b;font-size:13.5px;margin:0 0 20px;line-height:1.6}
    label{display:block;font-size:13px;font-weight:600;color:#334155;margin:16px 0 7px}
    input{width:100%;padding:13px 14px;font-size:16px;color:#0f172a;
          border:1.5px solid #e2e8f0;border-radius:11px;background:#f8fafc;transition:.15s}
    input:focus{outline:none;border-color:#2563eb;background:#fff;box-shadow:0 0 0 4px rgba(37,99,235,.12)}
    input:disabled{color:#94a3b8;background:#f1f5f9}
    button{width:100%;margin-top:22px;padding:14px;font-size:16px;font-weight:700;color:#fff;
           background:linear-gradient(140deg,#2563eb,#1d4ed8);border:0;border-radius:12px;
           cursor:pointer;box-shadow:0 6px 16px -6px rgba(37,99,235,.7);transition:.15s}
    button:hover{filter:brightness(1.05)}
    button:active{transform:translateY(1px)}
    button:disabled{opacity:.6;cursor:default}
    .alert{border-radius:11px;padding:11px 13px;font-size:13.5px;line-height:1.55;margin:0 0 16px}
    .alert.error{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}
    .alert.notice{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}
    .links{display:flex;justify-content:space-between;gap:12px;margin-top:18px;font-size:13.5px}
    a{color:#2563eb;text-decoration:none}
    a:hover{text-decoration:underline}
    .hint{color:#94a3b8;font-size:12.5px;line-height:1.7;margin:16px 0 0}
    .code{letter-spacing:.35em;text-align:center;font-size:20px;font-weight:700}
    .foot{color:#94a3b8;font-size:12px}

/* ---- balance screen ---- */
*{box-sizing:border-box}
    body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI",sans-serif;
         color:#0f172a;background:#eef2f7;
         background-image:radial-gradient(900px 400px at 50% -10%,#dbeafe 0%,rgba(219,234,254,0) 60%);}
    .wrap{max-width:460px;margin:0 auto;padding:26px 18px 48px}
    .head{display:flex;align-items:center;gap:10px;margin-bottom:20px}
    .mark{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;
          background:linear-gradient(140deg,#2563eb,#1e40af);color:#fff;font-weight:800}
    .who{font-size:13px;color:#64748b}
    .hero{background:linear-gradient(150deg,#1d4ed8,#1e3a8a);color:#fff;border-radius:18px;
          padding:22px;box-shadow:0 12px 30px -14px rgba(29,78,216,.8)}
    .hero .label{font-size:12.5px;opacity:.75;letter-spacing:.3px}
    .hero .big{font-size:36px;font-weight:800;letter-spacing:-.5px;margin:6px 0 2px}
    .hero .name{font-size:13px;opacity:.8}
    .split{display:flex;gap:16px;margin-top:18px}
    .split > div{flex:1;background:rgba(255,255,255,.14);border-radius:12px;padding:10px 11px}
    .split .label{font-size:11.5px;opacity:.8}
    .split .value{font-size:16px;font-weight:700;margin-top:3px}
    .card{background:#fff;border-radius:16px;padding:20px;margin-top:16px;
          box-shadow:0 4px 14px -8px rgba(15,23,42,.25)}
    h2{font-size:15px;margin:0 0 10px}
    .empty{color:#94a3b8;font-size:13.5px;line-height:1.7;margin:0}
    .note{color:#94a3b8;font-size:12.5px;line-height:1.7;margin:14px 2px 0}
    .logout{display:block;width:100%;margin-top:16px;padding:13px;font-size:15px;font-weight:600;
            color:#334155;background:#fff;border:1.5px solid #e2e8f0;border-radius:12px;cursor:pointer}
    .logout:hover{background:#f8fafc}
    .tag{display:inline-block;font-size:11.5px;color:#0369a1;background:#e0f2fe;
         border-radius:999px;padding:3px 9px;margin-top:10px}

.head .name{font-weight:700}

.split{gap:10px}
.split .value{font-size:15px}
.split .label{font-size:11px;line-height:1.35}
