@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid}}}@layer theme{:root,:host{--font-sans:system-ui, -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-paper:#f7f3eb;--color-pine:#244a40;--color-clay:#a56a46;--color-ink:#272d29;--color-ink-soft:#5a625d;--color-line:#ddd2bd;--font-title:"Songti SC", "STSong", "SimSun", "Noto Serif CJK SC", "Source Han Serif SC", serif;--radius-card:.75rem;--shadow-soft:0 1px 3px #272d2914, 0 4px 16px #272d290f}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.mx-auto{margin-inline:auto}.block{display:block}.flex{display:flex}.min-h-screen{min-height:100vh}.max-w-3xl{max-width:var(--container-3xl)}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.rounded-card{border-radius:var(--radius-card)}.border{border-style:var(--tw-border-style);border-width:1px}.border-line{border-color:var(--color-line)}.bg-pine{background-color:var(--color-pine)}.bg-white{background-color:var(--color-white)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-3{padding-block:calc(var(--spacing) * 3)}.font-title{font-family:var(--font-title)}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-ink-soft{color:var(--color-ink-soft)}.text-paper{color:var(--color-paper)}.text-pine{color:var(--color-pine)}.italic{font-style:italic}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}html{font-size:16px}body{background-color:var(--color-paper);color:var(--color-ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}h1,h2,h3,h4{font-family:var(--font-title);color:var(--color-pine)}:where(a,button,input,select,textarea):focus-visible{outline:2px solid var(--color-clay);outline-offset:2px}.prose-story{letter-spacing:.01em;max-width:42rem;line-height:1.9}.auth-wrap{background:radial-gradient(circle at 80% 15%, #e7eee6 0, transparent 33%), var(--color-paper);place-items:center;min-height:100vh;padding:2rem 1rem;display:grid}.auth-card{border:1px solid var(--color-line);width:min(100%,460px);box-shadow:var(--shadow-soft);background:#fffdf8;border-radius:16px;padding:2.5rem}.wordmark{font-family:var(--font-title);color:var(--color-pine);letter-spacing:.12em;font-size:1.5rem;font-weight:700;text-decoration:none}.wordmark span{font:500 .6rem var(--font-sans);letter-spacing:.24em;color:var(--color-clay)}.eyebrow{color:var(--color-clay);letter-spacing:.16em;margin:1.5rem 0 .5rem;font-size:.72rem}.auth-card h1,.page-intro h1{margin:0 0 .65rem;font-size:2.2rem;line-height:1.2}.muted{color:var(--color-ink-soft);line-height:1.65}.form-stack{gap:1rem;margin-top:1.8rem;display:grid}.form-stack label,.family-create label,.inline-form label{color:var(--color-ink);gap:.4rem;font-size:.9rem;display:grid}input,textarea,select{min-height:44px;color:var(--color-ink);background:#fff;border:1px solid #cfc8ba;border-radius:8px;width:100%;padding:.7rem .8rem;font-size:1rem}button{cursor:pointer;min-height:44px}.primary-button{background:var(--color-pine);color:#fff;border:1px solid var(--color-pine);border-radius:8px;padding:.7rem 1rem;font-weight:600}.primary-button:disabled{opacity:.6;cursor:wait}.secondary-button{border:1px solid var(--color-pine);color:var(--color-pine);background:0 0;border-radius:8px;padding:.7rem 1rem}.text-button{color:var(--color-ink-soft);background:0 0;border:0}.form-error{color:#a12f2a;background:#fff0ee;border-radius:6px;padding:.7rem}.hint{color:var(--color-ink-soft);margin:0;font-size:.82rem}.auth-foot{border-top:1px solid var(--color-line);color:var(--color-ink-soft);margin-top:1.5rem;padding-top:1rem;font-size:.9rem}.auth-foot a,.back-link,.card-link{color:var(--color-pine);text-decoration:none}.app-header{border-bottom:1px solid var(--color-line);background:#fffdf8;align-items:center;gap:1.5rem;height:76px;padding:0 max(1.5rem,50vw - 600px);display:flex}.header-note{color:var(--color-ink-soft);border-left:1px solid var(--color-line);padding-left:1.5rem;font-size:.82rem}.header-link{color:var(--color-pine);margin-left:auto;font-size:.9rem;text-decoration:none}.page-shell{max-width:1200px;margin:auto;padding:2.5rem 1.5rem 5rem}.page-intro{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.page-intro .eyebrow{margin-top:.5rem}.family-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,270px),1fr));gap:1rem;display:grid}.family-card,.content-panel{border:1px solid var(--color-line);box-shadow:var(--shadow-soft);background:#fffdf8;border-radius:12px;padding:1.6rem}.family-card{flex-direction:column;min-height:260px;display:flex}.family-mark,.person-avatar{color:var(--color-pine);width:46px;height:46px;font-family:var(--font-title);background:#e4ede5;border-radius:50%;flex:none;place-items:center;font-size:1.2rem;display:grid}.family-card h2,.content-panel h2{margin:0;font-size:1.35rem}.family-card .eyebrow{margin:1rem 0 .45rem}.card-link{border-top:1px solid var(--color-line);justify-content:space-between;margin-top:auto;padding-top:.9rem;display:flex}.family-create{border-style:dashed;gap:.65rem}.family-create .muted{margin:0;font-size:.9rem}.create-plus{color:var(--color-clay);font-size:2rem;line-height:1}.back-link{margin-bottom:1rem;font-size:.9rem;display:inline-block}.content-columns{grid-template-columns:1.2fr 1fr;gap:1rem;display:grid}.section-heading{border-bottom:1px solid var(--color-line);justify-content:space-between;align-items:end;padding-bottom:1rem;display:flex}.section-heading .eyebrow{margin:0 0 .45rem}.subtle-count{color:var(--color-ink-soft);font-size:.85rem}.empty-state{color:var(--color-ink-soft);padding:1.5rem 0;line-height:1.7}.person-list,.story-list{margin:0;padding:0;list-style:none}.person-list li,.story-list li{border-bottom:1px solid #eee9df;align-items:center;gap:.8rem;padding:1rem 0;display:flex}.person-list a,.story-list a{color:var(--color-ink);flex:1;text-decoration:none}.story-list small{color:var(--color-ink-soft)}.inline-form{align-items:end;gap:.7rem;margin-top:1.2rem;display:flex}.inline-form label{flex:1}.person-heading{align-items:center;gap:1.2rem;margin:1rem 0 2rem;display:flex}.person-heading h1{margin:0;font-size:2.2rem;line-height:1.2}.person-heading .eyebrow{margin:0 0 .4rem}.person-hero-avatar{width:76px;height:76px;color:var(--color-pine);font:2rem var(--font-title);background:#e4ede5;border-radius:50%;flex:none;place-items:center;display:grid}.detail-stack{align-content:start;gap:1rem;display:grid}.detail-list{margin:0;padding:0;list-style:none}.detail-list li{border-bottom:1px solid #eee9df;flex-wrap:wrap;justify-content:space-between;gap:.5rem;padding:.8rem 0;display:flex}.detail-list small{color:var(--color-ink-soft)}.birth-summary{margin:1rem 0 .4rem;line-height:1.8}.save-message{color:var(--color-pine);background:#e8f1e9;border-radius:6px;padding:.7rem}fieldset{border:1px solid var(--color-line);border-radius:8px;gap:.8rem;padding:.8rem;display:grid}legend{color:var(--color-pine);padding:0 .3rem}.date-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;display:grid}.narrow-shell{max-width:850px}.page-title{margin:.4rem 0 1rem;font-size:2rem;line-height:1.2}.field-label{margin:0 0 .4rem;font-size:.9rem}.editor-frame{border:1px solid var(--color-line);border-radius:8px;overflow:hidden}.editor-toolbar{background:var(--color-paper);flex-wrap:wrap;gap:.25rem;padding:.4rem;display:flex}.editor-toolbar button{color:var(--color-pine);background:0 0;border:0;border-radius:6px;padding:.35rem .75rem}.editor-toolbar button[aria-pressed=true]{background:#dce9df}.story-editor-body{outline-offset:-3px;min-height:180px;padding:1rem;line-height:1.9}.story-editor-body p{margin:.4rem 0}.story-editor-body h2,.story-editor-body h3{margin:1rem 0 .5rem}.story-editor-body blockquote{border-left:3px solid var(--color-clay);margin:1rem 0;padding-left:1rem}.story-editor-body ul,.story-editor-body ol{list-style:revert;padding-left:1.5rem}.check-row{align-items:center;gap:.5rem;min-height:36px;display:flex!important}.check-row input{width:18px;min-height:18px}.uploaded-list{color:var(--color-ink-soft);margin:0;padding:0;list-style:none}.story-photos{grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:.75rem;margin:1rem 0;display:grid}.story-photos img{object-fit:contain;border-radius:8px;width:100%;max-height:400px}.story-photos figcaption{color:var(--color-ink-soft);font-size:.85rem}.center-select{gap:.4rem;max-width:250px;margin-bottom:1rem;font-size:.9rem;display:grid}.search-form{align-items:end;gap:.5rem;max-width:450px;margin-bottom:1rem;display:flex}.search-form label{flex:1;gap:.4rem;font-size:.9rem;display:grid}.graph-stage{border:1px solid var(--color-line);background:#faf8f1;border-radius:12px;height:480px;overflow:hidden}.relationship-form{max-width:480px;margin-top:2rem}.relationship-form h2{margin:0}.page-actions{flex-wrap:wrap;gap:.5rem;display:flex}.page-actions a{text-decoration:none}.member-list{margin:1rem 0 0;padding:0;list-style:none}.member-list li{border-bottom:1px solid #eee9df;align-items:center;gap:1rem;padding:.8rem 0;display:flex}.member-list li>div{flex:1;display:grid}.member-list small{color:var(--color-ink-soft)}.member-list select{width:auto;max-width:140px}@media (max-width:700px){.content-columns{grid-template-columns:1fr}.header-note{display:none}.auth-card{padding:1.6rem}.inline-form{flex-wrap:wrap}.inline-form label{min-width:100%}.inline-form button{width:100%}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
