*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0a0a0f;
  --bg2:#12121a;
  --bg3:#1a1a26;
  --card:rgba(255,255,255,0.045);
  --card-solid:#141422;
  --border:rgba(255,255,255,0.08);
  --border-strong:rgba(255,255,255,0.14);
  --text:#e0e0f0;
  --text2:#8888aa;
  --accent:#7c5cfc;
  --accent2:#a78bfa;
  --accent-glow:rgba(124,92,252,0.3);
  --green:#22c55e;
  --red:#ef4444;
  --yellow:#eab308;
  --radius:8px;
  --radius-sm:6px;
  --radius-bubble:10px;
  --shadow-sm:0 1px 2px rgba(0,0,0,0.3);
  --shadow-md:0 1px 2px rgba(0,0,0,0.3),0 8px 24px rgba(0,0,0,0.2);
  --shadow-lg:0 2px 8px rgba(0,0,0,0.3),0 16px 48px rgba(0,0,0,0.25);
  --ease:cubic-bezier(0.25,0.1,0.25,1);
  --chat-me:#7c5cfc;
  --chat-bot:#1e1e32;
}
html,body{height:100%;overflow:hidden}
/* 네이티브 느낌: 스크롤바 숨김 */
*{scrollbar-width:none;-ms-overflow-style:none}
*::-webkit-scrollbar{display:none;width:0;height:0}
body{
  font-family:'Pretendard',-apple-system,sans-serif;
  background:var(--bg);
  color:var(--text);
  display:flex;justify-content:center;align-items:center;
  -webkit-tap-highlight-color:transparent;
}
#app{
  width:100%;max-width:480px;height:100dvh;
  display:flex;flex-direction:column;
  background:linear-gradient(180deg,var(--bg) 0%,var(--bg2) 100%);
  overflow:hidden;
  position:relative;
}
#app::before{
  content:'';position:absolute;top:-40%;left:-30%;width:80%;height:60%;
  background:radial-gradient(ellipse,var(--accent-glow) 0%,transparent 70%);
  pointer-events:none;z-index:0;
}
#app::after{
  content:'';position:absolute;bottom:-20%;right:-20%;width:60%;height:40%;
  background:radial-gradient(ellipse,rgba(167,139,250,0.15) 0%,transparent 70%);
  pointer-events:none;z-index:0;
}
.app-header{
  position:relative;z-index:1;
  padding:12px 14px;
  display:flex;justify-content:space-between;align-items:center;gap:8px;
  background:rgba(18,18,26,0.72);
  backdrop-filter:blur(20px) saturate(1.4);
  -webkit-backdrop-filter:blur(20px) saturate(1.4);
  box-shadow:0 1px 0 rgba(255,255,255,0.04),0 8px 24px rgba(0,0,0,0.25);
}
.app-header .logo{
  font-size:22px;font-weight:800;white-space:nowrap;
  background:linear-gradient(135deg,var(--accent2),var(--accent));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  cursor:pointer;user-select:none;transition:opacity .2s var(--ease);
  display:inline-flex;align-items:center;gap:8px;
}
.app-header .logo .logo-icon{
  width:30px;height:30px;flex-shrink:0;
  display:block;border-radius:6px;
  -webkit-text-fill-color:initial;
}
.app-header .logo:hover{opacity:.7}
.app-header .nav-btns{display:flex;gap:6px}
.app-header button{
  background:var(--bg3);border:1px solid var(--border);color:var(--text2);
  padding:10px 14px;min-height:40px;border-radius:10px;font-size:16px;cursor:pointer;
  font-family:inherit;transition:all .2s var(--ease);
}
.app-header button.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.app-header button:hover{opacity:.85}
.app-header button:active{transform:scale(.95)}

.page{
  position:relative;z-index:1;
  flex:1;overflow-y:auto;overflow-x:hidden;
  padding:20px;
  display:none;flex-direction:column;gap:16px;
  -webkit-overflow-scrolling:touch;
}
.page.active{display:flex}

