*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow-x:hidden}body{font-family:Inter,system-ui,sans-serif;background-color:var(--tg-theme-bg-color, #1a0a2e);color:var(--tg-theme-text-color, #f5f0ff);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--color-bg: #1a0a2e;--color-surface: #2a1250;--color-surface-2: #341863;--color-gold: #c9a84c;--color-gold-light: #e8c96d;--color-gold-dim: #8a6f30;--color-purple: #9b72cf;--color-purple-light:#c4a0f5;--color-text: #f5f0ff;--color-text-muted: #a89cc0;--color-border: rgba(201, 168, 76, .25);--color-error: #e05c6e;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--shadow-gold: 0 0 18px rgba(201, 168, 76, .35);--shadow-card: 0 8px 32px rgba(0, 0, 0, .5)}.app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(160deg,#1a0a2e,#0d0520 60%,#1a0a2e);position:relative;overflow:hidden}.app:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(1px 1px at 15% 20%,rgba(255,255,255,.6) 0%,transparent 100%),radial-gradient(1px 1px at 75% 10%,rgba(255,255,255,.5) 0%,transparent 100%),radial-gradient(1.5px 1.5px at 40% 70%,rgba(255,255,255,.4) 0%,transparent 100%),radial-gradient(1px 1px at 90% 55%,rgba(255,255,255,.5) 0%,transparent 100%),radial-gradient(1px 1px at 25% 85%,rgba(255,255,255,.4) 0%,transparent 100%),radial-gradient(1.5px 1.5px at 60% 40%,rgba(255,255,255,.3) 0%,transparent 100%),radial-gradient(1px 1px at 5% 50%,rgba(255,255,255,.5) 0%,transparent 100%),radial-gradient(1px 1px at 85% 80%,rgba(255,255,255,.4) 0%,transparent 100%),radial-gradient(1px 1px at 50% 95%,rgba(255,255,255,.3) 0%,transparent 100%);pointer-events:none;z-index:0}.app>*{position:relative;z-index:1}.screen{flex:1;display:flex;flex-direction:column;padding:20px 16px 32px;overflow-y:auto;-webkit-overflow-scrolling:touch}.app-header{text-align:center;padding:28px 16px 16px;flex-shrink:0}.app-header .app-name{font-size:1.5rem;font-weight:700;color:var(--color-gold);letter-spacing:.04em;text-shadow:0 0 20px rgba(201,168,76,.5)}.app-header .tagline{font-size:.8rem;color:var(--color-text-muted);margin-top:6px;line-height:1.45;font-style:italic}.ornament-divider{display:flex;align-items:center;gap:10px;margin:16px 0;color:var(--color-gold-dim);font-size:.75rem}.ornament-divider:before,.ornament-divider:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--color-gold-dim),transparent)}.btn-primary{width:100%;padding:16px 24px;background:linear-gradient(135deg,#c9a84c,#e8c96d,#c9a84c);color:#1a0a2e;font-family:inherit;font-size:1rem;font-weight:700;border:none;border-radius:var(--radius-lg);cursor:pointer;letter-spacing:.03em;box-shadow:var(--shadow-gold);transition:transform .15s ease,box-shadow .15s ease,opacity .15s ease;-webkit-tap-highlight-color:transparent}.btn-primary:active{transform:scale(.97);box-shadow:0 0 8px #c9a84c33}.btn-primary:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-secondary{width:100%;padding:14px 24px;background:transparent;color:var(--color-purple-light);font-family:inherit;font-size:.95rem;font-weight:600;border:1.5px solid rgba(155,114,207,.45);border-radius:var(--radius-lg);cursor:pointer;letter-spacing:.02em;transition:background .15s ease,border-color .15s ease;-webkit-tap-highlight-color:transparent}.btn-secondary:active{background:#9b72cf1f;border-color:#9b72cfb3}.spinner{width:40px;height:40px;border:3px solid rgba(201,168,76,.2);border-top-color:var(--color-gold);border-radius:50%;animation:spin .9s linear infinite;margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{background:#e05c6e26;border:1px solid rgba(224,92,110,.4);border-radius:var(--radius-md);padding:12px 16px;font-size:.875rem;color:#f5a0aa;text-align:center;margin-bottom:16px}textarea:focus{border-color:#c9a84c99!important;outline:none;box-shadow:0 0 0 3px #c9a84c1a}@keyframes fadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .4s ease forwards}@keyframes pulseGlow{0%,to{opacity:.5}50%{opacity:1}}.pulse{animation:pulseGlow 2s ease-in-out infinite}
