:root{--font-sans:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-mono:source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;--color-bg-app:#0b0f14;--color-bg-deep:#0b0f14;--color-bg-elevated:#121820;--color-bg-panel:#171e27;--color-bg-muted:#1c2231;--color-bg-card:#151c25;--color-bg-card-2:#10161e;--color-text-primary:#f4f7fb;--color-text-secondary:#cde0ef;--color-text-muted:#97a5b5;--color-text-muted-2:#7d8798;--color-border:#ffffff14;--color-border-strong:#ffffff1f;--color-chip:#ffffff0f;--color-primary:#31d17c;--color-primary-hover:#4fe095;--color-primary-dark:#0e8d4f;--color-success:#31d17c;--color-success-soft:#31d17c24;--color-warning:#ffb547;--color-warning-soft:#ffb54724;--color-danger:#ff5d6c;--color-danger-soft:#ff5d6c24;--color-info:#4e9cff;--color-info-soft:#4e9cff24;--color-cyan:#7fe0ff;--color-cyan-soft:#7fe0ff24;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:24px;--radius-pill:999px;--shadow-sm:0 6px 18px #00000047;--shadow-md:0 14px 40px #00000059;--shadow-card-hover:0 18px 44px #00000073;--focus-ring:0 0 0 3px #31d17c59;--glow-primary-soft:0 0 22px #31d17c38;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.2, .64, 1);--duration-fast:.15s;--duration-normal:.28s;--duration-slow:.45s}@keyframes fade-in-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes content-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes analytics-spin{to{transform:rotate(360deg)}}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--color-bg-deep);color:var(--color-text-primary);background-image:radial-gradient(circle at top,#1a2634 0%,#0b0f14 38%);background-attachment:fixed;line-height:1.5}code{font-family:var(--font-mono)}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.topbar{padding-top:calc(env(safe-area-inset-top,0px) + 4px);justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.topbar-brand{align-items:center;gap:10px;min-width:0;display:flex}.topbar-logo{background:linear-gradient(180deg, #1fdf87, var(--color-primary-dark));color:#07120c;letter-spacing:.04em;border-radius:14px;flex-shrink:0;place-items:center;width:38px;height:38px;font-weight:800;display:grid;box-shadow:0 10px 24px #31d17c59}.topbar-brand-text{min-width:0}.topbar-brand-text h1{letter-spacing:.02em;color:var(--color-text-primary);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:15px;font-weight:800;line-height:1.1;overflow:hidden}.topbar-brand-text p{color:var(--color-text-muted);margin:3px 0 0;font-size:12px}.topbar-actions{flex-shrink:0;align-items:center;display:flex;position:relative}.topbar-icon-btn{border:1px solid var(--color-border);width:42px;height:42px;color:var(--color-text-primary);cursor:pointer;box-shadow:var(--shadow-md);transition:border-color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out);background:#ffffff0a;border-radius:14px;place-items:center;font-size:14px;font-weight:700;display:grid}.topbar-icon-btn:hover{border-color:var(--color-border-strong);background:#ffffff12}.topbar-icon-btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.topbar-avatar{color:var(--color-text-primary);font-weight:700}.topbar-menu{background:var(--color-bg-panel);border:1px solid var(--color-border);border-radius:var(--radius-md);min-width:220px;box-shadow:var(--shadow-md);z-index:50;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);padding:8px;position:absolute;top:calc(100% + 8px);right:0}.topbar-menu-header{border-bottom:1px solid var(--color-border);margin-bottom:6px;padding:8px 10px 12px}.topbar-menu-name{color:var(--color-text-primary);font-size:.95rem;font-weight:700}.topbar-menu-email{color:var(--color-text-muted);word-break:break-all;margin-top:2px;font-size:.8rem}.topbar-menu-item{text-align:left;width:100%;color:var(--color-text-primary);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out);background:0 0;border:0;border-radius:10px;padding:10px 12px;font-size:.9rem;display:block}.topbar-menu-item:hover{background:#ffffff0d}.topbar-menu-item-danger{color:var(--color-danger)}.bottom-nav{bottom:calc(env(safe-area-inset-bottom,0px) + 8px);border:1px solid var(--color-border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-md);z-index:40;background:#10161ee6;border-radius:22px;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:8px;margin-top:16px;padding:10px;display:grid;position:sticky}.bottom-nav-item{text-align:center;color:var(--color-text-muted);transition:color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out);border:1px solid #0000;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:8px 4px;font-size:11px;text-decoration:none;display:flex}.bottom-nav-item:hover{color:var(--color-text-secondary)}.bottom-nav-item.active{color:var(--color-text-primary);background:#31d17c1a;border-color:#31d17c33}.bottom-nav-icon{font-size:16px;line-height:1}.bottom-nav-label{letter-spacing:.01em;font-weight:600}.app-layout{justify-content:center;width:100%;min-height:100vh;display:flex}.app-shell{width:100%;max-width:430px;min-height:100vh;padding:calc(env(safe-area-inset-top,0px) + 12px) 14px calc(env(safe-area-inset-bottom,0px) + 24px);flex-direction:column;display:flex;position:relative}.content-area{flex:1;padding:0}.content-route{animation:content-enter var(--duration-slow) var(--ease-out) both}@media (width>=768px){.app-shell{max-width:720px;padding:calc(env(safe-area-inset-top,0px) + 16px) 20px calc(env(safe-area-inset-bottom,0px) + 28px)}}@media (width>=1180px){.app-shell{max-width:1040px}}.api-error-banner{z-index:9999;color:#fff;background:#c62828;justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.9rem;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 2px 8px #0003}.api-error-banner__text{flex:1;min-width:0}.api-error-banner__dismiss{width:2rem;height:2rem;color:inherit;cursor:pointer;background:#fff3;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:1.25rem;line-height:1;display:flex}.api-error-banner__dismiss:hover{background:#ffffff4d}.page{width:100%}.page-title{margin-bottom:var(--space-6);color:var(--color-text-primary);letter-spacing:-.02em;font-size:clamp(1.5rem,2vw,1.85rem);font-weight:700;line-height:1.25}.page-header{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.page-actions{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.card{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:box-shadow var(--duration-normal) var(--ease-out), border-color var(--duration-normal) var(--ease-out), transform var(--duration-normal) var(--ease-out)}.card:hover{box-shadow:var(--shadow-card-hover);border-color:#31d17c59;transform:translateY(-2px)}.btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);cursor:pointer;min-height:2.25rem;transition:background-color var(--duration-normal) var(--ease-out), color var(--duration-normal) var(--ease-out), border-color var(--duration-normal) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-spring);border:1px solid #0000;padding:.5rem 1rem;font-size:.9rem;font-weight:600;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.btn-primary{background:var(--color-primary);color:#07120c}.btn-primary:hover{background:var(--color-primary-hover);box-shadow:var(--glow-primary-soft)}.btn-primary:active{box-shadow:none}.btn-secondary{background:var(--color-bg-muted);color:var(--color-text-primary);border-color:var(--color-border)}.btn-secondary:hover{background:var(--color-bg-elevated);border-color:#31d17c59}.btn-outline{border-color:var(--color-primary);color:var(--color-primary);background:0 0}.btn-outline:hover{background:#31d17c29;box-shadow:0 0 0 1px #31d17c40}.btn-link{color:var(--color-primary);padding:var(--space-2);transition:color var(--duration-fast) var(--ease-out);background:0 0;border:none;text-decoration:underline}.btn-link:hover{color:var(--color-primary-hover)}.btn-icon{cursor:pointer;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--color-text-secondary);transition:background-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);background:0 0;border:none}.btn-icon:hover{background:var(--color-bg-muted);color:var(--color-text-primary)}.btn-icon:focus-visible{box-shadow:var(--focus-ring);outline:none}.btn-small{min-height:1.9rem;padding:.35rem .65rem;font-size:.82rem}.form-group{margin-bottom:var(--space-4)}.form-group label{margin-bottom:var(--space-2);color:var(--color-text-primary);font-weight:600;display:block}.form-group input,.form-group select,.form-group textarea,.input{border:1px solid var(--color-border);border-radius:var(--radius-sm);width:100%;color:var(--color-text-primary);background:var(--color-bg-muted);transition:border-color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out);padding:.65rem .8rem;font-size:1rem}.form-group input:hover,.form-group select:hover,.form-group textarea:hover,.input:hover{border-color:#31d17c47}.form-group input:focus,.form-group select:focus,.form-group textarea:focus,.input:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.hint{color:var(--color-text-secondary);font-size:.9rem;line-height:1.45}.message{border-radius:var(--radius-sm);padding:.6rem .75rem;font-size:.9rem}.message-ok{color:var(--color-success);background:#30c77724}.message-error{color:var(--color-danger);background:#ff6b6b24}.loading{text-align:center;color:var(--color-text-secondary);padding:3rem}.table-container{background:var(--color-bg-elevated);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);border:1px solid var(--color-border);transition:box-shadow var(--duration-normal) var(--ease-out), border-color var(--duration-normal) var(--ease-out);overflow:hidden}.data-table{border-collapse:collapse;width:100%}.data-table thead{background:var(--color-bg-muted);border-bottom:1px solid var(--color-border)}.data-table th{text-align:left;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.045em;padding:.95rem;font-size:.78rem;font-weight:700}.data-table td{border-bottom:1px solid var(--color-border);color:var(--color-text-primary);padding:.95rem}.data-table tbody tr{transition:background-color var(--duration-fast) var(--ease-out)}.data-table tbody tr:hover{background:var(--color-bg-muted)}.empty-state{text-align:center;color:var(--color-text-secondary);padding:3rem}.monospace{font-family:var(--font-mono);font-size:.85rem}