/* Auth */
.auth-card{
  background:var(--card);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border:1px solid var(--border);
  border-radius:var(--radius);padding:28px 24px;
  box-shadow:var(--shadow-lg);
}
.auth-card h1{
  font-size:29px;font-weight:800;text-align:center;
  background:linear-gradient(135deg,var(--accent2),var(--accent));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
  margin-bottom:6px;
}
.auth-card .subtitle{text-align:center;color:var(--text2);font-size:16px;margin-bottom:24px}
.auth-tabs{display:flex;margin-bottom:20px;gap:4px;border-radius:8px;background:var(--bg3);padding:4px}
.auth-tab{
  flex:1;text-align:center;padding:11px;border-radius:6px;font-size:17px;
  cursor:pointer;color:var(--text2);border:none;background:none;font-family:inherit;
  transition:all .2s var(--ease);
}
.auth-tab.active{background:var(--accent);color:#fff;box-shadow:var(--shadow-sm)}
.auth-tab:active{transform:scale(.97)}
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:14px;color:var(--text2);margin-bottom:6px;font-weight:500}
.form-group input{
  width:100%;padding:13px 14px;border-radius:var(--radius-sm);
  background:var(--bg3);border:1px solid var(--border);color:var(--text);
  font-size:17px;font-family:inherit;outline:none;transition:border .2s var(--ease);
}
.form-group input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(124,92,252,0.15)}
.form-group input::placeholder{color:#555570}
.btn-primary{
  width:100%;padding:15px;border-radius:var(--radius-sm);
  background:linear-gradient(135deg,var(--accent),#6d4ff0);
  border:none;color:#fff;font-size:18px;font-weight:700;cursor:pointer;
  font-family:inherit;transition:all .2s var(--ease);
  box-shadow:0 4px 20px var(--accent-glow);
}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 28px var(--accent-glow)}
.btn-primary:active{transform:translateY(0) scale(.98)}
.btn-primary:disabled{opacity:.4;cursor:not-allowed;box-shadow:none;transform:none}
.alert{text-align:center;color:var(--red);font-size:16px;margin-top:8px;min-height:20px}

/* Chat */
#page-chat{overflow:hidden;padding:0;gap:0}
#page-sites{padding:20px 0}
#page-create{overflow-y:auto;padding:0;gap:0}
#page-create .chat-area{min-height:70vh;padding:8px 16px}
.chat-area{flex:1;display:flex;flex-direction:column;gap:4px;padding:8px 0;overflow-y:auto;-webkit-overflow-scrolling:touch}
.msg-row{display:flex;position:relative;margin-bottom:2px;animation:fadeUp .25s var(--ease)}
.msg-row.me{justify-content:flex-end}
.bubble{
  width:fit-content;max-width:85%;padding:10px 16px;border-radius:var(--radius-bubble);
  font-size:17px;line-height:1.5;word-break:break-word;
}
.bubble.me{
  background:var(--chat-me);color:#fff;
  border-bottom-right-radius:6px;
  box-shadow:0 1px 2px rgba(0,0,0,0.3),0 4px 16px rgba(124,92,252,0.28);
}
.bubble.bot{
  background:var(--chat-bot);color:var(--text);
  border-bottom-left-radius:6px;
  border:1px solid rgba(255,255,255,0.06);
  box-shadow:0 1px 2px rgba(0,0,0,0.25),0 4px 16px rgba(0,0,0,0.15);
}
.msg-time{position:absolute;right:10px;bottom:6px;font-size:13px;color:var(--text2);line-height:1;pointer-events:none}
.msg-row.me .msg-time{text-align:right}
.msg-delete{
  display:inline-flex;align-items:center;justify-content:center;
  width:26px;height:26px;border-radius:50%;border:none;
  background:rgba(239,68,68,0.15);color:var(--red);font-size:14px;
  position:absolute;right:2px;top:2px;cursor:pointer;opacity:0;
  transition:opacity .2s var(--ease);line-height:1;
}
.msg-row:hover .msg-delete,.msg-delete.always-show{opacity:1}
@media (hover:none){.msg-delete{opacity:.6}}
.chat-input-area{
  position:relative;z-index:1;flex-shrink:0;
  padding:12px 12px 16px;
  display:flex;gap:8px;flex-wrap:nowrap;
  background:rgba(18,18,26,0.88);
  backdrop-filter:blur(20px) saturate(1.4);
  -webkit-backdrop-filter:blur(20px) saturate(1.4);
  box-shadow:0 -1px 0 rgba(255,255,255,0.04),0 -8px 24px rgba(0,0,0,0.18);
}
.chat-input-area input{
  flex:1;min-width:0;padding:13px 18px;border-radius:12px;
  background:var(--bg3);border:1px solid var(--border);color:var(--text);
  font-size:17px;font-family:inherit;outline:none;transition:border .2s var(--ease);
}
.chat-input-area input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(124,92,252,0.15)}
.chat-send-btn{
  width:46px;height:46px;min-width:46px;min-height:46px;border-radius:50%;
  background:linear-gradient(135deg,var(--accent),#6d4ff0);
  border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;
  box-shadow:0 1px 2px rgba(0,0,0,0.3),0 4px 16px var(--accent-glow);
  transition:all .2s var(--ease);flex-shrink:0;
}
.chat-send-btn svg{width:20px;height:20px;fill:#fff}
.chat-send-btn:active{transform:scale(.92)}
.chat-upload-btn{
  width:46px;height:46px;min-width:46px;min-height:46px;border-radius:50%;
  background:var(--bg3);border:1px solid var(--border);
  color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:all .2s var(--ease);flex-shrink:0;
}
.chat-upload-btn svg{width:20px;height:20px;fill:var(--text2)}
.chat-upload-btn:active{transform:scale(.92)}
#uploads-panel{
  flex-shrink:0;max-height:45%;overflow-y:auto;
  background:rgba(18,18,26,0.88);padding:8px 12px;
  box-shadow:0 -1px 0 rgba(255,255,255,0.04);
}
#create-uploads-panel{
  flex-shrink:0;max-height:45%;overflow-y:auto;
  background:rgba(18,18,26,0.88);padding:8px 12px;
}
.uploads-panel-header{
  display:flex;align-items:center;justify-content:space-between;
  font-weight:700;font-size:14px;color:var(--text2);margin-bottom:8px;
}
.upload-close-btn{
  background:none;border:none;color:var(--text2);font-size:16px;cursor:pointer;
  width:32px;height:32px;display:flex;align-items:center;justify-content:center;
}
.upload-row{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:10px;border-radius:10px;background:var(--card);border:1px solid var(--border);
  margin-bottom:6px;box-shadow:var(--shadow-sm);
}
.upload-info{flex:1;min-width:0}
.upload-name{color:var(--text);font-size:15px;text-decoration:none;word-break:break-all}
.upload-meta{color:var(--text2);font-size:13px;margin-top:2px}
.upload-actions{display:flex;gap:6px;flex-shrink:0}

