:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:var(--tg-theme-bg-color,#f6f2e9);--surface:var(--tg-theme-secondary-bg-color,#fffdf8);--text:var(--tg-theme-text-color,#29251f);--muted:var(--tg-theme-hint-color,#7c7469);--accent:var(--tg-theme-button-color,#68734b);--accent-text:var(--tg-theme-button-text-color,#fff);--line:color-mix(in srgb, var(--muted) 25%, transparent);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}html,body{background:var(--bg);width:100%;height:100%;color:var(--text);margin:0;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}[hidden]{display:none!important}.app-shell{grid-template-rows:auto auto 1fr;height:100dvh;display:grid}.topbar{padding:max(12px, env(safe-area-inset-top)) 16px 10px;background:var(--surface);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand-mark{background:color-mix(in srgb, var(--accent) 14%, var(--surface));border-radius:50%;place-items:center;width:38px;height:38px;font-size:21px;display:grid}.brand h1{margin:0;font:700 19px/1.15 Georgia,serif}.brand p{color:var(--muted);margin:2px 0 0;font-size:11px}.logout-button{border:1px solid var(--line);background:var(--bg);color:var(--muted);border-radius:9px;padding:7px 10px;font-size:12px}.tabs{background:var(--surface);gap:4px;padding:6px 12px;display:flex;overflow-x:auto}.tab{min-width:max-content;color:var(--muted);background:0 0;border:0;border-radius:10px;flex:1;padding:9px 12px;font-weight:650}.tab.is-active{background:var(--accent);color:var(--accent-text)}.view{min-height:0;position:relative}#tree-view{grid-template-rows:auto 1fr;display:grid}.filters{z-index:8;border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 94%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:14px;grid-template-columns:minmax(140px,2fr) repeat(5,minmax(95px,1fr)) auto;gap:7px;margin:10px 10px 0;padding:8px;display:grid;position:relative;top:auto;left:auto;right:auto;box-shadow:0 8px 30px #322a1f17}.filters input,.filters select{border:1px solid var(--line);background:var(--bg);min-width:0;height:36px;color:var(--text);border-radius:9px;outline:none;padding:0 10px}.filters input:focus,.filters select:focus{border-color:var(--accent)}.filters button,.icon-button{background:color-mix(in srgb, var(--accent) 12%, var(--surface));width:36px;height:36px;color:var(--text);border:0;border-radius:9px}#tree{background:radial-gradient(circle at 50% 15%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 45%), var(--bg);width:100%;height:100%;min-height:0}.tree-controls{z-index:7;right:14px;bottom:calc(14px + env(safe-area-inset-bottom));gap:6px;display:flex;position:absolute}.tree-controls .fit-button{border:1px solid var(--line);width:auto;padding:0 12px;position:static;box-shadow:0 4px 18px #322a1f1f}.tree-meta{z-index:6;left:14px;bottom:calc(18px + env(safe-area-inset-bottom));border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 92%, transparent);color:var(--muted);border-radius:9px;padding:7px 10px;font-size:12px;position:absolute}.loading{z-index:20;background:color-mix(in srgb, var(--bg) 72%, transparent);place-items:center;display:grid;position:absolute;inset:0}.loading:after{content:"";border:3px solid color-mix(in srgb, var(--accent) 25%, transparent);border-top-color:var(--accent);border-radius:50%;width:28px;height:28px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(1turn)}}.empty,.error{z-index:6;border:1px solid var(--line);background:var(--surface);text-align:center;border-radius:16px;width:min(330px,100% - 30px);padding:22px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 12px 35px #322a1f1f}.empty strong{margin-bottom:6px;display:block}.empty span,.error{color:var(--muted)}.error-actions{margin-top:14px}.telegram-login,.person-focus{color:#fff;background:#229ed9;border:0;border-radius:10px;justify-content:center;padding:10px 16px;font-weight:700;text-decoration:none;display:inline-flex}.auth-panel{z-index:50;background:radial-gradient(circle at 50% 20%, color-mix(in srgb, var(--accent) 13%, transparent), transparent 42%), var(--bg);place-items:center;padding:18px;display:grid;position:fixed;inset:0}.auth-card{border:1px solid var(--line);background:var(--surface);text-align:center;border-radius:22px;width:min(420px,100%);padding:28px;box-shadow:0 18px 55px #322a1f29}.auth-card .brand-mark{margin:0 auto 10px}.auth-card h2{margin:0;font:700 25px/1.2 Georgia,serif}.auth-card>p{color:var(--muted);line-height:1.45}.auth-card .telegram-login{width:100%}.telegram-credentials{color:var(--accent);text-align:center;margin-top:12px;font-weight:700;text-decoration:none;display:block}.auth-divider{color:var(--muted);align-items:center;gap:10px;margin:18px 0;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--line);flex:1;height:1px}.auth-form{text-align:left;gap:12px;display:grid}.auth-form label span{color:var(--muted);margin:0 0 5px;font-size:13px;display:block}.auth-form input{border:1px solid var(--line);background:var(--bg);width:100%;height:44px;color:var(--text);border-radius:10px;padding:0 12px}.auth-form button{background:var(--accent);height:44px;color:var(--accent-text);border:0;border-radius:10px;font-weight:750}.auth-error{min-height:20px;margin-bottom:0;color:#b42318!important}.sheet{z-index:30;background:#00000047;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-card{width:100%;max-height:82dvh;padding:22px 18px calc(22px + env(safe-area-inset-bottom));background:var(--surface);border-radius:22px 22px 0 0;position:relative;overflow:auto;box-shadow:0 -12px 40px #00000024}.sheet-close{position:absolute;top:12px;right:12px}.person-heading{align-items:center;gap:14px;padding-right:36px;display:flex}.person-heading h2{margin:0;font:700 24px/1.15 Georgia,serif}.person-heading p{color:var(--muted);margin:5px 0 0}.person-photo-button{cursor:zoom-in;background:0 0;border:0;border-radius:50%;flex:none;padding:0}.person-photo{object-fit:cover;border:2px solid var(--line);border-radius:50%;width:74px;height:74px}.person-photo--empty{background:color-mix(in srgb, var(--accent) 16%, var(--surface));place-items:center;font:700 30px Georgia,serif;display:grid}.person-facts{margin:20px 0}.person-facts div{border-bottom:1px solid var(--line);grid-template-columns:130px 1fr;gap:12px;padding:8px 0;display:grid}.person-facts dt{color:var(--muted)}.person-facts dd{margin:0}.person-bio{white-space:pre-line;line-height:1.6}.relative-block h3,.person-photo-strip h3{margin:18px 0 9px;font-size:14px}.relative-chips{flex-wrap:wrap;gap:7px;display:flex}.relative-chips button{border:1px solid var(--line);background:var(--bg);color:var(--text);border-radius:999px;align-items:center;gap:7px;padding:6px 10px 6px 6px;display:flex}.relative-chips img{object-fit:cover;border-radius:50%;width:28px;height:28px}.person-photo-strip>div{gap:7px;display:flex;overflow-x:auto}.person-photo-strip button{cursor:zoom-in;background:0 0;border:0;border-radius:11px;flex:none;padding:0}.person-photo-strip img{object-fit:cover;border-radius:11px;flex:none;width:92px;height:92px}.person-focus{background:var(--accent);width:100%;color:var(--accent-text);margin-top:8px}.standalone-photo img{object-fit:contain;border-radius:14px;width:100%;max-height:62dvh;display:block}.standalone-photo h2{margin:14px 0 4px;font:700 22px/1.2 Georgia,serif}.standalone-photo p{white-space:pre-line}.standalone-photo small{color:var(--muted)}.photo-viewer{z-index:60;background:#0f0d0ae0;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.photo-viewer-card{flex-direction:column;align-items:center;width:min(100%,1100px);max-height:calc(100dvh - 36px);display:flex;position:relative}.photo-viewer-card>img{object-fit:contain;border-radius:14px;max-width:100%;max-height:calc(100dvh - 145px);display:block;box-shadow:0 16px 55px #00000061}.photo-viewer-close{z-index:2;color:#17140f;background:#ffffffe0;position:absolute;top:8px;right:8px}#photo-viewer-caption{color:#fff;text-align:center;margin-top:10px}#photo-viewer-caption strong,#photo-viewer-caption small{display:block}#photo-viewer-caption p{white-space:pre-line;margin:5px 0}#photo-viewer-caption button{background:var(--accent);color:var(--accent-text);border:0;border-radius:10px;margin-top:9px;padding:9px 14px;font-weight:700}.birthdays{height:100%;padding:14px 12px calc(24px + env(safe-area-inset-bottom));overflow:auto}.birthday-intro{color:var(--muted);margin:6px 4px 14px}.birthday-list{gap:9px;display:grid}.birthday-card{border:1px solid var(--line);background:var(--surface);border-radius:14px;grid-template-columns:48px 1fr auto;align-items:center;gap:12px;padding:11px;display:grid}.birthday-card img,.birthday-avatar{border-radius:50%;width:48px;height:48px}.birthday-card img{object-fit:cover}.birthday-avatar{background:color-mix(in srgb, var(--accent) 16%, var(--surface));place-items:center;font-weight:700;display:grid}.birthday-card strong,.birthday-card span{display:block}.birthday-card span{color:var(--muted);margin-top:3px;font-size:13px}.birthday-card em{color:var(--accent);white-space:nowrap;font-size:12px;font-style:normal;font-weight:700}.empty-list{text-align:center;color:var(--muted)}.people-list{min-height:0;padding:10px 10px calc(22px + env(safe-area-inset-bottom));overflow:auto}.person-row{border:0;border-bottom:1px solid var(--line);background:var(--surface);width:100%;color:var(--text);text-align:left;grid-template-columns:48px minmax(180px,1.5fr) minmax(130px,1fr) minmax(130px,1fr) 16px;align-items:center;gap:12px;padding:10px 12px;display:grid}.person-row:first-child{border-radius:14px 14px 0 0}.person-row:last-child{border-radius:0 0 14px 14px}.person-row img,.person-row-avatar{border-radius:50%;width:44px;height:44px}.person-row img{object-fit:cover}.person-row-avatar{background:color-mix(in srgb, var(--accent) 15%, var(--surface));place-items:center;font-weight:750;display:grid}.person-row strong,.person-row small,.person-row-date b{display:block}.person-row small{color:var(--muted);margin-top:3px;font-size:12px}.person-row-date b{font-size:13px;font-weight:550}.person-row-chevron{color:var(--muted);font-size:25px}.gallery-view,.me-view{height:100%;padding:10px 10px calc(28px + env(safe-area-inset-bottom));overflow:auto}.gallery-grid{columns:5 220px;column-gap:7px}.gallery-item{break-inside:avoid;background:var(--surface);color:#fff;border:0;border-radius:10px;width:100%;margin:0 0 7px;padding:0;display:block;position:relative;overflow:hidden}.gallery-item img{object-fit:cover;width:100%;height:auto;min-height:120px;display:block}.gallery-item>span{text-align:left;background:linear-gradient(#0000,#000000a6);padding:28px 9px 8px;position:absolute;bottom:0;left:0;right:0}.gallery-item strong,.gallery-item small{display:block}.gallery-item small{opacity:.82;margin-top:2px}#me-content{gap:12px;max-width:980px;margin:0 auto;display:grid}.manage-card{border:1px solid var(--line);background:var(--surface);border-radius:16px;padding:18px}.manage-card>h2{margin:0 0 15px;font:700 21px Georgia,serif}.manage-heading{align-items:center;gap:12px;margin-bottom:18px;display:flex}.manage-heading img,.manage-heading>span{border-radius:50%;width:64px;height:64px}.manage-heading img{object-fit:cover}.manage-heading>span{background:var(--bg);place-items:center;font-size:28px;display:grid}.manage-heading h2{margin:0;font:700 22px Georgia,serif}.manage-heading p{color:var(--muted);margin:3px 0 0}.manage-form{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;display:grid}.manage-form label span{color:var(--muted);margin-bottom:5px;font-size:12px;display:block}.manage-form input,.manage-form select,.manage-form textarea,.inline-form input,.photo-upload-form input,.photo-upload-form select{border:1px solid var(--line);background:var(--bg);width:100%;min-height:40px;color:var(--text);border-radius:9px;padding:8px 10px}.manage-form textarea{resize:vertical;min-height:90px}.manage-form .wide,.manage-form>button,.manage-form .form-actions{grid-column:1/-1}.manage-form>button,.form-actions button,.inline-form button,.photo-upload-form>button{background:var(--accent);min-height:40px;color:var(--accent-text);border:0;border-radius:9px;padding:8px 14px;font-weight:700}.relative-editor-list details,.add-box{border-top:1px solid var(--line)}.relative-editor-list summary,.add-box>summary{cursor:pointer;padding:12px 2px}.relative-editor-list summary span,.relative-editor-list summary small{display:block}.relative-editor-list summary small{color:var(--muted)}.relative-form{padding:4px 0 16px}.form-actions{gap:8px;display:flex}button.danger{color:#fff;background:#b42318}.inline-form,.photo-upload-form{gap:8px;margin-top:12px;display:flex}.inline-form input{flex:1}.album-list{flex-wrap:wrap;gap:7px;display:flex}.album-list>span{background:var(--bg);border-radius:9px;padding:7px 9px}.album-list button{color:#b42318;background:0 0;border:0;margin-left:5px}.photo-upload-form{flex-wrap:wrap;align-items:center}.photo-upload-form>*{flex:180px}.photo-upload-form .check{color:var(--muted)}.photo-upload-form .check input{width:auto;min-height:auto}.my-photo-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:7px;margin-top:13px;display:grid}.my-photo-grid figure{background:var(--bg);border-radius:10px;min-height:125px;margin:0;position:relative;overflow:hidden}.my-photo-grid img{object-fit:cover;width:100%;height:100%;min-height:125px}.my-photo-grid button{color:#fff;background:#0009;border:0;border-radius:50%;width:28px;height:28px;position:absolute;top:5px;right:5px}.my-photo-grid b{background:var(--accent);color:#fff;border-radius:6px;padding:3px 6px;font-size:10px;position:absolute;bottom:5px;left:5px}.danger-zone summary{cursor:pointer;color:#b42318;font-weight:700}.danger-zone p{color:var(--muted)}.manage-message{color:#245c2a;text-align:center;background:#e8f5e9;border-radius:9px;margin:0;padding:10px;position:sticky;bottom:8px}.manage-message:empty{display:none}.manage-message.is-error{color:#8c1d18;background:#ffebee}@media (width<=700px){.filters{grid-template-columns:1fr 1fr auto}.filters input{grid-column:1/3}.filters select:nth-of-type(3){display:none}.tree-controls{right:8px;bottom:calc(8px + env(safe-area-inset-bottom));max-width:calc(100% - 16px)}.tree-controls .fit-button{padding:0 8px;font-size:11px}.tree-meta{display:none}.person-row{grid-template-columns:44px 1fr 16px;gap:9px;padding:9px 7px}.person-row-date{display:none}.manage-form{grid-template-columns:1fr}.manage-form .wide,.manage-form>button,.manage-form .form-actions{grid-column:auto}.inline-form{flex-direction:column}}
