/* ── RYP Compiler — VS Code style playground ──────────────────────────────── */ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700;800;900&display=swap'); /* ── Resizer handles ────────────────────────────────────────────────────── */ .ryp-resizer { position: relative; z-index: 20; flex-shrink: 0; transition: background 0.15s ease; } .ryp-resizer--h { height: 6px; cursor: row-resize; background: #222233; } .ryp-resizer--v { width: 6px; cursor: col-resize; background: #222233; } .ryp-resizer:hover, .ryp-resizer--active { background: #0ea5e9 !important; } .ryp-resizer::after { content: ''; position: absolute; border-radius: 999px; background: #55556a; transition: background 0.15s ease; } .ryp-resizer:hover::after, .ryp-resizer--active::after { background: #38bdf8; } .ryp-resizer--h::after { width: 40px; height: 3px; top: 50%; left: 50%; transform: translate(-50%, -50%); } .ryp-resizer--v::after { width: 3px; height: 40px; top: 50%; left: 50%; transform: translate(-50%, -50%); } /* ── Status bar ─────────────────────────────────────────────────────────── */ .ryp-statusbar { height: 24px; min-height: 24px; background: #0c1a2e; border-top: 1px solid #0ea5e9; display: flex; align-items: center; justify-content: space-between; padding: 0 12px; font-family: 'Inter', sans-serif; font-size: 11px; font-weight: 600; color: rgba(255, 255, 255, 0.85); user-select: none; flex-shrink: 0; } .ryp-statusbar__item { display: flex; align-items: center; gap: 6px; padding: 0 6px; } .ryp-statusbar__dot { width: 6px; height: 6px; border-radius: 50%; background: #4ade80; } .ryp-statusbar__dot--error { background: #f87171; } .ryp-statusbar__dot--running { background: #fbbf24; animation: ryp-pulse 1s ease-in-out infinite; } @keyframes ryp-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } /* ── Terminal ───────────────────────────────────────────────────────────── */ .ryp-terminal { font-family: 'JetBrains Mono', 'Consolas', monospace; font-size: 13px; line-height: 1.7; color: #e2e2f0; background: #000000; } .ryp-terminal__prompt { color: #38bdf8; font-weight: 700; user-select: none; } .ryp-terminal__stdout { color: #4ade80; } .ryp-terminal__stderr { color: #f87171; } .ryp-terminal__dim { color: #55556a; } .ryp-terminal__info { color: #67e8f9; } .ryp-terminal__input { background: transparent; border: none; outline: none; color: #e2e2f0; font-family: 'JetBrains Mono', 'Consolas', monospace; font-size: 13px; width: 100%; caret-color: #38bdf8; } .ryp-terminal__input::placeholder { color: #55556a; } /* ── Editor area ────────────────────────────────────────────────────────── */ .ryp-editor-tabs { display: flex; align-items: center; gap: 4px; padding: 6px 8px; background: #000000; border-bottom: 1px solid #222233; min-height: 40px; overflow-x: auto; } .ryp-editor-tab { display: flex; align-items: center; gap: 6px; padding: 4px 12px; border-radius: 6px; font-family: 'Inter', sans-serif; font-size: 12px; font-weight: 600; color: #9090b0; background: transparent; border: 1px solid transparent; cursor: pointer; transition: all 0.15s ease; white-space: nowrap; } .ryp-editor-tab:hover { color: #e2e2f0; background: #111111; } .ryp-editor-tab--active { color: #e2e2f0; background: #111111; border-color: #333355; } .ryp-editor-tab__dot { width: 8px; height: 8px; border-radius: 50%; background: #4ade80; flex-shrink: 0; } /* ── Right panel ────────────────────────────────────────────────────────── */ .ryp-section-header { display: flex; align-items: center; gap: 8px; padding: 10px 14px; background: #000000; border-bottom: 1px solid #222233; font-family: 'Inter', sans-serif; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 0.08em; color: #9090b0; user-select: none; } .ryp-section-header__icon { color: #0ea5e9; font-weight: 900; } /* ── Run button glow ────────────────────────────────────────────────────── */ .ryp-run-btn { display: flex; align-items: center; gap: 6px; padding: 8px 20px; background: linear-gradient(135deg, #0284c7 0%, #0ea5e9 100%); color: white; border: none; border-radius: 8px; font-family: 'Inter', sans-serif; font-size: 13px; font-weight: 800; cursor: pointer; transition: all 0.2s ease; box-shadow: 0 0 20px rgba(14, 165, 233, 0.35); } .ryp-run-btn:hover { background: linear-gradient(135deg, #0369a1 0%, #0284c7 100%); box-shadow: 0 0 30px rgba(14, 165, 233, 0.55); transform: translateY(-1px); } .ryp-run-btn:disabled { opacity: 0.6; cursor: not-allowed; transform: none; } /* ── Scrollbar ──────────────────────────────────────────────────────────── */ .ryp-compiler-scroll::-webkit-scrollbar { width: 6px; height: 6px; } .ryp-compiler-scroll::-webkit-scrollbar-track { background: transparent; } .ryp-compiler-scroll::-webkit-scrollbar-thumb { background: #222233; border-radius: 3px; } .ryp-compiler-scroll::-webkit-scrollbar-thumb:hover { background: #444466; }