:root { --bg-1: #081a1d; --bg-2: #0f2c30; --panel: rgba(10, 23, 26, 0.76); --panel-stroke: rgba(180, 223, 210, 0.2); --text: #f6f4ee; --muted: #b5d2ca; --accent-hot: #ff6a3d; --accent-cool: #2ce0bf; --accent-gold: #f5c85b; --passenger-accent: #f5c85b; --flight-accent: #73d8ff; --danger: #ff4f4f; --shadow: 0 22px 55px rgba(0, 0, 0, 0.36); } * { box-sizing: border-box; } html, body { margin: 0; padding: 0; min-height: 100%; } body { color: var(--text); font-family: "Space Grotesk", "Trebuchet MS", sans-serif; line-height: 1.45; background: radial-gradient(circle at 14% 16%, #215157 0%, transparent 31%), radial-gradient(circle at 88% 0%, #612a12 0%, transparent 27%), linear-gradient(155deg, var(--bg-1), var(--bg-2)); padding: 1.4rem; position: relative; overflow-x: hidden; } .shape { position: fixed; pointer-events: none; z-index: 0; border-radius: 999px; filter: blur(36px); opacity: 0.42; } .shape-a { width: 220px; height: 220px; left: -60px; top: 22%; background: #2ad8b6; } .shape-b { width: 280px; height: 280px; right: -120px; top: -80px; background: #ff7348; } .shape-c { width: 190px; height: 190px; right: 30%; bottom: -80px; background: #ebb94e; } .hero, .grid, .timeline { position: relative; z-index: 1; } .hero { display: flex; justify-content: space-between; gap: 1.25rem; align-items: flex-start; margin-bottom: 1.2rem; animation: reveal-up 500ms ease-out both; } .hero-title-wrap { max-width: 760px; } .eyebrow { margin: 0; text-transform: uppercase; letter-spacing: 0.08em; color: var(--accent-cool); font-weight: 700; } h1, h2, h3 { font-family: "Bricolage Grotesque", "Segoe UI", sans-serif; margin: 0; line-height: 1.08; } h1 { font-size: clamp(1.75rem, 3.3vw, 2.8rem); margin-top: 0.25rem; } .subtitle { margin: 0.6rem 0 0; color: var(--muted); max-width: 60ch; line-height: 1.4; } .hero-badges { display: flex; gap: 0.65rem; flex-wrap: wrap; justify-content: flex-end; } .badge { background: rgba(14, 39, 44, 0.82); border: 1px solid var(--panel-stroke); border-radius: 999px; padding: 0.42rem 0.78rem; font-size: 0.85rem; } .badge-accent { border-color: rgba(44, 224, 191, 0.7); } .badge-score { border-color: rgba(245, 200, 91, 0.65); } .grid { display: grid; grid-template-columns: 1fr 1.5fr 1fr; gap: 1.2rem; margin-bottom: 1.2rem; } .panel { border: 1px solid var(--panel-stroke); border-radius: 1rem; background: var(--panel); backdrop-filter: blur(8px); box-shadow: var(--shadow); padding: 1.15rem; } .panel h2 { font-size: 1.22rem; margin-bottom: 0.9rem; } label { display: block; font-size: 0.84rem; color: var(--muted); margin-top: 0.62rem; } select, button { font: inherit; } select { width: 100%; border-radius: 0.65rem; border: 1px solid rgba(170, 225, 210, 0.34); background: rgba(4, 18, 21, 0.85); color: var(--text); padding: 0.58rem 0.68rem; margin-top: 0.3rem; } select:focus, button:focus { outline: 2px solid rgba(44, 224, 191, 0.55); outline-offset: 1px; } .button-row { display: flex; gap: 0.6rem; margin-top: 0.82rem; flex-wrap: wrap; } .button-row.stacked { margin-top: 0.9rem; } .btn { border: none; border-radius: 0.65rem; padding: 0.6rem 0.84rem; cursor: pointer; font-weight: 700; transition: transform 120ms ease, filter 120ms ease; } .btn:hover { transform: translateY(-1px); filter: brightness(1.08); } .btn:disabled { opacity: 0.45; cursor: not-allowed; transform: none; } .btn-primary { background: linear-gradient(135deg, #ff6a3d, #ff914f); color: #1c0f05; } .btn-secondary { background: linear-gradient(135deg, #26ccad, #58f2ca); color: #072523; } .btn-danger { background: linear-gradient(135deg, #ea3f3f, #ff6d55); color: #2a0404; } .btn-ghost { background: rgba(14, 35, 39, 0.84); color: var(--text); border: 1px solid rgba(167, 220, 207, 0.3); } .btn.compact { padding: 0.32rem 0.55rem; } .task-meta { margin-top: 0.85rem; color: var(--muted); line-height: 1.5; min-height: 3rem; } .metrics { margin-top: 0.85rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.62rem; } .metric { background: rgba(9, 28, 33, 0.8); border: 1px solid rgba(164, 219, 205, 0.26); border-radius: 0.72rem; padding: 0.62rem; } .metric-label { margin: 0; color: var(--muted); font-size: 0.76rem; } .metric-value { margin: 0.24rem 0 0; font-size: 1.05rem; font-weight: 700; } .panel-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.82rem; } .chip { font-size: 0.78rem; padding: 0.24rem 0.52rem; border-radius: 999px; background: rgba(15, 43, 50, 0.84); border: 1px solid rgba(167, 218, 204, 0.28); } .split { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 0.95rem; } .observation-group { border: 1px solid rgba(157, 214, 200, 0.26); border-radius: 0.9rem; padding: 0.7rem; background: rgba(5, 20, 24, 0.5); } .group-head { display: flex; justify-content: space-between; align-items: center; gap: 0.55rem; margin-bottom: 0.55rem; } .group-head h3 { margin: 0; display: flex; align-items: center; gap: 0.45rem; } .group-dot { width: 0.55rem; height: 0.55rem; border-radius: 999px; display: inline-block; box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.04); } .group-tag { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.06em; border-radius: 999px; padding: 0.2rem 0.46rem; border: 1px solid transparent; } .observation-passengers { border-color: rgba(245, 200, 91, 0.34); background: linear-gradient(160deg, rgba(245, 200, 91, 0.08), rgba(5, 20, 24, 0.56)); } .observation-passengers .group-dot { background: var(--passenger-accent); } .observation-passengers .group-tag { color: #ffe1a6; border-color: rgba(245, 200, 91, 0.55); background: rgba(100, 73, 17, 0.34); } .observation-flights { border-color: rgba(115, 216, 255, 0.34); background: linear-gradient(160deg, rgba(115, 216, 255, 0.08), rgba(5, 20, 24, 0.56)); } .observation-flights .group-dot { background: var(--flight-accent); } .observation-flights .group-tag { color: #bdeaff; border-color: rgba(115, 216, 255, 0.56); background: rgba(12, 59, 77, 0.35); } .list-passengers { border-top: 1px dashed rgba(245, 200, 91, 0.3); padding-top: 0.52rem; } .list-flights { border-top: 1px dashed rgba(115, 216, 255, 0.3); padding-top: 0.52rem; } .split h3 { font-size: 0.98rem; margin-bottom: 0.58rem; line-height: 1.2; } .scroll-list { display: grid; gap: 0.52rem; max-height: 320px; overflow-y: auto; padding-right: 0.28rem; } .card { border-radius: 0.72rem; border: 1px solid rgba(161, 218, 203, 0.27); background: rgba(8, 26, 31, 0.83); padding: 0.68rem; } .card-passenger { border-color: rgba(245, 200, 91, 0.38); background: linear-gradient(160deg, rgba(79, 58, 13, 0.33), rgba(8, 26, 31, 0.86)); } .card-passenger .card-title { color: #ffe7bc; } .card-flight { border-color: rgba(115, 216, 255, 0.38); background: linear-gradient(160deg, rgba(14, 46, 59, 0.42), rgba(8, 26, 31, 0.86)); } .card-flight .card-title { color: #caedff; } .card-top { display: flex; justify-content: space-between; gap: 0.5rem; align-items: center; } .card-title { font-weight: 700; } .card-sub { color: var(--muted); font-size: 0.83rem; margin-top: 0.3rem; line-height: 1.35; } .tier-pill { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.05em; border-radius: 999px; padding: 0.24rem 0.45rem; border: 1px solid rgba(255, 255, 255, 0.2); } .tier-Platinum { color: #fce3a1; border-color: rgba(245, 200, 91, 0.7); } .tier-Gold { color: #ffca87; border-color: rgba(255, 170, 89, 0.72); } .tier-Silver { color: #d6ecf0; border-color: rgba(174, 202, 210, 0.72); } .tier-Standard { color: #b2d0c8; border-color: rgba(158, 204, 192, 0.56); } .result-box { margin-top: 1rem; } .result-head { display: flex; justify-content: space-between; align-items: center; gap: 0.55rem; margin-bottom: 0.45rem; } .result-box h3 { font-size: 0.95rem; margin-bottom: 0; } .latest-summary { border: 1px solid rgba(170, 221, 208, 0.28); border-radius: 0.72rem; background: rgba(4, 16, 18, 0.78); padding: 0.68rem; display: grid; gap: 0.36rem; } .latest-status { font-size: 0.74rem; text-transform: uppercase; letter-spacing: 0.06em; width: fit-content; border-radius: 999px; padding: 0.2rem 0.5rem; border: 1px solid transparent; } .latest-status-active { color: #bff7e8; border-color: rgba(65, 210, 173, 0.58); background: rgba(10, 69, 56, 0.35); } .latest-status-done { color: #fff0bf; border-color: rgba(245, 200, 91, 0.6); background: rgba(98, 74, 18, 0.33); } .latest-status-reset { color: #d2ecff; border-color: rgba(115, 216, 255, 0.58); background: rgba(13, 53, 73, 0.35); } .latest-status-error { color: #ffd0d0; border-color: rgba(255, 109, 109, 0.62); background: rgba(88, 16, 16, 0.36); } .latest-row { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 0.55rem; align-items: baseline; } .latest-label { color: var(--muted); font-size: 0.77rem; } .latest-value { color: #e7fbf5; font-size: 0.82rem; font-weight: 600; overflow-wrap: anywhere; } .latest-note { font-size: 0.77rem; color: #bee8dd; line-height: 1.35; } .latest-note-error { color: #ffb5b5; } .latest-empty { color: var(--muted); font-size: 0.82rem; } .latest-raw { margin-top: 0.52rem; } .hidden { display: none !important; } pre { margin: 0; max-height: 210px; overflow: auto; padding: 0.72rem; border-radius: 0.7rem; border: 1px solid rgba(170, 221, 208, 0.28); background: rgba(4, 16, 18, 0.88); color: #d8f7ef; font-size: 0.78rem; line-height: 1.42; } .timeline { animation: reveal-up 640ms ease-out both; } .log-list { display: grid; gap: 0.65rem; max-height: 320px; overflow-y: auto; } .log-item { border-radius: 0.72rem; border: 1px solid rgba(163, 220, 205, 0.22); background: rgba(7, 23, 27, 0.87); padding: 0.65rem; } .log-item strong { color: var(--accent-cool); } .log-meta { color: var(--muted); font-size: 0.8rem; margin-top: 0.2rem; } .empty { border: 1px dashed rgba(173, 223, 210, 0.33); border-radius: 0.72rem; color: var(--muted); padding: 0.72rem; } .empty-passengers { border-color: rgba(245, 200, 91, 0.42); background: rgba(81, 60, 15, 0.2); } .empty-flights { border-color: rgba(115, 216, 255, 0.42); background: rgba(11, 50, 67, 0.22); } .action-console form { display: grid; gap: 0.15rem; } @keyframes reveal-up { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } @media (max-width: 1200px) { .grid { grid-template-columns: 1fr 1fr; } .action-console { grid-column: 1 / -1; } } @media (max-width: 1380px) { .split { grid-template-columns: 1fr; } } @media (max-width: 760px) { body { padding: 0.75rem; } .hero { flex-direction: column; } .hero-badges { justify-content: flex-start; } .grid { grid-template-columns: 1fr; } .metrics { grid-template-columns: 1fr; } .latest-row { grid-template-columns: 1fr; gap: 0.2rem; } }