
:root{
  --bg:#f3f7fc;--surface:#fff;--primary:#1769e8;--primary2:#3e91ff;--navy:#0c2347;
  --text:#18253b;--muted:#73829d;--line:#e5edf7;--ok:#16a665;--oksoft:#eaf9f1;
  --bad:#ec4d5b;--badsoft:#fff0f2;--warn:#f5a623;--warnsoft:#fff7e7;
  --shadow:0 14px 35px rgba(23,54,103,.09);--r:22px;--max:520px
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}
body{background:radial-gradient(circle at 100% 0,rgba(62,145,255,.11),transparent 28%),linear-gradient(#f9fcff,#f2f6fb)}
a{text-decoration:none;color:inherit}button,input{font:inherit}.app{width:min(var(--max),100%);min-height:100vh;margin:auto;background:rgba(255,255,255,.66);padding-bottom:96px}.page{padding:18px}
.top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.brand{display:flex;align-items:center;gap:11px}
.logo{width:48px;height:48px;border-radius:15px;background:linear-gradient(145deg,#0e4ba7,#3d94ff);color:#fff;display:grid;place-items:center;font-weight:900;font-size:22px;box-shadow:0 10px 25px rgba(23,105,232,.24)}
.brand h1{margin:0;font-size:18px;color:var(--navy);letter-spacing:-.3px}.brand p{margin:2px 0 0;color:var(--muted);font-size:11px}
.iconbtn{width:42px;height:42px;border:1px solid var(--line);border-radius:14px;background:#fff;display:grid;place-items:center;box-shadow:var(--shadow)}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.hero{padding:20px;color:#fff;background:linear-gradient(135deg,#1262dc,#328bff);position:relative;overflow:hidden}
.hero:after{content:"";position:absolute;width:170px;height:170px;right:-65px;bottom:-70px;border-radius:50%;background:rgba(255,255,255,.1)}
.hero-inner{display:flex;align-items:center;gap:14px;position:relative;z-index:2}.hero-copy{flex:1}.hero small{opacity:.86}.hero h2{margin:3px 0 0;font-size:27px;letter-spacing:-.6px}.hero p{margin:6px 0 0;font-size:12px;opacity:.92}
.avatar{width:76px;height:76px;border-radius:50%;background:#dcecff;border:4px solid #fff;display:grid;place-items:center;font-size:31px;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}
.install{display:none;margin-top:12px;padding:13px 14px;border-radius:17px;background:#fff;border:1px solid var(--line);align-items:center;gap:11px;box-shadow:var(--shadow)}.install.show{display:flex}.install .i{width:40px;height:40px;border-radius:12px;background:#eaf3ff;color:var(--primary);display:grid;place-items:center}.install strong{display:block;font-size:12px;color:var(--navy)}.install small{font-size:10px;color:var(--muted)}.install button{margin-left:auto;border:0;border-radius:11px;padding:9px 12px;background:var(--primary);color:#fff;font-weight:800}
.section{display:flex;align-items:center;justify-content:space-between;margin:20px 3px 10px}.section h3{margin:0;font-size:17px;color:var(--navy)}.section a{font-size:11px;color:var(--primary);font-weight:800}
.status{padding:14px}.now{display:flex;align-items:center;gap:12px;padding:14px;border-radius:18px;background:linear-gradient(135deg,#eafaf2,#eff8ff);border:1px solid #ddf2e8}.now .circle{width:49px;height:49px;border-radius:15px;background:var(--ok);color:#fff;display:grid;place-items:center}.now strong{display:block;color:#0c8d52;font-size:18px}.now small{display:block;margin-top:2px;color:var(--muted);font-size:11px}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:10px}.stat{padding:12px 10px;border:1px solid var(--line);border-radius:17px;min-height:102px}.stat .si{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;margin-bottom:9px}.stat.in .si{background:var(--oksoft);color:var(--ok)}.stat.out .si{background:var(--badsoft);color:var(--bad)}.stat.pay .si{background:var(--warnsoft);color:#c97900}.stat span{display:block;color:var(--muted);font-size:10px}.stat b{display:block;margin-top:4px;font-size:17px;color:var(--navy)}
.quickgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick{min-height:90px;border-radius:18px;padding:14px;position:relative;box-shadow:var(--shadow);border:1px solid transparent}.quick .qi{position:absolute;right:12px;top:12px;width:37px;height:37px;border-radius:12px;display:grid;place-items:center}.quick strong{position:absolute;left:14px;bottom:28px;font-size:12px}.quick small{position:absolute;left:14px;bottom:12px;font-size:9.5px}.quick.primary{background:linear-gradient(135deg,#1769e8,#3c91ff);color:#fff}.quick.primary .qi{background:rgba(255,255,255,.18)}.quick.purple{background:#f4f0ff;border-color:#e8defe}.quick.purple .qi{background:#e9e0ff;color:#6d44da}.quick.orange{background:#fff4e8;border-color:#ffe5c4}.quick.orange .qi{background:#ffe3ba;color:#c67800}.quick.red{background:#fff0f3;border-color:#ffe0e6}.quick.red .qi{background:#ffdbe2;color:#d84257}.quick.purple,.quick.orange,.quick.red{color:var(--navy)}.quick.purple small,.quick.orange small,.quick.red small{color:var(--muted)}
.notice{padding:14px;display:flex;gap:11px}.notice .ni{width:41px;height:41px;border-radius:13px;background:#fff0f2;color:var(--bad);display:grid;place-items:center}.notice h4{margin:1px 0 4px;font-size:12px;color:var(--navy)}.notice p{margin:0;font-size:10.5px;color:var(--muted);line-height:1.45}
.balance{padding:16px;display:flex;justify-content:space-between;align-items:center}.balance small{display:block;color:var(--muted);font-size:10px}.balance b{display:block;margin-top:2px;font-size:27px;color:var(--navy)}.chip{padding:8px 11px;border-radius:999px;background:#eaf3ff;color:var(--primary);font-size:10px;font-weight:800}
.bottom{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:min(var(--max),100%);height:82px;display:grid;grid-template-columns:1fr 1fr 1.16fr 1fr 1fr;background:rgba(255,255,255,.95);backdrop-filter:blur(18px);border-top:1px solid var(--line);padding:9px 9px 12px;z-index:50}.nav{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;font-size:9.5px;color:#7a89a3;font-weight:750}.nav.active{color:var(--primary)}.nav .ico{font-size:20px}.qrnav{position:relative;top:-18px}.fab{width:62px;height:62px;border-radius:50%;background:linear-gradient(145deg,#46a2ff,#1267e8);border:6px solid #f5f8fd;display:grid;place-items:center;color:#fff;font-size:26px;box-shadow:0 12px 28px rgba(23,105,232,.35)}
.head{display:flex;align-items:flex-start;gap:10px;margin:4px 2px 15px}.back{width:38px;height:38px;border-radius:12px;border:1px solid var(--line);background:#fff;display:grid;place-items:center;box-shadow:var(--shadow)}.head h2{margin:0;font-size:23px;color:var(--navy)}.head p{margin:3px 0 0;font-size:11px;color:var(--muted)}
.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;background:#edf3f9;border-radius:14px;padding:4px;margin-bottom:14px}.tab{border:0;background:transparent;border-radius:10px;padding:9px;color:#667796;font-size:10.5px;font-weight:800}.tab.active{background:#fff;color:var(--primary);box-shadow:0 5px 14px rgba(24,54,103,.08)}
.day{margin:16px 3px 8px;font-size:12px;font-weight:850;color:var(--navy)}.entry{display:grid;grid-template-columns:52px 1fr auto;align-items:center;gap:11px;padding:13px 14px;margin-bottom:8px}.entry .time{font-size:15px;font-weight:900;color:var(--navy)}.etype{display:flex;align-items:center;gap:9px}.eicon{width:34px;height:34px;border-radius:11px;display:grid;place-items:center}.in .eicon{background:var(--oksoft);color:var(--ok)}.out .eicon{background:var(--badsoft);color:var(--bad)}.etype strong{display:block;font-size:11px;color:var(--navy)}.etype small{display:block;font-size:9.4px;color:var(--muted);margin-top:2px}.tag{font-size:9px;background:#f1f5f9;color:#6d7d96;padding:6px 8px;border-radius:999px}
.balancehero{padding:19px;color:#fff;background:linear-gradient(135deg,#1263df,#2f87fb);position:relative;overflow:hidden}.balancehero small{opacity:.85}.balancehero .big{font-size:34px;font-weight:900;margin-top:4px}.summary3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.sum{padding:11px;border-radius:14px;background:#fff;border:1px solid var(--line)}.sum small{display:block;font-size:8.8px;color:var(--muted)}.sum strong{display:block;margin-top:3px;font-size:12px;color:var(--navy)}.sum.paid strong{color:var(--ok)}.sum.remain strong{color:var(--bad)}
.paylist{overflow:hidden}.payrow{display:grid;grid-template-columns:39px 1fr auto;gap:10px;align-items:center;padding:13px 14px;border-bottom:1px solid var(--line)}.payrow:last-child{border-bottom:0}.payicon{width:37px;height:37px;border-radius:12px;background:var(--oksoft);color:var(--ok);display:grid;place-items:center}.payrow strong{display:block;font-size:12px;color:var(--navy)}.payrow small{display:block;margin-top:2px;font-size:9.3px;color:var(--muted)}.paidtag{font-size:9px;color:var(--ok);font-weight:850}
.profilehero{padding:22px;text-align:center;color:#fff;background:linear-gradient(145deg,#1262dc,#2c82f7)}.pavatar{width:86px;height:86px;border-radius:50%;border:4px solid #fff;background:#dcecff;margin:auto;display:grid;place-items:center;font-size:36px;overflow:hidden}.pavatar img{width:100%;height:100%;object-fit:cover}.profilehero h2{margin:8px 0 2px;font-size:20px}.profilehero p{margin:0;font-size:10.5px;opacity:.9}.infocard{overflow:hidden;margin-top:10px}.inforow{display:grid;grid-template-columns:35px 1fr auto;gap:10px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line)}.inforow:last-child{border-bottom:0}.ri{width:33px;height:33px;border-radius:11px;background:#f1f5f9;display:grid;place-items:center}.inforow strong{display:block;font-size:11px}.inforow small{display:block;margin-top:2px;font-size:9.2px;color:var(--muted)}.logout{width:100%;margin-top:11px;border:1px solid #ffdce2;background:#fff5f6;color:var(--bad);border-radius:15px;padding:13px;font-size:11px;font-weight:850}
.qrstage{height:510px;border-radius:25px;overflow:hidden;background:#111;position:relative;box-shadow:var(--shadow)}.qrstage video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.overlay{position:absolute;inset:0;background:linear-gradient(rgba(0,0,0,.16),rgba(0,0,0,.48));display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;text-align:center}.overlay h2{margin:0;font-size:24px}.overlay p{margin:5px 0 24px;font-size:10.5px;opacity:.85}.scan{width:228px;height:228px;position:relative}.corner{position:absolute;width:48px;height:48px;border-color:#55b5ff;border-style:solid}.c1{left:0;top:0;border-width:5px 0 0 5px;border-radius:18px 0 0}.c2{right:0;top:0;border-width:5px 5px 0 0;border-radius:0 18px 0 0}.c3{left:0;bottom:0;border-width:0 0 5px 5px;border-radius:0 0 0 18px}.c4{right:0;bottom:0;border-width:0 5px 5px 0;border-radius:0 0 18px}.scanline{position:absolute;left:12px;right:12px;top:50%;height:2px;background:#5cc0ff;box-shadow:0 0 15px #5cc0ff;animation:scan 2s ease-in-out infinite}@keyframes scan{0%,100%{transform:translateY(-84px)}50%{transform:translateY(84px)}}.torch{position:absolute;bottom:27px;border:1px solid rgba(255,255,255,.35);background:rgba(0,0,0,.35);color:#fff;border-radius:999px;padding:10px 15px;font-size:10.5px}.qrinfo{margin-top:11px;padding:12px 13px;border-radius:15px;background:#eef6ff;border:1px solid #dcecff;color:#47668f;font-size:10px;line-height:1.5}
.loginpage{min-height:100vh;display:grid;place-items:center;padding:24px 18px;background:linear-gradient(180deg,rgba(19,94,205,.73),rgba(39,128,246,.10) 44%,#f3f7fc 76%),radial-gradient(circle at 50% -10%,#76bcff,transparent 45%),#f3f7fc}.loginwrap{width:min(430px,100%)}.loginbrand{text-align:center;color:#fff;margin-bottom:18px}.loginbrand .logo{width:72px;height:72px;border-radius:22px;margin:auto;font-size:31px}.loginbrand h1{margin:11px 0 3px;font-size:25px}.loginbrand p{margin:0;font-size:11.5px}.logincard{padding:22px 20px;border-radius:26px}.logincard h2{text-align:center;margin:0;font-size:23px;color:var(--navy)}.sub{text-align:center;color:var(--muted);font-size:11px;line-height:1.5;margin:7px 0 18px}.field{margin-bottom:12px}.field label{display:block;font-size:9.8px;font-weight:850;color:#536684;margin:0 0 6px 2px}.input{height:50px;border:1px solid #dce6f3;border-radius:15px;background:#fff;display:flex;align-items:center;gap:9px;padding:0 13px}.input:focus-within{border-color:#72aaff;box-shadow:0 0 0 3px rgba(23,105,232,.08)}.input input{flex:1;min-width:0;border:0;outline:0;background:transparent;font-size:12.5px}.input button{border:0;background:transparent}.opts{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#60718e;margin:4px 1px 14px}.opts a{color:var(--primary);font-weight:750}.primarybtn{width:100%;border:0;border-radius:15px;padding:14px;background:linear-gradient(135deg,#338fff,#1266e5);color:#fff;font-size:12.5px;font-weight:850;box-shadow:0 12px 26px rgba(23,105,232,.24)}.note{margin-top:11px;padding:10px 11px;border-radius:13px;background:#eef6ff;color:#5a7397;font-size:9.8px}.error{display:none;background:#fff0f2;color:#b93647;border:1px solid #ffdce2;border-radius:12px;padding:9px 11px;font-size:10px;margin-bottom:11px}
.toast{position:fixed;left:50%;bottom:100px;transform:translate(-50%,18px);opacity:0;z-index:99;max-width:88%;background:#102649;color:#fff;padding:10px 14px;border-radius:13px;font-size:10.5px;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}.empty{padding:22px;text-align:center;color:var(--muted);font-size:10.5px}
@media(max-width:380px){.page{padding-left:14px;padding-right:14px}.hero h2{font-size:24px}.avatar{width:68px;height:68px}}