/* Create */
.create-card{
  background:var(--card);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  border:1px solid var(--border);
  border-radius:var(--radius);padding:24px;
  box-shadow:var(--shadow-lg);
}
.create-card h3{
  font-size:22px;font-weight:700;margin-bottom:6px;
}
.create-card .desc{color:var(--text2);font-size:16px;margin-bottom:16px}
.create-card textarea{
  width:100%;height:100px;padding:14px;border-radius:var(--radius-sm);
  background:var(--bg3);border:1px solid var(--border);color:var(--text);
  font-size:17px;font-family:inherit;outline:none;resize:none;transition:border .2s var(--ease);
}
.create-card textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(124,92,252,0.15)}
.create-card textarea::placeholder{color:#555570}
.hint-box{
  margin-top:12px;padding:12px 16px;border-radius:var(--radius-sm);
  font-size:16px;line-height:1.5;
}
.hint-box.invalid{background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.3);color:var(--red)}
.hint-box.valid{background:rgba(34,197,94,0.1);border:1px solid rgba(34,197,94,0.3);color:var(--green)}
.char-count{text-align:right;font-size:13px;color:var(--text2);margin-top:4px}

/* PWA options */
.pwa-options{
  flex-shrink:0;
  margin:0 8px 8px;
  padding:8px 10px;
  background:rgba(255,255,255,0.05);
  border:1px solid rgba(255,255,255,0.05);
  border-radius:10px;
  box-shadow:var(--shadow-sm);
}
.pwa-fields{display:flex;gap:10px}
.pwa-field{flex:1;min-width:0}
.pwa-field input{
  width:100%;padding:11px 12px;border-radius:var(--radius-sm);
  background:rgba(255,255,255,0.04);border:1px solid var(--border);color:var(--text);
  font-size:15px;font-family:inherit;outline:none;transition:border .2s var(--ease);
}
.pwa-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(124,92,252,0.15)}
.pwa-field input::placeholder{color:#8a8aa3;font-size:15px}

/* Install PWA button */
.install-pwa-btn{
  display:flex;align-items:center;justify-content:center;gap:4px;
  padding:7px 12px;min-height:36px;border-radius:var(--radius-sm);flex-shrink:0;margin-left:8px;
  background:rgba(124,92,252,0.15);border:1px solid rgba(124,92,252,0.4);
  color:var(--accent2);font-size:13px;font-weight:600;cursor:pointer;
  font-family:inherit;transition:all .2s var(--ease);white-space:nowrap;
}
.install-pwa-btn:hover{
  background:rgba(124,92,252,0.28);border-color:var(--accent2);
  transform:translateY(-1px);
}
.install-pwa-btn:active{transform:translateY(0) scale(.96)}
.install-pwa-btn.loading{
  opacity:.6;pointer-events:none;
}
.install-pwa-btn .spinner{
  width:12px;height:12px;border-width:1.5px;
  border-top-color:var(--accent2);margin-right:0;
}

/* Make PWA files button */
.make-pwa-btn{
  display:flex;align-items:center;justify-content:center;gap:4px;
  padding:7px 12px;min-height:36px;border-radius:var(--radius-sm);flex-shrink:0;margin-left:8px;
  background:rgba(124,92,252,0.15);border:1px solid rgba(124,92,252,0.4);
  color:var(--accent2);font-size:13px;font-weight:600;cursor:pointer;
  font-family:inherit;transition:all .2s var(--ease);white-space:nowrap;
}
.make-pwa-btn:hover{
  background:rgba(124,92,252,0.28);border-color:var(--accent2);
  transform:translateY(-1px);
}
.make-pwa-btn:active{transform:translateY(0) scale(.96)}

/* Sites */
.site-card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius);padding:14px 14px;
  display:flex;justify-content:space-between;align-items:center;gap:8px;
  flex-wrap:wrap;
  box-shadow:var(--shadow-md);
  transition:border .2s var(--ease),transform .2s var(--ease),box-shadow .2s var(--ease);
}
.site-card:hover{border-color:var(--border-strong);transform:translateY(-1px);box-shadow:var(--shadow-lg)}
.site-card .site-info{flex:1 1 140px;min-width:140px}
.site-actions{
  display:flex;align-items:center;flex-wrap:wrap;gap:6px;flex-shrink:0;max-width:100%;
}
.site-actions .badge,
.site-actions .public-badge,
.site-actions .install-pwa-btn,
.site-actions .make-pwa-btn,
.site-actions .share-btn,
.site-actions .site-delete-btn{margin-left:0}
.site-card .site-name{
  font-size:18px;font-weight:700;margin-bottom:4px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  color:var(--text);text-decoration:none;transition:color .2s var(--ease);
}
.site-card .site-name:hover{color:var(--accent2)}
.site-card .site-url{
  font-size:14px;color:var(--accent2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  text-decoration:none;opacity:.9;transition:opacity .2s var(--ease);
}
.site-card .site-url:hover{opacity:1;text-decoration:underline}
.site-delete-btn{
  display:flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:var(--radius-sm);
  background:rgba(239,68,68,0.1);border:1px solid transparent;
  color:var(--text2);font-size:19px;cursor:pointer;
  flex-shrink:0;margin-left:8px;transition:all .2s var(--ease);
  font-family:inherit;line-height:1;
}
.site-delete-btn:hover{
  background:rgba(239,68,68,0.2);border-color:rgba(239,68,68,0.4);color:var(--red);
}
.site-delete-btn:active{transform:scale(.92)}
.badge{
  display:inline-block;padding:5px 10px;border-radius:8px;
  font-size:13px;font-weight:600;flex-shrink:0;margin-left:12px;
}
.badge.queued{background:rgba(234,179,8,0.15);color:var(--yellow)}
.badge.running{background:rgba(124,92,252,0.15);color:var(--accent2)}
.badge.done{background:rgba(34,197,94,0.15);color:var(--green)}
.badge.failed{background:rgba(239,68,68,0.15);color:var(--red)}
.badge.cancelled{background:rgba(148,163,184,0.15);color:var(--text2)}

.empty-state{
  text-align:center;padding:60px 20px;color:var(--text2);
}
.empty-state svg{width:64px;height:64px;opacity:0.3;margin-bottom:16px}
.empty-state p{font-size:17px}

/* Sites dropdown */
#sites-dropdown{position:relative;z-index:10;margin:0 20px}
.sites-dropdown-btn{
  width:100%;padding:13px 14px;border-radius:var(--radius);
  background:var(--bg3);border:1px solid var(--border);color:var(--text);
  font-size:16px;font-weight:600;cursor:pointer;font-family:inherit;
  display:flex;justify-content:space-between;align-items:center;transition:all .2s var(--ease);
}
.sites-dropdown-btn:active{transform:scale(.98)}
.sites-dropdown-menu{
  position:absolute;top:calc(100% + 6px);left:0;right:0;
  background:var(--card-solid);
  border:1px solid var(--border);
  border-radius:var(--radius);box-shadow:var(--shadow-lg);
  overflow:hidden;z-index:20;
}
.dropdown-item{
  display:block;width:100%;padding:14px 16px;text-align:left;
  background:none;border:none;color:var(--text);font-size:16px;cursor:pointer;
  font-family:inherit;transition:background .15s var(--ease);border-bottom:1px solid var(--border);
}
.dropdown-item:last-child{border-bottom:none}
.dropdown-item:hover{background:var(--bg3);color:var(--accent2)}
.dropdown-item:active{background:var(--bg3)}

/* Share */
.public-badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:5px 10px;border-radius:8px;
  font-size:13px;font-weight:600;flex-shrink:0;margin-left:8px;
  background:rgba(34,197,94,0.15);color:var(--green);
  white-space:nowrap;
}
.share-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:4px;
  padding:7px 12px;min-height:36px;border-radius:var(--radius-sm);flex-shrink:0;margin-left:8px;
  background:rgba(124,92,252,0.15);border:1px solid rgba(124,92,252,0.4);
  color:var(--accent2);font-size:13px;font-weight:600;cursor:pointer;
  font-family:inherit;transition:all .2s var(--ease);white-space:nowrap;
}
.share-btn:hover{
  background:rgba(124,92,252,0.28);border-color:var(--accent2);
  transform:translateY(-1px);
}
.share-btn:active{transform:translateY(0) scale(.96)}
.share-btn.unshare{
  background:rgba(234,179,8,0.15);border-color:rgba(234,179,8,0.4);color:var(--yellow);
}
.share-btn.unshare:hover{
  background:rgba(234,179,8,0.28);border-color:var(--yellow);
}

