@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-cyrillic-ext-500-normal-Yta7XZ9C.woff2)format("woff2"),url(/assets/cormorant-garamond-cyrillic-ext-500-normal-lsPpqi9g.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-cyrillic-500-normal-CyAY5ZLS.woff2)format("woff2"),url(/assets/cormorant-garamond-cyrillic-500-normal-DkJXBcIH.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-vietnamese-500-normal-BZGLGj12.woff2)format("woff2"),url(/assets/cormorant-garamond-vietnamese-500-normal-DqXqCC0q.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-ext-500-normal-CH1kM7og.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-ext-500-normal-DYeaGGzO.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-500-normal-BsRWmXhO.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-500-normal-zIXX3Q-H.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cormorant-garamond-cyrillic-ext-600-normal-BMhMHfrj.woff2)format("woff2"),url(/assets/cormorant-garamond-cyrillic-ext-600-normal-CsIYWmWK.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cormorant-garamond-cyrillic-600-normal-C2atO-64.woff2)format("woff2"),url(/assets/cormorant-garamond-cyrillic-600-normal-FNmA3REe.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cormorant-garamond-vietnamese-600-normal-BoXdMtcr.woff2)format("woff2"),url(/assets/cormorant-garamond-vietnamese-600-normal-C4HEjEaf.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cormorant-garamond-latin-ext-600-normal-DaBc-lu7.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-ext-600-normal-Dk3-quAP.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/cormorant-garamond-latin-600-normal-Co1r35X9.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-600-normal-2CBVLo0M.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-cyrillic-ext-500-italic-ClXnudBg.woff2)format("woff2"),url(/assets/cormorant-garamond-cyrillic-ext-500-italic-DakTmaFY.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-cyrillic-500-italic-DVnfXoMy.woff2)format("woff2"),url(/assets/cormorant-garamond-cyrillic-500-italic-C9gO-8KC.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-vietnamese-500-italic-D3igDnAQ.woff2)format("woff2"),url(/assets/cormorant-garamond-vietnamese-500-italic-C-296ow0.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-ext-500-italic-CE7zdTnu.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-ext-500-italic-CalKM9tT.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:italic;font-display:swap;font-weight:500;src:url(/assets/cormorant-garamond-latin-500-italic-Y14P-dkT.woff2)format("woff2"),url(/assets/cormorant-garamond-latin-500-italic-DhNIfkTX.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-cyrillic-ext-400-normal-o8fRvAFQ.woff2)format("woff2"),url(/assets/eb-garamond-cyrillic-ext-400-normal-DG8lny6_.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-cyrillic-400-normal-DDLP67lu.woff2)format("woff2"),url(/assets/eb-garamond-cyrillic-400-normal-C0kVTdou.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-greek-ext-400-normal-K8pwR3tn.woff2)format("woff2"),url(/assets/eb-garamond-greek-ext-400-normal-BaZl8BIK.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-greek-400-normal-CVAbzS9p.woff2)format("woff2"),url(/assets/eb-garamond-greek-400-normal-d4JlP2QH.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-vietnamese-400-normal-CLvJdMEL.woff2)format("woff2"),url(/assets/eb-garamond-vietnamese-400-normal-ifvNSiWx.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-latin-ext-400-normal-o4A__6QZ.woff2)format("woff2"),url(/assets/eb-garamond-latin-ext-400-normal-B4EmgUmt.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-latin-400-normal-BCNrxLz_.woff2)format("woff2"),url(/assets/eb-garamond-latin-400-normal-maQnHeKB.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/eb-garamond-cyrillic-ext-500-normal-DcO3I2lp.woff2)format("woff2"),url(/assets/eb-garamond-cyrillic-ext-500-normal-I3TfTkSf.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/eb-garamond-cyrillic-500-normal-c5LjvaqX.woff2)format("woff2"),url(/assets/eb-garamond-cyrillic-500-normal-CLHyttEY.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/eb-garamond-greek-ext-500-normal-DkhmZW4r.woff2)format("woff2"),url(/assets/eb-garamond-greek-ext-500-normal-CMJ7zNBO.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/eb-garamond-greek-500-normal-BtA0fbXC.woff2)format("woff2"),url(/assets/eb-garamond-greek-500-normal-BjSCMh1N.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/eb-garamond-vietnamese-500-normal-BCT1_K6u.woff2)format("woff2"),url(/assets/eb-garamond-vietnamese-500-normal-B0TRhMco.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/eb-garamond-latin-ext-500-normal-BFuc0jzo.woff2)format("woff2"),url(/assets/eb-garamond-latin-ext-500-normal-obw7ZvB_.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:EB Garamond;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/eb-garamond-latin-500-normal-DehAIUv0.woff2)format("woff2"),url(/assets/eb-garamond-latin-500-normal-DZU8xF9o.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:EB Garamond;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-cyrillic-ext-400-italic-Bz1w3xqM.woff2)format("woff2"),url(/assets/eb-garamond-cyrillic-ext-400-italic-CYS3phfl.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:EB Garamond;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-cyrillic-400-italic-BGIwiowF.woff2)format("woff2"),url(/assets/eb-garamond-cyrillic-400-italic-BZInx2ys.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:EB Garamond;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-greek-ext-400-italic-CHZOQEtG.woff2)format("woff2"),url(/assets/eb-garamond-greek-ext-400-italic-BL1XYHtS.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:EB Garamond;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-greek-400-italic-Dqr5KC66.woff2)format("woff2"),url(/assets/eb-garamond-greek-400-italic-BamGE6QP.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:EB Garamond;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-vietnamese-400-italic-DQ8HKnks.woff2)format("woff2"),url(/assets/eb-garamond-vietnamese-400-italic-ORtyMVfw.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:EB Garamond;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-latin-ext-400-italic-V7s3nWfX.woff2)format("woff2"),url(/assets/eb-garamond-latin-ext-400-italic-DUSsnRSD.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:EB Garamond;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/eb-garamond-latin-400-italic-DSEbMgZu.woff2)format("woff2"),url(/assets/eb-garamond-latin-400-italic-CDFyLPXJ.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#f3ead8;--paper-deep:#e9dcc0;--card:#fcf8ef;--card-edge:#dccaa6;--ink:#2f261d;--ink-soft:#66574a;--ink-faint:#9b8b75;--line:#ad9672;--gold:#a8834a;--gold-soft:#d9c49c;--accent:#6b4a2f;--accent-dark:#523720;--birth:#6c7f4b;--book:#b2873a;--death:#7c3a32;--danger:#9b3328;--success:#4f6b3a;--radius:8px;--shadow-sm:0 1px 2px #46301614, 0 2px 6px #4630160f;--shadow:0 1px 2px #46301614, 0 8px 24px #4630161f;--shadow-lg:0 2px 4px #32200e1a, 0 18px 48px #32200e38;--font-display:"Cormorant Garamond", "Garamond", "Times New Roman", serif;--font-text:"EB Garamond", "Garamond", "Georgia", serif;--header-h:64px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-text);color:var(--ink);background-color:var(--paper);-webkit-font-smoothing:antialiased;background-image:radial-gradient(at 50% 40%,#fffcf48c 0%,#0000 60%),radial-gradient(#0000 55%,#78582e24 100%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.45 0 0 0 0 0.33 0 0 0 0 0.18 0 0 0 0.07 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-attachment:fixed;margin:0;font-size:16.5px;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-display);color:var(--ink);margin:0;font-weight:600;line-height:1.15}a{color:var(--accent)}img{max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.muted{color:var(--ink-faint)}.icon{flex-shrink:0}.app{flex-direction:column;height:100%;display:flex}.app-main{flex:1;min-height:0;position:relative}.app-header{height:var(--header-h);padding:0 max(20px, env(safe-area-inset-right)) 0 max(20px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--gold-soft);z-index:30;background:#f7f0e2e0;flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;display:flex;position:relative;box-shadow:0 3px 0 -2px #a8834a40}.brand{color:var(--ink);align-items:center;gap:12px;min-width:0;text-decoration:none;display:flex}.brand-mark{width:38px;height:38px}.brand-text{flex-direction:column;min-width:0;display:flex}.brand-title{font-family:var(--font-display);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;font-size:1.55rem;font-weight:600;line-height:1.05;overflow:hidden}.brand-subtitle{color:var(--ink-faint);letter-spacing:.03em;font-size:.86rem;font-style:italic}.header-right{align-items:center;gap:12px;display:flex}.edit-badge{font-family:var(--font-display);color:var(--accent);border:1px solid var(--gold-soft);background:#a8834a14;border-radius:999px;padding:2px 12px;font-size:.95rem;font-style:italic;font-weight:600}.user-menu{position:relative}.menu{background:var(--card);border:1px solid var(--card-edge);border-radius:var(--radius);min-width:220px;box-shadow:var(--shadow);flex-direction:column;padding:6px;display:flex;position:absolute;top:calc(100% + 8px);right:0}.menu a,.menu button{text-align:left;color:var(--ink);background:0 0;border:0;border-radius:6px;align-items:center;gap:10px;padding:8px 12px;text-decoration:none;display:flex}.menu a:hover,.menu button:hover{background:#a8834a1f}.page-message{height:100%;font-family:var(--font-display);color:var(--ink-soft);text-align:center;place-items:center;padding:24px;font-size:1.4rem;font-style:italic;display:grid}.btn{white-space:nowrap;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:8px;padding:9px 18px;font-size:1rem;font-weight:500;line-height:1.2;text-decoration:none;transition:background .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--accent);color:#fbf4e6;box-shadow:inset 0 1px #ffffff26,0 1px 2px #3c281440}.btn-primary:hover:not(:disabled){background:var(--accent-dark)}.btn-ghost{border-color:var(--card-edge);color:var(--ink);background:0 0}.btn-ghost:hover:not(:disabled){border-color:var(--gold);background:#a8834a1a}.btn-danger{background:var(--danger);color:#fff8f2}.btn-danger:hover:not(:disabled){background:#7f2820}.btn-danger-text{color:var(--danger)}.btn-small{padding:6px 12px;font-size:.95rem}.btn-block{width:100%}.icon-btn{width:38px;height:38px;color:var(--ink-soft);background:0 0;border:1px solid #0000;border-radius:50%;place-items:center;text-decoration:none;transition:background .15s,color .15s;display:inline-grid}.icon-btn:hover{color:var(--ink);background:#a8834a24}.icon-btn-small{width:30px;height:30px}.link-btn{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:var(--gold-soft);text-decoration-color:var(--gold-soft);text-underline-offset:3px;background:0 0;border:0;padding:0}.link-btn:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.field{border:0;flex-direction:column;gap:5px;min-width:0;margin:0;padding:0;display:flex}.field>label,.field>legend{font-family:var(--font-display);color:var(--ink-soft);padding:0;font-size:1.02rem;font-weight:600}.field-hint{color:var(--ink-faint);font-size:.86rem;font-style:italic}.field-warning{color:var(--danger)}input[aria-invalid=true]{border-color:var(--danger)!important}input:not([type=checkbox]):not([type=file]),select,textarea{background:#fffdf8;border:1px solid #d3c09b;border-radius:6px;width:100%;padding:8px 11px;font-size:1rem;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--gold);outline:none;box-shadow:0 0 0 3px #a8834a33}input:disabled,select:disabled{color:var(--ink-faint);background:#f3ece0}textarea{resize:vertical;line-height:1.5}input[type=file]{font-size:.95rem}input[type=search]::-webkit-search-cancel-button{cursor:pointer}.checkbox{cursor:pointer;align-items:center;gap:10px;display:flex}.checkbox input{width:18px;height:18px;accent-color:var(--accent)}.date-inputs{grid-template-columns:4.2em 1fr 5.4em;gap:6px;display:grid}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px 18px;display:grid}.form-grid-3{grid-template-columns:repeat(3,1fr)}.span-2{grid-column:span 2}.span-3{grid-column:1/-1}.stack{flex-direction:column;gap:16px;display:flex}.form-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:8px;display:flex}.form-error{color:var(--danger);margin:0}.tabs{border-bottom:1px solid var(--card-edge);gap:4px;margin-bottom:20px;display:flex}.tabs button{font-family:var(--font-display);color:var(--ink-faint);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;font-size:1.08rem;font-weight:600}.tabs button.is-active{color:var(--ink);border-bottom-color:var(--gold)}.relation-option{border-top:1px dashed var(--card-edge);margin-top:18px;padding-top:16px}.person-form-layout{grid-template-columns:150px minmax(0,1fr);align-items:start;gap:28px;display:grid}.person-form-layout>.photo-picker{position:sticky;top:0}.photo-picker{flex-direction:column;align-items:center;gap:12px;display:flex}.photo-picker-preview{background:var(--paper-deep);width:128px;height:156px;box-shadow:0 0 0 4px var(--card), 0 0 0 5px var(--gold-soft);border-radius:50%;place-items:center;display:grid;overflow:hidden}.photo-picker-preview img{object-fit:cover;width:100%;height:100%}.photo-picker label.btn{cursor:pointer}.photo-dialog{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.photo-dialog .form-actions{width:100%}.silhouette{fill:#cdbb98;width:62%;height:62%;margin-top:22%}.search-input{color:var(--ink-faint);background:#fffdf8;border:1px solid #d3c09b;border-radius:999px;align-items:center;gap:8px;padding:0 12px;display:flex}.search-input:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px #a8834a33}.search-input input,.search-input input:focus{box-shadow:none!important;background:0 0!important;border:0!important;padding:9px 0!important}.person-search-results,.search-results{max-height:340px;margin:10px 0 0;padding:0;list-style:none;overflow-y:auto}.person-search-results button,.search-results button{text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:12px;width:100%;padding:7px 10px;display:flex}.person-search-results button:hover,.person-search-results button.is-selected,.search-results button.is-active{background:#a8834a21}.person-search-results button.is-selected{box-shadow:inset 0 0 0 1px var(--gold)}.kin-photo{background:var(--paper-deep);width:38px;height:46px;box-shadow:0 0 0 1px var(--gold-soft);border-radius:50%;flex-shrink:0;place-items:center;display:grid;overflow:hidden}.kin-photo img{object-fit:cover;width:100%;height:100%}.kin-text{flex-direction:column;min-width:0;display:flex}.kin-name{font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;font-size:1.08rem;font-weight:600;line-height:1.2;overflow:hidden}.kin-meta{color:var(--ink-faint);font-size:.88rem;font-style:italic}.empty-line{margin:4px 0;font-size:.95rem;font-style:italic}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#2a1e116b;place-items:center;padding:16px;animation:.18s ease-out fade-in;display:grid;position:fixed;inset:0}.modal{background:var(--card);border:1px solid var(--card-edge);width:100%;max-height:calc(100dvh - 32px);box-shadow:var(--shadow-lg);border-radius:12px;flex-direction:column;animation:.22s cubic-bezier(.2,.7,.2,1) rise-in;display:flex}.modal-small{max-width:440px}.modal-medium{max-width:580px}.modal-large{max-width:820px}.modal-header{border-bottom:1px solid #a8834a40;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 22px 12px 26px;display:flex}.modal-header h2{font-size:1.7rem}.modal-subtitle{color:var(--ink-soft);margin:2px 0 0;font-style:italic}.modal-body{overscroll-behavior:contain;scrollbar-width:none;padding:20px 26px 24px;overflow-y:auto}.modal-body::-webkit-scrollbar{display:none}.confirm-message{margin:0 0 12px}.toasts{left:50%;bottom:max(24px, env(safe-area-inset-bottom));z-index:200;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(92vw,520px);display:flex;position:fixed;transform:translate(-50%)}.toast{color:#f8efdf;box-shadow:var(--shadow);text-align:center;background:#3a2e22;border-radius:8px;padding:10px 18px;animation:.25s ease-out rise-in}.toast-success{background:#3f5230}.toast-error{background:#7a2a22}.login-page{place-items:center;height:100%;padding:24px;display:grid}.login-card{background:var(--card);border:1px solid var(--card-edge);width:min(100%,400px);box-shadow:var(--shadow-lg);text-align:center;border-radius:12px;flex-direction:column;gap:16px;padding:36px 34px 30px;display:flex;position:relative}.login-card:before{content:"";pointer-events:none;border:1px solid #a8834a4d;border-radius:8px;position:absolute;inset:7px}.login-card .field{text-align:left}.login-card h1{font-size:2.3rem}.login-overline{color:var(--ink-faint);letter-spacing:.04em;margin:0;font-style:italic}.login-back{font-size:.95rem;text-decoration:none}.ornament{width:140px;height:18px;color:var(--gold);margin:0 auto;display:block}.page{height:100%;padding:32px 20px 64px;overflow-y:auto}.page-inner{flex-direction:column;gap:24px;max-width:860px;margin:0 auto;display:flex}.page-title{font-size:2.6rem}.back-link{color:var(--ink-soft);align-self:flex-start;align-items:center;gap:4px;text-decoration:none;display:inline-flex}.card-section{background:var(--card);border:1px solid var(--card-edge);box-shadow:var(--shadow-sm);border-radius:12px;flex-direction:column;gap:14px;padding:22px 24px;display:flex}.card-section h2{font-size:1.6rem}.card-section p{margin:0}.section-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.table-wrap{overflow-x:auto}.users-table{border-collapse:collapse;width:100%}.users-table th,.users-table td{text-align:left;white-space:nowrap;border-bottom:1px solid #a8834a33;padding:10px 8px}.users-table th{font-family:var(--font-display);color:var(--ink-soft);font-size:1.05rem;font-weight:600}.row-actions{text-align:right}.badge{color:var(--ink-faint);border:1px solid var(--card-edge);border-radius:999px;margin-left:8px;padding:0 8px;font-size:.8rem;font-style:italic}@keyframes fade-in{0%{opacity:0}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (width<=760px){:root{--header-h:56px}.brand-subtitle,.edit-badge,.user-name{display:none}.brand-title{font-size:1.3rem}.form-grid,.form-grid-3{grid-template-columns:1fr}.span-2,.span-3{grid-column:auto}.person-form-layout{grid-template-columns:minmax(0,1fr)}.person-form-layout>.photo-picker{position:static}.modal-body{padding:16px 18px 20px}.modal-header{padding:16px 14px 10px 18px}}.tree-page{--card-w:196px;--card-h:228px;--dots-h:30px;position:absolute;inset:0;overflow:hidden}.tree-view{position:absolute;inset:0}.panzoom{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}.panzoom.is-dragging{cursor:grabbing}.panzoom.is-dragging .person-node{pointer-events:none}.panzoom-stage{transform-origin:0 0;width:0;height:0;position:absolute;top:0;left:0}.panzoom-stage.is-animated{transition:transform .55s cubic-bezier(.22,.7,.2,1)}.tree-links{pointer-events:none;animation:.45s ease-out .25s both fade-in;position:absolute;top:0;left:0;overflow:visible}.link{fill:none;stroke:var(--line);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.link-union{stroke:var(--gold);stroke-width:2.4px}.link-coparent{stroke:var(--gold);stroke-width:1.6px;stroke-dasharray:5 5}.person-node{width:var(--card-w);height:calc(var(--card-h) + var(--dots-h));transition:transform .5s cubic-bezier(.22,.7,.2,1);animation:.45s cubic-bezier(.22,.7,.2,1) both node-in;position:absolute;top:0;left:0}@keyframes node-in{0%{opacity:0}}.card{width:100%;height:var(--card-h);border:1px solid var(--card-edge);background:linear-gradient(180deg, #ffffff8c, #fff0 40%), var(--card);box-shadow:var(--shadow-sm);text-align:center;color:var(--ink);border-radius:7px;flex-direction:column;align-items:center;padding:16px 12px 12px;transition:box-shadow .2s,border-color .2s,transform .2s;display:flex;position:relative}.card-frame{pointer-events:none;border:1px solid #a8834a52;border-radius:4px;position:absolute;inset:5px}.card:hover{box-shadow:var(--shadow);border-color:var(--gold-soft);transform:translateY(-2px)}.role-focus .card{border-color:var(--gold);box-shadow:0 0 0 3px #a8834a38, var(--shadow)}.role-focus .card-frame{border-color:#a8834a99}.is-selected .card{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent), var(--shadow)}.portrait{background:var(--paper-deep);width:84px;height:102px;box-shadow:0 0 0 3px var(--card), 0 0 0 4px var(--gold-soft), inset 0 0 12px #5a3c1e26;border-radius:50%;flex-shrink:0;place-items:center;display:grid;overflow:hidden}.portrait img{object-fit:cover;-webkit-user-drag:none;width:100%;height:100%}.is-deceased .portrait img,.panel-deceased .panel-portrait img{filter:sepia(.3)saturate(.85)}.card-name{flex-direction:column;width:100%;margin-top:12px;line-height:1.12;display:flex}.first-name{font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;font-size:1.2rem;font-weight:600;overflow:hidden}.last-name{font-family:var(--font-display);font-variant:small-caps;letter-spacing:.08em;color:var(--accent);white-space:nowrap;text-overflow:ellipsis;font-size:1.04rem;font-weight:600;overflow:hidden}.birth-name{color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:.8rem;font-style:italic;line-height:1.2;overflow:hidden}.card-dates{color:var(--ink-soft);letter-spacing:.01em;text-wrap:balance;flex-direction:column;align-items:center;gap:1px;margin-top:auto;font-size:.9rem;font-style:italic;line-height:1.25;display:flex}.card-focus{border:1px solid var(--card-edge);background:var(--card);width:28px;height:28px;color:var(--ink-soft);opacity:0;border-radius:50%;place-items:center;transition:opacity .15s,background .15s;display:grid;position:absolute;top:8px;right:8px}.person-node:hover .card-focus,.card-focus:focus-visible{opacity:1}.card-focus:hover{background:var(--paper-deep);color:var(--ink)}@media (hover:none){.card-focus{opacity:.8}}.doc-dots{left:0;right:0;top:var(--card-h);height:var(--dots-h);justify-content:center;align-items:center;gap:12px;display:flex;position:absolute}.doc-dot{background:var(--paper);width:13px;height:13px;color:var(--ink-faint);opacity:.55;border:1.5px solid;border-radius:50%;padding:0;transition:transform .15s,opacity .15s,box-shadow .15s;display:inline-block}button.doc-dot{position:relative}button.doc-dot:after{content:"";position:absolute;inset:-9px}.doc-dot.dot-birth{color:var(--birth)}.doc-dot.dot-family_book{color:var(--book)}.doc-dot.dot-death{color:var(--death)}.doc-dot.has-doc{opacity:1;box-shadow:0 0 0 2px var(--paper);background:currentColor}button.doc-dot:not(:disabled):hover{opacity:1;transform:scale(1.3)}button.doc-dot:disabled{cursor:default}.node-toggles{z-index:2;justify-content:center;gap:6px;display:flex;position:absolute;left:0;right:0}.node-toggles-top{top:-14px}.node-toggles-bottom{top:calc(var(--card-h) + var(--dots-h) - 6px)}.toggle{border:1px solid var(--gold);background:var(--card);min-width:28px;height:28px;color:var(--accent);box-shadow:var(--shadow-sm);border-radius:999px;justify-content:center;align-items:center;gap:2px;padding:0 6px;font-size:.85rem;transition:background .15s,color .15s,transform .15s;display:inline-flex}.toggle:hover{background:var(--accent);border-color:var(--accent);color:#fbf4e6}.toggle.is-open{background:var(--paper-deep)}.toggle.is-open:hover{background:var(--accent)}.toggle-count{padding-right:2px;font-weight:500}.toggle-add{color:var(--ink-faint);border-style:dashed}.tree-search{z-index:10;width:min(360px,100% - 32px);position:absolute;top:16px;left:16px}.tree-search .search-input{box-shadow:var(--shadow-sm);background:#fffdf8f0}.tree-search .search-results{background:var(--card);border:1px solid var(--card-edge);box-shadow:var(--shadow);border-radius:10px;margin-top:6px;padding:6px}.tree-search .search-results .empty-line{padding:6px 10px}.tree-controls{left:16px;bottom:max(16px, env(safe-area-inset-bottom));z-index:10;border:1px solid var(--card-edge);box-shadow:var(--shadow-sm);background:#fcf8eff0;border-radius:999px;align-items:center;gap:2px;padding:4px;display:flex;position:absolute}.tree-controls-sep{background:var(--card-edge);width:1px;height:20px;margin:0 4px}.tree-legend{right:16px;bottom:max(16px, env(safe-area-inset-bottom));z-index:5;color:var(--ink-soft);border:1px solid var(--card-edge);background:#fcf8efe0;border-radius:999px;gap:16px;padding:7px 16px;font-size:.9rem;font-style:italic;transition:right .3s;display:flex;position:absolute}.tree-legend span{align-items:center;gap:7px;display:inline-flex}.tree-legend .doc-dot{width:10px;height:10px;box-shadow:none}.has-panel .tree-legend{right:calc(var(--panel-w) + 16px)}.empty-tree{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;height:100%;padding:24px;display:flex}.empty-tree h2{font-size:2.2rem;font-style:italic;font-weight:500}.empty-tree p{color:var(--ink-soft);max-width:440px;margin:0}@media (width<=960px){.tree-legend{display:none}}.tree-page{--panel-w:430px}.panel{width:var(--panel-w);z-index:20;background:linear-gradient(180deg, #fff6, #fff0 220px), var(--card);border-left:1px solid var(--card-edge);animation:.32s cubic-bezier(.22,.7,.2,1) panel-in;position:absolute;top:0;bottom:0;right:0;box-shadow:-10px 0 40px #3c281424}@keyframes panel-in{0%{opacity:0;transform:translate(40px)}}.panel-scroll{height:100%;padding:30px 28px max(40px, env(safe-area-inset-bottom));overscroll-behavior:contain;scrollbar-width:none;overflow-y:auto}.panel-scroll::-webkit-scrollbar{display:none}.panel-close{z-index:1;position:absolute;top:10px;right:10px}.panel-loading,.panel-error{text-align:center;color:var(--ink-faint);margin:24px 0;font-style:italic}.panel-error{color:var(--danger)}.panel-header{text-align:center;flex-direction:column;align-items:center;display:flex}.panel-portrait{background:var(--paper-deep);width:148px;height:180px;box-shadow:0 0 0 5px var(--card), 0 0 0 6px var(--gold), 0 0 0 10px var(--card), 0 0 0 11px var(--gold-soft), var(--shadow);border-radius:50%;place-items:center;margin:8px 0 22px;display:grid;position:relative}.panel-portrait>img{object-fit:cover;border-radius:50%;width:100%;height:100%}.panel-portrait .silhouette{width:60%;height:60%}.portrait-edit{border:1px solid var(--gold);background:var(--card);width:36px;height:36px;color:var(--accent);box-shadow:var(--shadow-sm);border-radius:50%;place-items:center;display:grid;position:absolute;bottom:6px;right:-2px}.portrait-edit:hover{background:var(--accent);color:#fbf4e6}.panel-name{flex-direction:column;line-height:1.08;display:flex}.panel-name .first-name{white-space:normal;font-size:2rem}.panel-name .last-name{white-space:normal;font-size:1.55rem}.panel-birth-name{color:var(--ink-soft);margin:4px 0 0;font-style:italic}.panel-lifespan{font-family:var(--font-display);color:var(--ink-soft);margin:6px 0 0;font-size:1.25rem;font-style:italic}.panel-occupation{color:var(--ink-faint);font-variant:small-caps;letter-spacing:.06em;margin:2px 0 0}.panel-ornament{margin:16px auto 14px}.vital-records{text-align:left;flex-direction:column;gap:6px;width:100%;margin:0;display:flex}.vital-records>div{grid-template-columns:82px 1fr;gap:10px;display:grid}.vital-records dt{font-family:var(--font-display);color:var(--ink-soft);font-size:1.05rem;font-weight:600}.vital-records dd{margin:0}.vital-records em,.vital-records .age{color:var(--ink-faint)}.panel-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:18px;display:flex}.panel-section{margin-top:30px}.panel-section>h3,.panel-section .section-head h3{border-bottom:1px solid #a8834a4d;flex:1;margin-bottom:12px;padding-bottom:6px;font-size:1.45rem}.panel-section .section-head{border-bottom:1px solid #a8834a4d;align-items:flex-end;margin-bottom:12px;padding-bottom:6px}.panel-section .section-head h3{border:0;margin:0;padding:0}.civil-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.civil-list li{align-items:center;gap:12px;padding:7px 4px;display:flex}.civil-list li+li{border-top:1px dotted #a8834a59}.civil-label{flex:1}.civil-actions{align-items:center;gap:6px;font-size:.95rem;display:flex}.biography{white-space:pre-wrap;font-size:1.04rem;line-height:1.65}.biography:first-letter{font-family:var(--font-display);float:left;color:var(--accent);padding:4px 6px 0 0;font-size:2.6em;line-height:.9}.kin-group+.kin-group{margin-top:16px}.kin-head{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.kin-head h4{color:var(--ink-soft);font-size:1.12rem;font-style:italic;font-weight:500}.kin-head .btn-small{padding:3px 10px;font-size:.88rem}.kin-list{margin:0;padding:0;list-style:none}.kin{align-items:center;gap:2px;display:flex}.kin-main{text-align:left;background:0 0;border:0;border-radius:8px;flex:1;align-items:center;gap:12px;min-width:0;padding:6px 8px;display:flex}.kin-main:hover{background:#a8834a1c}.kin-remove:hover{color:var(--danger)}.gallery{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.gallery-item{aspect-ratio:1;border:1px solid var(--card-edge);box-shadow:var(--shadow-sm);background:#fffdf8;border-radius:4px;padding:4px;transition:transform .15s}.gallery-item:nth-child(3n+1){transform:rotate(-1deg)}.gallery-item:nth-child(3n+2){transform:rotate(.8deg)}.gallery-item:hover{transform:scale(1.04)rotate(0)}.gallery-item img{object-fit:cover;width:100%;height:100%;display:block}.doc-list{margin:0;padding:0;list-style:none}.doc-row{text-align:left;width:100%;color:var(--ink-soft);background:0 0;border:0;border-radius:8px;align-items:center;gap:12px;padding:8px;display:flex}.doc-row:hover{background:#a8834a1c}.doc-row-text{flex-direction:column;min-width:0;display:flex}.doc-row-title{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.doc-row-meta{font-size:.86rem;font-style:italic}.viewer{z-index:150;color:#efe4d0;background:#18120cf2;flex-direction:column;animation:.2s ease-out fade-in;display:flex;position:fixed;inset:0}.viewer-header{padding:max(14px, env(safe-area-inset-top)) 20px 12px 24px;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.viewer-title{min-width:0}.viewer-kind{letter-spacing:.12em;text-transform:uppercase;color:var(--gold-soft);font-size:.85rem}.viewer-title h2{color:#fbf3e4;font-size:1.6rem;font-weight:500}.viewer-title p{color:#bfae92;margin:2px 0 0;font-style:italic}.viewer-actions{gap:4px;display:flex}.viewer .icon-btn{color:#e6d8bf}.viewer .icon-btn:hover{color:#fff;background:#ffffff1a}.viewer-stage{flex:1;justify-content:center;align-items:center;min-height:0;padding:0 64px 20px;display:flex;position:relative}.viewer-stage img{object-fit:contain;background:#fff;max-width:100%;max-height:100%;animation:.25s ease-out fade-in;box-shadow:0 10px 50px #00000080}.viewer-stage iframe{background:#fff;border:0;border-radius:4px;width:min(1000px,100%);height:100%}.viewer-nav{color:#f3e7d2;background:#00000059;border:1px solid #fff3;border-radius:50%;place-items:center;width:48px;height:48px;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.viewer-nav:hover{background:#0009}.viewer-nav.prev{left:10px}.viewer-nav.next{right:10px}.viewer-caption{padding:4px 24px max(18px, env(safe-area-inset-bottom));text-align:center;color:#d6c7ad;white-space:pre-wrap;max-width:900px;margin:0 auto;font-style:italic}@media (width<=760px){.tree-page{--panel-w:100%}.panel{border-left:0}.panel-scroll{padding:26px 18px 40px}.viewer-stage{padding:0 8px 12px}.viewer-nav{top:auto;bottom:20px;transform:none}.viewer-title h2{font-size:1.25rem}}
