
:root { --bg-color:#f4f7f4; --surface-color:#ffffff; --text-main:#2c3e2d; --text-muted:#6b7a6c; --accent-color:#7a9c7b; --accent-hover:#5d7a5e; --border-color:#e5ebe5; --border-radius:16px; }
body { font-family:'Outfit','Helvetica Neue',Arial,sans-serif; background-color:var(--bg-color); color:var(--text-main); margin:0; padding:3vh 2vw; display:flex; justify-content:center; min-height:100vh; }
.container { width:100%; max-width:1400px; background:var(--surface-color); padding:40px; border-radius:var(--border-radius); box-shadow:0 12px 40px rgba(44,62,45,.05); box-sizing:border-box; }
h1 { text-align:center; color:var(--accent-color); margin-top:0; margin-bottom:40px; font-weight:500; font-size:2.2rem; letter-spacing:.5px; }
.intro-section { max-width:860px; margin:0 auto 36px; padding:24px 28px; background:var(--bg-color); border-radius:12px; line-height:1.7; }
.intro-section h2 { color:var(--accent-color); font-size:1.35rem; font-weight:500; margin:0 0 12px; }
.intro-section p { margin:10px 0; }
#calendar { min-height:700px; } .fc { font-family:inherit; }
.booking-lookup { max-width:720px; margin:42px auto 0; padding:24px 28px; border:1px solid var(--border-color); border-radius:12px; background:var(--bg-color); box-sizing:border-box; }
.booking-lookup h2 { margin:0 0 10px; color:var(--accent-color); font-size:1.35rem; font-weight:500; }
.booking-lookup p { margin:0 0 18px; line-height:1.6; }
.booking-lookup label { display:block; margin-bottom:8px; color:var(--text-muted); font-size:.95rem; }
.booking-lookup-controls { display:flex; align-items:stretch; gap:12px; }
.booking-lookup-controls input { flex:1; min-width:0; padding:12px 15px; border:1px solid var(--border-color); border-radius:8px; font:inherit; color:var(--text-main); box-sizing:border-box; }
.booking-lookup-controls input:focus { outline:none; border-color:var(--accent-color); box-shadow:0 0 0 3px rgba(122,156,123,.2); }
.booking-lookup-controls button { flex-shrink:0; }
.booking-lookup .booking-lookup-status { min-height:1.6em; margin:12px 0 0; font-size:.95rem; }
.booking-lookup-status.is-success { color:#375e3a; }
.booking-lookup-status.is-error { color:#8b3025; }
/* A CSP szándékosan tiltja a FullCalendar beágyazott ikonfontját. A navigáció
   ezért rendszerbetűtípussal rajzolt Unicode nyilakat használ. */
.fc .fc-icon { font-family:Arial,sans-serif!important; font-size:1.35em; line-height:.75; }
.fc .fc-icon-chevron-left::before { content:"\2190"!important; }
.fc .fc-icon-chevron-right::before { content:"\2192"!important; }
.fc-theme-standard td,.fc-theme-standard th,.fc-theme-standard .fc-scrollgrid { border-color:var(--border-color)!important; }
.fc-col-header-cell-cushion { color:var(--text-main)!important; font-weight:500; padding:10px 0!important; text-decoration:none; }
.fc-toolbar-title { color:var(--text-main)!important; font-weight:600!important; font-size:1.6rem!important; }
.fc-button-primary { background-color:var(--surface-color)!important; border:1px solid var(--accent-color)!important; color:var(--text-main)!important; box-shadow:none!important; border-radius:8px!important; text-transform:capitalize; font-weight:500!important; transition:all .2s ease!important; padding:8px 16px!important; }
.fc-button-primary:hover { background-color:var(--accent-hover)!important; color:#fff!important; border-color:var(--accent-hover)!important; }
.fc-button-primary:not(:disabled).fc-button-active { background-color:var(--accent-color)!important; color:#163019!important; border-color:var(--accent-color)!important; }
.fc-button:focus { box-shadow:0 0 0 3px rgba(122,156,123,.3)!important; }
.fc-event { background-color:var(--accent-color); border:none; border-radius:6px; padding:4px 6px; color:#163019!important; cursor:pointer; box-shadow:0 2px 4px rgba(0,0,0,.05); transition:transform .1s ease,background-color .2s ease,box-shadow .2s ease; }
.fc-event-main { font-weight:500; font-size:.95rem; }
.fc-event:hover { background-color:var(--accent-hover); color:#fff!important; transform:translateY(-2px); box-shadow:0 6px 12px rgba(93,122,94,.2); z-index:5!important; }
.fc-event.past-event,
.fc-event.past-event:hover { background-color:#99a09b; color:#163019!important; box-shadow:none; transform:none; }
.fc-event.closed-event { cursor:default; pointer-events:none; }
.breathing-event { min-height:32px!important; }
.breathing-event .fc-event-main { line-height:22px; padding-bottom:2px; }
/* Az egysoros, kissé kisebb cím elfér az óra eredeti magasságában. */
.long-title-event .fc-event-main { line-height:normal; padding-bottom:0; }
.long-title-event .fc-event-title { font-size:.8rem; white-space:nowrap; }
.modal { display:none; position:fixed; top:0; left:0; width:100%; height:100%; background-color:rgba(44,62,45,.5); z-index:1000; justify-content:center; align-items:center; opacity:0; transition:opacity .3s ease; }
.modal.active { display:flex; opacity:1; }
.modal-content { background-color:var(--surface-color); padding:35px; border-radius:var(--border-radius); width:90%; max-width:450px; max-height:calc(100vh - 40px); overflow-y:auto; box-sizing:border-box; box-shadow:0 20px 50px rgba(0,0,0,.15); transform:translateY(-20px); transition:transform .3s ease; }
.modal.active .modal-content { transform:translateY(0); }
.modal h2 { color:var(--text-main); margin-top:0; margin-bottom:25px; font-size:1.5rem; font-weight:500; }
.app-dialog-open { overflow:hidden; }
.app-dialog-overlay { display:none; position:fixed; inset:0; z-index:2000; align-items:center; justify-content:center; padding:20px; box-sizing:border-box; background:rgba(44,62,45,.32); }
.app-dialog-overlay.active { display:flex; }
.app-dialog { width:100%; max-width:460px; padding:30px; border:1px solid var(--border-color); border-radius:var(--border-radius); background:var(--surface-color); box-shadow:0 20px 50px rgba(44,62,45,.25); box-sizing:border-box; }
.app-dialog h2 { color:var(--accent-color); margin:0 0 14px; font-size:1.35rem; font-weight:500; }
.app-dialog-overlay.app-dialog-error .app-dialog h2,
.app-dialog-overlay.app-dialog-danger .app-dialog h2 { color:#b65b4d; }
.app-dialog-message { margin:0; color:var(--text-main); line-height:1.65; white-space:pre-line; }
.app-dialog-actions { display:flex; justify-content:flex-end; flex-wrap:wrap; gap:10px; margin-top:26px; }
.app-dialog #app-dialog-confirm.app-dialog-danger { background:#b65b4d; }
.app-dialog #app-dialog-confirm.app-dialog-danger:hover { background:#98493e; }
.app-toast-container { position:fixed; top:24px; left:50%; z-index:3000; display:flex; flex-direction:column; gap:10px; width:min(440px, calc(100vw - 32px)); transform:translateX(-50%); pointer-events:none; }
.app-toast { display:flex; align-items:center; gap:14px; padding:14px 16px; border:1px solid var(--border-color); border-left:5px solid var(--accent-color); border-radius:12px; background:var(--surface-color); box-shadow:0 12px 28px rgba(44,62,45,.16); color:var(--text-main); line-height:1.45; pointer-events:auto; animation:toast-enter .25s ease-out both; }
.app-toast-success { border-left-color:var(--accent-color); }
.app-toast-error { border-left-color:#b65b4d; }
.app-toast-info { border-left-color:#627f9d; }
.app-toast-message { flex:1; }
.app-toast-action { color:var(--accent-hover); font-weight:600; white-space:nowrap; }
.app-toast.is-leaving { animation:toast-leave .35s ease-in forwards; }
@keyframes toast-enter { from { opacity:0; transform:translateY(-12px); } to { opacity:1; transform:translateY(0); } }
@keyframes toast-leave { from { opacity:1; transform:translateY(0); } to { opacity:0; transform:translateY(-10px); } }
.class-info { margin:-5px 0 25px; padding:15px; background:var(--bg-color); border-radius:10px; line-height:1.8; }
.class-instructor { font-style:italic; } .class-description { margin:10px 0; line-height:1.6; white-space:pre-line; } .class-note { color:#a13f33; font-weight:600; } .class-zoom { font-weight:500; } .admin-class-info { margin-bottom:20px; line-height:1.8; }
.form-group { margin-bottom:20px; } .form-group label { display:block; margin-bottom:8px; color:var(--text-muted); font-size:.95rem; }
.form-group input,.form-group textarea { width:100%; padding:12px 15px; border:1px solid var(--border-color); border-radius:8px; font-size:1rem; font-family:inherit; box-sizing:border-box; transition:border-color .2s,box-shadow .2s; color:var(--text-main); }
.form-group textarea { resize:vertical; min-height:110px; line-height:1.5; }
.form-group input:focus,.form-group textarea:focus { outline:none; border-color:var(--accent-color); box-shadow:0 0 0 3px rgba(122,156,123,.2); }
.checkbox-group label { display:flex; align-items:center; gap:8px; cursor:pointer; } .checkbox-group input { width:auto; }
.booking-memory { margin:-4px 0 18px; padding:14px 16px; border:1px solid var(--border-color); border-radius:10px; background:var(--bg-color); }
.booking-memory-row { display:flex; align-items:flex-start; gap:10px; }
.booking-memory-row input { width:20px; height:20px; flex:0 0 auto; margin:1px 0 0; }
.booking-memory-row label { line-height:1.45; cursor:pointer; }
.booking-memory p { margin:8px 0 0 30px; color:var(--text-muted); font-size:.86rem; line-height:1.45; }
.booking-memory-clear { margin:10px 0 0 30px; padding:0; border:0; background:none; color:#375e3a; font:inherit; font-size:.9rem; text-decoration:underline; cursor:pointer; }
.modal-actions { display:flex; justify-content:flex-end; gap:15px; margin-top:30px; }
.btn-primary,.btn-secondary { padding:10px 20px; border-radius:8px; font-size:1rem; font-weight:500; cursor:pointer; font-family:inherit; border:none; transition:all .2s; }
.btn-primary { background-color:var(--accent-color); color:#163019; } .btn-primary:hover { background-color:var(--accent-hover); color:#fff; } .btn-primary:disabled { background-color:var(--text-muted); color:#fff; cursor:not-allowed; }
.btn-secondary { background-color:transparent; color:var(--text-muted); } .btn-secondary:hover { background-color:var(--bg-color); color:var(--text-main); }
.admin-container { max-width:1200px; } .admin-grid { display:grid; grid-template-columns:1fr 2fr; gap:40px; margin-top:30px; }
.box { background:#fdfdfd; padding:25px; border-radius:12px; border:1px solid var(--border-color); }
.class-item { border-bottom:1px solid var(--border-color); padding:15px 0; } .class-item:last-child { border-bottom:none; } .class-item ul { padding-left:20px; color:var(--text-muted); }
.delete-btn { background:none; border:none; color:#d9534f; cursor:pointer; text-decoration:underline; margin-left:10px; } .delete-btn:hover { color:#c9302c; }
.delete-modal-overlay { display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,.5); z-index:1000; align-items:center; justify-content:center; }
.delete-modal-box { background:white; padding:30px; border-radius:12px; text-align:center; max-width:400px; width:90%; } .delete-modal-title { margin-top:0; color:#d9534f; } .delete-modal-name { color:#333; margin:15px 0; }
.delete-modal-actions { margin-top:25px; display:flex; gap:15px; justify-content:center; } .btn-cancel-delete { border:1px solid #ccc; padding:10px 20px; border-radius:8px; }
.btn-confirm-delete { background:#d9534f; color:white; border:none; padding:10px 20px; border-radius:8px; cursor:pointer; font-weight:bold; } .btn-confirm-delete:hover { background:#c9302c; }
@media (max-width:768px) { .container { padding:20px; border-radius:12px; } h1 { font-size:1.6rem; margin-bottom:25px; } .intro-section { margin-bottom:24px; padding:20px; } .fc-toolbar { flex-direction:column; gap:15px; } .fc-toolbar-title { font-size:1.3rem!important; } .admin-grid { grid-template-columns:1fr; } .booking-lookup { padding:20px; } .booking-lookup-controls { flex-direction:column; } .booking-lookup-controls button { width:100%; } }

.legal-links { margin-top: 32px; text-align: center; line-height: 2; }
.legal-acceptance { display: flex; gap: 12px; align-items: flex-start; margin: 20px 0 10px; }
.legal-acceptance input { width: 22px; height: 22px; flex-shrink: 0; margin: 2px 0 0; }
.legal-acceptance label { font-size: .95rem; line-height: 1.5; }
.legal-acceptance a, .legal-links a, .legal-document a { color: #375e3a; text-decoration: underline; }
.legal-document { max-width: 960px; line-height: 1.65; }
.legal-document h2 { margin-top: 2rem; }
.legal-document table { border-collapse: collapse; width: 100%; min-width: 560px; }
.legal-document td, .legal-document th { border: 1px solid #d9d9d9; padding: 12px; text-align: left; vertical-align: top; }
.table-scroll { overflow-x: auto; }
.legal-version { overflow-wrap: anywhere; font-size: .8rem; }
.legal-draft { color: #8b3025; font-weight: 600; }
:focus-visible { outline: 3px solid #285bc7; outline-offset: 3px; }
.modal-content { max-height: 85vh; overflow-y: auto; }
.email-tools { margin: 24px 0; }
.email-tools li { padding: 8px 0; }
