:root{--portal-primary:#ec4899;--portal-radius:14px;--portal-shadow:0 4px 24px #0000001a;--portal-border:#f0e6ee;--portal-bg:#fff;--portal-muted:#6b7280;--portal-success:#10b981;--portal-danger:#ef4444;--portal-upcoming:#fdf4ff;--portal-past:#f9fafb}.sbs-portal-wrap{color:#1a1a1a;max-width:680px;margin:0 auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.sbs-portal-loading{justify-content:center;padding:48px 0;display:flex}.sbs-portal-spinner{border:3px solid #f3e8f0;border-top-color:var(--portal-primary);border-radius:50%;width:36px;height:36px;animation:.7s linear infinite sbs-spin;display:inline-block}@keyframes sbs-spin{to{transform:rotate(360deg)}}.sbs-portal-card{background:var(--portal-bg);border:1px solid var(--portal-border);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow);margin-bottom:20px;padding:32px 28px}.sbs-portal-login-icon{text-align:center;margin-bottom:10px;font-size:48px}.sbs-portal-login h2{text-align:center;margin:0 0 6px;font-size:22px;font-weight:700}.sbs-portal-login p.subtitle{color:var(--portal-muted);text-align:center;margin:0 0 24px;font-size:14px}.sbs-portal-input{box-sizing:border-box;border:1.5px solid #e5e7eb;border-radius:10px;outline:none;width:100%;margin-bottom:12px;padding:12px 16px;font-size:16px;transition:border-color .2s}.sbs-portal-input:focus{border-color:var(--portal-primary);box-shadow:0 0 0 3px #ec48991f}.sbs-portal-btn{background:var(--portal-primary);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;padding:13px;font-size:16px;font-weight:600;transition:opacity .2s,transform .1s}.sbs-portal-btn:hover{opacity:.9}.sbs-portal-btn:disabled{opacity:.55;cursor:default}.sbs-portal-btn-sm{cursor:pointer;border:none;border-radius:8px;padding:7px 14px;font-size:13px;font-weight:600;transition:opacity .2s}.sbs-portal-btn-sm:hover{opacity:.85}.sbs-portal-btn-outline{border:1.5px solid var(--portal-primary);color:var(--portal-primary);background:0 0}.sbs-portal-msg{text-align:center;min-height:18px;margin-top:10px;font-size:13px}.sbs-portal-msg.success{color:var(--portal-success)}.sbs-portal-msg.error{color:var(--portal-danger)}.sbs-portal-link{color:var(--portal-primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;text-decoration:underline}.sbs-portal-header{border-bottom:1px solid var(--portal-border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;padding-bottom:16px;display:flex}.sbs-portal-header h2{margin:0;font-size:20px;font-weight:700}.sbs-portal-header .greeting{color:var(--portal-muted);font-size:13px}.sbs-portal-stats{flex-wrap:wrap;gap:12px;margin-bottom:22px;display:flex}.sbs-portal-stat{text-align:center;background:linear-gradient(135deg,#fdf4ff,#fff0fa);border:1px solid #f3d6ef;border-radius:12px;flex:1;min-width:120px;padding:14px 16px}.sbs-portal-stat .value{color:var(--portal-primary);font-size:22px;font-weight:800;line-height:1.2}.sbs-portal-stat .label{color:var(--portal-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:2px;font-size:11px}.sbs-portal-next{background:linear-gradient(135deg,#f0fdf4,#fff);border:1px solid #bbf7d0;border-radius:12px;justify-content:space-between;align-items:center;gap:14px;margin:-6px 0 20px;padding:14px 16px;display:flex}.sbs-portal-next>div{flex-direction:column;gap:3px;min-width:0;display:flex}.sbs-portal-next strong{color:#111827;font-size:15px}.sbs-portal-next span:not(.sbs-status-badge){color:#6b7280;font-size:12px}.sbs-portal-next .sbs-portal-kicker{color:#15803d;text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:800}.sbs-portal-tabs{border-bottom:2px solid #f0e6ee;gap:6px;margin-bottom:18px;padding-bottom:0;display:flex}.sbs-portal-tab{color:var(--portal-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-2px;padding:8px 16px;font-size:14px;font-weight:600;transition:color .2s,border-color .2s}.sbs-portal-tab.active{color:var(--portal-primary);border-bottom-color:var(--portal-primary)}.sbs-portal-booking{border:1px solid var(--portal-border);background:var(--portal-bg);border-radius:12px;align-items:flex-start;gap:14px;margin-bottom:12px;padding:16px 18px;transition:box-shadow .2s;display:flex}.sbs-portal-booking.upcoming{background:var(--portal-upcoming)}.sbs-portal-booking.cancelled{opacity:.6}.sbs-portal-date-badge{text-align:center;background:var(--portal-primary);color:#fff;border-radius:10px;flex-shrink:0;min-width:52px;padding:8px 6px}.sbs-portal-date-badge .month{text-transform:uppercase;letter-spacing:.06em;opacity:.85;font-size:10px}.sbs-portal-date-badge .day{font-size:22px;font-weight:800;line-height:1.1}.sbs-portal-booking-info{flex:1}.sbs-portal-booking-info .service-name{margin:0 0 3px;font-size:15px;font-weight:700}.sbs-portal-booking-info .staff-name{color:#9d174d;margin-bottom:2px;font-size:13px}.sbs-portal-booking-info .time{color:var(--portal-muted);margin:0 0 8px;font-size:13px}.sbs-portal-booking-meta{flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;display:flex}.sbs-portal-mini-pill{color:#4b5563;background:#fff;border:1px solid #e5e7eb;border-radius:999px;align-items:center;min-height:20px;padding:2px 8px;font-size:11px;font-weight:700;line-height:1;display:inline-flex}.sbs-portal-booking-actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.sbs-status-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:20px;margin-bottom:6px;padding:2px 9px;font-size:11px;font-weight:600;display:inline-block}.sbs-portal-empty{text-align:center;color:var(--portal-muted);padding:32px 16px;font-size:14px}.sbs-portal-empty .icon{margin-bottom:8px;font-size:36px}.sbs-portal-modal-overlay{z-index:99999;background:#00000073;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.sbs-portal-modal{background:#fff;border-radius:16px;width:100%;max-width:460px;max-height:90vh;padding:28px 24px;overflow-y:auto;box-shadow:0 20px 60px #00000040}.sbs-portal-modal h3{margin:0 0 18px;font-size:18px;font-weight:700}.sbs-portal-modal-close{float:right;cursor:pointer;color:#9ca3af;background:0 0;border:none;margin-top:-4px;font-size:22px}.sbs-portal-slot-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px;display:grid}.sbs-portal-slot{text-align:center;cursor:pointer;background:#fff;border:1.5px solid #e5e7eb;border-radius:8px;padding:9px;font-size:13px;font-weight:600;transition:all .2s}.sbs-portal-slot:hover,.sbs-portal-slot.selected{background:var(--portal-primary);color:#fff;border-color:var(--portal-primary)}.sbs-portal-book-new{text-align:center;margin-top:16px}@media (width<=480px){.sbs-portal-card{padding:20px 16px}.sbs-portal-booking{flex-direction:column;gap:10px}.sbs-portal-slot-grid{grid-template-columns:repeat(2,1fr)}.sbs-portal-stats{flex-direction:column}}.sbs-portal-login .brand-subtitle{color:var(--portal-primary,#ec4899);opacity:.85;margin:-8px 0 12px;font-size:13px;font-style:italic}.sbs-portal-wrap{--portal-shadow:0 12px 34px #0f172a14;--portal-border:#e5e7eb;--portal-muted:#6b7280;max-width:720px}.sbs-portal-card{box-shadow:var(--portal-shadow);border-radius:16px}.sbs-portal-login-icon{display:none}.sbs-portal-login h2,.sbs-portal-header h2{color:#111827;letter-spacing:0}.sbs-portal-input{border-width:1px;border-radius:12px;min-height:46px}.sbs-portal-btn,.sbs-portal-btn-sm{border-radius:999px}.sbs-portal-btn{min-height:46px;font-weight:700;box-shadow:0 10px 22px #ec489929}.sbs-portal-btn-outline{background:#fff}.sbs-portal-stat{background:#f8fafc;border-color:#e5e7eb;box-shadow:0 1px 2px #0f172a0a}.sbs-portal-stat .value{color:#111827}.sbs-portal-tabs{background:#f8fafc;border:1px solid #e5e7eb;border-radius:999px;padding:4px}.sbs-portal-tab{border:none;border-radius:999px;flex:1;margin:0}.sbs-portal-tab.active{color:#fff;background:#111827;border-bottom-color:#0000;box-shadow:0 4px 12px #11182724}.sbs-portal-booking{background:#fff;border-color:#e5e7eb;border-radius:14px;box-shadow:0 1px 2px #0f172a0a}.sbs-portal-booking.past{background:#f8fafc}.sbs-portal-booking:hover{box-shadow:0 12px 28px #0f172a14}.sbs-portal-date-badge{background:#111827;border-radius:12px}.sbs-status-badge{letter-spacing:0;text-transform:none}.sbs-portal-modal{border-radius:18px}.sbs-portal-slot{border-width:1px;border-radius:999px}@media (width<=480px){.sbs-portal-wrap{padding:0 10px}.sbs-portal-tabs{border-radius:14px}.sbs-portal-next{flex-direction:column;align-items:flex-start}}.sbs-portal-wrap{--portal-primary:#ec4899;--portal-shadow:0 12px 40px #0f172a1a;--portal-border:#00000014;--portal-bg:#fff;--portal-muted:#6b7280;--portal-success:#10b981;--portal-danger:#ef4444;--portal-surface2:#f8fafc;--portal-radius:18px;--portal-ease:cubic-bezier(.4,0,.2,1);-webkit-font-smoothing:antialiased;max-width:700px;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Helvetica Neue,Arial,sans-serif}.sbs-portal-card{backdrop-filter:blur(20px);border:1px solid var(--portal-border);border-radius:var(--portal-radius);box-shadow:var(--portal-shadow), 0 1px 0 #ffffffe6 inset;background:#fffffff5;padding:32px 28px}.sbs-portal-login h2{letter-spacing:-.025em;font-weight:800}.sbs-portal-input{background:#f8fafc;border:1px solid #00000024;border-radius:12px;min-height:48px;font-size:16px;transition:border-color .18s,box-shadow .18s,background .18s}.sbs-portal-input:focus{border-color:var(--portal-primary);background:#fff;box-shadow:0 0 0 4px #ec48991f}.sbs-portal-btn{letter-spacing:-.01em;background:var(--portal-primary);min-height:48px;transition:all .18s var(--portal-ease);border-radius:999px;font-weight:800;box-shadow:0 8px 22px #ec489938}.sbs-portal-btn:hover{opacity:1;filter:brightness(1.06);transform:translateY(-1px);box-shadow:0 12px 28px #ec489947}.sbs-portal-btn:active{transform:scale(.98)}.sbs-portal-btn-sm{border-radius:999px;font-weight:700}.sbs-portal-header h2{letter-spacing:-.02em;color:#111827;font-size:22px;font-weight:800}.sbs-portal-stats{gap:10px}.sbs-portal-stat{background:var(--portal-surface2);border:1px solid #00000012;border-radius:14px;transition:box-shadow .18s,transform .18s;box-shadow:0 1px 3px #0f172a0d}.sbs-portal-stat:hover{transform:translateY(-2px);box-shadow:0 8px 20px #0f172a14}.sbs-portal-stat .value{letter-spacing:-.03em;color:#111827;font-size:24px;font-weight:900}.sbs-portal-stat .label{color:#6b7280;text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:700}.sbs-portal-tabs{background:#f2f4f8;border:1px solid #00000014;border-radius:999px;gap:4px;margin-bottom:20px;padding:4px;display:flex}.sbs-portal-tab{color:#6b7280;transition:all .18s var(--portal-ease);background:0 0;border:none;border-radius:999px;flex:1;margin:0;padding:8px 16px;font-size:14px;font-weight:600}.sbs-portal-tab.active{color:#fff;background:#111827;border-bottom-color:#0000;font-weight:700;box-shadow:0 4px 14px #1118272e}.sbs-portal-booking{background:var(--portal-bg);transition:box-shadow .18s var(--portal-ease), transform .18s var(--portal-ease);border:1px solid #00000012;border-radius:16px;margin-bottom:10px;padding:16px 18px;box-shadow:0 1px 3px #0f172a0a}.sbs-portal-booking:hover{transform:translateY(-1px);box-shadow:0 10px 26px #0f172a17}.sbs-portal-booking.upcoming{border-left:4px solid var(--portal-primary);background:#fff}.sbs-portal-booking.past{background:var(--portal-surface2);opacity:.88}.sbs-portal-date-badge{background:#111827;border-radius:12px;min-width:54px;box-shadow:0 4px 12px #1118272e}.past .sbs-portal-date-badge{background:#9ca3af}.cancelled .sbs-portal-date-badge{background:#d1d5db}.sbs-portal-mini-pill{background:var(--portal-surface2);border:1px solid #00000014;border-radius:999px;font-weight:700}.sbs-portal-modal{backdrop-filter:blur(20px);background:#fffffff7;border-radius:22px;box-shadow:0 28px 80px #0f172a38}.sbs-portal-modal h3{letter-spacing:-.02em;color:#111827;font-size:20px;font-weight:800}.sbs-portal-slot{background:var(--portal-surface2);border:1px solid #0000001a;border-radius:999px;font-weight:700;transition:all .15s}.sbs-portal-slot:hover,.sbs-portal-slot.selected{background:var(--portal-primary);color:#fff;border-color:var(--portal-primary);box-shadow:0 4px 14px #ec489940}.sbs-status-confirmed{color:#15803d;background:#dcfce7}.sbs-status-pending{color:#a16207;background:#fef9c3}.sbs-status-cancelled{color:#991b1b;background:#fee2e2}.sbs-status-no_show{color:#374151;background:#f3f4f6}@media (width<=480px){.sbs-portal-card{padding:22px 18px}.sbs-portal-tabs{border-radius:16px}}