@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@500;700&family=DM+Sans:wght@300;400;500;600&display=swap');
:root{--bs-ink:#1a1208;--bs-amber:#c8860a;--bs-amber-l:#f5d87a;--bs-amber-d:#8a5c00;--bs-warm:#fdf8f0;--bs-border:#e0d4c0;--bs-green:#2a7a3b;--bs-red:#c0392b;--bs-muted:#8a7a65;--bs-r:10px;}
.bs-portal-wrap{font-family:'DM Sans',sans-serif;color:var(--bs-ink);max-width:820px;margin:0 auto;padding:20px 16px}

/* ── Login ───────────────────────────────────── */
/* Note: many WordPress themes set input[type="text"]{width:auto;max-width:...}
   which made the login input render visibly narrower than the button. We use
   high-specificity selectors plus !important on width and box-sizing to win
   over those theme rules without breaking the inputs everywhere else. */
.bsp-login-wrap{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:20px 0}
.bsp-login-card{background:#fff;border:1.5px solid var(--bs-border);border-radius:16px;padding:36px 28px;max-width:420px;width:100%;box-shadow:0 4px 30px rgba(0,0,0,.08);text-align:center}
.bsp-login-icon{font-size:3rem;margin-bottom:8px;line-height:1}
.bsp-login-title{font-family:'Playfair Display',serif;font-size:1.7rem;margin-bottom:6px;color:var(--bs-ink)}
.bsp-login-sub{font-size:.9rem;color:var(--bs-muted);margin:0 auto 22px;max-width:300px;line-height:1.45}
.bsp-login-card .bsp-field{margin-bottom:14px;width:100%}
.bs-portal-wrap .bsp-login-card input.bsp-input,
.bs-portal-wrap .bsp-login-card #bsp-identifier{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    display:block !important;
    box-sizing:border-box !important;
    font-size:.95rem;
    padding:11px 14px;
    margin:0;
    height:auto;
}
.bsp-login-card .bsp-input::placeholder{color:#b8a98f;font-size:.85rem;opacity:1}
.bs-portal-wrap .bsp-login-card .bsp-btn{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    margin-top:4px;
}
.bsp-login-note{font-size:.78rem;color:var(--bs-muted);margin-top:18px;line-height:1.5}
@media(max-width:480px){
    .bsp-login-card{padding:28px 20px}
    .bsp-login-title{font-size:1.4rem}
}

/* ── Shared ──────────────────────────────────── */
.bsp-btn{width:100%;padding:12px;border:none;border-radius:var(--bs-r);cursor:pointer;font-family:'DM Sans',sans-serif;font-weight:600;font-size:.95rem;transition:.15s}
.bsp-btn-primary{background:var(--bs-ink);color:var(--bs-amber-l)}
.bsp-btn-primary:hover{background:var(--bs-amber-d);color:#fff}
.bsp-btn-secondary{background:var(--bs-warm);border:1.5px solid var(--bs-border)!important;color:var(--bs-ink)}
.bsp-field{margin-bottom:14px;text-align:left}
.bsp-field label{display:block;font-size:.78rem;font-weight:600;color:var(--bs-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px}
.bsp-input{width:100%;padding:10px 13px;border:1.5px solid var(--bs-border);border-radius:var(--bs-r);font-family:'DM Sans',sans-serif;font-size:.9rem;background:var(--bs-warm);transition:.15s;box-sizing:border-box}
.bsp-input:focus{outline:none;border-color:var(--bs-amber);background:#fff}
.bsp-msg{padding:10px 14px;border-radius:8px;font-size:.85rem;margin-top:10px}
.bsp-msg.success{background:#d4edda;color:var(--bs-green)}
.bsp-msg.error{background:#f8d7da;color:var(--bs-red)}
.bsp-card{background:#fff;border:1.5px solid var(--bs-border);border-radius:var(--bs-r);padding:20px;margin-bottom:16px}
.bsp-empty{text-align:center;color:var(--bs-muted);padding:32px;font-size:.9rem}
.bsp-badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:.73rem;font-weight:600;text-transform:capitalize}
.bsp-badge-pending{background:#fff3cd;color:#856404}
.bsp-badge-notified{background:#cce5ff;color:#004085}
.bsp-badge-fulfilled{background:#d4edda;color:var(--bs-green)}
.bsp-badge-cancelled{background:#f8d7da;color:var(--bs-red)}
.bsp-span2{grid-column:1/-1}

/* ── Dashboard Header ────────────────────────── */
.bsp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.bsp-greeting{font-size:.82rem;color:var(--bs-muted)}
.bsp-name{font-family:'Playfair Display',serif;font-size:1.5rem;font-weight:700}
.bsp-logout{padding:7px 16px;background:none;border:1.5px solid var(--bs-border);border-radius:20px;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:.8rem;color:var(--bs-muted);transition:.15s}
.bsp-logout:hover{border-color:var(--bs-red);color:var(--bs-red)}

/* ── Hero / Tier card ────────────────────────── */
.bsp-hero{border-radius:14px;padding:24px;margin-bottom:24px}
.bsp-tier-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border-radius:20px;color:#fff;font-weight:700;font-size:.9rem;margin-bottom:16px}
.bsp-stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
@media(max-width:600px){.bsp-stats-row{grid-template-columns:repeat(2,1fr)}}
.bsp-stat{background:rgba(255,255,255,.7);border-radius:10px;padding:12px;text-align:center}
.bsp-stat-val{display:block;font-size:1.2rem;font-weight:700;font-family:'Playfair Display',serif}
.bsp-stat-lbl{display:block;font-size:.7rem;color:var(--bs-muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px}
.bsp-tier-progress{background:rgba(255,255,255,.6);border-radius:10px;padding:12px}
.bsp-tier-progress-label{display:flex;justify-content:space-between;font-size:.78rem;font-weight:600;margin-bottom:6px}
.bsp-progress-bar{height:8px;background:rgba(0,0,0,.1);border-radius:20px;overflow:hidden}
.bsp-progress-fill{height:100%;border-radius:20px;transition:width .6s ease}
.bsp-tier-progress-note{font-size:.75rem;color:var(--bs-muted);margin-top:6px;text-align:center}

/* ── Tabs ─────────────────────────────────────── */
.bsp-tabs{display:flex;gap:0;border-bottom:2px solid var(--bs-border);margin-bottom:20px;overflow-x:auto;scrollbar-width:none}
.bsp-tabs::-webkit-scrollbar{display:none}
.bsp-tab{padding:10px 18px;border:none;background:none;cursor:pointer;font-family:'DM Sans',sans-serif;font-size:.88rem;color:var(--bs-muted);border-bottom:2px solid transparent;margin-bottom:-2px;white-space:nowrap;transition:.15s}
.bsp-tab.active{color:var(--bs-ink);font-weight:600;border-color:var(--bs-amber)}

/* ── Purchase Cards ──────────────────────────── */
.bsp-purchase-list{display:flex;flex-direction:column;gap:12px}
.bsp-purchase-card{background:#fff;border:1.5px solid var(--bs-border);border-radius:var(--bs-r);overflow:hidden}
.bsp-purchase-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:var(--bs-warm);border-bottom:1px solid var(--bs-border)}
.bsp-purchase-ref{font-family:monospace;font-size:.82rem;font-weight:700;background:var(--bs-ink);color:var(--bs-amber-l);padding:2px 8px;border-radius:4px;margin-right:8px}
.bsp-purchase-date{font-size:.78rem;color:var(--bs-muted)}
.bsp-purchase-total{font-size:1rem;font-weight:700;color:var(--bs-amber-d)}
.bsp-purchase-items{padding:10px 16px;display:flex;flex-direction:column;gap:6px}
.bsp-purchase-item{display:flex;align-items:baseline;gap:8px;font-size:.83rem}
.bsp-item-title{font-weight:600;flex:1}
.bsp-item-meta{color:var(--bs-muted);font-size:.75rem}
.bsp-item-price{font-weight:700;white-space:nowrap}
.bsp-purchase-loyalty{padding:6px 16px 10px;font-size:.78rem;color:var(--bs-green);font-weight:600}

/* ── Points ──────────────────────────────────── */
.bsp-points-summary{text-align:center;padding:24px;background:#fff;border:1.5px solid var(--bs-border);border-radius:var(--bs-r);margin-bottom:16px}
.bsp-points-big{font-size:3rem;font-weight:700;font-family:'Playfair Display',serif;color:var(--bs-amber-d)}
.bsp-points-value{font-size:1rem;color:var(--bs-muted)}
.bsp-points-log{display:flex;flex-direction:column;gap:0;background:#fff;border:1.5px solid var(--bs-border);border-radius:var(--bs-r);overflow:hidden}
.bsp-points-row{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--bs-border)}
.bsp-points-row:last-child{border-bottom:none}
.bsp-points-row-label{font-size:.83rem;font-weight:500}
.bsp-points-row-date{font-size:.75rem;color:var(--bs-muted);margin-top:2px}
.bsp-points-row-val{font-weight:700;font-size:.9rem;white-space:nowrap}
.bsp-points-earn .bsp-points-row-val{color:var(--bs-green)}
.bsp-points-spend .bsp-points-row-val{color:var(--bs-red)}

/* ── Reservations ────────────────────────────── */
.bsp-reserv-list{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}
.bsp-reserv-card{background:#fff;border:1.5px solid var(--bs-border);border-radius:var(--bs-r);padding:14px 16px}
.bsp-reserv-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:6px}
.bsp-reserv-title{font-weight:700;font-size:.9rem}
.bsp-reserv-isbn{font-size:.75rem;color:var(--bs-muted)}
.bsp-reserv-meta{font-size:.78rem;color:var(--bs-muted)}
.bsp-reserv-ready{display:block;color:var(--bs-green);font-weight:600;margin-top:4px}
.bsp-reserv-notes{font-size:.78rem;color:var(--bs-muted);margin-top:4px;font-style:italic}

/* ── Profile ─────────────────────────────────── */
.bsp-profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;margin-bottom:14px;align-items:start}
.bsp-profile-grid .bsp-field{margin-bottom:0}
.bsp-profile-grid .bsp-input{height:42px;line-height:1.2}
.bsp-profile-grid textarea.bsp-input{height:auto;min-height:64px}
@media(max-width:500px){.bsp-profile-grid{grid-template-columns:1fr}}


/* ── Portal popup modal ─────────────────────────── */
.bs-portal-trigger-wrap{display:flex;justify-content:center;padding:12px 0}
.bsp-portal-open{font-family:'DM Sans',sans-serif}
body.bsp-modal-open{overflow:hidden}
.bsp-modal{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;padding:24px 12px}
.bsp-modal[hidden]{display:none!important}
.bsp-modal-backdrop{position:absolute;inset:0;background:rgba(26,18,8,.55);backdrop-filter:blur(3px);cursor:pointer}
.bsp-modal-dialog{position:relative;background:#fdf8f0;border-radius:16px;width:100%;max-width:880px;max-height:92vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.35);animation:bspModalIn .22s ease-out}
.bsp-modal-dialog .bs-portal-wrap{max-width:100%;padding:24px 22px}
.bsp-modal-close{position:absolute;top:10px;right:14px;background:none;border:none;font-size:1.8rem;line-height:1;color:#8a7a65;cursor:pointer;z-index:2;padding:4px 10px;border-radius:50%;transition:.15s}
.bsp-modal-close:hover{background:rgba(0,0,0,.06);color:#1a1208}
@keyframes bspModalIn{from{transform:translateY(12px) scale(.98);opacity:0}to{transform:none;opacity:1}}
@media(max-width:600px){
    .bsp-modal{padding:0}
    .bsp-modal-dialog{border-radius:0;max-height:100vh;height:100vh}
}
/* Inside the modal the login card should not need extra vertical centering height */
.bsp-modal-dialog .bsp-login-wrap{min-height:auto;padding:8px 0}
