/* ============================================================
   海吧洗车 HiWash — Urban Fresh & Clean Design
   Mobile-first WAP · 480px max
   都市轻快风格 · 蓝色主题
   ============================================================ */

/* ---------- Design Tokens ---------- */
:root {
    /* 品牌色系 - 海洋蓝 */
    --c-primary: #2196F3;
    --c-primary-dark: #1976D2;
    --c-primary-light: #E3F2FD;
    --c-primary-50: #F5F9FF;
    --c-primary-gradient: linear-gradient(135deg, #1976D2 0%, #42A5F5 100%);

    /* 辅助色 */
    --c-accent: #00BCD4;
    --c-accent-light: #E0F7FA;

    /* 状态色 */
    --c-success: #4CAF50;
    --c-success-light: #E8F5E9;
    --c-warning: #FF9800;
    --c-warning-light: #FFF3E0;
    --c-danger: #F44336;
    --c-danger-light: #FFEBEE;

    /* 文本色 */
    --c-text: #212121;
    --c-text-2: #616161;
    --c-text-3: #9E9E9E;
    --c-text-4: #BDBDBD;

    /* 背景 */
    --c-bg: #F5F7FA;
    --c-surface: #FFFFFF;
    --c-line: #EEEEEE;
    --c-line-dark: #E0E0E0;

    /* 圆角 */
    --r: 12px;
    --r-lg: 20px;
    --r-full: 999px;

    /* 阴影 */
    --shadow-xs: 0 1px 3px rgba(33,150,243,.06);
    --shadow: 0 2px 12px rgba(33,150,243,.08);
    --shadow-lg: 0 8px 32px rgba(33,150,243,.12);
    --shadow-card: 0 2px 8px rgba(0,0,0,.04);

    /* 导航高度 */
    --nav-h: 60px;
    --topbar-h: 48px;

    /* 字体 */
    --font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
}

/* ---------- Reset ---------- */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{font-size:14px;-webkit-text-size-adjust:100%}
body{font-family:var(--font);background:var(--c-bg);color:var(--c-text);line-height:1.6;max-width:480px;margin:0 auto;min-height:100vh;position:relative;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:var(--c-primary);text-decoration:none}
img{max-width:100%;display:block}
button,input,select,textarea{font:inherit}

/* ---------- SVG Icon Base ---------- */
.icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}
.icon svg{width:100%;height:100%;fill:currentColor}
.icon-lg{width:28px;height:28px}
.icon-xl{width:36px;height:36px}
.icon-avatar{width:48px;height:48px;border-radius:50%;background:var(--c-primary-light);color:var(--c-primary);padding:10px}

/* ---------- Topbar ---------- */
.top-bar{position:sticky;top:0;z-index:100;background:var(--c-surface);height:var(--topbar-h);display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--c-line)}
.top-bar.transparent{background:transparent;border:none;color:#fff}
.top-bar-title{font-size:17px;font-weight:600;color:var(--c-text);letter-spacing:.2px}
.top-bar.transparent .top-bar-title{color:#fff}
.top-bar-back{display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--c-text-2)}
.top-bar.transparent .top-bar-back{color:#fff}
.top-bar-action{font-size:13px;font-weight:600;color:var(--c-primary)}

/* ---------- Bottom Nav (5-Tab) ---------- */
.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;height:var(--nav-h);background:var(--c-surface);display:flex;align-items:center;justify-content:space-around;border-top:1px solid var(--c-line);z-index:100;padding-bottom:env(safe-area-inset-bottom)}
.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--c-text-3);font-size:10px;font-weight:500;padding:6px 10px;position:relative;transition:color .2s;text-decoration:none}
.nav-item .icon{width:22px;height:22px}
.nav-item.active{color:var(--c-primary);font-weight:700}
.nav-item.active .icon{color:var(--c-primary)}

