@tailwind base; @tailwind components; @tailwind utilities; :root { font-family: "Segoe UI", "Inter", sans-serif; color: #e8eadf; background: radial-gradient(circle at top left, rgba(94, 112, 71, 0.28), transparent 32%), radial-gradient(circle at bottom right, rgba(67, 80, 51, 0.26), transparent 30%), linear-gradient(160deg, #10130f 0%, #171b15 45%, #0d100c 100%); } * { box-sizing: border-box; } html, body, #root { min-height: 100%; margin: 0; } body { min-height: 100vh; color: #e8eadf; background: transparent; } button, input, select, textarea { font: inherit; } button { cursor: pointer; } input, select, textarea { width: 100%; border: 1px solid rgba(171, 180, 140, 0.18); border-radius: 14px; background: rgba(12, 16, 11, 0.72); color: #eef1e5; padding: 0.85rem 1rem; transition: border-color 0.2s ease, box-shadow 0.2s ease, background 0.2s ease; } input:focus, select:focus, textarea:focus { outline: none; border-color: rgba(140, 158, 101, 0.74); box-shadow: 0 0 0 3px rgba(109, 127, 73, 0.2); } textarea { resize: vertical; } .eyebrow, .panel-kicker { text-transform: uppercase; letter-spacing: 0.16em; font-size: 0.72rem; color: #aab37d; } .loading-shell, .auth-shell { min-height: 100vh; display: grid; gap: 2rem; align-items: center; padding: 3rem; } .loading-shell { place-items: center; } .loading-card, .auth-card, .auth-hero, .panel, .sidebar { border: 1px solid rgba(171, 180, 140, 0.12); background: rgba(17, 22, 16, 0.76); backdrop-filter: blur(16px); box-shadow: 0 28px 60px rgba(0, 0, 0, 0.28); } .loading-card, .auth-card, .auth-hero { border-radius: 28px; padding: 2rem; } .auth-shell { grid-template-columns: 1.1fr 0.9fr; } .auth-hero { min-height: 520px; display: flex; flex-direction: column; justify-content: center; background: linear-gradient(135deg, rgba(103, 120, 68, 0.2), transparent 55%), rgba(17, 22, 16, 0.82); } .auth-brand { display: flex; align-items: center; gap: 1rem; } .brand-mark { width: 72px; height: 72px; display: inline-flex; align-items: center; justify-content: center; border-radius: 22px; color: #dfe6c8; background: linear-gradient(145deg, rgba(104, 121, 68, 0.34), rgba(47, 56, 36, 0.76)); border: 1px solid rgba(171, 180, 140, 0.18); } .auth-hero h1 { font-size: clamp(2.4rem, 5vw, 4.2rem); line-height: 1.04; margin: 0.35rem 0 0; max-width: none; } .auth-hero p, .muted-copy, .header-copy, .card-footer span, .settings-row p, .provider-header p { color: #b8c0af; } .hero-tags, .chip-row, .button-row { display: flex; gap: 0.75rem; flex-wrap: wrap; } .hero-tags span, .profile-chip, .status-pill { display: inline-flex; align-items: center; justify-content: center; text-decoration: none; border-radius: 999px; padding: 0.55rem 0.95rem; background: rgba(171, 180, 140, 0.08); border: 1px solid rgba(171, 180, 140, 0.12); color: inherit; } .auth-card { max-width: 520px; width: 100%; justify-self: center; } .auth-tabs, .settings-inline, .header-tools, .provider-header, .toggle-row, .ammo-card-top, .panel-heading, .settings-row, .card-footer, .stage-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; } .auth-tabs { margin-bottom: 1.25rem; } .tab-button, .nav-button, .profile-chip, .secondary-button, .primary-button { border: 0; transition: transform 0.2s ease, background 0.2s ease, border-color 0.2s ease; } .tab-button { flex: 1; padding: 0.95rem 1rem; border-radius: 16px; background: rgba(171, 180, 140, 0.06); color: #dce2d2; } .tab-button.active, .nav-button.active, .primary-button, .profile-chip.active { background: linear-gradient(135deg, #89985f, #4c5736); color: #eef3e4; } .form-stack, .settings-block, .settings-list, .provider-config-grid, .nav-stack, .main-stage, .view-grid, .firearm-grid, .ammo-grid, .settings-grid { display: grid; gap: 1rem; } .auth-divider { margin: 1.5rem 0 1rem; text-align: center; color: #8d9586; position: relative; } .auth-divider span { position: relative; padding: 0 0.75rem; background: rgba(16, 20, 27, 0.92); } .auth-divider::before { content: ""; position: absolute; top: 50%; left: 0; right: 0; height: 1px; background: rgba(171, 180, 140, 0.12); } .provider-list { display: grid; gap: 0.75rem; } .sso-button { width: 100%; display: inline-flex; align-items: center; justify-content: center; border-radius: 14px; padding: 0.9rem 1rem; border: 1px solid rgba(171, 180, 140, 0.12); background: rgba(171, 180, 140, 0.06); color: #edf0e3; transition: transform 0.2s ease, background 0.2s ease, border-color 0.2s ease; } .sso-button:hover { transform: translateY(-1px); background: rgba(171, 180, 140, 0.12); } .full-width { width: 100%; } .error-banner, .success-banner { margin: 0; padding: 0.95rem 1rem; border-radius: 16px; } .error-banner { background: rgba(146, 49, 49, 0.24); border: 1px solid rgba(222, 96, 96, 0.28); color: #ffd0d0; } .success-banner { background: rgba(43, 97, 76, 0.24); border: 1px solid rgba(88, 180, 143, 0.28); color: #d3ffe8; } .toast-banner { position: fixed; top: 1rem; left: 50%; transform: translateX(-50%); z-index: 1000; min-width: min(520px, calc(100vw - 2rem)); box-shadow: 0 18px 40px rgba(0, 0, 0, 0.28); } .primary-button, .secondary-button, .nav-button { display: inline-flex; align-items: center; justify-content: center; gap: 0.55rem; border-radius: 14px; padding: 0.85rem 1.1rem; } .primary-button { font-weight: 700; } .secondary-button, .nav-button, .profile-chip { background: rgba(171, 180, 140, 0.06); color: #edf0e3; border: 1px solid rgba(171, 180, 140, 0.12); } .nav-button { justify-content: flex-start; } .primary-button:hover, .secondary-button:hover, .tab-button:hover, .nav-button:hover, .profile-chip:hover { transform: translateY(-1px); } .app-shell { min-height: 100vh; display: grid; grid-template-columns: 300px 1fr; gap: 1.5rem; padding: 1.5rem; } .sidebar, .panel { border-radius: 28px; } .sidebar { padding: 1.5rem; position: sticky; top: 1.5rem; height: calc(100vh - 3rem); } .mobile-sidebar { display: none; } .brand-block h1, .stage-header h2, .panel h3 { margin: 0.55rem 0 0.35rem; } .main-stage { align-content: start; } .stage-header { padding: 0.5rem 0; } .profile-picker { min-width: 220px; } .profile-picker span, label span { display: block; margin-bottom: 0.45rem; color: #d9e0e6; font-size: 0.92rem; } .stage-stats, .view-grid, .settings-grid { display: grid; gap: 1rem; } .stage-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } .mini-stat { border-radius: 22px; padding: 1.2rem 1.35rem; background: rgba(17, 22, 16, 0.72); border: 1px solid rgba(171, 180, 140, 0.12); } .mini-stat span { color: #b7bead; display: block; margin-bottom: 0.45rem; } .mini-stat strong { font-size: 1.65rem; } .view-grid { grid-template-columns: minmax(0, 1.35fr) minmax(360px, 0.8fr); } .settings-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .auth-settings-panel, .settings-menu-panel { grid-column: 1 / -1; } .panel { padding: 1.4rem; } .firearm-grid, .ammo-grid, .provider-config-grid { margin-top: 1rem; } .firearm-grid { grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); } .ammo-grid, .provider-config-grid { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); } .firearm-card, .ammo-card, .provider-card { border-radius: 22px; padding: 1rem; background: rgba(12, 16, 11, 0.74); border: 1px solid rgba(171, 180, 140, 0.1); } .firearm-visual { min-height: 180px; border-radius: 20px; padding: 1rem; display: flex; align-items: center; justify-content: center; background: rgba(171, 180, 140, 0.04); } .firearm-photo, .firearm-silhouette { width: 100%; max-height: 180px; border-radius: 18px; } .firearm-photo { object-fit: cover; } .firearm-silhouette { object-fit: contain; padding: 10px; filter: brightness(0) invert(0.95); } .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.9rem; margin-top: 1rem; } .form-grid.compact { grid-template-columns: minmax(0, 1fr); } .full-width { grid-column: 1 / -1; } .card-footer { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid rgba(171, 180, 140, 0.08); } .placeholder-copy { margin: 0; color: #abb4a1; padding: 1rem 0; } .settings-row { padding: 0.95rem 0; border-top: 1px solid rgba(171, 180, 140, 0.08); } .settings-row:first-child { border-top: 0; padding-top: 0; } .settings-row.static { padding-bottom: 0.4rem; } .status-pill { color: #eef3e4; background: linear-gradient(135deg, #829455, #59693d); border: 0; } .toggle-row { gap: 0.65rem; color: #d7ddc8; } .toggle-row input { width: 18px; height: 18px; padding: 0; } @media (max-width: 1100px) { .app-shell, .auth-shell, .view-grid, .settings-grid { grid-template-columns: 1fr; } .desktop-sidebar { display: none; } .mobile-sidebar { display: block; position: static; height: auto; } .sidebar { position: static; height: auto; } } @media (max-width: 720px) { .app-shell, .auth-shell { padding: 1rem; } .stage-header, .header-tools, .card-footer, .settings-inline { flex-direction: column; align-items: stretch; } .stage-stats, .form-grid { grid-template-columns: 1fr; } }