@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@600;700;800&display=swap');
:root{--ink:#102b2a;--green:#164b47;--lime:#dfff72;--cream:#f4f2e9;--paper:#fffef9;--line:#dcded3;--muted:#74807b;--danger:#a54b43;--orange:#edae75}*{box-sizing:border-box}html{background:var(--cream)}body{margin:0;color:var(--ink);font-family:'DM Sans',sans-serif;background:var(--cream)}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #a9c747;outline-offset:2px}.app-shell{min-height:100vh;display:grid;grid-template-columns:238px minmax(0,1fr)}.sidebar{background:var(--green);color:#fff;padding:30px 22px 22px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font:800 22px/1 'Manrope',sans-serif;letter-spacing:-.8px}.brand>span{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--lime);color:var(--ink);font-size:18px;box-shadow:inset 0 0 0 5px rgba(16,43,42,.12)}.brand.dark{color:var(--ink);margin-bottom:46px}.sidebar nav{margin-top:55px;display:grid;gap:8px}.sidebar nav a{color:rgba(255,255,255,.68);padding:13px 14px;border-radius:10px;text-decoration:none;font-size:14px}.sidebar nav a:hover,.sidebar nav a.active{color:#fff;background:rgba(255,255,255,.11)}.sidebar nav i{display:inline-block;width:28px;font-style:normal;font-size:18px}.fair-play{margin-top:auto;border:1px solid rgba(255,255,255,.14);border-radius:13px;padding:15px;display:flex;gap:10px;font-size:12px}.fair-play>b{color:var(--lime)}.fair-play span,.fair-play strong,.fair-play small{display:block}.fair-play small{color:rgba(255,255,255,.6);margin-top:3px;line-height:1.4}.profile{margin-top:17px;padding-top:18px;border-top:1px solid rgba(255,255,255,.14);display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px}.avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#e7ded0;color:var(--ink);font-size:11px;font-weight:800;font-style:normal}.avatar.large{width:46px;height:46px;font-size:13px}.profile strong,.profile small{display:block}.profile strong{font-size:12px}.profile small{color:rgba(255,255,255,.55);font-size:10px;margin-top:3px}.profile>a{color:#fff;text-decoration:none}.content{min-width:0;padding:33px 40px 50px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:30px}.eyebrow{color:#87928d;letter-spacing:1.6px;font-weight:800;font-size:10px;margin:0 0 7px}.topbar h1{font:800 32px/1.08 'Manrope',sans-serif;letter-spacing:-1.4px;margin:0}.date-chip,.admin-badge{padding:9px 12px;border:1px solid var(--line);background:rgba(255,255,255,.55);border-radius:999px;font-size:11px;font-weight:700}.admin-badge{background:var(--lime);border-color:transparent}.flash{display:flex;align-items:center;gap:9px;background:#eaf7ba;padding:12px 14px;border-radius:11px;margin:0 0 20px;font-size:12px}.flash>span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:var(--ink);color:#fff}.flash.error{background:#f9ddd9}.panel{background:var(--paper);border:1px solid rgba(16,43,42,.08);border-radius:18px;box-shadow:0 15px 45px rgba(29,51,47,.05)}.booking-layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:25px;align-items:start}.booking-panel{padding:22px}.facility-switch{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:5px;background:#eeede5;border-radius:14px}.facility-switch>a{border:1px solid transparent;display:flex;gap:12px;align-items:center;padding:13px;border-radius:10px;color:#6c7772;text-decoration:none}.facility-switch>a.active{background:var(--paper);border-color:rgba(16,43,42,.08);color:var(--ink);box-shadow:0 4px 15px rgba(29,51,47,.07)}.facility-switch strong,.facility-switch small{display:block}.facility-switch strong{font-size:12px}.facility-switch small{font-size:9px;color:#8b938f;margin-top:3px}.sport-symbol{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;color:var(--ink)}.sport-symbol.tennis{background:var(--lime);font-size:16px}.sport-symbol.squash{background:#f2c89f;font-size:11px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:27px 3px 16px}.section-heading h2,.panel-heading h2{font:800 19px/1.15 'Manrope',sans-serif;margin:0;letter-spacing:-.5px}.legend{display:flex;gap:13px;color:#89918d;font-size:9px}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:7px;height:7px;border-radius:50%}.legend .free{background:var(--lime)}.legend .booked{background:#c9ccc4}.day-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:20px}.day{min-width:0;border:1px solid var(--line);color:#727c77;padding:9px 4px;border-radius:10px;text-align:center;text-decoration:none}.day small,.day strong{display:block}.day small{font-size:8px;text-transform:uppercase;letter-spacing:.5px}.day strong{margin-top:4px;font:800 15px/1 'Manrope',sans-serif}.day.active{background:var(--ink);color:#fff;border-color:var(--ink)}.slot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.slot{position:relative;min-height:69px;border:1px solid var(--line);border-radius:11px;text-align:left;background:#fbfbf7}.slot>strong,.slot>small,.slot button>strong,.slot button>small{display:block}.slot>strong,.slot button>strong{font:800 15px/1 'Manrope',sans-serif}.slot>small,.slot button>small{margin-top:7px;color:#89918d;font-size:8px;letter-spacing:.4px;text-transform:uppercase}.slot.booked{padding:11px 12px;color:#9ba29e;background:#f0f0eb}.slot.mine{color:var(--ink);background:#edf4dc;border-color:#c5d594}.slot.available{padding:0}.slot.available button{border:0;background:transparent;width:100%;height:100%;min-height:67px;padding:11px 12px;text-align:left;cursor:pointer;color:var(--ink)}.slot.available:hover{border-color:#8aa42d;background:#f8ffe5;transform:translateY(-1px)}.slot.available i{position:absolute;top:10px;right:10px;color:#7b882f;font-style:normal}.upcoming-panel{padding:22px}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px}.panel-heading p{color:var(--muted);font-size:11px;margin:5px 0 0}.count-pill{display:grid;place-items:center;min-width:27px;height:27px;padding:0 8px;border-radius:999px;background:var(--ink);color:#fff;font-size:10px}.upcoming-card{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:13px;padding:16px 16px 14px 20px;margin-bottom:10px}.upcoming-card:before{content:'';position:absolute;left:0;inset-block:0;width:5px;background:var(--lime)}.upcoming-card.squash:before{background:var(--orange)}.upcoming-card p{color:#7f8c45;font-size:8px;font-weight:900;letter-spacing:1.3px;margin:0 0 6px}.upcoming-card h3{font:800 14px/1.2 'Manrope',sans-serif;margin:0}.upcoming-card span{display:block;color:#7e8984;margin-top:10px;font-size:9px}.empty-state{text-align:center;border:1px dashed var(--line);border-radius:13px;padding:28px 16px;color:#7b8580}.empty-state b{font-size:30px}.empty-state h3{color:var(--ink);margin:8px 0 3px}.empty-state p{font-size:10px;margin:0;line-height:1.5}.rules{margin-top:18px;padding:15px;border-radius:12px;background:var(--cream);font-size:10px}.rules p{color:var(--muted);line-height:1.5;margin:5px 0 0}.primary-button,.secondary-button{border:0;border-radius:9px;background:var(--ink);color:#fff;padding:12px 16px;font-size:11px;font-weight:800;cursor:pointer;display:flex;justify-content:space-between;gap:22px;text-decoration:none}.primary-button.small{padding:10px 13px}.secondary-button{background:#e8e9df;color:var(--ink);display:block}.admin-tabs{display:flex;gap:7px;border-bottom:1px solid var(--line);margin:-5px 0 24px}.admin-tabs a{padding:12px 16px;text-decoration:none;color:#77827d;font-size:12px;font-weight:700;border-bottom:2px solid transparent}.admin-tabs a.active{color:var(--ink);border-color:var(--ink)}.admin-tabs b{display:inline-grid;place-items:center;margin-left:5px;width:19px;height:19px;background:#e4a49c;color:#6b211c;border-radius:50%;font-size:9px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin-bottom:23px}.stat-grid article{background:var(--paper);border:1px solid rgba(16,43,42,.08);border-radius:15px;padding:20px}.stat-grid span,.stat-grid strong,.stat-grid a{display:block}.stat-grid span{color:var(--muted);font-size:10px}.stat-grid strong{font:800 31px 'Manrope',sans-serif;margin:7px 0}.stat-grid a{font-size:9px;color:#5d7123;text-decoration:none}.content>.panel{padding:24px}.table-wrap{overflow:auto;margin:0 -24px -24px}table{border-collapse:collapse;width:100%;font-size:11px}th{text-align:left;background:#f5f4ed;color:#89928e;font-size:8px;text-transform:uppercase;letter-spacing:.8px;padding:11px 17px}td{border-top:1px solid var(--line);padding:13px 17px;white-space:nowrap}td strong,td small{display:block}td small{color:#8b948f;margin-top:3px}.status{display:inline-block;border-radius:999px;padding:5px 8px;background:#ecece5;color:#6f7773;font-size:8px;font-weight:800;text-transform:uppercase;letter-spacing:.4px}.status.approved,.status.active{background:#eaf3cc;color:#52661f}.status.pending{background:#fff0c5;color:#7d5b11}.status.suspended,.status.cancelled,.status.rejected{background:#f5dddd;color:#873f38}.text-button{border:0;background:transparent;text-decoration:underline;cursor:pointer;font-size:9px}.danger{color:var(--danger)}.empty-cell{text-align:center!important;color:var(--muted);padding:30px!important}.resident-cards{display:grid;gap:9px}.resident-card{display:grid;grid-template-columns:auto 1fr auto auto;gap:13px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:13px}.resident-card h3{font:800 13px 'Manrope';margin:0}.resident-card p{font-size:10px;color:var(--muted);margin:3px 0}.resident-card small{font-size:8px;color:#929a96}.resident-actions form{display:flex;gap:5px}.resident-actions button{border:0;border-radius:7px;padding:8px 10px;font-size:9px;font-weight:800;cursor:pointer}.resident-actions .approve{background:var(--ink);color:#fff}.resident-actions .suspend,.resident-actions .reject{background:#f3e1de;color:#7f3933}.filters{display:flex;align-items:end;gap:10px;padding:14px;background:var(--cream);border-radius:11px;margin-bottom:17px}.filters label{display:grid;gap:5px;color:#6f7b75;font-size:8px;font-weight:800;text-transform:uppercase}.filters input,.filters select{border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px;font-size:10px}.filters>a{font-size:9px;color:var(--muted);padding:10px}.auth-page{min-height:100vh;display:grid;place-items:center;padding:30px;background:radial-gradient(circle at 80% 10%,#e7f9a7 0,transparent 28%),var(--green)}.auth-card{width:min(430px,100%);background:var(--paper);padding:38px;border-radius:23px;box-shadow:0 35px 100px rgba(0,0,0,.24)}.auth-card.register-card,.auth-card.setup-card{width:min(570px,100%)}.auth-card h1{font:800 39px/1 'Manrope',sans-serif;letter-spacing:-1.8px;margin:0}.auth-copy{color:var(--muted);line-height:1.6;margin:14px 0 24px;font-size:12px}.stack-form{display:grid;gap:14px}.stack-form label{display:grid;gap:6px;color:#65716b;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.6px}.stack-form label small{color:#969d99;font-weight:500;text-transform:none;letter-spacing:0}.stack-form input{width:100%;border:1px solid var(--line);background:#fff;border-radius:9px;padding:12px;color:var(--ink);font-size:12px}.form-split{display:grid;grid-template-columns:1fr 1fr;gap:11px}.inline-error{background:#f9dddd;color:#7c3731;padding:11px;border-radius:8px;font-size:10px;margin-bottom:14px}.auth-link{text-align:center;color:var(--muted);font-size:10px;margin:17px 0 0}.auth-link a{color:var(--green);font-weight:800}.auth-card code{background:#ecece5;padding:2px 4px;border-radius:3px}
@media(max-width:1050px){.booking-layout{grid-template-columns:1fr}.upcoming-panel{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.upcoming-panel .panel-heading,.upcoming-panel .rules{grid-column:1/-1;margin:0}.stat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.app-shell{grid-template-columns:190px minmax(0,1fr)}.content{padding-inline:24px}.slot-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.app-shell{display:block}.sidebar{position:static;height:auto;padding:15px}.sidebar nav{margin:18px 0 0;display:flex;overflow:auto}.sidebar nav a{white-space:nowrap}.fair-play{display:none}.profile{margin-top:10px}.content{padding:24px 14px 40px}.topbar h1{font-size:27px}.date-chip{display:none}.facility-switch>a{padding:9px}.booking-panel{padding:14px}.day-strip{overflow:auto;grid-template-columns:repeat(7,58px)}.upcoming-panel{grid-template-columns:1fr}.upcoming-panel .panel-heading,.upcoming-panel .rules{grid-column:auto}.stat-grid{grid-template-columns:1fr 1fr}.content>.panel{padding:15px}.table-wrap{margin:0 -15px -15px}.resident-card{grid-template-columns:auto 1fr}.resident-card>.status,.resident-actions{grid-column:2}.filters{align-items:stretch;flex-direction:column}.admin-tabs{overflow:auto}.admin-tabs a{white-space:nowrap}.auth-page{padding:15px}.auth-card{padding:27px}.form-split{grid-template-columns:1fr}}
@media(max-width:420px){.slot-grid,.stat-grid{grid-template-columns:1fr}.facility-switch{grid-template-columns:1fr}.auth-card h1{font-size:33px}}
