*{margin:0;padding:0;box-sizing:border-box}
:root{
  --primary:#4FAF74;--primary-light:#6CC999;--primary-dark:#3A8C5A;
  --primary-glow:rgba(79,175,116,.18);--primary-dim:rgba(79,175,116,.08);
  --secondary:#8FBE63;--accent:#3D9D66;
  --bg:#0D1210;--bg2:#111916;--card:#161E1A;--card2:#1C2722;--card-hover:#1F2D27;
  --txt:#E8F0EA;--txt2:#B8CCBF;--dim:#6B8577;
  --border:rgba(79,175,116,.1);--border-light:rgba(79,175,116,.18);
  --danger:#EF5350;--warn:#FFB74D;--info:#64B5F6;
  --radius:18px;--radius-sm:14px;--radius-xs:10px;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
}
html,body{height:100%;background:var(--bg);color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,'SF Pro Display','Segoe UI',Roboto,sans-serif;
  -webkit-font-smoothing:antialiased;overflow:hidden;overscroll-behavior:none}
body{display:flex;flex-direction:column;position:relative;min-height:0}
a{color:var(--primary-light);text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;outline:none;-webkit-tap-highlight-color:transparent}
input{font-family:inherit;background:rgba(255,255,255,.04);border:1px solid var(--border);
  color:var(--txt);border-radius:var(--radius-xs);padding:13px 16px;font-size:15px;width:100%;
  transition:border-color .2s}
input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow)}
input::placeholder{color:var(--dim)}

#bg-canvas{position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}

.page{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;
  min-height:0;padding:14px 16px calc(74px + var(--safe-bottom));display:none;position:relative;z-index:1}
.page.active{display:block}
.page::-webkit-scrollbar{display:none}

.card{background:rgba(22,30,26,.85);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border-radius:var(--radius);padding:20px;margin-bottom:14px;
  border:1px solid var(--border);position:relative;overflow:hidden;
  transition:transform .2s,border-color .2s}
.card.glow::before{content:'';position:absolute;top:-60%;left:-30%;width:160%;height:160%;
  background:radial-gradient(ellipse,rgba(79,175,116,.12) 0%,transparent 60%);pointer-events:none}
.card-sm{background:rgba(22,30,26,.75);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-radius:var(--radius-sm);padding:16px;margin-bottom:10px;
  border:1px solid var(--border)}

.header{display:flex;align-items:center;gap:10px;padding:calc(10px + var(--safe-top)) 16px 6px;flex-shrink:0;
  position:relative;z-index:2}
