:root{--ink:#1d1d1f;--muted:#77777d;--blue:#007aff;--line:#e8e8ed;--bg:#f5f5f7;--radius:20px;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:14px;line-height:1.6}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:disabled{opacity:.45;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #86baff;outline-offset:3px}h1,h2,h3,p{margin:0}h1{font-size:28px;letter-spacing:-.7px;line-height:1.25;font-weight:650}h2{font-size:21px;letter-spacing:-.4px}h3{font-size:15px;font-weight:600}small{font-size:12px;color:var(--muted)}.muted,.sub{color:var(--muted)}.sub{margin-top:7px}.topbar{height:76px;max-width:1000px;padding:0 28px;display:flex;align-items:center;justify-content:space-between;margin:auto}.brand{display:flex;align-items:center;gap:9px;font-size:16px;font-weight:600;letter-spacing:-.3px}.brand img{width:26px;height:26px}.top-actions{display:flex;gap:8px;align-items:center}.text-btn{border:0;background:none;color:var(--muted);padding:9px 10px;font-size:13px}.text-btn:hover{color:var(--blue)}.landing{max-width:428px;margin:54px auto 0;padding:0 20px}.auth-panel{background:white;border-radius:24px;padding:30px 28px;box-shadow:0 2px 12px #00000003}.auth-panel>h1{font-size:25px}.auth-panel>.sub{font-size:13px;margin-top:9px;margin-bottom:26px}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:25px}.tabs{display:flex;background:#f1f1f4;border-radius:10px;padding:3px;gap:2px;margin-bottom:25px}.tabs button{flex:1;border:0;background:transparent;padding:7px;border-radius:8px;color:var(--muted);font-size:13px;font-weight:550}.tabs button.active{color:var(--ink);background:#fff;box-shadow:0 1px 4px #00000016}.field{display:block;margin-bottom:18px}.field>span{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:500;margin-bottom:7px}.field input,.field select,.field textarea,.search{width:100%;border:1px solid transparent;border-radius:11px;background:#f5f5f7;color:var(--ink);padding:12px 13px;outline:none;transition:box-shadow .15s}.field input:focus,.field textarea:focus,.field select:focus,.search:focus{border-color:#80b7ff;box-shadow:0 0 0 3px #007aff10;background:white}.field input::placeholder,.field textarea::placeholder{color:#929298;font-weight:400;font-size:13px}.field textarea{resize:vertical;min-height:120px}.hint{font-size:11px;color:var(--muted);line-height:1.7;margin-top:6px}.primary,.secondary,.danger{border:0;border-radius:11px;padding:11px 16px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:550;line-height:1.5}.primary{background:var(--blue);color:#fff}.primary:hover{background:#0066db}.secondary{background:#f0f0f3;color:#55555b}.secondary:hover{background:#e9e9ed}.danger{background:#fff1ef;color:#d75448}.full{width:100%}.compact{font-size:12px;padding:8px 12px;border-radius:8px}.form-note{text-align:center;color:var(--muted);font-size:11px;margin-top:14px}.shop-row{margin-top:22px;padding-top:18px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted)}.link{color:var(--blue)}.footer{text-align:center;color:#98989f;font-size:11px;margin:34px 0 24px;padding-bottom:env(safe-area-inset-bottom)}.icon{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#edf5ff;color:#007aff;flex-shrink:0}.icon svg,.btn-icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.icon.green{background:#eef8f1;color:#34a853}.icon.orange{background:#fff5e7;color:#e89a28}.icon.purple{background:#f3efff;color:#8d75cf}.icon.red{background:#fff0ef;color:#d76359}.dot{width:5px;height:5px;background:currentColor;border-radius:50%}.dashboard{max-width:860px;margin:35px auto;padding:0 26px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:25px}.page-head h1{font-size:25px}.actions{display:flex;gap:8px;flex-wrap:wrap}.membership{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fff;border-radius:18px;padding:24px;margin-bottom:14px}.identity{display:flex;gap:12px;align-items:center}.identity h3{font-size:16px}.status{font-size:11px;padding:3px 8px;border-radius:7px;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;background:#edf8f0;color:#39844b;font-weight:400}.status.warn{background:#fff6e9;color:#ac7d2f}.status.bad{background:#fff0ee;color:#c55649}.status.grey{background:#f2f2f5;color:#87878f}.section-head{display:flex;align-items:center;justify-content:space-between;margin:28px 0 13px}.section-head h2{font-size:16px}.node-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.node-card{background:#fff;border-radius:18px;padding:21px}.node-title{display:flex;align-items:center;gap:10px;margin-bottom:14px}.node-title .status{margin-left:auto}.address{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:var(--muted);font-size:12px;padding:12px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.node-card .primary{flex:1}.empty{padding:38px 22px;text-align:center;color:var(--muted);background:#fff;border-radius:16px}.notice{padding:13px 16px;border-radius:12px;background:#fff8ed;color:#967435;font-size:12px;margin-bottom:20px;white-space:pre-wrap;overflow-wrap:anywhere}.loading{padding:90px 20px;text-align:center;color:var(--muted)}.error{color:#c64d40;font-size:12px;background:#fff4f2;padding:10px 12px;border-radius:9px;margin-bottom:16px;overflow-wrap:anywhere}.hidden{display:none!important}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);max-width:calc(100% - 36px);width:max-content;background:#29292de8;color:#fff;border-radius:14px;padding:12px 19px;font-size:13px;z-index:1000;opacity:0;pointer-events:none;transition:opacity .15s}#toast.show{opacity:1}dialog{border:0;border-radius:24px;padding:28px;max-width:calc(100% - 32px);max-height:calc(100dvh - 48px);width:470px;color:var(--ink);box-shadow:0 24px 100px #00000028;overscroll-behavior:contain}dialog::backdrop{background:#00000032;backdrop-filter:blur(7px)}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.modal-head .identity{gap:10px}.modal-head h2{font-size:18px}.close{border:0;background:#efeff2;color:#797980;width:28px;height:28px;border-radius:50%;font-size:21px;line-height:1;flex-shrink:0}.announcement{white-space:pre-wrap;color:#64646b;font-size:14px;line-height:1.9;max-height:55vh;overflow:auto;margin-bottom:23px;overflow-wrap:anywhere}.notice-dialog{width:360px;padding:28px 0 0;border-radius:25px;background:#fafafcee;backdrop-filter:blur(24px)}.notice-dialog .modal-head{justify-content:center;margin-bottom:14px;padding:0 28px}.notice-dialog .modal-head h2{font-size:19px;text-align:center;overflow-wrap:anywhere}.notice-dialog .modal-head .icon,.notice-dialog .modal-head .close{display:none}.notice-dialog .notice-body{font-size:14px;line-height:1.85;text-align:left;padding:0 26px;max-height:45dvh;margin-bottom:25px;color:#57575e}.notice-buttons{border-top:1px solid #d8d8df;display:flex;flex-direction:column}.notice-dismiss,.notice-link{border:0;background:none;text-align:center;padding:15px 20px;font-size:16px;color:var(--blue);overflow-wrap:anywhere;white-space:normal}.notice-dismiss{font-weight:600}.notice-link+.notice-dismiss{border-top:1px solid #dedee5}.notice-dismiss:hover,.notice-link:hover{background:#00000004}.traffic-card{background:#fff;border-radius:18px;padding:21px 24px;margin:0 0 18px}.traffic-card>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:16px;color:var(--muted);font-size:12px}.traffic-card strong{font-size:19px;color:var(--ink);font-weight:600}.traffic-card strong small{font-weight:400;font-size:13px}.traffic-card progress{appearance:none;border:0;height:5px;border-radius:8px;overflow:hidden;background:#eeeef2;width:100%;margin:15px 0 9px;display:block}.traffic-card progress::-webkit-progress-bar{background:#eeeef2}.traffic-card progress::-webkit-progress-value{background:#007aff;border-radius:8px}.traffic-card progress::-moz-progress-bar{background:#007aff;border-radius:8px}.traffic-caption{display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}dialog .traffic-card{background:#f5f5f7;padding:18px}.usage-nodes{margin-bottom:24px}.usage-nodes strong{font-size:13px}.admin-shell{display:flex;min-height:100vh}.sidebar{width:210px;flex-shrink:0;padding:30px 16px;background:#fff;border-right:1px solid var(--line);position:fixed;inset:0 auto 0 0}.sidebar .brand{padding-left:12px}.side-label{font-size:11px;color:#9999a0;margin:34px 15px 12px}.side-nav{display:flex;flex-direction:column;gap:5px}.side-nav button{border:0;background:none;text-align:left;padding:11px 14px;border-radius:10px;display:flex;align-items:center;gap:11px;color:var(--muted);font-size:13px}.side-nav button .icon{background:none;width:21px;height:21px;color:inherit}.side-nav button.active{background:#edf4ff;color:#007aff;font-weight:600}.side-nav button:hover{background:#f5f5f7}.side-bottom{position:absolute;bottom:25px;left:27px}.admin-main{margin-left:210px;flex:1;min-width:0;padding:32px 36px;max-width:1550px}.admin-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:35px;font-size:12px;color:var(--muted)}.admin-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;gap:12px}.admin-heading h1{font-size:25px}.admin-heading .sub{font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:26px}.stat{background:#fff;border-radius:16px;padding:21px}.stat-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px}.stat strong{font-size:29px;font-weight:600;display:block;letter-spacing:-.6px;margin-top:12px}.admin-two{display:grid;grid-template-columns:1.3fr 1fr;gap:18px}.panel-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.panel-title h2{font-size:16px}.mini-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 0;border-top:1px solid var(--line)}.mini-row .identity{gap:10px}.mini-row:first-of-type{border:0}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:15px;background:#fff}table{width:100%;border-collapse:collapse;white-space:nowrap;text-align:left;font-size:12px}th{background:#fafafa;color:var(--muted);font-size:11px;font-weight:500;padding:14px 17px;border-bottom:1px solid var(--line)}td{padding:17px;border-bottom:1px solid var(--line);max-width:360px;overflow:hidden;text-overflow:ellipsis}tr:last-child td{border-bottom:0}td small{display:block;font-size:10px;margin-top:3px}td .actions{flex-wrap:nowrap}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.node-meta{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:18px 0;font-size:12px}.node-meta small{display:block;font-size:10px}.node-meta div{overflow-wrap:anywhere}.node-error{color:#bd6a56;background:#fff7f4;padding:10px;border-radius:9px;margin-bottom:13px;overflow-wrap:anywhere;font-size:11px}.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.check{display:flex;align-items:center;gap:9px;margin:13px 0;font-size:13px;color:#686870}.check input{accent-color:var(--blue);width:17px;height:17px}.check-group{padding:10px 15px;background:#f5f5f7;border-radius:11px;margin-bottom:18px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.search-form{display:flex;gap:7px}.search{max-width:220px;font-size:12px;padding:9px 12px;background:#fff}.pager{display:flex;gap:12px;align-items:center;justify-content:flex-end;margin-top:15px;color:var(--muted);font-size:12px}.settings-panel{max-width:740px}.code{font-family:ui-monospace,monospace;overflow-wrap:anywhere;white-space:pre-wrap;background:#f3f3f6;border:0;border-radius:10px;padding:15px;font-size:12px;max-height:300px;overflow:auto}.admin-login{padding-top:12px}.admin-login .panel h2{margin:18px 0 5px}.admin-login form{margin-top:24px}.mobile-only{display:none}@media(max-width:1000px){.sidebar{width:180px}.admin-main{margin-left:180px;padding:26px 24px}.stats{gap:10px}.stat{padding:17px}.admin-two,.admin-grid{grid-template-columns:1fr}}@media(max-width:700px){.topbar{height:66px;padding:0 22px}.brand{font-size:15px;gap:7px}.brand img{width:24px;height:24px}.top-actions{gap:0}.text-btn{font-size:12px;padding:8px}.landing{margin-top:29px;padding:0 20px;max-width:428px}.auth-panel{padding:27px 24px;border-radius:23px}.auth-panel>h1{font-size:24px}.panel{padding:22px}.field input,.field textarea,.field select{font-size:16px;min-height:47px}.primary,.secondary{min-height:44px}.compact{min-height:34px}.tabs button{font-size:13px;padding:8px}.footer{margin-top:27px}.dashboard{margin-top:22px;padding:0 20px}.page-head h1{font-size:24px}.membership{padding:20px;flex-wrap:wrap;gap:17px}.membership>.actions{width:100%}.membership>.actions button{flex:1}.node-grid{grid-template-columns:1fr}.node-card{padding:20px}.page-head{align-items:flex-start}.page-head .sub{font-size:12px}.traffic-card{padding:20px}.traffic-card strong{font-size:17px}.traffic-card strong small{font-size:12px}.sidebar{position:static;width:auto;padding:0;border:0;background:none}.sidebar>.brand,.side-label,.side-bottom{display:none}.admin-shell{display:block}.side-nav{position:sticky;top:0;flex-direction:row;overflow:auto;gap:3px;padding:10px 14px;background:#fff;border-bottom:1px solid var(--line)}.side-nav button{white-space:nowrap;gap:6px;padding:10px}.side-nav button .icon{width:16px;height:16px}.side-nav .icon svg{width:16px;height:16px}.admin-main{margin-left:0;padding:22px 18px}.admin-top{margin-bottom:23px}.admin-heading{margin-bottom:20px;align-items:flex-start}.admin-heading h1{font-size:23px}.admin-heading .sub{max-width:225px}.stats{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:22px}.stat{padding:18px}.stat strong{font-size:26px;margin-top:8px}.stat .icon{width:30px;height:30px}.admin-two,.admin-grid{grid-template-columns:1fr}.row{gap:12px}.toolbar{flex-wrap:wrap}.admin-login{padding-top:12px}dialog{padding:24px;border-radius:22px}.notice-dialog{padding:27px 0 0;border-radius:25px;width:340px}.search{font-size:16px;max-width:180px}.mobile-only{display:block}td{padding:15px}.actions .compact{font-size:11px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
/* Public home: open layout without enclosing cards. Admin and dialogs retain their own layout. */
body.public-home{background:#fff}
.public-home .brand{gap:9px;font-size:15px;font-weight:600}
.public-home .brand img{width:25px;height:25px;border-radius:8px}
.public-home .text-btn{color:#727278;font-size:12px;padding:8px 0}
.public-home .text-btn:hover{color:#1d1d1f}
.public-home .home-entry{max-width:364px;margin:clamp(34px,8vh,86px) auto 0;padding:0 4px;background:none;border:0;border-radius:0;box-shadow:none}
.entry-heading h1{font-size:27px;letter-spacing:-.7px;font-weight:600;line-height:1.3}
.entry-heading .sub{font-size:13px;color:#818188;margin-top:10px;line-height:1.8}
.entry-tabs{display:flex;align-items:center;gap:28px;margin:31px 0 27px;border-bottom:1px solid #eeeeF1}
.entry-tabs button{position:relative;padding:0 1px 13px;border:0;background:none;font-size:13px;line-height:1.5;color:#929299;font-weight:500}
.entry-tabs button.active{color:#1d1d1f;font-weight:600}
.entry-tabs button.active::after{content:"";position:absolute;height:2px;border-radius:2px;background:#1d1d1f;bottom:-1px;left:0;right:0}
.home-entry .field{margin-bottom:21px}
.home-entry .field>span{font-size:12px;font-weight:500;margin-bottom:8px;color:#44444b}
.home-entry .field input{height:48px;padding:12px 14px;border:1px solid #e3e3e8;border-radius:10px;background:#fff;box-shadow:none;font-size:14px}
.home-entry .field input::placeholder{font-size:13px;color:#aaaab0}
.home-entry .field input:hover{border-color:#c9c9d0}
.home-entry .field input:focus{border-color:#8baed5;box-shadow:0 0 0 3px #007aff0a}
.home-entry .hint{font-size:11px;color:#95959d;margin-top:9px;line-height:1.65}
.home-entry .primary{min-height:46px;margin-top:3px;border-radius:10px;background:#1d1d1f;font-size:13px;font-weight:550;box-shadow:none}
.home-entry .primary:hover{background:#353538}
.entry-purchase{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:23px;font-size:12px;color:#95959d}
.entry-purchase a{color:#007aff}
.entry-purchase a:hover{text-decoration:underline;text-underline-offset:3px}
.entry-purchase a span{font-size:13px;margin-left:2px}
.entry-page .footer{margin-top:62px;color:#b0b0b7;font-size:10px;letter-spacing:.2px}
.public-home .dashboard{max-width:800px;margin-top:44px}
.public-home .page-head{margin-bottom:30px}
.public-home .membership{border:0;border-bottom:1px solid var(--line);border-radius:0;background:none;padding:0 0 24px;margin-bottom:0}
.public-home .dashboard>.traffic-card{background:none;border-radius:0;padding:24px 0;border-bottom:1px solid var(--line);margin-bottom:28px}
.public-home .node-grid{display:block}
.public-home .node-card{border:0;border-radius:0;border-bottom:1px solid var(--line);background:none;padding:22px 0}
.public-home .node-title{margin-bottom:6px}
.public-home .address{border:0;padding:5px 0 15px 44px}
.public-home .node-card .actions{padding-left:44px}
.public-home .node-card .primary{flex:0 1 auto;min-width:168px;font-size:12px}
.public-home .node-card .secondary{font-size:12px}
.public-home .section-head{margin:0}
.public-home .section-head h2{font-size:15px}
.public-home .dashboard>.hint{margin-top:18px}
@media(max-width:700px){
  .public-home .brand{font-size:14px;gap:8px}
  .public-home .brand img{width:23px;height:23px}
  .public-home .text-btn{font-size:12px}
  .public-home .home-entry{max-width:364px;width:calc(100% - 52px);margin-top:39px;padding:0}
  .entry-heading h1{font-size:25px}
  .entry-heading .sub{font-size:12px;margin-top:9px}
  .entry-tabs{margin-top:28px;margin-bottom:25px;gap:28px}
  .home-entry .field input{font-size:16px;height:49px}
  .home-entry .field input::placeholder{font-size:13px}
  .home-entry .primary{min-height:47px}
  .entry-page .footer{margin-top:46px;margin-bottom:25px}
  .public-home .dashboard{margin-top:28px;padding:0 24px}
  .public-home .membership{padding-bottom:22px;gap:18px}
  .public-home .dashboard>.traffic-card{padding:22px 0}
  .public-home .node-card .actions{padding-left:0}
  .public-home .node-card .primary{flex:1;min-width:0}
  .public-home .node-title .icon{width:30px;height:30px;border-radius:9px}
  .public-home .address{padding-left:40px}
}

.public-home .home-masthead{display:flex;justify-content:center;padding:35px 24px 0;margin:0 auto}
.public-home .home-masthead .brand{font-size:15px;letter-spacing:.1px;gap:9px;max-width:100%;overflow-wrap:anywhere;color:#36363b}
.public-home .home-masthead .brand img{flex-shrink:0;width:24px;height:24px;border-radius:7px}
.public-home .home-entry{margin-top:49px}
.public-home .home-footer{margin:42px auto 25px;padding:0 24px env(safe-area-inset-bottom)}
.home-links{display:flex;justify-content:center;align-items:center;gap:24px;flex-wrap:wrap}
.public-home .home-links .text-btn{font-size:11px;color:#9999a1;font-weight:400;line-height:1.5;padding:8px 0}
.public-home .home-links .text-btn:hover{color:#44444b}
@media(max-width:700px){
  .public-home .home-masthead{padding-top:28px}
  .public-home .home-masthead .brand{font-size:14px;gap:8px}
  .public-home .home-masthead .brand img{width:23px;height:23px}
  .public-home .home-entry{margin-top:40px}
  .public-home .home-footer{margin-top:35px}
}
