:root {
    --companion-wine: #641b2e;
    --companion-wine-dark: #3f101e;
    --companion-gold: #c49a45;
    --companion-paper: #fffaf0;
    --companion-ink: #29211e;
    --companion-muted: #6f6661;
    --companion-border: #e4d9c7;
}

body { padding-bottom: calc(5.25rem + env(safe-area-inset-bottom)); }

.companion-bottom-nav {
    position: fixed;
    z-index: 9990;
    right: 0;
    bottom: 0;
    left: 0;
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    padding: .4rem max(.35rem, env(safe-area-inset-right)) calc(.35rem + env(safe-area-inset-bottom)) max(.35rem, env(safe-area-inset-left));
    border-top: 1px solid rgba(100, 27, 46, .18);
    box-shadow: 0 -5px 18px rgba(42, 22, 22, .12);
    background: rgba(255, 250, 240, .97);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
}

.companion-bottom-nav a {
    position: relative;
    display: flex;
    min-width: 0;
    min-height: 50px;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: .22rem;
    border-radius: .7rem;
    color: #5f5652;
    font: 700 clamp(.64rem, 2.7vw, .78rem)/1 Arial, sans-serif;
    text-decoration: none;
    touch-action: manipulation;
}

.companion-bottom-nav a i { font-size: 1.15rem; }
.companion-bottom-nav a.active { color: #fff; background: var(--companion-wine); }
.companion-bottom-nav a:focus-visible,
.companion-save:focus-visible,
.companion-detail:focus-visible,
.companion-resource:focus-visible { outline: 3px solid var(--companion-gold); outline-offset: 2px; }
.companion-bottom-nav b,
.companion-badge {
    position: absolute;
    top: .2rem;
    right: 18%;
    display: grid;
    min-width: 1.15rem;
    height: 1.15rem;
    place-items: center;
    padding: 0 .25rem;
    border: 2px solid var(--companion-paper);
    border-radius: 999px;
    color: #fff;
    background: #bb1e2f;
    font-size: .65rem;
}
[data-announcement-badge][hidden] { display: none !important; }

.companion-main { min-height: 70vh; background: var(--companion-paper); }
.companion-hero { padding: clamp(2.8rem, 8vw, 5.5rem) 0 2.5rem; color: #fff; background: linear-gradient(135deg, var(--companion-wine-dark), var(--companion-wine)); }
.companion-hero h1 { margin: .35rem 0; color: #fff; }
.companion-status { margin: .5rem 0 0; color: #f6e9cc; }
.companion-content { padding-top: 2.5rem; padding-bottom: 3.5rem; }
.companion-content > section + section,
[data-companion-render] > section + section { margin-top: 3rem; }
.companion-content h2 { margin-bottom: 1rem; color: var(--companion-wine); }

.companion-mode-card,
.companion-empty,
.companion-announcement,
.companion-event-card {
    border: 1px solid var(--companion-border);
    border-radius: .8rem;
    box-shadow: 0 5px 20px rgba(53, 31, 27, .07);
    background: #fff;
}
.companion-mode-card, .companion-empty { padding: clamp(1.5rem, 5vw, 2.5rem); }
.companion-mode-card { border-top: .4rem solid var(--companion-gold); }
.companion-empty { text-align: center; }
.companion-empty > i { color: var(--companion-wine); font-size: 2.25rem; }

.companion-event-card {
    display: grid;
    grid-template-columns: minmax(6.5rem, auto) 1fr;
    overflow: hidden;
    margin-bottom: 1rem;
}
.companion-event-card.is-past { opacity: .68; box-shadow: none; }
.companion-event-time { padding: 1.25rem 1rem; color: #fff; background: var(--companion-wine); font-weight: 800; }
.companion-event-body { padding: 1.15rem 1.25rem; }
.companion-event-body h3 { margin: .45rem 0; color: var(--companion-ink); }
.companion-location { margin: .4rem 0; color: var(--companion-muted); }
.companion-countdown { color: var(--companion-wine); font-weight: 800; }
.companion-card-actions,
.companion-inline-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; margin-top: .85rem; }
.companion-card-actions a,
.companion-card-actions button,
.companion-inline-actions a,
.companion-inline-actions button,
.companion-primary-link,
.companion-empty button,
.companion-announcement button {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    padding: .65rem .85rem;
    border: 1px solid var(--companion-wine);
    border-radius: .45rem;
    color: var(--companion-wine);
    background: #fff;
    font: 700 .9rem/1.1 Arial, sans-serif;
    text-decoration: none;
    cursor: pointer;
}
.companion-save.is-saved,
.companion-primary-link { color: #fff; background: var(--companion-wine); }
.companion-inline-actions { margin-bottom: .3rem; }
.companion-earlier { margin-top: 1.5rem; }
.companion-earlier summary { min-height: 44px; color: var(--companion-wine); font-weight: 800; cursor: pointer; }

.companion-announcement { position: relative; margin-bottom: 1rem; padding: 1.4rem 1.5rem; border-left: .45rem solid #6f6661; }
.companion-announcement.is-important { border-left-color: var(--companion-gold); }
.companion-announcement.is-emergency { border-left-color: #bb1e2f; background: #fff5f5; }
.companion-announcement-priority { color: var(--companion-wine); font-size: .72rem; font-weight: 900; letter-spacing: .1em; text-transform: uppercase; }
.companion-announcement h3 { margin: .35rem 0; }

.companion-resource-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.companion-resource {
    position: relative;
    display: flex;
    min-height: 84px;
    align-items: center;
    gap: 1rem;
    padding: 1rem;
    border: 1px solid var(--companion-border);
    border-radius: .7rem;
    color: var(--companion-ink);
    background: #fff;
    font: inherit;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
}
.companion-resource > i { width: 2rem; color: var(--companion-wine); font-size: 1.5rem; text-align: center; }
.companion-resource span { display: flex; flex-direction: column; }
.companion-resource small { margin-top: .25rem; color: var(--companion-muted); }
.companion-emergency-link { border-color: #bb1e2f; }
.companion-emergency-link > i { color: #bb1e2f; }

.companion-dialog { width: min(34rem, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; border: 0; border-top: .45rem solid var(--companion-gold); border-radius: .8rem; color: var(--companion-ink); background: #fff; }
.companion-dialog::backdrop { background: rgba(24, 8, 13, .72); }
.companion-dialog form { padding: 1.75rem; }
.companion-dialog-close { float: right; width: 44px; height: 44px; border: 0; color: var(--companion-wine); background: transparent; font-size: 2rem; cursor: pointer; }

.pwa-actions { bottom: calc(5.7rem + env(safe-area-inset-bottom)); }

@media (min-width: 901px) {
    body { padding-bottom: 0; }
    .companion-bottom-nav { display: none; }
    .pwa-actions { bottom: 1rem; }
}

@media (max-width: 600px) {
    .companion-event-card { grid-template-columns: 1fr; }
    .companion-event-time { padding: .75rem 1rem; }
    .companion-resource-grid { grid-template-columns: 1fr; }
    .companion-card-actions > *, .companion-inline-actions > * { flex: 1 1 auto; }
}

@media (prefers-reduced-motion: reduce) {
    .companion-bottom-nav, .companion-dialog { scroll-behavior: auto; }
}
