body{min-height:100vh}.navbar{background:var(--color-primary-500);color:var(--text-on-primary);padding:0 var(--space-6);height:56px;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:100}.navbar-brand{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-lg);font-weight:var(--weight-semibold);letter-spacing:-.01em;cursor:pointer;text-decoration:none;color:var(--text-on-primary)}.navbar-brand-logo{width:26px;height:26px;object-fit:contain;flex-shrink:0}.navbar-links{display:flex;align-items:center;gap:var(--space-1)}.navbar-link{color:var(--text-on-primary);opacity:.85;text-decoration:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);transition:background-color 120ms,opacity 120ms;cursor:pointer;border:none;background:0 0;font-family:inherit}.navbar-link.active,.navbar-link:hover{background:var(--navbar-overlay);opacity:1;text-decoration:none}.navbar-link-logout{opacity:.7;margin-left:var(--space-2)}.navbar-icon-btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-2);line-height:1}.navbar-hamburger{display:none}@media (max-width:768px){.navbar-hamburger{display:inline-flex;align-items:center;justify-content:center;background:0 0;border:none;color:var(--text-on-primary);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-md);transition:background-color 120ms}.navbar-hamburger:hover{background:var(--navbar-overlay)}.navbar-links{display:none;position:absolute;top:56px;left:0;right:0;background:var(--color-primary-500);flex-direction:column;padding:var(--space-2) var(--space-4) var(--space-4);box-shadow:var(--shadow-sm);z-index:99;gap:0}.navbar-links.is-open{display:flex}.navbar-link{width:100%;padding:var(--space-3)}.navbar-link-logout{margin-left:0;margin-top:var(--space-2)}.navbar-icon-btn{width:auto;justify-content:flex-start}}.navbar-dropdown{position:relative}.navbar-dropdown-toggle{display:flex;align-items:center;gap:var(--space-1)}.navbar-dropdown-toggle .nav-chevron{transition:transform 120ms;opacity:.7}.navbar-dropdown.is-open .nav-chevron{transform:rotate(180deg)}.navbar-dropdown-menu{display:none;position:absolute;top:calc(100% + 4px);left:0;min-width:180px;background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-1);z-index:200}.navbar-dropdown.is-open .navbar-dropdown-menu{display:block}.navbar-dropdown-item{display:block;width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary);text-decoration:none;cursor:pointer;border:none;background:0 0;font-family:inherit;text-align:left;white-space:nowrap}.navbar-dropdown-item:hover{background:var(--bg-canvas);color:var(--text-primary);text-decoration:none}@media (max-width:768px){.navbar-dropdown{width:100%}.navbar-dropdown-toggle{width:100%;justify-content:space-between}.navbar-dropdown-menu{position:static;display:none;border:none;box-shadow:none;background:0 0;padding:0 0 0 var(--space-4);min-width:unset}.navbar-dropdown.is-open .navbar-dropdown-menu{display:block}.navbar-dropdown-item{color:var(--text-on-primary);opacity:.8;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md)}.navbar-dropdown-item:hover{background:var(--navbar-overlay);opacity:1;color:var(--text-on-primary)}}.page{max-width:960px;margin:0 auto;padding:var(--space-8) var(--space-6)}.page-lg{max-width:1280px}.page-title{font-size:var(--text-2xl);font-weight:var(--weight-semibold);margin-bottom:var(--space-6);color:var(--text-primary)}@media (max-width:480px){.page-title{font-size:var(--text-xl);overflow-wrap:break-word;hyphens:auto}}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6);gap:var(--space-4);flex-wrap:wrap}.page-header .page-title{margin-bottom:0}.page-header-start{display:flex;align-items:center;gap:var(--space-3);min-width:0}.page-header-start .page-title{margin-bottom:0}.member-view-hero{display:flex;align-items:center;gap:var(--space-4)}.member-view-identity{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);min-width:0}.member-view-name{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--text-primary)}.detail-list{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:0 var(--space-5);font-size:var(--text-sm);margin:0;padding:var(--space-4) 0;border-top:1px solid var(--border-subtle);border-bottom:1px solid var(--border-subtle)}.detail-list dt{color:var(--text-tertiary);white-space:nowrap;padding:var(--space-2) 0;font-weight:var(--weight-medium)}.detail-list dd{margin:0;color:var(--text-primary);padding:var(--space-2) 0}.detail-list-icon-row{display:flex;align-items:center;gap:var(--space-2)}.detail-list-icon-row .account-icon{flex-shrink:0}.detail-list-mono{font-family:var(--font-mono, ui-monospace, monospace);font-size:var(--text-xs);letter-spacing:.03em}.section{margin-bottom:var(--space-8)}.section-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--border-subtle)}.card-title{font-size:var(--text-xl);font-weight:var(--weight-semibold);margin-bottom:var(--space-1)}.card-subtitle{color:var(--text-tertiary);font-size:var(--text-sm);margin-bottom:var(--space-6)}.card-centered{max-width:420px;margin:var(--space-12) auto}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}@media (max-width:768px){.form-row{grid-template-columns:1fr}.card-centered{margin:var(--space-4)}.page{padding:var(--space-4)}}.auth-footer{text-align:center;margin-top:var(--space-5);font-size:var(--text-sm);color:var(--text-tertiary)}.auth-footer a,.auth-footer button{color:var(--color-primary-500);text-decoration:none;cursor:pointer;background:0 0;border:none;font-size:inherit;font-family:inherit;padding:0}.auth-footer a:hover,.auth-footer button:hover{text-decoration:underline}.toolbar{display:flex;gap:var(--space-3);margin-bottom:var(--space-6);flex-wrap:wrap}.toolbar-search{flex:1;min-width:200px}.toolbar-select{width:auto;min-width:140px}.search-wrapper{position:relative;flex:1;min-width:200px}.search-icon{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:var(--text-tertiary);pointer-events:none}.search-wrapper .toolbar-search{padding-left:calc(var(--space-3) + 16px + var(--space-2))}@media (max-width:768px){.search-wrapper{flex-basis:100%;min-width:0}.toolbar-select{flex:1;min-width:120px}.table .status-dot{margin-right:0}}.member-name{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.status-dot{display:inline-block;width:8px;height:8px;border-radius:var(--radius-full);margin-right:var(--space-2);vertical-align:middle}.status-dot-active{background:var(--color-success-700)}.status-dot-inactive{background:var(--text-tertiary)}.account-icon{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem}.account-icon svg{width:100%;height:100%}.account-icon-active{color:var(--color-success-700)}.account-icon-inactive{color:var(--color-danger-500)}.account-icon-none{color:var(--text-disabled)}.table td.table-cell-center,.table th.table-cell-center{text-align:center}.table-row-inactive{opacity:.55}.table-email{color:var(--text-tertiary)}@media (max-width:768px){.table tbody td.table-cell-stack,.table tbody td.table-email{flex-direction:column;align-items:flex-start;gap:var(--space-1);overflow-wrap:anywhere}.table tbody td.table-cell-stack::before,.table tbody td.table-email::before{margin-right:0}}.table td.table-cell-actions,.table th.table-cell-actions{width:2.5rem;text-align:right;padding-right:var(--space-2)}@media (max-width:768px){.table td.table-cell-actions,.table th.table-cell-actions{display:none}}@media (max-width:768px){.table td.table-cell-center{text-align:left}}.panel-section{border:none;padding:0;margin:0}.panel-section+.panel-section{padding-top:var(--space-5);border-top:1px solid var(--border-subtle)}.panel-section-title{font-size:var(--text-xs);font-weight:var(--weight-medium);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--text-tertiary);margin-bottom:var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.form-label-toggle{display:flex;align-items:center;justify-content:space-between;cursor:pointer;font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary)}.form-static{padding:var(--space-2) 0;font-size:var(--text-sm);color:var(--text-secondary);display:flex;align-items:center;gap:var(--space-2)}.member-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1)}.member-list-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);background:var(--bg-surface);border-radius:var(--radius-md);border:1px solid var(--border-subtle);transition:border-color 120ms}.member-list-item:hover{border-color:var(--border-default)}.member-remove-btn{opacity:.4;transition:opacity 120ms,color 120ms,background-color 120ms}.member-list-item:hover .member-remove-btn{opacity:1}.member-remove-btn:hover{color:var(--color-danger-700);background:var(--color-danger-50)}.member-list-add{display:flex;gap:var(--space-2);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px dashed var(--border-subtle)}.member-list-add .input{flex:1}.event-hero{padding:var(--space-6);border-left:3px solid var(--color-primary-500)}.event-hero-label{font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--color-primary-500);margin-bottom:var(--space-2)}.event-hero-title{font-size:var(--text-2xl);font-weight:var(--weight-semibold);margin:0 0 var(--space-2);line-height:1.2}.event-hero-meta{display:flex;flex-wrap:wrap;gap:var(--space-3);color:var(--text-secondary);font-size:var(--text-sm);margin-bottom:var(--space-3)}.event-hero-desc{color:var(--text-secondary);font-size:var(--text-sm);margin:0 0 var(--space-4);line-height:1.6}.event-hero-footer{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--border-subtle)}.event-hero-footer>.event-capacity-bar{margin-top:0}.event-hero-footer-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4)}.event-hero-capacity-label{font-size:var(--text-sm);color:var(--text-tertiary)}.event-list{display:flex;flex-direction:column}.event-row{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-6);border-radius:var(--radius-md);cursor:pointer;transition:background 120ms}.event-row:hover{background:var(--bg-surface)}.event-row-date{width:36px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:2px}.event-row-day{font-size:var(--text-lg);font-weight:var(--weight-semibold);line-height:1}.event-row-month{font-size:var(--text-xs);color:var(--text-tertiary);text-transform:uppercase;line-height:1.4}.event-row-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.event-row-title{font-weight:var(--weight-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5}.event-row-meta{font-size:var(--text-xs);color:var(--text-tertiary);line-height:1.4}.event-row-actions{display:flex;gap:var(--space-2);align-items:center;align-self:center}.dashboard-event-link{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-3) 0;border-bottom:1px solid var(--border-subtle);text-decoration:none;color:inherit;cursor:pointer;border-radius:var(--radius-sm);margin:0 calc(-1 * var(--space-2));padding-left:var(--space-2);padding-right:var(--space-2);transition:background var(--transition)}.dashboard-event-link:last-child{border-bottom:none;margin-bottom:calc(-1 * var(--space-3))}.dashboard-event-link:hover{background:var(--bg-hover)}.event-detail-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding-bottom:var(--space-5);border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-5)}.event-detail-date-block{display:flex;flex-direction:column;gap:var(--space-1);line-height:1}.event-detail-date-row{display:flex;align-items:center;gap:var(--space-3)}.event-detail-date-day{font-size:var(--text-2xl);font-weight:var(--weight-semibold);color:var(--text-primary);line-height:1}.event-detail-date-rest{display:flex;flex-direction:column;gap:2px}.event-detail-date-month{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--color-primary-500);text-transform:uppercase;letter-spacing:var(--tracking-wide);line-height:1.2}.event-detail-date-year{font-size:var(--text-xs);color:var(--text-tertiary);line-height:1.2}.event-detail-header-right{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-2)}.event-detail-meta{display:flex;flex-direction:column;gap:var(--space-3)}.event-detail-meta-row{display:flex;align-items:center;gap:var(--space-2);color:var(--text-secondary);font-size:var(--text-sm)}.event-detail-meta-row svg{flex-shrink:0;width:15px;height:15px;color:var(--text-tertiary)}.event-detail-meta-row-location{align-items:flex-start}.event-detail-meta-row-location>svg{margin-top:3px}.event-date-long{display:inline-flex;gap:.2em;font-variant-numeric:tabular-nums;min-width:0}.event-date-weekday{display:inline-block;min-width:2.4em;flex-shrink:0}.event-date-numpart{display:inline-block}.event-capacity-bar{height:4px;background:var(--border-subtle);border-radius:2px;overflow:hidden;margin:var(--space-2) 0 0}.event-capacity-fill{height:100%;background:var(--color-primary-500);border-radius:2px;transition:width .4s ease}.event-capacity-fill-full{background:var(--color-danger-700)}.event-description{padding-top:var(--space-5);border-top:1px solid var(--border-subtle);color:var(--text-secondary);font-size:var(--text-sm);line-height:1.7;white-space:pre-wrap}.event-detail-footer{display:flex;gap:var(--space-3);align-items:baseline;padding-top:var(--space-5);border-top:1px solid var(--border-subtle);margin-top:var(--space-5)}.event-detail-past-note{display:flex;align-items:center;gap:var(--space-2);color:var(--text-tertiary);font-size:var(--text-sm)}.accounts-actions{display:flex;gap:var(--space-2);align-items:center;justify-content:flex-end}.accounts-locked{display:inline-flex;align-items:center;color:var(--text-tertiary);cursor:default;padding:var(--space-1)}.accounts-member-link{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--text-secondary);text-decoration:none;font-size:var(--text-sm);transition:color var(--transition)}.accounts-member-link:hover{color:var(--color-primary-500);text-decoration:underline}.accounts-row-saving{opacity:.55;pointer-events:none}.event-detail-grid{display:grid;grid-template-columns:1fr minmax(380px,500px);gap:var(--space-6);align-items:start}.event-detail-col-info{min-width:0;display:flex;flex-direction:column;gap:var(--space-4)}.event-detail-col-participants{min-width:0}@media (max-width:768px){.event-detail-grid{grid-template-columns:1fr}}.event-detail-date-weekday{font-size:var(--text-xs);color:var(--text-tertiary);font-weight:var(--weight-medium);text-transform:uppercase;letter-spacing:.05em;display:block;line-height:1.3}.event-detail-date-range{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--text-primary);line-height:1.3}.md-editor{border:1px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-canvas);overflow:hidden;transition:border-color 120ms,box-shadow 120ms}.md-editor:focus-within{border-color:var(--ring-focus);box-shadow:0 0 0 3px var(--ring-focus-bg)}.md-editor-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--border-subtle);background:var(--bg-subtle)}.md-editor-tabs{display:flex;gap:2px}.md-editor-tab{padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-tertiary);background:0 0;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:color 120ms,background 120ms}.md-editor-tab:hover{color:var(--text-primary);background:var(--bg-hover)}.md-editor-tab-active{color:var(--text-primary);background:var(--bg-canvas)}.md-editor-toolbar{display:flex;align-items:center;gap:2px;flex-shrink:0}.md-toolbar-btn{height:26px;min-width:26px;padding:0 var(--space-2);font-size:var(--text-xs);color:var(--text-secondary)}.md-toolbar-btn:hover{color:var(--text-primary)}.md-toolbar-sep{width:1px;height:14px;background:var(--border-subtle);margin:0 var(--space-1);flex-shrink:0}.md-editor-body{position:relative}.md-editor-textarea{border:none;border-radius:0;box-shadow:none;resize:vertical;min-height:140px;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--lh-normal);padding:var(--space-3)}.md-editor-textarea:focus,.md-editor-textarea:focus-visible{outline:0;border-color:transparent;box-shadow:none}.md-editor-preview{padding:var(--space-3);min-height:140px}.md-preview{font-size:var(--text-sm);line-height:var(--lh-normal);color:var(--text-secondary)}.md-preview .md-p,.md-preview p{margin:0 0 var(--space-3)}.md-preview .md-p:last-child,.md-preview p:last-child{margin-bottom:0}.md-preview .md-h2,.md-preview .md-h3,.md-preview .md-h4{color:var(--text-primary);font-weight:var(--weight-semibold);margin:var(--space-4) 0 var(--space-2)}.md-preview .md-h2:first-child,.md-preview .md-h3:first-child,.md-preview .md-h4:first-child{margin-top:0}.md-preview .md-h2{font-size:var(--text-base)}.md-preview .md-h3{font-size:var(--text-sm)}.md-preview .md-h4{font-size:var(--text-sm)}.md-preview .md-ol,.md-preview .md-ul{margin:0 0 var(--space-3);padding-left:var(--space-5)}.md-preview .md-ol li,.md-preview .md-ul li{margin-bottom:var(--space-1)}.md-preview .md-hr{border:none;border-top:1px solid var(--border-subtle);margin:var(--space-4) 0}.md-preview a{color:var(--color-primary-500);text-decoration:underline;text-underline-offset:2px}.md-preview a:hover{color:var(--color-primary-700)}.md-content{font-size:var(--text-sm);line-height:var(--lh-normal);color:var(--text-secondary)}.md-content p{margin:0 0 var(--space-3)}.md-content p:last-child{margin-bottom:0}.md-content h2,.md-content h3,.md-content h4{color:var(--text-primary);font-weight:var(--weight-semibold);margin:var(--space-4) 0 var(--space-2)}.md-content h2:first-child,.md-content h3:first-child,.md-content h4:first-child{margin-top:0}.md-content h2{font-size:var(--text-base)}.md-content h3{font-size:var(--text-sm)}.md-content h4{font-size:var(--text-sm)}.md-content ol,.md-content ul{margin:0 0 var(--space-3);padding-left:var(--space-5)}.md-content li{margin-bottom:var(--space-1)}.md-content hr{border:none;border-top:1px solid var(--border-subtle);margin:var(--space-4) 0}.md-content a{color:var(--color-primary-500);text-decoration:underline;text-underline-offset:2px}.md-content a:hover{color:var(--color-primary-700)}.loc-search-wrapper{position:relative;width:100%}.loc-search-dropdown{position:absolute;top:calc(100% + var(--space-1));left:0;right:0;background:var(--bg-canvas);border:1px solid var(--border-default);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:100;list-style:none;margin:0;padding:var(--space-1) 0;max-height:260px;overflow-y:auto}.loc-search-option{display:flex;flex-direction:column;gap:1px;padding:var(--space-2) var(--space-3);cursor:pointer;transition:background 80ms}.loc-search-option-active,.loc-search-option:hover{background:var(--bg-hover)}.loc-search-name{font-size:var(--text-sm);color:var(--text-primary);font-weight:var(--weight-medium);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loc-search-ctx{font-size:var(--text-xs);color:var(--text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.loc-search-empty{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--text-tertiary)}.family-picker{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-md);min-width:220px}.family-picker-title{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.family-picker-members{display:flex;flex-direction:column;gap:var(--space-1)}.family-picker-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);transition:background 80ms;min-height:32px}.family-picker-item:hover{background:var(--bg-hover)}.family-picker-item input[type=checkbox]{width:15px;height:15px;flex-shrink:0;accent-color:var(--color-primary-500);cursor:pointer}.family-picker-item.family-picker-item-done{opacity:.7;cursor:default}.family-picker-item.family-picker-item-done:hover{background:0 0}.family-picker-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.family-picker-tag{font-size:var(--text-xs);color:var(--text-tertiary);background:var(--bg-subtle);border-radius:var(--radius-sm);padding:1px var(--space-2);flex-shrink:0}.family-picker-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2);padding-top:var(--space-1);border-top:1px solid var(--border-subtle)}#participants-actions .family-picker,.event-row-actions .family-picker{min-width:200px}@media (max-width:768px){.event-row-actions .family-picker{min-width:160px}}.family-picker-matrix{min-width:min(640px,92vw)}#participants-actions .family-picker-matrix{min-width:min(640px,92vw)}.family-matrix-scroll{overflow-x:auto}.family-matrix{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.family-matrix td,.family-matrix th{padding:var(--space-1) var(--space-2);text-align:center;border-bottom:1px solid var(--border-subtle)}.family-matrix thead th{vertical-align:bottom;color:var(--text-secondary);font-weight:var(--weight-semibold)}.family-matrix-corner{text-align:left!important;font-size:var(--text-xs);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.family-matrix-sub{min-width:64px}.family-matrix-sub-title{display:block;font-weight:var(--weight-semibold)}.family-matrix-sub-date{display:block;font-size:var(--text-xs);color:var(--text-tertiary);font-weight:var(--weight-regular);white-space:nowrap}.family-matrix-name{text-align:left!important;white-space:nowrap;font-weight:var(--weight-regular)}.family-matrix-namelabel{display:flex;align-items:center;gap:var(--space-2);cursor:pointer}.family-matrix tbody tr:hover{background:var(--bg-hover)}.family-matrix input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-primary-500);cursor:pointer}.family-matrix input[type=checkbox]:disabled{cursor:not-allowed;opacity:.5}.row{display:flex;gap:var(--space-2)}.row-md{display:flex;gap:var(--space-3)}.row-center{display:flex;align-items:center;gap:var(--space-2)}.row-center-md{display:flex;align-items:center;gap:var(--space-3)}.row-between{display:flex;align-items:center;justify-content:space-between}.row-wrap{display:flex;flex-wrap:wrap;gap:var(--space-2)}.row-wrap-md{display:flex;flex-wrap:wrap;gap:var(--space-3)}.row-end{display:flex;gap:var(--space-2);justify-content:flex-end}.col{display:flex;flex-direction:column;gap:var(--space-3)}.col-sm{display:flex;flex-direction:column;gap:var(--space-2)}.col-xs{display:flex;flex-direction:column;gap:2px}.grow{flex:1;min-width:0}.no-shrink{flex-shrink:0}.text-meta{font-size:var(--text-xs);color:var(--text-tertiary)}.text-muted{color:var(--text-tertiary)}.alert-split{justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.dash-date-cell{flex-shrink:0;text-align:center;min-width:40px}.dash-date-day{font-size:var(--text-xl);font-weight:var(--weight-semibold);line-height:1}.dash-date-month{font-size:var(--text-xs);color:var(--text-tertiary);text-transform:uppercase;line-height:1.4}.dash-stack{display:flex;flex-direction:column;gap:var(--space-6)}.dash-user-card{display:flex;flex-direction:column;gap:var(--space-4)}.dash-user-hero{display:flex;align-items:center;gap:var(--space-3)}.dash-user-name{font-size:var(--text-lg);font-weight:var(--weight-semibold)}.dash-user-label{font-size:var(--text-xs);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:var(--tracking-wide);font-weight:var(--weight-medium)}.event-profile-card{display:flex;flex-direction:column;gap:var(--space-4);margin-bottom:var(--space-6)}.event-profile-hero{display:flex;align-items:center;gap:var(--space-3)}.event-profile-name{font-size:var(--text-lg);font-weight:var(--weight-semibold)}.event-map-wrap{display:none;margin-top:var(--space-3)}.event-map-wrap.is-open{display:block}.event-map-container{border-radius:var(--radius-md);overflow:hidden;background:var(--bg-subtle);min-height:240px;display:flex;align-items:center;justify-content:center}.event-map-osm-link{margin-top:var(--space-2);text-align:right}.event-map-osm-link a{font-size:var(--text-xs);color:var(--text-tertiary);text-decoration:none}.event-map-osm-link a:hover{text-decoration:underline}.event-map-attribution{position:absolute;bottom:4px;right:4px;font-size:var(--text-xs);background:rgba(255,255,255,.75);padding:1px var(--space-2);border-radius:var(--radius-sm);z-index:20;line-height:var(--lh-normal)}.event-map-attribution a{color:var(--text-primary);text-decoration:none}.participant-row{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.participant-meta{color:var(--text-tertiary);font-size:var(--text-xs)}.participant-info{display:flex;flex-direction:column;gap:2px;min-width:0}.participant-name{min-width:0;overflow:hidden}.participant-email{color:var(--text-tertiary);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.participant-notes{color:var(--text-secondary);font-size:var(--text-xs);font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.participant-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.sub-event-body{min-width:0;flex:1;padding-top:2px}.sub-event-title{font-weight:var(--weight-medium)}.sub-event-meta{color:var(--text-tertiary);font-size:var(--text-xs);display:flex;gap:var(--space-3);flex-wrap:wrap;margin-top:2px}.sub-event-actions{display:flex;gap:var(--space-2);flex-shrink:0;margin-top:2px}.sub-event-participants{margin-top:var(--space-1);display:flex;flex-direction:column;gap:2px}.token-input-row{display:flex;gap:var(--space-2)}.token-input-mono{flex:1;min-width:0;font-family:var(--font-mono);font-size:var(--text-xs)}.dash-birthday-list{display:flex;flex-direction:column;gap:var(--space-2)}.dash-birthday-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);font-size:var(--text-sm)}.dash-birthday-name{display:flex;align-items:center;gap:var(--space-2);min-width:0}.dash-birthday-age{color:var(--text-tertiary);font-size:var(--text-xs);flex-shrink:0}.dash-birthday-when{color:var(--text-secondary);flex-shrink:0;text-align:right}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.stat-card{padding:var(--space-5)}.stat-label{font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:var(--tracking-wide);margin-bottom:var(--space-2)}.stat-value{font-size:2rem;font-weight:var(--weight-semibold);color:var(--text-primary);line-height:1;margin-bottom:var(--space-1)}.stat-sub{font-size:var(--text-sm);color:var(--text-secondary)}.table-link{color:var(--text-primary);font-weight:var(--weight-medium);text-decoration:none}.table-link:hover{color:var(--color-primary-700);text-decoration:underline}.poll-list{display:flex;flex-direction:column}.poll-vote-list{display:flex;flex-direction:column}.poll-vote-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border-default);flex-wrap:wrap}.poll-vote-row:last-child{border-bottom:none}.poll-vote-label{font-weight:var(--weight-medium);font-size:var(--text-sm);min-width:0}.poll-vote-choice{justify-content:flex-start;cursor:pointer}.poll-seg{display:inline-flex;border:1px solid var(--border-default);border-radius:var(--radius-md);overflow:hidden;flex-shrink:0}.poll-seg-btn{appearance:none;border:none;background:var(--bg-surface);color:var(--text-secondary);font-family:inherit;font-size:var(--text-xs);font-weight:var(--weight-medium);padding:var(--space-2) var(--space-3);cursor:pointer;transition:background 120ms,color 120ms;white-space:nowrap}.poll-seg-btn+.poll-seg-btn{border-left:1px solid var(--border-default)}.poll-seg-btn:hover{background:var(--bg-canvas);color:var(--text-primary)}.poll-seg-yes[aria-pressed=true]{background:var(--color-success-50);color:var(--color-success-700)}.poll-seg-maybe[aria-pressed=true]{background:var(--color-warning-50);color:var(--color-warning-700)}.poll-seg-no[aria-pressed=true]{background:var(--color-danger-50);color:var(--color-danger-700)}.poll-matrix td:not(:first-child),.poll-matrix th:not(:first-child){text-align:center}.poll-matrix-option{display:block;font-weight:var(--weight-medium);margin-bottom:var(--space-1)}.poll-matrix-counts{display:inline-flex;gap:var(--space-1);flex-wrap:wrap;justify-content:center}.poll-col-winner{background:var(--color-primary-50)}.poll-comment{font-size:var(--text-xs);color:var(--text-tertiary);font-style:italic;margin-top:var(--space-1)}.poll-chart{display:flex;flex-direction:column;gap:var(--space-4)}.poll-chart-row{display:flex;flex-direction:column;gap:var(--space-1)}.poll-chart-row-winner{background:var(--color-primary-50);border-radius:var(--radius-sm);margin:0 calc(-1 * var(--space-2));padding:var(--space-2)}.poll-chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.poll-chart-label{font-size:var(--text-sm);font-weight:var(--weight-medium);min-width:0}.poll-chart-value{font-size:var(--text-xs);color:var(--text-tertiary);white-space:nowrap}.poll-chart-track{display:flex;height:8px;background:var(--bg-canvas);border:1px solid var(--border-subtle);border-radius:var(--radius-full);overflow:hidden}.poll-chart-seg-yes{background:var(--color-success-700)}.poll-chart-seg-maybe{background:var(--color-warning-700)}.poll-option-row{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}@media (max-width:640px){.poll-vote-row[data-option-id]{flex-direction:column;align-items:flex-start}.poll-matrix td:not(:first-child){text-align:left}}