.yb-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 12em;
    padding: 1em 1em 1.2em;
    background: var(--lightest);
    color: var(--dark);
    font-family: var(--serif-font);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35);
    text-align: center;
}

.yb-portrait {
    position: relative;
    width: 9em;
    height: 11em;
    margin-bottom: 0.8em;
}
.yb-portrait img,
.yb-portrait .yb-blank {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: grayscale(100%) contrast(1.05);
    border: 3px solid var(--dark);
}
.yb-portrait .yb-blank {
    background: var(--dark) url('../img/darknoise.svg') repeat;
    color: var(--lightest);
    font-family: var(--header-font);
    font-size: 3em;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
}

.yb-dead .yb-portrait::after {
    content: "";
    position: absolute;
    top: -12%;
    left: -12%;
    width: 124%;
    height: 124%;
    background: url('../img/memoriam_cross.svg') no-repeat center / 100% 100%;
    pointer-events: none;
    z-index: 2;
}
.yb-ribbon {
    position: absolute;
    left: -0.6em;
    right: -0.6em;
    bottom: 0.8em;
    padding: 0.25em 0;
    background: var(--darkest);
    color: var(--lightest);
    font-family: var(--header-font);
    letter-spacing: 2px;
    text-transform: uppercase;
    font-size: 0.85em;
    z-index: 3;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
}

.yb-name {
    font-family: var(--header-font);
    font-size: 1.15em;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--accent);
    line-height: 1.2em;
}
.yb-nick {
    font-family: var(--handwritten-font);
    font-size: 1.5em;
    line-height: 1em;
    color: var(--dark);
}
.yb-line {
    font-size: 0.95em;
    line-height: 1.3em;
}
.yb-line.yb-muted {
    color: #777;
    font-style: italic;
}
.yb-year { font-weight: bold; }
.yb-gap { height: 0.8em; }
.yb-label {
    font-family: var(--body-font);
    font-size: 0.7em;
    font-weight: 600;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: #888;
}

.yb-boxes {
    display: flex;
    gap: 0.4em;
    margin-top: auto;
    padding-top: 0.7em;
    width: 100%;
}
.yb-box {
    flex: 1 1 0;
    border: 1px solid var(--dark);
    padding: 0.3em 0.2em;
    font-family: var(--body-font);
    font-size: 0.75em;
    line-height: 1.2em;
}
.yb-box span {
    display: block;
    font-size: 0.8em;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #777;
}
.yb-box strong {
    font-weight: 600;
}
.yb-box.yb-dead-box strong {
    color: var(--accent);
}

.yb-body { width: 100%; }


.yb-page {
    padding: 6em 5% calc(195px + 2em);
    background: var(--dark) url('../img/darknoise.svg') repeat;
    min-height: 100vh;
    box-sizing: border-box;
    flex: 0 0 auto;
}
.yb-page > h1 {
    font-size: 2em;
    text-align: center;
}
.yb-context {
    text-align: center;
    font-family: var(--serif-font);
    margin: 0.5em 0 1.5em;
    color: #bbb;
}

.yb-filters {
    display: flex;
    justify-content: center;
    gap: 0.6em;
    flex-wrap: wrap;
    margin-bottom: 2em;
}
.yb-filters button {
    background: transparent;
    border: 2px solid var(--lightest);
    color: var(--lightest);
    font-family: var(--body-font);
    font-weight: 500;
    font-size: 1em;
    padding: 0.35em 1em;
    cursor: pointer;
}
.yb-filters button:hover {
    border-color: var(--accent);
    color: var(--accent);
}
.yb-filters button.active {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--lightest);
}

.yb-pick { position: relative; }
.yb-pick[hidden] { display: none; }
.yb-pick-btn::after {
    content: '';
    display: inline-block;
    margin-left: 0.5em;
    vertical-align: 0.15em;
    border-left: 0.3em solid transparent;
    border-right: 0.3em solid transparent;
    border-top: 0.35em solid currentColor;
}
.yb-menu {
    display: none;
    position: absolute;
    top: calc(100% + 0.3em);
    left: 50%;
    transform: translateX(-50%);
    z-index: 20;
    min-width: 100%;
    flex-direction: column;
    background: var(--lightest);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45);
}
.yb-pick.open .yb-menu { display: flex; }
.yb-filters .yb-menu button {
    border: none;
    color: var(--dark);
    text-align: left;
    white-space: nowrap;
    padding: 0.45em 1em;
}
.yb-filters .yb-menu button:hover { background: rgba(168, 48, 44, 0.12); color: var(--accent); }
.yb-filters .yb-menu button.active { background: var(--accent); color: var(--lightest); }

.yb-grid {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 2em;
}
.yb-grid .yb-card {
    cursor: pointer;
    transition: transform 0.2s;
}
.yb-grid .yb-card:hover {
    transform: rotate(-1deg) translateY(-3px);
}
.yb-grid .yb-card.yb-me {
    cursor: default;
}
.yb-empty {
    text-align: center;
    font-family: var(--serif-font);
    color: #bbb;
}

.yb-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 20;
}
.yb-overlay.open {
    display: flex;
}
.yb-editor {
    background: var(--lightest);
    color: var(--dark);
    padding: 1.5em;
    width: 20em;
    max-width: calc(100% - 32px);
    box-sizing: border-box;
    font-family: var(--body-font);
    display: flex;
    flex-direction: column;
    gap: 0.8em;
}
.yb-editor h2 {
    font-family: var(--header-font);
    color: var(--accent);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 1.3em;
}
.yb-editor label {
    display: flex;
    flex-direction: column;
    gap: 0.3em;
    font-size: 0.9em;
}
.yb-editor label.yb-check {
    flex-direction: row;
    align-items: center;
}
.yb-editor select,
.yb-editor input[type="text"] {
    font-family: var(--body-font);
    font-size: 1em;
    padding: 0.35em;
    border: 1px solid var(--dark);
    background: #fff;
}
.yb-editor .yb-actions {
    display: flex;
    gap: 0.6em;
    justify-content: flex-end;
}
.yb-editor button {
    font-family: var(--body-font);
    font-weight: 600;
    padding: 0.4em 1em;
    border: none;
    cursor: pointer;
    background: var(--dark);
    color: var(--lightest);
}
.yb-editor button.yb-save {
    background: var(--accent);
}
.yb-editor .yb-error {
    color: var(--accent);
    font-size: 0.85em;
    min-height: 1em;
}

.yb-strip,
.yb-memoriam {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 2em;
    margin: 2em 0;
}
.yb-fade {
    animation: yb-fade-in 0.8s ease;
}
@keyframes yb-fade-in {
    from { opacity: 0; }
    to { opacity: 1; }
}

@media (max-width: 700px) {
    .yb-page {
        padding: 6em 16px calc(117px + 1em);
    }
    .yb-grid {
        gap: 1.2em;
    }
}
