:root{--cal-bg:#ffffff;--cal-fg:#111827;--cal-muted:#6b7280;--cal-border:#e5e7eb;--cal-accent:#2563eb;--cal-cell-minh:92px;--cal-gap:8px;--cal-radius:10px;--cal-event-radius:8px;--cal-font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif}.calendar{font-family:var(--cal-font);color:var(--cal-fg);background:var(--cal-bg);display:grid;gap:12px}.cal-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}.cal-header .nav{display:inline-flex;align-items:center;gap:6px}.cal-header .title{text-align:center;font-weight:600;font-size:clamp(1.05rem,2.2vw,1.25rem)}.cal-header .modes{display:inline-flex;justify-content:end;gap:6px}.cal-header button{font:inherit;border:1px solid var(--cal-border);background:var(--cal-bg);color:var(--cal-fg);border-radius:8px;padding:6px 10px;line-height:1.1;cursor:pointer}.cal-header button:hover{background:color-mix(in srgb,var(--cal-fg) 6%,var(--cal-bg))}.cal-header button:focus-visible{outline:2px solid var(--cal-accent);outline-offset:2px}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--cal-gap);padding:0 2px;user-select:none}.cal-weekdays>div{text-align:center;font-size:.9rem;color:var(--cal-muted);font-weight:600}.cal-grid,.cal-week{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--cal-gap)}.cal-cell{border:1px solid var(--cal-border);border-radius:var(--cal-radius);padding:8px;min-height:var(--cal-cell-minh);display:grid;grid-template-rows:auto 1fr;background:var(--cal-bg);position:relative}.cal-today{box-shadow:inset 0 0 0 2px var(--cal-accent);border-color:var(--cal-accent)}.cal-date{font-weight:700;font-size:.95rem;line-height:1}.cal-events{margin-top:6px;display:grid;gap:6px}.cal-event{border:1px solid var(--cal-border);background:color-mix(in srgb,var(--cal-fg) 4%,var(--cal-bg));border-radius:var(--cal-event-radius);padding:6px 8px;font-size:.92rem;line-height:1.15;position:relative;pointer-events:auto}.cal-event a{color:inherit;text-decoration:none;display:block}.cal-event a:hover{text-decoration:underline}.cal-more{color:var(--cal-muted);font-size:.9rem}.cal-event--active{outline:2px solid var(--cal-accent);outline-offset:2px}.cal-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:9999;display:flex;align-items:center;justify-content:center}.cal-modal{background:var(--cal-bg);color:var(--cal-fg);width:min(92vw,740px);max-height:90vh;overflow:auto;border-radius:var(--cal-radius);box-shadow:0 12px 36px rgba(0,0,0,.28);border:1px solid var(--cal-border)}.cal-modal,.cal-modal *{box-sizing:border-box}.cal-modal-head{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--cal-border);background:var(--cal-bg)}.cal-modal-head h3{margin:0;font-size:1.05rem;font-weight:700;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-modal-close{border:0;background:0 0;color:var(--cal-fg);width:34px;height:30px;border-radius:8px;display:grid;place-items:center;cursor:pointer}.cal-modal-close:hover{background:color-mix(in srgb,var(--cal-fg) 6%,var(--cal-bg))}.cal-modal-close:focus-visible{outline:2px solid var(--cal-accent);outline-offset:2px}.cal-modal-meta{padding:10px 16px;color:var(--cal-muted);font-size:.95rem;border-bottom:1px solid var(--cal-border);background:var(--cal-bg)}.cal-modal-body{padding:16px;display:grid;gap:12px;background:var(--cal-bg)}.cal-modal-content{background:0 0;border:0;box-shadow:none}.cal-modal-content p{margin:0 0 .8em;line-height:1.55}.cal-modal-actions{display:flex;gap:10px;justify-content:flex-end;padding:12px 16px;border-top:1px solid var(--cal-border);background:var(--cal-bg)}.cal-modal-cta{font:inherit;padding:6px 12px;border-radius:8px;border:1px solid var(--cal-accent);background:var(--cal-accent);color:#fff;cursor:pointer}.cal-modal-cta:hover{filter:brightness(.95)}.cal-modal-cta:focus-visible{outline:2px solid var(--cal-accent);outline-offset:2px}.cal-weekdays,.cal-grid,.cal-week,.cal-cell,.cal-events{position:relative;z-index:1}.calendar :where(h1,h2,h3){margin:0}@media(max-width:720px){:root{--cal-cell-minh:78px}.cal-header{grid-template-columns:1fr;gap:10px}.cal-header .nav{order:2;justify-content:center}.cal-header .modes{order:3;justify-content:center}.cal-header .title{order:1}.cal-weekdays>div{font-size:.85rem}.cal-event{font-size:.9rem;padding:6px 7px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}.calendar--compact{--cal-gap:6px;--cal-cell-minh:74px}.calendar--compact .cal-header .title{font-size:clamp(1rem,2vw,1.15rem)}.calendar--compact .cal-weekdays>div{font-size:.82rem}.calendar--compact .cal-cell{padding:6px;border-radius:8px}.calendar--compact .cal-date{font-size:.85rem;font-weight:700}.calendar--compact .cal-events{margin-top:4px;gap:4px}.calendar--compact .cal-event{padding:3px 6px;font-size:.8rem;line-height:1.1;border-radius:6px}.calendar--compact .cal-event a{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar--compact .cal-more{font-size:.8rem}.calendar--dense{--cal-gap:4px;--cal-cell-minh:66px}.calendar--dense .cal-event{padding:2px 5px;font-size:.76rem}.calendar--dense .cal-events{gap:3px}.calendar--dense .cal-date{font-size:.8rem}.calendar--micro{--cal-gap:4px;--cal-cell-minh:64px}.calendar--micro .cal-header .title{font-size:clamp(.95rem,1.8vw,1.1rem)}.calendar--micro .cal-weekdays>div{font-size:.78rem}.calendar--micro .cal-cell{padding:5px;border-radius:7px}.calendar--micro .cal-date{font-size:.8rem;font-weight:700}.calendar--micro .cal-events{margin-top:3px;gap:3px}.calendar--micro .cal-event{padding:2px 5px;font-size:.75rem;line-height:1.05;border-radius:5px}.calendar--micro .cal-more{font-size:.75rem}.cal-slot{background:color-mix(in srgb,var(--cal-fg) 2%,var(--cal-bg));border-style:dashed}.calendar--micro .cal-slot{font-size:.72rem;padding:2px 4px}