/* Solace client portal ("Client login"). Uses the site's dark-rust palette variables. */
.portal-main{min-height:70vh;padding:clamp(28px,6vw,72px) clamp(16px,4vw,40px) 72px;display:flex;justify-content:center}
.portal-shell{width:100%;max-width:860px}
.portal-loading{margin:40px 0;text-align:center;color:var(--text-muted,#e0c4ad);font-size:15px;animation:portal-pulse 1.6s ease-in-out infinite}
@keyframes portal-pulse{50%{opacity:.45}}
@media (prefers-reduced-motion:reduce){.portal-loading{animation:none}}

.portal-card{max-width:520px;margin:0 auto;padding:clamp(24px,5vw,44px);background:var(--rust-mid,#512416);border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 60px rgba(20,6,2,.35)}
.portal-card h1,#portal h1{margin:10px 0 14px;font:400 clamp(30px,5vw,42px)/1.12 var(--serif,'Playfair Display',Georgia,serif);letter-spacing:-.02em;color:var(--ink)}
.portal-card h1 em,#portal h1 em{color:#f0b77f}
.portal-lead{margin:0 0 22px;color:var(--text-muted,#e0c4ad);font-size:16px;line-height:1.6}
.portal-form{display:grid;gap:14px;margin:0}
.portal-form label{display:grid;gap:6px;font-size:14px;color:var(--ink);min-width:0}
.portal-form input:not([type=checkbox]){width:100%;box-sizing:border-box;min-height:46px;padding:11px 13px;border:1px solid var(--line);border-radius:8px;background:var(--rust-deep,#321308);color:var(--ink);font:inherit;font-size:16px;transition:border-color .2s ease,box-shadow .2s ease}
.portal-form input:focus{outline:none;border-color:var(--copper,#e4a366);box-shadow:0 0 0 3px rgba(228,163,102,.25)}
.portal-form input:disabled{opacity:.7}
#signin-code{letter-spacing:.35em;font-size:22px;text-align:center}
.field-caption{font-weight:600}
.required-mark{color:var(--copper,#e4a366)}
.portal-form .button{background:var(--copper,#e4a366);color:#351508;border-radius:8px;justify-content:center;cursor:pointer}
.portal-form .button:hover{background:#f0be8d;transform:translateY(-1px)}
.portal-link{background:none;border:0;padding:6px 0;color:#f1c39b;font:inherit;font-size:14px;text-decoration:underline;text-underline-offset:3px;cursor:pointer;justify-self:start}
.portal-link:hover{color:#f8e9d9}
.portal-note{margin:0;color:var(--text-muted,#e0c4ad);font-size:14px;line-height:1.55}
.portal-note a,.portal-empty a{color:#f1c39b}
.portal-feedback{min-height:1.4em;margin:12px 0 0;font-size:14px;color:#cfe3c2}
.portal-feedback.error{color:#ffb4a2}
.portal-feedback:empty{min-height:0;margin:0}
.portal-two,.portal-three{display:grid;gap:14px}
.portal-two{grid-template-columns:1fr 1fr}
.portal-three{grid-template-columns:2fr 1fr 1fr}
@media (max-width:560px){.portal-two,.portal-three{grid-template-columns:1fr}}
.portal-optional{border:1px dashed var(--line);border-radius:8px;padding:10px 12px}
.portal-optional summary{cursor:pointer;font-size:14px;color:#f1c39b}
.portal-optional[open]{display:grid;gap:12px}
.portal-check{display:flex!important;align-items:center;gap:10px;font-size:14px}
.portal-check input{width:18px;height:18px;accent-color:var(--copper,#e4a366)}

.portal-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0 0 18px;padding:4px;border:1px solid var(--line);border-radius:10px;background:var(--rust-deep,#321308)}
.portal-tabs button{border:0;border-radius:7px;padding:10px 8px;background:transparent;color:var(--text-muted,#e0c4ad);font:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:background .2s ease,color .2s ease}
.portal-tabs button[aria-selected=true]{background:var(--copper,#e4a366);color:#351508}

/* signed-in portal */
.portal-top{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;margin:0 0 22px}
.portal-hello{display:flex;align-items:center;gap:16px;min-width:0}
.portal-avatar{flex:none;width:68px;height:68px;border-radius:50%;border:2px solid var(--copper,#e4a366);background:var(--rust-raised,#602c1a);color:var(--ink);font:600 22px var(--sans,'DM Sans',sans-serif);display:grid;place-items:center;overflow:hidden;padding:0;cursor:pointer;transition:transform .2s ease}
.portal-avatar:hover{transform:scale(1.04)}
.portal-avatar img{width:100%;height:100%;object-fit:cover}
#portal h1{margin:4px 0 0;font-size:clamp(28px,4.5vw,40px)}
.portal-top-actions{display:flex;align-items:center;gap:16px}
.portal-top-actions .button{width:auto;background:var(--copper,#e4a366);color:#351508;border-radius:8px}
.portal-top-actions .button:hover{background:#f0be8d}
.portal-panel{margin:0 0 16px;padding:clamp(18px,3.5vw,28px);background:var(--rust-mid,#512416);border:1px solid var(--line);border-radius:14px}
.portal-panel[hidden]{display:none}
.portal-panel h2{margin:0 0 14px;font:400 24px/1.25 var(--serif,'Playfair Display',Georgia,serif);color:var(--ink)}
.portal-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 12px}
.portal-stats div{padding:14px 12px;border-radius:10px;background:var(--rust-deep,#321308);text-align:center;display:grid;gap:4px}
.portal-stats strong{font:500 26px/1.1 var(--serif,'Playfair Display',Georgia,serif);color:#f0b77f}
.portal-stats span{font-size:13px;color:var(--text-muted,#e0c4ad)}
#society-panel .portal-stats{grid-template-columns:repeat(2,1fr)}
@media (max-width:480px){.portal-stats{grid-template-columns:1fr}}
.portal-visits{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.portal-visit{padding:14px 16px;border-radius:10px;background:var(--rust-deep,#321308);border-left:3px solid var(--copper,#e4a366);display:grid;gap:6px}
.portal-visit p{margin:0;font-size:15px;color:var(--ink)}
.portal-visit-when{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.portal-status{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:999px;background:rgba(228,163,102,.18);color:#f0b77f}
.portal-visit-cancelled,.portal-visit-no_show{border-left-color:#8e6a5a;opacity:.8}
.portal-visit-completed{border-left-color:#9fbf8f}
.portal-empty{list-style:none;color:var(--text-muted,#e0c4ad);font-size:15px}
.portal-photo-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:12px}
.portal-photo-row .button{width:auto;background:var(--copper,#e4a366);color:#351508;border-radius:8px;cursor:pointer}
#details-form{margin-top:4px}
