*,*::before,*::after{box-sizing:border-box}
/*
  Emoji/flag support:
  - Country flags like 🇺🇸 are composed of regional indicator symbols.
  - On some systems, the default UI font can draw those symbols as plain "US" letters,
    which prevents fallback to color-emoji fonts.
  - Solution: keep the normal UI font for the whole site, but allow specific UI blocks
    (like the Service list) to opt-in to an emoji-first font stack via .emoji-font.
*/
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji";background:#0b1220;color:#e7eefc}

/* Form controls inherit normal UI fonts by default */
input,textarea,select,button{font-family:inherit}

/* Emoji-first font stack (use ONLY where flags/emojis must render reliably) */
.emoji-font{font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}
a{color:#8ab4ff;text-decoration:none}
.container{max-width:1600px;margin:0 auto;padding:24px;width:min(1600px,98vw)}
@media (max-width:1024px){
  .container{padding:16px;width:100%}
}
@media (max-width:520px){
  .container{padding:12px}
}
.card{background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.10);border-radius:16px;padding:18px;backdrop-filter:blur(10px)}
.row{display:flex;gap:16px;flex-wrap:wrap}
.col{flex:1;min-width:260px}
label{display:block;margin:10px 0 6px;color:#b9c7e6;font-size:14px}
input,select,textarea{width:100%;padding:12px 12px;border-radius:12px;border:1px solid rgba(255,255,255,0.14);background:rgba(0,0,0,0.25);color:#e7eefc;outline:none}
textarea{min-height:110px;font-size:13px;line-height:1.45}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border-radius:12px;border:1px solid rgba(255,255,255,0.18);background:linear-gradient(90deg,#6d5dfc,#1bd1a6);color:#07101f;font-weight:700;cursor:pointer;white-space:nowrap}
.btn.secondary{background:rgba(255,255,255,0.08);color:#e7eefc}
.btn.btn-bw{background:#ffffff;color:#0b1220;border-color:rgba(255,255,255,0.55);font-weight:900}
.btn.btn-bw:hover{background:rgba(255,255,255,0.92);border-color:#ffffff}
.btn.mini{padding:8px 10px;border-radius:10px;font-weight:700}
.btn.lg{padding:12px 18px;border-radius:14px;font-size:14px}
.btn.pill{border-radius:999px;padding:9px 12px}
.btn.pill.active{background:linear-gradient(90deg,#6d5dfc,#1bd1a6);color:#07101f;border-color:transparent}

.btn-group{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.nav{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:18px}
.nav .left{display:flex;gap:10px;align-items:center}
.nav .right{display:flex;gap:10px;align-items:center;justify-content:flex-end}
.nav .right a{flex:0 0 auto}

/* Mobile navigation: stacked (logo row + scrollable buttons row) */
@media (max-width:720px){
  .nav{flex-direction:column;align-items:stretch;gap:12px}
  /* 3 columns × 2 rows buttons */
  .nav .right{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px;
    justify-content:stretch;
    align-items:stretch;
    overflow:visible;
    padding-bottom:0;
  }
  .nav .right a{width:100%}
  /* Logo on mobile: prevent squish, keep readable */
  .brand-logo{width:160px;height:38px;object-fit:contain}
}
  .nav .right{justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding-bottom:6px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .nav .right::-webkit-scrollbar{display:none}
}

/* Tablet (iPad) navigation: keep one row, but allow horizontal scroll for buttons */
@media (min-width:721px) and (max-width:1024px){
  .nav{gap:10px;flex-wrap:nowrap}
  .nav .right{flex:1;justify-content:flex-end;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .nav .right::-webkit-scrollbar{display:none}
  .nav .right .badge.navbtn{padding:8px 11px;font-size:11px;min-width:auto}
}


/* Brand / Logo */
.brand{display:inline-flex;align-items:center;gap:10px;padding:0;border-radius:0;
  background:transparent;border:none;box-shadow:none;
  color:#e7eefc;font-weight:900;letter-spacing:.2px;text-decoration:none;
}
.brand:hover{background:transparent;border:none;opacity:.95}
/* Logo size: 135% */
.brand-logo{width:200px;height:48px;display:block;image-rendering:auto;object-fit:fill}
.brand-suffix{display:inline-flex;align-items:baseline;gap:8px;font-size:18px;line-height:1;white-space:nowrap}
.brand-panel{font-weight:800;opacity:.95}
.brand-v2{font-weight:1000;color:#3b82f6}

@media (max-width:520px){
  .brand{padding:0;gap:10px}
  .brand-logo{height:38px}
  .brand-suffix{font-size:16px}
}
.badge{padding:6px 10px;border-radius:999px;background:rgba(255,255,255,0.10);border:1px solid rgba(255,255,255,0.12);font-size:12px;color:#d6e2ff}
.badge{display:inline-flex;align-items:center;justify-content:center;line-height:1;min-width:58px}
.badge.logo{font-size:14px;padding:8px 14px;font-weight:800;letter-spacing:.3px;min-width:auto}
.badge.navbtn{padding:8px 12px;font-size:10px;min-width:66px;gap:5px}
.badge.navbtn:hover{background:rgba(255,255,255,0.14);border-color:rgba(255,255,255,0.20)}
.badge.navbtn.active{border-color:rgba(27,209,166,.6)}
.badge.ok{background:rgba(34,197,94,0.14);border-color:rgba(34,197,94,0.25);color:#c7f9d4}
.badge.warn{background:rgba(245,158,11,0.14);border-color:rgba(245,158,11,0.25);color:#ffe2b3}
.badge.err{background:rgba(239,68,68,0.14);border-color:rgba(239,68,68,0.25);color:#ffd1d1}
.badge.neutral{background:rgba(148,163,184,0.12);border-color:rgba(148,163,184,0.25);color:#e2e8f0}

/* Orders: remote/local id emphasis */
.order-remote-id{color:#7fd7ff;font-size:13px;line-height:1.2}
.order-remote-id.pending{color:#ffb84d}
.order-local-id{color:rgba(255,255,255,0.65);font-size:12px;line-height:1.2}
.flash{padding:12px 14px;border-radius:14px;margin:0 0 14px;border:1px solid rgba(255,255,255,0.14)}
.flash.ok{background:rgba(27,209,166,0.12);border-color:rgba(27,209,166,0.35)}
.flash.err{background:rgba(255,77,79,0.10);border-color:rgba(255,77,79,0.35)}

/* (V104 cleanup) Removed legacy .table/.orders-table sizing rules here. */

.small{font-size:12px;color:#b9c7e6}

/* Auth pages (login/register/forgot)
   让登录框与左上角 Logo 左侧对齐，同时右侧按钮与右侧广告卡片对齐 */
.auth-wrap{max-width:none;margin:0}
.auth-card{padding:22px}

/* Auth sizing tweaks */
.auth-card{border:none;}
.auth-card form{max-width:320px;width:100%;}
.auth-card input{max-width:320px;width:100%;box-sizing:border-box;}
.auth-title{display:flex;align-items:center;gap:10px;margin:0 0 8px;font-size:26px;font-weight:900;letter-spacing:.2px}
.auth-sub{margin:0 0 18px;color:#b9c7e6;font-size:14.5px;line-height:1.45}
.auth-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:16px}
.auth-actions .btn{min-width:140px}
.auth-links{margin-top:12px;display:flex;gap:12px;flex-wrap:wrap;font-size:12.5px}
.auth-links a{opacity:.95}
.hint{font-size:12px;color:#b9c7e6;opacity:.95}
.inline{display:flex;gap:12px;flex-wrap:wrap}
.inline>div{flex:1;min-width:220px}

/* Enabled switch */
.switch-wrap{display:flex;align-items:center;gap:10px}
.switch{position:relative;display:inline-block;width:48px;height:26px}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:rgba(255,255,255,0.14);border:1px solid rgba(255,255,255,0.18);transition:.2s;border-radius:999px}
.slider:before{position:absolute;content:"";height:20px;width:20px;left:3px;top:3px;background:#0b1220;border-radius:999px;transition:.2s;box-shadow:0 2px 8px rgba(0,0,0,0.45)}
.switch input:checked + .slider{background:rgba(27,209,166,0.22);border-color:rgba(27,209,166,0.45)}
.switch input:checked + .slider:before{transform:translateX(22px)}
.switch-text{font-size:12px;font-weight:800;letter-spacing:.5px;padding:6px 10px;border-radius:999px;border:1px solid rgba(255,255,255,0.14);background:rgba(255,255,255,0.06);color:#cbd9f4;min-width:44px;text-align:center}
.switch-text.on{background:rgba(34,197,94,0.14);border-color:rgba(34,197,94,0.25);color:#c7f9d4}
.switch-text.off{background:rgba(239,68,68,0.12);border-color:rgba(239,68,68,0.25);color:#ffd1d1}

/* Floating tools */
.floating-tools{position:fixed;right:16px;bottom:18px;display:flex;flex-direction:column;gap:10px;z-index:9999}
.floating-tools .btn{box-shadow:0 12px 24px rgba(0,0,0,0.35)}

/* Improve select visibility inside table (Edge) */
.table select{background:rgba(0,0,0,0.30)}
.infobar{margin-top:10px;padding:10px 12px;border-radius:14px;background:rgba(255,255,255,0.06);border:1px dashed rgba(255,255,255,0.18);display:flex;flex-wrap:wrap;gap:10px}
/* Dashboard: price/min/max chips - higher contrast */
.infobar span{font-size:18px;color:#ffffff;background:rgba(0,0,0,0.34);border:1px solid rgba(255,255,255,0.22);padding:6px 10px;border-radius:999px;font-weight:800;text-shadow:0 1px 0 rgba(0,0,0,0.50)}
.infobar #infoPrice{color:#b8ffd6}

/* Mobile: stack price on its own line, keep min/max together */
@media (max-width:520px){
  .infobar{gap:8px}
  .infobar #infoPrice{flex:0 0 100%}
  .infobar #infoMin,.infobar #infoMax{flex:1 1 auto}
}

/* ===== Services table column tuning (V8) ===== */
.table.services-table{ table-layout:fixed; min-width:1500px; }
.table.services-table th,.table.services-table td{ vertical-align:top; }

/* Left columns: keep compact */
.table.services-table th.col-enabled,.table.services-table td.col-enabled{ width:160px; }
.table.services-table th.col-id,.table.services-table td.col-id{ width:90px; }
.table.services-table th.col-status,.table.services-table td.col-status{ width:120px; }

/* Middle columns */
.table.services-table th.col-platform,.table.services-table td.col-platform{ width:170px; }
.table.services-table th.col-title,.table.services-table td.col-title{ width:380px; }
.table.services-table th.col-rate,.table.services-table td.col-rate{ width:120px; text-align:right; }
.table.services-table th.col-minmax,.table.services-table td.col-minmax{ width:120px; text-align:center; }

/* CN edit area */
.table.services-table th.col-cn,.table.services-table td.col-cn{ width:420px; }

/* Save column (sticky) */
.table.services-table th.col-save,.table.services-table td.col-save{ width:120px; text-align:center; }

/* Wrapping rules */
.table.services-table td.col-title{ white-space:normal; overflow:hidden; }
.table.services-table td.col-platform{ white-space:normal; }
.table.services-table td.col-cn{ white-space:normal; }

/* Status badge: keep readable but compact */
.table.services-table .badge{ min-width:64px; }


/* Balance hero on dashboard */
.hero-row{margin-top:14px;display:flex;gap:14px;align-items:stretch}
.hero-row > div{flex:1}
.balance-hero{margin-top:0;padding:14px 18px;border-radius:16px;border:1px solid rgba(27,209,166,.25);background:linear-gradient(135deg,rgba(27,209,166,.14),rgba(109,93,252,.10));display:flex;align-items:center;justify-content:space-between;gap:12px}
.balance-hero-label{font-size:14px;color:#bfeee3;letter-spacing:.5px}
.balance-hero-amount{font-size:30px;font-weight:900;color:#22c55e;text-shadow:0 0 18px rgba(34,197,94,.15)}

.orders-hero{padding:14px 18px;border-radius:16px;border:1px solid rgba(255,255,255,.08);background:linear-gradient(135deg,rgba(255,255,255,.06),rgba(109,93,252,.06));display:flex;align-items:center;justify-content:space-between;gap:12px}
.orders-hero-label{font-size:14px;color:#cbd5e1;letter-spacing:.5px}
.orders-hero-amount{font-size:30px;font-weight:900;color:#e5e7eb;text-shadow:0 0 18px rgba(255,255,255,.08)}

@media (max-width:720px){
  .hero-row{flex-direction:column}
  .balance-hero,.orders-hero{align-items:flex-start}
  .balance-hero-amount,.orders-hero-amount{font-size:26px}
}
/* ===== V65 requirements ===== */
.copy-toast{
  position:fixed;
  left:50%;
  top:18px;
  transform:translateX(-50%);
  background:rgba(20,30,45,.92);
  border:1px solid rgba(120,170,255,.35);
  padding:10px 14px;
  border-radius:999px;
  font-weight:700;
  color:#fff;
  opacity:0;
  pointer-events:none;
  transition:opacity .18s ease, transform .18s ease;
  z-index:9999;
}
.copy-toast.show{
  opacity:1;
  transform:translateX(-50%) translateY(0);
}

.service-link{
  margin-top:6px;
  font-size:12.5px;
  font-weight:600;
  opacity:1;
}
.service-link a{
  color:#8ec5ff;
  text-decoration:none;
  display:inline-block;
  max-width:100%;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.service-link a:hover{text-decoration:underline;}

.order-time{
  color:#fff !important;
  font-size:13px !important;
  font-weight:650 !important;
  margin-top:6px !important;
}


/* (orders table legacy sizing removed - V104 cleanup) */

/* Pagination (orders.php) */
.pagination{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:14px 14px;
  margin-top:14px;
  background:rgba(255,255,255,0.03);
  border:1px solid rgba(255,255,255,0.06);
  border-radius:16px;
}
.pagination-info{
  color:rgba(255,255,255,0.75);
  font-size:13px;
  white-space:nowrap;
}
.pagination-links{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.page-btn,.page-num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:9px 12px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,0.10);
  background:rgba(255,255,255,0.04);
  color:rgba(255,255,255,0.90);
  text-decoration:none;
  font-size:13px;
  line-height:1;
  user-select:none;
}
.page-btn:hover,.page-num:hover{
  background:rgba(255,255,255,0.06);
}
.page-btn.disabled{
  opacity:0.45;
  cursor:not-allowed;
}
.page-num.active{
  background:rgba(82,177,255,0.18);
  border-color:rgba(82,177,255,0.35);
}
.page-ellipsis{
  color:rgba(255,255,255,0.45);
  padding:0 4px;
}
@media (max-width: 680px){
  .pagination{flex-direction:column; align-items:stretch;}
  .pagination-info{white-space:normal;}
  .pagination-links{justify-content:flex-start;}
}
/* ===== V78 adjust top-right nav buttons (60% of V77) ===== */
.nav .right{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.nav .right .navbtn{min-width:auto;gap:6px;padding:11px 16px;font-size:clamp(12px,1.35vw,18px);font-weight:800}
.nav .right .navbtn .nav-emoji{font-size:1.08em;line-height:1}
.nav .right .navbtn .nav-text{font-size:1em;line-height:1}
.nav .right .navbtn svg{margin:0}
.status-cell .badge{min-width:auto;padding:6px 10px}
/* 如果某些状态文字仍显得“松”，可略微缩小 */
.status-cell .badge{font-size:12px;letter-spacing:0}


/* Auth pages layout (login/register/forgot) */
.auth-wrap{max-width:none;margin:0}
.auth-grid{display:grid;grid-template-columns: 400px 1fr;gap:22px;align-items:start}
.auth-side{min-height:10px}
@media (max-width: 980px){
  .auth-grid{grid-template-columns:1fr}
  .auth-card form{max-width:100%}
  .auth-card input{max-width:100%}
}

/* Marketing feature list */
.mkt{padding:20px 20px 10px;border:none;border-radius:18px;background:linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.03))}
/* 广告语：更醒目、更大气 */
.mkt-title{font-size:clamp(28px, 3.2vw, 44px);font-weight:1000;color:#f3f7ff;margin-bottom:14px;opacity:1;letter-spacing:.3px}
.mkt-list{display:flex;flex-direction:column;gap:12px}
.mkt-item{display:flex;gap:14px;align-items:flex-start;padding:6px 2px}
.mkt-ico{width:52px;height:52px;display:flex;align-items:center;justify-content:center;border-radius:16px;background:rgba(59,130,246,.16);border:1px solid rgba(59,130,246,.25);font-size:clamp(28px, 2.4vw, 48px);flex:0 0 52px}
.mkt-h{font-weight:1000;color:#f1f5ff;font-size:clamp(22px, 2vw, 34px);line-height:1.22}
.mkt-p{color:#b9c7e6;font-size:clamp(16px, 1.4vw, 28px);line-height:1.62;margin-top:3px}

/* Footer bar (sticky bottom) */
.page{min-height:100vh;display:flex;flex-direction:column}
.page-main{flex:1}
.site-footer-bar{margin-top:18px;padding:14px 0;background:rgba(255,255,255,0.05);border-top:1px solid rgba(255,255,255,.10)}
.site-footer-bar .inner{max-width:1600px;margin:0 auto;padding:0 24px;width:min(1600px,98vw);display:flex;align-items:center;justify-content:flex-start;gap:12px;flex-wrap:wrap}
/* 底部说明：更明显，白色加粗 */
.site-footer-bar .copy{opacity:1;font-size:14.5px;font-weight:900;color:#ffffff}


/* Auth form sizing (bigger, spacious) */
.auth-card label{font-size:15px}
.auth-card input{padding:13px 14px;font-size:14px;border-radius:14px}


/* Price preview highlight */
.price-preview{margin-top:10px;padding:11px 12px;border-radius:14px;background:rgba(0,0,0,.34);border:1px solid rgba(255,255,255,.18);box-shadow:0 1px 0 rgba(255,255,255,.06) inset, 0 10px 24px rgba(0,0,0,.22);font-weight:800;display:flex;align-items:center;gap:10px}
.price-preview .label{color:#ffffff;opacity:.92;font-weight:800;text-shadow:0 1px 0 rgba(0,0,0,.55)}
.price-preview #pricePreview{margin-left:auto;font-size:20px;letter-spacing:.3px;color:#b8ffd6;text-shadow:0 1px 0 rgba(0,0,0,.55)}
@media (max-width:768px){.price-preview #pricePreview{font-size:18px;}}

/* 创建订单：提交按钮居中 */
.order-submit{display:flex;justify-content:center}

.mobile-scroll-hint{display:none; margin:8px 0 0; opacity:.75; font-size:12px;}
@media (max-width:768px){.mobile-scroll-hint{display:block;}}

/* ===========================
   Orders table - canonical (V104 CSS cleanup)
   - remove historical conflicting nth-child rules
   - desktop uses <colgroup> widths defined in orders.php
   - mobile uses stacked "label + value" cards, shows ALL content
=========================== */

.table-wrap{overflow-x:auto; overflow-y:hidden; max-width:100%; -webkit-overflow-scrolling:touch;}
@media (min-width: 992px){
  .table-wrap{overflow-x:visible;}
}

/* Generic table */
.table{width:100%;border-collapse:collapse}
.table th,.table td{vertical-align:top;padding:10px 8px;border-bottom:1px solid rgba(255,255,255,0.10);font-size:13px}
.table th{text-align:left;color:#b9c7e6;font-weight:600}
.table thead th{position:sticky;top:0;background:rgba(15,23,42,0.95);z-index:2}

/* Orders desktop alignment */
.table.orders-table{table-layout:fixed;width:100%}
.table.orders-table td.col-qty{ text-align:center; white-space:nowrap; font-variant-numeric:tabular-nums; }
.table.orders-table td.col-charge{ text-align:right; font-variant-numeric:tabular-nums; }
.table.orders-table td.status-cell{ text-align:center; white-space:normal; }
.table.orders-table td.status-cell .cell-value{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px}
.table.orders-table .balance-line{color:#38e38a;font-weight:800}
.table.orders-table .service-meta{color:#b7dcff;font-size:12.5px;font-weight:700;margin-top:6px;opacity:1;white-space:normal}
.table.orders-table .service-link{margin-top:6px;font-size:12.5px;font-weight:700}
.table.orders-table .service-link a{
  display:block;
  color:#8ec5ff;
  text-decoration:none;
  white-space:normal;
  overflow:visible;
  text-overflow:unset;
  overflow-wrap:anywhere;   /* long links never get hidden */
  word-break:break-word;
  line-height:1.25;
}
.table.orders-table .service-link a:hover{text-decoration:underline}

/* Order ID: desktop keep one line; mobile allows wrapping */
.table.orders-table .order-id-mono{
  font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
  font-weight:800;
  white-space:nowrap;
  overflow:visible;
  text-overflow:unset;
}

/* Order ID click-to-copy affordance */
.order-id-click{cursor:pointer;}
.order-id-click:hover .order-id-mono{ text-decoration: underline; }

/* Tablet (iPad) tuning: keep table view, but more compact + wrap where needed */
@media (min-width:641px) and (max-width:1024px){
  .table.orders-table th,.table.orders-table td{padding:9px 6px;font-size:12.5px}

  /* Shrink fixed col widths from orders.php for tablet */
  .table.orders-table colgroup col:nth-child(1){width:220px !important}
  .table.orders-table colgroup col:nth-child(2){width:420px !important}
  .table.orders-table colgroup col:nth-child(3){width:72px !important}
  .table.orders-table colgroup col:nth-child(4){width:200px !important}
  .table.orders-table colgroup col:nth-child(5){width:120px !important}

  /* Allow UUID wrap on iPad so it doesn't force huge scroll */
  .table.orders-table .order-id-mono{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
}

/* Phone: stacked card rows, show EVERYTHING (no truncation) */
@media (max-width:640px){
  .table.orders-table thead{display:none;}
  .table.orders-table, .table.orders-table tbody, .table.orders-table tr{display:block; width:100%;}
  .table.orders-table tr{
    margin:12px 0;
    border:1px solid rgba(255,255,255,0.14);
    background:rgba(255,255,255,0.04);
    border-radius:16px;
    overflow:hidden;
  }
  .table.orders-table td{
    display:grid;
    grid-template-columns: 72px 1fr;
    gap:12px;
    align-items:start;
    padding:10px 12px;
    border-bottom:1px solid rgba(255,255,255,0.10);
    text-align:left !important;
    overflow:visible !important;
    white-space:normal !important;
  }
  .table.orders-table td:last-child{border-bottom:none;}
  .table.orders-table td::before{
    content:attr(data-label);
    font-weight:800;
    color:#cfe0ff;
    opacity:.95;
    justify-self:start;
    text-align:left;
    padding-left:0;
  }
  .table.orders-table td .cell-value{
    min-width:0;
    overflow:visible !important;
    max-height:none !important;
    white-space:normal !important;
    word-break:normal !important;      /* prevents 11 -> 1\n1 */
    overflow-wrap:normal !important;
    line-height:1.25;
  }

  /* Service: ensure all details show (title/link/meta) */
  .table.orders-table td[data-label="服务"] .cell-value,
  .table.orders-table td[data-label="服务"] strong,
  .table.orders-table td[data-label="服务"] .service-meta{
    white-space:normal !important;
    overflow:visible !important;
    max-height:none !important;
  }
  .table.orders-table td[data-label="服务"] .service-link a{
    overflow-wrap:anywhere !important;
    word-break:break-word !important;
  }

  /* Qty: force one line */
  .table.orders-table td.col-qty .cell-value{
    white-space:nowrap !important;
    word-break:keep-all !important;
    overflow-wrap:normal !important;
  }

  /* Charge: keep numbers tidy, allow balance line wrap */
  .table.orders-table td.col-charge .cell-value > div:first-child{
    white-space:nowrap !important;
  }
  .table.orders-table td.col-charge .balance-line{
    white-space:normal !important;
  }

  /* Status centered */
  .table.orders-table td.status-cell .cell-value{
    display:flex !important;
    justify-content:center !important;
    align-items:center !important;
  }
  .table.orders-table td.status-cell .badge{
    margin:0 !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    min-width:72px;
  }

  /* Order ID: allow wrap to show full UUID */
  .table.orders-table .order-id-mono{
    white-space:normal !important;
    overflow-wrap:anywhere !important;
    word-break:break-word !important;
  }
}

/* ===========================
   Form contrast (keep)
=========================== */
input,select,textarea{
  background:rgba(255,255,255,0.06) !important;
  border:1px solid rgba(255,255,255,0.18) !important;
}
input:focus,select:focus,textarea:focus{
  border-color:rgba(45,212,191,0.75) !important;
  box-shadow:0 0 0 3px rgba(45,212,191,0.15) !important;
}
select option{background:#0f172a;color:#e7eefc}

/* Slightly brighter base */
body{ background:#0f172a !important; }
.card{ background:rgba(255,255,255,0.07) !important; }

/* ===========================
   Recharge WeChat QR
=========================== */
.wechat-qr-wrap{
  margin-top:6px;
  display:flex;
  justify-content:flex-start;
  align-items:flex-start;
}
.wechat-qr{
  width:320px;
  max-width:100%;
  height:auto;
  border-radius:16px;
  background:#ffffff;
  padding:10px;
  box-shadow:0 10px 28px rgba(0,0,0,0.25);
}
@media (max-width:520px){
  .wechat-qr{
    width:100%;
    max-width:360px;
  }
}


/* Recharge note text */
.recharge-note{
  font-size:18px;
  font-weight:600;
  opacity:.95;
  line-height:1.7;
  margin:8px 0 16px;
}
@media (max-width:520px){
  .recharge-note{font-size:16px;}
}



/* V139: shrink admin top menu buttons to ~75% (force override) */
.nav .right a.badge.navbtn{
  font-size: 0.75em !important;
  padding: 0.55em 0.85em !important;
  min-width: auto !important;
  gap: 0.4em !important;
}
.nav .right a.badge.navbtn svg,
.nav .right a.badge.navbtn img{
  width: 0.9em !important;
  height: 0.9em !important;
}



/* V141: enlarge admin top menu buttons to 135% (force override) */
.nav .right a.badge.navbtn{
  font-size: 1.35em !important;
  padding: 0.75em 1.15em !important;
  min-width: auto !important;
  gap: 0.55em !important;
}


/* Language switcher (guest header) */
.lang-switch{display:flex;align-items:center;gap:6px;margin-right:10px}
.lang-switch .lang-ico{font-size:14px;opacity:.9}
.lang-switch select{background:rgba(255,255,255,0.10);border:1px solid rgba(255,255,255,0.14);color:#fff;border-radius:999px;padding:9px 12px;font-weight:700;outline:none;cursor:pointer}
.lang-switch select:hover{background:rgba(255,255,255,0.14);border-color:rgba(255,255,255,0.20)}
.lang-switch option{background:#0b1220;color:#eaf2ff}
/* When the dropdown is open, the currently-selected option should NOT have its own
   special background color. We'll keep it identical to normal options, and only
   highlight the option the user is hovering/focusing. */
.lang-switch option:checked{background:#0b1220;color:#eaf2ff}
.lang-switch option:hover,
.lang-switch option:focus{background:rgba(56,189,248,0.85);color:#051018}
.lang-switch select:focus{border-color:rgba(56,189,248,0.55);box-shadow:0 0 0 3px rgba(56,189,248,0.18)}



/* ===== Mobile nav grid override (force 3x2) ===== */
@media (max-width:720px){
  .nav{flex-direction:column;align-items:stretch;gap:12px}
  .nav .right{
    display:grid !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    gap:10px !important;
    justify-content:stretch !important;
    align-items:stretch !important;
  }
  .nav .right a{width:100%}
}


/* ===== Mobile App-style top nav (3x2 grid, compact, app-like) ===== */
@media (max-width:720px){
  /* Layout: keep logo on top, buttons grid below */
  .nav{flex-direction:column;align-items:stretch;gap:12px}
  .nav .left{justify-content:flex-start}
  .nav .right{
    display:grid !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    gap:10px !important;
    align-items:stretch !important;
    justify-content:stretch !important;
    margin-top:2px;
  }

  /* App-like button */
  .nav .right a{
    width:100%;
    height:52px;
    display:flex !important;
    flex-direction:row !important;      /* icon + text horizontal */
    align-items:center !important;
    justify-content:center !important;
    gap:8px !important;

    padding:10px 8px !important;
    border-radius:18px !important;

    background:rgba(255,255,255,.06);
    border:1px solid rgba(255,255,255,.10);
    box-shadow:
      0 8px 18px rgba(0,0,0,.28),
      inset 0 1px 0 rgba(255,255,255,.08);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);

    text-decoration:none;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }

  /* Icon + text sizing */
  .nav .right a .nav-emoji{
    font-size:18px;
    line-height:1;
    display:inline-flex;
    align-items:center;
    justify-content:center;
  }
  .nav .right a .nav-text{
    font-size:14px;
    font-weight:800;
    line-height:1;
    letter-spacing:.2px;
  }

  /* Active state: subtle glow, not huge */
  .nav .right a.active{
    background:rgba(16,185,129,.12);
    border-color:rgba(16,185,129,.35);
    box-shadow:
      0 10px 22px rgba(0,0,0,.30),
      0 0 0 2px rgba(16,185,129,.14),
      inset 0 1px 0 rgba(255,255,255,.10);
  }

  /* Tap feedback */
  .nav .right a:active{
    transform:scale(.98);
    filter:brightness(1.05);
  }

  /* Mobile logo: keep non-distorted */
  .brand-logo{height:38px;width:160px;object-fit:contain}
}


/* ===== V161 iOS Style Enhancements ===== */
@media (max-width:720px){

  /* Top bar glow */
  .nav{
    background:linear-gradient(180deg, rgba(20,32,56,.95), rgba(10,18,32,.95));
    box-shadow:0 8px 24px rgba(0,0,0,.35);
    border-bottom:1px solid rgba(255,255,255,.08);
  }

  /* Button style – flatter iOS look */
  .nav .right a{
    height:44px;
    border-radius:14px;
    background:rgba(255,255,255,.08);
    box-shadow:none;
    border:1px solid rgba(255,255,255,.12);
    font-weight:600;
  }

  .nav .right a.active{
    background:linear-gradient(135deg,#18c7a1,#12b0ff);
    color:#fff;
    box-shadow:0 6px 16px rgba(0,0,0,.35);
  }

  /* Bottom tab bar */
  .mobile-tabbar{
    position:fixed;
    bottom:0;
    left:0;
    right:0;
    height:64px;
    background:rgba(15,22,38,.95);
    backdrop-filter:blur(12px);
    border-top:1px solid rgba(255,255,255,.08);
    display:grid;
    grid-template-columns:repeat(3,1fr);
    z-index:999;
  }

  .mobile-tabbar a{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:4px;
    font-size:12px;
    color:#cfd8ff;
  }

  .mobile-tabbar a.active{
    color:#38f2c0;
  }

  body{
    padding-bottom:70px;
  }
}


/* ===== V161: iOS-like flatter buttons + top glow + bottom tab bar ===== */
@media (max-width:720px){

  /* Give room for fixed tab bar */
  body{padding-bottom:84px;}

  /* Top area subtle gradient + glow */
  .nav{
    position:sticky;
    top:0;
    z-index:50;
    padding-top:8px;
    padding-bottom:6px;
    background:linear-gradient(180deg, rgba(15,23,42,.92) 0%, rgba(15,23,42,.70) 60%, rgba(15,23,42,0) 100%);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
  }
  .nav::after{
    content:"";
    position:absolute;
    left:10px; right:10px; bottom:-6px;
    height:16px;
    background:radial-gradient(closest-side, rgba(56,189,248,.30), rgba(56,189,248,0));
    filter: blur(6px);
    pointer-events:none;
  }

  /* Top grid buttons — flatter, more iOS-native */
  .nav .right{
    display:grid !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    gap:10px !important;
  }
  .nav .right a{
    height:44px !important;
    border-radius:16px !important;
    padding:8px 10px !important;

    background:rgba(255,255,255,.055) !important;
    border:1px solid rgba(255,255,255,.10) !important;
    box-shadow:
      0 6px 14px rgba(0,0,0,.24),
      inset 0 1px 0 rgba(255,255,255,.06) !important;

    display:flex !important;
    flex-direction:row !important;
    align-items:center !important;
    justify-content:center !important;
    gap:8px !important;
  }
  .nav .right a .nav-emoji{font-size:18px !important;}
  .nav .right a .nav-text{font-size:14px !important; font-weight:800 !important; line-height:1 !important;}

  .nav .right a.active{
    background:rgba(16,185,129,.10) !important;
    border-color:rgba(16,185,129,.30) !important;
    box-shadow:
      0 8px 18px rgba(0,0,0,.26),
      0 0 0 2px rgba(16,185,129,.12),
      inset 0 1px 0 rgba(255,255,255,.08) !important;
  }

  /* Bottom Tab Bar */
  .tabbar{
    position:fixed;
    left:10px; right:10px; bottom:10px;
    z-index:60;

    display:grid;
    grid-template-columns:repeat(5,1fr);
    gap:8px;

    padding:10px 10px;
    border-radius:22px;

    background:rgba(15,23,42,.78);
    border:1px solid rgba(255,255,255,.10);
    box-shadow:0 18px 40px rgba(0,0,0,.45);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
  }
  .tabbar .tabitem{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:4px;

    text-decoration:none;
    padding:8px 6px;
    border-radius:16px;

    color:#e7eefc;
    background:transparent;
  }
  .tabbar .tabitem .tab-ico{font-size:18px; line-height:1;}
  .tabbar .tabitem .tab-txt{font-size:11px; font-weight:800; line-height:1; opacity:.92;}

  .tabbar .tabitem.active{
    background:rgba(56,189,248,.14);
    border:1px solid rgba(56,189,248,.28);
    box-shadow:0 0 0 2px rgba(56,189,248,.12);
  }
  .tabbar .tabitem:active{transform:scale(.98); filter:brightness(1.05);}
}

/* Hide bottom tab bar on desktop */
@media (min-width:721px){
  .tabbar{display:none;}
}


/* ===== PWA A2HS Banner ===== */
.a2hs{
  position:fixed;
  left:10px; right:10px;
  bottom:96px; /* above tabbar */
  z-index:80;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:10px 12px;
  border-radius:18px;
  background:rgba(15,23,42,.82);
  border:1px solid rgba(255,255,255,.10);
  box-shadow:0 18px 40px rgba(0,0,0,.45);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.a2hs-left{display:flex;align-items:center;gap:10px;min-width:0}
.a2hs-ico{width:38px;height:38px;border-radius:12px;flex:0 0 auto}
.a2hs-txt{min-width:0}
.a2hs-title{font-weight:900;font-size:14px;line-height:1;color:#e7eefc}
.a2hs-sub{font-weight:700;font-size:12px;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.a2hs-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.a2hs-btn{
  height:34px;
  padding:0 12px;
  border-radius:14px;
  border:1px solid rgba(56,189,248,.30);
  background:rgba(56,189,248,.14);
  color:#e7eefc;
  font-weight:900;
  cursor:pointer;
}
.a2hs-close{
  height:34px;width:34px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.06);
  color:#e7eefc;
  font-weight:900;
  cursor:pointer;
}

@media (min-width:721px){
  .a2hs{display:none !important;}
}

/* iOS install tip */
.ios-install-tip{
  position: fixed;
  left: 12px;
  right: 12px;
  bottom: 12px;
  z-index: 9999;
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  padding: 12px 14px;
  border-radius: 16px;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.12);
  color: rgba(255,255,255,0.88);
  backdrop-filter: blur(10px);
}
.ios-install-tip__txt{
  font-size: 13px;
  line-height: 1.35;
}
.ios-install-tip__close{
  width: 32px;
  height: 32px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.14);
  background: rgba(0,0,0,0.12);
  color: rgba(255,255,255,0.85);
  cursor: pointer;
}
@media (min-width: 768px){
  .ios-install-tip{
    left: auto;
    right: 16px;
    max-width: 460px;
  }
}


/* Ensure PWA banners can be hidden via [hidden] attribute (JS close works) */
.a2hs[hidden]{display:none !important;}
.ios-install-tip[hidden]{display:none !important;}
