@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap'); @import "tailwindcss"; /* ── Design Tokens — White Theme ─────────────────── */ :root { --color-bg: #ffffff; --color-bg-alt: #f8f9fa; --color-surface: #ffffff; --color-surface-alt: #f1f3f5; --color-border: #dee2e6; --color-border-dim: #e9ecef; /* Primary accent: blue */ --color-yellow: #2563eb; --color-yellow-dim: #1d4ed8; /* Secondary accent: dark gray */ --color-cyan: #374151; --color-cyan-dim: #4b5563; /* Tertiary: purple */ --color-magenta: #7c3aed; --color-magenta-dim: #6d28d9; /* Red for errors/danger */ --color-red: #dc2626; /* Text */ --color-text: #1f2937; --color-text-dim: #4b5563; --color-text-muted: #9ca3af; /* Legacy aliases kept so existing pages compile without changes */ --color-green: #059669; --color-green-dim: #047857; --color-amber: #d97706; --color-amber-dim: #b45309; /* Blue alias */ --color-blue: #2563eb; --font-mono: 'JetBrains Mono', 'Courier New', monospace; --font-heading: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; } /* ── Base ──────────────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; background-color: var(--color-bg); color: var(--color-text); font-family: var(--font-mono); font-size: 17px; min-height: 100vh; overflow-x: hidden; line-height: 1.7; display: block; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } #root { min-height: 100vh; } /* ── Scrollbar ─────────────────────────────────────────── */ ::-webkit-scrollbar { width: 8px; } ::-webkit-scrollbar-track { background: var(--color-bg-alt); } ::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: var(--color-cyan); } /* ── Typography ────────────────────────────────────────── */ h1, h2, h3, h4, h5 { font-family: var(--font-heading); font-weight: 600; letter-spacing: -0.02em; margin: 0; } a { color: var(--color-yellow); text-decoration: underline; transition: color 0.1s; } a:hover { color: var(--color-yellow-dim); } /* ── Content box ─────────────────────────────────────── */ .crt-box { border: 1px solid var(--color-border); background: var(--color-surface); position: relative; overflow: hidden; border-radius: 8px; box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1); } /* ── Buttons — clean white theme style ───────────────── */ .btn-terminal { font-family: var(--font-mono); background: var(--color-bg); border: 2px solid var(--color-yellow); color: var(--color-yellow); padding: 0.6rem 1.3rem; text-transform: uppercase; letter-spacing: 0.08em; cursor: pointer; transition: background 0.15s, color 0.15s; display: inline-flex; align-items: center; gap: 0.5rem; font-size: 1rem; border-radius: 6px; text-decoration: none; font-weight: 500; } .btn-terminal::before { display: none; } .btn-terminal:hover { background: var(--color-yellow); color: #ffffff; } .btn-amber { border-color: var(--color-amber); color: var(--color-amber); } .btn-amber:hover { background: var(--color-amber); color: #ffffff; } .btn-danger { border-color: var(--color-red); color: var(--color-red); } .btn-danger:hover { background: var(--color-red); color: #fff; } /* ── Form inputs — clean style ──────────────────── */ .input-terminal { background: var(--color-bg); border: 2px solid var(--color-border); border-radius: 6px; color: var(--color-text); font-family: var(--font-mono); font-size: 1.05rem; padding: 0.6rem 0.9rem; width: 100%; transition: border-color 0.15s, box-shadow 0.15s; outline: none; -webkit-appearance: none; appearance: none; } .input-terminal::placeholder { color: var(--color-text-muted); } .input-terminal:focus { border-color: var(--color-yellow); box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1); } .input-terminal.error { border-color: var(--color-red); } /* ── Section label ─────────────────────────────────────── */ .section-label { font-family: var(--font-mono); font-size: 0.85rem; font-weight: 500; color: var(--color-text-dim); text-transform: uppercase; letter-spacing: 0.15em; margin-bottom: 0.5rem; } /* ── Page transition ───────────────────────────────────── */ @keyframes page-enter { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } } .page-enter { animation: page-enter 0.2s ease forwards; } /* ── Status badges — clean style ──────────────────────── */ .badge { font-family: var(--font-mono); font-size: 0.75rem; padding: 0.2rem 0.5rem; text-transform: uppercase; letter-spacing: 0.08em; border-radius: 4px; display: inline-block; white-space: nowrap; border: 1px solid; } .badge-open { background: #d1fae5; color: #065f46; border-color: #059669; } .badge-progress { background: #fef3c7; color: #92400e; border-color: #d97706; } .badge-resolved { background: #dbeafe; color: #1e40af; border-color: #2563eb; } .badge-closed { background: #f3f4f6; color: #6b7280; border-color: #9ca3af; } .badge-critical { background: #fee2e2; color: #991b1b; border-color: #dc2626; } .badge-high { background: #fed7aa; color: #9a3412; border-color: #ea580c; } .badge-medium { background: #fef3c7; color: #92400e; border-color: #d97706; } .badge-low { background: #e0e7ff; color: #3730a3; border-color: #6366f1; } /* ── Blink cursor ──────────────────────────────────────── */ @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } .cursor-blink::after { content: '_'; animation: blink 1s step-end infinite; color: var(--color-text-dim); } /* ── Horizontal rule ───────────────────────────── */ .minitel-rule { border: none; border-top: 1px solid var(--color-border); margin: 2rem 0; }