/* Gymspace brand proposal. Local assets only; no changes to app permissions. */
:root{
 --gs-orange:#FF7728;--gs-blue:#09A6DB;--gs-pink:#F7488C;--gs-lime:#8FB928;
 --gs-black:#000000;--gs-gray:#4B4B4B;--gs-ink:#172329;--gs-muted:#5d6b72;
 --gs-blue-ink:#00617f;--gs-orange-ink:#983b08;--gs-pink-ink:#9d174b;--gs-lime-ink:#3f5710;
 --gs-blue-soft:#eaf8fd;--gs-orange-soft:#fff2e8;--gs-pink-soft:#fff0f6;--gs-lime-soft:#f1f7e5;
 --gs-border:#dde9ee;--gs-canvas:#f5fafc;
 color:var(--gs-ink);background:var(--gs-canvas);
}
body{background:var(--gs-canvas)}
h1,h2,h3,.top-path strong,.list-row-title{color:var(--gs-ink)}
.muted,.caption,.page-intro p,.stat-top,.stat-hint{color:var(--gs-muted)}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
 outline:3px solid var(--gs-blue-ink);outline-offset:3px;
}
input[type=checkbox],input[type=radio],.toggle-course-shifts input{accent-color:var(--gs-blue-ink)}
.input,select,textarea{color:var(--gs-ink);border-color:#ccdce3}
.input:focus,select:focus,textarea:focus{border-color:var(--gs-blue);box-shadow:0 0 0 3px #09a6db20}
label.field,.filter-field{color:var(--gs-gray)}
.spinner{border-color:#cceef9;border-top-color:var(--gs-blue)}
/* A light, familiar workspace with the original navigation structure. */
.side{background:#fff;color:var(--gs-ink);border-right:1px solid var(--gs-border)}
.side .brand{padding:0 7px}
.sidebar-logo{padding:4px 0;background:transparent;border-radius:0}
.side-tag{border-color:var(--gs-border);color:var(--gs-muted);background:#f7fbfd;letter-spacing:1.1px}
.nav button{color:var(--gs-gray);border-radius:11px;font-weight:650}
.nav button .nav-icon{color:var(--gs-blue-ink)}
.nav button:hover{background:var(--gs-blue-soft);color:var(--gs-ink)}
.nav button.active{background:#e1f5fc;color:var(--gs-blue-ink)}
.nav button.active:before{background:var(--gs-orange);height:24px;width:4px}
.nav button.active .nav-icon{color:var(--gs-blue-ink)}
.side-bottom{border-color:var(--gs-border)}
.avatar{background:var(--gs-orange-soft);color:var(--gs-orange-ink)}
.userbox .who small{color:var(--gs-muted)}
.side-logout{color:var(--gs-gray);border-color:#d4e3e9;background:#fff}
.side-logout:hover{background:var(--gs-orange-soft);border-color:#ffc9a9}
.top{border-bottom-color:var(--gs-border);background:#fff}
.top-path{color:var(--gs-muted)}
.online-dot{background:var(--gs-lime)}
.pill{background:var(--gs-blue-soft);color:var(--gs-blue-ink)}
.card,.stat,.grafik-workspace{border-color:var(--gs-border);box-shadow:0 5px 20px #25435104}
.btn{background:var(--gs-orange);border-color:var(--gs-orange);color:#24150c;font-weight:750;box-shadow:0 2px 0 #00000006}
.btn:hover{background:#f46819;border-color:#f46819;color:#24150c}
.btn-white{background:#fff;color:var(--gs-gray);border-color:#d6e3e9;box-shadow:none}
.btn-white:hover{background:var(--gs-blue-soft);border-color:#b9dfed;color:var(--gs-blue-ink)}
.btn-soft{background:var(--gs-blue-soft);border-color:#c6e9f5;color:var(--gs-blue-ink);box-shadow:none}
.btn-soft:hover{background:#d8f2fc;border-color:#9fd7ec;color:var(--gs-blue-ink)}
.btn-success{background:var(--gs-lime-soft);border-color:#d3e3aa;color:var(--gs-lime-ink)}
.btn-success:hover{background:#e6f0cf;border-color:#bdd58a;color:var(--gs-lime-ink)}
.btn-danger{background:var(--gs-pink-soft);border-color:#f6bbd2;color:var(--gs-pink-ink)}
.btn-danger:hover{background:#ffe0ec;border-color:#f39abb;color:var(--gs-pink-ink)}
.btn-link{color:var(--gs-blue-ink)}
.btn-link.danger{color:var(--gs-pink-ink)}
.grafik-tabs .btn:not(.btn-white),.private-panel-tabs .btn:not(.btn-white){background:var(--gs-blue);border-color:var(--gs-blue);color:#052a36}
.grafik-tabs .btn:not(.btn-white):hover,.private-panel-tabs .btn:not(.btn-white):hover{background:#06b2e9;border-color:#06b2e9}
.notice,.readonly-schedule-notice,.activity-notice{background:var(--gs-blue-soft);border:1px solid #ceeaf5;color:#335765;border-left:3px solid var(--gs-blue)}
.notice.warning,.parallel-indicator{background:var(--gs-orange-soft);border-color:#ffd2b8;color:var(--gs-orange-ink)}
.stat,.finance-summary>.card{position:relative;overflow:hidden}
.stat::before,.finance-summary>.card::before{content:"";height:4px;position:absolute;inset:0 0 auto;background:var(--gs-blue)}
.stat:nth-child(2)::before,.finance-summary>.card:nth-child(2)::before{background:var(--gs-orange)}
.stat:nth-child(3)::before,.finance-summary>.card:nth-child(3)::before{background:var(--gs-lime)}
.stat:nth-child(4)::before,.finance-summary>.card:nth-child(4)::before{background:var(--gs-pink)}
.stat-symbol{background:var(--gs-blue-soft);color:var(--gs-blue-ink)}
.stat:nth-child(2) .stat-symbol{background:var(--gs-orange-soft);color:var(--gs-orange-ink)}
.stat:nth-child(3) .stat-symbol{background:var(--gs-lime-soft);color:var(--gs-lime-ink)}
.stat:nth-child(4) .stat-symbol{background:var(--gs-pink-soft);color:var(--gs-pink-ink)}
.chip.green,.chip.approved{background:var(--gs-lime-soft);color:var(--gs-lime-ink);border-color:#d8e5b8}
.chip.amber,.chip.submitted{background:var(--gs-orange-soft);color:var(--gs-orange-ink);border-color:#ffd9c2}
.chip.red,.chip.rejected{background:var(--gs-pink-soft);color:var(--gs-pink-ink);border-color:#f6c6d9}
.chip.blue,.chip.planned{background:var(--gs-blue-soft);color:var(--gs-blue-ink);border-color:#c5e8f5}
.data-table th{background:#f2f9fc;color:#53666e}.data-table td{border-color:#edf3f6}
.planning-inline{border-color:var(--gs-border)}.planning-inline summary{color:var(--gs-blue-ink)}
.issue-tile{background:#f7fcfe;color:var(--gs-blue-ink);border-color:var(--gs-border)}
.issue-tile.selected,.issue-tile:hover{background:var(--gs-orange-soft);border-color:#ffcaa9}
.staff-availability-filter{background:var(--gs-blue-soft)}
.candidate-available{color:var(--gs-lime-ink)}.candidate-conflict{color:var(--gs-pink-ink)}
.trainer-pill{border-color:#c6e7f4;color:var(--gs-blue-ink);background:#fff}
.day.today:not(.day-off){border-color:var(--gs-blue)}
.day:not(.day-off) .day-head,.hour-head:not(.day-off),.month-heading{background:#edf8fc;color:var(--gs-blue-ink)}
.hour-event,.month-event,.course-card{background:var(--gs-blue-soft);border-left-color:var(--gs-blue)}
.hour-event strong{color:var(--gs-blue-ink)}
.hour-event.work,.month-event.work,.reception-duty{background:var(--gs-lime-soft);border-left-color:var(--gs-lime)}
.reception-duty small{color:#526138}.reception-table thead th:not(.day-off){background:#edf8fc;color:var(--gs-blue-ink)}
.reception-table tbody th{background:#f8fcfe}.instructor-lesson:hover{background:var(--gs-blue-soft)}
.hour-add{background:#fff;color:var(--gs-blue-ink);border-color:#94d5ec}
.hour-cell:hover .hour-add,.hour-add:focus-visible{background:var(--gs-blue-soft)}
/* Keep user-defined days off gray, including when today or selected. */
.day-off,.hour-cell.day-off,.hour-head.day-off,.month-day.day-off{background:#e5e7eb;color:#374151}
.day-off .day-head{background:#d1d5db}
/* Login: the Gymspace logo and form, without promotional copy. */
.auth.auth-gymspace{
 min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;
 position:relative;isolation:isolate;overflow:hidden;padding:48px 24px;
 background:radial-gradient(ellipse at 4% 0%,#e8f8fd 0,transparent 43%),#fff;
}
.auth-gymspace::before,.auth-gymspace::after{content:"";position:absolute;z-index:-1;pointer-events:none;border-radius:50%}
.auth-gymspace::before{width:1100px;height:560px;left:-400px;bottom:-440px;border:46px solid var(--gs-blue);transform:rotate(12deg)}
.auth-gymspace::after{width:1180px;height:580px;right:-440px;bottom:-445px;border:54px solid var(--gs-orange);transform:rotate(-14deg)}
.auth-gymspace .gymspace-login-card{
 width:min(100%,440px);padding:42px 42px 38px;border:1px solid #e0ebf0;border-radius:24px;
 background:#fff;box-shadow:0 18px 70px #094a6810;position:relative;
}
.login-gymspace-logo{display:block;width:270px;max-width:100%;height:auto;object-fit:contain;margin:0 auto 28px}
.brand-colour-line{display:flex;width:64px;height:4px;gap:3px;margin:0 auto 28px}
.brand-colour-line span{flex:1;border-radius:4px;background:var(--gs-blue)}
.brand-colour-line span:nth-child(2){background:var(--gs-orange)}
.brand-colour-line span:nth-child(3){background:var(--gs-pink)}
.brand-colour-line span:nth-child(4){background:var(--gs-lime)}
.gymspace-login-card h1{font-size:26px;letter-spacing:-.7px;margin-bottom:28px;text-align:center;font-weight:750}
.gymspace-login-card .stack{gap:19px}
.gymspace-login-card .input{min-height:48px;background:#fbfdfe;padding:12px 14px}
.gymspace-login-card .btn{width:100%;min-height:48px;margin-top:5px;border-radius:11px;font-size:15px}
@media(max-width:940px){.side .brand{padding:0}.sidebar-logo{background:transparent}.nav button.active:before{left:10px}}
@media(max-width:650px){
 .side{background:#fff;border-top:1px solid var(--gs-border);border-right:0;box-shadow:0 -3px 18px #17506906}
 .nav button{color:var(--gs-gray)}.nav button.active{background:var(--gs-blue-soft);color:var(--gs-blue-ink)}
 .auth.auth-gymspace{padding:28px 20px}
 .auth-gymspace .gymspace-login-card{padding:32px 25px;border-radius:20px}
 .login-gymspace-logo{width:245px;margin-bottom:24px}
 .auth-gymspace::before{left:-800px;bottom:-480px}.auth-gymspace::after{right:-930px;bottom:-480px}
 .gymspace-login-card h1{font-size:24px}
}
@media(prefers-reduced-motion:reduce){.btn,.input,select,textarea{transition:none}.hour-event[role=button]:hover{transform:none}}