/* 中间扫码按钮突出 */
.nav-item.scan-btn{position:relative;margin-top:-24px}
.nav-scan-circle{width:56px;height:56px;border-radius:50%;background:var(--c-primary-gradient, linear-gradient(135deg, #42A5F5 0%, #1E88E5 50%, #1565C0 100%));display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(var(--c-primary-rgb,33,150,243),.45), 0 2px 8px rgba(var(--c-primary-rgb,21,101,192),.3);color:#fff !important;border:3px solid #fff;animation:scan-pulse 2s ease-in-out infinite}
.nav-item.scan-btn .nav-scan-circle .icon{width:28px;height:28px;color:#fff !important}
.nav-item.scan-btn .nav-scan-circle .icon svg{fill:#fff !important}
.nav-item.scan-btn .nav-scan-circle svg{fill:#fff !important}
.nav-item.scan-btn .nav-scan-circle svg path{fill:#fff !important}
.nav-item.scan-btn span:last-child{margin-top:2px;color:var(--c-primary);font-weight:700;font-size:11px}
@keyframes scan-pulse{0%,100%{box-shadow:0 4px 20px rgba(33,150,243,.45), 0 2px 8px rgba(21,101,192,.3)}50%{box-shadow:0 4px 24px rgba(33,150,243,.6), 0 2px 12px rgba(21,101,192,.4)}}

/* ---------- Page Container ---------- */
.page-body{padding:12px 16px calc(var(--nav-h) + 16px)}
.page-body-nn{padding:12px 16px 24px}

/* ---------- Card ---------- */
.card{background:var(--c-surface);border-radius:var(--r);padding:16px;margin-bottom:12px;box-shadow:var(--shadow-card)}
.card-title{font-size:15px;font-weight:700;color:var(--c-text);margin-bottom:12px;display:flex;align-items:center;gap:6px}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 22px;border-radius:var(--r);font-size:14px;font-weight:600;border:none;cursor:pointer;transition:all .2s}
.btn:active{transform:scale(.97);opacity:.9}
.btn-primary{background:var(--c-primary-gradient);color:#fff;box-shadow:0 2px 8px rgba(33,150,243,.25)}
.btn-green{background:var(--c-primary-gradient, linear-gradient(135deg,#43A047,#66BB6A));color:#fff}
.btn-orange{background:linear-gradient(135deg,#F57C00,#FFA726);color:#fff}
.btn-red{background:linear-gradient(135deg,#E53935,#EF5350);color:#fff}
.btn-outline{background:transparent;border:1.5px solid var(--c-primary);color:var(--c-primary)}
.btn-ghost{background:transparent;color:var(--c-primary);padding:6px 12px}
.btn-block{width:100%;display:flex}
.btn-sm{padding:7px 14px;font-size:12px;border-radius:8px}
.btn-lg{padding:14px 28px;font-size:16px;border-radius:var(--r)}
.btn-white{background:#fff;color:var(--c-primary);font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.08)}

/* ---------- Form ---------- */
.form-group{margin-bottom:16px}
.form-label{display:block;font-size:13px;font-weight:600;color:var(--c-text-2);margin-bottom:6px}
.form-input{width:100%;padding:12px 14px;border:1.5px solid var(--c-line-dark);border-radius:var(--r);font-size:14px;color:var(--c-text);background:var(--c-surface);outline:none;transition:all .2s}
.form-input:focus{border-color:var(--c-primary);box-shadow:0 0 0 3px var(--c-primary-light)}
.form-input::placeholder{color:var(--c-text-4)}
select.form-input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%239E9E9E'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}

/* ---------- Stats Grid ---------- */
.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px}
.stats-grid-3{grid-template-columns:repeat(3,1fr)}
.stat-box{background:var(--c-surface);border-radius:var(--r);padding:14px;text-align:center;box-shadow:var(--shadow-card)}
.stat-val{font-size:24px;font-weight:800;color:var(--c-primary);line-height:1.2}
.stat-val.green{color:var(--c-success)}
.stat-val.orange{color:var(--c-warning)}
.stat-lbl{font-size:11px;color:var(--c-text-3);margin-top:4px}

/* ---------- List Item ---------- */
.ls-item{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--c-line)}
.ls-item:last-child{border-bottom:none}
.ls-ico{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff}
.ls-ico.blue{background:var(--c-primary)}
.ls-ico.green{background:var(--c-success)}
.ls-ico.orange{background:var(--c-warning)}
.ls-ico.red{background:var(--c-danger)}
.ls-ico.gray{background:var(--c-text-3)}
.ls-ico.light-blue{background:var(--c-primary-light);color:var(--c-primary)}
.ls-ico.light-green{background:var(--c-success-light);color:var(--c-success)}
.ls-ico.light-orange{background:var(--c-warning-light);color:var(--c-warning)}
.ls-body{flex:1;min-width:0}
.ls-title{font-size:14px;font-weight:600;color:var(--c-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ls-desc{font-size:12px;color:var(--c-text-3);margin-top:2px}
.ls-extra{text-align:right;flex-shrink:0}
.ls-amount{font-size:16px;font-weight:700;color:var(--c-text)}
.ls-sub{font-size:11px;color:var(--c-text-3);margin-top:2px}

/* ---------- Badge ---------- */
.badge{display:inline-block;padding:3px 10px;border-radius:var(--r-full);font-size:11px;font-weight:600;line-height:1.5}
.badge-blue{background:var(--c-primary-light);color:var(--c-primary)}
.badge-green{background:var(--c-success-light);color:var(--c-success)}
.badge-orange{background:var(--c-warning-light);color:var(--c-warning)}
.badge-red{background:var(--c-danger-light);color:var(--c-danger)}
.badge-gray{background:#F5F5F5;color:var(--c-text-3)}

/* ---------- Status Dot ---------- */
.dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.dot-green{background:var(--c-success)}
.dot-blue{background:var(--c-primary)}
.dot-red{background:var(--c-danger)}
.dot-gray{background:var(--c-text-3)}

/* ============================================================
   INDEX / PORTAL PAGE
   ============================================================ */
.index-page{min-height:100vh;background:var(--c-index-bg, linear-gradient(160deg,#0D47A1 0%,#1976D2 40%,#42A5F5 100%));display:flex;flex-direction:column;align-items:center;padding:0 24px}
.idx-logo{margin-top:80px;width:72px;height:72px;border-radius:20px;background:rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;margin-bottom:20px;backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.2)}
.idx-logo svg{width:40px;height:40px;fill:#fff}
.idx-title{color:#fff;font-size:28px;font-weight:800;letter-spacing:1px;margin-bottom:6px;text-align:center}
.idx-sub{color:rgba(255,255,255,.8);font-size:15px;margin-bottom:6px;text-align:center}
.idx-desc{color:rgba(255,255,255,.5);font-size:13px;text-align:center;margin-bottom:44px}
.idx-cards{width:100%;max-width:360px;display:flex;flex-direction:column;gap:14px}
.idx-card{display:flex;align-items:center;gap:16px;background:rgba(255,255,255,.97);border-radius:var(--r);padding:18px 20px;color:var(--c-text);transition:transform .15s;box-shadow:var(--shadow)}
.idx-card:active{transform:scale(.98)}
.idx-card-icon{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff}
.idx-card-icon.c-blue{background:var(--c-primary-gradient)}
.idx-card-icon.c-green{background:var(--c-idx-green, linear-gradient(135deg,#43A047,#66BB6A))}
.idx-card-icon.c-purple{background:var(--c-idx-purple, linear-gradient(135deg,#7B1FA2,#AB47BC))}
.idx-card-icon svg{width:24px;height:24px;fill:#fff}
.idx-card h3{font-size:16px;font-weight:700;margin-bottom:2px}
.idx-card p{font-size:12px;color:var(--c-text-3)}
.idx-footer{margin-top:auto;padding:32px 0 20px;color:rgba(255,255,255,.3);font-size:11px}

/* ============================================================
   LOGIN PAGES
   ============================================================ */
.login-page{min-height:100vh;display:flex;flex-direction:column;background:var(--c-surface)}
.login-hd{padding:60px 24px 28px;text-align:center}
.login-icon{width:60px;height:60px;border-radius:16px;display:flex;align-items:center;justify-content:center;margin:0 auto 18px;color:#fff}
.login-icon.c-blue{background:var(--c-primary-gradient)}
.login-icon.c-green{background:var(--c-idx-green, linear-gradient(135deg,#43A047,#66BB6A))}
.login-icon.c-purple{background:var(--c-idx-purple, linear-gradient(135deg,#7B1FA2,#AB47BC))}
.login-icon svg{width:30px;height:30px;fill:#fff}
.login-title{font-size:24px;font-weight:800;color:var(--c-text);margin-bottom:6px}
.login-sub{font-size:13px;color:var(--c-text-3)}
.login-form{padding:20px 24px;flex:1}
.login-footer{padding:16px 24px;text-align:center;font-size:13px;color:var(--c-text-3)}
.login-footer a{color:var(--c-primary);font-weight:600}
.login-divider{display:flex;align-items:center;gap:10px;margin:20px 0;color:var(--c-text-3);font-size:12px}
.login-divider::before,.login-divider::after{content:'';flex:1;height:1px;background:var(--c-line)}

/* ============================================================
   USER HOME — 海吧洗车首页
   ============================================================ */
.u-header{background:var(--c-primary-gradient);padding:24px 16px 20px;border-radius:0 0 var(--r-lg) var(--r-lg);color:#fff;margin-bottom:14px;position:relative;overflow:hidden}
.u-header::before{content:'';position:absolute;top:-40px;right:-40px;width:120px;height:120px;border-radius:50%;background:rgba(255,255,255,.08)}
.u-header::after{content:'';position:absolute;bottom:-30px;left:-20px;width:80px;height:80px;border-radius:50%;background:rgba(255,255,255,.05)}
.u-greeting{font-size:18px;font-weight:700;margin-bottom:16px;position:relative;z-index:1}
.u-balance{background:rgba(255,255,255,.15);border-radius:var(--r);padding:16px 18px;display:flex;align-items:center;justify-content:space-between;backdrop-filter:blur(8px);position:relative;z-index:1;border:1px solid rgba(255,255,255,.1)}
.u-bal-label{font-size:12px;opacity:.85}
.u-bal-val{font-size:28px;font-weight:800;letter-spacing:-.5px}
.u-bal-btn{background:#fff;color:var(--c-primary);padding:8px 20px;border-radius:var(--r-full);font-size:13px;font-weight:700;border:none;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.1)}

/* Quick Actions - 4 columns */
.qa-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.qa-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 6px;background:var(--c-surface);border-radius:var(--r);font-size:11px;font-weight:600;color:var(--c-text-2);box-shadow:var(--shadow-card);transition:transform .15s}
.qa-item:active{transform:scale(.96)}
.qa-item .icon{width:26px;height:26px;color:var(--c-primary)}
.qa-item .icon.green{color:var(--c-success)}
.qa-item .icon.orange{color:var(--c-warning)}

/* Store Card */
.store-card{display:block;background:var(--c-surface);border-radius:var(--r);padding:16px;margin-bottom:10px;color:var(--c-text);box-shadow:var(--shadow-card);transition:transform .15s}
.store-card:active{transform:scale(.99)}
.sc-name{font-size:15px;font-weight:700;margin-bottom:6px}
.sc-addr{font-size:12px;color:var(--c-text-3);margin-bottom:8px;display:flex;align-items:center;gap:4px}
.sc-addr .icon{width:14px;height:14px;color:var(--c-text-3)}
.sc-meta{display:flex;align-items:center;gap:14px;font-size:11px;color:var(--c-text-3)}
.sc-meta .dot{margin-right:3px}

/* ============================================================
   VEHICLE PAGE — 我的车辆
   ============================================================ */
.vehicle-empty{text-align:center;padding:60px 20px}
.vehicle-empty-icon{width:80px;height:80px;margin:0 auto 20px;color:var(--c-line-dark);opacity:.5}
.vehicle-empty-icon svg{width:100%;height:100%;fill:currentColor}
.vehicle-empty p{font-size:14px;color:var(--c-text-3);margin-bottom:24px}

.vehicle-card{background:var(--c-surface);border-radius:var(--r);padding:16px;margin-bottom:12px;box-shadow:var(--shadow-card);display:flex;align-items:center;gap:14px}
.vehicle-card.default{border-left:3px solid var(--c-primary)}
.vehicle-icon{width:48px;height:48px;border-radius:14px;background:var(--c-primary-light);color:var(--c-primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.vehicle-icon .icon{width:26px;height:26px}
.vehicle-info{flex:1;min-width:0}
.vehicle-plate{font-size:18px;font-weight:800;color:var(--c-text);letter-spacing:1px}
.vehicle-desc{font-size:12px;color:var(--c-text-3);margin-top:2px}
.vehicle-default-tag{display:inline-block;padding:2px 8px;border-radius:var(--r-full);font-size:10px;font-weight:600;background:var(--c-primary-light);color:var(--c-primary);margin-top:4px}
.vehicle-actions{display:flex;gap:8px;flex-shrink:0}

.add-vehicle-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px;background:var(--c-primary-gradient);color:#fff;border:none;border-radius:var(--r);font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 4px 16px rgba(33,150,243,.3);transition:transform .15s}
.add-vehicle-btn:active{transform:scale(.98)}

/* 充值按钮浮动 */
.float-recharge{position:fixed;right:16px;bottom:calc(var(--nav-h) + 20px);width:56px;height:56px;border-radius:50%;background:var(--c-primary-gradient);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(33,150,243,.35);z-index:50;font-size:9px;font-weight:600;gap:2px;text-decoration:none}
.float-recharge .icon{width:22px;height:22px}

/* ============================================================
   REDEEM CODE PAGE — 券码兑换
   ============================================================ */
.redeem-header{text-align:center;padding:32px 20px 24px}
.redeem-header h2{font-size:20px;font-weight:800;color:var(--c-text);margin-bottom:6px}
.redeem-header p{font-size:13px;color:var(--c-text-3)}
.redeem-input-wrap{display:flex;gap:10px;margin-bottom:20px}
.redeem-input-wrap .form-input{flex:1;font-size:16px;letter-spacing:2px;text-align:center;font-weight:700;text-transform:uppercase}
.redeem-input-wrap .btn{flex-shrink:0;padding:12px 24px}
.redeem-history{margin-top:8px}

/* ============================================================
   DEVICE & MODE SELECTION
   ============================================================ */
.dev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.dev-card{background:var(--c-surface);border:2px solid var(--c-line);border-radius:var(--r);padding:16px 8px;text-align:center;cursor:pointer;transition:all .2s;box-shadow:var(--shadow-xs)}
.dev-card.selected{border-color:var(--c-primary);background:var(--c-primary-50);box-shadow:0 0 0 3px var(--c-primary-light)}
.dev-card.disabled{opacity:.35;cursor:not-allowed}
.dev-card .icon{margin:0 auto 8px}
.dev-name{font-size:13px;font-weight:600}
.dev-status{font-size:11px;color:var(--c-text-3);margin-top:3px}

.mode-card{background:var(--c-surface);border:2px solid var(--c-line);border-radius:var(--r);padding:16px;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;transition:all .2s;box-shadow:var(--shadow-xs)}
.mode-card.selected{border-color:var(--c-primary);background:var(--c-primary-50);box-shadow:0 0 0 3px var(--c-primary-light)}
.mode-info h4{font-size:15px;font-weight:700;margin-bottom:3px}
.mode-info p{font-size:12px;color:var(--c-text-3)}
.mode-price{font-size:22px;font-weight:800;color:var(--c-danger)}
.mode-price span{font-size:12px;font-weight:400}

/* Status legend */
.legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.legend-item{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--c-text-3)}

/* ============================================================
   WASH PROGRESS PAGE
   ============================================================ */
.wash-page{min-height:100vh;background:var(--c-wash-bg, linear-gradient(180deg,#0D47A1 0%,#1976D2 50%,#42A5F5 100%));color:#fff;padding:20px;text-align:center}
.wash-ring{width:180px;height:180px;border-radius:50%;border:6px solid rgba(255,255,255,.15);display:flex;flex-direction:column;align-items:center;justify-content:center;margin:40px auto;position:relative}
.wash-ring::before{content:'';position:absolute;inset:-6px;border-radius:50%;border:6px solid transparent;border-top-color:#fff;animation:spin 1.8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.wash-time{font-size:48px;font-weight:800;line-height:1}
.wash-time-lbl{font-size:13px;opacity:.7;margin-top:6px}
.wash-mode-name{font-size:20px;font-weight:700;margin-bottom:8px}
.wash-status-text{font-size:14px;opacity:.7}
.wash-info{background:rgba(255,255,255,.1);border-radius:var(--r);padding:16px 18px;margin-top:28px;text-align:left;backdrop-filter:blur(4px)}
.wash-info-row{display:flex;justify-content:space-between;padding:8px 0;font-size:13px;border-bottom:1px solid rgba(255,255,255,.08)}
.wash-info-row:last-child{border:none}
.wash-done{text-align:center;padding-top:50px}
.wash-done-icon{width:80px;height:80px;border-radius:50%;background:rgba(76,175,80,.2);display:flex;align-items:center;justify-content:center;margin:0 auto 24px}
.wash-done-icon svg{width:40px;height:40px;fill:var(--c-success)}
.wash-done h2{font-size:24px;margin-bottom:8px}
.wash-tips{background:rgba(255,255,255,.08);border-radius:var(--r);padding:14px 16px;margin-top:16px;text-align:left}
.wash-tips-title{font-size:12px;font-weight:700;margin-bottom:8px;opacity:.9}
.wash-tips li{font-size:12px;opacity:.75;padding:3px 0;list-style:none}
.wash-tips li::before{content:"·";margin-right:6px;opacity:.5}

/* ============================================================
   WALLET / RECHARGE
   ============================================================ */
.wallet-hd{background:var(--c-primary-gradient);padding:28px 20px;border-radius:0 0 var(--r-lg) var(--r-lg);color:#fff;text-align:center;margin-bottom:14px;position:relative;overflow:hidden}
.wallet-hd::before{content:'';position:absolute;top:-30px;right:-30px;width:100px;height:100px;border-radius:50%;background:rgba(255,255,255,.08)}
.wallet-bal{font-size:40px;font-weight:800;margin:12px 0 6px;position:relative;z-index:1}
.wallet-lbl{font-size:13px;opacity:.85;position:relative;z-index:1}
.rch-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.rch-opt{background:var(--c-surface);border:2px solid var(--c-line);border-radius:var(--r);padding:16px 6px;text-align:center;cursor:pointer;transition:all .2s;box-shadow:var(--shadow-xs)}
.rch-opt.selected{border-color:var(--c-primary);background:var(--c-primary-50);box-shadow:0 0 0 3px var(--c-primary-light)}
.rch-amt{font-size:22px;font-weight:800;color:var(--c-text)}
.rch-gift{font-size:11px;color:var(--c-danger);font-weight:600;margin-top:4px}

/* ============================================================
   ORDER LIST
   ============================================================ */
.order-card{background:var(--c-surface);border-radius:var(--r);padding:16px;margin-bottom:10px;box-shadow:var(--shadow-card)}
.order-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:10px;border-bottom:1px dashed var(--c-line)}
.order-no{font-size:11px;color:var(--c-text-3);font-family:monospace}
.order-bd{display:flex;justify-content:space-between;align-items:center}
.order-info h4{font-size:14px;font-weight:600;margin-bottom:3px}
.order-info p{font-size:12px;color:var(--c-text-3)}
.order-amt{font-size:18px;font-weight:800;color:var(--c-text)}

/* ============================================================
   DASHBOARD HEADERS
   ============================================================ */
.dash-hd{padding:20px 16px;border-radius:0 0 var(--r-lg) var(--r-lg);color:#fff;margin-bottom:14px}
.dash-hd.store{background:var(--c-primary-gradient, linear-gradient(135deg,#2E7D32,#4CAF50))}
.dash-hd.admin{background:var(--c-primary-gradient, linear-gradient(135deg,#6A1B9A,#AB47BC))}
.dash-welcome{font-size:18px;font-weight:700;margin-bottom:4px}
.dash-date{font-size:12px;opacity:.75}

/* ============================================================
   CHART (CSS BAR)
   ============================================================ */
.chart-bars{display:flex;align-items:flex-end;gap:4px;height:100px;padding:8px 0}
.chart-bar{flex:1;background:var(--c-primary-light);border-radius:4px 4px 0 0;min-height:3px;position:relative}
.chart-bar .bar-fill{position:absolute;bottom:0;left:0;right:0;background:var(--c-primary);border-radius:4px 4px 0 0}
.chart-labels{display:flex;gap:4px}
.chart-labels span{flex:1;text-align:center;font-size:9px;color:var(--c-text-3)}

/* ============================================================
   MODAL
   ============================================================ */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:200;display:flex;align-items:flex-end;justify-content:center}
.modal-overlay.hidden{display:none}
.modal-body{background:var(--c-surface);border-radius:var(--r-lg) var(--r-lg) 0 0;width:100%;max-width:480px;max-height:80vh;overflow-y:auto;padding:24px 20px 32px;animation:slideUp .25s ease}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.modal-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.modal-title{font-size:17px;font-weight:700}
.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:none;background:var(--c-bg);border-radius:var(--r-full);cursor:pointer;color:var(--c-text-3)}

/* ============================================================
   TOAST / LOADING / FLASH
   ============================================================ */
.toast{position:fixed;top:56px;left:50%;transform:translateX(-50%);background:var(--c-text);color:#fff;padding:10px 24px;border-radius:var(--r-full);font-size:13px;z-index:300;box-shadow:var(--shadow-lg);max-width:90%;text-align:center;transition:opacity .25s}
.toast.hidden{opacity:0;pointer-events:none}
.toast.success{background:var(--c-success)}
.toast.error{background:var(--c-danger)}
.loading-overlay{position:fixed;inset:0;background:rgba(255,255,255,.85);z-index:250;display:flex;align-items:center;justify-content:center}
.loading-overlay.hidden{display:none}
.loading-spinner{width:40px;height:40px;border:3px solid var(--c-line);border-top-color:var(--c-primary);border-radius:50%;animation:spin .7s linear infinite}
.flash-messages{position:fixed;top:8px;left:50%;transform:translateX(-50%);z-index:300;width:90%;max-width:400px}
.flash-msg{padding:12px 16px;border-radius:var(--r);margin-bottom:6px;font-size:13px;animation:fadeDown .25s ease}
@keyframes fadeDown{from{transform:translateY(-12px);opacity:0}to{transform:translateY(0);opacity:1}}
.flash-error{background:var(--c-danger-light);color:var(--c-danger)}
.flash-success{background:var(--c-success-light);color:var(--c-success)}

/* ============================================================
   PAGINATION / FILTER / EMPTY / TABLE
   ============================================================ */
.pagination{display:flex;justify-content:center;gap:6px;padding:16px 0}
.pagination a,.pagination span{padding:8px 16px;border-radius:var(--r);font-size:13px;background:var(--c-surface);color:var(--c-text-2);border:1px solid var(--c-line);box-shadow:var(--shadow-xs)}
.pagination span.current{background:var(--c-primary);color:#fff;border-color:var(--c-primary)}
.filter-bar{display:flex;gap:8px;padding:10px 0;overflow-x:auto;-webkit-overflow-scrolling:touch}
.filter-btn{white-space:nowrap;padding:7px 16px;border-radius:var(--r-full);border:1.5px solid var(--c-line);background:var(--c-surface);font-size:12px;color:var(--c-text-2);cursor:pointer;transition:all .2s}
.filter-btn.active{background:var(--c-primary);color:#fff;border-color:var(--c-primary)}
.empty{text-align:center;padding:48px 20px;color:var(--c-text-3)}
.empty .icon{width:56px;height:56px;margin:0 auto 14px;color:var(--c-line-dark)}
.empty p{font-size:13px}
.action-group{display:flex;gap:6px;flex-wrap:wrap}

/* info panel */
.info-panel{background:var(--c-primary-50);border:1px solid var(--c-primary-light);border-radius:var(--r);padding:14px 16px;margin-bottom:12px}
.info-panel .card-title{color:var(--c-primary)}
.step-row{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12px;color:var(--c-text-2)}
.step-num{width:22px;height:22px;border-radius:50%;background:var(--c-primary);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0}
.tip-list{list-style:none}
.tip-list li{font-size:12px;color:var(--c-text-2);padding:4px 0;display:flex;align-items:flex-start;gap:6px}
.tip-list li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--c-primary);margin-top:7px;flex-shrink:0}

/* Profile */
.profile-avatar{width:68px;height:68px;border-radius:50%;background:var(--c-primary-light);display:flex;align-items:center;justify-content:center;margin:0 auto 12px;color:var(--c-primary)}
.profile-avatar svg{width:34px;height:34px;fill:currentColor}

/* ============================================================
   SECTION HEADER
   ============================================================ */
.section-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;padding:0 2px}
.section-title{font-size:16px;font-weight:700;color:var(--c-text);display:flex;align-items:center;gap:6px}
.section-more{font-size:12px;color:var(--c-text-3);display:flex;align-items:center;gap:2px}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media(min-width:480px){body{box-shadow:0 0 60px rgba(0,0,0,.06)}}
