:root{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#173d2f;background:#edf2ee;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(circle at 90% 0,#fff7e6 0,transparent 30%),#edf2ee}button,input{font:inherit}button:focus-visible,input:focus-visible{outline:3px solid #d59832;outline-offset:2px}.center{min-height:100vh;display:grid;place-items:center}.brand{display:flex;align-items:center;gap:10px;font-weight:800}.brand span{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;color:#fff;background:#214f3e;font:22px Georgia,serif}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(100%,520px);padding:40px;border:1px solid #d6dfd8;border-radius:28px;background:#fff;box-shadow:0 28px 80px #173d2f1a}.login-card .brand{justify-content:center}.login-icon{width:64px;height:64px;margin:32px auto 16px;display:grid;place-items:center;border-radius:20px;color:#8b5918;background:#fff0cf}.login-icon svg{width:32px;height:32px}h1{margin:0;font:clamp(36px,6vw,56px)/1.05 Georgia,serif}.login-card h1{text-align:center}.lead,.privacy,.muted{color:#63736c;line-height:1.55}.lead{text-align:center;font-size:18px}.privacy{margin:28px 0 0;font-size:13px;text-align:center}form{display:grid;gap:12px}label{display:grid;gap:7px;font-weight:700}input{width:100%;min-height:52px;padding:12px 14px;border:1.5px solid #b9c8bf;border-radius:12px;background:#fbfcfb;color:#173d2f}.code{text-align:center;font-size:30px;font-weight:800;letter-spacing:.35em}.primary{min-height:52px;border:0;border-radius:12px;padding:13px 18px;display:inline-flex;align-items:center;justify-content:center;gap:9px;color:#fff;background:#214f3e;font-weight:800;cursor:pointer}.primary:hover{background:#173d2f}.primary svg,.logout svg{width:19px}.text-button,.logout{border:0;background:transparent;color:#214f3e;cursor:pointer}.error{color:#a4362a}.success{color:#21724c}.portal-shell header{height:76px;padding:0 max(24px,calc((100vw - 1100px)/2));display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid #dce4de}.logout{display:flex;gap:8px;align-items:center}.portal-shell main{width:min(calc(100% - 40px),1100px);margin:36px auto 72px}.hero{position:relative;padding:44px;border-radius:26px;color:#fff;background:linear-gradient(125deg,#173d2f,#2f6752);overflow:hidden}.hero:after{content:"";position:absolute;width:300px;height:300px;right:-90px;top:-150px;border-radius:50%;background:#f2b64c33}.hero p{margin:0 0 12px;color:#c9ded5;font-weight:700}.hero h1{max-width:65%}.points{position:absolute;right:44px;bottom:44px;display:grid;text-align:right}.points strong{font-size:42px}.points span{color:#d8e6df}.panel{margin-top:24px;padding:36px;border:1px solid #d6dfd8;border-radius:22px;background:#fff;display:grid;grid-template-columns:280px 1fr;gap:48px}.panel h2{margin:0;font:32px Georgia,serif}.eyebrow{margin:0 0 8px;color:#86500f;text-transform:uppercase;letter-spacing:.1em;font-weight:800;font-size:12px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.read-only input{background:#edf2ee;color:#46564f}.save{justify-self:start;margin-top:8px}@media(max-width:760px){.login-card{padding:28px}.portal-shell main{width:min(calc(100% - 24px),1100px);margin-top:16px}.hero{padding:30px}.hero h1{max-width:100%}.points{position:static;margin-top:32px;text-align:left}.panel{padding:26px;grid-template-columns:1fr;gap:20px}.grid{grid-template-columns:1fr}.portal-shell header{padding:0 16px}.logout{font-size:0}.logout svg{width:22px;height:22px}}.tabs{display:flex;gap:8px;margin:22px 0}.tabs button{min-height:46px;padding:10px 16px;border:1px solid #ccd8d0;border-radius:12px;display:flex;align-items:center;gap:8px;color:#50645c;background:#fff;font-weight:750;cursor:pointer}.tabs button.active{color:#fff;background:#214f3e;border-color:#214f3e}.tabs svg{width:18px}.list-panel{padding:36px;border:1px solid #d6dfd8;border-radius:22px;background:#fff}.list-panel h2{margin:0 0 26px;font:32px Georgia,serif}.empty{padding:28px;border-radius:14px;background:#f2f5f3;color:#63736c}.visit{padding:20px 0;border-top:1px solid #e3e9e5;display:grid;grid-template-columns:1fr 1.3fr;gap:24px}.visit>div:first-child{display:grid;align-content:start;gap:6px}.visit span,.visit small{color:#63736c}.receipt-list{display:grid;gap:8px}.receipt-list button{padding:12px;border:1px solid #d6dfd8;border-radius:12px;display:flex;align-items:center;gap:12px;text-align:left;color:#173d2f;background:#fbfcfb;cursor:pointer}.receipt-list button span{display:grid;color:#173d2f}.receipt-list svg{width:20px}.expiry{margin-bottom:18px;padding:16px;border-radius:14px;display:flex;align-items:center;gap:12px;color:#7b4e13;background:#fff1d4}.expiry svg{fill:#d59832;color:#d59832}.ledger>div{padding:15px 2px;border-top:1px solid #e3e9e5;display:flex;justify-content:space-between;align-items:center}.ledger span{display:grid}.ledger small{margin-top:4px;color:#718078}.ledger b{font-size:20px}.positive{color:#21724c}.negative{color:#a4362a}.modal-backdrop{position:fixed;inset:0;z-index:20;padding:24px;display:grid;place-items:center;background:#10241dcc}.receipt-modal{width:min(100%,560px);max-height:calc(100vh - 48px);overflow:auto;padding:34px;border-radius:20px;background:#fff;box-shadow:0 30px 100px #0006}.close{float:right;border:0;color:#214f3e;background:transparent;cursor:pointer}.receipt-head{text-align:center}.receipt-head svg{width:34px;height:34px}.receipt-head p{margin:10px 0 5px;font-weight:800}.receipt-head h2{margin:0;font:30px Georgia,serif}.receipt-head span{color:#718078}.receipt-lines{margin-top:28px}.receipt-lines>div{padding:12px 0;border-top:1px dashed #ccd8d0;display:flex;justify-content:space-between;gap:20px}.receipt-total{padding:18px 0;border-top:2px solid #173d2f;display:flex;justify-content:space-between;font-size:24px}.receipt-total strong{font-family:Georgia,serif}@media(max-width:760px){.tabs{overflow-x:auto}.tabs button{white-space:nowrap}.list-panel{padding:24px}.visit{grid-template-columns:1fr}.modal-backdrop{padding:10px}.receipt-modal{max-height:calc(100vh - 20px);padding:24px}}
