@charset "UTF-8";:root{--bg: #f1eff6;--bg-secondary: #ffffff;--surface: #ffffff;--border: #e2e4e7;--text: #534a80;--text-muted: #5f6368;--text-disabled: #9aa0a6;--text-inverse: #ffffff;--primary: #3e2770;--primary-hover: #5b21b6;--primary-light: #815DC3;--primary-subtitle: #7f7f7f;--accent: #f2b705;--accent-hover: #d79e00;--accent-text: #3e2770;--primary-weak: #dfdceb;--primary-soft: #f1eff6;--accent-weak: #fff3cc;--header-bg: var(--primary);--header-bg-light: var(--primary-light);--header-text: #ffffff;--ok: #1e8e3e;--ok-hover: #166e30;--warn: #f9ab00;--bad: #c74d4d;--bad-hover: #a83c3c;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 20px;--s-6: 24px;--r-xs: 10px;--r-sm: 14px;--r-md: 18px;--r-lg: 24px;--shadow-sm: 0 1px 2px #e2e4e7;--shadow-md: 0 10px 30px #c4c7cc;--font: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial;--fs-sm: 14px;--fs-md: 16px;--fs-lg: 18px;--fs-xl: 22px;--fs-2xl: 24px;--lh: 1.35;--transition-fast: .15s;--transition-base: .3s;--transition-slow: .5s;--filter-hover-brighten: brightness(1.1);--filter-hover-darken: brightness(.9);--overlay: rgba(0, 0, 0, .5);--hero-overlay-start: rgba(61, 41, 129, .3);--hero-overlay-end: rgba(0, 0, 0, .75);--hero-text-shadow: 0 2px 8px rgba(0, 0, 0, .8);--hero-text-shadow-sm: 0 1px 4px rgba(0, 0, 0, .8)}[data-theme=dark]{--bg: #121018;--bg-secondary: #1a1625;--surface: #242033;--border: #3a3550;--text: #f0eef5;--text-muted: #9d99ad;--text-disabled: #5c5870;--text-inverse: #121018;--primary: #a78bfa;--primary-hover: #c4b5fd;--primary-light: #ddd6fe;--primary-subtitle: #9d99ad;--accent: #b8860b;--accent-hover: #cc9a0c;--accent-text: #f0eef5;--primary-weak: #2d2845;--primary-soft: #1a1625;--accent-weak: #2d2515;--header-bg: #1a1625;--header-bg-light: #242033;--header-text: #f0eef5;--ok: #34d399;--ok-hover: #10b981;--warn: #fbbf24;--bad: #f87171;--bad-hover: #ef4444;--bg-tertiary: #2d2845;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .5);--shadow-md: 0 10px 30px rgba(0, 0, 0, .6);--filter-hover-brighten: brightness(1.2);--filter-hover-darken: brightness(.8);--overlay: rgba(0, 0, 0, .75);--hero-overlay-start: rgba(18, 16, 24, .4);--hero-overlay-end: rgba(0, 0, 0, .9)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font);line-height:var(--lh);color:var(--text);background:var(--bg)}#root{min-height:100%;display:flex;flex-direction:column}button{font-family:inherit;cursor:pointer;border:none;background:none}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5}button{font-family:inherit;border:none;background:none;cursor:pointer}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}@keyframes spin{to{transform:rotate(360deg)}}body{color:var(--text);background:var(--bg);font-size:var(--fs-base)}h1,h2,h3,h4,h5,h6{color:var(--text);font-weight:700;line-height:1.2}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}p{margin-bottom:var(--s-3);color:var(--text-secondary)}.h1{font-size:var(--fs-xl);font-weight:900;margin:0}.h2{font-size:var(--fs-lg);font-weight:900;margin:0}.small{font-size:var(--fs-sm);color:var(--text-muted)}.muted{color:var(--text-muted)}.label{font-weight:700;font-size:var(--fs-md)}code{background:var(--primary-soft);padding:2px 6px;border-radius:var(--r-xs);font-family:Courier New,monospace;font-size:.9em}.app-container{position:relative;width:100%;min-height:100vh;background:var(--primary-weak)}.loading{position:absolute;inset:56px 0 80px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--primary-weak)}.content{padding:0 0 92px;background:transparent;min-height:calc(100vh - 120px);display:flex;flex-direction:column;overflow:hidden}.topbar{height:56px;background:linear-gradient(125deg,#523a86,#815dc3);color:#fff;display:flex;align-items:center;padding:0 14px;gap:10px;position:sticky;top:0;z-index:10}.topbar .icon-btn{--btn-color: #fff}.topbar .icon-btn:hover{--btn-color: var(--text)}.topbar-title{font-weight:800;font-size:18px;flex:1;text-align:center;margin-right:32px;letter-spacing:.2px}.card{background:var(--surface);border-radius:var(--r-md);border:1px solid var(--border);overflow:hidden}.card-pad{padding:var(--s-4)}.screen{min-height:100vh;background:var(--bg)}.screen__container{max-width:1200px;margin:0 auto;padding:var(--s-4)}.section-title{padding:var(--s-4);margin:0}.section-subtitle{padding:0 var(--s-4)}.section-content{padding:var(--s-4);display:flex;flex-direction:column;gap:16px;overflow-x:hidden}.home-button-row{display:flex;gap:var(--s-3);align-items:center}.fab{position:fixed;bottom:80px;right:var(--s-4);width:56px;height:56px;border-radius:50%;background:var(--accent);color:var(--accent-text);font-size:28px;font-weight:400;line-height:1;border:none;box-shadow:0 4px 12px #00000026;cursor:pointer;z-index:50;transition:all .3s ease-out;display:flex;align-items:center;justify-content:center}.fab--filter{right:auto;left:var(--s-4);background:var(--surface);border:2px solid var(--border);width:48px;height:48px}.fab--filter img{filter:invert(.4) sepia(0) saturate(0)}.fab--filter.fab--active{background:var(--primary-soft);border-color:var(--primary)}.fab--filter.fab--active img{filter:invert(.3) sepia(1) saturate(3) hue-rotate(230deg)}.fab__badge{position:absolute;top:8px;right:8px;width:8px;height:8px;border-radius:50%;background:var(--accent);border:2px solid var(--surface)}.fab--expanded{bottom:var(--s-4)}.fab:hover{transform:scale(1.1);box-shadow:0 6px 16px #0003}.fab:active{transform:scale(.95)}.fab--pulse{animation:fabPulse 1.2s ease-in-out 2}@keyframes fabPulse{0%,to{transform:scale(1);box-shadow:0 4px 12px #00000026}50%{transform:scale(1.15);box-shadow:0 6px 20px #00000040}}.stack{display:flex;flex-direction:column}.stack--sm{gap:var(--s-2)}.stack--md{gap:var(--s-4)}.stack--lg{gap:var(--s-6)}.list{display:flex;flex-direction:column}.list--divided>*:not(:first-child){border-top:1px solid var(--border)}.row{display:flex;align-items:center;gap:var(--s-3)}.space-between{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.flex{display:flex}.flex--center{align-items:center;justify-content:center}.flex--between{justify-content:space-between}.flex--align-center{align-items:center}.flex--gap-sm{gap:var(--s-2)}.flex--gap-md{gap:var(--s-4)}.grid{display:grid}.grid--2{grid-template-columns:repeat(2,1fr);gap:var(--s-4)}.grid--3{grid-template-columns:repeat(3,1fr);gap:var(--s-4)}.event-hero{height:200px;background-image:url(/event/background.webp);background-size:cover;background-position:center;display:flex;align-items:flex-end;padding:var(--s-4);color:var(--text-inverse);position:relative;z-index:1}.event-hero__content{position:relative;z-index:1000}.event-hero__calm{color:var(--primary-subtitle);margin:0;margin-bottom:var(--s-2);font-size:var(--fs-sm);text-shadow:var(--hero-text-shadow-sm);opacity:.9}.event-hero__title{color:var(--text-inverse);margin:0;text-shadow:var(--hero-text-shadow)}.event-hero__subtitle{color:var(--text-inverse);margin:0;margin-top:var(--s-2);text-shadow:var(--hero-text-shadow-sm);opacity:.95}.event-hero__overlay{position:absolute;inset:0;background:linear-gradient(to bottom,var(--hero-overlay-start) 0%,var(--hero-overlay-end) 100%);z-index:0}.event-list{background:var(--primary-soft);border-radius:0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.event-card{display:flex;flex-direction:column;gap:var(--s-4);padding:var(--s-4)}.event-card:not(:first-child){border-top:1px solid var(--border)}.event-card--past{opacity:.6;background:var(--surface-dim)}.event-card__header{display:flex;align-items:flex-start;gap:var(--s-3)}.event-card__info{flex:1}.event-card__info h2,.event-card__info p{margin:0}.event-card__stats{display:flex;gap:var(--s-2);font-size:var(--fs-sm)}.event-card__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.empty-state{padding:var(--s-4)}.avatar{width:44px;height:44px;border-radius:50%;background:var(--border);display:flex;align-items:center;justify-content:center;gap:var(--s-1);top:3px;position:relative;color:var(--text-muted);flex-shrink:0;font-weight:600}.participant-list{background:var(--primary-soft);border-radius:0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);overflow:visible}.participant-list__item{--item-bg: transparent;--item-color: var(--text);display:block;border-bottom:none;background:var(--item-bg);color:var(--item-color);transition:all var(--transition-fast);position:relative;z-index:0}.participant-list__item:not(:first-child){border-top:1px solid var(--border)}.participant-list__item--accent{--item-bg: var(--accent);--item-color: var(--accent-text)}.participant-list__item--editable{cursor:pointer;-webkit-user-select:none;user-select:none}.participant-list__item--selected{background:var(--bg-secondary);box-shadow:inset 0 6px 8px -4px #00000026,0 4px 12px #00000026;z-index:2}.participant-list__item--selected .participant-actions{border-top:1px solid var(--border);box-shadow:none}.participant-list__item>div:first-child:not(.participant-actions){display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4)}.participant-list__item .row{flex:1;min-width:0}.participant-list__info{display:flex;align-items:center;gap:var(--s-2);flex:1;min-width:0;flex-wrap:wrap}.participant-list__name{margin:0;word-break:break-word}.participant-list__item--accent .participant-list__name,.participant-list__item--accent .participant-list__info,.participant-list__item--accent .avatar{color:var(--accent-text)}.participant-actions{background:var(--bg-secondary);border-top:1px solid var(--border);border-bottom:2px solid var(--border);animation:expandDown .2s ease-out;box-shadow:0 4px 12px #00000026}.participant-actions__content{padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-3)}.participant-actions__content .divider{margin:var(--s-2) 0;border:none;border-top:1px solid var(--border)}.mini-spinner{display:inline-flex;gap:6px;align-items:end;position:relative;top:3px}.mini-spinner__dot{width:4px;height:4px;border-radius:50%;background:var(--text-muted);animation:dotBounce 1s ease-in-out infinite}.mini-spinner__dot:nth-child(1){animation-delay:0s}.mini-spinner__dot:nth-child(2){animation-delay:.15s}.mini-spinner__dot:nth-child(3){animation-delay:.3s}.mini-spinner--ok .mini-spinner__dot,.mini-spinner--bad .mini-spinner__dot{background:var(--text-inverse)}.mini-spinner--neutral .mini-spinner__dot{background:var(--text-muted)}@keyframes dotBounce{0%,60%,to{transform:translateY(0);opacity:.5}30%{transform:translateY(-6px);opacity:1}}@keyframes expandDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:500px}}.request-list{background:var(--primary-soft);border-radius:0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.request-list__item{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:var(--s-3);padding:var(--s-3) var(--s-4);transition:background-color .3s ease-out,color .2s ease-out;touch-action:pan-y;cursor:grab}.request-list__item:not(:first-child){border-top:1px solid var(--border)}.request-list__item--hint{animation:swipeHint 4s ease-out .5s infinite}.request-list__item--hint.swipe-card--swiping{animation:none}.request-list__item--swiping{transition:none;cursor:grabbing}.request-list__item--swiping .small.muted{color:inherit;opacity:.8}.request-list__item--swiping:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none}.request-list__item--approved{background:linear-gradient(135deg,color-mix(in srgb,var(--success) 75%,var(--primary-soft)),color-mix(in srgb,var(--success) 65%,var(--primary-soft)));animation:fadeOut .5s ease-out 4.5s forwards}.request-list__item--declined{background:linear-gradient(135deg,color-mix(in srgb,var(--error) 75%,var(--primary-soft)),color-mix(in srgb,var(--error) 65%,var(--primary-soft)));animation:fadeOut .5s ease-out 4.5s forwards}.request-list__item--pending{background:var(--primary-soft)}@keyframes fadeOut{to{opacity:0;transform:translate(-20px)}}@keyframes swipeHint{0%,to{transform:translate(0)}2%{transform:translate(50px)}6%{transform:translate(-15px)}10%{transform:translate(10px)}14%{transform:translate(-5px)}18%{transform:translate(2px)}22%{transform:translate(0)}25%{transform:translate(0)}}.request-list__badge{position:absolute;top:var(--s-3);right:var(--s-3)}.request-list__feedback{display:flex;align-items:center;justify-content:center;padding:var(--s-4);font-size:var(--fs-lg);font-weight:700}.request-list__feedback p{margin:0}.request-list__feedback--approved{color:var(--success)}.request-list__feedback--declined{color:var(--error)}.request-list__feedback--pending{justify-content:space-between;gap:var(--s-3);color:var(--text)}.request-list__undo{margin-left:auto}.request-list__actions{display:flex;gap:var(--s-2);margin-top:var(--s-1)}.request-list__actions .btn{flex:1}.modal-overlay{position:fixed;inset:0;background:var(--overlay);z-index:1040;display:flex;align-items:center;justify-content:center;padding:var(--s-4)}.modal{background:var(--bg-secondary);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);border:1px solid var(--border);max-width:500px;width:100%;max-height:90vh;overflow:hidden;z-index:1050}.modal__header{padding:var(--s-4);border-bottom:1px solid var(--border);background:transparent;border-radius:var(--r-lg) var(--r-lg) 0 0;display:flex;align-items:center;justify-content:space-between}.modal__title{margin:0;font-size:var(--fs-lg);font-weight:600;color:var(--text)}.modal__close{background:transparent;border:none;color:var(--text-muted);font-size:24px;line-height:1;cursor:pointer;padding:4px 8px;border-radius:var(--r-sm);transition:all .2s;margin:-4px -8px -4px 0}.modal__close:hover{background:var(--bg-tertiary);color:var(--text)}.modal__body{padding:var(--s-4);background:var(--bg-secondary)}.modal__body p:last-child{margin-bottom:0}.modal__footer{padding:var(--s-4);border-top:1px solid var(--border);display:flex;gap:var(--s-3);justify-content:flex-end;background:var(--bg-secondary);border-radius:0 0 var(--r-lg) var(--r-lg)}.modal__footer.stack{flex-direction:column}.modal__actions{padding:var(--s-4);border-top:1px solid var(--border);display:flex;flex-direction:column;gap:var(--s-3);background:var(--bg-secondary)}.modal__cancel{padding:var(--s-4);border-top:1px solid var(--border);background:var(--bg-secondary);border-radius:0 0 var(--r-lg) var(--r-lg)}.modal__divider{height:1px;background:var(--border);margin:var(--s-1) 0}.modal__footer:not(:last-child),.modal__cancel:not(:last-child){border-radius:0}.form-group{margin-bottom:var(--s-4)}.form-group label{display:block;margin-bottom:var(--s-2);color:var(--text);font-weight:600}.input,.textarea{width:100%;padding:var(--s-3);border:1px solid color-mix(in srgb,var(--primary) 20%,var(--border));border-radius:var(--r-md);font-size:var(--fs-base);background:var(--primary-soft);color:var(--text);transition:border-color var(--transition-fast)}.input:focus,.textarea:focus{outline:2px solid var(--primary);outline-offset:2px}.input::placeholder,.textarea::placeholder{color:var(--text-muted)}.textarea{resize:vertical;min-height:100px}.tabs{display:flex;gap:var(--s-4);align-items:center;padding:var(--s-4);border-bottom:1px solid var(--border)}.tabs__button{--tab-bg: transparent;--tab-color: var(--text);--tab-border: transparent;display:flex;align-items:center;gap:var(--s-2);padding:var(--s-3) var(--s-5);font-weight:700;font-size:var(--fs-base);cursor:pointer;background:var(--tab-bg);border:1px solid var(--tab-border);color:var(--tab-color);border-radius:var(--r-md);transition:all var(--transition-fast)}.tabs__button:hover:not(:disabled){filter:var(--filter-hover-brighten)}.tabs__button:focus,.tabs__button:focus-visible{outline:3px solid var(--primary);outline-offset:var(--s-1)}.tabs__button--active{--tab-bg: var(--primary);--tab-color: var(--text-inverse)}.tabs__button--active:focus,.tabs__button--active:focus-visible{outline-color:var(--accent)}.tabs__button:disabled{opacity:.5;cursor:not-allowed}.event-preview{display:flex;gap:var(--s-3);align-items:center;padding:var(--s-4);background:var(--primary-weak)}.event-preview__thumbnail{flex-shrink:0;width:75px;height:75px;border-radius:var(--r-md);background-image:url(/event/thumbnail.webp);background-size:cover;background-position:center}.event-preview__info{flex:1;min-width:0}.event-preview__info h2{margin:0}.event-preview__info p{margin:0;margin-top:var(--s-1)}.event-preview__info p:last-child{margin-top:0}.settings-card{display:flex;flex-direction:column;gap:var(--s-4);padding:var(--s-4);background:var(--primary-soft)}.settings-card__divider{border:0;border-top:1px solid var(--border);margin:0}.settings-card__row{display:flex;flex-direction:column;gap:var(--s-3)}.invite-section{display:flex;flex-direction:column;gap:var(--s-4);padding:var(--s-4)}.invite-section__link-box{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--primary-soft)}.invite-section__link-box code{flex:1;font-size:var(--fs-xs);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.invite-section__qr-container{display:flex;justify-content:center;align-items:center;padding:var(--s-8);background:#fff;border-radius:var(--r-md)}.pin-badge{cursor:pointer;gap:0}.qr-container{display:flex;flex-direction:column;align-items:center;gap:var(--s-3)}.qr-container img{cursor:pointer;border-radius:var(--r-md)}.qr-container img:focus,.qr-container img:focus-visible{outline:3px solid var(--primary);outline-offset:4px}.qr-container .btn{width:100%}.qr-fullscreen-overlay{position:fixed;inset:0;background:#0e0919f2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease-out;overflow:auto;-webkit-overflow-scrolling:touch}.qr-fullscreen-image{width:100vw;height:100vh;object-fit:contain;cursor:pointer;animation:zoomIn .3s ease-out;touch-action:pinch-zoom}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes zoomIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.switch{position:relative;display:inline-block;width:48px;height:26px;flex-shrink:0}.switch input{opacity:0;width:0;height:0}.switch .slider{position:absolute;cursor:pointer;inset:0;background:#fff;border:2px solid var(--text-muted);border-radius:26px;transition:all .25s cubic-bezier(.4,0,.2,1)}.switch .slider:before{content:"";position:absolute;height:18px;width:18px;left:2px;bottom:2px;background:var(--text-muted);border-radius:50%;transition:all .25s cubic-bezier(.4,0,.2,1)}.switch input:checked+.slider{background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 90%,black) 0%,var(--primary) 100%);border-color:var(--primary)}.switch input:checked+.slider:before{background:#fff;transform:translate(22px)}.switch input:focus+.slider{outline:3px solid var(--primary);outline-offset:4px}.switch input:focus-visible+.slider{outline:3px solid var(--primary);outline-offset:4px}.switch input:disabled+.slider{opacity:.5;cursor:not-allowed}.mt-1{margin-top:var(--s-1)}.mt-2{margin-top:var(--s-2)}.mt-3{margin-top:var(--s-3)}.mt-4{margin-top:var(--s-4)}.mt-5{margin-top:var(--s-5)}.mt-6{margin-top:var(--s-6)}.mb-1{margin-bottom:var(--s-1)}.mb-2{margin-bottom:var(--s-2)}.mb-3{margin-bottom:var(--s-3)}.mb-4{margin-bottom:var(--s-4)}.mb-5{margin-bottom:var(--s-5)}.mb-6{margin-bottom:var(--s-6)}.ml-1{margin-left:var(--s-1)}.ml-2{margin-left:var(--s-2)}.ml-3{margin-left:var(--s-3)}.ml-4{margin-left:var(--s-4)}.mr-1{margin-right:var(--s-1)}.mr-2{margin-right:var(--s-2)}.mr-3{margin-right:var(--s-3)}.mr-4{margin-right:var(--s-4)}.preserve-whitespace{white-space:pre-wrap}@keyframes calmColorFade{0%,to{color:var(--primary-subtitle)}50%{color:var(--primary)}}*{transition:background-color var(--transition-base) ease,color var(--transition-base) ease,border-color var(--transition-base) ease}.status-banner{--banner-bg: var(--bg-secondary);--banner-border: var(--border);--banner-stripe: var(--border-strong);--banner-label: var(--text);--banner-color: var(--text);padding:var(--s-3);margin-bottom:var(--s-4);border-radius:var(--r-sm);background:var(--banner-bg);color:var(--banner-color);border:1px solid var(--banner-border);border-left:8px solid var(--banner-stripe);font-size:var(--fs-sm)}.status-banner .label{font-weight:700;margin-bottom:var(--s-2);color:var(--banner-label)}.status-banner p{margin:0;color:var(--text)}.status-banner p+p{margin-top:var(--s-2)}.status-banner p.small{font-size:var(--fs-sm);color:var(--text-muted)}.status-banner--info{--banner-bg: color-mix(in srgb, var(--primary) 8%, white);--banner-border: color-mix(in srgb, var(--primary) 30%, white);--banner-stripe: var(--primary);--banner-label: var(--primary)}.status-banner--warning{--banner-bg: color-mix(in srgb, var(--warn) 8%, white);--banner-border: color-mix(in srgb, var(--warn) 30%, white);--banner-stripe: var(--warn);--banner-label: var(--warn)}.status-banner--error{--banner-bg: color-mix(in srgb, var(--bad) 8%, white);--banner-border: color-mix(in srgb, var(--bad) 30%, white);--banner-stripe: var(--bad);--banner-label: var(--bad)}.status-banner--success{--banner-bg: color-mix(in srgb, var(--ok) 8%, white);--banner-border: color-mix(in srgb, var(--ok) 30%, white);--banner-stripe: var(--ok);--banner-label: var(--ok)}.loading-spinner{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s-3);padding:var(--s-6)}.loading-spinner__animation{position:relative;width:80px;height:80px;display:flex;align-items:center;justify-content:center}.loading-spinner__shadow{position:absolute;bottom:0;width:50%;height:12px;background:radial-gradient(ellipse at center,rgba(0,0,0,.25) 0%,transparent 70%);animation:shadowPulse 1.2s ease-in-out infinite;z-index:0}.loading-spinner__pin{position:absolute;width:65%;height:auto;animation:pinBounce 1.2s ease-in-out infinite;transform-origin:center bottom;z-index:1}.loading-spinner__ticket{position:absolute;width:75%;height:auto;top:14%;animation:ticketBounceWiggle 1.2s ease-in-out infinite;transform-origin:center center;z-index:2}.loading-spinner--small .loading-spinner__animation{width:48px;height:48px}.loading-spinner--small .loading-spinner__ticket{width:70%}.loading-spinner--small .loading-spinner__shadow{bottom:-2px}.loading-spinner--medium .loading-spinner__animation{width:80px;height:80px}.loading-spinner--large .loading-spinner__animation{width:120px;height:120px}.loading-spinner__label{font-size:var(--fs-sm);color:var(--text-muted);font-weight:500}@keyframes pinBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes ticketBounceWiggle{0%,to{transform:translateY(0) rotate(-5deg) scale(1)}25%{transform:translateY(-4px) rotate(5deg) scale(1.03)}50%{transform:translateY(-8px) rotate(-5deg) scale(1)}75%{transform:translateY(-4px) rotate(5deg) scale(.99)}}@keyframes shadowPulse{0%,to{opacity:.8;transform:scale(1)}50%{opacity:.3;transform:scale(.4)}}.modal{animation:modalFadeIn .2s ease-out}.modal-overlay{animation:overlayFadeIn .2s ease-out}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes overlayFadeIn{0%{opacity:0}to{opacity:1}}.btn{--btn-bg: var(--bg-secondary);--btn-color: var(--text);--btn-border: transparent;padding:var(--s-3) var(--s-4);border-radius:var(--r-md);font-size:var(--fs-base);font-weight:600;cursor:pointer;transition:all var(--transition-fast);background:var(--btn-bg);color:var(--btn-color);border:1px solid var(--btn-border)}.btn:hover:not(:disabled){filter:var(--filter-hover-brighten)}.btn:active{filter:none}.btn:focus,.btn:focus-visible{outline:3px solid var(--primary);outline-offset:4px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--accent{--btn-bg: var(--accent);--btn-color: var(--text)}.btn--ok{--btn-bg: var(--ok);--btn-color: var(--text-inverse);background:linear-gradient(135deg,var(--ok) 0%,var(--ok-hover) 100%);border:none}.btn--ok:hover:not(:disabled){filter:var(--filter-hover-brighten)}.btn--bad{--btn-bg: var(--bad);--btn-color: var(--text-inverse);background:linear-gradient(135deg,var(--bad) 0%,var(--bad-hover) 100%);border:none}.btn--bad:hover:not(:disabled){filter:var(--filter-hover-brighten)}.btn--primary{--btn-bg: var(--primary);--btn-color: var(--text-inverse);background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 85%,black) 0%,var(--primary-hover) 100%)}.btn--primary:hover{background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 90%,black),color-mix(in srgb,var(--primary) 80%,white));filter:none}.btn--ghost{background:transparent;color:var(--text);border:1px solid var(--border)}.btn--ghost:hover{background:linear-gradient(135deg,color-mix(in srgb,var(--bg) 95%,black) 0%,var(--bg) 100%);filter:none}.btn--ghost:focus,.btn--ghost:focus-visible{outline:3px solid var(--primary);outline-offset:4px}.btn--neutral{--btn-bg: var(--bg-secondary);--btn-color: var(--text);border:1px solid var(--border)}.btn--full{width:100%}.icon-btn{--btn-bg: transparent;--btn-color: var(--text);display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--r-md);background:var(--btn-bg);border:none;cursor:pointer;color:var(--btn-color);font-size:28px;line-height:1;transition:all var(--transition-fast)}.icon-btn:hover{--btn-bg: var(--bg-secondary)}.icon-btn:focus,.icon-btn:focus-visible{outline:3px solid var(--primary);outline-offset:4px}.segmented-control{display:flex;gap:0;background:var(--surface);border-radius:14px;padding:0;margin-top:var(--s-2);border:1px solid var(--border);overflow:hidden}.segmented-control__option{flex:1;padding:12px 20px;background:transparent;border:none;font-size:var(--fs-base);font-weight:500;color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast) ease;text-align:center;box-shadow:none}.segmented-control__option:first-child{border-radius:10px 0 0 10px}.segmented-control__option:last-child{border-radius:0 10px 10px 0}.segmented-control__option:only-child{border-radius:10px}.segmented-control__option--active{background:var(--primary);font-weight:700;color:var(--text-inverse)}.segmented-control__option:hover:not(.segmented-control__option--active){color:var(--text)}.segmented-control--disabled{opacity:.6;pointer-events:none}.event-list-filter__section{display:flex;flex-direction:column;gap:8px;margin-bottom:var(--s-4)}.event-list-filter__section:last-child{margin-bottom:0}.event-list-filter__section-title{font-size:12px;font-weight:600;text-transform:uppercase;color:var(--text-muted);margin:0;letter-spacing:.5px}.event-list-filter__sort-buttons{display:flex;gap:8px;flex-wrap:wrap}.event-list-filter__sort-buttons .btn{flex:1;min-width:80px;font-size:13px;padding:8px 12px;height:auto;display:flex;align-items:center;justify-content:center;gap:4px}.event-list-filter__sort-buttons .btn.btn--primary{background:var(--primary);color:var(--text-inverse);font-weight:600}.event-list-filter__sort-icon{font-size:10px}.event-list-filter__quick-filters{display:flex;gap:8px;flex-wrap:wrap}.event-list-filter__quick-filters .btn{flex:0 0 auto;font-size:12px;padding:6px 10px;height:auto;white-space:nowrap}.event-list-filter__search{position:relative}.event-list-filter__search .input{width:100%;background:var(--bg);padding-right:36px}.event-list-filter__clear{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--text-muted);font-size:18px;line-height:1;cursor:pointer;padding:4px 8px;border-radius:4px}.event-list-filter__clear:hover{background:#0000000d;color:var(--text)}mark.event-list-filter__highlight{background-color:var(--accent-weak);color:inherit;box-shadow:0 0 0 3px var(--accent-weak)}.badge{--badge-bg: var(--bg-tertiary);--badge-color: var(--text);--badge-border: transparent;display:inline-flex;align-items:center;gap:var(--s-1);padding:3px 8px;min-height:22px;border-radius:var(--r-sm);font-size:12px;font-weight:600;background:var(--badge-bg);color:var(--badge-color);border:1px solid var(--badge-border);transition:all var(--transition-base)}.badge--loading{opacity:.6;pointer-events:none}.badge__content{display:inline-flex;align-items:center;gap:6px;padding:2px 0;font-weight:600}.badge.attendance-badge{min-width:54px;padding:1px 6px;min-height:26px;justify-content:center}.badge:where(button){border:1px solid var(--badge-border);background:var(--badge-bg);font:inherit;font-size:var(--fs-sm);font-weight:600;cursor:pointer}.badge:where(button):hover{filter:var(--filter-hover-brighten)}.badge:where(button):focus,.badge:where(button):focus-visible{outline:3px solid var(--accent);outline-offset:var(--s-1)}.badge.primary{--badge-bg: linear-gradient(135deg, var(--primary) 0%, var(--primary-hover) 100%);--badge-color: var(--text-inverse)}.badge.accent{--badge-bg: linear-gradient( 135deg, var(--accent) 0%, color-mix(in srgb, var(--accent) 5%, var(--accent-hover) 95%) );--badge-color: var(--accent-text)}.badge.neutral{--badge-bg: var(--bg-tertiary);--badge-color: var(--text-muted);--badge-border: rgba(0, 0, 0, .1)}.badge.ok{--badge-bg: linear-gradient(135deg, var(--ok) 0%, var(--ok-hover) 100%);--badge-color: var(--text-inverse)}.badge.bad{--badge-bg: linear-gradient(135deg, var(--bad) 0%, var(--bad-hover) 100%);--badge-color: var(--text-inverse)}.participant-list__item--accent .badge.badge--role{--badge-bg: var(--bg);--badge-color: var(--text);--badge-border: var(--border)}.participant-list__item--selected .badge.badge--role{--badge-bg: var(--accent);--badge-color: var(--accent-text);--badge-border: transparent}.participant-list__item--accent .badge:where(button):focus,.participant-list__item--accent .badge:where(button):focus-visible{outline-color:var(--primary)}.request-status-badge{position:absolute;top:var(--s-3);right:var(--s-3);padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500;color:var(--text-inverse)}.request-status-badge--going{background-color:var(--ok)}.request-status-badge--maybe{background-color:var(--warn)}.offline-banner{--banner-bg: var(--warn);--banner-text: var(--text-inverse);position:sticky;top:0;z-index:11;background:var(--banner-bg);color:var(--banner-text);padding:var(--s-2) var(--s-4);text-align:center;font-size:var(--fs-sm);font-weight:600;box-shadow:0 2px 8px #00000026}.topbar{height:57px;background:linear-gradient(to bottom,var(--header-bg) 0%,transparent 50%),linear-gradient(150deg,var(--header-bg) 0%,var(--header-bg) 20%,var(--header-bg-light) 100%);color:var(--header-text);display:flex;align-items:center;padding:1px 14px 0;gap:10px;position:sticky;top:-1px;margin-top:-1px;border:none;outline:none;box-shadow:none;z-index:10;transition:transform .3s ease-out;will-change:transform}.topbar--hidden{transform:translateY(-100%)}.topbar .icon-btn{width:36px;height:36px;border-radius:10px;transition:opacity .2s ease-out}.topbar .icon-btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.topbar-title{font-weight:800;font-size:18px;position:absolute;left:50%;transform:translate(-50%);letter-spacing:.2px;pointer-events:auto;max-width:calc(100vw - 140px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:none;border:none;color:inherit;padding:4px 8px;cursor:pointer}.topbar-title:focus-visible{outline:3px solid var(--accent);outline-offset:4px;border-radius:4px}.topbar-logo-group{position:absolute;left:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:center;pointer-events:auto;height:44px;background:none;border:none;padding:0 48px 0 0;margin-left:24px;cursor:pointer}.topbar-logo-group:focus-visible{outline:3px solid var(--accent);outline-offset:1px;border-radius:8px}.topbar-logo-name{height:28px;width:auto;filter:brightness(0) invert(1)}.topbar-logo-ticket{position:absolute;right:-8px;top:50%;transform:translateY(-40%);height:60px;width:auto;pointer-events:none}.topbar-title--clickable{cursor:pointer}.icon-btn{width:44px;height:44px;border-radius:12px;background:transparent;color:var(--header-text);display:inline-flex;align-items:center;justify-content:center;font-size:18px;transition:background-color .2s ease-out,opacity .2s ease-out}.icon-btn:hover{background:#ffffff26}.icon-btn:active{background:#ffffff40}.icon-btn:last-child{margin-left:auto}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--primary-soft);border-top:1px solid color-mix(in srgb,var(--primary) 30%,var(--border));padding:var(--s-2) var(--s-4);gap:var(--s-3);z-index:100;transition:transform .3s ease-out,opacity .3s ease-out;will-change:transform,opacity}.bottom-nav--hidden{transform:translateY(100%);opacity:0}.bottom-nav--disabled{opacity:.5;pointer-events:none}.bottom-nav__item{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--s-1);padding:var(--s-2) var(--s-1);background:transparent;border:none;border-radius:var(--r-md);cursor:pointer;color:var(--text-muted);transition:all .3s ease-out}.bottom-nav__item:hover:not(:disabled){color:var(--text)}.bottom-nav__item:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.bottom-nav__item--active{color:var(--text)}.bottom-nav__item:disabled{opacity:.4;cursor:not-allowed}.bottom-nav__icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;transition:all .3s ease-out}.bottom-nav__icon svg{width:100%;height:100%;transition:all .3s ease-out}.bottom-nav__icon-img{width:100%;height:100%;background-color:var(--text-muted);mask-image:var(--events-icon-url);mask-size:contain;mask-position:center;mask-repeat:no-repeat;-webkit-mask-image:var(--events-icon-url);-webkit-mask-size:contain;-webkit-mask-position:center;-webkit-mask-repeat:no-repeat;transition:all .3s ease-out}.bottom-nav__icon-img--user{mask-image:url(/icons/user.svg);-webkit-mask-image:url(/icons/user.svg)}.bottom-nav__item:hover:not(:disabled) .bottom-nav__icon-img,.bottom-nav__item--active .bottom-nav__icon-img{background-color:var(--text)}.bottom-nav__label{font-size:10px;font-weight:700;transition:all .3s ease-out}.app-container{padding-bottom:60px}.debug{position:fixed;bottom:90px;right:85px;z-index:9999;opacity:.05;transition:opacity .2s ease}.debug:hover{opacity:1}.debug--no-fab{right:20px}.debug__toggle{padding:8px 12px;background:#333;color:#fff;border:none;border-radius:4px;font-size:12px;cursor:pointer;box-shadow:0 2px 8px #0003}.debug__toggle:hover{background:#444}.debug__menu{position:absolute;bottom:100%;right:0;margin-bottom:8px;background:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 4px 16px #00000026;max-height:400px;overflow-y:auto;min-width:200px}.debug__item{display:block;width:100%;padding:12px 16px;background:none;border:none;text-align:left;font-size:14px;cursor:pointer;border-bottom:1px solid #eee}.debug__item:last-child{border-bottom:none}.debug__item:hover{background:#f5f5f5}
