body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;margin:0;background:#f5f5f5;color:#161616}
header{display:flex;justify-content:space-between;padding:16px 20px;background:#111;color:#fff;position:sticky;top:0}
header nav a{color:#fff;margin-left:18px;text-decoration:none}main{max-width:1100px;margin:auto;padding:20px}
h1{margin-top:8px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.card{display:block;background:#fff;padding:16px;border-radius:12px;text-decoration:none;color:inherit;box-shadow:0 1px 4px #0002}
.status{display:inline-block;padding:5px 9px;border-radius:999px;font-weight:700;font-size:12px}
.pending{background:#ffe79a}.confirmed{background:#b9efc8}.completed{background:#ddd}.cancelled{background:#ffc2c2}
textarea{width:100%;min-height:360px;font:15px/1.45 ui-monospace,monospace;padding:12px;box-sizing:border-box}
button,select{font-size:16px;padding:10px 14px;margin:8px 8px 8px 0}
.calendar-wrap{overflow:auto;background:#fff}.calendar{border-collapse:collapse;min-width:1200px;width:100%}
.calendar th,.calendar td{border:1px solid #ddd;padding:6px;text-align:center;min-width:70px}.calendar th:first-child{position:sticky;left:0;background:#fff;z-index:1}
.cal-booking{display:block;text-decoration:none;color:#111;border-radius:6px;padding:4px;font-size:12px}

.privacy-note {
    font-size: 0.9rem;
    opacity: 0.75;
}
.login-card{max-width:420px;margin:10vh auto;padding:24px;background:#fff;border-radius:14px;box-shadow:0 2px 16px rgba(0,0,0,.08)}
.login-card label{display:block;margin:14px 0}.login-card input{box-sizing:border-box;width:100%;padding:12px;margin-top:6px;font-size:16px}.login-error{padding:10px;background:#fee;border-radius:8px}.logout-form{display:inline;margin-left:12px}.logout-form button{padding:6px 10px}
.blocked{background:#d9c6ff}.error-box{padding:10px 12px;background:#fee;border-radius:8px;border:1px solid #e9a0a0}.page-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.button-link{display:inline-block;background:#111;color:#fff;text-decoration:none;padding:10px 14px;border-radius:8px}.panel{background:#fff;padding:18px;border-radius:12px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.form-grid label{display:block;font-weight:600}.form-grid input,.form-grid select{width:100%;box-sizing:border-box;margin-top:6px;padding:10px;font-size:16px}.form-grid .wide{grid-column:1/-1}.muted{font-weight:400;opacity:.7}.danger{background:#fff;border:1px solid #b44;color:#922;border-radius:7px}
.public-page{background:#fff}.availability-widget{max-width:720px;margin:auto;padding:12px 14px}.availability-head{display:grid;grid-template-columns:48px 1fr 48px;align-items:center;text-align:center;font-size:18px;gap:8px}.month-nav{display:flex;align-items:center;justify-content:center;min-height:44px;border:1px solid #ddd;border-radius:8px;text-decoration:none;color:#111;font-size:30px}.availability-legend{display:flex;justify-content:center;gap:20px;flex-wrap:wrap;margin:14px 0;font-size:14px}.legend-dot{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:6px;vertical-align:-1px}.legend-dot.available,.day.available{background:#dff4e5}.legend-dot.unavailable,.day.unavailable{background:#eee}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.weekday-row{font-size:12px;font-weight:700;text-align:center;margin-bottom:5px}.day{min-height:68px;border-radius:8px;padding:7px;box-sizing:border-box;display:flex;flex-direction:column;justify-content:space-between;text-decoration:none;color:#111;border:1px solid transparent}.day span{font-weight:700}.day small{font-size:11px}.day.available{border-color:#9fd5ad}.day.unavailable{color:#666}.day.outside{opacity:.25;background:#fafafa}.availability-note{text-align:center;margin-top:14px;font-size:14px}.public-page main{max-width:720px}
@media(max-width:700px){header{align-items:flex-start;gap:10px}header nav{display:flex;flex-wrap:wrap;gap:8px}header nav a{margin-left:0}.logout-form{margin-left:0}.form-grid{grid-template-columns:1fr}.day{min-height:58px;padding:5px}.day small{font-size:9px}.availability-widget{padding:8px}}
