*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: system-ui, -apple-system, sans-serif; background: #f5f5f5; color: #1a1a1a; font-size: 15px; } /* Layout */ .layout { display: flex; flex-direction: column; min-height: 100vh; } nav { background: #2d6a4f; color: white; display: flex; align-items: center; gap: 1.5rem; padding: 0.75rem 1.5rem; } .nav-brand { font-weight: 700; font-size: 1.2rem; margin-right: auto; } nav a { color: rgba(255,255,255,0.85); text-decoration: none; font-size: 0.9rem; } nav a.active, nav a:hover { color: white; text-decoration: underline; } main { flex: 1; padding: 1.5rem; max-width: 1100px; margin: 0 auto; width: 100%; } /* Auth page */ .auth-page { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; } .auth-page h1 { font-size: 2rem; color: #2d6a4f; } .auth-page form { background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); display: flex; flex-direction: column; gap: 1rem; min-width: 320px; } /* Page */ .page { display: flex; flex-direction: column; gap: 1.25rem; } .page-header { display: flex; align-items: center; justify-content: space-between; } .page h2 { font-size: 1.4rem; } /* Card */ .card { background: white; border-radius: 8px; padding: 1.25rem; box-shadow: 0 1px 4px rgba(0,0,0,0.08); } .card h3 { margin-bottom: 0.75rem; font-size: 1rem; } /* Forms */ label { display: flex; flex-direction: column; gap: 0.3rem; font-size: 0.875rem; font-weight: 500; } input, textarea, select { padding: 0.5rem 0.75rem; border: 1px solid #d1d5db; border-radius: 6px; font-size: 0.95rem; font-family: inherit; width: 100%; } input:focus, textarea:focus { outline: 2px solid #2d6a4f; border-color: transparent; } textarea { resize: vertical; min-height: 80px; } /* Buttons */ button { padding: 0.5rem 1rem; background: #2d6a4f; color: white; border: none; border-radius: 6px; cursor: pointer; font-size: 0.9rem; } button:hover { background: #1e4d38; } .btn-small { padding: 0.25rem 0.6rem; font-size: 0.8rem; } .btn-danger { background: #dc2626; } .btn-danger:hover { background: #b91c1c; } .btn-link { background: none; color: rgba(255,255,255,0.85); padding: 0; font-size: 0.9rem; } .btn-link:hover { background: none; color: white; } /* Tables */ table { width: 100%; border-collapse: collapse; font-size: 0.9rem; } th { text-align: left; padding: 0.5rem 0.75rem; background: #f9fafb; border-bottom: 2px solid #e5e7eb; } td { padding: 0.5rem 0.75rem; border-bottom: 1px solid #f0f0f0; } tr:last-child td { border-bottom: none; } /* Status badges */ .status-pending { color: #b45309; background: #fef3c7; padding: 0.15rem 0.5rem; border-radius: 4px; font-size: 0.8rem; } .status-approved { color: #166534; background: #dcfce7; padding: 0.15rem 0.5rem; border-radius: 4px; font-size: 0.8rem; } .status-rejected { color: #991b1b; background: #fee2e2; padding: 0.15rem 0.5rem; border-radius: 4px; font-size: 0.8rem; } /* Notifications */ ul { list-style: none; display: flex; flex-direction: column; gap: 0.4rem; } li { display: flex; justify-content: space-between; align-items: center; padding: 0.4rem 0; } li.unread { font-weight: 600; } li.read { color: #6b7280; } .badge { display: inline-flex; align-items: center; justify-content: center; background: #dc2626; color: white; border-radius: 9999px; width: 1.25rem; height: 1.25rem; font-size: 0.75rem; margin-left: 0.4rem; } /* Error */ .error { color: #dc2626; font-size: 0.875rem; }