:root{
  --bg:#06101e;--panel:#0d1829;--panel2:#111f34;--text:#f7fbff;--muted:#9db0c8;
  --line:rgba(255,255,255,.09);--blue:#2f80ff;--blue2:#63a4ff;--green:#20c978;
  --red:#ff5b66;--shadow:0 18px 60px rgba(0,0,0,.38);--radius:24px
}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;min-height:100vh;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:#06101e} button,input{font:inherit} button{cursor:pointer}.hidden{display:none!important}

.auth-landing{position:relative;min-height:100vh;background:url('assets/spinning-bg.jpg') center center/cover no-repeat;overflow:hidden;display:flex;flex-direction:column}
.auth-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,11,22,.96) 0%,rgba(5,15,29,.83) 43%,rgba(6,15,27,.54) 66%,rgba(2,8,15,.70) 100%)}
.auth-overlay::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 72% 42%,rgba(47,128,255,.12),transparent 32%),linear-gradient(180deg,rgba(0,0,0,.08),rgba(0,0,0,.48))}
.auth-content{position:relative;z-index:2;flex:1;width:min(1380px,calc(100% - 56px));margin:auto;display:grid;grid-template-columns:minmax(420px,1fr) minmax(430px,520px);align-items:center;gap:70px;padding:55px 0 70px}
.auth-brand-panel{max-width:560px}.auth-logo{width:190px;height:190px;object-fit:contain;filter:drop-shadow(0 16px 30px rgba(0,0,0,.35));margin-bottom:18px}
.auth-title-block h1{font-size:clamp(42px,4.4vw,70px);line-height:.98;letter-spacing:-2px;margin:0;font-weight:900;text-transform:uppercase}.auth-title-block h1 span{color:var(--blue)}.auth-title-block sup{font-size:.32em;top:-1.2em;position:relative;margin-left:4px}.auth-accent{width:60px;height:4px;border-radius:99px;background:var(--blue);margin:22px 0}.auth-lead{max-width:450px;font-size:19px;line-height:1.5;color:#c8d4e4;margin:0 0 26px}.auth-features{display:grid;gap:16px}.feature{display:flex;align-items:flex-start;gap:14px}.feature-icon{width:42px;height:42px;border:1px solid rgba(47,128,255,.9);border-radius:50%;display:grid;place-items:center;color:var(--blue2);font-weight:900;flex:0 0 auto}.feature strong{display:block;font-size:14px;margin:1px 0 3px}.feature span{display:block;color:#b3c0d1;font-size:12px;line-height:1.45;max-width:290px}
.auth-card-wrap{display:flex;justify-content:flex-end}.card{background:linear-gradient(180deg,rgba(17,31,52,.96),rgba(12,24,42,.96));border:1px solid var(--line);box-shadow:var(--shadow);border-radius:var(--radius)}
.auth-card{width:100%;padding:42px;background:linear-gradient(180deg,rgba(16,30,49,.94),rgba(7,18,32,.94));backdrop-filter:blur(14px);border-color:rgba(255,255,255,.12)}.auth-card h2{font-size:38px;letter-spacing:-1px}.auth-card-sub{margin:8px 0 0}.eyebrow{font-size:12px;font-weight:800;letter-spacing:1.8px;color:var(--blue2);margin-bottom:8px}.muted{color:var(--muted);line-height:1.55}
.form-grid{display:grid;gap:18px;margin-top:28px}label{display:grid;gap:9px;color:#edf5ff;font-size:14px;font-weight:700}input{width:100%;border:1px solid rgba(255,255,255,.12);outline:none;border-radius:12px;padding:16px 17px;color:var(--text);background:rgba(4,14,26,.82)}input:focus{border-color:rgba(47,128,255,.8);box-shadow:0 0 0 4px rgba(47,128,255,.12)}
.primary-btn,.ghost-btn{border:0;border-radius:13px;padding:14px 18px;font-weight:800;transition:.18s ease}.primary-btn{color:#fff;background:linear-gradient(135deg,#2581ff,#1d66e7);box-shadow:0 10px 26px rgba(47,128,255,.30)}.primary-btn:hover{transform:translateY(-1px)}.primary-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.login-btn{margin-top:4px;font-size:16px}.ghost-btn{color:#d9e8fb;background:rgba(255,255,255,.06);border:1px solid var(--line)}.ghost-btn:hover{background:rgba(255,255,255,.09)}
.notice{padding:13px 15px;border-radius:13px;margin:18px 0 0}.warning{background:rgba(244,184,74,.12);border:1px solid rgba(244,184,74,.35);color:#ffe6ad}.message{margin-top:14px;min-height:22px;font-size:14px}.message.error{color:#ff9097}.message.success{color:#6ce0a5}.auth-footer{position:relative;z-index:2;width:min(1380px,calc(100% - 56px));margin:0 auto;padding:0 0 24px;color:#9aaabc;font-size:12px}

.app-shell{width:min(1180px,calc(100% - 28px));margin:0 auto;padding:22px 0 60px;background:radial-gradient(circle at 20% 0%,rgba(47,128,255,.13),transparent 32%)}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.brand{display:flex;align-items:center;gap:13px}.brand-logo{width:64px;height:64px;object-fit:contain}.brand-title{font-size:18px;font-weight:900}.brand-subtitle{font-size:10px;letter-spacing:2px;color:var(--muted);margin-top:3px}
h1,h2,h3{margin:0;line-height:1.08}h2{font-size:clamp(25px,4vw,34px);letter-spacing:-.8px}h3{font-size:24px}.hero{padding:25px;display:flex;gap:24px;align-items:stretch;justify-content:space-between}.pass-box{min-width:250px;padding:18px;border-radius:20px;background:linear-gradient(135deg,rgba(47,128,255,.18),rgba(99,164,255,.08));border:1px solid rgba(99,164,255,.22)}.pass-label{font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--muted);font-weight:800}.pass-name{font-weight:800;font-size:17px;margin-top:8px}.pass-count{font-size:28px;font-weight:900;margin-top:14px}.pass-validity{font-size:12px;color:var(--muted);margin-top:6px}.section-head{display:flex;justify-content:space-between;align-items:end;gap:18px;margin:34px 2px 16px}.classes-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.class-card{padding:20px;position:relative;overflow:hidden}.class-card::after{content:"";position:absolute;width:120px;height:120px;border-radius:50%;background:rgba(47,128,255,.12);right:-45px;top:-45px}.class-day{font-size:12px;text-transform:uppercase;letter-spacing:1.5px;color:var(--blue2);font-weight:800}.class-time{font-size:30px;font-weight:900;margin-top:7px}.class-title{font-size:18px;font-weight:800;margin-top:8px}.class-meta{font-size:13px;color:var(--muted);margin:7px 0 17px}.class-footer{display:flex;align-items:center;justify-content:space-between;gap:10px}.capacity{font-size:13px;color:#d8e5f5}.room-head{align-items:center}.legend{display:flex;flex-wrap:wrap;gap:16px;color:var(--muted);font-size:13px;margin:0 2px 12px}.legend span{display:flex;align-items:center;gap:7px}.dot{width:10px;height:10px;border-radius:50%;display:inline-block}.dot.free{background:var(--green)}.dot.occupied{background:var(--red)}.dot.mine{background:var(--blue)}.dot.service{background:#657489}.room{padding:18px;overflow:hidden}.instructor-stage{width:min(260px,70%);margin:4px auto 22px;padding:11px;text-align:center;border-radius:14px;background:linear-gradient(135deg,rgba(47,128,255,.22),rgba(47,128,255,.09));border:1px solid rgba(99,164,255,.22);font-weight:900;letter-spacing:2px;font-size:12px}
.bikes-canvas{border-radius:20px;padding:28px 26px 24px;background:linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);background-size:34px 34px;border:1px solid var(--line)}.bike-row-label{text-align:center;color:var(--blue2);font-size:12px;font-weight:900;letter-spacing:1.6px;text-transform:uppercase;margin:0 0 16px}.bike-row{display:grid;align-items:center;justify-items:center;gap:18px}.bike-row.front{grid-template-columns:repeat(6,minmax(72px,1fr))}.bike-row.back{grid-template-columns:repeat(4,minmax(72px,1fr));max-width:760px;margin:0 auto}.row-divider{height:1px;background:linear-gradient(90deg,transparent,rgba(47,128,255,.45),transparent);margin:28px 0 22px}.bike-station{display:grid;place-items:center;gap:7px}.bike-icon{width:34px;height:28px;opacity:.48;position:relative}.bike-icon::before{content:"⌁";font-size:34px;line-height:28px;color:#5e86b8}.bike{width:72px;height:72px;border-radius:19px;border:1px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;color:white;font-weight:900;box-shadow:0 12px 22px rgba(0,0,0,.22);transition:.18s ease}.bike small{font-size:10px;font-weight:700;opacity:.88;margin-top:2px}.bike.free{background:linear-gradient(145deg,#20c978,#139a5b);border-color:rgba(255,255,255,.16)}.bike.occupied{background:linear-gradient(145deg,#d84651,#a92c37);cursor:not-allowed}.bike.mine{background:linear-gradient(145deg,#2f80ff,#1f5eca);cursor:default}.bike.service{background:linear-gradient(145deg,#5f6f84,#3f4b5c);cursor:not-allowed}.bike.free:hover{transform:scale(1.07)}.room-hint{text-align:center;color:var(--muted);font-size:13px;margin:18px 0 2px}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.68);display:grid;place-items:center;padding:20px;z-index:20;backdrop-filter:blur(8px)}.modal{width:min(480px,100%);padding:26px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}
@media(max-width:1000px){.auth-content{grid-template-columns:1fr;gap:35px;padding-top:34px}.auth-brand-panel{max-width:680px}.auth-logo{width:130px;height:130px}.auth-features{grid-template-columns:repeat(3,1fr)}.feature span{max-width:none}.auth-card-wrap{justify-content:flex-start}.auth-card{max-width:620px}.classes-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.auth-landing{background-position:58% center}.auth-overlay{background:linear-gradient(180deg,rgba(4,12,23,.88) 0%,rgba(4,12,23,.82) 40%,rgba(3,10,20,.96) 100%)}.auth-content{width:min(100% - 28px,1380px);padding:24px 0 42px;gap:24px}.auth-logo{width:96px;height:96px;margin-bottom:8px}.auth-title-block h1{font-size:38px}.auth-lead{font-size:16px}.auth-features{display:none}.auth-card{padding:24px}.auth-card h2{font-size:32px}.auth-footer{width:min(100% - 28px,1380px);font-size:11px}.app-shell{width:min(100% - 18px,1180px);padding-top:12px}.brand-logo{width:52px;height:52px}.brand-title{font-size:15px}.hero{flex-direction:column;padding:20px}.pass-box{min-width:0}.classes-grid{grid-template-columns:1fr}.section-head{align-items:center}.bike-row.front,.bike-row.back{grid-template-columns:repeat(3,1fr);max-width:none}.bike-row.back{grid-template-columns:repeat(2,1fr)}.bikes-canvas{padding:22px 12px}.bike{width:64px;height:64px;border-radius:17px}}

/* v3 – heti naptár + regisztráció */
.auth-links{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.text-btn,.text-link{background:none;border:0;color:var(--blue2);font-weight:800;text-decoration:none;padding:8px 0;font-size:13px}.text-btn:hover,.text-link:hover{text-decoration:underline}
.compact-hero{margin-bottom:8px}.calendar-head{align-items:center}.week-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.week-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;align-items:stretch}.calendar-loading{grid-column:1/-1;padding:26px;text-align:center;color:var(--muted)}
.day-column{min-width:0;overflow:hidden;border-radius:18px;box-shadow:none;background:linear-gradient(180deg,rgba(17,31,52,.86),rgba(9,20,36,.9))}.day-column.today{border-color:rgba(47,128,255,.75);box-shadow:inset 0 0 0 1px rgba(47,128,255,.28)}
.day-header{display:flex;justify-content:space-between;align-items:center;padding:13px 12px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.025)}.day-header span{font-size:11px;color:var(--blue2);font-weight:900;letter-spacing:1px}.day-header strong{font-size:21px}.day-classes{padding:8px;display:grid;gap:8px;align-content:start}.no-class{font-size:11px;color:#6f8096;padding:14px 4px;text-align:center}
.calendar-class{width:100%;border:1px solid rgba(99,164,255,.18);border-radius:13px;background:rgba(47,128,255,.07);color:var(--text);padding:10px;text-align:left;display:grid;gap:4px;transition:.15s ease}.calendar-class:hover{background:rgba(47,128,255,.14);border-color:rgba(99,164,255,.4);transform:translateY(-1px)}.cal-time{font-size:19px;font-weight:900;color:#fff}.cal-title{font-size:12px;font-weight:850}.cal-coach{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.free-badge{display:inline-flex;width:max-content;max-width:100%;padding:4px 7px;border-radius:99px;background:rgba(32,201,120,.15);color:#6ce0a5;font-size:10px;font-weight:900;margin-top:3px}.free-badge.full{background:rgba(216,70,81,.14);color:#ff9097}.my-booking{font-size:9px;color:#80b4ff;font-weight:800}
@media(max-width:1050px){.week-calendar{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:720px){.calendar-head{align-items:flex-start;flex-direction:column}.week-actions{width:100%;justify-content:stretch}.week-actions .ghost-btn{flex:1;padding:11px 9px;font-size:12px}.week-calendar{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:7px;gap:9px}.day-column{flex:0 0 74%;scroll-snap-align:start}.day-column.today{flex-basis:78%}.auth-links{align-items:flex-start;flex-direction:column;gap:5px}.calendar-class{padding:13px}.cal-time{font-size:24px}}

/* v3 admin */
.admin-body{background:radial-gradient(circle at 15% 0%,rgba(47,128,255,.16),transparent 32%),#06101e;min-height:100vh}.admin-login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.admin-login{width:min(480px,100%);padding:36px}.admin-logo{width:110px;height:110px;object-fit:contain;margin-bottom:12px}.admin-login h1{font-size:36px}.admin-shell{width:min(1180px,calc(100% - 28px));margin:auto;padding:22px 0 60px}.admin-topbar{margin-bottom:20px}.admin-welcome{padding:24px;display:flex;justify-content:space-between;align-items:center;gap:18px}.admin-stat{min-width:170px;padding:15px 18px;border:1px solid rgba(244,184,74,.25);background:rgba(244,184,74,.08);border-radius:17px}.admin-stat span{display:block;color:var(--muted);font-size:11px}.admin-stat strong{display:block;font-size:30px;color:#ffe6ad;margin-top:5px}.admin-tabs{display:flex;gap:8px;margin:25px 0 6px}.admin-tab{border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--muted);padding:12px 18px;border-radius:12px;font-weight:850}.admin-tab.active{background:rgba(47,128,255,.16);border-color:rgba(47,128,255,.45);color:#fff}.admin-list{display:grid;gap:10px}.admin-row{padding:16px 18px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:16px;box-shadow:none}.admin-row.pending{border-color:rgba(244,184,74,.3)}.admin-row-main{display:grid;gap:4px;min-width:0}.admin-row-main strong{font-size:16px}.admin-row-main span{font-size:13px;color:#c5d3e4;overflow:hidden;text-overflow:ellipsis}.admin-row-main small{color:var(--muted)}.admin-row-state{display:flex;gap:6px;flex-wrap:wrap}.status-pill{padding:5px 8px;border-radius:99px;font-size:10px;font-weight:900}.status-pill.active{background:rgba(32,201,120,.14);color:#6ce0a5}.status-pill.pending{background:rgba(244,184,74,.13);color:#ffe6ad}.status-pill.admin{background:rgba(47,128,255,.16);color:#80b4ff}.admin-row-actions{display:flex;gap:7px}.danger-btn{border:1px solid rgba(216,70,81,.35);background:rgba(216,70,81,.12);color:#ff9097;border-radius:12px;padding:12px 15px;font-weight:850}.empty-admin{padding:25px;color:var(--muted);text-align:center}.check-row{display:flex;grid-template-columns:none;align-items:center;gap:10px}.check-row input{width:20px;height:20px}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}select{width:100%;border:1px solid rgba(255,255,255,.12);outline:none;border-radius:12px;padding:16px 17px;color:var(--text);background:#071323;font:inherit}select option{background:#071323;color:#fff}
@media(max-width:720px){.admin-welcome{flex-direction:column;align-items:stretch}.admin-row{grid-template-columns:1fr}.admin-row-state,.admin-row-actions{justify-content:flex-start}.admin-row-actions button{flex:1}.two-cols{grid-template-columns:1fr}.admin-tabs{display:grid;grid-template-columns:1fr 1fr}.admin-tab{padding:11px 7px;font-size:12px}}

/* v4 – Admin jogosultság és ismétlődő órák */
.topbar-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.modal-wide{max-width:680px}
.repeat-options{padding:14px 16px;border:1px solid rgba(69,143,255,.24);border-radius:16px;background:rgba(20,73,145,.11)}
.repeat-help{font-size:.9rem;color:var(--muted,#9fb0c6);margin-bottom:12px;line-height:1.45}
.delete-choice{display:grid;gap:10px;margin:18px 0 4px}
@media(max-width:640px){.topbar-actions{width:100%}.topbar-actions .ghost-btn{flex:1;text-align:center}.modal-wide{max-width:none}}
