*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}app-root{display:block;min-height:100%;background:var(--bg-gradient)}button{font-family:inherit;cursor:pointer;border:none;background:transparent;color:inherit}input,select,textarea{font-family:inherit;color:inherit}.icon{font-family:Material Symbols Rounded,sans-serif;font-weight:400;font-style:normal;font-size:1.2rem;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-feature-settings:"liga";font-feature-settings:"liga";-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;vertical-align:middle}.mono{font-family:JetBrains Mono,Courier New,monospace}.glass{background:var(--surface);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border)}.toast-stack{position:fixed;bottom:110px;left:50%;transform:translate(-50%);display:flex;flex-direction:column-reverse;gap:8px;z-index:10000;pointer-events:none}@media(min-width:900px){.toast-stack{bottom:24px;right:24px;left:auto;transform:none}}.toast{pointer-events:auto;padding:10px 16px;border-radius:12px;background:#0f172aeb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:#fff;font-size:.85rem;font-weight:500;box-shadow:0 10px 30px #0006;border:1px solid var(--border);max-width:min(340px,100vw - 40px);animation:toast-in .25s ease-out}@media(min-width:480px){.toast{padding:12px 20px;border-radius:14px;font-size:.9rem}}.toast.success{border-color:#34d39966}.toast.danger{border-color:#f8717166}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal-backdrop{position:fixed;inset:0;background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9000;display:flex;align-items:flex-end;justify-content:center;animation:fade-in .2s ease-out}@media(min-width:900px){.modal-backdrop{align-items:center}}.modal-shell{background:#1e1e2f;color:#fff;width:100%;max-width:520px;border-radius:24px 24px 0 0;border:1px solid var(--border);max-height:92vh;display:flex;flex-direction:column;animation:modal-in .25s ease-out}@media(min-width:900px){.modal-shell{border-radius:20px;max-height:85vh}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);gap:8px}@media(min-width:480px){.modal-header{padding:16px 20px}}.modal-header h2{margin:0;font-size:1rem;font-weight:700;white-space:nowrap}@media(min-width:480px){.modal-header h2{font-size:1.1rem}}.modal-body{padding:16px;overflow-y:auto;flex:1}@media(min-width:480px){.modal-body{padding:20px}}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border)}.btn-link{color:var(--text-dim);font-weight:500;padding:8px 10px;font-size:.9rem}@media(min-width:480px){.btn-link{padding:8px 12px;font-size:.95rem}}.btn-link:hover{color:#fff}.btn-primary{background:var(--primary);color:#1a1b41;font-weight:700;padding:9px 14px;border-radius:10px;font-size:.9rem;white-space:nowrap}@media(min-width:480px){.btn-primary{padding:10px 18px;font-size:.95rem}}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-danger{background:#f8717126;color:var(--danger);font-weight:600;padding:10px 18px;border-radius:10px;font-size:.95rem;border:1px solid rgba(248,113,113,.3)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}:root{--bg: #1a1b41;--bg-gradient: radial-gradient(circle at top left, #2d2e5f 0%, #1a1b41 100%);--surface: rgba(255, 255, 255, .05);--surface-strong: rgba(30, 41, 59, .6);--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .12);--text: #ffffff;--text-dim: #94a3b8;--text-faint: #64748b;--primary: #a78bfa;--primary-rgb: 167, 139, 250;--secondary: #f472b6;--tertiary: #fb923c;--success: #34d399;--danger: #f87171}