.header .logo-wrap{width:56px;height:56px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.header .logo-wrap.logo-missing{width:0;height:0;overflow:hidden}
.header .logo-wrap img{width:56px;height:auto;object-fit:contain;filter:drop-shadow(0 4px 14px rgba(79,175,116,.3))}
.header .brand{font-size:22px;font-weight:800;letter-spacing:-.5px;
  background:linear-gradient(135deg,#6CC999,#4FAF74,#8FBE63);
  background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.header .tag{font-size:9px;background:var(--primary-dim);color:var(--primary);
  padding:3px 10px;border-radius:20px;font-weight:700;margin-left:auto;text-transform:uppercase;letter-spacing:.8px;
  border:1px solid var(--border)}

.nav{flex-shrink:0;display:flex;background:rgba(22,30,26,.92);backdrop-filter:blur(20px);
  -webkit-backdrop-filter:blur(20px);border-top:1px solid var(--border);
  padding:6px 0 calc(6px + var(--safe-bottom));position:relative;z-index:10}
.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:6px 0;color:var(--dim);font-size:10px;font-weight:500;transition:color .25s}
.nav-item.active{color:var(--primary)}
.nav-item.active svg{filter:drop-shadow(0 0 6px rgba(79,175,116,.4))}
.nav-item svg{width:22px;height:22px;fill:currentColor;transition:filter .25s}

.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
  padding:15px;border-radius:var(--radius-sm);font-weight:600;font-size:15px;
  transition:transform .15s,opacity .15s,box-shadow .15s}
.btn:active{transform:scale(.97);opacity:.88}
.btn-primary{background:linear-gradient(135deg,#4FAF74 0%,#3D9D66 50%,#358C5C 100%);color:#fff;
  box-shadow:0 4px 20px rgba(79,175,116,.3),0 0 0 1px rgba(79,175,116,.2)}
.btn-primary:active{box-shadow:0 2px 10px rgba(79,175,116,.2)}
.btn-outline{background:transparent;border:1.5px solid var(--border-light);color:var(--txt);
  backdrop-filter:blur(8px)}
.btn-ghost{background:var(--primary-dim);color:var(--primary);border:1px solid var(--border)}
.btn-sm{padding:10px 16px;font-size:13px;width:auto;border-radius:var(--radius-xs)}

.badge{display:inline-block;font-size:10px;font-weight:700;padding:3px 10px;border-radius:20px;
  text-transform:uppercase;letter-spacing:.4px}
.badge-green{background:var(--primary-dim);color:var(--primary);border:1px solid var(--border)}

.section-title{font-size:11px;font-weight:700;color:var(--dim);text-transform:uppercase;
  letter-spacing:1.2px;margin:20px 0 12px}
.section-title:first-child{margin-top:4px}

.status-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.status-dot.green{background:var(--primary);box-shadow:0 0 10px var(--primary-glow)}
.status-dot.red{background:var(--danger);box-shadow:0 0 10px rgba(239,83,80,.3)}
.status-dot.yellow{background:var(--warn);box-shadow:0 0 10px rgba(255,183,77,.3)}

.traffic-card{display:flex;align-items:center;gap:20px;position:relative;z-index:1}
.traffic-ring-wrap{position:relative;width:90px;height:90px;flex-shrink:0}
.traffic-ring-wrap svg{width:100%;height:100%}
.traffic-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.traffic-pct{font-size:20px;font-weight:800;line-height:1}
.traffic-label{font-size:9px;color:var(--dim);margin-top:2px;text-transform:uppercase;letter-spacing:.5px}
.traffic-info{flex:1}
.traffic-used{font-size:15px;font-weight:600;margin-bottom:3px}
.traffic-total{font-size:12px;color:var(--dim)}
.traffic-bar{height:5px;background:rgba(255,255,255,.05);border-radius:3px;margin-top:10px;overflow:hidden}
.traffic-bar-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--primary),var(--secondary));
  transition:width .8s ease}

.actions-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.action-card{background:rgba(22,30,26,.75);backdrop-filter:blur(12px);
  border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:16px 14px;display:flex;align-items:center;gap:12px;cursor:pointer;
  transition:all .2s}
.action-card:active{background:var(--card2);border-color:var(--border-light);transform:scale(.97)}
.action-emoji{font-size:24px;flex-shrink:0}
.action-text{font-size:13px;font-weight:600}

.plan{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:var(--radius);
  background:rgba(22,30,26,.8);backdrop-filter:blur(12px);border:1.5px solid var(--border);
  margin-bottom:10px;transition:all .2s;position:relative;cursor:pointer}
.plan:active{transform:scale(.98)}
.plan.selected{border-color:var(--primary);background:rgba(79,175,116,.06);
  box-shadow:0 0 20px rgba(79,175,116,.1)}
.plan-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;
  justify-content:center;font-size:22px;flex-shrink:0}
