/* ===================================================================== Moderation Page Styles ===================================================================== */ * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Segoe UI', system-ui, sans-serif; background: #f4f5f7; color: #1a1a2e; font-size: 15px; } /* ----------------------------------------------------------------- Header ----------------------------------------------------------------- */ .admin-header { background: var(--color-primary); color: white; padding: 16px 24px; display: flex; justify-content: space-between; align-items: center; } .admin-header h1 { font-size: 1.2rem; } .admin-header a { color: white; text-decoration: none; opacity: 0.8; font-size: 0.85rem; } .admin-header a:hover { opacity: 1; } .admin-nav { display: flex; gap: 16px; align-items: center; } /* ----------------------------------------------------------------- Container ----------------------------------------------------------------- */ .admin-container { max-width: 900px; margin: 24px auto; padding: 0 16px; } /* ----------------------------------------------------------------- Statistics Cards ----------------------------------------------------------------- */ .stats-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 12px; margin-bottom: 32px; } .stat-card { background: white; border-radius: 8px; padding: 16px; text-align: center; border: 1px solid #e0e0e0; } .stat-card .stat-number { font-size: 1.8rem; font-weight: 700; color: var(--color-primary); } .stat-card .stat-label { font-size: 0.8rem; color: #5a5a7a; margin-top: 4px; } /* ----------------------------------------------------------------- Section Headers ----------------------------------------------------------------- */ h2 { font-size: 1.1rem; margin-bottom: 16px; padding-bottom: 8px; border-bottom: 2px solid var(--color-primary); } .section { margin-bottom: 40px; } /* ----------------------------------------------------------------- Badges ----------------------------------------------------------------- */ .badge { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 0.7rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; } .badge-pending { background: #fff3cd; color: #856404; } .badge-approved { background: #d4edda; color: #155724; } .badge-rejected { background: #f8d7da; color: #721c24; } .badge-point { background: #e3f2fd; color: #1565c0; } .badge-line { background: #f3e5f5; color: #6a1b9a; } .badge-polygon { background: #e8f5e9; color: #2e7d32; } /* ----------------------------------------------------------------- Action Buttons ----------------------------------------------------------------- */ .action-buttons { display: flex; gap: 8px; flex-shrink: 0; } .btn { padding: 8px 16px; border: none; border-radius: 6px; font-size: 0.85rem; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; gap: 4px; } .btn-approve { background: #2e7d32; color: white; } .btn-approve:hover { background: #1b5e20; } .btn-reject { background: #c62828; color: white; } .btn-reject:hover { background: #b71c1c; } /* ----------------------------------------------------------------- Empty State ----------------------------------------------------------------- */ .empty-state { text-align: center; padding: 40px; color: #999; font-size: 0.9rem; } /* ----------------------------------------------------------------- Login Page ----------------------------------------------------------------- */ .login-wrapper { display: flex; align-items: center; justify-content: center; min-height: 100vh; } .login-box { background: white; border-radius: 12px; padding: 32px; max-width: 380px; width: 90%; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); text-align: center; } .login-box h1 { font-size: 1.3rem; margin-bottom: 8px; } .login-box p { font-size: 0.85rem; color: #5a5a7a; margin-bottom: 20px; } .login-box input[type="password"] { width: 100%; padding: 10px 12px; border: 1px solid #e0e0e0; border-radius: 6px; font-size: 0.9rem; margin-bottom: 12px; font-family: 'Segoe UI', system-ui, sans-serif; } .login-box input:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(0, 55, 109, 0.1); } .login-box button { width: 100%; padding: 10px; background: var(--color-primary); color: white; border: none; border-radius: 6px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: 'Segoe UI', system-ui, sans-serif; } .login-box button:hover { filter: brightness(1.15); } .error { color: #c62828; font-size: 0.85rem; margin-bottom: 12px; } .back-link { margin-top: 16px; font-size: 0.8rem; } .back-link a { color: #5a5a7a; } /* ----------------------------------------------------------------- Mobile Responsive ----------------------------------------------------------------- */ .action-buttons { width: 100%; } .action-buttons form { flex: 1; } .action-buttons .btn { width: 100%; justify-content: center; } /* ----------------------------------------------------------------- Collapsible Contribution Rows ----------------------------------------------------------------- */ .contribution-row-collapsible { background: white; border: 1px solid #e0e0e0; border-radius: 8px; margin-bottom: 12px; overflow: hidden; } .contribution-row-header { padding: 12px 16px; display: flex; justify-content: space-between; align-items: center; cursor: pointer; transition: background 150ms ease; } .contribution-row-header:hover { background: #f8f9fa; } .contribution-row-summary { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; flex: 1; } .contribution-row-summary .title { font-weight: 600; font-size: 0.95rem; } .meta-inline { font-size: 0.8rem; color: #5a5a7a; } .collapse-icon { color: #999; font-size: 0.8rem; flex-shrink: 0; transition: transform 200ms ease; } /* ----------------------------------------------------------------- Contribution Detail View (expanded) ----------------------------------------------------------------- */ .contribution-row-detail { padding: 0 16px 16px 16px; border-top: 1px solid #f0f0f0; } .detail-layout { display: flex; gap: 16px; margin-bottom: 12px; margin-top: 12px; } .detail-map { width: 200px; height: 160px; border-radius: 6px; border: 1px solid #e0e0e0; flex-shrink: 0; background: #f0f0f0; } .detail-content { flex: 1; min-width: 0; } .detail-content .description { font-size: 0.85rem; line-height: 1.5; color: #5a5a7a; margin-bottom: 8px; } .detail-content .meta { font-size: 0.8rem; color: #999; } .btn-map { background: #1565C0; color: white; text-decoration: none; } .btn-map:hover { background: #0d47a1; } /* ----------------------------------------------------------------- Mobile: Detail Layout stacked ----------------------------------------------------------------- */ @media (max-width: 768px) { .detail-layout { flex-direction: column; } .detail-map { width: 100%; height: 180px; } .contribution-row-summary { flex-direction: column; align-items: flex-start; gap: 4px; } }