:root{--bg: #f7f5f0;--bg-card: #ffffff;--bg-header: #1b2f4a;--bg-header-hover: #243d5e;--color-brand: #c96e38;--color-brand-dark: #a85727;--color-text: #1e1b17;--color-muted: #6d6057;--color-border: #e2dcd4;--color-border-lt: #ede9e3;--color-error: #c0392b;--color-success: #27ae60;--chip-pool: #0077c2;--chip-pb_north: #2e8b5e;--chip-pb_south: #45a876;--chip-tennis: #d97920;--chip-complex: #7b5ea7;--radius-sm: 4px;--radius: 8px;--radius-lg: 16px;--shadow-sm: 0 1px 3px rgba(0,0,0,.1);--shadow: 0 2px 8px rgba(0,0,0,.12);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:16px;line-height:1.5;color:var(--color-text);-webkit-font-smoothing:antialiased}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);min-height:100vh}#root,.app{display:flex;flex-direction:column;min-height:100vh}.container{max-width:1100px;margin:0 auto;padding:0 16px;width:100%}.site-header{background:var(--bg-header);color:#fff;padding:14px 0;box-shadow:var(--shadow);position:sticky;top:0;z-index:100}.header-inner{display:flex;align-items:baseline;gap:12px}.header-title{font-size:1.15rem;font-weight:700;letter-spacing:-.01em;white-space:nowrap}.header-subtitle{font-size:.8rem;opacity:.6;white-space:nowrap}.site-main{flex:1;padding:32px 16px}.chip{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);font-size:.72rem;font-weight:600;color:#fff;white-space:nowrap;line-height:1.4}.chip-pool{background:var(--chip-pool)}.chip-pb_north{background:var(--chip-pb_north)}.chip-pb_south{background:var(--chip-pb_south)}.chip-tennis{background:var(--chip-tennis)}.chip-complex{background:var(--chip-complex)}.chip--conflict{background:var(--color-error)}.card{background:var(--bg-card);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;border-radius:var(--radius);border:none;cursor:pointer;font-family:inherit;font-size:.9rem;font-weight:600;transition:background .15s,opacity .15s;text-decoration:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-brand);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-brand-dark)}.btn-secondary{background:transparent;color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-border-lt)}.btn-danger{background:var(--color-error);color:#fff}.header-logo{height:32px;width:auto;border-radius:4px;flex-shrink:0}.calendar-layout{display:grid;grid-template-columns:1fr 300px;gap:20px;align-items:start}.calendar-col{min-width:0}.detail-col{position:sticky;top:68px}.month-calendar{background:var(--bg-card);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px}.month-nav{display:flex;align-items:center;gap:8px;margin-bottom:10px}.month-label{font-size:1.1rem;font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:8px}.cal-spinner{display:inline-block;width:12px;height:12px;border:2px solid var(--color-border);border-top-color:var(--color-brand);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.nav-btn{background:none;border:1px solid var(--color-border);border-radius:var(--radius-sm);width:38px;height:38px;font-size:1.2rem;line-height:1;cursor:pointer;color:var(--color-text);display:flex;align-items:center;justify-content:center;transition:background .1s,border-color .1s}.nav-btn:hover{background:var(--color-border-lt);border-color:var(--color-muted)}.cal-dow-header{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}.cal-dow{text-align:center;font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--color-muted);padding:4px 0}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.cal-cell{background:var(--bg-card);border:1px solid var(--color-border);border-radius:var(--radius-sm);min-height:80px;padding:5px 6px;cursor:pointer;display:flex;flex-direction:column;gap:3px;transition:background .1s,border-color .1s;outline:none}.cal-cell:focus-visible{outline:2px solid var(--color-brand);outline-offset:-1px}.cal-cell:hover:not(.other-month){background:#f5f0e8}.cal-cell.other-month{background:transparent;border-color:transparent;cursor:default;pointer-events:none;opacity:.35}.cal-cell.is-today{background:#fffbf5;border-color:#c1612f}.cal-cell.is-today .day-num{background:#c1612f;color:#fff;border-radius:50%;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.75rem}.cal-cell.is-selected{background:#fef2e6;border-color:var(--color-brand);box-shadow:0 0 0 2px var(--color-brand)}.cal-cell.is-holiday{background-color:#fef5ee;background-image:repeating-linear-gradient(-45deg,transparent 0,transparent 5px,rgba(200,70,20,.08) 5px,rgba(200,70,20,.08) 8px)}.cell-top{display:flex;align-items:flex-start;justify-content:space-between}.day-num{font-size:.8rem;font-weight:600;color:var(--color-text);line-height:1;min-width:18px}.hol-label{font-size:.5rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#a03510;line-height:1;white-space:nowrap;margin-top:2px}.cell-chips{display:flex;flex-direction:column;gap:2px;flex:1;overflow:hidden}.cell-chips .chip{font-size:.625rem;padding:3px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chip-overflow{font-size:.6rem;color:var(--color-muted);font-weight:500;padding-left:2px}.day-detail{padding:18px 20px}.day-detail--empty{color:var(--color-muted);font-size:.875rem;text-align:center;padding:32px 20px}.detail-heading{font-size:1rem;font-weight:700;color:var(--color-text);margin-bottom:10px}.detail-holiday-banner{display:inline-block;background:#fce8d5;color:#923c10;border-radius:var(--radius-sm);padding:3px 10px;font-size:.78rem;font-weight:600;margin-bottom:12px}.detail-none{color:var(--color-muted);font-size:.875rem}.detail-list{list-style:none;display:flex;flex-direction:column;gap:0}.detail-item{display:flex;flex-direction:column;gap:4px;padding:10px 0;border-bottom:1px solid var(--color-border-lt)}.detail-item:first-child{padding-top:4px}.detail-item:last-child{border-bottom:none}.detail-item .chip{align-self:flex-start}.detail-who{display:flex;align-items:baseline;gap:6px}.detail-name{font-weight:600;font-size:.875rem}.detail-lot,.detail-time{font-size:.75rem;color:var(--color-muted)}.alert-error{background:#fde8e8;border:1px solid #f5c0c0;color:var(--color-error);border-radius:var(--radius);padding:12px 16px;margin-bottom:16px;font-size:.875rem}@media (max-width: 820px){.calendar-layout{grid-template-columns:1fr}.detail-col{position:static}}@media (max-width: 640px){.header-subtitle{display:none}.site-main{padding:16px 0}.admin-tab-content,.admin-section{padding:16px}.admin-tabs-inner{padding:0 8px}.public-rules{padding:20px}.cal-cell{padding:3px 4px}.day-num{font-size:.72rem}.cal-cell.is-today .day-num{width:18px;height:18px;font-size:.68rem}.cal-dow{font-size:.62rem}.hol-label{display:none}}@media (max-width: 420px){.cal-cell{min-height:48px}.cell-chips .chip:nth-child(n+2){display:none}}.btn-reserve{margin-left:auto;font-size:.8rem;padding:7px 14px;white-space:nowrap;flex-shrink:0}.detail-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:10px}.detail-header-row .detail-heading{margin-bottom:0}.btn-detail-reserve{font-size:.75rem;padding:5px 11px;flex-shrink:0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:16px;z-index:200}.modal-box{background:var(--bg-card);border-radius:var(--radius-lg);width:100%;max-width:520px;max-height:calc(100vh - 48px);overflow-y:auto;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--color-border);position:sticky;top:0;background:var(--bg-card);z-index:1;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.modal-title{font-size:1.1rem;font-weight:700}.modal-close{background:none;border:none;font-size:1.5rem;line-height:1;cursor:pointer;color:var(--color-muted);padding:2px 6px;border-radius:var(--radius-sm);transition:background .1s,color .1s}.modal-close:hover{background:var(--color-border-lt);color:var(--color-text)}.modal-body{padding:20px 24px;flex:1;display:flex;flex-direction:column;gap:18px}.modal-footer{padding:14px 24px 20px;border-top:1px solid var(--color-border);position:sticky;bottom:0;background:var(--bg-card);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.modal-form{display:flex;flex-direction:column;gap:14px}.form-label{display:flex;flex-direction:column;gap:5px;font-size:.82rem;font-weight:600;color:var(--color-text)}.form-hint{font-weight:400;color:var(--color-muted);font-size:.75rem}.form-select,.form-input{padding:8px 10px;border:1px solid var(--color-border);border-radius:var(--radius);font-family:inherit;font-size:.875rem;color:var(--color-text);background:var(--bg);width:100%;transition:border-color .15s;-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.form-select:focus,.form-input:focus{outline:none;border-color:var(--color-brand)}.form-select:disabled{opacity:.5;cursor:not-allowed}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.already-booked{border:1px solid var(--color-border);border-radius:var(--radius);overflow:hidden}.already-booked-heading{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);padding:7px 12px;background:var(--color-border-lt);border-bottom:1px solid var(--color-border)}.already-booked-empty{padding:10px 12px;font-size:.82rem;color:var(--color-muted)}.already-booked-list{list-style:none}.already-booked-item{display:flex;align-items:center;gap:8px;padding:8px 12px;font-size:.82rem;border-bottom:1px solid var(--color-border-lt)}.already-booked-item:last-child{border-bottom:none}.ab-who{font-weight:500;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ab-time{color:var(--color-muted);white-space:nowrap;font-size:.75rem}.verdict{border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:8px}.verdict--ok{background:#edf7ed;border:1px solid #a5d6a7}.verdict--warn{background:#fff8e1;border:1px solid #ffe082}.verdict--taken{background:#fde8e8;border:1px solid #f5c0c0}.verdict-title{font-weight:700;font-size:.875rem}.verdict--ok .verdict-title{color:#1b5e20}.verdict--warn .verdict-title{color:#5c3800}.verdict--taken .verdict-title{color:var(--color-error)}.verdict-fails{list-style:none;display:flex;flex-direction:column;gap:4px;font-size:.82rem;color:#5c3800;padding-left:2px}.verdict-fails li:before{content:"• "}.verdict-review-note{font-size:.78rem;color:var(--color-muted)}.verdict-clash{display:flex;align-items:center;gap:8px;font-size:.82rem}.verdict-clash-detail{color:var(--color-muted)}.btn-full{width:100%;justify-content:center}.modal-loading{padding:48px;text-align:center;color:var(--color-muted)}.modal-box--result{padding:40px 32px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;max-width:420px}.result-icon{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2rem}.result-icon--ok{background:#edf7ed;color:#1b5e20}.result-icon--review{background:#fff8e1}.result-heading{font-size:1.2rem;font-weight:700}.result-body{font-size:.9rem;color:var(--color-muted);max-width:300px;line-height:1.5}.result-contact{background:var(--color-border-lt);border:1px solid var(--color-border);border-radius:var(--radius);padding:16px 24px;width:100%}.result-contact-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);margin-bottom:6px}.result-contact-name{font-weight:700;font-size:1rem;margin-bottom:3px}.result-contact-phone{font-size:1.1rem;color:var(--color-brand);font-weight:600}@media (max-width: 540px){.modal-box{border-radius:var(--radius)}.modal-header{padding:16px 16px 12px;border-radius:var(--radius) var(--radius) 0 0}.modal-body{padding:16px}.modal-footer{padding:12px 16px 16px}.btn-reserve{display:none}}.admin-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;color:var(--color-muted)}.admin-login,.admin-unauthorized{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);padding:24px}.admin-login-box{background:var(--bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:40px 36px;width:100%;max-width:400px}.admin-login-title{font-size:1.4rem;font-weight:700;color:var(--bg-header);margin-bottom:24px}.admin-login-sent{color:var(--color-muted);line-height:1.6}.admin-page{display:flex;flex-direction:column;min-height:100vh}.admin-header{background:var(--bg-header);color:#fff;padding:14px 24px;display:flex;align-items:center;gap:16px;position:sticky;top:0;z-index:100}.admin-header-title{font-weight:700;font-size:1rem}.admin-header-right{display:flex;align-items:center;gap:12px;margin-left:auto}.admin-header-email{font-size:.85rem;opacity:.8}.admin-main{padding:32px 24px;color:var(--color-muted)}.admin-header .btn-secondary{color:#fff;border-color:#ffffff59}.admin-header .btn-secondary:hover:not(:disabled){color:var(--bg-header)}.admin-tabs{border-bottom:2px solid var(--color-border);background:var(--bg-card);overflow-x:auto}.admin-tabs-inner{display:flex;max-width:1000px;margin:0 auto;padding:0 24px}.admin-tab{padding:12px 20px;font-size:.875rem;font-weight:500;color:var(--color-muted);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;white-space:nowrap}.admin-tab:hover{color:var(--color-text)}.admin-tab--active{color:var(--color-brand);border-bottom-color:var(--color-brand);font-weight:600}.admin-tab-content{width:1000px;max-width:calc(100vw - 32px);margin:0 auto;box-sizing:border-box;padding:32px 24px}.admin-stub{color:var(--color-muted);font-style:italic}.admin-section{width:100%;background:var(--bg-card);border:1px solid var(--color-border);border-radius:var(--radius);padding:24px;margin-bottom:24px;box-sizing:border-box}.admin-section-heading{font-size:1rem;font-weight:700;color:var(--color-text);margin-bottom:20px}.admin-section .form-label{margin-bottom:4px}.admin-section form>*+.form-label{margin-top:20px}.admin-section form>div>.form-label{margin-top:0}.admin-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:.875rem}.admin-table th{text-align:left;padding:8px 12px;font-weight:600;color:var(--color-muted);border-bottom:1px solid var(--color-border)}.admin-table td{padding:10px 12px;border-bottom:1px solid var(--color-border-lt);vertical-align:middle}.admin-table tr:last-child td{border-bottom:none}.admin-add-form{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap;align-items:flex-end}.admin-add-form .form-input{flex:1;min-width:140px}.logo-preview{display:block;width:120px;height:120px;object-fit:contain;border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:12px;background:var(--bg)}.logo-placeholder{width:120px;height:120px;border:1px dashed var(--color-border);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;color:var(--color-muted);font-size:.8rem;margin-bottom:12px}.admin-feedback{font-size:.85rem;margin-top:8px}.admin-feedback--ok{color:var(--color-success)}.admin-feedback--error{color:var(--color-error)}@media (max-width: 600px){.admin-table thead{display:none}.admin-table,.admin-table tbody,.admin-table tr,.admin-table td{display:block;width:100%}.admin-table tr{padding:12px 0;border-bottom:1px solid var(--color-border)}.admin-table td{padding:2px 0;border-bottom:none}}.badge-forced{background:var(--chip-tennis);color:#fff;font-size:.72rem;font-weight:600;padding:2px 7px;border-radius:4px}.badge-cancelled{color:var(--color-muted);font-size:.85rem}.row-cancelled td{opacity:.5}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.section-header h3{font-size:1rem;font-weight:700;color:var(--color-text);margin:0}.col-sort{background:none;border:none;cursor:pointer;font-weight:600;color:var(--color-muted);padding:8px 12px;text-align:left;font-size:.875rem}.col-sort:hover{color:var(--color-text)}.cancel-confirm{display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-size:.85rem}.cancel-confirm-buttons{display:flex;gap:6px}.cr-summary{background:var(--color-border-lt);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:9px;margin-bottom:16px}.cr-summary-row{display:flex;align-items:center;gap:10px;font-size:.875rem;color:var(--color-text)}.cr-instruction{border-left:3px solid var(--color-brand);background:#fef5ee;padding:10px 14px;border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:.875rem;line-height:1.6;color:var(--color-text);margin-bottom:20px}.cr-contact{border:1px solid var(--color-border);border-radius:var(--radius);padding:14px 16px;margin-bottom:20px}.cr-contact-label{font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);margin-bottom:6px}.cr-contact-name{font-size:.9375rem;font-weight:500;color:var(--color-text);margin-bottom:3px}.cr-contact-email{font-size:.875rem;color:var(--color-muted)}.cr-email-btn{display:flex;align-items:center;justify-content:center;gap:8px;background:#c1612f;color:#fff;text-decoration:none;border-radius:var(--radius);padding:10px 18px;font-family:inherit;font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s}.cr-email-btn:hover{background:#a85227}.btn-cancel-req{font-size:.7rem;padding:2px 8px;color:var(--color-muted);border:1px solid var(--color-border);background:none;border-radius:var(--radius-sm);cursor:pointer;margin-top:4px}.btn-cancel-req:hover{color:var(--color-error);border-color:var(--color-error)}.calendar-layout>.public-rules{grid-column:1}.public-rules{margin-top:4px;padding:24px 32px}.public-rules-heading{font-size:.95rem;font-weight:700;color:var(--color-text);margin-bottom:12px}.public-rules-list{list-style:disc;padding-left:18px;display:flex;flex-direction:column;gap:8px;font-size:.875rem;line-height:1.55;color:var(--color-text)}.public-rules-divider{border:none;border-top:1px solid var(--color-border);margin:16px 0}.public-rules-notes-heading{font-size:.875rem;font-weight:700;color:var(--color-text);margin-bottom:8px}.public-rules-notes-text{font-size:.875rem;line-height:1.6;color:var(--color-text)}.public-rules-notes-text p{margin:0 0 8px}.public-rules-notes-text p:last-child{margin-bottom:0}.public-rules-notes-text h1,.public-rules-notes-text h2,.public-rules-notes-text h3,.public-rules-notes-text h4{font-weight:700;margin:12px 0 4px;font-size:.9rem}.public-rules-notes-text ul,.public-rules-notes-text ol{padding-left:20px;margin:0 0 8px}.public-rules-notes-text li{margin-bottom:4px}.public-rules-notes-text strong{font-weight:700}.booking-homeowner-banner{font-size:.82rem;color:var(--color-muted);background:var(--color-border-lt);border-radius:var(--radius-sm);padding:6px 12px;margin-bottom:16px}.booking-lot-locked{padding:9px 12px;background:var(--color-border-lt);border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;color:var(--color-text);margin-top:4px}.header-signout{font-size:.78rem;color:#ffffffb3;background:none;border:none;cursor:pointer;padding:0;text-decoration:underline;font-family:inherit}.header-signout:hover{color:#fff}.hol-label{color:#c1612f}.cal-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:0;padding:16px 2px 0;border-top:1px solid var(--color-border-lt)}.cal-legend-item{display:flex;align-items:center;gap:6px;font-size:.75rem;color:var(--color-muted)}.cal-legend-swatch{display:block;width:12px;height:12px;border-radius:3px;flex-shrink:0}.cal-nav-instruction{flex:1;text-align:center;font-size:.72rem;color:var(--color-muted);font-style:italic;padding:0 8px}.month-nav-right{display:flex;align-items:center;gap:8px}.btn-cal-reserve{background:#c1612f;color:#fff;border:none;border-radius:var(--radius);padding:5px 12px;font-size:.8rem;font-weight:600;font-family:inherit;cursor:pointer;white-space:nowrap;transition:background .15s}.btn-cal-reserve:hover{background:#a85227}.calendar-embed{padding:24px 16px}
