*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow-x:hidden}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:#0a0e14;color:#cdd6df;font-size:15px;line-height:1.5;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}
#app{display:flex;flex-direction:column;min-height:100vh;max-width:480px;margin:0 auto;padding:20px 16px 32px}
.logo{text-align:center;margin:24px 0 32px}
.logo h1{font-size:22px;font-weight:700;letter-spacing:-0.5px;background:linear-gradient(135deg,#4da8ff,#7c5cff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.logo span{font-size:12px;color:#55606e;display:block;margin-top:2px}
.card{background:#11171f;border:1px solid #1b2531;border-radius:14px;padding:20px 16px;margin-bottom:14px}
.card h3{font-size:13px;font-weight:600;color:#55606e;text-transform:uppercase;letter-spacing:1px;margin-bottom:14px}
.input-group{margin-bottom:16px}
.input-group label{display:block;font-size:13px;color:#69788c;margin-bottom:6px;font-weight:500}
.input-group input,.input-group select{width:100%;padding:13px 14px;font-size:15px;background:#0a0e14;color:#cdd6df;border:1.5px solid #1b2531;border-radius:10px;min-height:50px;outline:none;transition:border-color .2s;font-family:inherit;-webkit-appearance:none;appearance:none}
.input-group input:focus,.input-group select:focus{border-color:#4da8ff;box-shadow:0 0 0 3px rgba(77,168,255,.12)}
.input-group input::placeholder{color:#384454}
.btn{display:inline-flex;align-items:center;justify-content:center;width:100%;padding:14px 20px;font-size:15px;font-weight:600;border-radius:12px;border:none;cursor:pointer;min-height:52px;letter-spacing:0.3px;transition:all .15s;font-family:inherit}
.btn:active{transform:scale(.98)}
.btn-primary{background:linear-gradient(135deg,#4da8ff,#3d7ce8);color:#fff}
.btn-primary:hover{background:linear-gradient(135deg,#5fb3ff,#4d8cf8)}
.btn-primary:disabled{background:#1b2531;color:#55606e;cursor:not-allowed;transform:none}
.btn-outline{background:transparent;border:1.5px solid #1b2531;color:#69788c}
.btn-outline:hover{background:#11171f;border-color:#384454;color:#cdd6df}
.btn-danger{background:#2d111d;border:1.5px solid #4a1a2e;color:#f48484}
.btn-danger:hover{background:#3a1525;color:#f5a0a0}
.status-row{display:flex;align-items:center;gap:10px;padding:10px 0;font-size:14px}
.status-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.status-dot.green{background:#3fb950;box-shadow:0 0 8px rgba(63,185,80,.4)}
.status-dot.red{background:#f85149;box-shadow:0 0 8px rgba(248,81,73,.4)}
.status-dot.yellow{background:#d29922;box-shadow:0 0 8px rgba(210,153,34,.4)}
.status-dot.gray{background:#384454}
.divider{height:1px;background:#1b2531;margin:14px 0}
.mono{font-family:'SF Mono','Fira Code',monospace;font-size:13px;background:#0a0e14;padding:2px 8px;border-radius:6px;border:1px solid #1b2531;word-break:break-all}
.tag{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600}
.tag-green{background:#12261a;color:#3fb950}
.tag-red{background:#2d111d;color:#f85149}
.tag-yellow{background:#1f1a10;color:#d29922}
.tag-gray{background:#11171f;color:#55606e}
.loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:30px 0;color:#55606e;font-size:14px}
.spinner{width:20px;height:20px;border:2.5px solid #1b2531;border-top-color:#4da8ff;border-radius:50%;animation:spin .6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.error-msg{background:#2d111d;border:1px solid #4a1a2e;border-radius:10px;padding:12px 14px;color:#f48484;font-size:13px;margin-top:12px}
.success-msg{background:#12261a;border:1px solid #1a3a27;border-radius:10px;padding:12px 14px;color:#3fb950;font-size:13px;margin-top:12px}
.hidden{display:none!important}
.flex-grow{flex:1}
.text-center{text-align:center}
.mt-2{margin-top:8px}
.mt-3{margin-top:12px}
.mt-4{margin-top:16px}
.mb-2{margin-bottom:8px}
.gap-2{gap:8px}
