/* Brand colors */ :root { --pico-primary: #F05023; --pico-primary-hover: #d44420; --pico-primary-focus: rgba(240, 80, 35, 0.25); --pico-primary-inverse: #fff; --brand-primary: #F05023; --brand-secondary: #0986E2; --brand-secondary-hover: #0770c0; } /* Header / nav */ .site-header { background: #fff; border-bottom: 2px solid var(--brand-primary); padding: 0; margin-bottom: 0; } .site-header nav { display: flex; align-items: center; justify-content: space-between; padding-top: 0.75rem; padding-bottom: 0.75rem; gap: 1rem; } .site-header nav > ul { margin: 0; padding: 0; list-style: none; display: flex; align-items: center; gap: 0.25rem; } .brand-logo { font-size: 1.3rem; font-weight: 700; color: var(--brand-primary) !important; text-decoration: none; } .nav-links { flex: 1; justify-content: flex-end; } .nav-links a { color: var(--pico-color); text-decoration: none; padding: 0.25rem 0.5rem; border-radius: 4px; } .nav-links a:hover { color: var(--brand-primary); } .nav-links a.secondary { color: var(--pico-muted-color); } .mobile-menu { display: none; } .mobile-menu summary { padding: 0.25rem 0.5rem; font-size: 1.25rem; } .mobile-menu > ul { position: absolute; right: 1rem; background: var(--pico-background-color); border: 1px solid var(--pico-border-color); border-radius: var(--pico-border-radius); padding: 0.5rem 0; list-style: none; margin: 0; z-index: 100; min-width: 180px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .mobile-menu > ul li a { display: block; padding: 0.5rem 1rem; text-decoration: none; color: var(--pico-color); } .mobile-menu > ul li a:hover { background: var(--pico-muted-background-color); } @media (max-width: 768px) { .nav-links { display: none; } .mobile-menu { display: block; } } /* Page spacing */ .py-4 { padding-top: 1.5rem; padding-bottom: 1.5rem; } /* Alerts */ .alert { border-radius: var(--pico-border-radius); padding: 0.75rem 1rem; margin-bottom: 1rem; } .alert p { margin: 0; } .alert p + p { margin-top: 0.25rem; } .alert-danger { background: #fef2f2; border: 1px solid #fecaca; color: #b91c1c; } .alert-success { background: #f0fdf4; border: 1px solid #bbf7d0; color: #15803d; } .alert-warning { background: #fffbeb; border: 1px solid #fde68a; color: #b45309; } /* Cards (using
) */ article.card { margin: 0; padding: 0; overflow: hidden; } article.card > header { padding: 0.75rem 1rem; background: var(--pico-muted-background-color); border-bottom: 1px solid var(--pico-border-color); margin: 0; } article.card > header h1, article.card > header h2, article.card > header h5 { margin: 0; font-size: 1rem; font-weight: 600; } article.card > .card-body { padding: 1.25rem; } article.card > footer { padding: 0.75rem 1rem; background: var(--pico-muted-background-color); border-top: 1px solid var(--pico-border-color); margin: 0; } /* List groups */ .list-group { list-style: none; padding: 0; margin: 0; } .list-group-item { padding: 0.6rem 1rem; border-bottom: 1px solid var(--pico-border-color); display: flex; justify-content: space-between; align-items: center; } .list-group-item:last-child { border-bottom: none; } /* Badges */ .badge { display: inline-flex; align-items: center; gap: 0.25rem; padding: 0.2rem 0.5rem; border-radius: 999px; font-size: 0.75rem; font-weight: 600; line-height: 1; } .badge-success { background: #dcfce7; color: #15803d; } .badge-danger { background: #fee2e2; color: #b91c1c; } .badge-warning { background: #fef3c7; color: #b45309; } .badge-secondary { background: var(--pico-muted-background-color); color: var(--pico-muted-color); } .badge-light { background: var(--pico-muted-background-color); color: var(--pico-muted-color); border: 1px solid var(--pico-border-color); } /* Buttons */ button.secondary, a[role="button"].secondary { --pico-background-color: var(--brand-secondary); --pico-border-color: var(--brand-secondary); --pico-color: #fff; } button.outline.danger, a[role="button"].outline.danger { --pico-color: #dc2626; --pico-border-color: #dc2626; } button.danger, a[role="button"].danger { --pico-background-color: #dc2626; --pico-border-color: #dc2626; --pico-color: #fff; } button.sm, a[role="button"].sm { padding: 0.25rem 0.6rem; font-size: 0.875rem; } /* Layout helpers */ .row { display: flex; flex-wrap: wrap; gap: 1rem; } .col { flex: 1 1 0; } .col-auto { flex: 0 0 auto; } .col-sm-6 { flex: 0 0 calc(50% - 0.5rem); min-width: 200px; } .col-sm-10 { flex: 0 0 calc(83.33% - 0.5rem); } .col-md-6 { flex: 0 0 calc(50% - 0.5rem); } .col-md-7 { flex: 0 0 calc(58.33% - 0.5rem); } .col-lg-4 { flex: 0 0 calc(33.33% - 0.67rem); } .col-lg-5 { flex: 0 0 calc(41.67% - 0.5rem); } .col-lg-6 { flex: 0 0 calc(50% - 0.5rem); } .col-12 { flex: 0 0 100%; } .col-md-6-auto { flex: 0 0 calc(50% - 0.5rem); } @media (max-width: 768px) { .col-sm-6, .col-md-6, .col-md-7, .col-lg-4, .col-lg-5, .col-lg-6, .col-md-6-auto { flex: 0 0 100%; } } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .justify-end { justify-content: flex-end; } .align-center { align-items: center; } .flex-wrap { flex-wrap: wrap; } .flex-col { flex-direction: column; } .flex-1 { flex: 1; } .flex-fill { flex: 1 1 0; } .gap-1 { gap: 0.25rem; } .gap-2 { gap: 0.5rem; } .gap-3 { gap: 0.75rem; } .mt-2 { margin-top: 0.5rem; } .mt-3 { margin-top: 0.75rem; } .mt-4 { margin-top: 1.5rem; } .mt-5 { margin-top: 3rem; } .mb-0 { margin-bottom: 0; } .mb-1 { margin-bottom: 0.25rem; } .mb-2 { margin-bottom: 0.5rem; } .mb-3 { margin-bottom: 0.75rem; } .mb-4 { margin-bottom: 1.5rem; } .ms-auto { margin-left: auto; } .me-1 { margin-right: 0.25rem; } .me-2 { margin-right: 0.5rem; } .me-3 { margin-right: 0.75rem; } .d-flex { display: flex; } .d-grid { display: grid; } .d-none { display: none; } .d-block { display: block; } .text-center { text-align: center; } .text-end { text-align: right; } .text-muted { color: var(--pico-muted-color); } .small { font-size: 0.875rem; } .fs-1 { font-size: 2rem; } .fs-2 { font-size: 1.5rem; } .fs-5 { font-size: 1.15rem; } .fs-6 { font-size: 0.875rem; } .text-success { color: #15803d; } .text-danger { color: #dc2626; } .text-warning { color: #b45309; } .text-primary { color: var(--brand-primary); } .text-secondary { color: var(--brand-secondary); } .text-white { color: #fff; } .bg-danger-header { background: #dc2626; color: #fff; } .font-monospace { font-family: monospace; } .w-100 { width: 100%; } .h-100 { height: 100%; } /* Table */ .table-scroll { overflow-x: auto; } table.align-middle td, table.align-middle th { vertical-align: middle; } /* Breadcrumb */ .breadcrumb { display: flex; align-items: center; gap: 0.25rem; list-style: none; padding: 0; margin: 0 0 1rem; font-size: 0.9rem; color: var(--pico-muted-color); } .breadcrumb-item + .breadcrumb-item::before { content: "/"; margin-right: 0.25rem; color: var(--pico-muted-color); } .breadcrumb-item.active { color: var(--pico-color); } /* Dropdown */ .dropdown { position: relative; display: inline-block; } .dropdown-menu { display: none; position: absolute; right: 0; top: calc(100% + 4px); background: var(--pico-background-color); border: 1px solid var(--pico-border-color); border-radius: var(--pico-border-radius); box-shadow: 0 4px 12px rgba(0,0,0,0.12); z-index: 200; min-width: 220px; padding: 0.25rem 0; list-style: none; margin: 0; } .dropdown.open .dropdown-menu { display: block; } .dropdown-item { display: block; width: 100%; padding: 0.45rem 1rem; background: none; border: none; text-align: left; cursor: pointer; color: var(--pico-color); font-size: 0.9rem; text-decoration: none; } .dropdown-item:hover { background: var(--pico-muted-background-color); } .dropdown-item.muted { color: var(--pico-muted-color); } .dropdown-divider { border: none; border-top: 1px solid var(--pico-border-color); margin: 0.25rem 0; } /* Spinner */ .spinner { display: inline-block; width: 2rem; height: 2rem; border: 3px solid var(--pico-muted-background-color); border-top-color: var(--brand-primary); border-radius: 50%; animation: spin 0.75s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Input group */ .input-group { display: flex; gap: 0; } .input-group input { border-radius: var(--pico-border-radius) 0 0 var(--pico-border-radius); margin: 0; flex: 1; } .input-group button { border-radius: 0 var(--pico-border-radius) var(--pico-border-radius) 0; margin: 0; white-space: nowrap; } /* Empty state */ .empty-state { text-align: center; padding: 3rem 1rem; color: var(--pico-muted-color); } .empty-state .empty-icon { font-size: 3rem; display: block; margin-bottom: 0.75rem; }