.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:var(--b-radius-sm);border:1px solid var(--c-border);background-color:var(--c-surface-alt);color:var(--c-text-primary);font-size:.75rem;font-weight:600;line-height:1.25;white-space:nowrap}.badge--primary{background-color:var(--c-primary-soft);border-color:var(--c-primary);color:var(--c-primary-dark)}.badge--success{background-color:var(--c-success-soft);border-color:var(--c-success);color:var(--c-success)}.badge--warning{background-color:var(--c-warning-soft);border-color:var(--c-warning);color:var(--c-warning)}.badge--danger{background-color:var(--c-danger-soft);border-color:var(--c-danger);color:var(--c-danger)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:var(--b-radius-md);border:1px solid transparent;font-size:.875rem;font-weight:600;line-height:1.2;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,opacity .2s ease}@media(hover:hover){.btn:hover{opacity:.92}}@media(hover:none){.btn:active{opacity:.92}}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background-color:var(--c-primary);color:var(--c-text-inverse)}.btn--secondary{background-color:var(--c-surface-alt);border-color:var(--c-border);color:var(--c-text-primary)}.btn--danger{background-color:var(--c-danger);color:var(--c-text-inverse)}.btn--ghost{background-color:transparent;color:var(--c-primary)}.btn--sm{padding:6px 10px;font-size:.75rem}.btn--full{width:100%}.app-shell{min-height:100vh;display:flex;flex-direction:column;background-color:var(--c-bg)}@media(min-width:992px){.app-shell{display:grid;grid-template-columns:248px 1fr;grid-template-rows:auto 1fr}}.app-header{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background-color:var(--c-surface);border-bottom:1px solid var(--c-border)}@media(min-width:992px){.app-header{grid-column:1/-1;padding:12px 24px}}.app-header__brand{display:flex;align-items:center;gap:10px;font-size:clamp(16px,1.25vw,18px);font-weight:800;color:var(--c-text-primary)}.app-header__brand-icon{color:var(--c-primary);flex-shrink:0}.app-header__actions{display:flex;align-items:center;gap:8px}.app-sidebar{display:none}@media(min-width:992px){.app-sidebar{display:flex;flex-direction:column;gap:6px;padding:16px 12px;background-color:var(--c-surface);border-right:1px solid var(--c-border)}}.app-sidebar__link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--b-radius-md);color:var(--c-text-secondary);font-size:.875rem;font-weight:600;transition:background-color .2s ease,color .2s ease}@media(hover:hover){.app-sidebar__link:hover{background-color:var(--c-surface-hover);color:var(--c-text-primary)}}@media(hover:none){.app-sidebar__link:active{background-color:var(--c-surface-hover);color:var(--c-text-primary)}}.app-sidebar__link--active{background-color:var(--c-primary-soft);color:var(--c-primary-dark)}.app-main{flex:1;min-width:0;padding:16px 16px 88px;display:flex;flex-direction:column;gap:16px}@media(min-width:992px){.app-main{padding:24px 24px 32px}}.tg-reminder-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-radius:var(--b-radius-md);border:1px solid var(--c-warning);background-color:var(--c-warning-soft);font-size:.8125rem}.tg-reminder-banner__text{display:flex;align-items:center;gap:8px;color:var(--c-text-primary);font-weight:500}.bottom-navbar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;align-items:stretch;justify-content:space-around;background-color:var(--c-surface);border-top:1px solid var(--c-border);padding:6px 4px;padding-bottom:calc(6px + env(safe-area-inset-bottom))}@media(min-width:992px){.bottom-navbar{display:none}}.bottom-navbar__item{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 4px;border-radius:var(--b-radius-sm);color:var(--c-text-secondary);font-size:.6875rem;font-weight:600;text-align:center}.bottom-navbar__item--active{color:var(--c-primary);background-color:var(--c-primary-soft)}.bottom-navbar__label{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.frozen-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background-color:var(--c-bg)}.frozen-screen__card{width:100%;max-width:460px;background-color:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--b-radius-xl);box-shadow:var(--shadow-md);padding:28px 24px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px}.frozen-screen__icon{width:56px;height:56px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background-color:var(--c-danger-soft);color:var(--c-danger)}.frozen-screen__title{font-size:clamp(18px,1.5277777778vw,22px);font-weight:800}.frozen-screen__reason{font-size:.875rem;color:var(--c-text-secondary)}.card{background-color:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--b-radius-lg);box-shadow:var(--shadow-sm);padding:16px;display:flex;flex-direction:column;gap:12px}.card__header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.card__title{font-size:clamp(15px,1.25vw,18px);font-weight:700;color:var(--c-text-primary)}.card__subtitle{font-size:.8125rem;color:var(--c-text-secondary)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:40px 24px;border-radius:var(--b-radius-lg);border:1px dashed var(--c-border);background-color:var(--c-surface)}.empty-state__icon{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background-color:var(--c-primary-soft);color:var(--c-primary)}.empty-state__title{font-size:clamp(16px,1.3888888889vw,20px);font-weight:700;color:var(--c-text-primary)}.empty-state__description{max-width:440px;font-size:.875rem;color:var(--c-text-secondary)}.form-stack{display:flex;flex-direction:column;gap:14px}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.form-field{display:flex;flex-direction:column;gap:6px}.form-field__label{font-size:.8125rem;font-weight:600;color:var(--c-text-primary)}.form-field__control{width:100%;padding:10px 12px;border-radius:var(--b-radius-md);border:1px solid var(--c-border);background-color:var(--c-surface);color:var(--c-text-primary);font-size:.875rem}.form-field__textarea{width:100%;min-height:88px;padding:10px 12px;border-radius:var(--b-radius-md);border:1px solid var(--c-border);background-color:var(--c-surface);color:var(--c-text-primary);font-size:.875rem;resize:vertical}.form-field__hint{font-size:.75rem;color:var(--c-text-secondary)}.form-checkbox-list{display:flex;flex-wrap:wrap;gap:8px}.form-checkbox-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:var(--b-radius-sm);border:1px solid var(--c-border);background-color:var(--c-surface-alt);font-size:.8125rem;cursor:pointer}@media(hover:hover){.form-checkbox-pill:hover{background-color:var(--c-surface-hover)}}@media(hover:none){.form-checkbox-pill:active{background-color:var(--c-surface-hover)}}.alert-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:var(--b-radius-md);border:1px solid var(--c-border);background-color:var(--c-surface-alt);font-size:.8125rem}.alert-banner--warning{background-color:var(--c-warning-soft);border-color:var(--c-warning);color:var(--c-text-primary)}.alert-banner--danger{background-color:var(--c-danger-soft);border-color:var(--c-danger);color:var(--c-danger)}.alert-banner--success{background-color:var(--c-success-soft);border-color:var(--c-success);color:var(--c-success)}.alert-banner__lead{display:flex;align-items:flex-start;gap:10px}.table-wrap{width:100%;overflow-x:auto;border:1px solid var(--c-border);border-radius:var(--b-radius-md)}.data-table{width:100%;border-collapse:collapse;font-size:.8125rem}.data-table__th{text-align:left;padding:10px 12px;background-color:var(--c-surface-alt);border-bottom:1px solid var(--c-border);font-weight:700;white-space:nowrap}.data-table__td{padding:10px 12px;border-bottom:1px solid var(--c-border);vertical-align:top}.inline-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;background-color:var(--c-backdrop)}.modal{width:100%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;background-color:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--b-radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.modal__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--c-border)}.modal__title{font-size:clamp(16px,1.25vw,18px);font-weight:700;color:var(--c-text-primary)}.modal__close{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid var(--c-border);border-radius:var(--b-radius-sm);background-color:var(--c-surface-alt);color:var(--c-text-primary);cursor:pointer}@media(hover:hover){.modal__close:hover{background-color:var(--c-surface-hover)}}@media(hover:none){.modal__close:active{background-color:var(--c-surface-hover)}}.modal__body{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.modal__footer{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--c-border);background-color:var(--c-surface-alt)}@media(max-width:576px){.modal__footer{flex-direction:column}}.admin-tabs{display:flex;flex-wrap:wrap;gap:8px}.admin-tab{padding:8px 14px;border-radius:var(--b-radius-md);border:1px solid var(--c-border);background-color:var(--c-surface);color:var(--c-text-secondary);font-size:.8125rem;font-weight:600;cursor:pointer}@media(hover:hover){.admin-tab:hover{background-color:var(--c-surface-hover)}}@media(hover:none){.admin-tab:active{background-color:var(--c-surface-hover)}}.admin-tab--active{background-color:var(--c-primary-soft);border-color:var(--c-primary);color:var(--c-primary-dark)}.admin-split{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background-color:var(--c-bg)}.auth-card{width:100%;max-width:420px;background-color:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--b-radius-xl);box-shadow:var(--shadow-md);padding:28px 24px;display:flex;flex-direction:column;gap:16px}.auth-card__header{display:flex;align-items:center;gap:12px}.auth-card__icon{width:44px;height:44px;border-radius:var(--b-radius-md);display:inline-flex;align-items:center;justify-content:center;background-color:var(--c-primary-soft);color:var(--c-primary);flex-shrink:0}.auth-card__title{font-size:clamp(18px,1.5277777778vw,22px);font-weight:800}.auth-card__subtitle{font-size:.8125rem;color:var(--c-text-secondary)}.auth-card__footer-link{text-align:center;font-size:.75rem;color:var(--c-text-secondary)}.events-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.event-card__meta{display:flex;flex-wrap:wrap;gap:6px}.event-card__dates{font-size:.8125rem;color:var(--c-text-secondary)}.event-card__desc{font-size:.875rem;color:var(--c-text-primary)}.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.profile-meta{display:flex;flex-direction:column;gap:10px}.profile-meta__row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:8px;border-bottom:1px solid var(--c-border);font-size:.875rem}.profile-meta__label{color:var(--c-text-secondary)}.profile-meta__value{font-weight:600;text-align:right}.profile-positions{display:flex;flex-wrap:wrap;gap:6px}.notifications-list{display:flex;flex-direction:column;gap:10px}.notification-item{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:var(--b-radius-md);border:1px solid var(--c-border);background-color:var(--c-surface-alt)}.notification-item--unread{border-color:var(--c-primary);background-color:var(--c-primary-soft)}.notification-item__title{font-size:.875rem;font-weight:700}.notification-item__body{font-size:.8125rem;color:var(--c-text-secondary)}.schedule-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.schedule-legend{display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px;border-radius:var(--b-radius-md);border:1px solid var(--c-border);background-color:var(--c-surface-alt)}.schedule-legend__item{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:var(--b-radius-sm);font-size:.75rem;font-weight:600;border:1px solid var(--c-border)}.schedule-legend__item--assigned{background-color:var(--c-status-assigned-bg);color:var(--c-status-assigned-text);border-color:var(--c-status-assigned-border)}.schedule-legend__item--first-day{background-color:var(--c-status-first-day-bg);color:var(--c-status-first-day-text);border-color:var(--c-status-first-day-border)}.schedule-legend__item--available{background-color:var(--c-status-available-bg);color:var(--c-status-available-text);border-color:var(--c-status-available-border)}.schedule-legend__item--unavailable{background-color:var(--c-status-unavailable-bg);color:var(--c-status-unavailable-text);border-color:var(--c-status-unavailable-border)}.schedule-legend__item--unsaved{background-color:var(--c-status-unsaved-bg);color:var(--c-status-unsaved-text);border-color:var(--c-status-unsaved-border)}.schedule-legend__item--conflict{background-color:var(--c-status-conflict-bg);color:var(--c-status-conflict-text);border-color:var(--c-status-conflict-border)}.schedule-legend__item--ai-draft{background-color:var(--c-status-ai-draft-bg);color:var(--c-status-ai-draft-text);border-color:var(--c-status-ai-draft-border)}.schedule-legend__item--seeking-replacement{background-color:var(--c-status-seeking-bg);color:var(--c-status-seeking-text);border-color:var(--c-status-seeking-border)}.schedule-legend__item--no-show{background-color:var(--c-status-no-show-bg);color:var(--c-status-no-show-text);border-color:var(--c-status-no-show-border)}.schedule-matrix-scroll{position:relative;width:100%;max-height:560px;overflow:auto;border:1px solid var(--c-border);border-radius:var(--b-radius-md);background-color:var(--c-surface)}@media(min-width:992px){.schedule-matrix-scroll{cursor:grab;-webkit-user-select:none;user-select:none}}.schedule-matrix-scroll.is-dragging{cursor:grabbing}.schedule-matrix{width:max-content;min-width:100%;display:flex;flex-direction:column}.schedule-matrix__sticky-head{position:sticky;top:0;z-index:20;display:flex;flex-direction:column}.schedule-matrix__header-row{display:flex;background-color:var(--c-surface-alt);border-bottom:1px solid var(--c-border)}.schedule-matrix__coverage-row{display:flex;background-color:var(--c-surface);border-bottom:2px solid var(--c-border)}.schedule-matrix__sticky-col{position:sticky;left:0;z-index:15;width:210px;min-width:210px;padding:8px 10px;border-right:1px solid var(--c-border);background-color:var(--c-surface);display:flex;flex-direction:column;justify-content:center;gap:4px}.schedule-matrix__sticky-col--header{z-index:25;background-color:var(--c-surface-alt);font-size:.8125rem;font-weight:700}.schedule-matrix__day-col{width:140px;min-width:140px;padding:6px 8px;border-right:1px solid var(--c-border);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center}.schedule-matrix__day-date{font-size:.75rem;font-weight:700}.schedule-matrix__coverage-pair{display:flex;flex-direction:column;gap:2px;font-size:.6875rem;font-weight:600}.schedule-matrix__coverage-badge{padding:2px 6px;border-radius:var(--b-radius-sm);background-color:var(--c-surface-alt);color:var(--c-text-primary)}.schedule-matrix__coverage-badge--under{background-color:var(--c-warning-soft);color:var(--c-warning)}.schedule-matrix__coverage-badge--ok{background-color:var(--c-success-soft);color:var(--c-success)}.schedule-matrix__virtual-body{position:relative;width:100%}.schedule-matrix__volunteer-row{position:absolute;left:0;right:0;display:flex;border-bottom:1px solid var(--c-border)}.schedule-matrix__volunteer-name{font-size:.8125rem;font-weight:700;color:var(--c-text-primary)}.schedule-matrix__volunteer-tags{display:flex;flex-wrap:wrap;gap:4px}.schedule-matrix__subrows-group{display:flex;flex-direction:column;width:140px;min-width:140px;border-right:1px solid var(--c-border)}.shift-cell{height:40px;padding:4px 6px;border:none;border-bottom:1px solid var(--c-border);background-color:transparent;display:flex;align-items:center;justify-content:center;gap:4px;font-size:.6875rem;font-weight:600;cursor:pointer;width:100%;transition:opacity .15s ease}.shift-cell:last-child{border-bottom:none}@media(hover:hover){.shift-cell:hover{opacity:.85}}@media(hover:none){.shift-cell:active{opacity:.85}}.shift-cell--assigned{background-color:var(--c-status-assigned-bg);color:var(--c-status-assigned-text)}.shift-cell--first-day{background-color:var(--c-status-first-day-bg);color:var(--c-status-first-day-text)}.shift-cell--available{background-color:var(--c-status-available-bg);color:var(--c-status-available-text)}.shift-cell--unavailable{background-color:var(--c-status-unavailable-bg);color:var(--c-status-unavailable-text)}.shift-cell--unsaved{background-color:var(--c-status-unsaved-bg);color:var(--c-status-unsaved-text)}.shift-cell--conflict{background-color:var(--c-status-conflict-bg);color:var(--c-status-conflict-text)}.shift-cell--ai-draft{background-color:var(--c-status-ai-draft-bg);color:var(--c-status-ai-draft-text)}.shift-cell--seeking-replacement{background-color:var(--c-status-seeking-bg);color:var(--c-status-seeking-text)}.shift-cell--no-show{background-color:var(--c-status-no-show-bg);color:var(--c-status-no-show-text)}.shift-cell__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tribes-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.tribe-roster{display:flex;flex-wrap:wrap;gap:6px;max-height:160px;overflow-y:auto}.tribe-stats{display:flex;flex-wrap:wrap;gap:8px;font-size:.8125rem}:root{--c-bg: var(--tg-theme-bg-color, #f4f6f9);--c-surface: var(--tg-theme-secondary-bg-color, #ffffff);--c-surface-alt: #f0f3f7;--c-surface-hover: #e8edf4;--c-border: #d8e0ea;--c-text-primary: var(--tg-theme-text-color, #111827);--c-text-secondary: var(--tg-theme-hint-color, #4b5563);--c-text-inverse: var(--tg-theme-button-text-color, #ffffff);--c-primary: var(--tg-theme-button-color, #1677ff);--c-primary-dark: #0f5bd4;--c-primary-soft: #e6f0ff;--c-focus: #2563eb;--c-danger: #dc2626;--c-danger-soft: #fee2e2;--c-warning: #d97706;--c-warning-soft: #fef3c7;--c-success: #15803d;--c-success-soft: #dcfce7;--c-backdrop: rgba(15, 23, 42, .55);--c-status-assigned-bg: #dbeafe;--c-status-assigned-text: #1e40af;--c-status-assigned-border: #93c5fd;--c-status-first-day-bg: #ede9fe;--c-status-first-day-text: #5b21b6;--c-status-first-day-border: #c4b5fd;--c-status-available-bg: #dcfce7;--c-status-available-text: #166534;--c-status-available-border: #86efac;--c-status-unavailable-bg: #f3f4f6;--c-status-unavailable-text: #6b7280;--c-status-unavailable-border: #d1d5db;--c-status-unsaved-bg: #fef9c3;--c-status-unsaved-text: #854d0e;--c-status-unsaved-border: #fde047;--c-status-conflict-bg: #fee2e2;--c-status-conflict-text: #991b1b;--c-status-conflict-border: #f87171;--c-status-ai-draft-bg: #e0f2fe;--c-status-ai-draft-text: #0369a1;--c-status-ai-draft-border: #7dd3fc;--c-status-seeking-bg: #ffedd5;--c-status-seeking-text: #9a3412;--c-status-seeking-border: #fdba74;--c-status-no-show-bg: #fecdd3;--c-status-no-show-text: #881337;--c-status-no-show-border: #fb7185;--b-radius-sm: 6px;--b-radius-md: 10px;--b-radius-lg: 14px;--b-radius-xl: 18px;--shadow-sm: 0 1px 3px rgba(15, 23, 42, .08);--shadow-md: 0 6px 20px rgba(15, 23, 42, .12)}[data-theme=dark]{--c-bg: var(--tg-theme-bg-color, #0f172a);--c-surface: var(--tg-theme-secondary-bg-color, #1e293b);--c-surface-alt: #273449;--c-surface-hover: #334155;--c-border: #334155;--c-text-primary: var(--tg-theme-text-color, #f1f5f9);--c-text-secondary: var(--tg-theme-hint-color, #94a3b8);--c-primary-soft: #1e3a5f;--c-danger-soft: #451a1a;--c-warning-soft: #422a0d;--c-success-soft: #143622}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;background-color:var(--c-bg);color:var(--c-text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit;color:inherit}a{color:var(--c-primary);text-decoration:none}:focus-visible{outline:2px solid var(--c-focus);outline-offset:2px}h1,h2,h3,h4,p{margin:0}
