    :root{--ink:#42343e;--muted:#96838d;--pink:#e96f91;--pinkdark:#cd5278;--line:#f1e7e5;--paper:#fffcf9;--cream:#fff8f1;--mint:#dff4e8;--gold:#eeb751;--shadow:0 12px 32px rgba(126,74,86,.08)}
    *{box-sizing:border-box}html{min-height:100%;background:#faefe8}body{margin:0;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft Yahei","Noto Sans SC",sans-serif;letter-spacing:.1px;-webkit-tap-highlight-color:transparent}
    button,input,textarea{font:inherit}button{cursor:pointer;border:0}button:disabled{cursor:not-allowed;opacity:.44}input,textarea{outline:none}a{color:var(--pinkdark)}
    .backdrop{position:fixed;inset:0;z-index:-1;background:radial-gradient(circle at 10% 14%,#fbe4dc 0,transparent 35%),radial-gradient(circle at 88% 75%,#f5deea 0,transparent 35%),#faf3eb}
    .shell{width:100%;max-width:480px;min-height:100vh;min-height:100dvh;margin:auto;background:linear-gradient(180deg,#fffaf6 0%,#fffdfa 60%);box-shadow:0 0 65px rgba(110,65,74,.11);position:relative;padding-bottom:106px}
    .top{padding:24px 22px 10px;position:relative}
    .topline{display:flex;align-items:center;justify-content:space-between;gap:10px}.brand{display:flex;align-items:center;gap:11px}.logo{width:47px;height:47px;display:flex;align-items:center;justify-content:center;border-radius:17px;font-size:25px;background:#ffecb6;box-shadow:0 5px 12px #f5cc7370;transform:rotate(-5deg)}
    h1{margin:0;font-size:22px;letter-spacing:-.5px;font-weight:800}.eyebrow{margin:2px 0 0;color:#a28e98;font-size:11px;letter-spacing:1px}.pill{border-radius:100px;background:#fff;border:1px solid #f5e9e6;padding:8px 11px;font-size:11px;color:#846775;font-weight:700;box-shadow:0 4px 15px #dac1c123}.pill.online{background:#ecfff5;color:#398969;border-color:#d5efdf}
    .rolebar{margin-top:20px;border:1px solid #f4e8e5;background:#fff;box-shadow:0 4px 18px #a8797510;border-radius:20px;padding:7px;display:flex;align-items:center;gap:6px}.rolebtn{flex:1;padding:10px 8px;border-radius:14px;background:transparent;color:#a48f96;font-size:13px;font-weight:750;transition:.15s}.rolebtn.selected{background:#fee6eb;color:#c54b74;box-shadow:0 4px 9px #f4c9d05e}.rolebar-label{margin:0 5px;font-size:10px;color:#bea6aa;white-space:nowrap}
    .main{padding:9px 20px 24px}.hello{padding:12px 2px 17px}.hello h2{margin:0;font-size:23px;letter-spacing:-.55px;font-weight:820}.hello p{margin:7px 0 0;color:var(--muted);font-size:12.5px}
    .wallet{position:relative;overflow:hidden;min-height:186px;padding:25px 24px 22px;border:1px solid #ffe8cd;background:linear-gradient(124deg,#ffe6bf 0%,#ffdbdd 67%,#fbe0ef 100%);border-radius:29px;box-shadow:0 18px 28px rgba(215,128,111,.14)}
    .wallet:before{content:"";position:absolute;width:205px;height:205px;border:1px solid rgba(255,255,255,.42);border-radius:50%;top:-100px;right:-56px}.wallet:after{content:"";position:absolute;width:160px;height:160px;background:rgba(255,255,255,.18);border-radius:50%;bottom:-125px;right:13px}
    .wallet .cap{font-size:12px;position:relative;z-index:1;color:#855c66;font-weight:700}.wallet .coins{position:relative;z-index:1;display:flex;align-items:baseline;gap:8px;margin-top:9px}.wallet .value{font-size:47px;letter-spacing:-2px;color:#743d53;line-height:1.22;font-weight:860;font-variant-numeric:tabular-nums}.wallet .unit{font-size:13px;color:#8f6071;font-weight:700}.wallet .tip{position:relative;z-index:1;display:inline-flex;align-items:center;gap:4px;background:rgba(255,255,255,.53);padding:7px 11px;border-radius:12px;color:#8b6470;font-size:11px;margin-top:17px}.wallet-sun{position:absolute;right:24px;top:40px;font-size:76px;filter:drop-shadow(0 11px 8px #dc99723d);transform:rotate(14deg)}
    .stats{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin:13px 0 21px}.stat{background:#fff;padding:16px;border:1px solid var(--line);border-radius:20px;box-shadow:0 6px 15px rgba(109,74,84,.035)}.stat-k{font-size:11px;color:var(--muted);margin-bottom:7px}.stat-v{font-size:23px;font-weight:830;letter-spacing:-.9px;font-variant-numeric:tabular-nums}.stat-v.gain{color:#399b77}.stat-v.spend{color:#d77b88}.stat small{font-size:12px;color:#ad9c9e}
    .section-head{display:flex;justify-content:space-between;align-items:center;gap:9px;margin:25px 2px 12px}.section-head h3{margin:0;font-size:17px;font-weight:850}.hint{font-size:11px;color:#a8989c}.linkbtn{color:var(--pinkdark);padding:6px 0;font-size:12px;font-weight:700;background:transparent}
    .actions{display:grid;grid-template-columns:1fr 1fr;gap:11px}.action-tile{display:flex;align-items:center;text-align:left;gap:12px;padding:15px 14px;background:#fff;border:1px solid #f0e3e4;border-radius:20px;box-shadow:0 7px 15px #9c70721a}.action-tile:nth-child(1){background:#fff0e7}.action-tile:nth-child(2){background:#fce9ef}.action-ico{height:35px;width:35px;border-radius:12px;background:#fff9;display:grid;place-items:center;font-size:20px}.action-tile strong{font-size:12.5px;display:block}.action-tile span.sub{display:block;color:#9c818d;font-size:10px;margin-top:4px}
    .surface{background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:0 5px 13px rgba(113,75,90,.03)}
    .feed{padding:5px 14px}.feed-row{display:flex;align-items:center;gap:12px;padding:14px 1px;border-bottom:1px solid #f6eeee}.feed-row:last-child{border-bottom:0}.feed-ico{width:39px;height:39px;border-radius:14px;display:grid;place-items:center;flex:none;background:#f8edf0;font-size:19px}.feed-info{flex:1;min-width:0}.feed-title{font-size:12.5px;font-weight:720;overflow-wrap:anywhere}.feed-sub{font-size:10px;color:#af9fa4;margin-top:5px}.amount{font-size:14px;font-weight:850;white-space:nowrap}.amount.pos{color:#43a37e}.amount.neg{color:#d87c89}
    .subhead{margin:16px 2px 14px}.subhead h2{font-size:24px;margin:0 0 7px;letter-spacing:-.7px}.subhead p{font-size:12px;color:var(--muted);margin:0;line-height:1.7}
    .catalog-list{display:grid;gap:11px}.catalog{display:flex;align-items:center;gap:14px;padding:15px;background:#fff;border:1px solid var(--line);border-radius:21px;box-shadow:0 5px 12px #b0838f08;position:relative}.catalog-ico{height:55px;width:55px;display:grid;place-items:center;border-radius:17px;background:#fff2ea;font-size:27px;flex:none}.catalog:nth-child(even) .catalog-ico{background:#fdf0f5}.catalog-info{flex:1;min-width:0}.catalog-title{font-size:13px;font-weight:800;line-height:1.45}.catalog-desc{font-size:10.5px;color:#ac98a1;line-height:1.5;margin:4px 0 7px;overflow-wrap:anywhere}.catalog-price{font-size:12px;color:#d77844;font-weight:810}.catalog-price.reward{color:#439b79}.roundbtn{background:#fce4eb;color:#c85476;font-size:12px;padding:10px 12px;min-width:61px;border-radius:12px;font-weight:750}.roundbtn.edit{background:#faf3f4;color:#856f77}.roundbtn.positive{background:#e7f7ed;color:#388869}.roundbtn.danger{background:#fff0ee;color:#b56768}.tiny{display:block;font-size:10px;color:#b69eaa;margin-top:5px}
    .bar{display:flex;gap:8px;align-items:center;justify-content:space-between;margin:16px 2px 12px}.balance-chip{font-size:12px;padding:8px 12px;border-radius:22px;background:#fff5db;color:#99652c;font-weight:800}.add{background:#e97193;color:white;border-radius:13px;padding:10px 14px;font-size:12px;font-weight:750;box-shadow:0 5px 14px #e9719338}
    .seg{display:flex;gap:7px;overflow:auto;scrollbar-width:none;margin:12px 0 15px}.seg::-webkit-scrollbar{display:none}.seg button{white-space:nowrap;background:#fff;border:1px solid #f1e7e7;color:#9e8891;padding:8px 13px;border-radius:99px;font-size:11px;font-weight:750}.seg button.current{background:#fce4ec;color:#c9577b;border-color:#f9d6e2}
    .claim,.order{padding:14px 15px;margin-bottom:10px}.claim-top{display:flex;gap:12px;align-items:center;justify-content:space-between}.claim .name,.order .name{font-size:13px;font-weight:800}.time{color:#ab9aa0;font-size:10px;margin-top:6px}.claim .note{font-size:11px;line-height:1.6;color:#8a747f;margin-top:9px}.claim-actions{display:flex;gap:8px;margin-top:11px}.claim-actions button{flex:1}.tag{display:inline-block;padding:5px 8px;border-radius:8px;background:#fff3dd;color:#aa7a35;font-weight:800;font-size:10px;white-space:nowrap}.tag.done{background:#e6f7ec;color:#48916e}.tag.bad{background:#f7eeee;color:#aa8b8b}.empty{text-align:center;padding:37px 18px;color:#9f8e97;border:1px dashed #f1dfe0;background:#fffefd;border-radius:20px;font-size:12px;line-height:1.9}.empty .picture{font-size:34px;display:block;margin-bottom:8px}
    .banner{padding:15px;border-radius:18px;background:#fff0e9;border:1px solid #f9e2dc;margin-bottom:12px;display:flex;gap:12px;align-items:center}.banner.rose{background:#fff0f4;border-color:#f9e1ea}.banner strong{font-size:12px}.banner p{font-size:10.5px;line-height:1.7;color:#987f86;margin:5px 0 0}.banner .bico{font-size:27px}
    .profile{padding:18px;margin-bottom:12px}.profile .label{font-size:11px;color:#a58c96;margin-bottom:7px}.profile h3{margin:0;font-size:16px}.profile p{font-size:11px;line-height:1.8;color:#a08c96}.code{background:#fff4dc;border:1px dashed #eac68f;padding:14px 11px;font-size:17px;letter-spacing:1px;border-radius:12px;font-weight:800;color:#976b34;overflow-wrap:anywhere;margin:10px 0}.subtlebtn{background:#fff5f7;color:#c35c7b;border-radius:12px;padding:11px 13px;font-size:12px;font-weight:800}.outlinebtn{background:white;border:1px solid #eddcdd;color:#957682;border-radius:12px;padding:11px 13px;font-size:12px;font-weight:750}.dangerbtn{background:#fff3f1;color:#bd7474;border-radius:12px;padding:11px 13px;font-size:12px;font-weight:750}
    .nav{position:fixed;z-index:20;bottom:0;width:100%;max-width:480px;display:grid;grid-template-columns:repeat(5,1fr);background:#fffefaec;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid #f2e6e7;padding:11px 8px max(12px,env(safe-area-inset-bottom));box-shadow:0 -8px 24px #c6a7a71a}.nav button{display:grid;justify-items:center;gap:5px;background:transparent;color:#ad9a9f;font-size:10px;font-weight:760;padding:5px 0;border-radius:13px}.nav button.active{color:#d85981}.nav .nicon{font-size:21px;line-height:1.15}.nav button.active .nicon{filter:drop-shadow(0 3px 4px #ea8bad44)}
    .shade{position:fixed;z-index:50;inset:0;background:#4e34405e;display:flex;align-items:flex-end;justify-content:center;backdrop-filter:blur(3px)}.sheet{width:100%;max-width:480px;background:#fffdfa;border-radius:28px 28px 0 0;max-height:min(88dvh,820px);overflow-y:auto;padding:24px 22px max(27px,env(safe-area-inset-bottom));box-shadow:0 -15px 40px #5136412a;animation:up .23s ease-out}@keyframes up{from{transform:translateY(35px);opacity:.6}to{transform:translateY(0);opacity:1}}.sheet-top{display:flex;justify-content:space-between;align-items:start;gap:10px;margin-bottom:18px}.sheet-top h3{font-size:21px;margin:0}.sheet-top p{font-size:11px;color:var(--muted);line-height:1.65;margin:8px 0 0}.close{background:#f8edef;border-radius:50%;font-size:23px;color:#9c7b89;width:34px;height:34px;line-height:1}.field{display:grid;gap:8px;margin:13px 0}.field label{font-size:12px;font-weight:760;color:#765d6a}.field input,.field textarea{width:100%;padding:13px 14px;border:1px solid #ecdfe0;background:#fff;border-radius:13px;color:#493440;font-size:14px;resize:vertical}.field input:focus,.field textarea:focus{border-color:#e78ba6;box-shadow:0 0 0 3px #fce5eb}.field textarea{min-height:80px}.primary{width:100%;background:linear-gradient(110deg,#e96b91,#d95b85);color:#fff;border-radius:14px;font-size:14px;font-weight:800;padding:14px 17px;box-shadow:0 8px 16px #da779136}.secondary{width:100%;background:#fff1f4;color:#c45679;border-radius:14px;font-size:13px;font-weight:770;padding:13px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.smallnote{color:#a68e96;font-size:11px;line-height:1.75}.sheet-actions{display:grid;gap:9px;margin-top:22px}.modal-icon{font-size:34px;margin-bottom:10px}
    .toast{position:fixed;z-index:90;left:50%;transform:translateX(-50%) translateY(-10px);bottom:97px;max-width:calc(100% - 40px);padding:12px 17px;border-radius:14px;white-space:normal;background:#403039;color:white;font-size:12px;text-align:center;box-shadow:0 10px 27px #30202d3b;pointer-events:none;opacity:0;transition:.2s}.toast.show{transform:translateX(-50%) translateY(0);opacity:1}
    .muted{color:var(--muted)}.text-center{text-align:center}.space{height:8px}.tiny-note{margin:18px 0 0;text-align:center;font-size:10px;color:#baa9ae;line-height:1.6}.disclaimer{padding:12px 14px;border-radius:14px;background:#fff7eb;font-size:10.5px;line-height:1.75;color:#aa8a6f;margin-top:14px}
    .auth-title{font-size:25px;font-weight:840;margin:15px 0 8px}.auth-text{font-size:12px;line-height:1.8;color:#97818d}.twochoices{display:grid;gap:12px;margin-top:20px}.choice{padding:22px 18px;text-align:left;border:1px solid #f0dce4;background:white;border-radius:18px}.choice b{display:block;margin:8px 0 6px}.choice span{font-size:11px;color:#9d8992}.card-pink{background:#fff0f4}.lock{font-size:10px;background:#fff3ea;border-radius:9px;padding:10px 12px;line-height:1.7;color:#977e79}.balance-inline{font-weight:800;color:#9f6b37;font-variant-numeric:tabular-nums}
    @media(min-width:720px){.shell{margin:24px auto;min-height:calc(100vh - 48px);border-radius:32px;overflow:hidden}.nav{bottom:24px;border-radius:0 0 32px 32px}.shade{align-items:center}.sheet{border-radius:28px;padding-bottom:27px}.top{padding-top:26px}}
    @media(max-width:370px){.top{padding-left:15px;padding-right:15px}.main{padding-left:14px;padding-right:14px}.wallet .value{font-size:40px}.wallet-sun{font-size:60px}.rolebtn{font-size:12px}.catalog{gap:10px;padding:12px}.catalog-ico{width:47px;height:47px}}
  .notice{background:#fff6d9;border:1px solid #f5e0a4;border-radius:14px;padding:13px;color:#8c6930;font-size:12px;line-height:1.65;margin:11px 0}
  .login-links{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}
  .login-links button{border:1px solid #f2dde4;background:#fff6f9;color:#b85679;border-radius:12px;padding:14px 5px;font-size:12px;font-weight:760}
  .auth-note{padding:11px 0;color:#9b8792;font-size:11px;line-height:1.75}
  .spinner{text-align:center;padding:48px 15px;color:#947c85;font-size:13px;line-height:1.8}
  .sync-status{font-size:11px;color:#a68d97;margin-top:7px}
  .choice-button{display:flex;align-items:center;gap:10px;justify-content:space-between}
  .field input::placeholder,.field textarea::placeholder{color:#c3adb6}
