/* Layout */
.wo-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1rem;
}

/* 1. Hero */
.wo-hero {
    background-color: var(--color-orange);
    color: var(--color-white);
    padding: 4rem 1rem;
    text-align: center;
}

.wo-hero h1 {
    font-size: 3rem;
    font-weight: 800;
    margin-bottom: 0.75rem;
}

.wo-hero p {
    font-size: 1.25rem;
    opacity: 0.95;
}

/* Narrow container */
.wo-inner--narrow {
    max-width: 800px;
}

/* 2. Intro */
.wo-intro {
    background-color: var(--color-white);
    padding: 2rem 1rem;
    text-align: center;
}

.wo-intro p {
    font-size: 1rem;
    line-height: 1.7;
    color: var(--color-text-muted);
    margin-bottom: 0.75rem;
}

.wo-intro p:last-child {
    margin-bottom: 0;
}

/* 3. Week Navigation */
.wo-week-nav {
    background-color: var(--color-light-grey);
    padding: 0.75rem 1rem;
    position: sticky;
    top: 0;
    z-index: 50;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}

.wo-week-nav-inner {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.wo-nav-arrow {
    font-size: 1.25rem;
    color: var(--color-black);
    text-decoration: none;
    padding: 0.5rem;
    min-width: 44px;
    min-height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.wo-nav-arrow:hover {
    color: var(--color-orange);
    text-decoration: none;
}

.wo-week-label {
    font-weight: 600;
    font-size: 1rem;
    color: var(--color-black);
}

.wo-today-btn {
    font-size: 0.85rem;
    padding: 0.35rem 0.75rem;
    background-color: var(--color-orange);
    color: var(--color-white);
    border-radius: 4px;
    text-decoration: none;
    font-weight: 600;
}

.wo-today-btn:hover {
    opacity: 0.9;
    text-decoration: none;
}

.wo-view-toggle {
    font-size: 0.85rem;
    padding: 0.35rem 0.75rem;
    background-color: var(--color-white);
    color: var(--color-black);
    border: 1px solid var(--color-border);
    border-radius: 4px;
    cursor: pointer;
    font-family: inherit;
    font-weight: 600;
}

.wo-view-toggle:hover {
    background-color: var(--color-light-grey);
}

/* 3. Calendar */
.wo-calendar {
    padding: 2rem 1rem 4rem;
}

.wo-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 0.5rem;
}

.wo-day {
    min-height: 200px;
}

.wo-day-header {
    text-align: center;
    padding: 0.5rem;
    border-bottom: 2px solid var(--color-light-grey);
    margin-bottom: 0.5rem;
}

.wo-day-name {
    display: block;
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.wo-day-date {
    display: block;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--color-black);
}

.wo-day-events {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.wo-event-card {
    display: block;
    padding: 0.6rem 0.75rem;
    border-radius: 4px;
    text-decoration: none;
    color: var(--color-white);
    transition: opacity 0.15s;
}

.wo-event-card:hover {
    opacity: 0.85;
    text-decoration: none;
}

.wo-event-card--orange { background-color: var(--color-orange); }
.wo-event-card--green { background-color: var(--color-green); }
.wo-event-card--blue { background-color: var(--color-blue); }
.wo-event-card--pink { background-color: var(--color-pink); }

.wo-event-name {
    display: block;
    font-weight: 600;
    font-size: 0.8rem;
    margin-bottom: 0.2rem;
}

.wo-event-time {
    display: block;
    font-size: 0.75rem;
    opacity: 0.9;
}

.wo-event-location {
    display: block;
    font-size: 0.7rem;
    opacity: 0.8;
}

.wo-empty-day {
    font-size: 0.8rem;
    color: var(--color-text-placeholder);
    text-align: center;
    padding: 1rem 0.5rem;
}

.wo-no-events {
    text-align: center;
    padding: 4rem 1rem;
    color: var(--color-text-muted);
    font-size: 1.1rem;
}

/* 4. List View */
.wo-list {
    padding-top: 1rem;
}

.wo-list[hidden] {
    display: none;
}

.wo-list-day {
    margin-bottom: 1.5rem;
}

.wo-list-day h3 {
    font-size: 1rem;
    color: var(--color-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--color-border);
    margin-bottom: 0.75rem;
}

.wo-list-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 0;
    text-decoration: none;
    color: var(--color-black);
    border-bottom: 1px solid var(--color-light-grey);
}

.wo-list-item:hover {
    text-decoration: none;
    background-color: var(--color-light-grey);
    margin: 0 -0.5rem;
    padding-left: 0.5rem;
    padding-right: 0.5rem;
    border-radius: 4px;
}

.wo-list-dot {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    flex-shrink: 0;
}

.wo-list-dot--orange { background-color: var(--color-orange); }
.wo-list-dot--green { background-color: var(--color-green); }
.wo-list-dot--blue { background-color: var(--color-blue); }
.wo-list-dot--pink { background-color: var(--color-pink); }

.wo-list-name {
    display: block;
    font-weight: 600;
    font-size: 0.95rem;
}

.wo-list-meta {
    display: block;
    font-size: 0.85rem;
    color: var(--color-text-muted);
}

/* Mobile */
@media (max-width: 768px) {
    .wo-hero h1 {
        font-size: 2rem;
    }

    .wo-grid {
        grid-template-columns: 1fr;
        gap: 0;
    }

    .wo-day {
        min-height: auto;
        border-bottom: 1px solid var(--color-border);
        padding-bottom: 1rem;
        margin-bottom: 1rem;
    }

    .wo-day-header {
        text-align: left;
        display: flex;
        gap: 0.5rem;
        align-items: baseline;
        border-bottom: none;
        padding: 0;
        margin-bottom: 0.5rem;
    }

    .wo-day-name {
        display: inline;
        font-size: 0.9rem;
    }

    .wo-day-date {
        display: inline;
        font-size: 0.9rem;
    }
}
