:root { --bg-color: #ffffff; --surface-color: #f9fafb; --text-primary: #111827; --text-secondary: #6b7280; --border-color: #e5e7eb; --accent-color: #3b82f6; --accent-hover: #2563eb; --danger-color: #ef4444; --success-color: #10b981; --font-mono: 'JetBrains Mono', 'Fira Code', monospace; } body.dark-mode { --bg-color: #0f172a; --surface-color: #1e293b; --text-primary: #f8fafc; --text-secondary: #94a3b8; --border-color: #334155; --accent-color: #60a5fa; --accent-hover: #93c5fd; } body { background-color: var(--bg-color); color: var(--text-primary); font-family: 'Inter', system-ui, -apple-system, sans-serif; -webkit-font-smoothing: antialiased; transition: background-color 0.3s ease, color 0.3s ease; } .navbar { background-color: var(--bg-color) !important; border-color: var(--border-color) !important; } .navbar-brand { color: var(--text-primary) !important; } .font-tabular { font-variant-numeric: tabular-nums; font-family: var(--font-mono); } /* Dark Mode Toggle */ .dark-mode-toggle { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 1px solid var(--border-color); background: var(--surface-color); cursor: pointer; transition: all 0.2s ease; } .dark-mode-toggle:hover { border-color: var(--accent-color); color: var(--accent-color); } /* Landing Clock */ .hero-clock { font-size: clamp(4rem, 15vw, 10rem); font-weight: 800; letter-spacing: -0.05em; line-height: 1; color: var(--text-primary); } /* Cards & Containers */ .card-precise { background: var(--surface-color); border: 1px solid var(--border-color); border-radius: 4px; transition: all 0.2s ease; color: var(--text-primary); } .card-precise:hover { border-color: var(--accent-color); background: var(--bg-color); box-shadow: 0 4px 12px rgba(0,0,0,0.03); } .btn-precise { border-radius: 4px; font-weight: 500; padding: 0.5rem 1rem; transition: all 0.1s ease; text-transform: uppercase; font-size: 0.75rem; letter-spacing: 0.05em; } /* Timer Display */ .timer-display { font-size: clamp(3rem, 10vw, 6rem); font-weight: 700; color: var(--text-primary); } .timer-sub-display { font-size: 1.5rem; color: var(--text-secondary); } /* Table */ .table { color: var(--text-primary); } .table-precise { font-size: 0.875rem; } .table-precise th { font-weight: 600; color: var(--text-secondary); text-transform: uppercase; font-size: 0.7rem; letter-spacing: 0.05em; border-bottom: 2px solid var(--border-color); } .table-precise td { border-bottom: 1px solid var(--border-color); } .badge-best { background-color: var(--success-color); color: white; font-size: 0.65rem; padding: 2px 6px; border-radius: 2px; } /* SPA Transitions */ .view-section { display: none; } .view-section.active { display: block; } /* Forms */ .form-control, .form-select { background-color: var(--surface-color); color: var(--text-primary); border-color: var(--border-color); } .form-control:focus, .form-select:focus { background-color: var(--bg-color); color: var(--text-primary); border-color: var(--accent-color); box-shadow: none; } .form-control-precise { border-radius: 4px; border: 1px solid var(--border-color); font-size: 0.875rem; padding: 0.4rem 0.75rem; } #session-title { background-color: transparent; border-width: 0 0 2px 0; border-radius: 0; padding-left: 0; } #session-title:focus { background-color: transparent; border-color: var(--accent-color); } /* Activity Builder */ #custom-builder { background: var(--surface-color); padding: 1.5rem; border: 1px dashed var(--border-color); border-radius: 8px; } .activity-row { background: var(--bg-color) !important; border-color: var(--border-color) !important; transition: transform 0.2s ease; box-shadow: 0 2px 4px rgba(0,0,0,0.02); cursor: grab; } .activity-row:active { cursor: grabbing; } .activity-row.dragging { opacity: 0.5; background: var(--border-color) !important; transform: scale(0.98); } .activity-row:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0,0,0,0.05); } .activity-row.rest-activity { border-left: 4px solid var(--accent-color) !important; font-size: 0.8rem; opacity: 0.9; padding: 0.5rem 1rem !important; } .activity-row.rest-activity .form-control { font-size: 0.8rem; } .activity-row.rest-activity .btn { font-size: 0.65rem; padding: 0.2rem 0.4rem; } .activity-row.rest-activity .fs-tiny { font-size: 0.6rem; } /* Options Dropdown */ .dropdown-menu { background-color: var(--surface-color); color: var(--text-primary); box-shadow: 0 10px 25px rgba(0,0,0,0.2) !important; border: 1px solid var(--border-color); z-index: 1050; } .dropdown-header { color: var(--text-primary); font-weight: 700; letter-spacing: 0.1em; } /* Utility */ .tracking-widest { letter-spacing: 0.1em; } .tracking-wider { letter-spacing: 0.05em; } .fs-small { font-size: 0.75rem; } .fs-tiny { font-size: 0.65rem; } .cursor-pointer { cursor: pointer; } #active-activity-name { letter-spacing: 0.02em; font-size: 1.1rem; font-weight: 600; } /* Alerts / Finishes */ .timer-finish { animation: flash 1s infinite; } @keyframes flash { 0% { opacity: 1; } 50% { opacity: 0.5; } 100% { opacity: 1; } } /* Settings Switches */ .form-check-input:checked { background-color: var(--accent-color); border-color: var(--accent-color); } /* Layout Adjustments */ .timer-workspace-container { display: flex; flex-wrap: wrap; gap: 2rem; justify-content: center; } .timer-main-column { flex: 1; min-width: 320px; max-width: 800px; order: 2; /* Main on right on desktop */ } .timer-side-column { width: 350px; order: 1; /* History on left on desktop */ } @media (max-width: 1200px) { .timer-side-column { width: 100%; max-width: 800px; margin: 0 auto; order: 2; /* Move history back to bottom on mobile */ } .timer-main-column { order: 1; /* Main timer on top on mobile */ } } footer { border-color: var(--border-color) !important; }