/* KBRI Harare Archive Desk */ :root { --bg: #f4f5f7; --surface: #ffffff; --surface-alt: #f8f9fb; --border: #d7dce3; --border-strong: #c3cad4; --text: #101828; --text-muted: #667085; --primary: #1f2937; --primary-soft: #eef1f4; --accent: #4b5563; --success: #0f766e; --warning: #92400e; --danger: #b42318; --shadow-sm: 0 10px 30px rgba(16, 24, 40, 0.04); --shadow-lg: 0 22px 50px rgba(16, 24, 40, 0.08); --radius-sm: 10px; --radius-md: 14px; --radius-lg: 18px; --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem; --space-5: 1.5rem; --space-6: 2rem; } html { scroll-behavior: smooth; } body { margin: 0; background: var(--bg); color: var(--text); font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; line-height: 1.5; } a { color: inherit; text-decoration: none; } a:hover { color: inherit; } .auth-shell, .app-shell { min-height: 100vh; background: #f4f5f7; } .topbar { background: rgba(255,255,255,0.92); backdrop-filter: blur(10px); } .panel, .metric-card, .record-card, .file-card, .empty-state { background: rgba(255,255,255,0.98); border: 1px solid var(--border); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); } .panel { padding: var(--space-5); } .panel-hero { position: relative; overflow: hidden; box-shadow: var(--shadow-lg); } .panel-hero::after { content: ""; position: absolute; inset: auto -10% -40% auto; width: 220px; height: 220px; border-radius: 50%; background: rgba(31, 41, 55, 0.05); box-shadow: inset -24px -24px 40px rgba(255,255,255,0.7), 20px 20px 40px rgba(31,41,55,0.05); } .eyebrow { text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.72rem; font-weight: 700; color: var(--text-muted); } .display-title, .app-title, .section-title { letter-spacing: -0.02em; font-weight: 700; color: var(--text); } .display-title { font-size: clamp(2rem, 4vw, 3.35rem); max-width: 12ch; } .app-title { font-size: 1.35rem; } .section-title { font-size: 1.15rem; } .lead-copy, .text-secondary, .form-text, .inline-note, .record-meta, .record-path, .policy-list li, .empty-state p, .callout, small { color: var(--text-muted) !important; } .badge-soft { background: var(--primary-soft); color: var(--primary); border: 1px solid var(--border); font-weight: 600; } .badge-outline { background: transparent; color: var(--text); border: 1px solid var(--border-strong); font-weight: 600; } .metric-card { padding: 1rem 1.1rem; position: relative; } .metric-card::before { content: ""; position: absolute; inset: 12px 12px auto auto; width: 52px; height: 52px; border-radius: 14px; border: 1px solid rgba(31,41,55,0.08); background: rgba(255,255,255,0.72); box-shadow: 12px 12px 25px rgba(31,41,55,0.04), inset -10px -10px 15px rgba(255,255,255,0.9); } .metric-label { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--text-muted); margin-bottom: 0.4rem; position: relative; z-index: 1; } .metric-value { font-size: 1.9rem; font-weight: 700; letter-spacing: -0.03em; position: relative; z-index: 1; } .small-value { font-size: 1.3rem; } .callout, .inline-note, .file-card, .empty-state { padding: 0.9rem 1rem; border-radius: var(--radius-md); background: var(--surface-alt); border: 1px solid var(--border); } .form-control, .form-select { border-radius: var(--radius-sm); border-color: var(--border-strong); padding: 0.8rem 0.9rem; color: var(--text); background-color: #fff; } .form-control:focus, .form-select:focus { border-color: #98a2b3; box-shadow: 0 0 0 0.2rem rgba(17,24,39,0.08); } .form-label { font-size: 0.88rem; font-weight: 600; color: var(--text); } .btn { border-radius: 12px; font-weight: 600; padding: 0.72rem 1rem; } .btn-dark { background: #111827; border-color: #111827; box-shadow: 0 10px 25px rgba(17, 24, 39, 0.18); } .btn-dark:hover, .btn-dark:focus { background: #0b1220; border-color: #0b1220; } .btn-outline-secondary, .btn-outline-danger { border-color: var(--border-strong); } .tree-nav { max-height: 70vh; overflow: auto; padding-right: 0.35rem; } .tree-level { padding-left: 0; } .tree-item + .tree-item { margin-top: 0.35rem; } .tree-toggle, .tree-leaf { width: 100%; display: flex; align-items: center; gap: 0.7rem; border: 0; background: transparent; padding: 0.65rem 0.7rem; border-radius: 12px; text-align: left; } .tree-toggle:hover, .tree-leaf:hover, .tree-leaf.active { background: var(--primary-soft); } .tree-icon { width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; border: 1px solid var(--border-strong); background: #fff; font-weight: 700; flex: 0 0 22px; } .tree-toggle.open .tree-icon { content: "−"; } .tree-toggle.open .tree-icon, .tree-leaf.active .tree-dot { background: #111827; color: #fff; border-color: #111827; } .tree-label { font-size: 0.94rem; color: var(--text); } .tree-children { display: none; margin-left: 0.9rem; border-left: 1px dashed var(--border); padding-left: 0.75rem; } .tree-children.show { display: block; } .tree-dot { width: 10px; height: 10px; border-radius: 999px; border: 1px solid var(--border-strong); background: #fff; flex: 0 0 10px; } .record-card { padding: 1rem; transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; } .record-card + .record-card { margin-top: 0.85rem; } .record-card:hover, .record-card.active { transform: translateY(-2px); box-shadow: var(--shadow-lg); border-color: #b6bec9; } .record-title { font-size: 1rem; margin-bottom: 0.35rem; } .record-meta, .record-path { font-size: 0.84rem; } .record-path { min-height: 2.4rem; } .credential-table th, .credential-table td, .meta-grid dt, .meta-grid dd { font-size: 0.9rem; } .meta-grid div + div { border-top: 1px solid var(--border); } .meta-grid dt { color: var(--text-muted); margin-bottom: 0.25rem; padding-top: 0.9rem; } .meta-grid dd { margin-bottom: 0; font-weight: 600; padding-bottom: 0.9rem; } .policy-list { padding-left: 1rem; display: grid; gap: 0.55rem; } .small-heading { font-size: 0.82rem; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 700; color: var(--text-muted); } .detail-body { border-top: 1px solid var(--border); padding-top: 1rem; } .toast { border-radius: 14px; box-shadow: var(--shadow-sm); } .no-print { display: block; } @media (max-width: 991.98px) { .panel { padding: 1rem; } .tree-nav { max-height: none; } .display-title { max-width: none; } } @media print { body { background: #fff; } .no-print, .btn, .topbar { display: none !important; } .panel, .metric-card, .file-card { box-shadow: none; border-color: #d1d5db; background: #fff; } .print-panel { padding: 0; border: 0; } }