.plan-info{flex:1;min-width:0}
.plan-name{font-weight:700;font-size:15px}
.plan-details{font-size:12px;color:var(--dim);margin-top:3px}
.plan-price{font-weight:800;font-size:15px;text-align:right;white-space:nowrap}
.plan-badge{position:absolute;top:-1px;right:14px;font-size:8px;font-weight:700;
  padding:3px 12px;border-radius:0 0 10px 10px;color:#fff;text-transform:uppercase;letter-spacing:.5px}

.connect-card{background:rgba(22,30,26,.85);backdrop-filter:blur(16px);
  border:1px solid var(--border);border-radius:var(--radius);
  padding:22px;margin-bottom:14px;position:relative;overflow:hidden}
.connect-header{display:flex;align-items:center;gap:14px;margin-bottom:16px}
.connect-icon{font-size:34px;flex-shrink:0}
.connect-title{font-size:17px;font-weight:700}
.connect-sub{font-size:12px;color:var(--dim);margin-top:2px}
.connect-steps{margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}
.step{display:flex;gap:12px;margin-bottom:14px}
.step:last-child{margin-bottom:0}
.step-num{width:26px;height:26px;border-radius:50%;background:var(--primary-dim);
  color:var(--primary);display:flex;align-items:center;justify-content:center;
  font-weight:700;font-size:12px;flex-shrink:0;margin-top:1px;border:1px solid var(--border)}
.step-body{flex:1}
.step-title{font-weight:600;font-size:13px;margin-bottom:2px}
.step-desc{font-size:11px;color:var(--dim);line-height:1.5}

.ios-server-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.ios-server-btn{padding:10px 16px;border-radius:22px;background:rgba(255,255,255,.04);
  border:1px solid var(--border);color:var(--txt2);font-size:13px;font-weight:500;
  cursor:pointer;transition:all .2s}
.ios-server-btn:active,.ios-server-btn.active{background:var(--primary-dim);
  border-color:var(--primary);color:var(--primary)}
.ios-generate-btn{display:none;margin-bottom:14px}
.ios-generate-btn.visible{display:block}
.config-result{display:none;margin-top:14px;padding:16px;background:rgba(13,18,16,.7);
  border:1px solid var(--border);border-radius:var(--radius-sm)}
.config-result.visible{display:block}
.qr-wrap{display:flex;justify-content:center;margin-bottom:14px}
.qr-wrap canvas{border-radius:14px}
.uri-box{background:rgba(255,255,255,.03);border:1px solid var(--border);border-radius:var(--radius-xs);
  padding:12px 14px;font-size:11px;color:var(--dim);word-break:break-all;
  font-family:'SF Mono',Menlo,monospace;line-height:1.5;margin-bottom:12px;max-height:80px;overflow:auto}

.ref-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
.ref-stat{background:rgba(22,30,26,.75);backdrop-filter:blur(12px);border-radius:var(--radius-sm);
  padding:18px;text-align:center;border:1px solid var(--border)}
.ref-stat .num{font-size:30px;font-weight:800;
  background:linear-gradient(135deg,var(--primary-light),var(--secondary));
  background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;line-height:1}
.ref-stat .label{font-size:11px;color:var(--dim);margin-top:6px;font-weight:500}
.ref-link-box{background:rgba(255,255,255,.03);border:1px dashed var(--border-light);border-radius:var(--radius-sm);
  padding:14px;display:flex;align-items:center;gap:10px;margin-bottom:14px}
.ref-link-box .link-text{flex:1;font-size:12px;color:var(--dim);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;font-family:monospace}
.ref-link-box .copy-btn{flex-shrink:0;padding:10px 16px;
  background:linear-gradient(135deg,var(--primary),var(--primary-dark));
  color:#fff;border-radius:var(--radius-xs);font-size:12px;font-weight:600}
.ref-person{display:flex;align-items:center;gap:12px;padding:12px 0;
  border-bottom:1px solid var(--border)}
.ref-person:last-child{border:none}
.ref-avatar{width:34px;height:34px;border-radius:50%;
  background:linear-gradient(135deg,var(--primary-dim),rgba(143,190,99,.1));
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;
  color:var(--primary);flex-shrink:0;border:1px solid var(--border)}

.more-item{display:flex;align-items:center;gap:14px;padding:16px;
  background:rgba(22,30,26,.75);backdrop-filter:blur(12px);
  border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:8px;
  cursor:pointer;transition:all .15s}
.more-item:active{background:var(--card2);transform:scale(.98)}
.more-icon{width:38px;height:38px;border-radius:10px;background:var(--primary-dim);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  border:1px solid var(--border)}
.more-icon svg{width:18px;height:18px;fill:var(--primary)}
.more-icon.warn{background:rgba(255,183,77,.06);border-color:rgba(255,183,77,.12)}
.more-icon.warn svg{fill:var(--warn)}
.more-icon.info{background:rgba(100,181,246,.06);border-color:rgba(100,181,246,.12)}
.more-icon.info svg{fill:var(--info)}
.more-info{flex:1}
.more-title{font-weight:600;font-size:14px}
.more-desc{font-size:11px;color:var(--dim);margin-top:2px}
.more-arrow{color:var(--dim);font-size:18px}

#doc-overlay{display:none;position:fixed;inset:0;background:var(--bg);z-index:100;
  overflow-y:auto;padding:16px;padding-top:calc(56px + var(--safe-top))}
#doc-overlay .close-btn{position:fixed;top:calc(10px + var(--safe-top));right:14px;background:var(--card);
  color:var(--txt);width:36px;height:36px;border-radius:50%;font-size:18px;z-index:101;
  display:flex;align-items:center;justify-content:center;border:1px solid var(--border)}
