/* Gestionale neutrals + the exact blue/yellow of the supplied FitnessLab logo. */
:root{--ink:#1f2937;--blue:#013f5d;--blue-soft:#eaf1f5;--yellow:#fecc4e;--surface:#fff;--background:#f2f4f6;--muted:#637080;--line:#dfe5ea;--error:#a42736;--radius:20px;--body:"Segoe UI",Arial,sans-serif;--display:"Bahnschrift","Arial Narrow","Segoe UI",sans-serif}
*{box-sizing:border-box}html{font-family:var(--body);color:var(--ink);background:var(--background);-webkit-text-size-adjust:100%}body{margin:0}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}a{color:var(--blue)}button{touch-action:manipulation}button:disabled{cursor:wait;opacity:.65}img{max-width:100%;height:auto;display:block}h1,h2,p{margin:0}h1,h2{font-family:var(--display);font-weight:700;letter-spacing:-.035em}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:4px}input:focus{outline:3px solid #013f5d22;outline-offset:1px;border-color:var(--blue)}[hidden]{display:none!important}.icon{width:24px;height:24px;flex-shrink:0;vertical-align:middle}.eyebrow{font-size:11px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;color:var(--muted)}.brand{display:block;width:205px;flex-shrink:0}.button{border:0;display:inline-flex;align-items:center;justify-content:center;gap:14px;min-height:54px;padding:14px 22px;border-radius:13px;font-weight:700;font-size:15px;text-decoration:none}.button-primary{background:var(--yellow);color:var(--blue)}.button-primary:hover{background:#f4bd31}.icon-button{border:1px solid var(--line);background:var(--surface);width:46px;height:46px;border-radius:14px;display:grid;place-items:center;color:var(--blue)}.icon-button:hover{background:var(--blue-soft)}.notice{padding:13px 15px;border-radius:12px;line-height:1.5;font-size:14px;margin:0 0 22px}.notice-error{color:var(--error);background:#fff1f2;border:1px solid #f4d4da}.notice-info{color:var(--blue);background:var(--blue-soft);border:1px solid #d4e2eb}.skip-link{position:fixed;top:-100px;left:16px;z-index:20;background:var(--yellow);padding:14px;border-radius:8px}.skip-link:focus{top:16px}

/* Login: a club identity on the left, a quiet, focused form on the right. */
.login-shell{min-height:100vh;min-height:100svh;display:grid;grid-template-columns:minmax(0,1fr) minmax(440px,.94fr);background:var(--surface)}.login-story{background:var(--blue);color:#fff;display:flex;flex-direction:column;padding:54px clamp(32px,5.6vw,96px);position:relative;overflow:hidden}.brand-login{width:264px;background:white;padding:14px 18px;border-radius:13px}.story-copy{margin:auto 0;padding:76px 0 42px;max-width:570px}.story-eyebrow{color:#b2cbd7}.story-copy h1{font-size:clamp(42px,4.7vw,70px);line-height:1.1;letter-spacing:-.04em;margin:22px 0 25px}.story-copy h1 span{color:var(--yellow)}.story-copy p{color:#d4e3eb;font-size:18px;line-height:1.7;max-width:370px}.story-services{display:flex;flex-wrap:wrap;gap:10px 23px;padding:22px 0 42px}.story-services div{display:flex;gap:9px;align-items:center;font-size:12px;color:#d4e3eb}.story-services .icon{width:20px;height:20px;color:var(--yellow)}.story-bottom{display:flex;align-items:center;gap:16px;font-size:11px;color:#b2cbd7;padding-top:22px;border-top:1px solid #ffffff24}.story-line{height:1px;width:34px;background:var(--yellow)}.login-panel{display:flex;flex-direction:column;justify-content:center;padding:72px 48px 26px;min-width:0}.login-form-wrap{width:100%;max-width:390px;margin:auto}.login-form-wrap h2{font-size:44px;line-height:1.15;margin:12px 0 12px}.intro{color:var(--muted);font-size:15px;line-height:1.6;margin-bottom:35px}.field{margin-bottom:23px}.field label{display:block;font-size:14px;font-weight:600;margin-bottom:10px}.field input{width:100%;height:56px;border:1px solid var(--line);border-radius:12px;background:#fafbfd;padding:0 16px;color:var(--ink);font-size:16px;transition:border-color .15s}.field input::placeholder{color:#8a929e}.password-field{position:relative}.password-field input{padding-right:62px}.password-toggle{position:absolute;right:6px;top:6px;width:44px;height:44px;display:grid;place-items:center;border:0;background:transparent;color:var(--muted);border-radius:8px}.password-toggle[aria-pressed=true]{color:var(--blue);background:var(--blue-soft)}.login-submit{width:100%;justify-content:space-between;margin-top:5px;min-height:58px}.login-submit[aria-busy=true] .icon{animation:waiting-arrow .8s ease-in-out infinite alternate}.login-help{margin:26px 0 31px;font-size:13px;color:var(--muted)}.login-help summary{cursor:pointer;width:fit-content;color:var(--blue);min-height:28px;padding:4px 0}.login-help p{margin-top:12px;line-height:1.7}.login-footnote{display:flex;gap:8px;align-items:center;justify-content:center;font-size:12px;color:var(--muted)}.login-footnote .icon{width:15px;height:15px}.login-footer{text-align:center;font-size:11px;color:var(--muted);margin-top:58px;padding-bottom:env(safe-area-inset-bottom)}

/* Member home. The yellow membership strip echoes the supplied wordmark. */
.app-header{background:var(--surface);border-bottom:1px solid var(--line);padding:0 32px}.header-inner{max-width:1080px;margin:auto;min-height:90px;display:flex;align-items:center;gap:28px}.header-label{font-size:12px;border-left:1px solid var(--line);padding-left:28px;color:var(--muted)}.header-actions{display:flex;align-items:center;gap:22px;margin-left:auto}.notification-button{position:relative}.notification-dot{position:absolute;top:9px;right:10px;width:8px;height:8px;border-radius:50%;background:var(--yellow);border:1px solid white}.logout-button{display:flex;align-items:center;gap:8px;border:0;background:transparent;min-height:46px;font-size:13px;color:var(--muted);padding:0 6px}.logout-button .icon{width:19px;height:19px}.home-main{max-width:1080px;margin:auto;padding:42px 0 0}.welcome{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:32px}.welcome h1{font-size:47px;margin:13px 0 10px;line-height:1.14;overflow-wrap:anywhere}.welcome-period{color:#b98100}.welcome-copy>p:last-child{color:var(--muted);font-size:15px}.member-chip{display:flex;align-items:center;gap:12px;min-width:0;max-width:340px;text-align:left;border:0;background:transparent;border-radius:12px;padding:7px}.member-chip>span:nth-child(2){min-width:0}.member-chip strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:215px}.member-chip small{display:block;color:var(--muted);font-size:12px;margin-top:5px}.member-chip>.icon{color:var(--muted);width:16px}.avatar{width:48px;height:48px;display:grid;place-items:center;background:#dbe7ee;color:var(--blue);font-size:15px;font-weight:700;border-radius:50%;flex-shrink:0}.overview{display:grid;grid-template-columns:1fr 1fr;gap:20px}.membership-summary,.next-session{padding:26px 28px;border-radius:var(--radius);min-height:204px;display:flex;flex-direction:column}.membership-summary{background:var(--blue);color:white;border-left:8px solid var(--yellow)}.next-session{background:var(--surface);border:1px solid var(--line)}.summary-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:15px}.membership-summary .eyebrow{color:#b2cbd7}.membership-summary .summary-top .icon{color:var(--yellow)}.next-session .summary-top .icon{color:var(--blue)}.overview h2{font-size:26px;line-height:1.2;letter-spacing:-.025em;overflow-wrap:anywhere}.overview p{font-size:13px;line-height:1.6;margin-top:8px;color:var(--muted)}.membership-summary p{color:#d4e3eb}.text-button{border:0;background:transparent;color:var(--blue);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0 0;min-height:44px;margin-top:auto;text-align:left}.text-button .icon{width:19px;height:19px}.membership-summary .text-button{color:var(--yellow)}.services{margin-top:38px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:19px}.section-heading h2{font-size:27px;margin-top:7px}.section-note{font-size:12px;color:var(--muted);padding-bottom:3px}.service-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.service-card{display:flex;align-items:center;gap:19px;text-align:left;padding:24px;border:1px solid var(--line);border-radius:16px;background:var(--surface);width:100%;min-height:106px;transition:transform .15s,border-color .15s,box-shadow .15s}.service-card:hover{border-color:#aac3d1;transform:translateY(-2px);box-shadow:0 6px 18px #013f5d08}.service-icon{background:var(--blue-soft);color:var(--blue);width:51px;height:51px;border-radius:14px;display:grid;place-items:center;flex-shrink:0}.service-copy{display:block;min-width:0}.service-copy strong{display:block;font-size:16px;font-weight:650;margin-bottom:7px;line-height:1.2}.service-copy>span{display:block;color:var(--muted);font-size:12px;line-height:1.5}.service-arrow{margin-left:auto;width:18px;height:18px;color:#8c9daa}.count-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:6px;background:var(--yellow);font-size:11px;color:var(--blue);padding:0 5px;vertical-align:1px;margin-left:5px}.renewal-note{display:flex;gap:16px;padding:23px 25px;align-items:center;background:#e8edf1;border-radius:14px;margin-top:25px}.renewal-note>.icon{color:var(--muted);width:22px;height:22px}.renewal-note strong{font-size:13px;font-weight:600;display:flex;gap:10px;align-items:center}.renewal-note p{font-size:12px;color:var(--muted);margin-top:6px;line-height:1.6}.coming-soon{font-size:10px;border:1px solid #c5d0d8;border-radius:5px;color:var(--muted);padding:3px 6px;font-weight:500}.home-footer{display:flex;justify-content:space-between;gap:15px;padding:29px 0;font-size:11px;color:var(--muted)}.bottom-nav{display:none}.auth-loading{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:28px;text-align:center;color:var(--muted);font-size:14px}.auth-loading>img{width:220px;margin-bottom:20px}.spinner{width:25px;height:25px;border:3px solid var(--line);border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite}.auth-error{max-width:400px}.auth-error p{margin-bottom:20px;line-height:1.6}.auth-error>a{display:block;font-size:13px;margin-top:18px;min-height:44px;padding-top:10px}

/* Service details are modal sheets on a phone, dialogs on a large screen. */
dialog{border:0;border-radius:22px;padding:0;max-width:640px;width:calc(100% - 48px);max-height:85svh;color:var(--ink);box-shadow:0 24px 80px #013f5d33;overflow:auto;background:white}dialog::backdrop{background:#122b3bb3;backdrop-filter:blur(3px)}.dialog-header{display:flex;justify-content:space-between;gap:18px;padding:25px 28px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:1;background:white;align-items:center}.dialog-header h2{font-size:28px;margin-top:6px}.dialog-content{padding:25px 28px 30px;min-height:150px}.dialog-content .spinner{display:block;margin:12px auto}.dialog-loading{text-align:center;color:var(--muted);font-size:14px}.detail-list{margin:0}.detail-row{display:grid;grid-template-columns:1fr 1.3fr;gap:14px;padding:12px 0;border-bottom:1px solid var(--line);font-size:14px}.detail-row dt{color:var(--muted)}.detail-row dd{margin:0;overflow-wrap:anywhere}.detail-section{font-size:13px;font-weight:700;margin:26px 0 6px;color:var(--blue)}.detail-section:first-child{margin-top:0}.detail-card{padding:18px;border:1px solid var(--line);border-radius:14px;margin-bottom:14px}.detail-card:last-child{margin-bottom:0}.detail-card h3{font-size:18px;color:var(--blue);margin:0 0 10px;line-height:1.4;overflow-wrap:anywhere}.detail-card p{font-size:13px;line-height:1.7;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere}.detail-card .detail-list{margin-top:13px}.detail-card .detail-row{font-size:12px;padding:9px 0}.detail-card .detail-row:last-child{border-bottom:0}.calendar-list{padding:0;list-style:none;margin:14px 0 0}.calendar-list li{border-top:1px solid var(--line);padding:11px 0;display:flex;justify-content:space-between;gap:14px;font-size:13px;color:var(--muted)}.calendar-list li span:first-child{color:var(--ink)}.empty-state{padding:22px 0;line-height:1.7;color:var(--muted);font-size:14px}.feed-meta{font-size:11px!important;margin-bottom:12px!important;color:var(--muted)}.unread-tag{display:inline-block;background:var(--yellow);color:var(--blue);padding:3px 7px;border-radius:5px;font-size:10px;margin-bottom:10px}.load-more{margin-top:22px;width:100%}.retry-button{margin-top:14px}.body-modal{overflow:hidden}
.member-actions{display:flex;align-items:center;gap:12px;flex-shrink:0}.member-card{text-align:center}.member-card h3{font-size:20px;margin:0 0 20px;color:var(--blue)}.member-card-qr{width:320px;max-width:100%;margin:0 auto 18px;image-rendering:pixelated}.member-card p{font-size:14px;line-height:1.6;color:var(--muted)}.member-card-code{overflow-wrap:anywhere;margin-bottom:14px;font-family:monospace}
@keyframes spin{to{transform:rotate(360deg)}}@keyframes waiting-arrow{to{transform:translateX(4px)}}
@media(min-width:1500px){.login-shell{max-width:1500px;margin:auto;min-height:100svh}.login-story{padding-left:85px;padding-right:85px}}
@media(max-width:1150px){.home-main{margin:0 32px}.login-story{padding-left:36px;padding-right:36px}.story-services{gap:14px;flex-direction:column}.story-copy h1{font-size:49px}.login-panel{padding-left:36px;padding-right:36px}}
@media(max-width:760px){.login-shell{display:block}.login-story{padding:24px 24px 28px}.brand-login{width:220px;padding:10px 14px;border-radius:10px}.story-copy{padding:30px 0 0;margin:0}.story-eyebrow{display:none}.story-copy h1{font-size:34px;margin:0 0 14px;line-height:1.13}.story-copy p{font-size:13px;line-height:1.6;max-width:300px}.story-services,.story-bottom{display:none}.login-panel{padding:30px 24px 22px}.login-form-wrap{max-width:420px}.login-form-wrap>.eyebrow{display:none}.login-form-wrap h2{font-size:30px;margin-top:0;margin-bottom:9px}.intro{font-size:14px;margin-bottom:26px}.field{margin-bottom:19px}.login-help{margin-top:22px;margin-bottom:24px}.login-footer{margin-top:30px}.app-header{padding:0 22px}.header-inner{min-height:76px;gap:12px}.brand{width:185px}.header-label{display:none}.header-actions{gap:8px}.logout-button{width:42px;justify-content:center}.logout-button>span{display:none}.icon-button{width:42px;height:42px;border-radius:12px}.home-main{margin:0;padding:29px 22px calc(100px + env(safe-area-inset-bottom))}.welcome{margin-bottom:24px}.welcome h1{font-size:37px;margin:10px 0}.welcome-copy>p:last-child{font-size:13px}.member-chip{padding:0}.member-chip>span:nth-child(2),.member-chip>.icon{display:none}.avatar{width:44px;height:44px;font-size:13px}.overview{grid-template-columns:1fr;gap:14px}.membership-summary,.next-session{min-height:174px;padding:21px 23px;border-radius:17px}.summary-top{margin-bottom:17px}.overview h2{font-size:25px}.overview p{font-size:12px}.services{margin-top:31px}.section-heading{margin-bottom:17px}.section-heading h2{font-size:25px}.section-note{display:none}.service-grid{grid-template-columns:1fr;gap:11px}.service-card{padding:17px 19px;gap:16px;min-height:90px;border-radius:14px}.service-icon{width:46px;height:46px;border-radius:12px}.service-copy strong{font-size:15px;margin-bottom:6px}.service-copy>span{font-size:12px}.service-arrow{width:16px}.renewal-note{padding:20px 18px;margin-top:22px;align-items:flex-start;gap:12px}.renewal-note>.icon{margin-top:1px}.home-footer{padding:25px 0 0;font-size:10px}.home-footer>span:last-child{display:none}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border-top:1px solid var(--line);padding:8px 8px calc(8px + env(safe-area-inset-bottom));z-index:5}.bottom-nav a,.bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-decoration:none;border:0;background:transparent;min-height:51px;color:var(--muted);font-size:10px;border-radius:10px}.bottom-nav [aria-current=page]{color:var(--blue);background:var(--blue-soft);font-weight:700}.bottom-nav .icon{width:21px;height:21px}dialog{width:100%;max-width:100%;max-height:90svh;margin:auto 0 0;border-radius:22px 22px 0 0}.dialog-header{padding:22px 22px 18px}.dialog-header h2{font-size:26px}.dialog-content{padding:20px 22px calc(28px + env(safe-area-inset-bottom))}.detail-row{grid-template-columns:1fr 1.1fr;font-size:13px;gap:12px}.auth-loading{min-height:100svh}}
@media(max-width:360px){.app-header{padding:0 16px}.brand{width:165px}.home-main{padding-left:16px;padding-right:16px}.header-actions{gap:4px}.login-story,.login-panel{padding-left:20px;padding-right:20px}.story-copy h1{font-size:30px}.service-card{gap:12px;padding:15px}.service-copy>span{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
