.calcard{padding:12px}
.calnav{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.calnav h2{flex:1;text-align:center;margin:0;font-size:1.15rem}
.navarrow{font-size:1.4rem;line-height:1;padding:6px 14px}
.dow,.grid7{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.dow div{text-align:center;font-size:.72rem;font-weight:700;color:var(--muted);text-transform:uppercase;padding:2px 0}
.day{position:relative;min-height:84px;border-radius:7px;padding:3px;background:#e9f7ee;border:1px solid #cde9d6;cursor:pointer;overflow:hidden;display:flex;flex-direction:column;gap:2px;touch-action:pan-y}
.day.blank{background:transparent;border:0;cursor:default}
.day .n{font-size:.8rem;font-weight:700;line-height:1.1;position:relative;z-index:1}
.day .openlbl{font-size:.66rem;color:#23794b;font-weight:700;margin-top:auto;position:relative;z-index:1}
.day.booked{background:#fff;border-color:var(--line)}
.day.past{filter:grayscale(.85);opacity:.5}
.day.today{box-shadow:0 0 0 2px var(--ink) inset}
.day.today .n::after{content:" today";font-size:.6rem;font-weight:600;color:var(--muted)}
.chip{color:#fff;border-radius:4px;padding:2px 3px;font-size:.68rem;font-weight:700;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;z-index:1}
.chip small{font-weight:600;opacity:.95}
.day .co{position:absolute;left:0;top:0;width:0;height:0;border-style:solid;border-width:26px 26px 0 0;border-color:var(--c) transparent transparent transparent;opacity:.8;z-index:0}
.day .colbl{font-size:.62rem;color:#555;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;z-index:1}
.day .co + .n{color:#fff;text-shadow:0 0 2px rgba(0,0,0,.6)}
.key{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:.8rem;color:var(--muted)}
.key .k{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:4px;border:1px solid #cde9d6}
.k.open{background:#e9f7ee}.k.booked{background:#2563eb;border-color:#2563eb}.k.past{background:#ddd;border-color:#ccc}
.k.checkout{background:linear-gradient(135deg,#2563eb 0 45%,#e9f7ee 45%)}
.legend{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.legend span{font-size:.78rem;font-weight:700;color:#fff;border-radius:999px;padding:2px 9px}
.win{padding:8px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:10px;align-items:center}
.win:last-child{border-bottom:0}
.sheetbg{position:fixed;inset:0;background:rgba(0,0,0,.35);display:flex;align-items:flex-end;justify-content:center;z-index:50}
.sheet{background:#fff;width:100%;max-width:560px;border-radius:16px 16px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));max-height:80vh;overflow:auto}
@media(min-width:700px){.sheetbg{align-items:center}.sheet{border-radius:16px}.day{min-height:96px}.chip{font-size:.78rem}.day .n{font-size:.9rem}}
.sd{border-left:5px solid var(--c);padding:8px 10px;margin:10px 0;background:#fafaf7;border-radius:6px}
.sd .who{font-weight:700}
@media(max-width:380px){.day{min-height:74px}.chip{font-size:.6rem}}
.hol{font-size:.6rem;font-weight:700;color:#8a5a00;background:#fff3d6;border-radius:3px;padding:0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative;z-index:1;line-height:1.35}
.hol.minor{color:#6b5b2e;background:#f6f0df;font-weight:600}
.chip small{display:inline}
@media(max-width:699px){
  .day{padding:2px;min-height:88px}
  .chip{white-space:normal;overflow-wrap:anywhere;font-size:.6rem;padding:2px;line-height:1.1}
  .chip small{display:block;font-size:.58rem}
  .day .colbl{white-space:normal;overflow-wrap:anywhere;font-size:.56rem}
  .hol{white-space:normal;font-size:.54rem}
  .day .openlbl{font-size:.6rem}
}
@media(max-width:699px){.hol{overflow-wrap:anywhere}.chip{letter-spacing:-.25px}}
.k.booked{background:linear-gradient(90deg,#2563eb 0 25%,#dc2626 25% 50%,#0f766e 50% 75%,#ea580c 75%);border-color:#999}