/* Public sites gallery */
#public-sites{display:flex;flex-direction:column;gap:12px;padding:0 20px}
.public-card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius);padding:14px 14px;
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  box-shadow:var(--shadow-md);
}
.public-info{flex:1 1 120px;min-width:120px}
.public-subdomain{
  font-size:17px;font-weight:700;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px;
}
.public-owner{font-size:13px;color:var(--text2)}
.visit-btn{
  flex-shrink:0;padding:10px 16px;min-height:40px;border-radius:var(--radius-sm);
  background:linear-gradient(135deg,var(--accent),#6d4ff0);
  color:#fff;text-decoration:none;font-size:14px;font-weight:600;
  transition:all .2s var(--ease);white-space:nowrap;
}
.visit-btn:hover{transform:translateY(-1px);box-shadow:0 4px 16px var(--accent-glow)}
.visit-btn:active{transform:translateY(0) scale(.96)}

.toast{
  position:fixed;bottom:24px;left:50%;transform:translateX(-50%);
  z-index:100;padding:12px 24px;border-radius:var(--radius);
  font-size:16px;font-weight:600;color:#fff;
  animation:fadeUp .3s var(--ease);
  box-shadow:0 1px 2px rgba(0,0,0,0.3),0 8px 32px rgba(0,0,0,0.5);
}
.toast.error{background:var(--red)}
.toast.success{background:var(--green)}

@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

/* Job cards */
.job-card{
  background:var(--card);
  border:1px solid var(--border);
  border-radius:var(--radius);padding:14px 16px;
  box-shadow:var(--shadow-md);
}
.job-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}
.job-desc{font-size:17px;line-height:1.5;color:var(--text);word-break:break-word;margin-bottom:10px}
.job-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;color:var(--text2)}
.job-meta .meta-item{display:flex;align-items:center;gap:4px}
.job-link{margin-top:10px;padding:8px 14px;border-radius:var(--radius-sm);background:rgba(34,197,94,0.1);border:1px solid rgba(34,197,94,0.3);display:inline-block}
.job-link a{color:var(--green);text-decoration:none;font-size:16px;font-weight:600;word-break:break-all}
.job-link a:hover{text-decoration:underline}
.job-error{margin-top:10px;padding:8px 12px;border-radius:var(--radius-sm);background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.3);color:var(--red);font-size:14px}
.job-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.job-actions button{
  padding:8px 12px;min-height:34px;border-radius:var(--radius-sm);font-size:13px;cursor:pointer;font-family:inherit;
  border:1px solid var(--border);background:var(--bg3);color:var(--text2);transition:all .2s var(--ease);
}
.job-actions button:hover{opacity:.85}
.job-actions button:active{transform:scale(.95)}
.job-actions button.fix-btn{border-color:rgba(167,139,250,0.4);color:var(--accent2)}
.job-actions button.retry-btn{border-color:rgba(234,179,8,0.4);color:var(--yellow)}
.job-actions button.cancel-btn{border-color:rgba(239,68,68,0.4);color:var(--red)}
.create-chat-toolbar{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:8px 16px;min-height:44px;background:var(--bg);box-shadow:0 1px 0 rgba(255,255,255,0.04)}
.create-chat-toolbar .title{font-size:16px;font-weight:700;color:var(--text2)}
.create-chat-toolbar button{
  padding:8px 12px;min-height:34px;border-radius:var(--radius-sm);font-size:14px;cursor:pointer;font-family:inherit;
  border:1px solid var(--border);background:var(--bg3);color:var(--text2);transition:all .2s var(--ease);
}
.create-chat-toolbar button:hover{opacity:.85}
.create-chat-toolbar button:active{transform:scale(.95)}
.spinner{
  display:inline-block;width:14px;height:14px;border:2px solid rgba(124,92,252,0.2);
  border-top:2px solid var(--accent2);border-radius:50%;animation:spin .8s linear infinite;
  vertical-align:middle;margin-right:4px;
}
.badge .spinner{width:11px;height:11px;border-width:1.5px}

