*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0d0d0d;--surface: #181818;--surface2: #242424;--border: #2a2a2a;--accent: #e8c547;--accent-dim: #a8902e;--text: #f2ede4;--text-muted: #7a7570;--text-soft: #b0a89e;--danger: #e05c5c;--radius: 14px;--font-display: "DM Serif Display", Georgia, serif;--font-body: "DM Sans", system-ui, sans-serif;--nav-h: 60px;--safe-bottom: env(safe-area-inset-bottom, 0px)}html,body,#root{height:100%;background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;overflow:hidden}button{cursor:pointer;border:none;font-family:var(--font-body);background:none;color:inherit}input,textarea,select{font-family:var(--font-body)}a{color:inherit;text-decoration:none}img{display:block}.page{height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}.input{width:100%;padding:13px 16px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:15px;outline:none}.input:focus{border-color:var(--accent)}.avatar{border-radius:50%;object-fit:cover;background:var(--surface2);flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 20px;border-radius:50px;font-size:14px;font-weight:600;transition:opacity .15s}.btn:disabled{opacity:.45}.btn-primary{background:var(--accent);color:#0d0d0d}.btn-ghost{background:var(--surface2);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}@keyframes spin{to{transform:rotate(360deg)}}.spinner{width:22px;height:22px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.toast{position:fixed;bottom:calc(var(--nav-h) + var(--safe-bottom) + 12px);left:50%;transform:translate(-50%);background:var(--surface);border:1px solid var(--border);color:var(--text);padding:10px 20px;border-radius:50px;font-size:14px;font-weight:500;z-index:400;white-space:nowrap;box-shadow:0 4px 20px #0006;animation:fadeup .25s ease}@keyframes fadeup{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}body,nav,header,button,input,textarea,article,div{touch-action:pan-x pan-y}img{touch-action:pan-x pan-y pinch-zoom}div:has(>img){touch-action:pan-x pan-y pinch-zoom}input,textarea,select{font-size:16px!important}
