.month-btn{font-family:var(--font-hand);font-size:var(--fs-caret-lg);border:1.5px solid var(--wisteria);color:var(--bluebell);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:34px;height:34px;transition:background .15s,color .15s;display:flex}.month-btn:hover{background:var(--wisteria);color:var(--parchment)}.month-label{font-family:var(--font-heading);font-size:var(--fs-h3);color:var(--ink);text-align:center;min-width:180px}.cal-header{grid-template-columns:repeat(7,1fr);gap:5px;margin-bottom:5px;display:grid}.cal-day-label{text-align:center;font-family:var(--font-hand);font-size:var(--fs-h5);color:var(--bluebell);padding:3px 0}.cal-grid{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.cal-cell{aspect-ratio:1;cursor:default;background:#fff6;border:1.5px solid #6579e226;justify-content:center;align-items:center;transition:border-color .15s,transform .1s;display:flex;position:relative;overflow:hidden}.cal-cell.filler{background:0 0;border-color:#0000}.cal-cell.has-entry{border-color:var(--wisteria);cursor:pointer;background:#6579e20d}.cal-cell.has-entry:hover{border-color:var(--mint);z-index:2;box-shadow:0 0 0 2px var(--mint);transform:scale(1.05)}.cal-cell.is-today{box-shadow:0 0 0 1px var(--mint)}.cal-date{font-family:var(--font-hand);font-size:var(--fs-h5);color:var(--bluebell);line-height:1;position:absolute;top:3px;left:4px}.cal-cell.has-entry .cal-date{color:var(--bluebell)}.cal-glyph{font-family:var(--font-hand);line-height:1;font-size:var(--fs-game-lg)}.cal-glyph.has{color:var(--bluebell)}.cal-glyph.empty{color:#78787847}.ecal-overlay{z-index:700;background:#28201873;justify-content:center;align-items:center;padding:18px;display:none;position:fixed;inset:0}.ecal-overlay.open{display:flex}.ecal-card{background:var(--ash);width:min(94vw,480px);max-height:92dvh;box-shadow:0 0 0 3px var(--wisteria), 0 0 0 6px var(--mint), 6px 10px 40px #0006;flex-direction:column;display:flex;position:relative;overflow:hidden}.ecal-close{z-index:3;font-size:var(--fs-close);color:var(--bluebell);cursor:pointer;background:0 0;border:none;padding:2px 6px;line-height:1;position:absolute;top:10px;right:14px}.ecal-close:hover{color:var(--rose)}.ecal-header{flex-shrink:0;justify-content:center;align-items:center;gap:20px;padding:16px 50px 10px;display:flex}.ecal-body{padding:0 18px 14px;overflow-y:auto}.ecal-loading{text-align:center;font-family:var(--font-hand);color:var(--bluebell);padding:30px 0}.ecal-daylist{padding:0 18px 18px;overflow-y:auto}.ecal-daylist-header{justify-content:space-between;align-items:baseline;gap:10px;padding:0 0 10px;display:flex}.ecal-daylist-title{font-family:var(--font-heading);font-size:var(--fs-h3);color:var(--lilac)}.ecal-daylist-back{cursor:pointer;font-family:var(--font-hand);font-size:var(--fs-h5);color:var(--lilac)}.ecal-daylist-back:hover{color:var(--bluebell)}.ecal-row{cursor:pointer;background:#6579e20f;border:1.5px solid #6579e22e;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:12px 14px;text-decoration:none;transition:border-color .12s,background .12s,transform 80ms;display:flex}.ecal-row:hover{border-color:var(--wisteria);background:#6579e21a;transform:translate(2px)}.ecal-row-name{font-family:var(--font-hand);font-size:var(--fs-h4);color:var(--ink)}.ecal-row-time{font-family:var(--font-hand);font-size:var(--fs-h5);color:var(--lilac);white-space:nowrap}.ecal-row-arrow{color:var(--bluebell);font-size:var(--fs-h5)}.ecal-empty-list{font-family:var(--font-hand);color:var(--bluebell);text-align:center;padding:30px 0}
