:root{--ink:#2a2a1f;--dark:#191911;--cream:#f6f5ee;--paper:#fffefa;--olive:#858a70;--primary:#a5a058;--line:#d1d0b8;--muted:#69695b;--serif:'Italiana',serif;--sans:'Jost',sans-serif;--mono:'Josefin Sans',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font:17px/1.55 var(--sans)}button,input,select,textarea{font:inherit}button,a{transition:.2s}.portal-header{min-height:84px;padding:10px clamp(20px,5vw,72px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.portal-header img{width:112px;height:62px;object-fit:contain}.portal-header>div{display:flex;align-items:center;gap:15px}.staff-badge,.portal-eyebrow{font:600 11px var(--mono);letter-spacing:1.6px;color:var(--olive)}.portal-main{max-width:1320px;margin:auto;padding:clamp(32px,6vw,80px) clamp(18px,4vw,50px)}h1,h2{font-family:var(--serif);font-weight:400;letter-spacing:-1.5px;line-height:1.05}h1{font-size:clamp(42px,6vw,76px);margin:9px 0 22px}h1 em{color:var(--olive);font-style:normal}h2{font-size:30px;margin:0}.primary,.ghost{border:1px solid var(--ink);min-height:48px;padding:11px 17px;font-weight:600;font-size:14px;cursor:pointer}.primary{background:var(--ink);color:white}.primary:hover{background:var(--olive);border-color:var(--olive)}.ghost{background:transparent;color:var(--ink)}.ghost:hover{background:var(--paper)}.small{min-height:38px;padding:7px 12px}.wide{width:100%;margin-top:20px}.button-link{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.auth-card{max-width:620px;margin:4vh auto;background:var(--paper);padding:clamp(28px,5vw,60px);box-shadow:0 22px 50px rgba(42,42,31,.1)}label{font-size:13px;font-weight:600;display:block}input,select,textarea{width:100%;min-height:50px;border:1px solid var(--line);background:#fff;padding:12px 14px;margin-top:7px;color:var(--ink);outline:none}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--olive);box-shadow:0 0 0 3px rgba(133,138,112,.12)}.auth-card label+label{margin-top:15px}.form-actions{display:flex;gap:10px;margin-top:24px;flex-wrap:wrap}.form-status{font-size:13px;min-height:22px;margin:13px 0 0;color:var(--olive)}.page-heading{display:flex;justify-content:space-between;gap:40px;align-items:end;margin-bottom:42px}.page-heading>p{max-width:430px;color:var(--muted)}.organizer-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:22px;align-items:start}.portal-card{background:var(--paper);border:1px solid rgba(194,193,165,.65);padding:clamp(22px,3vw,36px)}.card-heading{display:flex;gap:16px;align-items:flex-start;margin-bottom:28px}.card-heading>span{width:40px;height:40px;display:grid;place-items:center;background:var(--dark);color:var(--cream);font:600 12px var(--mono)}.card-heading p{font-size:13px;color:var(--muted);margin:5px 0 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.form-grid .full{grid-column:1/-1}.check{display:flex;align-items:center;gap:10px;font-weight:400}.check input{width:20px;min-height:20px;margin:0}.result-card{position:sticky;top:20px}.empty-result{text-align:center;padding:50px 15px;color:var(--muted)}.empty-result>span{font:50px var(--serif);color:var(--olive)}.empty-result h2{color:var(--ink);margin:15px 0 10px}.result-links{display:grid;gap:15px}.result-link label{font:600 10px var(--mono);letter-spacing:1px;color:var(--olive)}.copy-row{display:flex;margin-top:6px}.copy-row input{margin:0;min-width:0;font-size:12px}.copy-row button{border:0;background:var(--olive);color:#fff;min-width:74px}.qr-box{display:grid;place-items:center;padding:20px;background:#fff;border:1px solid var(--line)}.qr-box img,.qr-box canvas{max-width:180px!important;height:auto!important}.events-section{margin-top:70px}.section-title{display:flex;align-items:end;justify-content:space-between;margin-bottom:22px}.section-title.compact{align-items:center}.event-list{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.event-card{background:var(--paper);padding:22px;border:1px solid var(--line)}.event-card small{font:600 10px var(--mono);letter-spacing:1px;color:var(--olive)}.event-card h3{font:400 24px var(--serif);margin:9px 0}.event-card p{font-size:13px;color:var(--muted)}.event-card .actions{display:flex;gap:7px;flex-wrap:wrap}.event-card .actions a,.event-card .actions button{font-size:12px;padding:8px 10px;min-height:38px}.customer-heading{display:flex;align-items:end;justify-content:space-between;gap:25px;margin-bottom:24px}.customer-heading h1{margin-bottom:8px}.customer-heading p{color:var(--muted)}.heading-actions{display:flex;gap:8px;flex-wrap:wrap}.cleanup-banner{display:flex;gap:14px;align-items:center;background:#e9eadc;padding:16px 20px;margin-bottom:18px}.cleanup-banner>span{font-size:28px;color:var(--olive)}.cleanup-banner p{margin:2px 0 0;font-size:13px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}.metric-grid article{background:var(--dark);color:white;padding:20px}.metric-grid small{display:block;font:600 10px var(--mono);letter-spacing:1px;color:#d8d5b8}.metric-grid b{display:inline-block;font:400 38px var(--serif);margin-top:8px}.metric-grid span{font-size:12px;color:#bbb9a4;margin-left:4px}.control-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.control-button{border:1px solid var(--line);background:var(--cream);padding:13px;text-align:left;cursor:pointer}.control-button b,.control-button span{display:block}.control-button span{font-size:12px;color:var(--olive);margin-top:4px}.customer-columns{display:grid;grid-template-columns:.75fr 1.25fr;gap:18px;margin-top:18px}.rsvp-list{display:grid;gap:8px}.rsvp-item{display:grid;grid-template-columns:1fr auto;gap:10px;border-bottom:1px solid #e5e3d4;padding:12px 0}.rsvp-item b{font-size:14px}.rsvp-item small{display:block;color:var(--muted)}.rsvp-status{font:600 10px var(--mono);padding:5px 7px;height:max-content}.rsvp-status.yes{background:#e4eadf;color:#52684b}.rsvp-status.no{background:#f1e1de;color:#8b5149}.media-list{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.media-item{border:1px solid var(--line);overflow:hidden;background:var(--cream)}.media-preview{aspect-ratio:1;background:#dad8c5;display:grid;place-items:center;overflow:hidden}.media-preview img,.media-preview video{width:100%;height:100%;object-fit:cover}.media-meta{padding:9px}.media-meta small{font-size:10px;color:var(--muted)}.media-actions{display:flex;gap:5px;margin-top:7px}.media-actions button,.media-actions a{flex:1;border:1px solid var(--line);background:white;padding:6px;font-size:10px;text-align:center;text-decoration:none;color:var(--ink)}.media-actions .approve{background:var(--olive);color:white}.loading-card{text-align:center;padding:20vh 20px}.spinner{display:inline-block;width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--olive);border-radius:50%;animation:spin .8s linear infinite}.portal-toast{position:fixed;z-index:20;left:50%;bottom:24px;transform:translate(-50%,25px);opacity:0;background:var(--dark);color:white;padding:13px 18px;font-size:13px;transition:.2s}.portal-toast.show{opacity:1;transform:translate(-50%,0)}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:900px){.organizer-layout,.customer-columns{grid-template-columns:1fr}.result-card{position:static}.event-list{grid-template-columns:1fr 1fr}.control-actions{grid-template-columns:1fr 1fr}.customer-heading,.page-heading{align-items:flex-start;flex-direction:column}.metric-grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){body{font-size:16px}.portal-header{min-height:72px}.portal-header img{width:90px;height:52px}.portal-main{padding:30px 16px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.event-list{grid-template-columns:1fr}.metric-grid{grid-template-columns:1fr 1fr}.metric-grid article{padding:15px}.metric-grid b{font-size:32px}.control-actions{grid-template-columns:1fr}.media-list{grid-template-columns:1fr 1fr}.heading-actions>*{flex:1;min-width:145px}.portal-card{padding:20px}.copy-row{display:grid}.copy-row button{min-height:42px}.section-title.compact{align-items:flex-start;gap:12px;flex-direction:column}}
