/* Shared single page primitives */

.status-badge-inline {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 12px;
    border-radius: var(--radius-xs);
    font-size: 0.75rem;
    font-weight: 700;
    border: 1px solid rgba(255, 255, 255, 0.3);
    background: rgba(255, 255, 255, 0.15);
    color: white;
}

.status-badge-inline .status-dot {
    font-size: 8px;
}

.status-badge-inline--open {
    border-color: var(--success-green);
}

.status-badge-inline--closed {
    border-color: var(--danger-red);
}

.status-badge-inline--coming-soon {
    border-color: var(--warning-amber);
}

.status-badge-inline--not-announced {
    border-color: var(--text-muted);
}

/* Inside a dark hero, the muted grey is too low-contrast against the dark
   blue background — use a translucent white instead, matching the other
   hero badges. The sidebar .status-text--not-announced stays on the
   default (light-background) --text-muted. */
.program-hero-wrap .status-badge-inline--not-announced,
.uni-hero-wrap .status-badge-inline--not-announced {
    border-color: rgba(255, 255, 255, 0.4);
}

.program-hero-wrap .status-dot--not-announced,
.uni-hero-wrap .status-dot--not-announced {
    color: rgba(255, 255, 255, 0.75);
}

.status-dot--open {
    color: var(--success-green);
}

.status-dot--closed {
    color: var(--danger-red);
}

.status-dot--coming-soon {
    color: var(--warning-amber);
}

.status-dot--not-announced {
    color: var(--text-muted);
}

.status-text--open {
    color: var(--success-green);
}

.status-text--closed {
    color: var(--danger-red);
}

.status-text--coming-soon {
    color: var(--warning-amber);
}

.status-text--not-announced {
    color: var(--text-muted);
}

.hero-meta-badge {
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: rgba(255, 255, 255, 0.9);
    padding: 4px 12px;
    border-radius: var(--radius-xs);
    font-size: 0.75rem;
}

.btn-hero-outline {
    background: rgba(255, 255, 255, 0.2);
    color: white;
    border: 1px solid rgba(255, 255, 255, 0.4);
}

/* Own hover required — otherwise .btn-primary:hover wins and this
   translucent outline button snaps to solid navy, losing the glass
   look it has at rest. */
.btn-hero-outline:hover {
    background: rgba(255, 255, 255, 0.3);
    border-color: rgba(255, 255, 255, 0.6);
    color: white;
}

.save-item-hero-btn.is-saved {
    background: white;
    color: var(--medical-blue);
    border-color: white;
}

.merit-bar {
    height: 8px;
    background: var(--bg-section);
    border-radius: var(--radius-xs);
    overflow: hidden;
    margin-top: 8px;
}

.merit-bar-fill {
    height: 100%;
    background: var(--success-green);
}

.merit-formula-box {
    background: var(--sky-blue);
    border-radius: var(--radius-md);
    padding: 20px;
    font-family: monospace;
    font-size: 0.95rem;
    color: var(--medical-blue);
    line-height: 1.8;
}

.sticky-sidebar {
    position: relative;
    margin-bottom: 32px;
}

.deadline-box {
    background: var(--danger-light);
    border: 1px solid var(--danger-red);
    border-radius: var(--radius-sm);
    padding: 12px;
    margin-top: 16px;
    text-align: center;
}

.deadline-label {
    font-size: 0.75rem;
    color: var(--danger-red);
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.deadline-date {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--danger-red);
}

.salary-box {
    background: var(--success-light);
    border: 1px solid var(--success-green);
    padding: 24px;
    border-radius: var(--radius-md);
}
