.calendar-book { position:relative; margin:2.5rem 0 1rem; background:#fffdf9; border:1px solid #dfcdd3; border-radius:12px 12px 22px 7px; box-shadow:0 14px 40px #60203b0c,0 5px 0 -1px #f1e7dd,0 6px 0 #dfcdd3; color:#382532; }
.calendar-binding { position:absolute; top:-14px; left:8%; right:8%; display:flex; justify-content:space-between; pointer-events:none; }
.calendar-binding i { width:11px; height:26px; background:linear-gradient(90deg,#b29ca5,#faf4f0 45%,#997b89); border:1px solid #aa909b; border-radius:8px; box-shadow:1px 2px 2px #60203b20; }
.calendar-toolbar { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:2rem 2rem 1.2rem; background:#f4e8ec; border-radius:12px 12px 0 0; }
.calendar-kicker { text-transform:uppercase; letter-spacing:.1em; font-size:.7rem; color:#765364; margin:0 0 .4rem; font-weight:700; }
.calendar-month { margin:0; font-size:clamp(1.6rem,3vw,2.3rem); color:#60203b; }
.calendar-nav { display:flex; gap:.5rem; }
.calendar-nav button,.calendar-views button { color:#60203b; background:#fffaf6; border:1px solid #cdb2be; border-radius:8px; padding:.55rem .9rem; min-height:44px; font:inherit; font-weight:600; cursor:pointer; }
.calendar-nav [data-prev],.calendar-nav [data-next] { font-size:1.7rem; line-height:1; width:44px; padding:0; }
.calendar-nav button:hover,.calendar-views button:hover { background:#e8f4c3; }
.calendar-options { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1.2rem 2rem; border-bottom:1px solid #ecdee3; }
.calendar-views { display:flex; gap:4px; }
.calendar-views [aria-pressed=true] { background:#60203b; color:white; border-color:#60203b; }
.calendar-filter { display:flex; align-items:center; gap:.75rem; font-size:.82rem; color:#68545e; }
.calendar-filter select { width:auto; min-width:180px; padding:.6rem 2rem .6rem .8rem; font-size:.85rem; min-height:44px; background:white; }
.calendar-layout { display:grid; grid-template-columns:minmax(0,1fr) 290px; }
.calendar-main { padding:1.4rem; min-width:0; }
.calendar-weekdays,.calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.calendar-weekdays span { text-align:center; font-size:.78rem; font-weight:700; color:#765364; padding:0 0 .85rem; }
.calendar-weekdays span:nth-last-child(-n+2) { color:#a06078; }
.calendar-grid { border-top:1px solid #ecdee3; border-left:1px solid #ecdee3; border-radius:8px; overflow:hidden; }
.calendar-cell { position:relative; min-width:0; }
.calendar-date { position:relative; width:100%; height:100%; min-width:0; min-height:92px; display:flex; flex-direction:column; align-items:flex-start; gap:.4rem; padding:.7rem .6rem; border:0; border-right:1px solid #ecdee3; border-bottom:1px solid #ecdee3; background:#fffdf9; color:#482234; font:inherit; cursor:pointer; text-align:left; }
.calendar-cell:nth-child(7n) .calendar-date,.calendar-cell:nth-child(7n-1) .calendar-date { background:#fbf3f4; }
.calendar-quick-event { position:absolute; left:5px; right:5px; bottom:7px; padding:4px; border:0; border-radius:4px; background:#60203b; color:white; font-family:inherit; font-size:.6rem; font-weight:600; line-height:1.3; cursor:pointer; text-align:left; max-height:36px; overflow:hidden; }
.calendar-quick-event:hover { background:#843452; }.calendar-quick-event:focus-visible { outline:2px solid #60203b; outline-offset:2px; }
.calendar-event-title { border:0; background:none; padding:0; color:inherit; font:inherit; text-align:left; cursor:pointer; text-decoration:underline; text-underline-offset:4px; }
.calendar-date.outside-month { color:#a99da2; background:#f7f4f0; }
.calendar-date:hover { background:#eef5db; }
.calendar-cell .calendar-date.is-selected { background:#edf5cf; box-shadow:inset 0 0 0 2px #9caf70; color:#482234; }
.calendar-date:focus-visible { outline:3px solid #60203b; outline-offset:-4px; z-index:1; }
.date-number { display:grid; place-items:center; min-width:28px; min-height:28px; border-radius:48% 52% 45% 55%; font-size:.88rem; font-weight:600; }
.is-today .date-number { background:#60203b; color:#fff; transform:rotate(-5deg); }
.date-event-title { font-size:.62rem; font-weight:600; line-height:1.3; width:100%; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.date-dots { display:flex; gap:3px; margin-top:auto; align-items:center; }
.date-dots i,.legend-event { width:5px; height:5px; border-radius:50%; background:#9b4869; }
.date-dots b { font-size:.6rem; }
.calendar-legend { display:flex; align-items:center; flex-wrap:wrap; gap:.5rem; font-size:.7rem; color:#766970; margin:1rem 0; }
.legend-today,.legend-selected { width:10px; height:10px; border-radius:50%; background:#60203b; margin-left:.5rem; }
.legend-today { margin-left:0; }.legend-selected { background:#dbeaac; border:1px solid #9caf70; border-radius:2px; }
.calendar-summary { font-size:.8rem; color:#765364; margin:1rem 0 0; line-height:1.6; }
.calendar-day-panel { padding:1.8rem 1.4rem; border-left:1px solid #ecdee3; background:#fff9f0; }
.calendar-day-panel h3 { font-size:1.6rem; color:#60203b; margin:.8rem 0 .2rem; }
.calendar-selected-weekday { font-size:.8rem; color:#766970; }
.calendar-empty { border-top:1px dashed #d8bec8; margin-top:1.5rem; padding-top:1.5rem; }
.calendar-empty svg,.calendar-list-empty svg { width:44px; height:44px; color:#997283; transform:rotate(-8deg); margin-bottom:1rem; }
.calendar-empty h4,.calendar-list-empty h4 { font-family:var(--handwriting); color:#60203b; font-size:1rem; margin:.6rem 0; }
.calendar-empty p,.calendar-empty a { font-size:.82rem; line-height:1.7; }.calendar-empty a { color:#60203b; text-decoration:underline; text-underline-offset:3px; }
.calendar-bottom { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem 2rem; border-top:1px solid #ecdee3; }
.calendar-handnote { display:flex; align-items:center; gap:.6rem; color:#765364; font: .85rem var(--handwriting); }.calendar-handnote svg { width:26px; height:26px; flex-shrink:0; }
.calendar-bottom a { font-size:.8rem; color:#60203b; font-weight:600; }
.calendar-event { border-top:1px dashed #d8bec8; padding:1.25rem 0; }.calendar-event h4 { font-size:1.05rem; color:#60203b; margin:.5rem 0; }.calendar-event p { font-size:.85rem; line-height:1.6; }.calendar-event .calendar-event-meta { font-size:.75rem; color:#766970; }.calendar-event-type { display:inline-block; background:#e7efcc; border-radius:5px; padding:.2rem .5rem; color:#526036; }.calendar-event .format-link { font-size:.75rem; }.calendar-event .text-link { display:block; margin-top:.8rem; font-size:.8rem; }
.calendar-list-empty { padding:3rem 1rem; text-align:center; }.calendar-list-empty svg { display:block; margin:0 auto 1.5rem; }.calendar-list-empty p { font-size:.9rem; line-height:1.6; }
.calendar-list-entry { display:flex; gap:1rem; align-items:flex-start; }.calendar-list-entry>button { flex:0 0 62px; background:#f4e8ec; border:0; border-radius:8px; color:#60203b; padding:.8rem .3rem; margin-top:1rem; cursor:pointer; }.calendar-list-entry strong { display:block; font-size:1.5rem; }.calendar-list-entry span { font-size:.65rem; }.calendar-list-entry .calendar-event { flex:1; min-width:0; }
.calendar-month-view[hidden],.calendar-list[hidden] { display:none; }
body[data-page=events] .page-hero { padding-bottom:0; }
body[data-page=events] .page-hero .hero-grid { grid-template-columns:1fr; }
body[data-page=events] .page-hero .hero-text { max-width:750px; }
body[data-page=events] .page-hero h1 { font-size:clamp(2.2rem,4vw,3.6rem); line-height:1.1; margin-bottom:24px; }
body[data-page=events] .page-hero .hand-note { margin-bottom:18px; }
@media(max-width:1000px) { .calendar-layout { grid-template-columns:minmax(0,1fr) 240px; }.calendar-date { min-height:76px; }.calendar-main { padding:1rem; }.calendar-toolbar,.calendar-options { padding-inline:1.4rem; } }
@media(max-width:750px) { .calendar-layout { grid-template-columns:1fr; }.calendar-day-panel { border-left:0; border-top:1px solid #ecdee3; }.calendar-options { flex-wrap:wrap; }.calendar-filter { flex:1; justify-content:flex-end; }.calendar-date { min-height:72px; }.calendar-bottom { flex-direction:column; align-items:flex-start; gap:.7rem; }.calendar-main { padding:1rem; } }
@media(max-width:450px) { .calendar-toolbar { padding:1.6rem .8rem 1rem; flex-wrap:wrap; }.calendar-month { font-size:1.6rem; }.calendar-nav { margin-left:auto; }.calendar-options { padding:.8rem; gap:.8rem; }.calendar-filter { flex-basis:100%; justify-content:space-between; gap:.5rem; font-size:.75rem; }.calendar-filter select { min-width:0; max-width:155px; }.calendar-main { padding:.6rem; }.calendar-date { min-height:55px; padding:.35rem .1rem; align-items:center; }.date-number { min-width:26px; min-height:26px; font-size:.8rem; }.calendar-quick-event { left:4px; right:4px; bottom:4px; height:10px; padding:0; font-size:0; border-radius:3px; }.calendar-weekdays span { font-size:.7rem; }.calendar-day-panel { padding:1.3rem 1rem; }.calendar-bottom { padding:1rem; }.calendar-kicker { font-size:.6rem; }.calendar-handnote { font-size:.78rem; } }
