*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --bg: #13111a; --bg-surface: rgba(28, 25, 42, 0.72); --bg-surface-2: rgba(36, 33, 56, 0.65); --bg-surface-3: rgba(48, 45, 72, 0.6); --border: rgba(245, 240, 232, 0.08); --border-strong: rgba(245, 240, 232, 0.16); --text: #f5f0e8; --text-muted: #a09890; --text-dim: #686070; --accent: #e8a87c; --accent-hover: #d4956a; --accent-dim: rgba(232, 168, 124, 0.12); --green: #22c55e; --blue: #3b82f6; --yellow: #eab308; --red: #ef4444; --magenta: #d946ef; --radius-xs: 4px; --radius: 12px; --radius-md: 16px; --radius-lg: 20px; --radius-xl: 28px; --radius-pill: 999px; --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px; --sp-5: 20px; --sp-6: 24px; --sp-8: 32px; --sp-10: 40px; --sp-12: 48px; --sidebar-width: 260px; font-family: 'Sora', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-size: 14px; color: var(--text); background: var(--bg); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; letter-spacing: -0.01em; } html, body, #app { height: 100%; width: 100%; overflow: hidden; } body { position: relative; color: var(--text); background: radial-gradient(ellipse 80% 60% at 15% 10%, rgba(232, 168, 124, 0.07), transparent 55%), radial-gradient(ellipse 70% 50% at 85% 90%, rgba(245, 240, 232, 0.05), transparent 50%), var(--bg); } body::before { content: ''; position: fixed; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(180deg, rgba(255, 255, 255, 0.02), transparent 40%), radial-gradient(circle at top left, rgba(255, 214, 170, 0.05), transparent 28%); } a { color: inherit; } button, input, textarea { font: inherit; } button:focus-visible, input:focus-visible, textarea:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(232, 168, 124, 0.12); } /* ── Layout ────────────────────────────────────────────── */ .layout { display: flex; height: 100vh; overflow: hidden; } .main-content { flex: 1; overflow-y: auto; padding: var(--sp-8); } /* ── Shared content areas ───────────────────────────────── */ .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; gap: var(--sp-3); color: var(--text-muted); text-align: center; } .empty-state h2 { font-size: 24px; font-weight: 700; color: var(--text); } .surface-glass { background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), transparent 100%), var(--bg-surface); backdrop-filter: blur(18px) saturate(160%); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: 0 8px 40px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.04); } .label-eyebrow { font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-dim); } /* ── Buttons ────────────────────────────────────────────── */ .btn-primary { padding: 10px 20px; background: var(--accent); color: #1a141f; border: none; border-radius: var(--radius); font-size: 14px; font-weight: 600; cursor: pointer; transition: background 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease; } .btn-primary:hover:not(:disabled) { background: var(--accent-hover); transform: translateY(-1px); box-shadow: 0 6px 20px rgba(232, 168, 124, 0.28); } .btn-primary:active:not(:disabled) { transform: translateY(0); box-shadow: 0 2px 8px rgba(232, 168, 124, 0.15); } .btn-primary:disabled { opacity: 0.45; cursor: not-allowed; } .btn-primary.btn-sm { padding: 6px 14px; font-size: 13px; } .btn-secondary { padding: 10px 20px; background: rgba(255, 255, 255, 0.05); color: var(--text-muted); border: 1px solid var(--border); border-radius: var(--radius); font-size: 14px; font-weight: 500; cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease; } .btn-secondary:hover:not(:disabled) { background: rgba(255, 255, 255, 0.09); border-color: var(--border-strong); color: var(--text); } .btn-ghost { padding: 8px 16px; background: transparent; color: var(--text-dim); border: 1px solid rgba(255, 255, 255, 0.06); border-radius: var(--radius); font-size: 13px; font-weight: 400; cursor: pointer; transition: color 0.15s ease, border-color 0.15s ease; } .btn-ghost:hover:not(:disabled) { color: var(--text-muted); border-color: rgba(255, 255, 255, 0.12); } .btn-icon { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 10px; color: var(--text-muted); cursor: pointer; font-size: 16px; transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, transform 0.15s ease; } .btn-icon:hover:not(:disabled) { background: rgba(255, 255, 255, 0.08); border-color: rgba(255, 255, 255, 0.14); color: var(--text); transform: translateY(-1px); } .btn-danger { padding: 8px 16px; background: transparent; color: #f87171; border: 1px solid rgba(239, 68, 68, 0.3); border-radius: var(--radius); font-size: 13px; font-weight: 600; cursor: pointer; transition: background 0.15s ease, border-color 0.15s ease; } .btn-danger:hover:not(:disabled) { background: rgba(239, 68, 68, 0.1); border-color: rgba(239, 68, 68, 0.5); } input[type='text'], input[type='search'], textarea { background: rgba(18, 16, 26, 0.85); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: var(--radius); color: var(--text); padding: 10px 14px; font-size: 14px; transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease; outline: none; } input[type='text']:focus, input[type='search']:focus, textarea:focus { border-color: rgba(232, 168, 124, 0.5); box-shadow: 0 0 0 3px rgba(232, 168, 124, 0.12); } input::placeholder, textarea::placeholder { color: var(--text-dim); } input[type='range'] { -webkit-appearance: none; appearance: none; height: 4px; background: rgba(255, 255, 255, 0.1); border-radius: 100px; outline: none; } input[type='range']::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 16px; background: var(--accent); border-radius: 50%; cursor: pointer; box-shadow: 0 0 0 3px rgba(232, 168, 124, 0.2); transition: box-shadow 0.15s ease; } input[type='range']::-webkit-slider-thumb:hover { box-shadow: 0 0 0 5px rgba(232, 168, 124, 0.3), 0 0 12px rgba(232, 168, 124, 0.3); } @media (max-width: 860px) { .main-content { padding: var(--sp-6); } } @media (max-width: 720px) { html, body, #app { overflow: auto; } .layout { flex-direction: column; height: auto; min-height: 100vh; } .main-content { padding: var(--sp-5); } }