#doc-content{line-height:1.7;font-size:14px;color:var(--txt2)}
#doc-content h2{color:var(--txt);margin-bottom:14px;font-size:18px}
#doc-content p{margin-bottom:10px}
#doc-content b{color:var(--txt)}

#link-modal,#transfer-ios-modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(8px);
  z-index:100;align-items:flex-end;justify-content:center;padding:16px 16px calc(16px + var(--safe-bottom))}
#link-modal.show,#transfer-ios-modal.show{display:flex}
.modal-sheet{background:var(--card);border-radius:var(--radius) var(--radius) 0 0;
  padding:26px 22px calc(22px + var(--safe-bottom));width:100%;max-width:400px;
  max-height:min(78vh,680px);overflow-y:auto;border:1px solid var(--border);border-bottom:none}
.modal-sheet h3{font-size:18px;font-weight:700;margin-bottom:8px}
.modal-sheet p{font-size:13px;color:var(--dim);line-height:1.5;margin-bottom:18px}
.modal-sheet input{margin-bottom:14px}

.toast{position:fixed;top:calc(14px + var(--safe-top));left:50%;transform:translateX(-50%) translateY(-80px);
  background:rgba(22,30,26,.95);backdrop-filter:blur(20px);color:var(--txt);
  padding:12px 22px;border-radius:14px;font-size:13px;font-weight:600;z-index:999;
  border:1px solid var(--border);transition:transform .3s cubic-bezier(.34,1.56,.64,1);
  pointer-events:none;white-space:normal;word-break:break-word;max-width:min(calc(100vw - 24px),420px);
  width:max-content;box-shadow:0 8px 32px rgba(0,0,0,.4)}
.toast.show{transform:translateX(-50%) translateY(0)}

.qr-fallback{display:none;text-align:center;font-size:12px;line-height:1.5;color:var(--dim);
  padding:14px;border:1px dashed var(--border-light);border-radius:14px;background:rgba(255,255,255,.03)}
.qr-fallback.visible{display:block}

.skeleton{background:linear-gradient(90deg,rgba(22,30,26,.8) 25%,rgba(28,39,34,.8) 50%,rgba(22,30,26,.8) 75%);
  background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:10px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes scaleIn{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:none}}
.fade-in{animation:fadeUp .4s cubic-bezier(.25,.46,.45,.94) both}
.scale-in{animation:scaleIn .35s cubic-bezier(.25,.46,.45,.94) both}
.d1{animation-delay:.06s}.d2{animation-delay:.12s}.d3{animation-delay:.18s}.d4{animation-delay:.24s}

@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
.pulse{animation:pulse 2s ease-in-out infinite}

.divider{height:1px;background:var(--border);margin:18px 0}
.text-center{text-align:center}
.text-dim{color:var(--dim)}
.text-sm{font-size:12px}
.mt-12{margin-top:12px}
.mb-12{margin-bottom:12px}

.ios-loading{display:none;text-align:center;padding:16px;color:var(--dim);font-size:13px}
.ios-loading.visible{display:block}
.spinner{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--primary);
  border-radius:50%;animation:spin .6s linear infinite;display:inline-block;vertical-align:middle;margin-right:8px}
@keyframes spin{to{transform:rotate(360deg)}}