Spaces:
Running
Running
| @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800&family=Open+Sans:wght@300;400;500;600;700&display=swap'); | |
| :root { | |
| /* Color Palette */ | |
| --green-dark: #1b5e20; | |
| --green: #2e7d32; | |
| --green-mid: #388e3c; | |
| --green-light: #4caf50; | |
| --green-pale: #e8f5e9; | |
| --green-faint: #f1f8e9; | |
| --blue: #015aaa; | |
| --blue-light: #00aeef; | |
| --blue-pale: #e3f2fd; | |
| --gold: #f9a825; | |
| --gold-light: #fff8e1; | |
| /* Backgrounds */ | |
| --bg-page: #f5f9f5; | |
| --bg-white: #ffffff; | |
| --bg-card: #ffffff; | |
| --bg-section-alt: #f0f7f0; | |
| --bg-footer: #1b5e20; | |
| /* Text */ | |
| --text-dark: #1a2e1a; | |
| --text-body: #2d4a2d; | |
| --text-secondary: #4a6741; | |
| --text-muted: #7a9475; | |
| --text-on-dark: #ffffff; | |
| --text-on-dark-muted: rgba(255,255,255,0.75); | |
| /* Borders & Shadows */ | |
| --border-color: #c8e6c9; | |
| --border-strong: #a5d6a7; | |
| --shadow-sm: 0 1px 4px rgba(46, 125, 50, 0.08); | |
| --shadow-md: 0 4px 16px rgba(46, 125, 50, 0.12); | |
| --shadow-lg: 0 8px 32px rgba(46, 125, 50, 0.16); | |
| --shadow-card: 0 2px 8px rgba(0, 0, 0, 0.08), 0 1px 3px rgba(0,0,0,0.06); | |
| /* Accent gradients */ | |
| --gradient-green: linear-gradient(135deg, #2e7d32 0%, #4caf50 100%); | |
| --gradient-green-soft: linear-gradient(135deg, #388e3c 0%, #66bb6a 100%); | |
| --gradient-blue: linear-gradient(135deg, #015aaa 0%, #00aeef 100%); | |
| --gradient-hero: linear-gradient(135deg, #1b5e20 0%, #2e7d32 60%, #388e3c 100%); | |
| /* Typography */ | |
| --font-heading: 'Poppins', sans-serif; | |
| --font-body: 'Open Sans', sans-serif; | |
| /* Spacing & Shape */ | |
| --radius-sm: 6px; | |
| --radius-md: 10px; | |
| --radius-lg: 16px; | |
| --radius-xl: 24px; | |
| --navbar-height: 70px; | |
| --transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); | |
| } | |
| /* ─── Reset ─────────────────────────────────────────────── */ | |
| *, *::before, *::after { | |
| box-sizing: border-box; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| body { | |
| font-family: var(--font-body); | |
| background-color: var(--bg-page); | |
| color: var(--text-body); | |
| min-height: 100vh; | |
| font-size: 15px; | |
| line-height: 1.6; | |
| overflow-x: hidden; | |
| } | |
| /* ─── Scrollbar ─────────────────────────────────────────── */ | |
| ::-webkit-scrollbar { width: 6px; height: 6px; } | |
| ::-webkit-scrollbar-track { background: #f0f7f0; } | |
| ::-webkit-scrollbar-thumb { background: #a5d6a7; border-radius: 3px; } | |
| ::-webkit-scrollbar-thumb:hover { background: var(--green); } | |
| /* ─── Typography ────────────────────────────────────────── */ | |
| h1, h2, h3, h4, h5, h6 { | |
| font-family: var(--font-heading); | |
| font-weight: 600; | |
| color: var(--text-dark); | |
| line-height: 1.3; | |
| } | |
| /* ─── App Layout ────────────────────────────────────────── */ | |
| .app-container { | |
| display: flex; | |
| flex-direction: column; | |
| min-height: 100vh; | |
| } | |
| /* ─── Top Navigation Bar ────────────────────────────────── */ | |
| .navbar { | |
| position: sticky; | |
| top: 0; | |
| z-index: 100; | |
| height: var(--navbar-height); | |
| background: var(--bg-white); | |
| border-bottom: 3px solid var(--green-light); | |
| box-shadow: 0 2px 12px rgba(46, 125, 50, 0.15); | |
| display: flex; | |
| align-items: center; | |
| padding: 0 2rem; | |
| gap: 2rem; | |
| } | |
| .navbar-brand { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| text-decoration: none; | |
| flex-shrink: 0; | |
| } | |
| .navbar-logo { | |
| width: 44px; | |
| height: 44px; | |
| background: var(--gradient-green); | |
| border-radius: var(--radius-md); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.4rem; | |
| box-shadow: 0 3px 8px rgba(46, 125, 50, 0.35); | |
| flex-shrink: 0; | |
| } | |
| .navbar-title { | |
| display: flex; | |
| flex-direction: column; | |
| line-height: 1.1; | |
| } | |
| .navbar-title-main { | |
| font-family: var(--font-heading); | |
| font-weight: 700; | |
| font-size: 1rem; | |
| color: var(--green-dark); | |
| letter-spacing: -0.01em; | |
| } | |
| .navbar-title-sub { | |
| font-family: var(--font-body); | |
| font-size: 0.72rem; | |
| color: var(--text-muted); | |
| font-weight: 500; | |
| letter-spacing: 0.03em; | |
| text-transform: uppercase; | |
| } | |
| .navbar-divider { | |
| width: 1px; | |
| height: 32px; | |
| background: var(--border-color); | |
| flex-shrink: 0; | |
| } | |
| .nav-links { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.25rem; | |
| flex: 1; | |
| } | |
| /* ─── Mobile Menu Toggle ─────────────────────────────── */ | |
| .mobile-menu-toggle { | |
| display: none; | |
| background: transparent; | |
| border: none; | |
| font-size: 1.5rem; | |
| color: var(--green-dark); | |
| cursor: pointer; | |
| padding: 0.5rem; | |
| z-index: 1001; | |
| } | |
| .nav-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| padding: 0.5rem 1rem; | |
| border-radius: var(--radius-md); | |
| color: var(--text-secondary); | |
| cursor: pointer; | |
| font-family: var(--font-heading); | |
| font-weight: 500; | |
| font-size: 0.875rem; | |
| transition: var(--transition); | |
| background: transparent; | |
| border: none; | |
| white-space: nowrap; | |
| position: relative; | |
| } | |
| .nav-item:hover { | |
| color: var(--green); | |
| background: var(--green-pale); | |
| } | |
| .nav-item.active { | |
| color: var(--green-dark); | |
| background: var(--green-pale); | |
| font-weight: 600; | |
| } | |
| .nav-item.active::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -0.5rem; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| width: 60%; | |
| height: 3px; | |
| background: var(--green); | |
| border-radius: 2px 2px 0 0; | |
| } | |
| .nav-item span.nav-icon { | |
| font-size: 1rem; | |
| } | |
| /* ─── Navbar Right Section ──────────────────────────────── */ | |
| .navbar-right { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.75rem; | |
| flex-shrink: 0; | |
| } | |
| /* ─── Language Selector ──────────────────────────────────── */ | |
| .lang-selector { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.3rem; | |
| padding: 0.25rem 0.5rem; | |
| background: var(--green-pale); | |
| border: 1.5px solid var(--border-strong); | |
| border-radius: var(--radius-md); | |
| cursor: pointer; | |
| transition: var(--transition); | |
| } | |
| .lang-selector:hover { | |
| border-color: var(--green); | |
| background: var(--green-faint); | |
| } | |
| .lang-globe { | |
| font-size: 0.9rem; | |
| line-height: 1; | |
| flex-shrink: 0; | |
| } | |
| .lang-dropdown { | |
| border: none; | |
| background: transparent; | |
| font-family: var(--font-heading); | |
| font-size: 0.78rem; | |
| font-weight: 600; | |
| color: var(--green-dark); | |
| outline: none; | |
| cursor: pointer; | |
| padding: 0.15rem 0.25rem; | |
| min-width: 70px; | |
| } | |
| .lang-dropdown option { | |
| color: var(--text-dark); | |
| background: var(--bg-white); | |
| } | |
| /* ─── Status Badge ──────────────────────────────────────── */ | |
| .navbar-status { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| padding: 0.4rem 0.85rem; | |
| border-radius: 50px; | |
| font-size: 0.78rem; | |
| font-weight: 600; | |
| font-family: var(--font-heading); | |
| border: 1.5px solid; | |
| flex-shrink: 0; | |
| } | |
| .navbar-status.online { | |
| color: var(--green-dark); | |
| background: var(--green-pale); | |
| border-color: var(--green-light); | |
| } | |
| .navbar-status.offline { | |
| color: #c62828; | |
| background: #ffebee; | |
| border-color: #ef9a9a; | |
| } | |
| .dot { | |
| width: 7px; | |
| height: 7px; | |
| border-radius: 50%; | |
| background-color: var(--green-light); | |
| box-shadow: 0 0 6px var(--green-light); | |
| display: inline-block; | |
| animation: pulse-dot 2s infinite; | |
| } | |
| .dot.offline { | |
| background-color: #ef5350; | |
| box-shadow: 0 0 6px #ef5350; | |
| animation: none; | |
| } | |
| @keyframes pulse-dot { | |
| 0%, 100% { opacity: 1; } | |
| 50% { opacity: 0.5; } | |
| } | |
| /* ─── Main Content ──────────────────────────────────────── */ | |
| .main-content { | |
| flex: 1; | |
| padding: 2.5rem 2.5rem 3rem; | |
| max-width: 1300px; | |
| width: 100%; | |
| margin: 0 auto; | |
| } | |
| /* ─── Page Header ───────────────────────────────────────── */ | |
| .header-container { | |
| margin-bottom: 2rem; | |
| padding-bottom: 1.25rem; | |
| border-bottom: 2px solid var(--border-color); | |
| } | |
| .page-title { | |
| font-size: 1.75rem; | |
| font-weight: 700; | |
| color: var(--green-dark); | |
| font-family: var(--font-heading); | |
| } | |
| .page-title::after { | |
| content: ''; | |
| display: block; | |
| width: 48px; | |
| height: 4px; | |
| background: var(--gradient-green); | |
| border-radius: 2px; | |
| margin-top: 0.4rem; | |
| } | |
| .page-subtitle { | |
| color: var(--text-secondary); | |
| font-size: 0.9rem; | |
| margin-top: 0.5rem; | |
| } | |
| /* ─── Cards ─────────────────────────────────────────────── */ | |
| .glass-card { | |
| background: var(--bg-card); | |
| border: 1px solid var(--border-color); | |
| border-radius: var(--radius-lg); | |
| padding: 2rem; | |
| box-shadow: var(--shadow-card); | |
| transition: var(--transition); | |
| } | |
| .glass-card:hover { | |
| box-shadow: var(--shadow-md); | |
| border-color: var(--border-strong); | |
| } | |
| /* ─── Hero Banner (Dashboard) ───────────────────────────── */ | |
| .hero-banner { | |
| background: var(--gradient-hero); | |
| border-radius: var(--radius-xl); | |
| padding: 3rem 2.5rem; | |
| color: var(--text-on-dark); | |
| position: relative; | |
| overflow: hidden; | |
| margin-bottom: 2rem; | |
| } | |
| .hero-banner::before { | |
| content: ''; | |
| position: absolute; | |
| top: -60px; | |
| right: -60px; | |
| width: 280px; | |
| height: 280px; | |
| background: rgba(255,255,255,0.04); | |
| border-radius: 50%; | |
| } | |
| .hero-banner::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -80px; | |
| right: 80px; | |
| width: 200px; | |
| height: 200px; | |
| background: rgba(255,255,255,0.04); | |
| border-radius: 50%; | |
| } | |
| .hero-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 0.4rem; | |
| background: rgba(255,255,255,0.15); | |
| border: 1px solid rgba(255,255,255,0.25); | |
| color: #fff; | |
| font-size: 0.78rem; | |
| font-weight: 600; | |
| padding: 0.3rem 0.85rem; | |
| border-radius: 50px; | |
| margin-bottom: 1.25rem; | |
| font-family: var(--font-heading); | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| } | |
| .hero-title { | |
| font-size: 2rem; | |
| font-weight: 700; | |
| color: #fff; | |
| margin-bottom: 0.75rem; | |
| font-family: var(--font-heading); | |
| } | |
| .hero-subtitle { | |
| font-size: 0.95rem; | |
| color: rgba(255,255,255,0.85); | |
| line-height: 1.65; | |
| max-width: 560px; | |
| margin-bottom: 1.75rem; | |
| } | |
| .hero-actions { | |
| display: flex; | |
| gap: 1rem; | |
| flex-wrap: wrap; | |
| } | |
| .hero-stats { | |
| display: grid; | |
| grid-template-columns: repeat(3, 1fr); | |
| gap: 1rem; | |
| margin-top: 2rem; | |
| padding-top: 2rem; | |
| border-top: 1px solid rgba(255,255,255,0.2); | |
| } | |
| .hero-stat { | |
| text-align: center; | |
| } | |
| .hero-stat-value { | |
| font-size: 1.5rem; | |
| font-weight: 700; | |
| color: #fff; | |
| font-family: var(--font-heading); | |
| } | |
| .hero-stat-label { | |
| font-size: 0.78rem; | |
| color: rgba(255,255,255,0.75); | |
| margin-top: 0.15rem; | |
| } | |
| /* ─── Capability Chips ──────────────────────────────────── */ | |
| .capabilities-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); | |
| gap: 1rem; | |
| } | |
| .capability-card { | |
| background: var(--bg-white); | |
| border: 1.5px solid var(--border-color); | |
| border-radius: var(--radius-lg); | |
| padding: 1.5rem 1.25rem; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| text-align: center; | |
| } | |
| .capability-card:hover { | |
| border-color: var(--green-light); | |
| box-shadow: var(--shadow-md); | |
| transform: translateY(-3px); | |
| } | |
| .capability-icon { | |
| width: 52px; | |
| height: 52px; | |
| background: var(--green-pale); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.4rem; | |
| margin: 0 auto 0.875rem; | |
| transition: var(--transition); | |
| } | |
| .capability-card:hover .capability-icon { | |
| background: var(--gradient-green); | |
| transform: scale(1.08); | |
| } | |
| .capability-title { | |
| font-family: var(--font-heading); | |
| font-weight: 600; | |
| font-size: 0.95rem; | |
| color: var(--green-dark); | |
| margin-bottom: 0.4rem; | |
| } | |
| .capability-desc { | |
| font-size: 0.82rem; | |
| color: var(--text-secondary); | |
| line-height: 1.5; | |
| } | |
| /* ─── Section Titles ────────────────────────────────────── */ | |
| .section-title { | |
| font-family: var(--font-heading); | |
| font-size: 1.1rem; | |
| font-weight: 700; | |
| color: var(--green-dark); | |
| margin-bottom: 1rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .section-title::before { | |
| content: ''; | |
| display: inline-block; | |
| width: 4px; | |
| height: 18px; | |
| background: var(--gradient-green); | |
| border-radius: 2px; | |
| flex-shrink: 0; | |
| } | |
| /* ─── System Info Card ──────────────────────────────────── */ | |
| .system-info-card { | |
| background: var(--bg-section-alt); | |
| border: 1px solid var(--border-color); | |
| border-radius: var(--radius-lg); | |
| padding: 1.5rem; | |
| } | |
| .system-info-list { | |
| list-style: none; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.6rem; | |
| } | |
| .system-info-list li { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 0.6rem; | |
| font-size: 0.875rem; | |
| color: var(--text-body); | |
| } | |
| .system-info-list li::before { | |
| content: '✓'; | |
| color: var(--green); | |
| font-weight: 700; | |
| flex-shrink: 0; | |
| margin-top: 0.05rem; | |
| } | |
| /* ─── Translator Grid ───────────────────────────────────── */ | |
| .translator-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 2rem; | |
| } | |
| @media (max-width: 900px) { | |
| .translator-grid { grid-template-columns: 1fr; } | |
| } | |
| /* ─── Form Controls ─────────────────────────────────────── */ | |
| .form-group { | |
| margin-bottom: 1.25rem; | |
| } | |
| .form-label { | |
| display: block; | |
| font-size: 0.8rem; | |
| font-weight: 600; | |
| color: var(--text-secondary); | |
| margin-bottom: 0.4rem; | |
| text-transform: uppercase; | |
| letter-spacing: 0.06em; | |
| font-family: var(--font-heading); | |
| } | |
| .select-control { | |
| width: 100%; | |
| padding: 0.75rem 2.5rem 0.75rem 1rem; | |
| background: var(--bg-white); | |
| border: 1.5px solid var(--border-color); | |
| border-radius: var(--radius-md); | |
| color: var(--text-dark); | |
| font-family: var(--font-body); | |
| font-size: 0.9rem; | |
| outline: none; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| appearance: none; | |
| background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%234a6741'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'/%3E%3C/svg%3E"); | |
| background-repeat: no-repeat; | |
| background-position: right 0.75rem center; | |
| background-size: 1.1rem; | |
| } | |
| .select-control:focus { | |
| border-color: var(--green); | |
| box-shadow: 0 0 0 3px rgba(46, 125, 50, 0.12); | |
| } | |
| .select-control:hover { | |
| border-color: var(--green-mid); | |
| } | |
| .textarea-control { | |
| width: 100%; | |
| min-height: 180px; | |
| padding: 1rem; | |
| background: var(--bg-white); | |
| border: 1.5px solid var(--border-color); | |
| border-radius: var(--radius-md); | |
| color: var(--text-dark); | |
| font-family: var(--font-body); | |
| font-size: 0.95rem; | |
| line-height: 1.6; | |
| resize: vertical; | |
| outline: none; | |
| transition: var(--transition); | |
| } | |
| .textarea-control:focus { | |
| border-color: var(--green); | |
| box-shadow: 0 0 0 3px rgba(46, 125, 50, 0.12); | |
| } | |
| .textarea-control::placeholder { | |
| color: var(--text-muted); | |
| } | |
| /* ─── Buttons ───────────────────────────────────────────── */ | |
| .btn { | |
| display: inline-flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 0.5rem; | |
| padding: 0.75rem 1.5rem; | |
| font-family: var(--font-heading); | |
| font-weight: 600; | |
| font-size: 0.9rem; | |
| border-radius: var(--radius-md); | |
| border: none; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| outline: none; | |
| text-decoration: none; | |
| white-space: nowrap; | |
| } | |
| .btn-primary { | |
| background: var(--gradient-green); | |
| color: #fff; | |
| box-shadow: 0 3px 10px rgba(46, 125, 50, 0.35); | |
| } | |
| .btn-primary:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 6px 18px rgba(46, 125, 50, 0.45); | |
| } | |
| .btn-danger { | |
| background: #c62828; | |
| color: #fff; | |
| box-shadow: 0 3px 10px rgba(198, 40, 40, 0.35); | |
| } | |
| .btn-danger:hover { | |
| background: #b71c1c; | |
| transform: translateY(-2px); | |
| box-shadow: 0 6px 18px rgba(198, 40, 40, 0.45); | |
| } | |
| .recording-pulse { | |
| animation: pulse-dot 1s infinite; | |
| display: inline-block; | |
| margin-right: 0.25rem; | |
| } | |
| .btn-secondary { | |
| background: var(--bg-white); | |
| border: 1.5px solid var(--border-strong); | |
| color: var(--green-dark); | |
| } | |
| .btn-secondary:hover { | |
| background: var(--green-pale); | |
| border-color: var(--green); | |
| } | |
| .btn-outline-white { | |
| background: transparent; | |
| border: 1.5px solid rgba(255,255,255,0.6); | |
| color: #fff; | |
| } | |
| .btn-outline-white:hover { | |
| background: rgba(255,255,255,0.15); | |
| border-color: #fff; | |
| } | |
| .btn:disabled { | |
| opacity: 0.5; | |
| cursor: not-allowed; | |
| transform: none ; | |
| box-shadow: none ; | |
| } | |
| /* ─── Dropzone ──────────────────────────────────────────── */ | |
| .dropzone { | |
| border: 2px dashed var(--border-strong); | |
| border-radius: var(--radius-lg); | |
| padding: 2.5rem 2rem; | |
| text-align: center; | |
| background: var(--green-faint); | |
| cursor: pointer; | |
| transition: var(--transition); | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 0.75rem; | |
| color: var(--text-body); | |
| } | |
| .dropzone:hover { | |
| border-color: var(--green); | |
| background: var(--green-pale); | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .dropzone-icon { | |
| width: 58px; | |
| height: 58px; | |
| background: var(--green-pale); | |
| border: 2px solid var(--border-strong); | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.5rem; | |
| transition: var(--transition); | |
| } | |
| .dropzone:hover .dropzone-icon { | |
| background: var(--gradient-green); | |
| border-color: transparent; | |
| transform: scale(1.08); | |
| } | |
| /* ─── Progress Panel ────────────────────────────────────── */ | |
| .progress-panel { | |
| background: var(--green-pale); | |
| border: 1px solid var(--border-color); | |
| border-radius: var(--radius-md); | |
| padding: 1.25rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.75rem; | |
| margin-top: 1.25rem; | |
| } | |
| .progress-header { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .progress-bar-container { | |
| width: 100%; | |
| height: 8px; | |
| background: rgba(46, 125, 50, 0.15); | |
| border-radius: 4px; | |
| overflow: hidden; | |
| } | |
| .progress-bar { | |
| height: 100%; | |
| background: var(--gradient-green); | |
| border-radius: 4px; | |
| transition: width 0.4s ease; | |
| box-shadow: 0 0 8px rgba(46, 125, 50, 0.4); | |
| } | |
| @keyframes pulseGlow { | |
| 0%, 100% { opacity: 0.7; } | |
| 50% { opacity: 1; } | |
| } | |
| .processing-pulse { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| color: var(--green-dark); | |
| font-weight: 600; | |
| font-size: 0.9rem; | |
| animation: pulseGlow 1.5s infinite ease-in-out; | |
| font-family: var(--font-heading); | |
| } | |
| /* ─── File Badge ────────────────────────────────────────── */ | |
| .file-badge { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.6rem; | |
| background: var(--green-pale); | |
| border: 1.5px solid var(--border-strong); | |
| padding: 0.5rem 1rem; | |
| border-radius: var(--radius-md); | |
| font-size: 0.875rem; | |
| color: var(--green-dark); | |
| font-weight: 500; | |
| } | |
| /* ─── Media Players ─────────────────────────────────────── */ | |
| .custom-audio-player { | |
| width: 100%; | |
| border-radius: var(--radius-md); | |
| margin-top: 0.75rem; | |
| outline: none; | |
| accent-color: var(--green); | |
| } | |
| .custom-video-player { | |
| width: 100%; | |
| border-radius: var(--radius-md); | |
| border: 1.5px solid var(--border-color); | |
| background: #000; | |
| max-height: 380px; | |
| object-fit: contain; | |
| } | |
| /* ─── Tab Headers ───────────────────────────────────────── */ | |
| .tab-header { | |
| display: flex; | |
| gap: 0.25rem; | |
| border-bottom: 2px solid var(--border-color); | |
| margin-bottom: 1.5rem; | |
| padding-bottom: 0; | |
| } | |
| .tab-btn { | |
| background: transparent; | |
| border: none; | |
| color: var(--text-secondary); | |
| font-family: var(--font-heading); | |
| font-weight: 600; | |
| font-size: 0.9rem; | |
| padding: 0.6rem 1.1rem; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| position: relative; | |
| border-radius: var(--radius-sm) var(--radius-sm) 0 0; | |
| } | |
| .tab-btn:hover { | |
| color: var(--green-dark); | |
| background: var(--green-pale); | |
| } | |
| .tab-btn.active { | |
| color: var(--green-dark); | |
| background: var(--green-pale); | |
| } | |
| .tab-btn.active::after { | |
| content: ''; | |
| position: absolute; | |
| bottom: -2px; | |
| left: 0; | |
| width: 100%; | |
| height: 2px; | |
| background: var(--baif-green); | |
| } | |
| /* ─── Toggle Switch ─────────────────────────────────────── */ | |
| .switch-container { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 0.875rem 1rem; | |
| background: var(--bg-section-alt); | |
| border: 1px solid var(--border-color); | |
| border-radius: var(--radius-md); | |
| transition: var(--transition); | |
| } | |
| .switch-container:hover { | |
| border-color: var(--border-strong); | |
| } | |
| .switch-label-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.2rem; | |
| } | |
| .switch-subtext { | |
| font-size: 0.75rem; | |
| color: var(--text-muted); | |
| } | |
| .switch { | |
| position: relative; | |
| display: inline-block; | |
| width: 46px; | |
| height: 24px; | |
| flex-shrink: 0; | |
| } | |
| .switch input { opacity: 0; width: 0; height: 0; } | |
| .slider { | |
| position: absolute; | |
| cursor: pointer; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background-color: #ccc; | |
| transition: .4s; | |
| border-radius: 22px; | |
| } | |
| .slider:before { | |
| position: absolute; | |
| content: ""; | |
| height: 18px; | |
| width: 18px; | |
| left: 4px; | |
| bottom: 4px; | |
| background-color: white; | |
| transition: .4s; | |
| border-radius: 50%; | |
| } | |
| input:checked + .slider { | |
| background-color: var(--green); | |
| } | |
| /* ─── Subtitle Sync ─────────────────────────────────────── */ | |
| .subtitle-editor { | |
| background: var(--green-faint); | |
| border: 1px solid var(--border-color); | |
| border-radius: var(--radius-md); | |
| padding: 0.75rem; | |
| height: 200px; | |
| overflow-y: auto; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .subtitle-segment { | |
| display: flex; | |
| gap: 0.75rem; | |
| background: var(--bg-section-alt); | |
| border: 1px solid var(--border-color); | |
| border-radius: var(--radius-sm); | |
| padding: 0.65rem 0.875rem; | |
| align-items: flex-start; | |
| transition: var(--transition); | |
| } | |
| .subtitle-segment:hover { | |
| background: var(--green-pale); | |
| border-color: var(--border-strong); | |
| } | |
| .sub-time { | |
| font-family: 'Courier New', monospace; | |
| font-size: 0.75rem; | |
| color: var(--green-dark); | |
| min-width: 110px; | |
| background: var(--green-pale); | |
| padding: 0.2rem 0.45rem; | |
| border-radius: 4px; | |
| font-weight: 600; | |
| flex-shrink: 0; | |
| } | |
| .sub-text { | |
| flex-grow: 1; | |
| font-size: 0.9rem; | |
| color: var(--text-body); | |
| line-height: 1.5; | |
| } | |
| /* ─── Settings Checklist ────────────────────────────────── */ | |
| .checklist-card { | |
| background: var(--bg-section-alt); | |
| border: 1px solid var(--border-color); | |
| border-radius: var(--radius-lg); | |
| padding: 1.5rem; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 1rem; | |
| } | |
| .checklist-item { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 0.75rem 1rem; | |
| background: var(--bg-white); | |
| border-radius: var(--radius-md); | |
| border: 1px solid var(--border-color); | |
| } | |
| .checklist-item-label { | |
| font-size: 0.9rem; | |
| color: var(--text-body); | |
| } | |
| .status-ok { | |
| font-weight: 600; | |
| font-size: 0.82rem; | |
| color: var(--green-dark); | |
| background: var(--green-pale); | |
| padding: 0.2rem 0.65rem; | |
| border-radius: 50px; | |
| border: 1px solid var(--green-light); | |
| } | |
| .status-warn { | |
| font-weight: 600; | |
| font-size: 0.82rem; | |
| color: #c17000; | |
| background: #fff8e1; | |
| padding: 0.2rem 0.65rem; | |
| border-radius: 50px; | |
| border: 1px solid #ffe082; | |
| } | |
| /* ─── Result Output Boxes ───────────────────────────────── */ | |
| .output-box { | |
| background: var(--green-faint); | |
| border: 1.5px solid var(--border-color); | |
| border-radius: var(--radius-md); | |
| padding: 1rem; | |
| color: var(--text-dark); | |
| font-size: 0.95rem; | |
| line-height: 1.6; | |
| overflow-y: auto; | |
| flex-grow: 1; | |
| } | |
| .output-box-placeholder { | |
| color: var(--green-dark); | |
| opacity: 0.6; | |
| } | |
| /* ─── Empty State ───────────────────────────────────────── */ | |
| .empty-state { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 250px; | |
| border: 2px dashed var(--border-color); | |
| border-radius: var(--radius-lg); | |
| color: var(--text-muted); | |
| gap: 0.75rem; | |
| font-size: 0.9rem; | |
| background: var(--green-faint); | |
| } | |
| .empty-state-icon { | |
| font-size: 2.5rem; | |
| opacity: 0.4; | |
| } | |
| /* ─── Footer ────────────────────────────────────────────── */ | |
| .app-footer { | |
| background: var(--green-dark); | |
| color: var(--text-on-dark); | |
| padding: 1.5rem 2.5rem; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| border-top: 3px solid var(--green-light); | |
| } | |
| .footer-brand { | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| color: rgba(255,255,255,0.9); | |
| font-weight: 600; | |
| font-family: var(--font-heading); | |
| } | |
| .footer-copy { | |
| color: rgba(255,255,255,0.55); | |
| font-size: 0.75rem; | |
| } | |
| /* ─── Utility ───────────────────────────────────────────── */ | |
| .text-green { color: var(--green); } | |
| .text-muted { color: var(--text-muted); } | |
| .fw-600 { font-weight: 600; } | |
| .list-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); | |
| gap: 1.25rem; | |
| } | |
| /* ─── Responsive ────────────────────────────────────────── */ | |
| @media (max-width: 1024px) { | |
| .navbar { | |
| padding: 0 1.25rem ; | |
| gap: 0 ; | |
| justify-content: space-between ; | |
| } | |
| .navbar-brand { | |
| z-index: 1002 ; | |
| } | |
| .navbar-divider { | |
| display: none ; | |
| } | |
| .mobile-menu-toggle { | |
| display: block ; | |
| order: 3 ; | |
| margin-left: 0.5rem ; | |
| } | |
| .navbar-right { | |
| order: 2 ; | |
| margin-left: auto ; | |
| gap: 0.4rem ; | |
| } | |
| .lang-selector { | |
| padding: 0.25rem 0.4rem ; | |
| border: none ; | |
| background: transparent ; | |
| } | |
| .lang-dropdown { | |
| font-size: 0.72rem ; | |
| min-width: 55px ; | |
| color: var(--green-dark) ; | |
| } | |
| .navbar-status { | |
| border: none ; | |
| background: transparent ; | |
| } | |
| .status-text { | |
| display: none ; | |
| } | |
| .nav-links { | |
| position: fixed ; | |
| top: 0 ; | |
| left: 0 ; | |
| right: 0 ; | |
| bottom: 0 ; | |
| background: var(--bg-white) ; | |
| flex-direction: column ; | |
| padding: 5rem 2rem 2rem ; | |
| gap: 1rem ; | |
| transform: translateY(-100%) ; | |
| opacity: 0 ; | |
| pointer-events: none ; | |
| transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1) ; | |
| z-index: 1000 ; | |
| align-items: center ; | |
| justify-content: center ; | |
| display: flex ; | |
| } | |
| .nav-links.open { | |
| transform: translateY(0) ; | |
| opacity: 1 ; | |
| pointer-events: auto ; | |
| } | |
| .nav-item { | |
| width: 100% ; | |
| max-width: 300px ; | |
| padding: 1.25rem ; | |
| font-size: 1.25rem ; | |
| border-radius: var(--radius-lg) ; | |
| justify-content: center ; | |
| background: var(--bg-section-alt) ; | |
| display: flex ; | |
| } | |
| .nav-item.active { | |
| background: var(--green-pale) ; | |
| } | |
| .nav-item.active::after { | |
| display: none ; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .main-content { | |
| padding: 1.5rem 1rem 2rem; | |
| } | |
| .hero-banner { | |
| padding: 2rem 1.5rem; | |
| } | |
| .hero-title { | |
| font-size: 1.5rem; | |
| } | |
| .hero-subtitle { | |
| font-size: 0.875rem; | |
| } | |
| .hero-stats { | |
| grid-template-columns: 1fr; | |
| gap: 1.5rem; | |
| padding-top: 1.5rem; | |
| } | |
| .hero-stat { | |
| text-align: left; | |
| display: flex; | |
| align-items: center; | |
| gap: 1rem; | |
| } | |
| .hero-stat-value { | |
| font-size: 1.25rem; | |
| } | |
| .capabilities-grid { | |
| grid-template-columns: 1fr; | |
| } | |
| .glass-card { | |
| padding: 1.5rem; | |
| } | |
| .translator-grid { | |
| gap: 1.25rem; | |
| } | |
| .textarea-control { | |
| min-height: 140px; | |
| } | |
| .btn { | |
| width: 100%; | |
| } | |
| .app-footer { | |
| flex-direction: column; | |
| gap: 1rem; | |
| text-align: center; | |
| padding: 2rem 1rem; | |
| } | |
| .footer-brand { | |
| justify-content: center; | |
| width: 100%; | |
| } | |
| .custom-video-player { | |
| max-height: 240px; | |
| } | |
| .subtitle-segment { | |
| flex-direction: column; | |
| gap: 0.4rem; | |
| } | |
| .sub-time { | |
| min-width: auto; | |
| width: fit-content; | |
| } | |
| } | |
| @media (max-width: 480px) { | |
| .navbar-logo { | |
| width: 36px; | |
| height: 36px; | |
| font-size: 1.1rem; | |
| } | |
| .navbar-title-main { | |
| font-size: 0.9rem; | |
| } | |
| .hero-actions { | |
| flex-direction: column; | |
| } | |
| .capability-card { | |
| padding: 1.25rem 1rem; | |
| } | |
| } | |