*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f1117;--surface:#181c27;--surface2:#1e2333;--surface3:#252b3b;--border:#2a3045;--border2:#333d55;--accent:#4f7cff;--accent-h:#6b93ff;--accent-dim:#4f7cff22;--green:#22c55e;--green-dim:#22c55e20;--red:#f43f5e;--red-dim:#f43f5e20;--amber:#f59e0b;--amber-dim:#f59e0b20;--blue:#3b82f6;--blue-dim:#3b82f622;--text:#e8eaf0;--text-muted:#7a85a3;--text-dim:#4a5370;--radius:8px;--radius-lg:12px;--cover-tag-bg:rgba(15,17,23,.7)}[data-theme=light]{--bg:#f5f6fa;--surface:#ffffff;--surface2:#eef0f5;--surface3:#e4e6ee;--border:#d4d8e2;--border2:#c0c4d0;--accent:#4f7cff;--accent-h:#3a66e0;--accent-dim:#4f7cff18;--green:#16a34a;--green-dim:#16a34a18;--red:#dc2626;--red-dim:#dc262618;--amber:#d97706;--amber-dim:#d9770618;--blue:#2563eb;--blue-dim:#2563eb18;--text:#111318;--text-muted:#5a5f72;--text-dim:#8a8fa2;--cover-tag-bg:rgba(255,255,255,.8)}[data-palette=violet-electrique]{--bg:#0e0d17;--surface:#16142a;--surface2:#1d1a36;--surface3:#252241;--border:#2e2a50;--border2:#3d3765;--accent:#7c5cff;--accent-h:#9b86ff;--accent-dim:#7c5cff22;--red:#fb3b5c;--red-dim:#fb3b5c20}[data-palette=violet-electrique][data-theme=light]{--bg:#f4f2fc;--surface:#fefeff;--surface2:#eae7f8;--surface3:#ddd8f2;--border:#cac4e0;--border2:#b8b0d6;--accent:#5b3bd6;--accent-h:#4a2fb0;--accent-dim:#5b3bd618;--red:#d61f3a;--red-dim:#d61f3a18}[data-palette=vert-nature]{--bg:#0b1410;--surface:#111e18;--surface2:#172a20;--surface3:#1e3528;--border:#26433a;--border2:#34594c;--accent:#22c55e;--accent-h:#4ade80;--accent-dim:#22c55e22;--red:#f43f5e;--red-dim:#f43f5e20}[data-palette=vert-nature][data-theme=light]{--bg:#f0faf4;--surface:#ffffff;--surface2:#e4f5ec;--surface3:#d2edde;--border:#b8dfc9;--border2:#99ccb4;--accent:#16a34a;--accent-h:#14532d;--accent-dim:#16a34a18;--red:#dc2626;--red-dim:#dc262618}[data-palette=rouge-corail]{--bg:#170d0e;--surface:#271418;--surface2:#321a1e;--surface3:#3e2126;--border:#522c33;--border2:#6b3940;--accent:#f43f5e;--accent-h:#fb6f84;--accent-dim:#f43f5e22;--red:#f43f5e;--red-dim:#f43f5e20}[data-palette=rouge-corail][data-theme=light]{--bg:#fdf2f4;--surface:#ffffff;--surface2:#fce8ec;--surface3:#f8d6dc;--border:#f0bdc6;--border2:#e8a0ad;--accent:#e11d48;--accent-h:#be123c;--accent-dim:#e11d4818;--red:#e11d48;--red-dim:#e11d4818}[data-palette=nuit-marine]{--bg:#060e18;--surface:#0a1828;--surface2:#0e2035;--surface3:#122843;--border:#183356;--border2:#1e4070;--accent:#06b6d4;--accent-h:#22d3ee;--accent-dim:#06b6d422;--red:#f43f5e;--red-dim:#f43f5e20}[data-palette=nuit-marine][data-theme=light]{--bg:#f0f7fd;--surface:#ffffff;--surface2:#e2f0fa;--surface3:#cee4f6;--border:#aad0ed;--border2:#88b8e0;--accent:#0891b2;--accent-h:#0e7490;--accent-dim:#0891b218;--red:#dc2626;--red-dim:#dc262618}[data-palette=sable-dore]{--bg:#141009;--surface:#1f1a10;--surface2:#2a2315;--surface3:#34301c;--border:#463c22;--border2:#5a4d2d;--accent:#f59e0b;--accent-h:#fbbf24;--accent-dim:#f59e0b22;--red:#f43f5e;--red-dim:#f43f5e20}[data-palette=sable-dore][data-theme=light]{--bg:#fdf8f0;--surface:#ffffff;--surface2:#faefd8;--surface3:#f5e4c0;--border:#ead4a0;--border2:#dcc080;--accent:#d97706;--accent-h:#b45309;--accent-dim:#d9770618;--red:#dc2626;--red-dim:#dc262618}body,html{min-height:100vh;background:var(--bg);color:var(--text);font-family:DM Sans,sans-serif;font-size:14px;line-height:1.5}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}.app{display:flex;flex-direction:column;min-height:100vh}.view{display:none;flex:1 1;padding:28px 32px;max-width:1200px;margin:0 auto;width:100%}.view.active{display:block}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:28px;flex-wrap:wrap;gap:12px}.page-title{font-size:20px;font-weight:600;letter-spacing:-.02em}.page-sub{color:var(--text-muted);font-size:13px;margin-top:3px}.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;border-radius:var(--radius);border:none;cursor:pointer;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500;transition:all .15s;text-decoration:none}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-h)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-primary:disabled,.btn-primary:disabled:hover{background:var(--accent)}.btn-secondary{background:var(--surface3);color:var(--text);border:1px solid var(--border2)}.btn-secondary:hover{background:var(--surface2);border-color:var(--border2)}.btn-secondary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary:disabled,.btn-secondary:disabled:hover{background:var(--surface3)}.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover{color:var(--text);border-color:var(--border2)}.btn-danger{background:var(--red-dim);color:var(--red);border:1px solid var(--red-dim)}.btn-danger:hover{background:var(--red);color:#fff}.btn-danger:disabled{opacity:.4;cursor:not-allowed;border:1px solid var(--red-dim)}.btn-danger:disabled,.btn-danger:disabled:hover{background:var(--red-dim);color:var(--red)}.btn-edit{background:var(--accent-dim);color:var(--accent);border:1px solid var(--accent-dim)}.btn-edit:hover{background:var(--accent);color:#fff}.btn-join{background:var(--green);color:#fff}.btn-join:hover{background:#1da34d}.btn-sm{padding:5px 10px;font-size:12px}.btn-icon{padding:7px;border-radius:6px}.form-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px}.form-section{margin-bottom:28px}.form-section:last-child{margin-bottom:0}.section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border)}.form-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.form-row-3{display:grid;grid-template-columns:1fr 1fr 1fr;grid-gap:16px;gap:16px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field:last-child{margin-bottom:0}label{font-size:12px;font-weight:500;color:var(--text-muted)}.required{color:var(--accent);margin-left:2px}input[type=date],input[type=datetime-local],input[type=email],input[type=number],input[type=text],input[type=time],input[type=url],select,textarea{background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius);color:var(--text);font-family:DM Sans,sans-serif;font-size:13px;padding:9px 12px;outline:none;width:100%;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}input::placeholder,textarea::placeholder{color:var(--text-dim)}select option{background:var(--surface2)}textarea{resize:vertical;min-height:90px}.char-count{font-size:11px;color:var(--text-dim);text-align:right;margin-top:4px}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--border)}.toggle-row:last-child{border-bottom:none;padding-bottom:0}.toggle-label{font-size:13px;font-weight:500}.toggle-desc{font-size:12px;color:var(--text-muted);margin-top:2px}.toggle{position:relative;width:38px;height:22px;flex-shrink:0;cursor:pointer}.toggle input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;inset:0;background:var(--surface3);border-radius:11px;border:1px solid var(--border2);transition:.2s}.toggle-slider:before{content:"";position:absolute;left:3px;top:50%;transform:translateY(-50%);width:14px;height:14px;background:var(--text-dim);border-radius:50%;transition:.2s}.toggle input:checked+.toggle-slider{background:var(--accent);border-color:var(--accent)}.toggle input:checked+.toggle-slider:before{transform:translateX(16px) translateY(-50%);background:#fff}.form-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding-top:20px;border-top:1px solid var(--border);margin-top:8px}.wizard-container{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px}.wizard-steps{display:flex;flex-direction:column;gap:8px}.wizard-step{background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius);overflow:hidden;transition:border-color .2s}.wizard-step.active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.wizard-step-header{display:flex;align-items:center;gap:12px;width:100%;padding:14px 18px;background:none;border:none;color:var(--text);font-family:DM Sans,sans-serif;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s;box-sizing:border-box;text-align:left}.wizard-step-header:hover{background:var(--surface2)}.wizard-step-num{width:26px;height:26px;border-radius:50%;background:var(--surface3);border:1px solid var(--border2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--text-muted);flex-shrink:0}.wizard-step.active .wizard-step-num{background:var(--accent);border-color:var(--accent);color:#fff}.wizard-step-icon{font-size:16px;flex-shrink:0}.wizard-step-label{flex:1 1;text-align:left}.wizard-step.has-error{border-color:var(--red)}.wizard-step.disabled{opacity:.5}.wizard-step-toggle{margin-left:auto;margin-right:8px;font-size:11px;padding:4px 8px;background:var(--surface3);border:1px solid var(--border2);color:var(--text-muted);border-radius:var(--radius);cursor:pointer}.wizard-step-toggle:hover{background:var(--surface2);color:var(--text)}.input-error{border-color:var(--red)!important}.wizard-step.active .wizard-step-arrow{color:var(--accent)}.wizard-step-content{padding:20px 18px 18px;border-top:1px solid var(--border);margin-top:-1px;width:100%;box-sizing:border-box}.wizard-step-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border);display:block}.wizard-step-content .form-section{width:100%;margin-bottom:28px;box-sizing:border-box;display:flex;flex-direction:column}.wizard-step-content .form-section:last-child{margin-bottom:0}.wizard-step-content .field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px;width:100%}.wizard-step-content .field:last-child{margin-bottom:0}.wizard-step-content label{font-size:13px;display:block}.wizard-step-content input,.wizard-step-content textarea{font-size:14px;padding:10px 12px;width:100%;box-sizing:border-box}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px;margin-bottom:28px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px 20px}.stat-label{font-size:11px;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px}.stat-value{font-size:26px;font-weight:600;letter-spacing:-.03em;line-height:1}.stat-sub{font-size:12px;color:var(--text-muted);margin-top:6px}.stat-up{color:var(--green)}.stat-down{color:var(--red)}.stat-card--wide{grid-column:span 3}.table-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.table-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.table-filter{display:flex;gap:8px}.filter-btn{font-size:12px;font-weight:500;padding:5px 12px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;transition:.15s}.filter-btn.active,.filter-btn:hover{background:var(--surface3);color:var(--text);border-color:var(--border2)}.search-input{background:var(--surface2);border:1px solid var(--border);border-radius:6px;padding:6px 12px;color:var(--text);font-family:DM Sans,sans-serif;font-size:12px;outline:none;width:200px;flex-shrink:0}.search-input:focus{border-color:var(--accent)}.table-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px}table{width:100%;border-collapse:collapse}thead tr{border-bottom:1px solid var(--border)}th{text-align:left;padding:10px 20px;font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;white-space:nowrap}td{padding:13px 20px;border-bottom:1px solid var(--border);font-size:13px;vertical-align:middle}tr:last-child td{border-bottom:none}.td-title{font-weight:500}.td-meta{font-size:12px;color:var(--text-muted);margin-top:2px}.progress-bar{height:4px;background:var(--surface3);border-radius:2px;overflow:hidden;width:80px;margin-top:4px}.progress-fill{height:100%;border-radius:2px;background:var(--accent);transition:width .3s}.progress-fill.full{background:var(--green)}.progress-fill.warn{background:var(--amber)}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600}.badge:before{content:"";width:5px;height:5px;border-radius:50%}.badge-published{background:var(--green-dim);color:var(--green)}.badge-published:before{background:var(--green)}.badge-draft{background:var(--amber-dim);color:var(--amber)}.badge-draft:before{background:var(--amber)}.badge-closed{background:var(--red-dim);color:var(--red)}.badge-closed:before{background:var(--red)}.badge-cancelled{background:var(--red-dim);color:var(--red)}.badge-cancelled:before{background:var(--red)}.badge-full{background:var(--red-dim);color:var(--red)}.badge-full:before{background:var(--red)}.badge-clickable{transition:filter .15s}.badge-clickable:hover{filter:brightness(1.12)}.badge-open{background:var(--green-dim);color:var(--green)}.badge-open:before{background:var(--green)}.badge-today{background:var(--accent-dim);color:var(--accent)}.badge-today:before{background:var(--accent)}.badge-countdown{background:var(--surface3);color:var(--text-muted)}.badge-countdown:before{background:var(--text-dim)}.badge-audit-green{background:var(--green-dim);color:var(--green)}.badge-audit-green:before{background:var(--green)}.badge-audit-blue{background:var(--blue-dim);color:var(--blue)}.badge-audit-blue:before{background:var(--blue)}.badge-audit-red{background:var(--red-dim);color:var(--red)}.badge-audit-red:before{background:var(--red)}.badge-audit-amber{background:var(--amber-dim);color:var(--amber)}.badge-audit-amber:before{background:var(--amber)}.actions-cell{display:flex;gap:6px;align-items:center}.nav-links{display:flex;gap:2;flex:1 1}.admin-cards-mobile{display:none;flex-direction:column;gap:8px}.admin-events-grid{display:none;grid-template-columns:repeat(3,1fr);gap:16px;padding:20px}.aec{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:10px}.aec-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.aec-title{font-weight:500;font-size:14px;line-height:1.3;flex:1 1}.aec-meta{flex-direction:column;gap:3px}.aec-meta,.aec-progress-row{font-size:12px;color:var(--text-muted);display:flex}.aec-progress-row{align-items:center;gap:8px}.aec-badges{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.aec-footer{display:flex;gap:6px;justify-content:flex-end;border-top:1px solid var(--border);padding-top:10px;margin-top:auto}.ecv{padding:20px}.ecv-header{justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:12px}.ecv-header,.ecv-nav{display:flex;align-items:center}.ecv-nav{gap:8px}.ecv-month-label{font-size:14px;font-weight:600;min-width:130px;text-align:center;text-transform:capitalize}.ecv-legend{gap:16px;font-size:12px;color:var(--text-muted)}.ecv-legend,.ecv-legend-item{display:flex;align-items:center}.ecv-legend-item{gap:6px}.ecv-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.ecv-dot-event{background:var(--blue)}.ecv-dot-deadline{background:var(--green)}.ecv-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:1px;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden}.ecv-weekday{padding:6px 8px;background:var(--surface3);font-size:11px;font-weight:600;color:var(--text-muted);text-align:center}.ecv-cell{background:var(--surface2);min-height:90px;min-width:0;padding:6px;display:flex;flex-direction:column;gap:4px}.ecv-cell-empty{background:var(--surface)}.ecv-cell-today{background:var(--accent-dim);box-shadow:inset 0 0 0 2px var(--accent)}.ecv-day-number{font-size:11px;color:var(--text-muted)}.ecv-cell-today .ecv-day-number{color:var(--accent);font-weight:700}.ecv-marker{display:block;width:100%;min-width:0;text-align:left;font-size:11px;padding:2px 6px;border-radius:4px;border:none;cursor:pointer;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.ecv-marker-event{background:var(--blue)}.ecv-marker-deadline{background:var(--green)}.event-card-mobile{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:14px}.ecm-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.ecm-title{font-weight:500;font-size:14px;flex:1 1;margin-right:8px}.ecm-actions{display:flex;gap:4px;flex-shrink:0}.ecm-meta{margin-bottom:8px}.ecm-meta,.ecm-row{font-size:12px;color:var(--text-muted)}.ecm-row{display:flex;align-items:center;gap:8px;margin-bottom:4px}.part-cards-mobile,.wl-cards-mobile{display:none;flex-direction:column;gap:8px}.part-card{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:14px}.part-card-row{display:flex;align-items:flex-start;gap:8px;margin-bottom:4px;font-size:12px;color:var(--text-muted)}.part-card-label{width:16px;text-align:center;flex-shrink:0}.cf-cards-mobile{display:none;flex-direction:column;gap:8px}.cf-addrow-mobile{display:none}.user-filters{display:flex;align-items:center;gap:10px;margin-bottom:24px;flex-wrap:wrap}.search-bar{flex:1 1;min-width:220px;max-width:320px;background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius);padding:9px 14px;color:var(--text);font-family:DM Sans,sans-serif;font-size:13px;outline:none;transition:border-color .15s}.search-bar:focus{border-color:var(--accent)}.select-sm{background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius);padding:8px 12px;color:var(--text);font-family:DM Sans,sans-serif;font-size:13px;outline:none;cursor:pointer}.events-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-gap:20px;gap:20px}.event-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;transition:border-color .2s,transform .2s,box-shadow .2s;display:flex;flex-direction:column}.event-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 8px 30px rgba(79,124,255,.12)}.event-card--locked,.event-card--locked:hover{border-color:var(--border);transform:none;box-shadow:none}.event-cover{height:140px;background:linear-gradient(135deg,var(--surface3),var(--surface2));position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.cover-pattern{position:absolute;inset:0;opacity:.4;background-image:radial-gradient(circle at 2px 2px,var(--border2) 1px,transparent 0);background-size:24px 24px}.cover-emoji{font-size:40px;position:relative;z-index:1}.cover-category{position:absolute;top:12px;right:12px;z-index:1;background:var(--cover-tag-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border2);border-radius:6px;font-size:11px;font-weight:500;color:var(--text-muted);padding:3px 9px}.card-body{padding:18px 18px 16px;display:flex;flex-direction:column;flex:1 1}.card-title{font-size:15px;font-weight:600;letter-spacing:-.01em;margin-bottom:8px}.card-meta{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.meta-row{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-muted)}.meta-icon{width:14px;text-align:center;font-size:13px}.card-footer{display:flex;align-items:center;justify-content:space-between;padding-top:14px;border-top:1px solid var(--border);margin-top:auto}.card-spots{font-size:12px;color:var(--text-muted)}.spots-num{font-weight:600;color:var(--text)}.card-price{font-size:14px;font-weight:600;color:var(--accent)}.card-price.free{color:var(--green)}.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;align-items:center;justify-content:center;padding:20px}.modal-overlay.open{display:flex}.modal{background:var(--surface);border:1px solid var(--border2);border-radius:14px;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;animation:slideUp .25s cubic-bezier(.22,1,.36,1) both}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border)}.modal-title{font-size:16px;font-weight:600}.modal-close{background:var(--surface3);border:none;color:var(--text-muted);width:28px;height:28px;border-radius:6px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:.15s}.modal-close:hover{background:var(--surface2);color:var(--text)}.modal-body{padding:24px}.modal-event-info{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin:16px 24px 20px}.modal-event-title{font-size:14px;font-weight:600;margin-bottom:6px}.modal-event-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px}.modal-event-meta span{font-size:12px;color:var(--text-muted)}.modal-form .field{margin-bottom:14px}.modal-footer{padding:16px 24px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.price-display{font-size:18px;font-weight:600}.price-display.free{color:var(--green)}.booking-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.booking-table{width:100%;border-collapse:collapse;font-size:13px}.booking-table thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:var(--surface);text-align:center;padding:8px 12px;border-bottom:1px solid var(--border);white-space:nowrap}.booking-table thead th:first-child{position:-webkit-sticky;position:sticky;left:0;z-index:2;text-align:left}.booking-table tbody td{text-align:center;padding:8px 12px;border-bottom:1px solid var(--border)}.booking-table tbody td:first-child{position:-webkit-sticky;position:sticky;left:0;z-index:1;background:var(--surface);font-weight:500;white-space:nowrap}.booking-attendee-row{display:flex;gap:8px;margin-bottom:4px;align-items:center}.booking-footer-inner{display:flex;align-items:center;gap:12px;justify-content:space-between}.booking-footer-buttons{display:flex;gap:8px}.booking-cell{display:inline-flex;align-items:center;gap:6px;justify-content:center}.booking-cell-sub{font-size:10px;color:var(--text-muted);margin-top:2px}@media(max-width:600px){.modal-overlay{padding:0;align-items:flex-end}.modal-booking{border-radius:18px 18px 0 0;max-width:100%;max-height:92svh;height:auto;animation:slideUpSheet .3s cubic-bezier(.22,1,.36,1) both}.modal-event-info{margin:12px 16px 14px}.modal-form-inner{padding:0 16px}.modal-header{padding:16px 16px 14px}.booking-table-wrap{margin:0 -16px;padding:0 16px}.booking-table tbody td,.booking-table thead th{padding:6px}.booking-table tbody td:first-child{max-width:110px;white-space:normal}.booking-opt-remaining{display:block;margin-left:0;margin-top:2px}.booking-cell{flex-direction:column;gap:2px}.booking-cell-price{font-size:11px}.booking-cell-sub{display:none}.booking-attendee-row{flex-wrap:wrap}.booking-attendee-row input{min-width:0;flex:1 1 120px}.booking-footer-inner{flex-direction:column;align-items:stretch;gap:10px}.booking-footer-inner .btn{width:100%;justify-content:center}.booking-footer-total{margin-right:0}.booking-footer-buttons{justify-content:flex-end}.booking-footer-inner .price-display{font-size:22px}}@keyframes slideUpSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}.confirm-box{text-align:center;padding:20px 0}.confirm-icon{width:60px;height:60px;border-radius:50%;background:var(--green-dim);border:1px solid var(--green);display:flex;align-items:center;justify-content:center;font-size:26px;margin:0 auto 16px}.confirm-title{font-size:17px;font-weight:600;margin-bottom:8px}.confirm-sub{font-size:13px;color:var(--text-muted);line-height:1.6}.confirm-code{font-family:DM Mono,monospace;font-size:20px;font-weight:500;color:var(--accent);background:var(--accent-dim);border:1px solid var(--accent);border-radius:var(--radius);padding:12px 24px;margin:16px auto;display:inline-block;letter-spacing:.12em}.detail-back{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-size:13px;cursor:pointer;margin-bottom:24px;transition:color .15s;border:none;background:none;padding:0}.detail-back:hover{color:var(--text)}.detail-layout{display:grid;grid-template-columns:1fr 340px;grid-gap:28px;gap:28px;align-items:start}.detail-cover{height:220px;background:linear-gradient(135deg,var(--surface3),var(--surface2));border-radius:var(--radius-lg);margin-bottom:24px;display:flex;align-items:center;justify-content:center;font-size:64px;border:1px solid var(--border);position:relative;overflow:hidden}.detail-cover .cover-pattern{opacity:.3}.detail-title{font-size:26px;font-weight:600;letter-spacing:-.03em;margin-bottom:16px}.detail-tags{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.detail-tag{font-size:11px;font-weight:500;padding:4px 10px;border-radius:5px;background:var(--surface3);color:var(--text-muted);border:1px solid var(--border)}.detail-desc{font-size:14px;color:var(--text-muted);line-height:1.7;margin-bottom:24px}.detail-desc p{margin:0 0 12px}.detail-desc p:last-child{margin-bottom:0}.detail-desc strong{color:var(--text);font-weight:600}.detail-desc a{color:var(--accent);text-decoration:underline}.detail-desc ol,.detail-desc ul{margin:0 0 12px;padding-left:22px}.detail-desc li{margin-bottom:4px}.detail-desc blockquote{margin:0 0 12px;padding:2px 14px;border-left:3px solid var(--border2);color:var(--text-dim)}.detail-desc code{background:var(--surface2);border-radius:4px;padding:1px 5px;font-family:DM Mono,monospace;font-size:12px}.detail-desc h1,.detail-desc h2,.detail-desc h3{color:var(--text);font-weight:600;line-height:1.3;margin:0 0 10px}.detail-desc hr{border:none;border-top:1px solid var(--border);margin:16px 0}.detail-info-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px;margin-bottom:24px}.detail-embed{grid-column:1/-1;margin-bottom:24px}.detail-embed iframe{display:block}.info-item{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.info-item-label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.07em;margin-bottom:4px}.info-item-value{font-size:13px;font-weight:500}.booking-card{background:var(--surface);border:1px solid var(--border2);border-radius:var(--radius-lg);padding:22px;position:-webkit-sticky;position:sticky;top:84px}.booking-price-row{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.booking-price{font-size:28px;font-weight:700;letter-spacing:-.03em}.booking-price.free{color:var(--green)}.booking-price-label,.booking-spots{font-size:13px;color:var(--text-muted)}.booking-progress,.booking-spots{margin-bottom:20px}.booking-progress{height:6px;background:var(--surface3);border-radius:3px;overflow:hidden}.booking-progress-fill{height:100%;border-radius:3px;background:var(--accent);transition:width .5s}.booking-divider{height:1px;background:var(--border);margin:16px 0}.booking-detail-row{display:flex;justify-content:space-between;font-size:13px;margin-bottom:8px}.booking-detail-label{color:var(--text-muted)}.organizer-row{display:flex;align-items:center;gap:10px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}.organizer-avatar{width:34px;height:34px;border-radius:50%;background:var(--accent-dim);border:1px solid var(--accent);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:var(--accent);flex-shrink:0}.organizer-name{font-size:13px;font-weight:500}.organizer-label{font-size:11px;color:var(--text-muted)}.empty-state{text-align:center;padding:64px 20px;display:flex;flex-direction:column;align-items:center;gap:12px}.empty-icon{font-size:40px;margin-bottom:8px}.empty-title{font-size:16px;font-weight:600}.empty-sub{font-size:13px;color:var(--text-muted);max-width:280px}.toast{position:fixed;bottom:24px;right:24px;z-index:300;background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius);padding:12px 16px;display:flex;align-items:center;gap:10px;font-size:13px;box-shadow:0 8px 24px rgba(0,0,0,.3);transform:translateY(80px);opacity:0;transition:.3s cubic-bezier(.22,1,.36,1);pointer-events:none;max-width:320px}.toast.show{transform:translateY(0);opacity:1}.toast-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.toast-success .toast-dot{background:var(--green)}.toast-error .toast-dot{background:var(--red)}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.login-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:40px 36px}.login-brand{font-family:DM Mono,monospace;font-size:18px;font-weight:500;text-align:center;margin-bottom:32px;color:var(--text)}.login-brand span{color:var(--accent)}.login-title{font-size:22px;font-weight:600;text-align:center;margin-bottom:8px}.login-sub{font-size:13px;color:var(--text-muted);text-align:center;margin-bottom:28px;line-height:1.6}.login-btn{width:100%;justify-content:center;padding:10px 16px;margin-top:8px}.login-dev-hint{font-size:11px;color:var(--amber);background:var(--amber-dim);margin-top:4px;line-height:1.5}.login-dev-hint,.login-error{padding:8px 10px;border-radius:6px}.login-error{font-size:12px;color:var(--red);background:var(--red-dim);margin-top:8px}.login-footer{text-align:center;margin-top:24px}.login-link{background:none;border:none;color:var(--text-muted);font-size:12px;cursor:pointer;font-family:DM Sans,sans-serif;transition:color .15s}.login-link:hover{color:var(--text)}.login-sent{text-align:center}.login-sent-icon{font-size:44px;margin-bottom:16px}.login-sent-title{font-size:20px;font-weight:600;margin-bottom:12px}.login-sent p{font-size:13px;color:var(--text-muted)}.login-dev-box,.login-sent p{line-height:1.6;margin-bottom:20px}.login-dev-box{text-align:left;font-size:12px;color:var(--amber);padding:12px 14px;background:var(--amber-dim);border-radius:8px}.login-dev-box strong{display:block;margin-bottom:4px;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.login-dev-box code{font-family:DM Mono,monospace;font-size:11px;background:var(--surface3);padding:1px 5px;border-radius:3px}.login-sent .btn{margin-bottom:10px}.login-sent .login-link{display:block;margin-top:12px}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1200px){.admin-events-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:900px){.view{padding:20px 16px}.stats-row{grid-template-columns:1fr 1fr}.stat-card--wide{grid-column:auto}.detail-layout,.form-row,.form-row-3{grid-template-columns:1fr}}@media(max-width:600px){body,html{overflow-x:hidden}.stats-row{grid-template-columns:1fr;gap:12px}.stat-card{padding:14px 16px}.stat-value{font-size:22px}.events-grid{grid-template-columns:1fr}.view{padding:16px 14px}.page-header{align-items:center}.page-title{font-size:18px}.login-card{padding:28px 20px}.detail-info-grid{grid-template-columns:1fr}.form-card{padding:18px 16px}.form-section{margin-bottom:20px}.toast{bottom:max(16px,env(safe-area-inset-bottom));right:12px;left:12px;max-width:none}.search-input{width:140px}.table-header-row{flex-direction:column;align-items:stretch}.search-input{width:100%}.nav-links{display:none}.nav-mobile-header{display:flex!important;gap:4px;margin-left:8px}.nav-desktop-right{display:none}.hide-mobile{display:none!important}.booking-card{position:static}.detail-cover{height:160px;font-size:48px}.detail-title{font-size:20px}.detail-embed,.detail-info-grid{display:none!important}.admin-table-desktop{display:none}.admin-cards-mobile{display:flex}.admin-events-grid,.ecv{display:none!important}.wl-table-desktop{display:none}.wl-cards-mobile{display:flex}.part-table-desktop{display:none}.part-cards-mobile{display:flex}.cf-table-desktop{display:none}.cf-cards-mobile{display:flex}.cf-addrow-desktop{display:none}.cf-addrow-mobile{display:flex}}@keyframes spin{to{transform:rotate(1turn)}}@keyframes adminSubIn{0%{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}}@keyframes adminSubOut{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-8px)}}.admin-subsection{animation:adminSubIn .25s cubic-bezier(.22,1,.36,1) both}.admin-subsection-out{animation:adminSubOut .2s cubic-bezier(.22,1,.36,1) both}@keyframes adminWrapIn{0%{max-width:0;opacity:0}to{max-width:400px;opacity:1}}@keyframes adminWrapOut{0%{max-width:400px;opacity:1}to{max-width:0;opacity:0}}.admin-subwrap{animation:adminWrapIn .25s cubic-bezier(.22,1,.36,1) both}.admin-subwrap-out{animation:adminWrapOut .25s cubic-bezier(.22,1,.36,1) both}