/* GymOS Pro premium UI layer — responsive, accessible, tenant-color aware. */
:root{
  --surface:#fff;--surface-soft:#f8f9fd;--surface-raised:#fff;
  --ink-strong:#171d38;--ink-soft:#66708c;
  --border-soft:#e8ebf4;--border-strong:#d7dcea;
  --radius-sm:10px;--radius-md:14px;--radius-lg:20px;--radius-xl:26px;
  --elev-1:0 2px 8px rgba(23,29,56,.035);
  --elev-2:0 10px 30px rgba(23,29,56,.07);
  --elev-3:0 22px 60px rgba(23,29,56,.12);
  --ease:cubic-bezier(.2,.8,.2,1);
}
body{background:
  radial-gradient(circle at 8% 0%,color-mix(in srgb,var(--gym-primary,#6651d8) 4%,transparent),transparent 28rem),
  var(--bg);color:var(--ink-strong)}
.main-content,.member-content{animation:page-enter .32s var(--ease) both}
@keyframes page-enter{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.card,.panel{border:1px solid var(--border-soft);border-radius:var(--radius-lg);box-shadow:var(--elev-1);transition:border-color .2s var(--ease),box-shadow .2s var(--ease),transform .2s var(--ease)}
.card:hover{border-color:color-mix(in srgb,var(--gym-primary,#6651d8) 12%,var(--border-soft))}
.card-header{display:flex;align-items:center;min-height:58px;padding:1rem 1.25rem;border-bottom:1px solid #f0f2f8;font-weight:800;color:var(--ink-strong)}
.card-body{padding:1.25rem}
.stat-card{box-shadow:var(--elev-1)}
.stat-card:hover{box-shadow:var(--elev-2);transform:translateY(-1px)}
.section-title{font-size:clamp(1rem,1.4vw,1.15rem);letter-spacing:-.01em}
.page-actions{padding-block:.2rem}
.page-actions>.btn,.page-actions>form>.btn{min-height:42px}

.btn{min-height:42px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;letter-spacing:0;box-shadow:none}
.btn-primary{background:linear-gradient(135deg,var(--gym-primary,#6651d8),color-mix(in srgb,var(--gym-primary,#6651d8) 82%,var(--gym-accent,#a28ef5)));border-color:transparent}
.btn-primary:hover{box-shadow:0 9px 22px color-mix(in srgb,var(--gym-primary,#6651d8) 18%,transparent);transform:translateY(-1px)}
.btn-outline-danger,.btn-outline-secondary,.btn-outline-primary{background:#fff}
.btn:disabled{opacity:.55;transform:none!important;cursor:not-allowed}
.btn.is-loading{pointer-events:none;position:relative;color:transparent!important}
.btn.is-loading::after{content:"";position:absolute;width:18px;height:18px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:ui-spin .7s linear infinite;color:#fff}
.btn-outline-secondary.is-loading::after,.btn-soft.is-loading::after{color:var(--gym-primary,#6651d8)}
@keyframes ui-spin{to{transform:rotate(360deg)}}

.form-label,label{color:#3d4664;font-weight:750}
.form-control,.form-select{min-height:47px;border-radius:12px;border:1px solid var(--border-strong);background:#fff;padding:.68rem .85rem;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}
textarea.form-control{min-height:110px;resize:vertical}
.form-control::placeholder{color:#9aa3b8}
.form-control:hover,.form-select:hover{border-color:#bfc5d8}
.form-control:focus,.form-select:focus{border-color:var(--gym-primary,#6651d8);box-shadow:0 0 0 4px color-mix(in srgb,var(--gym-primary,#6651d8) 12%,transparent)}
.form-control.is-invalid,.form-select.is-invalid,.was-validated .form-control:invalid,.was-validated .form-select:invalid{border-color:#d83d63;background-image:none}
.invalid-feedback{font-size:.78rem;font-weight:600}
.input-group>.form-control,.input-group>.form-select,.input-group>.btn{min-height:47px}
.form-check-input{width:1.05rem;height:1.05rem}
.form-text{font-size:.77rem;color:#7c869f}

.table-responsive{position:relative;border-radius:14px;border:1px solid #eef0f6;background:#fff}
.table{min-width:720px;margin:0}
.table thead th{position:sticky;top:0;z-index:1;background:#f8f9fd;color:#69738d;border-bottom:1px solid #e9ecf4;font-size:.75rem;text-transform:none;letter-spacing:.01em}
.table td,.table th{padding:.82rem .95rem}
.table tbody tr:hover{background:color-mix(in srgb,var(--gym-primary,#6651d8) 3%,#fff)}
.table td{color:#303956}
.table td .btn-sm{min-height:34px}
.table-responsive::after{content:"";position:absolute;inset-block:0;inset-inline-end:0;width:18px;pointer-events:none;background:linear-gradient(to var(--inline-end,right),transparent,rgba(29,36,67,.055));opacity:.35}

.badge{border-radius:999px;padding:.42rem .7rem;font-weight:800;letter-spacing:.01em;border:1px solid transparent}
.badge-soft-success{border-color:#cdeedc}.badge-soft-warning{border-color:#f7dfaa}.badge-soft-danger{border-color:#f6cbd5}.badge-soft-primary{border-color:#ddd6fb}

.dropdown-menu{border:1px solid var(--border-soft);border-radius:14px;box-shadow:var(--elev-3);padding:.42rem}
.dropdown-item{border-radius:9px;min-height:40px;display:flex;align-items:center}
.modal-content{border:0;border-radius:22px;box-shadow:var(--elev-3);overflow:hidden}
.modal-header,.modal-footer{border-color:#eef0f6}
.offcanvas{box-shadow:var(--elev-3)}

.feedback-stack{position:fixed;z-index:1095;inset-block-start:1rem;inset-inline-end:1rem;width:min(420px,calc(100vw - 2rem));display:grid;gap:.65rem;pointer-events:none}
.app-feedback{pointer-events:auto;position:relative;display:grid;grid-template-columns:42px minmax(0,1fr) 32px;gap:.75rem;align-items:start;padding:.9rem;border:1px solid var(--border-soft);border-radius:16px;background:rgba(255,255,255,.97);backdrop-filter:blur(18px);box-shadow:var(--elev-3);overflow:hidden;animation:feedback-in .28s var(--ease) both}
@keyframes feedback-in{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
.app-feedback.is-leaving{animation:feedback-out .22s ease forwards}
@keyframes feedback-out{to{opacity:0;transform:translateY(-6px) scale(.98)}}
.feedback-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:13px}
.feedback-icon svg,.feedback-close svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.app-feedback-success .feedback-icon{background:#e7f8ef;color:#13805a}
.app-feedback-danger .feedback-icon{background:#ffecef;color:#b83255}
.feedback-copy{min-width:0}
.feedback-copy strong{display:block;color:#202744;font-size:.9rem;margin:.06rem 0 .18rem}
.feedback-copy p{margin:0;color:#626d88;font-size:.81rem;line-height:1.65;overflow-wrap:anywhere}
.feedback-close{display:grid;place-items:center;border:0;background:transparent;color:#8991a7;width:32px;height:32px;border-radius:9px;padding:0}
.feedback-close:hover{background:#f2f3f8;color:#3c4560}
.feedback-progress{position:absolute;inset-inline-start:0;inset-block-end:0;height:3px;width:100%;background:#38b986;transform-origin:inset-inline-start;animation:feedback-progress 5.2s linear forwards}
@keyframes feedback-progress{to{transform:scaleX(0)}}
.feedback-errors{margin:.55rem 0 0;padding-inline-start:1.1rem;max-height:180px;overflow:auto;color:#7b2942;font-size:.79rem;line-height:1.7}
.feedback-errors li+li{margin-top:.18rem}

.empty-state{padding:clamp(2rem,6vw,4rem) 1rem;color:#79839c}
.empty-state::before{content:"";display:block;width:50px;height:4px;margin:0 auto 1rem;border-radius:99px;background:linear-gradient(90deg,var(--gym-primary,#6651d8),var(--gym-accent,#a28ef5));opacity:.45}

.topbar{box-shadow:0 4px 22px rgba(23,29,56,.035)}
.sidebar{box-shadow:8px 0 40px rgba(8,13,34,.08)}
html[dir=rtl] .sidebar{box-shadow:-8px 0 40px rgba(8,13,34,.08)}
.sidebar .nav-link{min-height:42px}
.sidebar .nav-link.active{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--gym-accent,#a28ef5) 16%,transparent)}
.member-topbar{box-shadow:0 4px 22px rgba(23,29,56,.035)}

.dashboard-hero,.hero-card,.nutrition-banner,.advanced-intro{box-shadow:0 18px 50px color-mix(in srgb,var(--gym-sidebar,#11172e) 18%,transparent)}
.dashboard-hero::before,.hero-card::before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,rgba(255,255,255,.06),transparent 35%,rgba(255,255,255,.03));border-radius:inherit}

.pagination .page-link{border-color:#e4e7f0;min-width:38px;text-align:center}
.pagination .active>.page-link{background:var(--gym-primary,#6651d8);border-color:var(--gym-primary,#6651d8)}

@media(max-width:991.98px){
  .topbar{height:68px}
  .main-content{padding:1rem}
  .feedback-stack{inset-block-start:.75rem;inset-inline:.75rem;width:auto}
}
@media(max-width:767.98px){
  body{font-size:.9rem}
  .card,.panel{border-radius:16px}
  .card-header,.card-body{padding:1rem}
  .form-control,.form-select,.input-group>.form-control,.input-group>.form-select{min-height:48px;font-size:16px}
  .btn{min-height:44px}
  .page-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .page-actions>.btn,.page-actions>form,.page-actions>form>.btn{width:100%}
  .table{min-width:680px}
  .feedback-stack{inset-block-start:.6rem;inset-inline:.6rem}
  .app-feedback{grid-template-columns:38px minmax(0,1fr) 30px;padding:.78rem;border-radius:14px}
  .feedback-icon{width:38px;height:38px;border-radius:11px}
  .member-content{padding:.85rem}
}
@media(max-width:575.98px){
  .main-content{padding:.72rem}
  .page-actions{grid-template-columns:1fr}
  .topbar-breadcrumb{display:none}
  .page-heading{max-width:46vw;font-size:.94rem}
  .topbar-actions .btn-language span{display:none}
  .card-header{min-height:52px}
  .table td,.table th{padding:.72rem .78rem}
  .stat-card:hover,.card:hover{transform:none}
  .feedback-errors{max-height:130px}
}
@media(prefers-reduced-motion:reduce){
  .main-content,.member-content,.app-feedback,.feedback-progress{animation:none!important}
  .card,.btn{transition:none!important}
}

/* Premium page-specific patterns */
.page-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;padding:1.2rem 1.25rem;border:1px solid var(--border-soft);border-radius:20px;background:linear-gradient(145deg,#fff,#fafbff);box-shadow:var(--elev-1)}
.page-toolbar-copy{min-width:0}.page-toolbar-kicker{display:block;color:var(--gym-primary,#6651d8);font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.page-toolbar-copy h2{font-size:1.25rem;font-weight:800;margin:.15rem 0}.page-toolbar-copy p{margin:0;color:var(--ink-soft);font-size:.8rem}
.page-toolbar-actions{display:flex;gap:.65rem;align-items:center;flex-wrap:wrap}.search-control{display:flex;align-items:center;gap:.5rem;min-width:min(100%,380px)}
.search-control{position:relative}.search-control .form-control{padding-inline-start:2.25rem;min-width:240px}.search-control-icon{position:absolute;inset-inline-start:.78rem;z-index:2;color:#8f97ab;font-size:1.1rem}
.data-card{overflow:hidden}.data-card .table-responsive{border:0;border-radius:0}.data-card-footer{padding:1rem 1.1rem;border-top:1px solid #eef0f6}
.member-cell{display:flex;align-items:center;gap:.65rem}.member-mini-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:linear-gradient(145deg,color-mix(in srgb,var(--gym-primary,#6651d8) 13%,white),color-mix(in srgb,var(--gym-accent,#a28ef5) 18%,white));color:var(--gym-primary,#6651d8);font-weight:800}
.member-code{font:700 .78rem Inter,Cairo,sans-serif;color:#5f6883;background:#f3f4f9;border:1px solid #e6e8f1;border-radius:8px;padding:.28rem .5rem}

.member-profile-hero{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.35rem 1.45rem;border-radius:22px;color:#fff;background:radial-gradient(circle at 85% 10%,color-mix(in srgb,var(--gym-accent,#a28ef5) 35%,transparent),transparent 33%),linear-gradient(120deg,var(--gym-sidebar,#11172e),var(--gym-primary,#6651d8));box-shadow:0 18px 48px color-mix(in srgb,var(--gym-sidebar,#11172e) 16%,transparent)}
.member-profile-identity{display:flex;align-items:center;gap:1rem;min-width:0}.member-profile-avatar{display:grid;place-items:center;width:64px;height:64px;flex:0 0 64px;border-radius:20px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.22);font-size:1.5rem;font-weight:800;backdrop-filter:blur(8px)}
.member-profile-code{font-size:.74rem;color:#d9d2ff;font-weight:700;letter-spacing:.04em}.member-profile-identity h2{font-size:clamp(1.35rem,2.2vw,1.8rem);font-weight:800;margin:.14rem 0}.member-profile-meta{display:flex;gap:.45rem;align-items:center;color:#e1def4;font-size:.8rem}
.member-profile-actions{display:flex;gap:.55rem;flex-wrap:wrap;justify-content:flex-end}.member-profile-actions .btn-outline-secondary{color:#fff;border-color:rgba(255,255,255,.45);background:rgba(255,255,255,.05)}.member-profile-actions .btn-outline-secondary:hover{background:#fff;color:var(--gym-sidebar,#11172e)}.member-profile-actions .btn-soft{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.2)}.member-profile-actions .btn-primary{background:#fff;color:var(--gym-primary,#6651d8);border-color:#fff}
.profile-summary-list{display:grid;gap:.85rem}.profile-summary-list>div{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:.75rem;border-bottom:1px solid #eef0f6}.profile-summary-list>div:last-child{border-bottom:0;padding-bottom:0}.profile-summary-list span{color:var(--ink-soft);font-size:.8rem}.profile-summary-list strong{text-align:end;font-size:.88rem;overflow-wrap:anywhere}.profile-note{padding:.85rem;border-radius:12px;background:#f8f9fd;color:#626d88;font-size:.82rem;line-height:1.75}

.portal-hero{position:relative;isolation:isolate;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2rem;padding:clamp(1.4rem,3vw,2.3rem);border-radius:26px;color:#fff;background:radial-gradient(circle at 82% 18%,color-mix(in srgb,var(--gym-accent,#a28ef5) 36%,transparent),transparent 30%),linear-gradient(120deg,var(--gym-sidebar,#11172e),var(--gym-primary,#6651d8));box-shadow:0 20px 55px color-mix(in srgb,var(--gym-sidebar,#11172e) 18%,transparent)}
.portal-hero::after{content:"";position:absolute;z-index:-1;width:320px;aspect-ratio:1;border-radius:50%;border:1px solid rgba(255,255,255,.1);inset-inline-end:-110px;inset-block-end:-160px;box-shadow:0 0 0 50px rgba(255,255,255,.025),0 0 0 100px rgba(255,255,255,.015)}
.portal-eyebrow{font-size:.75rem;font-weight:800;color:#d9d1ff;letter-spacing:.07em}.portal-hero h1{font-size:clamp(1.7rem,4vw,2.6rem);font-weight:800;margin:.35rem 0}.portal-hero-meta{display:flex;align-items:center;gap:.5rem;color:#e1def4}.portal-goal-chip{display:inline-flex;align-items:center;gap:.6rem;margin-top:1.2rem;padding:.55rem .75rem;border-radius:12px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(8px);font-size:.8rem}.portal-goal-chip span{color:#d9d4ef}.portal-qr-panel{text-align:center}.portal-qr-panel .qr-frame{box-shadow:0 18px 35px rgba(8,10,32,.24)}

@media(max-width:767.98px){
  .page-toolbar{align-items:stretch;flex-direction:column}.page-toolbar-actions,.search-control{width:100%}.search-control .form-control{min-width:0;flex:1}
  .member-profile-hero{align-items:flex-start;flex-direction:column}.member-profile-actions{width:100%;justify-content:flex-start}.member-profile-actions .btn{flex:1 1 auto}
  .portal-hero{grid-template-columns:1fr;text-align:center}.portal-hero-meta{justify-content:center}.portal-goal-chip{justify-content:center}.portal-qr-panel{margin:auto}
}
@media(max-width:575.98px){
  .member-table{min-width:0}.member-table thead{display:none}.member-table tbody,.member-table tr,.member-table td{display:block;width:100%}.member-table tr{padding:.85rem;border-bottom:1px solid #edf0f6}.member-table td{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.42rem 0;border:0}.member-table td::before{content:attr(data-label);color:#7b849d;font-size:.75rem;font-weight:700}.member-table td[data-label=""]::before{display:none}.member-table td .member-cell{margin-inline-start:auto}.member-table td:last-child .btn{width:auto}
  .member-profile-avatar{width:54px;height:54px;flex-basis:54px;border-radius:17px}.member-profile-actions{display:grid;grid-template-columns:1fr 1fr}
  .portal-hero{padding:1.25rem}.portal-qr-panel .qr-frame{min-width:180px}
}

/* Outline actions follow the gym palette instead of Bootstrap's default blue. */
.btn-outline-primary{
 --bs-btn-color:var(--gym-primary,#6651d8);
 --bs-btn-border-color:var(--gym-primary,#6651d8);
 --bs-btn-hover-color:#fff;
 --bs-btn-hover-bg:var(--gym-primary,#6651d8);
 --bs-btn-hover-border-color:var(--gym-primary,#6651d8);
 --bs-btn-active-color:#fff;
 --bs-btn-active-bg:var(--gym-primary,#6651d8);
 --bs-btn-active-border-color:var(--gym-primary,#6651d8);
 --bs-btn-disabled-color:var(--gym-primary,#6651d8);
 --bs-btn-disabled-border-color:var(--gym-primary,#6651d8);
 --bs-btn-disabled-bg:transparent;
 color:var(--bs-btn-color);
 border-color:var(--bs-btn-border-color);
 background:#fff;
}
.btn-outline-primary:hover,
.btn-outline-primary:focus-visible,
.btn-outline-primary:active,
.btn-outline-primary.active,
.btn-check:checked+.btn-outline-primary{
 color:#fff;
 background:var(--gym-primary,#6651d8);
 border-color:var(--gym-primary,#6651d8);
}
.btn-outline-primary:focus-visible{
 outline:3px solid color-mix(in srgb,var(--gym-primary,#6651d8) 40%,white);
 outline-offset:3px;
 box-shadow:none;
}
.btn-outline-primary:disabled,.btn-outline-primary.disabled{
 color:var(--gym-primary,#6651d8);
 background:transparent;
 border-color:var(--gym-primary,#6651d8);
}
.btn-outline-primary.is-loading::after{color:var(--gym-primary,#6651d8)}
