.profile-avatar{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:18%;overflow:hidden;background:var(--color-brand-soft);color:var(--color-brand)}.profile-avatar img{width:100%;height:100%;object-fit:cover}.profile-photo-row{display:flex;align-items:center;gap:20px;padding:20px 0 28px}.profile-photo-actions{display:flex;flex-direction:column;align-items:flex-start;gap:12px;min-width:0}.profile-name-row{display:flex;align-items:center;gap:10px;max-width:100%}.profile-name-row strong{min-width:0;overflow-wrap:anywhere}.profile-name-separator{color:var(--color-muted)}.profile-photo-actions .profile-name-edit{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:32px;padding:6px;border:0;border-radius:50%;color:var(--color-brand);background:var(--color-brand-soft)}.profile-photo-actions small{color:var(--color-muted)}.profile-photo-actions .profile-photo-button{padding:5px 10px;min-height:32px;font:var(--font-control)}.avatar-dialog{box-sizing:border-box;width:min(400px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:hidden;border:0;border-radius:20px;padding:24px;color:var(--color-ink);background:var(--color-surface)}.avatar-dialog[open]{display:flex;flex-direction:column}.avatar-dialog-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:2px}.avatar-dialog::backdrop{background:rgb(var(--color-shadow-rgb) / 38%)}.avatar-dialog h2{margin:0 0 8px;font-size:var(--text-section);font-weight:var(--weight-semibold)}.avatar-dialog p{font-size:var(--text-help);line-height:var(--leading-body)}.avatar-crop{display:block;width:min(280px,100%);aspect-ratio:1;margin:20px auto;border-radius:18%;background:var(--color-surface-muted);touch-action:none;cursor:grab}.avatar-controls{border:0;padding:0;margin:0;display:grid;gap:10px}.avatar-controls label{display:flex;gap:12px;align-items:center;font-size:var(--text-help)}.avatar-controls input{flex:1;min-width:0;accent-color:var(--color-brand)}.avatar-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:12px;margin-top:20px}.avatar-dialog button,.profile-photo-actions button{border:1px solid var(--color-input-border);border-radius:8px;background:transparent;color:inherit;padding:8px 14px;cursor:pointer}.avatar-actions button:last-child{background:var(--color-brand);color:var(--color-on-brand);border-color:var(--color-brand)}.avatar-dialog button:hover,.profile-photo-actions button:hover{background:var(--color-surface-muted)}.avatar-actions button:last-child:hover{background:var(--color-brand-hover)}.avatar-actions button:last-child:active{background:var(--color-brand-pressed)}.avatar-dialog button:focus-visible,.profile-photo-actions button:focus-visible,.avatar-controls input:focus-visible{outline:2px solid var(--color-brand);outline-offset:2px}.avatar-dialog button:disabled,.avatar-dialog button:disabled:hover,.avatar-dialog button:disabled:active{color:var(--color-disabled);background:var(--color-disabled-bg);border-color:var(--color-border);cursor:wait}.avatar-error{color:var(--color-danger)}.region-progress{display:flex;flex-wrap:wrap;gap:10px;max-width:960px;margin:28px 0 24px;color:var(--color-muted);font-size:var(--text-help)}.region-progress>span{display:flex;align-items:center;gap:10px;min-width:0}.region-progress button,.region-secondary-actions button,.region-text-action{padding:4px 0;border:0;background:transparent;color:var(--color-brand);cursor:pointer;text-align:left}.region-progress [aria-current=step]{color:var(--color-ink);font-weight:var(--weight-semibold)}.region-current{max-width:960px;color:var(--color-muted);font-size:var(--text-help);overflow-wrap:anywhere}.region-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;max-width:960px}.region-options button{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:56px;padding:12px 16px;border:1px solid var(--color-input-border);border-radius:10px;background:var(--color-surface);color:var(--color-ink);cursor:pointer;text-align:left}.region-options button span{min-width:0;overflow-wrap:anywhere}.region-options button svg{flex:0 0 auto;width:18px;color:var(--color-muted)}.region-options button:hover{background:var(--color-brand-soft);border-color:var(--color-brand)}.region-options button[aria-pressed=true]{background:var(--color-brand-soft);color:var(--color-brand);border-color:var(--color-brand);box-shadow:inset 0 0 0 1px var(--color-brand)}.region-options button[aria-pressed=true] svg{color:var(--color-brand)}.region-options button:disabled,.region-options button:disabled:hover{color:var(--color-disabled);background:var(--color-disabled-bg);border-color:var(--color-border);box-shadow:none;cursor:not-allowed}.region-secondary-actions{display:flex;flex-wrap:wrap;gap:20px;max-width:960px;margin-top:26px;font-size:var(--text-help)}.region-secondary-actions button{color:var(--color-muted)}.region-progress button:hover,.region-secondary-actions button:hover,.region-text-action:hover{text-decoration:underline}.region-manual{display:flex;flex-wrap:wrap;align-items:flex-end;gap:16px;max-width:640px}.region-manual label{display:grid;gap:10px;flex:1 1 240px;min-width:0}.region-manual input{width:100%;min-height:48px;padding:10px 12px;border:1px solid var(--color-input-border);border-radius:8px;color:var(--color-ink);background:var(--color-surface)}.region-next{min-height:48px;padding:10px 20px;border:1px solid var(--color-brand);border-radius:8px;color:var(--color-on-brand);background:var(--color-brand);cursor:pointer}.region-next:hover{background:var(--color-brand-hover)}.region-next:disabled{color:var(--color-disabled);background:var(--color-disabled-bg);border-color:var(--color-border);cursor:not-allowed}.region-error{max-width:960px;margin-bottom:20px;padding:12px 16px;color:var(--color-danger);background:var(--color-danger-soft);border-radius:8px}.region-error p{margin:0}.region-error button{margin-top:8px;padding:8px 12px;color:var(--color-danger);background:var(--color-surface);border:1px solid var(--color-danger);border-radius:8px;cursor:pointer}.region-saving{color:var(--color-muted)}.region-search{display:grid;gap:6px;margin:0 0 14px;font:var(--font-help)}.region-search input{width:100%;min-height:42px;padding:8px 12px;border:1px solid var(--color-input-border);border-radius:8px;background:var(--color-surface);color:var(--color-ink);font:var(--font-body)}@media(max-width:1100px){.region-options{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:600px){.region-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.region-options button{padding:12px}}.region-dialog{width:min(1040px,calc(100vw - 40px));max-height:calc(100dvh - 40px);overflow:hidden}.region-dialog[open]{display:flex;flex-direction:column}.region-dialog-heading{flex:0 0 auto;max-height:35dvh;overflow-y:auto;padding:22px 24px 0}.region-dialog-heading header{margin-bottom:4px}.region-instruction{margin:0;color:var(--color-muted);font-size:var(--text-help)}.region-dialog .region-progress{margin:14px 0 18px;gap:8px}.region-dialog-body{min-height:min(120px,25dvh);overflow-y:auto;padding:3px 24px 8px}.region-dialog .region-current{margin:0 0 12px}.region-dialog .region-options{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;max-width:none}.region-dialog .region-options button{min-height:46px;padding:8px 10px;gap:5px;font-size:var(--text-help)}.region-dialog .region-options button svg{width:14px}.region-dialog-footer{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:10px;flex:0 0 auto;max-height:30dvh;overflow-y:auto;padding:14px 24px 18px}.region-dialog .region-secondary-actions{justify-content:flex-end;margin:0;gap:16px}.region-back{display:flex;align-items:center;gap:6px;min-height:36px;padding:6px 10px;border:0;border-radius:6px;color:var(--color-muted);background:transparent;cursor:pointer;font-size:var(--text-help)}.region-back:hover{color:var(--color-brand);background:var(--color-brand-soft)}.region-dialog .region-manual{padding:0;margin:6px 0}@media(max-width:800px){.region-dialog .region-options{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:480px){.region-dialog{width:calc(100vw - 24px);max-height:calc(100dvh - 24px)}.region-dialog-heading{padding:16px 16px 0}.region-dialog-body{padding-inline:16px}.region-dialog .region-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.region-dialog .region-options button{padding:8px 6px;min-height:44px}.region-dialog .region-options button svg{display:none}.region-dialog-footer{padding:12px 16px}.region-dialog .region-secondary-actions{gap:8px;font-size:var(--text-help)}}.region-dialog{border:1px solid var(--color-border);border-radius:20px;padding:0;color:var(--color-ink);background:var(--color-surface);box-shadow:0 24px 80px rgb(var(--color-shadow-rgb) / 18%)}.region-dialog::backdrop{background:rgb(var(--color-shadow-rgb) / 42%)}.region-dialog{padding-block:20px}.region-dialog .region-dialog-heading{padding-top:2px}.region-dialog .region-dialog-footer{padding-bottom:2px}.region-dialog-heading header{display:flex;align-items:center;justify-content:space-between;gap:20px}.region-dialog-heading h2{margin:0;font-size:var(--text-section);font-weight:var(--weight-semibold);line-height:var(--leading-title)}.region-dialog-heading header button{display:grid;place-items:center;border:0;background:transparent;padding:10px;border-radius:8px;cursor:pointer}.region-dialog-heading header button:hover{background:var(--color-surface-muted)}.region-dialog :focus-visible{outline:2px solid var(--color-brand);outline-offset:3px}.region-dialog .region-save-level{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 16px;border:1px solid var(--color-brand);border-radius:10px;background:var(--color-brand-soft);color:var(--color-brand);font:var(--font-control);text-decoration:none}.region-dialog .region-save-level:hover{background:var(--color-brand-soft-hover);text-decoration:none}.region-dialog .region-save-level svg{flex-shrink:0}.region-dialog .region-save-level:disabled{color:var(--color-disabled);border-color:var(--color-border);background:var(--color-disabled-bg);cursor:wait}@media(max-height:600px){.region-dialog-heading{max-height:38dvh;overflow-y:auto}.region-dialog-footer{max-height:30dvh;overflow-y:auto}}.content-page.genealogy-page{display:grid;grid-auto-rows:max-content;align-content:start;gap:1.5rem;max-width:100%;padding:clamp(1rem,3vw,2.5rem)}.genealogy-heading,.genealogy-actions,.genealogy-region{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.genealogy-heading{justify-content:space-between}.genealogy-heading h1,.genealogy-heading p{margin:0}.genealogy-title{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.genealogy-title h1{min-width:0;overflow-wrap:anywhere}.genealogy-page .genealogy-title>button{flex-shrink:0;min-width:2.75rem;padding:.55rem;border:0;background:transparent}.genealogy-page .genealogy-title>button:hover:not(:disabled){background:transparent;opacity:.75}.genealogy-page button,.genealogy-form button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:2.75rem;border:1px solid var(--color-border);border-radius:.75rem;padding:.55rem 1rem;background:var(--color-surface);color:var(--color-ink)}.genealogy-page button:hover:not(:disabled){border-color:var(--color-brand);background:var(--color-surface-muted)}.genealogy-page .genealogy-primary{background:var(--color-brand);color:var(--color-on-brand);border-color:var(--color-brand)}.genealogy-library{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr));gap:1rem}.genealogy-page .genealogy-library-card{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:.6rem;padding:1.25rem;border:1px solid var(--color-border);border-radius:1rem;background:var(--color-surface);text-align:left;overflow-wrap:anywhere}.genealogy-library-card h3,.genealogy-library-card p{margin:0}.genealogy-panel{min-width:0;padding:1.25rem;border:1px solid var(--color-border);border-radius:1rem;background:var(--color-surface);overflow-wrap:anywhere}.genealogy-panel h2{display:flex;align-items:center;gap:.5rem;margin-top:0}.genealogy-form{display:grid;min-width:0;gap:1rem;overflow-wrap:anywhere}.operation-dialog.genealogy-surname-dialog{height:min(700px,calc(100dvh - 32px))}.genealogy-surname-dialog>.operation-dialog-body{display:flex;flex:1;overflow:hidden}.genealogy-surname-dialog>.operation-dialog-body>form{display:flex;flex-direction:column;flex:1;min-height:0}.genealogy-surname-dialog .genealogy-metadata-field{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;flex-shrink:0}.genealogy-surname-dialog .genealogy-metadata-field>label{flex:1 1 5rem;min-width:0}.genealogy-surname-dialog .genealogy-metadata-field .dialog-actions{margin:0 0 0 auto;flex-shrink:0;gap:.5rem}.genealogy-surname-picker{display:flex;flex-direction:column;flex:1;min-height:0;gap:.75rem}.genealogy-surname-picker>h3{flex-shrink:0;margin:0}.genealogy-surname-choices{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:2px .75rem 2px 2px}.genealogy-surname-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,3.5rem),1fr));gap:.375rem}.genealogy-form .genealogy-surname-grid button{padding:.25rem;min-height:2rem}.genealogy-form .genealogy-surname-grid button[aria-pressed=true]{color:var(--color-brand);background:var(--color-brand-soft);border-color:var(--color-brand)}.genealogy-form .genealogy-surname-grid button:hover:not(:disabled){background:var(--color-surface-muted)}.genealogy-form .genealogy-surname-grid button[aria-pressed=true]:hover:not(:disabled){background:var(--color-brand-soft-hover)}.operation-dialog.genealogy-notes-dialog{width:min(960px,calc(100vw - 32px))}.operation-dialog.genealogy-notes-dialog>header .genealogy-note-add{flex-shrink:0;justify-content:center;min-height:calc(1.5em + .4rem);padding-inline:2px}.operation-dialog.genealogy-notes-dialog>header:has(.operation-dialog-icon-title)+.operation-dialog-body{padding-inline-end:calc(34px + .25rem)}.genealogy-notes-browser{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,min(25%,10rem));gap:1rem;height:min(68dvh,42rem);min-height:0}.genealogy-note-titles{grid-column:2;grid-row:1;display:flex;flex-direction:column;gap:.25rem;min-width:0;overflow:auto;padding:2px 2px 2px .5rem;border-inline-start:1px solid var(--color-border);overscroll-behavior:contain}.genealogy-notes-browser .genealogy-note-titles button{display:block;flex-shrink:0;min-width:0;min-height:1.5rem;width:100%;padding:0 .3rem;border-radius:.375rem;background:transparent;color:var(--color-muted);font:var(--font-control);text-align:start}.genealogy-note-titles button>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.genealogy-notes-browser .genealogy-note-titles button[aria-current=true]{background:var(--color-brand-soft);color:var(--color-brand);border-color:var(--color-brand)}.genealogy-note-titles button:hover:not(:disabled){background:var(--color-surface-muted)}.genealogy-note-titles button[aria-current=true]:hover{background:var(--color-brand-soft-hover)}.genealogy-note-detail{grid-column:1;grid-row:1;min-width:0;overflow:auto;padding:2px .75rem 2px 2px;overscroll-behavior:contain}.genealogy-note-detail>h3{margin-top:0}@media(max-width:40rem){.genealogy-notes-browser{gap:.5rem;height:68dvh}}.genealogy-record-line,.genealogy-edit-history li{margin-block:.25rem;overflow-wrap:anywhere}.genealogy-edit-history ol{margin:0;padding:0;list-style:none}.genealogy-record-stamp{display:flex;align-items:baseline;gap:.375rem}.genealogy-record-stamp>svg{flex-shrink:0;align-self:flex-start;margin-top:.2rem}.genealogy-record-stamp>span{min-width:0}.generation-poem-item-actions.dialog-actions{justify-content:center}.operation-dialog :is(.generation-poem-item-actions,.genealogy-metadata-field .genealogy-region) button{min-height:1.5rem;padding:0 .45rem;border-radius:.375rem;background:transparent;color:var(--color-muted);font:var(--font-control)}.operation-dialog :is(.generation-poem-item-actions,.genealogy-metadata-field .genealogy-region) button:hover:not(:disabled){background:var(--color-surface-muted);color:var(--color-ink)}.operation-dialog :is(.generation-poem-item-actions,.genealogy-metadata-field .genealogy-region) button:active:not(:disabled){background:var(--color-brand-soft);color:var(--color-brand-pressed)}.genealogy-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:1rem}.genealogy-form label{display:grid;gap:.4rem}.genealogy-form input:not([type=checkbox]),.genealogy-form select,.genealogy-form textarea{width:100%;min-width:0;min-height:2.75rem;padding:.5rem .7rem;border:1px solid var(--color-input-border);border-radius:.6rem;background:var(--color-surface);color:var(--color-ink)}.genealogy-form fieldset{min-width:0;border:1px solid var(--color-border);border-radius:.7rem;padding:.8rem}.genealogy-form .genealogy-check{display:flex;align-items:center;gap:.6rem}.genealogy-check input{width:1.1rem;height:1.1rem}.genealogy-error{color:var(--color-danger);background:var(--color-danger-soft);padding:.75rem;border-radius:.5rem;overflow-wrap:anywhere}.genealogy-region span{flex:1 1 12rem;overflow-wrap:anywhere}.genealogy-tree-scroll{width:100%;overflow:auto;border:1px solid var(--color-border);border-radius:1rem;background:var(--color-paper)}.genealogy-tree{position:relative;display:grid;gap:4rem;padding:2rem 1rem}.genealogy-generation{position:relative;display:flex;justify-content:center;align-items:stretch;gap:2rem}.genealogy-page .genealogy-person{width:13rem;flex-shrink:0;display:flex;flex-direction:column;position:relative;text-align:center;padding:1.25rem .6rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:1rem;overflow-wrap:anywhere;font:var(--font-body)}.genealogy-page .genealogy-person.gender-male{background:var(--color-male-soft);border-color:var(--color-male-border)}.genealogy-page .genealogy-person.gender-female{background:var(--color-female-soft);border-color:var(--color-female-border)}.genealogy-page .genealogy-person.is-center{outline:3px solid var(--color-brand);outline-offset:3px}.genealogy-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.genealogy-lines path{fill:none;stroke:var(--color-kinship);stroke-width:1.5}.genealogy-lines .is-spouse{stroke:var(--color-spouse);stroke-dasharray:4 3}.genealogy-ancestor-actions{margin-top:1rem}.genealogy-preface{white-space:pre-wrap;overflow-wrap:anywhere}.genealogy-directory{display:grid;gap:.6rem}.genealogy-directory button{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;text-align:left;padding:.8rem;border:1px solid var(--color-border);border-radius:.7rem;background:var(--color-surface);overflow-wrap:anywhere}.genealogy-stats{background:var(--color-surface-muted);padding:.8rem;border-radius:.7rem}.genealogy-notification{border-radius:1rem;padding:.1rem .5rem;background:var(--color-danger);color:var(--color-on-brand);font:var(--font-help)}.public-genealogy-entry{display:flex;justify-content:flex-end;padding:.75rem 1rem;background:var(--color-paper)}.public-genealogy-entry button{border:1px solid var(--color-border);border-radius:.7rem;min-height:2.75rem;padding:.5rem 1rem;background:var(--color-surface);color:var(--color-brand)}@media(max-width:640px){.content-page.genealogy-page{padding:1rem .65rem}.genealogy-panel{padding:1rem}}.genealogy-page .genealogy-settings-menu{margin-top:0}.genealogy-page .genealogy-settings-menu>button{display:flex;justify-content:space-between;min-height:3.25rem;gap:1rem;padding:.5rem .3125rem;border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;text-align:left}.genealogy-page .genealogy-settings-menu .profile-field-copy{flex:1;gap:.125rem}.genealogy-page .genealogy-library-card,.genealogy-page .genealogy-directory button{font:var(--font-body)}.genealogy-library-card>strong,.genealogy-person>strong{font:var(--font-title)}.genealogy-person.is-center>strong{font:var(--font-section)}.genealogy-page .genealogy-primary,.genealogy-form button[type=submit]{color:var(--color-on-brand);background:var(--color-brand);border-color:var(--color-brand)}.genealogy-page .genealogy-primary:hover:not(:disabled),.genealogy-form button[type=submit]:hover:not(:disabled){color:var(--color-on-brand);background:var(--color-brand-hover);border-color:var(--color-brand-hover)}.genealogy-page .genealogy-primary:active:not(:disabled),.genealogy-form button[type=submit]:active:not(:disabled){background:var(--color-brand-pressed);border-color:var(--color-brand-pressed)}.genealogy-form :is(input,select,textarea):focus{border-color:var(--color-brand)}.genealogy-form input[type=checkbox]{accent-color:var(--color-brand)}.genealogy-form :is(input,textarea)::placeholder{color:var(--color-muted)}.genealogy-page .age-button[aria-pressed=true]{color:var(--color-brand);background:var(--color-brand-soft);border-color:var(--color-brand)}.genealogy-page .age-button[aria-pressed=true]:hover:not(:disabled){color:var(--color-brand);background:var(--color-brand-soft-hover);border-color:var(--color-brand)}.genealogy-page .genealogy-person.is-center{border-color:var(--color-brand)}.genealogy-page button:disabled,.genealogy-form button:disabled{opacity:1;color:var(--color-disabled);background:var(--color-disabled-bg);border-color:var(--color-border);cursor:not-allowed}.genealogy-page .genealogy-details-list{margin-top:0}.genealogy-page .genealogy-details-list>button{display:flex;justify-content:space-between;min-height:5rem;gap:1rem;padding:.75rem .3125rem;border:0;border-bottom:1px solid var(--color-border);border-radius:0;background:transparent;text-align:left}.genealogy-details-list .profile-field-copy small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.genealogy-details-list .profile-field-copy .genealogy-registration-line{display:block;overflow:visible;-webkit-line-clamp:unset}.genealogy-form .genealogy-metadata-field{margin:0;padding:0;border:0}.generation-poem-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,5rem),1fr));gap:.5rem;margin-block:.75rem}.generation-poem-grid>div{display:grid;justify-items:center;gap:.25rem;padding:.5rem;border:1px solid var(--color-border);border-radius:.5rem;background:var(--color-surface-muted)}.generation-poem-grid strong{font:var(--font-title)}.generation-poem-grid>div[aria-current=true]{border-color:var(--color-brand);background:var(--color-brand-soft);color:var(--color-brand)}.genealogy-registration-places{display:grid;gap:.75rem;width:100%;min-width:0}.genealogy-registration-actions{flex-wrap:nowrap;gap:.5rem;align-items:stretch}.genealogy-registration-actions>button:first-child{margin-right:auto}.operation-dialog .genealogy-registration-actions button{min-width:0;padding-inline:.5rem;overflow-wrap:anywhere}.person-birth-year-dialog .operation-dialog-body,.person-birth-year-dialog .genealogy-form,.person-birth-year-dialog .genealogy-metadata-field{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.person-birth-year-dialog .profile-year-toolbar,.person-birth-year-dialog .genealogy-error{flex-shrink:0}.person-birth-year-dialog .profile-year-toolbar .dialog-actions{margin:0 0 0 auto;gap:.5rem;flex-wrap:wrap}.person-birth-year-dialog .profile-year-toolbar button{padding-inline:.5rem;white-space:nowrap}.person-birth-year-dialog .profile-year-scroll{flex:1;max-height:45dvh}.person-choice-options{display:flex;flex-wrap:wrap;gap:1rem}.genealogy-form .person-choice-options label{display:flex;align-items:center;gap:.5rem;cursor:pointer}.genealogy-form .person-choice-options input[type=radio]{width:1.1rem;height:1.1rem;min-height:0;padding:0;accent-color:var(--color-brand)}.profile-field-copy .person-life-summary{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-heading{flex-wrap:wrap}.account-heading h1{overflow-wrap:anywhere}.admin-page{max-width:1050px}.admin-toolbar{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.admin-member-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.operation-dialog .admin-grant{padding:0;border:0;border-top:1px solid var(--color-border);border-radius:0;margin-top:20px}.operation-dialog p{overflow-wrap:anywhere}.admin-section,.admin-grant{margin-top:32px}.admin-section h2,.admin-grant h2{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:var(--text-section);font-weight:var(--weight-semibold)}.admin-section p,.admin-grant p{color:var(--color-muted);font-size:var(--text-help);line-height:var(--leading-body);overflow-wrap:anywhere}.admin-section h2 small{font-size:var(--text-help);color:var(--color-muted);font-weight:var(--weight-regular)}.admin-search{display:flex;gap:10px;margin:22px 0}.admin-search input,.admin-reason textarea{min-width:0;border:1px solid var(--color-input-border);border-radius:8px;background:var(--color-surface);color:var(--color-ink);padding:10px 12px;font:var(--font-body)}.admin-search input{flex:1}.admin-user-list{padding:0;margin:0;list-style:none;border-top:1px solid var(--color-border)}.admin-user-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--color-border);padding:16px 0}.admin-user-list li>span:first-child{display:grid;gap:5px;min-width:0}.admin-section .admin-user-list li>span:first-child{padding-inline-start:0}.admin-section>p{padding-inline-start:28px}.admin-user-list small{font-size:var(--text-help);color:var(--color-muted);overflow-wrap:anywhere}.admin-user-list strong{font-size:var(--text-body);font-weight:var(--weight-semibold);overflow-wrap:anywhere}.admin-user-list button,.admin-user-status{flex-shrink:0;font-size:var(--text-help)}.admin-user-status{color:var(--color-muted)}.admin-pagination,.admin-form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;flex-wrap:wrap}.admin-grant{padding:24px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-paper)}.admin-grant fieldset{display:grid;gap:14px;padding:0;margin:20px 0;border:0}.admin-grant legend{margin-bottom:14px}.admin-grant fieldset label{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.admin-grant fieldset small{color:var(--color-muted);font-size:var(--text-help)}.admin-reason{display:grid;gap:10px}.admin-reason textarea{width:100%;min-height:80px;resize:vertical}.admin-message{padding:12px 16px;border-radius:8px;background:var(--color-brand-soft);color:var(--color-brand);line-height:var(--leading-body)}@media(max-width:600px){.admin-user-list li{flex-wrap:wrap}.admin-grant{padding:16px}.admin-search{flex-wrap:wrap}.admin-search input{flex-basis:180px}}.account-role-button,.admin-page button:not(.operation-dialog>header button){display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:9px 14px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-ink);font:var(--font-control);cursor:pointer;transition:background-color .15s,border-color .15s}.account-role-button{flex-shrink:0}.account-role-button:hover:not(:disabled),.admin-page button:not(.operation-dialog>header button):hover:not(:disabled){background:var(--color-brand-soft);border-color:var(--color-brand)}.account-role-button:active:not(:disabled),.admin-page button:not(.operation-dialog>header button):active:not(:disabled){background:var(--color-brand-soft-hover)}.account-role-button:focus-visible,.admin-page button:focus-visible{outline:2px solid var(--color-brand);outline-offset:3px}.account-role-button:disabled,.admin-page button:disabled{cursor:default;opacity:.55}.admin-user-name{display:inline-flex;align-items:center;gap:8px;vertical-align:middle;max-width:100%}.admin-user-avatar{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex:0 0 32px;border-radius:50%;overflow:hidden;background:var(--color-brand-soft);color:var(--color-muted)}.admin-user-avatar img{width:100%;height:100%;object-fit:cover}.admin-user-name strong{min-width:0;overflow-wrap:anywhere}.admin-user-list li>span:first-child>small{padding-inline-start:28px}.admin-user-list .admin-user-avatar{width:20px;height:20px;flex-basis:20px}.admin-user-list .admin-user-avatar svg{width:16px;height:16px}.admin-operations-heading{display:flex;align-items:baseline;gap:12px}.admin-operations-heading>svg{align-self:flex-start;margin-top:6px;color:var(--color-brand)}.admin-operations-heading>span{min-width:0}.admin-operations-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:28px;padding-bottom:16px}.admin-operations-toolbar>span{font:var(--font-help);color:var(--color-muted)}.admin-operations-toolbar>button{margin-left:auto}.admin-operations-table{font:var(--font-help);width:100%;table-layout:fixed;border-collapse:collapse;text-align:left}.admin-operations-table th{padding:12px 16px;font:var(--font-label);color:var(--color-muted);background:var(--color-surface-muted);border-block:1px solid var(--color-border)}.admin-operations-table th:first-child{width:24%}.admin-operations-table th:nth-child(2){width:25%}.admin-operations-table td{padding:20px 16px;vertical-align:top;border-bottom:1px solid var(--color-border);overflow-wrap:anywhere}.admin-operation-time{display:grid;gap:6px;font:var(--font-help)}.admin-operation-time strong{color:var(--color-ink)}.admin-operation-time time{color:var(--color-muted);font-variant-numeric:tabular-nums}.admin-operation-mobile-label{display:none}.admin-operation-event{margin:0;font:var(--font-help)}.admin-operations-table .admin-user-avatar{width:24px;height:24px;flex-basis:24px}.admin-operation-event .admin-user-name{margin-block:2px}.admin-operations-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding-top:20px}.admin-operations-footer .admin-pagination{align-items:center;margin:0 0 0 auto}@media(max-width:700px){.admin-operations-table,.admin-operations-table tbody{display:block}.admin-operations-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.admin-operations-table tr{display:grid;gap:12px;padding:20px 0;border-bottom:1px solid var(--color-border)}.admin-operations-table td{display:block;padding:0;border:0}.admin-operation-time{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px}.admin-operations-table .admin-operation-actor{display:flex;align-items:center;gap:12px}.admin-operation-mobile-label{display:inline;flex-shrink:0;font:var(--font-help);color:var(--color-muted)}.admin-operation-event-cell{padding-left:0}}.admin-event-role{display:inline-flex;align-items:center;gap:4px;vertical-align:baseline;color:var(--color-brand);font-weight:var(--weight-semibold);white-space:nowrap}.admin-event-role>svg{align-self:center}.admin-event-action{display:inline-block;vertical-align:middle;margin-right:6px;color:var(--color-brand);flex-shrink:0}.admin-event-action[data-action=grant]{color:var(--color-audit-grant)}.admin-event-action[data-action=revoke]{color:var(--color-audit-revoke)}.admin-workbench{max-width:none}.admin-workbench>*{max-width:1120px}.admin-workbench .account-heading>svg{color:var(--color-brand)}.admin-statistics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-block:32px}.admin-statistics>div{position:relative;padding:20px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface)}.admin-statistics dt{font:var(--font-help);color:var(--color-muted)}.admin-statistics dd{margin:8px 0 0;font:var(--font-page);font-variant-numeric:tabular-nums}.feedback-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}.feedback-toolbar h2,.feedback-toolbar h3{margin:0;min-width:0}.admin-workbench :is(input,select,textarea){min-width:0;min-height:40px;padding:10px 12px;border:1px solid var(--color-input-border);border-radius:8px;color:var(--color-ink);background:var(--color-surface);font:var(--font-body)}.admin-workbench textarea{width:100%;resize:vertical}.admin-page.admin-workbench button.feedback-primary{background:var(--color-brand);color:var(--color-on-brand);border-color:var(--color-brand)}.admin-page.admin-workbench button.feedback-primary:hover:not(:disabled){background:var(--color-brand-hover);border-color:var(--color-brand-hover)}.admin-page.admin-workbench button.feedback-primary:active:not(:disabled){background:var(--color-brand-pressed);border-color:var(--color-brand-pressed)}.admin-page.admin-workbench button:disabled,.admin-page.admin-workbench button:disabled:hover{opacity:1;color:var(--color-disabled);background:var(--color-disabled-bg);border-color:var(--color-border);cursor:not-allowed}.admin-workbench :is(input,textarea,select):disabled{color:var(--color-disabled);background:var(--color-disabled-bg)}.admin-recent-list li>span:nth-child(2){display:grid;gap:5px;margin-left:auto}.admin-recent-list li>span:first-child>small{padding-inline-start:0}.feedback-section{margin-top:40px}.feedback-management-list{margin-top:0}.feedback-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px 24px}.feedback-title-row h1,.feedback-title-row .feedback-filters{margin:0}.feedback-title-row .feedback-filters button{white-space:nowrap}.feedback-title-row .feedback-filters svg{flex-shrink:0}.feedback-refresh{display:flex;justify-content:flex-end}.feedback-workspace{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(0,1.7fr);border:1px solid var(--color-border);border-radius:8px;margin-top:20px;background:var(--color-surface)}.feedback-list-pane{min-width:0;padding:16px;border-right:1px solid var(--color-border)}.feedback-search{display:flex;flex-wrap:wrap;gap:8px}.feedback-search input{flex:1;width:100%}.feedback-filters{display:flex;flex-wrap:wrap;gap:6px;margin-block:16px}.admin-page.admin-workbench button[aria-pressed=true]{color:var(--color-brand);border-color:var(--color-brand);background:var(--color-brand-soft)}.feedback-list{list-style:none;padding:0;margin:12px 0}.feedback-list li+li{margin-top:8px}.admin-page.admin-workbench button.feedback-thread{display:grid;justify-content:stretch;gap:6px;width:100%;text-align:left;font:var(--font-body)}.feedback-thread-heading{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.feedback-thread small{color:var(--color-muted)}.feedback-thread :is(span,small,strong){overflow-wrap:anywhere}.feedback-badge{color:var(--color-brand);background:var(--color-brand-soft);padding:2px 6px;border-radius:8px;font:var(--font-help)}.feedback-pagination{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.feedback-management-list>.feedback-search{max-width:640px;margin-block:12px}.feedback-register{list-style:none;margin:0;padding:0}.feedback-register-heading,.admin-page.admin-workbench button.feedback-register-row{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,2.3fr) minmax(0,.8fr) minmax(0,1.1fr);gap:20px;align-items:start;padding:20px 16px}.feedback-register-heading{color:var(--color-muted);background:var(--color-surface-muted);font:var(--font-label);border-block:1px solid var(--color-border);padding-block:12px}.admin-page.admin-workbench button.feedback-register-row{width:100%;text-align:left;border:0;border-bottom:1px solid var(--color-border);border-radius:0;background:transparent;font:var(--font-body)}.admin-page.admin-workbench button.feedback-register-row:hover:not(:disabled){background:var(--color-brand-soft);border-color:var(--color-border)}.feedback-register-row>span{min-width:0}.feedback-register-user,.feedback-register-summary{display:grid;gap:6px}.feedback-register-user small,.feedback-register-row time{color:var(--color-muted);font:var(--font-help);overflow-wrap:anywhere}.feedback-register-summary>span{color:var(--color-muted);font:var(--font-help);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.feedback-list-empty{padding:32px 16px;text-align:center}.feedback-personal-list .feedback-register-heading,.admin-page.admin-workbench .feedback-personal-list button.feedback-register-row{grid-template-columns:minmax(0,2.3fr) minmax(0,.8fr) minmax(0,1.1fr)}.feedback-personal-list .feedback-register-summary>.feedback-badge{display:block;width:fit-content;color:var(--color-brand)}.operation-dialog:has(>.operation-dialog-body>.feedback-conversation){width:min(820px,calc(100vw - 32px))}.operation-dialog-body>.feedback-conversation{padding:0}.operation-dialog .feedback-messages{max-height:none;overflow:visible}.feedback-composer .dialog-actions{margin-top:0}.feedback-composer .dialog-actions button{margin-left:0}.feedback-conversation{min-width:0;padding:20px}.feedback-meta{display:flex;align-items:center;flex-wrap:wrap;gap:10px;border-bottom:1px solid var(--color-border);padding-block:16px}.feedback-meta small{overflow-wrap:anywhere;color:var(--color-muted)}.feedback-meta button{margin-left:auto}.feedback-messages{max-height:520px;overflow:auto;padding-block:20px}.feedback-message{max-width:90%;margin-bottom:20px;width:fit-content}.feedback-message small{color:var(--color-muted)}.feedback-message p{white-space:pre-wrap;overflow-wrap:anywhere;padding:12px 16px;border-radius:8px;background:var(--color-surface-muted);margin:6px 0 0}.feedback-message-admin{margin-left:auto}.feedback-message-admin p{background:var(--color-brand-soft)}.feedback-composer{display:grid;gap:12px;border-top:1px solid var(--color-border);padding-top:16px}.feedback-composer button{margin-left:auto}.feedback-empty{padding:32px}.feedback-create{display:grid;gap:12px;margin-top:32px;max-width:720px}.operation-dialog-body>.feedback-create{margin-top:0;max-width:none}.admin-user-detail{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px 20px}.admin-user-detail dd{margin:0;overflow-wrap:anywhere}@media(max-width:900px){.feedback-register-heading{display:none}.admin-page.admin-workbench button.feedback-register-row{grid-template-columns:minmax(0,1fr) auto;gap:12px;padding-inline:12px}.feedback-register-user{grid-column:1;grid-row:1}.feedback-register-row>span:nth-child(3){grid-column:2;grid-row:1}.feedback-register-summary{grid-column:1 / -1;grid-row:2}.feedback-register-row time{grid-column:1 / -1}.admin-page.admin-workbench .feedback-personal-list button.feedback-register-row{grid-template-columns:minmax(0,1fr) auto}.feedback-personal-list .feedback-register-summary{grid-column:1;grid-row:1}.feedback-personal-list .feedback-register-row>span:nth-child(2){grid-column:2;grid-row:1}.feedback-workspace{grid-template-columns:minmax(0,1fr)}.feedback-list-pane{border-right:0;border-bottom:1px solid var(--color-border)}.feedback-list{max-height:300px;overflow:auto}}@media(max-width:600px){.admin-statistics{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.admin-statistics>div{padding:14px}.admin-recent-list li>span:nth-child(2){margin-left:0}.feedback-conversation,.feedback-list-pane{padding:12px}.feedback-message{max-width:100%}}:root{--font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC", sans-serif;--font-mono: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;--text-page: 1.75rem;--text-subpage: var(--text-page);--text-section: 1.25rem;--text-dialog: var(--text-section);--text-title: 1.125rem;--text-body: 1rem;--text-help: .875rem;--text-control: var(--text-help);--text-label: var(--text-help);--text-caption: .75rem;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--weight-brand: 900;--leading-title: 1.4;--leading-body: 1.65;--leading-help: 1.6;--leading-control: 1.5;--leading-compact: 1.25;--leading-brand: .88;--leading-symbol: 1;--measure-prose: 40rem;--font-page: var(--weight-bold) var(--text-page)/var(--leading-title) var(--font-sans);--font-section: var(--weight-semibold) var(--text-section)/var(--leading-title) var(--font-sans);--font-title: var(--weight-semibold) var(--text-title)/var(--leading-title) var(--font-sans);--font-body: var(--weight-regular) var(--text-body)/var(--leading-body) var(--font-sans);--font-help: var(--weight-regular) var(--text-help)/var(--leading-help) var(--font-sans);--font-control: var(--weight-medium) var(--text-control)/var(--leading-control) var(--font-sans);--font-label: var(--weight-medium) var(--text-label)/var(--leading-control) var(--font-sans);--font-caption: var(--weight-regular) var(--text-caption)/var(--leading-help) var(--font-sans);--text-brand: 2rem;--text-brand-large: 3.75rem;--text-brand-medium: 2.5rem;--text-brand-mobile: 2.6875rem;--text-symbol: 2rem;--text-symbol-small: 1.5rem}html{font-size:100%}body{font:var(--font-body)}:where(h1){font:var(--font-page)}:where(h2){font:var(--font-section)}:where(h3){font:var(--font-title)}:where(h4,h5,h6){font:var(--font-label)}:where(strong,b){font-weight:var(--weight-semibold)}:where(small){font:var(--font-help)}:where(button){font:var(--font-control)}:where(input,textarea,select){font:var(--font-body)}:where(label,legend){font:var(--font-label)}:where(code,pre,kbd,samp){font-family:var(--font-mono)}:where(h1,h2,h3,h4,p,label,legend){overflow-wrap:anywhere}.text-page{font:var(--font-page)}.text-section{font:var(--font-section)}.text-title{font:var(--font-title)}.text-body{font:var(--font-body)}.text-help{font:var(--font-help)}.text-label{font:var(--font-label)}.text-control{font:var(--font-control)}.text-caption{font:var(--font-caption)}.text-muted{color:var(--color-muted)}.text-numeric{font-variant-numeric:tabular-nums}.prose{max-width:var(--measure-prose);font:var(--font-body)}.prose p{margin-block:0 1em}.prose :is(h2,h3){margin-block:1.5em .6em}:root{--color-brand: #B6422D;--color-audit-grant: #237A45;--color-audit-revoke: #C0362C;--color-brand-hover: #9C3524;--color-brand-pressed: #842C1E;--color-brand-soft: #F9ECE7;--color-brand-soft-hover: #F6E7DF;--color-on-brand: #FFFFFF;--color-paper: #FFFAF2;--color-surface: #FFFFFF;--color-surface-muted: #F7F2EC;--color-ink: #2F2925;--color-muted: #74665E;--color-border: #E5DBD1;--color-input-border: #97877A;--color-disabled: #8D8177;--color-disabled-bg: #EFEAE4;--color-success: var(--color-brand);--color-success-soft: var(--color-brand-soft);--color-warning: var(--color-brand);--color-warning-soft: var(--color-brand-soft);--color-danger: var(--color-brand);--color-danger-hover: var(--color-brand-hover);--color-danger-soft: var(--color-brand-soft);--color-male: #4E6871;--color-male-border: #617D86;--color-male-soft: #EDF2F3;--color-female: #815862;--color-female-border: #986B74;--color-female-soft: #F7EEEE;--color-kinship: #947664;--color-kinship-soft: #EFE3DA;--color-spouse: #72836C;--color-shadow-rgb: 47 41 37;--color-surface-rgb: 255 255 255;font-family:var(--font-sans);color:var(--color-ink);background:var(--color-surface);text-rendering:optimizeLegibility;--sidebar-width: 68px;--bottom-nav-height: calc(64px + env(safe-area-inset-bottom, 0px)) ;--nav-accent: var(--color-brand);--nav-accent-soft: var(--color-brand-soft);--border: var(--color-border);--muted: var(--color-muted)}*{box-sizing:border-box}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}html,body,#root{width:100%;height:100%;margin:0}button{font:var(--font-control)}input,textarea,select{font:var(--font-body)}button{color:inherit}.brand-lockup{--brand-mark-size: 96px;--brand-title-size: var(--text-brand-large);--brand-subtitle-size: var(--text-section);display:flex;align-items:center;flex:0 0 auto;gap:22px;white-space:nowrap}.brand-lockup__mark{display:block;flex:0 0 var(--brand-mark-size);width:var(--brand-mark-size);height:var(--brand-mark-size);border-radius:16%}.brand-lockup__copy{display:grid;justify-items:center;gap:7px}.brand-lockup__copy strong{color:var(--color-ink);font-size:var(--brand-title-size);font-weight:var(--weight-brand);line-height:var(--leading-brand);letter-spacing:-.08em}.brand-lockup__copy small{color:var(--color-muted);font-size:var(--brand-subtitle-size);font-weight:var(--weight-medium);line-height:var(--leading-symbol);letter-spacing:.15em;text-indent:.15em}.auth-check-screen{display:grid;place-items:center;align-content:center;gap:30px;width:100%;min-height:100dvh;padding:24px;background:var(--color-paper)}.auth-check-brand{--brand-mark-size: 64px;--brand-title-size: var(--text-brand-medium);--brand-subtitle-size: var(--text-help);gap:15px}.auth-check-status{display:flex;align-items:center;gap:10px;color:var(--color-muted);font-size:var(--text-help)}.auth-spinner{width:18px;height:18px;border:2px solid var(--color-border);border-top-color:var(--color-brand);border-radius:50%;animation:auth-spin .75s linear infinite}.auth-check-error{display:grid;justify-items:center;gap:13px;color:var(--color-muted);font-size:var(--text-help);text-align:center}.auth-check-error p{margin:0}.auth-check-error button{min-height:40px;padding:0 20px;border:1px solid var(--color-brand);border-radius:8px;color:var(--color-brand);background:transparent;cursor:pointer}@keyframes auth-spin{to{transform:rotate(360deg)}}.identity-selection-screen{position:relative;display:flex;align-items:center;flex-direction:column;justify-content:center;width:100%;min-height:100dvh;padding:36px 24px;color:var(--color-ink);background:radial-gradient(circle at 18% 24%,rgb(var(--color-shadow-rgb) / 8%) 0 86px,transparent 87px),radial-gradient(circle at 83% 77%,rgb(var(--color-shadow-rgb) / 9%) 0 108px,transparent 109px),linear-gradient(180deg,transparent 0 82%,rgb(var(--color-shadow-rgb) / 9%) 100%),var(--color-paper)}.identity-selection-brand{--brand-mark-size: 96px;--brand-title-size: var(--text-brand-large);--brand-subtitle-size: var(--text-section);flex-direction:column;gap:18px;margin-bottom:32px}.identity-selection-region{width:min(100%,660px)}.identity-selection-heading{margin-bottom:26px;text-align:center}.identity-selection-heading h1{margin:0;color:var(--color-ink);font-family:var(--font-sans);font-size:var(--text-page);line-height:var(--leading-title);letter-spacing:.08em}.identity-selection-heading h1:before,.identity-selection-heading h1:after{display:inline-block;margin:0 16px;color:var(--color-warning);font-size:var(--text-subpage);vertical-align:middle;content:"❧"}.identity-selection-heading h1:after{transform:scaleX(-1)}.identity-selection-heading p{margin:9px 0 0;color:var(--color-muted);font-size:var(--text-help)}.identity-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.identity-button{display:grid;justify-items:center;gap:10px;min-height:170px;padding:20px 10px 16px;border:1px solid transparent;border-radius:24px;background:rgb(var(--color-surface-rgb) / 90%);box-shadow:0 12px 28px rgb(var(--color-shadow-rgb) / 9%);cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.identity-button__mark{display:grid;place-items:center;width:78px;height:78px;border-radius:50%;font-size:var(--text-symbol);font-weight:var(--weight-bold)}.identity-button strong{color:var(--color-ink);font-family:var(--font-sans);font-size:var(--text-title)}.identity-button:after{display:block;width:72px;height:1px;margin-top:auto;background:var(--color-warning);content:""}.identity-button--male .identity-button__mark{color:var(--color-male);background:var(--color-male-soft)}.identity-button--female .identity-button__mark{color:var(--color-female);background:var(--color-female-soft)}.identity-button--male:hover{border-color:var(--color-male-border);box-shadow:0 12px 28px rgb(var(--color-shadow-rgb) / 14%);transform:translateY(-3px)}.identity-button--female:hover{border-color:var(--color-female-border);box-shadow:0 12px 28px rgb(var(--color-shadow-rgb) / 14%);transform:translateY(-3px)}.identity-button:focus-visible{outline:3px solid rgb(var(--color-shadow-rgb) / 18%);outline-offset:3px}.identity-button:active{transform:translateY(0)}.age-selection-screen{position:relative;display:flex;align-items:center;flex-direction:column;justify-content:space-between;width:100%;min-height:100dvh;padding:clamp(32px,6vh,68px) 24px 36px;color:var(--color-ink);overflow:hidden auto;background:radial-gradient(circle at 18% 22%,rgb(var(--color-shadow-rgb) / 8%) 0 74px,transparent 75px),radial-gradient(circle at 84% 76%,rgb(var(--color-shadow-rgb) / 9%) 0 102px,transparent 103px),var(--color-paper)}.age-selection-brand{--brand-mark-size: 76px;--brand-title-size: 48px;--brand-subtitle-size: 17px;flex-direction:column;gap:12px;margin-bottom:20px}.age-selection-brand--footer{margin-top:24px;margin-bottom:0}.age-selection-footer{display:grid;justify-items:center;gap:8px}.age-selection-footer p{margin:0;color:var(--color-muted);font-size:var(--text-help)}.age-selection-region{width:min(100%,900px)}.age-selection-heading{margin-bottom:14px;text-align:center}.onboarding-selection-summary{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:12px;color:var(--color-muted);font-size:var(--text-help)}.onboarding-selection-summary button{padding:2px 4px;border:0;color:var(--color-brand);background:transparent;cursor:pointer}.onboarding-selection-summary button:hover{text-decoration:underline}.age-selection-heading h1{margin:0;color:var(--color-ink);font-size:var(--text-page);line-height:var(--leading-title);letter-spacing:.02em}.age-selection-heading p{margin:6px 0 0;color:var(--color-muted);font-size:var(--text-help);line-height:var(--leading-title)}.age-group{--age-accent: var(--color-brand);--age-soft: var(--color-surface-muted);--age-border: var(--color-border)}.age-group-grid{display:grid;grid-template-columns:1fr;gap:10px}.age-group{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:center;min-width:0;padding:9px 14px;border:1px solid var(--age-border);border-radius:16px;background:var(--age-soft)}.age-group--likely{border-width:2px;padding:8px 13px}.age-group-label{display:flex;align-items:center;gap:10px}.age-group-icon{width:2rem;flex:0 0 2rem;font-size:var(--text-symbol-small);text-align:center}.age-group h2{display:flex;align-items:baseline;gap:3px;margin:0;color:var(--age-accent);font-size:var(--text-section);line-height:var(--leading-title);flex-wrap:wrap}.age-group h2 span{font-size:var(--text-help);opacity:.8}.age-group h2 em{margin-left:7px;padding:3px 7px;border-radius:999px;color:var(--age-accent);background:rgb(var(--color-surface-rgb) / 72%);font-size:var(--text-caption);font-style:normal;font-weight:var(--weight-medium)}.age-group-label p{margin:7px 0 0;color:var(--color-muted);font-size:var(--text-help)}.age-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(2.5rem,1fr));justify-items:center;gap:4px}.age-button{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:2px;min-width:2.5rem;min-height:2.5rem;padding-block:.25rem;padding:0;border:1px solid var(--age-border);border-radius:50%;color:var(--color-ink);background:rgb(var(--color-surface-rgb) / 90%);box-shadow:0 3px 10px rgb(var(--color-shadow-rgb) / 5%);cursor:pointer;transition:border-color .14s ease,color .14s ease,background-color .14s ease,transform .14s ease}.age-button strong{font-size:var(--text-body);line-height:var(--leading-compact)}.age-button span{color:var(--color-muted);font-size:var(--text-caption);line-height:var(--leading-compact)}.age-button--likely{border-color:var(--age-accent);color:var(--age-accent);background:var(--color-surface)}.age-button:hover{border-color:var(--age-accent);color:var(--color-surface);background:var(--age-accent);box-shadow:0 8px 18px color-mix(in srgb,var(--age-accent) 22%,transparent);transform:translateY(-3px) scale(1.05)}.age-button:hover span{color:var(--color-on-brand)}.age-button:focus-visible{outline:3px solid rgb(var(--color-shadow-rgb) / 18%);outline-offset:2px}.age-button:active{transform:translateY(0)}.login-screen{display:flex;align-items:center;flex-direction:column;width:100%;min-height:100dvh;padding:clamp(44px,8vh,92px) 24px 32px;overflow:auto;color:var(--color-ink);background:var(--color-paper)}.login-brand-lockup{flex-direction:column;gap:18px;margin-bottom:clamp(34px,5vh,52px)}.login-form-region{width:min(100%,592px)}.login-age-summary{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:16px;color:var(--color-muted);font-size:var(--text-help)}.login-age-summary button{padding:2px 4px;border:0;color:var(--color-brand);background:transparent;cursor:pointer}.login-age-summary button:hover{text-decoration:underline}.login-age-summary button:focus-visible{outline:2px solid rgb(var(--color-shadow-rgb) / 24%);outline-offset:2px}.login-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,6rem),1fr))}.login-tabs button{min-width:0;overflow-wrap:anywhere;white-space:normal}.login-tab{position:relative;min-height:48px;padding:0 8px;border:0;color:var(--color-muted);background:transparent;cursor:pointer;font-size:var(--text-body);white-space:nowrap}.login-tab:after{content:"";position:absolute;right:12px;bottom:0;left:12px;height:2px;transform:scaleX(0);background:var(--color-brand);transition:transform .16s ease}.login-tab:hover{color:var(--color-ink)}.login-tab.active{color:var(--color-brand);font-weight:var(--weight-bold)}.login-tab.active:after{transform:scaleX(1)}.login-tab:focus-visible,.auth-input:focus-visible,.send-code-button:focus-visible,.login-primary-button:focus-visible,.auth-check-error button:focus-visible{outline:3px solid rgb(var(--color-shadow-rgb) / 18%);outline-offset:3px}.login-form{display:grid;gap:20px;margin-top:38px}.auth-field{display:grid;gap:10px;color:var(--color-ink);font-size:var(--text-label);font-weight:var(--weight-medium)}.auth-input{width:100%;min-height:58px;padding:12px 18px;border:1px solid var(--color-input-border);border-radius:8px;outline:0;color:var(--color-ink);background:var(--color-surface);font-size:var(--text-body);transition:border-color .15s ease,box-shadow .15s ease}.auth-input:focus{border-color:var(--color-brand);box-shadow:0 0 0 3px rgb(var(--color-shadow-rgb) / 8%)}.verification-row{display:grid;grid-template-columns:minmax(0,1fr) 148px;gap:0}.verification-row .auth-input{border-radius:8px 0 0 8px}.send-code-button{min-height:58px;border:1px solid var(--color-input-border);border-left:0;border-radius:0 8px 8px 0;color:var(--color-brand);background:var(--color-surface);cursor:pointer;font-size:var(--text-control);font-weight:var(--weight-semibold)}.send-code-button:hover{background:var(--color-brand-soft)}.send-code-button:disabled,.login-primary-button:disabled{cursor:wait;opacity:.62}.wechat-login-panel{display:grid;place-items:center;gap:13px;min-height:214px;color:var(--color-muted);font-size:var(--text-help);text-align:center}.wechat-login-panel svg{color:var(--color-brand)}.login-primary-button{min-height:58px;border:0;border-radius:8px;color:var(--color-surface);background:var(--color-brand);cursor:pointer;font-size:var(--text-control);font-weight:var(--weight-bold);transition:background-color .15s ease}.login-primary-button:hover{background:var(--color-brand-hover)}.auth-message{margin:-6px 0;color:var(--color-danger);font-size:var(--text-help);line-height:var(--leading-control);text-align:center}.agreement-row{display:flex;align-items:flex-start;justify-content:center;gap:8px;color:var(--color-muted);font-size:var(--text-help);line-height:var(--leading-control);text-align:center}.agreement-checkbox{display:flex;align-items:center}.agreement-row input{flex:0 0 auto;width:15px;height:15px;margin:2px 0 0;accent-color:var(--color-brand)}.legal-link{padding:0;border:0;color:var(--color-brand);background:transparent;cursor:pointer}.legal-link:hover{text-decoration:underline}.legal-link:focus-visible{outline:2px solid rgb(var(--color-shadow-rgb) / 28%);outline-offset:2px}.new-account-notice{position:fixed;z-index:80;right:24px;bottom:24px;display:flex;align-items:center;gap:18px;max-width:min(460px,calc(100vw - 32px));padding:15px 17px;border:1px solid var(--color-border);border-radius:10px;color:var(--color-ink);background:var(--color-surface);box-shadow:0 14px 36px rgb(var(--color-shadow-rgb) / 14%);font-size:var(--text-help)}.new-account-notice button{flex:0 0 auto;padding:0;border:0;color:var(--color-brand);background:transparent;cursor:pointer;font-weight:var(--weight-bold)}@media(max-width:600px){.identity-selection-screen{justify-content:flex-start;padding:28px 20px 34px}.identity-selection-brand{--brand-mark-size: 68px;--brand-title-size: var(--text-brand-mobile);--brand-subtitle-size: var(--text-help);gap:15px;margin-bottom:26px}.identity-selection-heading{margin-bottom:20px}.identity-selection-heading h1{font-size:var(--text-page)}.identity-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.identity-button{min-height:142px}.identity-button__mark{width:62px;height:62px;font-size:var(--text-page)}.identity-button strong{font-size:var(--text-title)}.identity-selection-heading h1:before,.identity-selection-heading h1:after{margin:0 6px;font-size:var(--text-body)}.age-selection-screen{padding:28px 20px 32px}.age-selection-brand{--brand-mark-size: 68px;--brand-title-size: var(--text-brand-mobile);--brand-subtitle-size: var(--text-help);gap:15px;margin-bottom:26px}.age-selection-brand--footer{margin-top:20px;margin-bottom:0}.age-selection-heading{margin-bottom:20px}.age-selection-heading h1{font-size:var(--text-page)}.age-selection-heading p{font-size:var(--text-help)}.age-group-grid{grid-template-columns:1fr;gap:10px}.age-group{grid-template-columns:1fr;gap:8px;padding:10px 12px 11px}.age-group--likely{padding:9px 11px 10px}.age-group-label{justify-content:center}.age-grid{grid-template-columns:repeat(auto-fit,minmax(2.5rem,1fr));gap:8px 4px}.age-button{min-width:2.5rem;min-height:2.5rem}.age-button strong{font-size:var(--text-body)}.age-button span{font-size:var(--text-caption)}.login-screen{justify-content:center;padding:28px 24px}.login-brand-lockup{--brand-mark-size: 68px;--brand-title-size: var(--text-brand-mobile);--brand-subtitle-size: var(--text-help);gap:15px;margin-bottom:48px}.login-form-region{width:min(100%,342px)}.login-tab{padding-inline:3px;font-size:var(--text-body)}.login-tab:after{right:5px;left:5px}.login-form{gap:17px;margin-top:30px}.auth-field{font-size:var(--text-label)}.auth-input{height:54px}.verification-row{grid-template-columns:1fr;gap:10px}.verification-row .auth-input{border-radius:8px}.send-code-button{min-height:52px;border-left:1px solid var(--color-brand);border-color:var(--color-brand);border-radius:8px}.login-primary-button{min-height:54px}.agreement-row{font-size:var(--text-help)}}@media(max-height:760px)and (max-width:600px){.login-screen{justify-content:flex-start}.login-brand-lockup{margin-bottom:32px}}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);width:100%;height:100dvh;overflow:hidden;background:var(--color-surface)}.sidebar{position:relative;z-index:20;display:flex;flex-direction:column;min-width:0;height:100%;padding:min(28px,3dvh) 10px min(18px,2dvh);border-right:1px solid var(--border);background:var(--color-surface);box-shadow:8px 0 24px rgb(var(--color-shadow-rgb) / 3%)}.brand{display:flex;align-items:center;justify-content:center;gap:10px;height:48px;flex-shrink:0;padding:0 4px;border:0;background:transparent;cursor:pointer;text-align:left}.brand-logo{display:block;flex:0 0 auto;width:40px;height:40px;border-radius:9px}.brand-copy{display:grid;min-width:0;gap:1px;line-height:var(--leading-symbol);white-space:nowrap}.brand-copy strong{color:var(--color-ink);font-size:var(--text-brand);font-weight:var(--weight-brand);letter-spacing:-.08em}.brand-copy small{color:var(--color-muted);font-size:var(--text-help);font-weight:var(--weight-medium);letter-spacing:.02em}.primary-nav{display:grid;gap:7px;margin-top:min(30px,3dvh)}.nav-item,.user-entry{display:flex;align-items:center;gap:8px;width:100%;min-height:48px;padding:0 8px;border:0;border-radius:11px;background:transparent;cursor:pointer;font-size:var(--text-body);text-align:left;transition:background-color .15s ease,color .15s ease}.sidebar .brand,.nav-item,.user-entry{position:relative;justify-content:center;padding:0}.nav-item:hover,.user-entry:hover{background:var(--color-surface-muted)}.sidebar .brand.active{background:var(--nav-accent-soft);border-radius:11px}.nav-item.active,.user-entry.active{color:var(--nav-accent);background:var(--nav-accent-soft);font-weight:var(--weight-bold)}.sidebar-footer{display:grid;gap:8px;margin-top:auto}.user-entry{min-height:58px}.user-avatar{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border-radius:50%;color:var(--color-brand);background:var(--color-brand-soft)}.nav-tooltip{position:absolute;z-index:1;left:calc(100% + 12px);top:50%;transform:translateY(-50%);width:max-content;max-width:min(20rem,calc(100vw - 100px));padding:6px 10px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-ink);box-shadow:0 4px 16px rgb(var(--color-shadow-rgb) / 12%);font:var(--font-help);overflow-wrap:anywhere;visibility:hidden;pointer-events:none}.user-entry .nav-tooltip{top:auto;bottom:0;transform:none}.sidebar .brand:focus-visible .nav-tooltip,.nav-item:focus-visible .nav-tooltip,.user-entry:focus-visible .nav-tooltip{visibility:visible}@media(hover:hover){.sidebar .brand:hover .nav-tooltip,.nav-item:hover .nav-tooltip,.user-entry:hover .nav-tooltip{visibility:visible}}.brand:focus-visible,.nav-item:focus-visible,.user-entry:focus-visible{outline:2px solid var(--color-brand);outline-offset:2px}.operation-space{min-width:0;height:100%;overflow:hidden;background:var(--color-surface)}.app-shell-document{height:auto;min-height:100dvh;overflow:visible}.app-shell-document>.operation-space{height:auto;overflow:visible}.app-shell-document>.operation-space>.content-page{height:auto;min-height:100dvh;overflow:visible}@media(orientation:landscape){.app-shell-document>.sidebar{position:sticky;top:0;align-self:start;height:100dvh}}.family-workspace{position:relative;width:100%;height:100%;overflow:hidden;background:radial-gradient(circle at 5% 15%,rgb(var(--color-shadow-rgb) / 12%),transparent 18%),radial-gradient(circle at 92% 8%,rgb(var(--color-shadow-rgb) / 10%),transparent 21%),var(--color-paper)}.family-workspace:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.34;background-image:radial-gradient(ellipse at 20% 80%,transparent 69%,rgb(var(--color-shadow-rgb) / 18%) 70%,transparent 72%),radial-gradient(ellipse at 88% 71%,transparent 67%,rgb(var(--color-shadow-rgb) / 14%) 68%,transparent 70%)}.family-status{position:absolute;z-index:8;top:14px;left:50%;transform:translate(-50%);padding:8px 13px;border:1px solid rgb(var(--color-shadow-rgb) / 45%);border-radius:9px;background:rgb(var(--color-surface-rgb) / 88%);color:var(--color-muted);font-size:var(--text-caption);box-shadow:0 4px 16px rgb(var(--color-shadow-rgb) / 5%);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.family-scroll-area{position:absolute;inset:0;overflow:auto;scrollbar-color:var(--color-border) transparent}.family-stage-viewport{display:grid;place-items:center;width:100%;min-width:min-content;min-height:100%;padding:16px}.family-stage-wrap{position:relative;flex:0 0 auto}.family-stage{position:relative;width:1460px;height:930px;transform-origin:top left;transition:transform .16s ease}.family-connectors{position:absolute;inset:0;width:100%;height:100%;overflow:visible;fill:none;stroke:var(--color-input-border);stroke-width:1.5}.family-connectors .spouse-line{stroke:var(--color-spouse)}.family-connectors .sibling-line{stroke:var(--color-kinship)}.family-connectors .action-line{stroke:var(--color-input-border);stroke-dasharray:7 7}.family-connectors circle{fill:var(--color-input-border);stroke:none}.family-person{position:absolute;z-index:2;display:flex;align-items:center;gap:12px;width:190px;min-height:96px;padding:16px 18px;border:1.5px solid;border-radius:15px;background:var(--color-surface);box-shadow:0 14px 26px rgb(var(--color-shadow-rgb) / 8%);cursor:pointer;text-align:left;transition:transform .15s ease,box-shadow .15s ease}.family-person:hover{z-index:4;transform:translateY(-2px);box-shadow:0 18px 34px rgb(var(--color-shadow-rgb) / 13%)}.family-person:focus-visible{outline:3px solid rgb(var(--color-shadow-rgb) / 25%);outline-offset:3px}.gender-male{border-color:var(--color-male-border);background:var(--color-male-soft);color:var(--color-male)}.gender-female{border-color:var(--color-female-border);background:var(--color-female-soft);color:var(--color-female)}.person-symbol{flex:0 0 auto;width:29px;height:29px;border:8px solid currentColor;border-radius:50%;opacity:.68;transform:scale(.5);box-shadow:0 22px 0 6px currentColor}.person-text{display:grid;gap:3px;min-width:0}.person-text strong{font-size:var(--text-title);line-height:var(--leading-compact);color:var(--color-ink);white-space:nowrap}.person-text span{color:var(--color-muted);font-size:var(--text-help);font-weight:var(--weight-semibold);white-space:nowrap}.person-text .person-role{white-space:normal;overflow-wrap:anywhere}.focus-card{width:290px;min-height:142px;padding:26px 30px;border-width:2px;box-shadow:0 18px 34px rgb(var(--color-shadow-rgb) / 12%)}.focus-card .person-symbol{width:44px;height:44px}.focus-card .person-text strong{color:var(--color-male);font-size:var(--text-title)}.focus-card .person-text span{font-size:var(--text-body)}.small-card{width:176px;min-height:66px;padding:10px 13px;border-radius:11px;box-shadow:0 8px 18px rgb(var(--color-shadow-rgb) / 6%)}.small-card .person-symbol{width:24px;height:24px;border-width:7px}.small-card .person-text strong{font-size:var(--text-title)}.small-card .person-text span{font-size:var(--text-caption)}.self-badge{position:absolute;top:-21px;left:50%;transform:translate(-50%);padding:6px 12px;border:1px solid var(--color-male-border);border-radius:999px;background:var(--color-brand-soft);color:var(--color-brand);font-size:var(--text-help);font-weight:var(--weight-bold);white-space:nowrap}.relation-heading{position:absolute;z-index:3;display:flex;align-items:center;justify-content:center;gap:9px;height:43px;border:2px solid;border-radius:999px;background:rgb(var(--color-surface-rgb) / 90%);font-size:var(--text-section);font-weight:var(--weight-bold)}.sibling-heading{left:110px;top:416px;width:190px;color:var(--color-brand);border-color:var(--color-kinship-soft)}.spouse-heading{left:1018px;top:244px;width:150px;color:var(--color-female);border-color:var(--color-female-border)}.relation-mark{position:absolute;z-index:3;display:grid;place-items:center;width:72px;height:72px;border:7px solid rgb(var(--color-surface-rgb) / 75%);border-radius:50%;background:var(--color-brand-soft);color:var(--color-brand);font-size:var(--text-symbol);font-weight:var(--weight-bold);box-shadow:0 0 0 1px var(--color-kinship-soft)}.mark-tang{left:138px;top:465px}.mark-close{left:312px;top:465px}.relation-action{position:absolute;z-index:3;left:665px;width:150px;height:48px;border:2px dashed var(--color-input-border);border-radius:999px;background:rgb(var(--color-surface-rgb) / 86%);color:var(--color-muted);font-size:var(--text-body);font-weight:var(--weight-bold);cursor:pointer}.relation-action:hover{border-color:var(--color-muted);background:var(--color-surface)}.add-spouse{top:528px}.add-child{top:617px}.zoom-controls{position:absolute;z-index:10;right:18px;bottom:18px;display:flex;align-items:center;border:1px solid var(--color-border);border-radius:11px;background:rgb(var(--color-surface-rgb) / 90%);box-shadow:0 8px 24px rgb(var(--color-shadow-rgb) / 10%);overflow:hidden;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.zoom-controls button{display:grid;place-items:center;width:42px;height:42px;border:0;border-left:1px solid var(--color-border);background:transparent;cursor:pointer}.zoom-controls button:first-child{border-left:0}.zoom-controls button:hover{background:var(--color-surface-muted)}.zoom-controls span{min-width:52px;color:var(--color-muted);font-size:var(--text-caption);text-align:center}.content-page{width:100%;height:100%;overflow:auto;padding:clamp(40px,7vw,96px);background:var(--color-surface)}.page-intro{max-width:720px}.page-intro h1{margin:0;color:var(--color-ink);font-size:var(--text-page);font-weight:var(--weight-bold);line-height:var(--leading-title);letter-spacing:0;overflow-wrap:anywhere}.page-intro p{max-width:var(--measure-prose);margin:12px 0 0;color:var(--muted);font-size:var(--text-body);line-height:var(--leading-body)}.account-heading{display:flex;align-items:center;gap:12px}.account-heading h1{min-width:0}.account-avatar{display:grid;place-items:center;flex:0 0 48px;width:48px;height:48px;overflow:hidden;border-radius:50%;color:var(--color-brand);background:var(--color-brand-soft)}.continue-work{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;width:min(760px,100%);margin-top:56px;padding:23px;border:1px solid var(--color-border);border-radius:17px;background:var(--color-surface);cursor:pointer;text-align:left;transition:transform .15s ease,box-shadow .15s ease}.continue-work:hover{transform:translateY(-2px);box-shadow:0 16px 32px rgb(var(--color-shadow-rgb) / 9%)}.continue-icon{display:grid;place-items:center;width:58px;height:58px;border-radius:14px;color:var(--color-brand);background:var(--color-brand-soft)}.continue-work>span:nth-child(2){display:grid;gap:5px}.continue-work small{color:var(--color-muted);font-size:var(--text-caption)}.continue-work strong{color:var(--color-brand);font-size:var(--text-title)}.continue-work span span{color:var(--color-muted);font-size:var(--text-help)}.plain-section{width:min(760px,100%);margin-top:64px}.plain-section h2{margin:0 0 16px;font-size:var(--text-section)}.notice-row,.admin-warning{display:flex;align-items:center;gap:15px;padding:18px 0;border-top:1px solid var(--border);color:var(--color-brand)}.notice-row span,.admin-warning span{display:grid;flex:1;gap:3px}.notice-row strong,.admin-warning strong{color:var(--color-ink);font-size:var(--text-body)}.notice-row small,.admin-warning small{color:var(--muted);font-size:var(--text-help)}.notice-row button{border:0;color:var(--nav-accent);background:transparent;cursor:pointer}.settings-page{padding-top:clamp(56px,9vw,120px)}.settings-list{display:grid;width:min(760px,100%);margin-top:52px;border-top:1px solid var(--border)}.settings-list button{display:flex;align-items:center;justify-content:space-between;min-height:86px;padding:0 5px;border:0;border-bottom:1px solid var(--border);background:transparent;cursor:pointer;text-align:left}.settings-list button:hover{background:var(--color-surface-muted)}.settings-list button span{display:grid;gap:6px}.settings-list strong{font-size:var(--text-body)}.settings-list small{color:var(--muted);font-size:var(--text-help)}.settings-list button{gap:16px;padding-block:16px}.settings-list button>span{min-width:0;overflow-wrap:anywhere}.settings-list button>svg{flex-shrink:0}.language-options{display:grid;gap:12px}.language-options button{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:48px}.language-options button[aria-pressed=true]{border-color:var(--color-brand);background:var(--color-surface-muted)}.login-language-button{align-self:flex-end;margin-bottom:20px;padding:10px 16px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-paper);color:var(--color-ink);cursor:pointer}.admin-warning{width:min(760px,100%);margin-top:38px;padding:17px;border:1px solid var(--color-warning-soft);border-radius:12px;color:var(--color-warning);background:var(--color-warning-soft)}.quiet-empty{display:grid;place-items:center;width:min(760px,100%);height:260px;margin-top:52px;border:1px dashed var(--color-border);border-radius:16px;color:var(--color-muted);background:var(--color-surface)}.device-sessions{width:min(760px,100%);margin-top:40px;padding-bottom:32px}.devices-heading,.device-title{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.devices-heading h2{margin:0;font-size:var(--text-section)}.devices-help{color:var(--muted);font-size:var(--text-help);line-height:var(--leading-body)}.device-sessions button{padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--color-surface);cursor:pointer}.device-sessions button:disabled{opacity:.5;cursor:wait}.device-sessions button:focus-visible{outline:3px solid var(--color-brand);outline-offset:3px}.device-list{list-style:none;padding:0;margin:20px 0}.device-row{display:flex;align-items:flex-start;gap:16px;padding:24px 0;border-top:1px solid var(--border)}.device-row>svg{color:var(--color-brand);flex-shrink:0;margin-top:5px}.device-row>button{flex-shrink:0}.device-details{flex:1;min-width:0;overflow-wrap:anywhere}.device-title{justify-content:flex-start}.device-badge{border-radius:20px;padding:3px 9px;color:var(--color-brand);background:var(--color-brand-soft);font-size:var(--text-caption)}.device-details dl{margin:12px 0 0;color:var(--muted);font-size:var(--text-help);line-height:var(--leading-body)}.device-details dl div{display:flex;gap:12px;flex-wrap:wrap}.device-details dt{min-width:58px}.device-details dd{margin:0}.device-danger,.device-error{color:var(--color-danger)}.methods-back{display:flex;align-items:center;gap:8px;margin-bottom:24px;border:0;padding:0;background:transparent;color:var(--nav-accent);cursor:pointer}.methods-back[hidden]{display:none}.login-method-list{width:min(760px,100%);margin:40px 0 22px;border-top:1px solid var(--border)}.login-method-row{display:flex;align-items:center;gap:18px;padding:25px 0;border-bottom:1px solid var(--border)}.login-method-icon{display:grid;place-items:center;flex:0 0 48px;height:48px;border-radius:12px;background:var(--color-brand-soft);color:var(--color-brand)}.login-method-copy{flex:1;display:grid;gap:6px;min-width:0;overflow-wrap:anywhere}.login-method-copy strong{font-size:var(--text-body)}.login-method-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:8px}.login-methods-page .login-method-actions .login-method-unbind{color:var(--color-brand);border-color:var(--color-brand);background:var(--color-brand-soft)}.login-methods-page .login-method-actions .login-method-unbind:disabled{color:var(--color-disabled);border-color:var(--color-border);background:var(--color-disabled-bg)}.login-method-copy span,.login-method-copy small{color:var(--muted);font-size:var(--text-help);line-height:var(--leading-body)}.login-methods-page button:not(.methods-back){border:1px solid var(--border);border-radius:8px;padding:10px 15px;background:var(--color-surface);cursor:pointer;flex-shrink:0}.login-methods-page button:disabled{opacity:.5;cursor:default}.login-methods-page :focus-visible{outline:3px solid var(--color-brand);outline-offset:3px}.binding-form{max-width:620px;margin-top:36px;padding-bottom:36px}.binding-form h2{margin:0 0 20px;font-size:var(--text-section)}.binding-steps{display:flex;gap:24px;flex-wrap:wrap;padding:0;list-style:none;color:var(--muted);font-size:var(--text-help)}.binding-steps [aria-current=step]{color:var(--color-brand);font-weight:var(--weight-bold)}.binding-field{display:grid;gap:10px;margin-top:24px;font-size:var(--text-help)}.binding-field input,.binding-field select{width:100%;min-width:0;padding:13px 12px;border:1px solid var(--color-input-border);border-radius:8px;color:var(--color-ink);background:var(--color-surface);font:var(--font-body);font-size:var(--text-body)}.binding-code-row{display:flex;gap:10px}.dialog-actions,.binding-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:12px;margin-top:28px}.login-methods-page button.binding-primary{color:var(--color-on-brand);border-color:var(--color-brand);background:var(--color-brand)}.binding-warning{padding:14px 16px;border-radius:8px;background:var(--color-warning-soft);color:var(--color-warning);font-size:var(--text-help);line-height:var(--leading-body)}.binding-success{max-width:760px;padding:16px;border-radius:8px;background:var(--color-success-soft);color:var(--color-success);font-family:inherit;line-height:var(--leading-body)}@media(max-width:600px){.login-method-row{flex-wrap:wrap;gap:12px}.login-method-copy{flex-basis:calc(100% - 60px)}.login-method-row>button{margin-left:60px}.login-method-actions{width:100%}.binding-code-row{flex-wrap:wrap}}.device-confirm{margin-top:16px;padding:12px;background:var(--color-danger-soft);border-radius:10px;font-size:var(--text-help)}.device-confirm p{margin-top:0;line-height:var(--leading-body)}.device-confirm button+button{margin-left:8px}@media(max-width:600px){.device-row{flex-wrap:wrap;gap:12px}.device-details{flex-basis:calc(100% - 40px)}.device-row>button{margin-left:36px}}@media(orientation:portrait){.app-shell{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:100dvh;min-height:0;overflow:hidden;padding-bottom:var(--bottom-nav-height)}.sidebar{position:fixed;inset:auto 0 0;flex-direction:row;align-items:center;height:var(--bottom-nav-height);padding:8px max(8px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px));border-right:0;border-top:1px solid var(--border);box-shadow:0 -4px 20px rgb(var(--color-shadow-rgb) / 5%)}.sidebar .brand{flex:1;min-width:0;height:48px;padding:0}.primary-nav{display:flex;flex:3;gap:0;margin:0}.primary-nav .nav-item{flex:1;min-width:0}.sidebar-footer{display:flex;flex:1;margin:0}.user-entry{min-height:48px}.nav-tooltip{left:50%;top:auto;bottom:calc(100% + 12px);transform:translate(-50%);max-width:calc(100vw - 32px)}.sidebar .brand .nav-tooltip{left:0;transform:none}.user-entry .nav-tooltip{left:auto;right:0;bottom:calc(100% + 12px);transform:none}.app-shell>.operation-space{min-height:0;height:100%}.app-shell-document>.operation-space{overflow:auto;overscroll-behavior:contain}.app-shell-document>.operation-space>.content-page{min-height:100%;height:auto;overflow:visible}.new-account-notice{bottom:calc(var(--bottom-nav-height) + 16px)}}@media(max-width:900px){.family-stage-viewport{place-items:center}.content-page{padding:48px 32px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}.profile-list{max-width:760px}.profile-list>button{min-height:94px;gap:16px;padding-block:16px}.profile-list button .profile-field-icon{place-items:center;flex:0 0 42px;width:42px;height:42px;border-radius:12px;color:var(--color-brand);background:var(--color-brand-soft)}.profile-list .profile-field-copy{flex:1;min-width:0;overflow-wrap:anywhere}.profile-list>button>svg{flex-shrink:0}.profile-dialog{border:1px solid var(--color-border);border-radius:20px;padding:0;width:min(600px,calc(100vw - 32px));max-height:calc(100dvh - 40px);color:var(--color-ink);background:var(--color-surface);box-shadow:0 24px 80px rgb(var(--color-shadow-rgb) / 18%)}.profile-dialog::backdrop{background:rgb(var(--color-shadow-rgb) / 42%)}.profile-dialog{overflow:hidden;padding-block:20px}.profile-dialog[open]{display:flex;flex-direction:column}.profile-dialog>form{min-height:0;overflow:auto;overscroll-behavior:contain}.profile-dialog>form{padding-block:6px}.operation-dialog{width:min(600px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:hidden;padding:24px;border:1px solid var(--color-border);border-radius:20px;background:var(--color-paper);color:var(--color-ink);box-shadow:0 24px 80px rgb(var(--color-shadow-rgb) / 18%);line-height:var(--leading-body)}.operation-dialog[open]{display:flex;flex-direction:column}.operation-dialog-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:2px}.operation-dialog>header{flex-shrink:0}.operation-dialog::backdrop{background:rgb(var(--color-shadow-rgb) / 42%)}.operation-dialog>header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.operation-dialog h2{margin:0;font-size:var(--text-section)}.operation-dialog button{cursor:pointer;padding:10px 15px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);color:var(--color-ink);font:var(--font-control)}.operation-dialog>header button{display:grid;place-items:center;padding:8px;border:0;background:transparent}.operation-dialog>header h2{min-width:0;overflow-wrap:anywhere}.operation-dialog-icon-title{display:flex;align-items:center;gap:.5rem}.operation-dialog-icon-title>svg{flex-shrink:0;color:var(--color-brand)}.operation-dialog-icon-title>span{min-width:0}.operation-dialog>header:has(.operation-dialog-icon-title)+.operation-dialog-body{padding-inline-start:calc(22px + .5rem);padding-inline-end:.75rem}.operation-dialog>header:has(.operation-dialog-add){gap:.5rem}.operation-dialog-header-actions{display:flex;align-items:center;flex-shrink:0;gap:.25rem}.operation-dialog>header .operation-dialog-add{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .6rem;color:var(--color-brand);background:var(--color-brand-soft)}.operation-dialog>header .operation-dialog-add:hover:not(:disabled){background:var(--color-brand-soft-hover)}.operation-dialog>header .operation-dialog-add:active:not(:disabled){color:var(--color-brand-pressed)}.operation-dialog>header .operation-dialog-add:disabled{opacity:1;color:var(--color-disabled);background:var(--color-disabled-bg)}.operation-dialog button:disabled{cursor:default;opacity:.55}.operation-dialog .binding-form{margin:0;padding:0;border:0;width:100%}.operation-dialog button.binding-primary{color:var(--color-on-brand);background:var(--color-brand);border-color:var(--color-brand)}.operation-dialog button.binding-primary:hover{color:var(--color-on-brand);background:var(--color-brand-hover);border-color:var(--color-brand-hover)}.profile-dialog--wide{width:min(900px,calc(100vw - 32px))}.profile-dialog form{padding:26px}.profile-dialog header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.profile-dialog h2{margin:0;font-size:var(--text-section)}.profile-dialog header button{display:grid;place-items:center;border:0;background:transparent;padding:10px;border-radius:10px}.profile-fields{padding:0;margin:0;border:0;min-width:0}.profile-fields label{display:flex;flex-direction:column;gap:9px;font-size:var(--text-label)}.profile-fields input:not([type=checkbox]),.profile-fields select{width:100%;min-width:0;min-height:48px;border:1px solid var(--color-input-border);border-radius:10px;background:var(--color-surface);color:var(--color-ink);padding:10px 12px;font:var(--font-body)}.profile-birthday-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}.profile-name-fields{display:grid;gap:16px}.profile-fields .profile-checkbox{flex-direction:row;align-items:center;margin-top:20px;line-height:var(--leading-body)}.profile-checkbox input{width:20px;height:20px;flex:0 0 auto;accent-color:var(--color-brand)}.profile-hint{color:var(--color-muted);margin:0 0 20px;line-height:var(--leading-body)}.profile-calendar{display:flex;gap:12px;margin-bottom:24px}.profile-calendar button{flex:1;min-height:48px;border-radius:10px;border:1px solid var(--color-input-border);background:var(--color-surface)}.profile-dialog [aria-pressed=true]{outline:2px solid var(--color-brand);outline-offset:1px;background:var(--color-brand-soft)}.profile-preview{background:var(--color-surface-muted);border-radius:10px;padding:16px;margin-top:3rem;margin-bottom:0}.profile-birthday-label{margin:0}.profile-preview .lunar-birthday-dates{margin-top:12px}.lunar-birthday-dates{display:grid;gap:6px}.lunar-birthday-date{display:flex;flex-wrap:wrap;gap:4px 12px}.settings-list button .lunar-birthday-date{display:flex}.lunar-birthday-date>span:last-child{display:grid;gap:4px}.profile-year{max-width:240px;margin-bottom:20px}.profile-ages{display:grid;gap:8px}.profile-dialog--birth-year{height:min(760px,calc(100dvh - 40px))}.profile-dialog--birth-year>form{display:flex;flex-direction:column;overflow:hidden;flex:1}.profile-dialog--birth-year .profile-fields{display:flex;flex-direction:column;min-height:0;flex:1}.profile-dialog--birth-year header,.profile-dialog--birth-year .profile-hint,.profile-year-toolbar{flex-shrink:0}.profile-year-toolbar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:.75rem;margin-bottom:.75rem}.profile-year-toolbar .profile-year{flex:1;min-width:6rem;max-width:none;margin:0}.profile-dialog .profile-year-toolbar footer{position:static;flex-wrap:nowrap;margin:0 0 0 auto;padding:0;gap:.5rem}.profile-dialog .profile-year-toolbar footer button{min-width:0;min-height:48px;padding:.5rem .75rem}.profile-year-scroll{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:.25rem .75rem .25rem .25rem}.birth-year-choices{display:grid;gap:.75rem;min-width:0}.birth-year-choices h3{margin:.5rem 0;font:var(--font-body)}.birth-year-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,4.5rem),1fr));gap:.375rem}.birth-year-choices .birth-year-grid button{min-width:0;padding:.375rem .25rem;min-height:2.25rem;font:var(--font-control);border:1px solid var(--color-border);border-radius:.5rem;background:var(--color-surface);color:var(--color-ink)}.birth-year-choices .birth-year-grid button[aria-pressed=true]{background:var(--color-brand-soft);color:var(--color-brand);border-color:var(--color-brand)}.birth-year-choices .birth-year-grid button:hover{background:var(--color-surface-muted)}.birth-year-choices .birth-year-grid button[aria-pressed=true]:hover{background:var(--color-brand-soft-hover)}.profile-ages .age-group{padding:8px;gap:6px;container-type:inline-size}.profile-ages h3{margin:0;font-size:var(--text-body)}.profile-ages .age-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:4px 2px}.profile-ages .age-button{width:100%;min-width:0;min-height:36px;padding:4px 0;border-radius:8px}.profile-ages .age-button strong{font-size:var(--text-body)}@container (max-width: 15rem){.profile-ages .age-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.profile-dialog .identity-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.profile-dialog .identity-button{min-height:112px;padding:12px 4px}.profile-dialog footer{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:12px;margin-top:26px;position:sticky;bottom:0;background:var(--color-surface);padding:14px 0}.profile-dialog footer button{min-height:46px;min-width:96px;border:1px solid var(--color-input-border);border-radius:10px;background:var(--color-surface)}.profile-dialog footer .profile-save{background:var(--color-brand);color:var(--color-on-brand);border-color:var(--color-brand)}.profile-dialog button:disabled{opacity:.55;cursor:wait}.profile-dialog :focus-visible{outline:3px solid var(--color-brand);outline-offset:3px}@media(max-width:600px){.profile-dialog form{padding:20px}.profile-dialog--wide{width:calc(100vw - 16px);max-width:calc(100vw - 16px)}.profile-dialog--wide form{padding:12px}.profile-dialog .identity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.content-page,.profile-dialog{line-height:var(--leading-body)}.plain-section h2,.devices-heading h2,.binding-form h2,.profile-dialog h2{font-weight:var(--weight-semibold);line-height:var(--leading-title)}.settings-list strong,.login-method-copy strong,.continue-work strong,.notice-row strong,.admin-warning strong,.device-title strong{font-weight:var(--weight-semibold);line-height:var(--leading-control)}.profile-hint,.profile-preview,.binding-success{font-size:var(--text-help)}.profile-dialog .identity-button strong{font-size:var(--text-body)}.content-page,.operation-space,.app-shell,.auth-check-screen,.login-screen,.identity-selection-screen,.age-selection-screen,.family-workspace{background:var(--color-paper)}.family-workspace:before{opacity:.16}:where(button,input,select,textarea):focus-visible{outline:2px solid var(--color-brand);outline-offset:3px}.nav-item:hover,.user-entry:hover,.settings-list button:hover,.zoom-controls button:hover{background:var(--color-surface-muted)}.nav-item.active,.user-entry.active{color:var(--color-brand);background:var(--color-brand-soft)}.auth-input:focus,.binding-field input:focus,.binding-field select:focus,.profile-fields input:focus,.profile-fields select:focus{border-color:var(--color-brand)}.auth-input::placeholder{color:var(--color-muted)}.profile-preview{background:var(--color-surface-muted);color:var(--color-muted)}.profile-dialog [aria-pressed=true],.profile-dialog [aria-pressed=true]:hover,.age-button[aria-pressed=true],.age-button[aria-pressed=true]:hover{color:var(--color-brand);background:var(--color-brand-soft);border-color:var(--color-brand);outline:2px solid var(--color-brand);outline-offset:1px}.profile-dialog [aria-pressed=true] strong,.profile-dialog [aria-pressed=true] span{color:var(--color-brand)}.profile-dialog [aria-pressed=true]:hover{background:var(--color-brand-soft-hover)}.age-button:hover,.age-button:hover span{color:var(--color-brand)}.age-button:hover{background:var(--color-brand-soft);box-shadow:none;transform:none}.identity-button:hover{box-shadow:0 4px 12px rgb(var(--color-shadow-rgb) / 8%);transform:none}.profile-calendar button:not([aria-pressed=true]):hover{background:var(--color-surface-muted);border-color:var(--color-brand)}.profile-dialog [aria-pressed=true] .identity-button__mark{background:var(--color-brand-soft-hover)}.login-primary-button,.profile-dialog footer .profile-save,.login-methods-page button.binding-primary{background:var(--color-brand);border-color:var(--color-brand);color:var(--color-on-brand)}.login-primary-button:hover,.profile-dialog footer .profile-save:hover,.login-methods-page button.binding-primary:hover{background:var(--color-brand-hover);border-color:var(--color-brand-hover)}.login-primary-button:active,.profile-dialog footer .profile-save:active,.login-methods-page button.binding-primary:active{background:var(--color-brand-pressed)}.login-methods-page button:not(.binding-primary):not(.methods-back):hover,.device-sessions button:hover,.profile-dialog footer button:not(.profile-save):hover,.profile-dialog header button:hover{background:var(--color-surface-muted)}.device-sessions button.device-danger{color:var(--color-danger);border-color:var(--color-danger)}.device-sessions button.device-danger:hover{color:var(--color-danger-hover);background:var(--color-danger-soft)}.auth-message{color:var(--color-muted)}.auth-message--success{color:var(--color-success)}.auth-message--error{color:var(--color-danger)}.device-notice{color:var(--color-success);background:var(--color-success-soft);padding:12px;border-radius:8px}.auth-message strong,.device-error strong{font-weight:var(--weight-semibold)}button:disabled,button:disabled:hover,.profile-dialog button:disabled,.login-methods-page button:disabled,.device-sessions button:disabled,.login-primary-button:disabled,.profile-dialog footer .profile-save:disabled,.login-methods-page button.binding-primary:disabled{opacity:1;color:var(--color-disabled);background:var(--color-disabled-bg);border-color:var(--color-border);box-shadow:none;transform:none;cursor:not-allowed}input:disabled,select:disabled{color:var(--color-disabled);background:var(--color-disabled-bg)}.profile-dialog :focus-visible,.login-methods-page :focus-visible,.device-sessions button:focus-visible,.age-button:focus-visible,.identity-button:focus-visible,.family-person:focus-visible,.login-tab:focus-visible,.auth-input:focus-visible,.send-code-button:focus-visible,.login-primary-button:focus-visible,.auth-check-error button:focus-visible,.login-age-summary button:focus-visible{outline:2px solid var(--color-brand);outline-offset:3px}.profile-dialog [aria-pressed=true]:focus-visible{outline-width:3px;outline-offset:3px}:root body :is(input,select,textarea):focus-visible{outline:2px solid var(--color-brand);outline-offset:-3px;box-shadow:none}
