.cal-wrap { margin: 0 0 24px; }
.cal-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin: 0 0 14px;
}
.cal-top h1 { margin: 0; }
.cal-nav { display: flex; align-items: center; gap: 8px; }
.cal-nav button {
    border: 1px solid #e5ddd2;
    background: #fff;
    border-radius: 10px;
    padding: 7px 12px;
    cursor: pointer;
    font: 650 14px Georgia, "Times New Roman", serif;
    color: #2a241c;
}
.cal-nav button:hover { background: #faf7f2; }
.cal-weeklabel {
    min-width: 11rem;
    text-align: center;
    font: 700 17px/1.2 Georgia, "Times New Roman", serif;
    color: #2a241c;
}
.cal-legend { display: flex; flex-wrap: wrap; gap: 10px 16px; margin: 0 0 14px; font-size: 13px; color: #5c564e; }
.cal-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 6px; vertical-align: -1px; }
.cal-scroll { overflow-x: auto; border: 1px solid #ece4d8; border-radius: 16px; background: #fff; }
.cal-grid {
    display: grid;
    grid-template-columns: 64px repeat(7, minmax(110px, 1fr));
    min-width: 920px;
}
.cal-head {
    position: sticky;
    top: 0;
    z-index: 2;
    background: #fffdf8;
    border-bottom: 1px solid #ece4d8;
    padding: 10px 6px;
    text-align: center;
}
.cal-head b { display: block; font: 700 13px Georgia, "Times New Roman", serif; color: #2a241c; }
.cal-head span { display: block; margin-top: 2px; font-size: 18px; color: #6d655c; }
.cal-head.is-today span {
    display: inline-flex;
    width: 30px;
    height: 30px;
    margin: 4px auto 0;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: #2a241c;
    color: #fffdf8;
}
.cal-time {
    padding: 0 8px 0 0;
    text-align: right;
    font-size: 11px;
    color: #9a9186;
    transform: translateY(-7px);
}
.cal-cell {
    position: relative;
    border-left: 1px solid #f0eae2;
    border-bottom: 1px solid #f4eee6;
    min-height: 48px;
}
.cal-cell.is-half { min-height: 48px; }
.cal-col { position: relative; }
.cal-ev {
    position: absolute;
    left: 3px;
    right: 3px;
    border-radius: 8px;
    border-left: 4px solid;
    padding: 5px 7px 6px;
    font-size: 12px;
    line-height: 1.25;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(42,36,28,.06);
    z-index: 1;
}
.cal-ev b { display: block; font-size: 12px; }
.cal-ev a { color: inherit; text-decoration: underline; word-break: break-all; }
.cal-empty { padding: 18px; color: #6d655c; }
.cal-note { margin: 12px 0 0; font-size: 13px; color: #6d655c; }