/* PWA install popup */
.pwa-install-overlay{
  position:fixed;inset:0;z-index:9999;
  display:none;align-items:center;justify-content:center;
  background:rgba(16,11,32,0.92);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  padding:0;
  animation:pwaFadeIn .25s var(--ease);
}
.pwa-install-overlay.show{display:flex}
.pwa-install-card{
  width:100%;max-width:480px;height:100%;
  background:linear-gradient(180deg,#1a1330 0%,#140e28 100%);
  border-radius:var(--radius);
  padding:28px 22px;
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  text-align:center;position:relative;
  box-shadow:0 0 60px rgba(124,92,252,0.25), inset 0 1px 0 rgba(167,139,250,0.15);
  animation:pwaSlideUp .3s var(--ease);
}
.pwa-install-icon{
  width:72px;height:72px;border-radius:var(--radius);
  display:flex;align-items:center;justify-content:center;
  margin-bottom:20px;
  background:linear-gradient(135deg,#7c5cfc 0%,#a78bfa 100%);
  box-shadow:0 0 30px rgba(124,92,252,0.6), 0 0 60px rgba(124,92,252,0.3);
  font-size:38px;
}
.pwa-install-icon img{
  width:48px;height:48px;border-radius:var(--radius);display:block;
}
.pwa-install-title{
  font-size:22px;font-weight:800;margin-bottom:12px;color:var(--text);
  background:linear-gradient(135deg,#fff 0%,var(--accent2) 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;
}
.pwa-install-desc{
  font-size:16px;line-height:1.5;color:var(--text2);margin-bottom:22px;
  word-break:keep-all;
}
.pwa-install-steps{
  width:100%;text-align:left;display:flex;flex-direction:column;gap:12px;
  margin-bottom:26px;
}
.pwa-install-step{
  display:flex;align-items:flex-start;gap:12px;
  background:rgba(124,92,252,0.08);border:1px solid rgba(124,92,252,0.25);
  border-radius:var(--radius);padding:14px 16px;
}
.pwa-install-step .step-num{
  flex-shrink:0;width:26px;height:26px;border-radius:var(--radius-sm);
  background:linear-gradient(135deg,var(--accent),#6d4ff0);
  color:#fff;font-size:15px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
}
.pwa-install-step .step-text{
  font-size:16px;line-height:1.5;color:var(--text);word-break:keep-all;
}
.pwa-install-step .step-text b{color:var(--accent2)}
.pwa-install-btn{
  width:100%;padding:15px;border-radius:var(--radius-sm);
  background:linear-gradient(135deg,var(--accent),#6d4ff0);
  border:none;color:#fff;font-size:17px;font-weight:700;cursor:pointer;
  font-family:inherit;transition:all .2s var(--ease);
  box-shadow:0 4px 20px var(--accent-glow);
  margin-bottom:12px;
}
.pwa-install-btn:hover{transform:translateY(-1px);box-shadow:0 6px 28px var(--accent-glow)}
.pwa-install-btn:active{transform:translateY(0) scale(.98)}
.pwa-install-btn.hidden{display:none}
.pwa-install-close{
  width:100%;padding:13px;border-radius:var(--radius-sm);
  background:rgba(255,255,255,0.05);border:1px solid var(--border);
  color:var(--text2);font-size:16px;font-weight:600;cursor:pointer;
  font-family:inherit;transition:all .2s var(--ease);
}
.pwa-install-close:hover{background:rgba(255,255,255,0.1);color:var(--text)}
.pwa-install-close:active{transform:scale(.98)}
@keyframes pwaFadeIn{from{opacity:0}to{opacity:1}}
@keyframes pwaSlideUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
@media (min-width:480px){
  .pwa-install-card{height:auto;max-height:92vh;overflow-y:auto}
}
