*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f0ede8;--bg-card:#fff;--blue:#5a9ed6;--blue-light:#a8cbe8;--rose:#d4787a;--rose-light:#eab0b1;--neutral:#8b8b8b;--line:#bbb;--text-primary:#2c2c2c;--text-secondary:#6b6b6b;--text-muted:#9b9b9b;--shadow-sm:0 1px 3px #0000001a;--shadow-md:0 4px 16px #0000001f;--shadow-lg:0 8px 32px #00000029;--radius:8px;--radius-card:10px}body{background:#f0ede8;background:var(--bg);color:#2c2c2c;color:var(--text-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;min-height:100vh;overflow:hidden}#root{display:flex;flex-direction:column;height:100vh;width:100vw}button{cursor:pointer}button,input,select,textarea{font-family:inherit}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#bbb;background:var(--line);border-radius:3px}.person-card-wrapper{overflow:visible;position:absolute}.person-card,.person-card-wrapper{align-items:center;display:flex;flex-direction:column}.person-card{background:#fff;border:9px solid var(--neutral);border-radius:16px;box-shadow:var(--shadow-sm);cursor:pointer;flex-shrink:0;height:160px;overflow:hidden;position:relative;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;-webkit-user-select:none;user-select:none;width:140px}.person-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.person-card--selected{box-shadow:0 0 0 3px #5a9ed6,var(--shadow-md)!important;transform:translateY(-2px)}.card--male{border-color:var(--blue)}.card--female{border-color:var(--rose)}.card--neutral{border-color:var(--neutral)}.card-photo{background:#fff;flex-shrink:0;height:90px;overflow:hidden;width:100%}.card-photo-img{background:#fff;height:100%;object-fit:contain;object-position:center center;width:100%}.card-photo-placeholder{align-items:center;color:#fff;display:flex;font-size:22px;font-weight:700;height:100%;justify-content:center;letter-spacing:1px;width:100%}.card--male .card-photo-placeholder{background:var(--blue)}.card--female .card-photo-placeholder{background:var(--rose)}.card--neutral .card-photo-placeholder{background:var(--neutral)}.card-info{box-sizing:border-box;overflow:hidden;padding:8px 6px 4px 16px;width:100%}.card-name{color:#222;font-size:11px;font-weight:600}.card-birth,.card-maiden,.card-name{line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-birth,.card-maiden{color:#888;font-size:10px;font-style:italic}.card-birth{font-style:normal}.card-color-btn{align-items:center;background:#ffffffd9;border:none;border-radius:50%;box-shadow:0 1px 4px #0003;cursor:pointer;display:flex;font-size:12px;height:20px;justify-content:center;line-height:1;padding:0;position:absolute;right:3px;top:3px;width:20px}.card-color-picker{grid-gap:6px;background:#fff;border:1px solid #ddd;border-radius:10px;box-shadow:0 4px 16px #00000026;display:grid;gap:6px;grid-template-columns:repeat(3,28px);left:50%;padding:8px;position:absolute;top:164px;transform:translateX(-50%);z-index:1001}.card-color-swatch{border:3px solid #0000;border-radius:50%;cursor:pointer;height:28px;transition:transform .1s,border-color .1s;width:28px}.card-color-swatch:hover{transform:scale(1.15)}.card-color-swatch--active{border-color:#333}.card-golden-children{color:#b8860b;font-size:9px;font-weight:600;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-symbols{bottom:3px;display:flex;flex-wrap:wrap;gap:1px;justify-content:flex-end;max-width:60px;position:absolute;right:3px}.card-add-btn{align-items:center;background:#fff;border:2px solid #aaa;border-radius:50%;color:#666;cursor:pointer;display:flex;flex-shrink:0;font-size:14px;height:20px;justify-content:center;line-height:1;margin-top:1px;opacity:0;padding:0;pointer-events:none;transition:opacity .15s,background .15s,border-color .15s,color .15s;width:20px}.card-add-btn--visible{opacity:1;pointer-events:auto}.card-add-btn:hover{background:#5a9ed6;border-color:#5a9ed6;color:#fff}.card-add-menu{background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 4px 16px #00000026;left:50%;min-width:130px;overflow:hidden;position:absolute;top:155px;transform:translateX(-50%);z-index:1000}.card-add-menu__item{background:none;border:none;color:#333;cursor:pointer;display:block;font-size:13px;padding:8px 14px;text-align:left;transition:background .1s;white-space:nowrap;width:100%}.card-add-menu__item:hover{background:#f0f6fc;color:#5a9ed6}.tree-canvas{background:radial-gradient(circle at 1px 1px,#d4cfc8 1px,#0000 0) 0 0 /28px 28px;cursor:grab;flex:1 1;overflow:hidden;position:relative}.tree-canvas--panning{cursor:grabbing}.tree-lines{height:1px;pointer-events:none;width:1px}.tree-cards,.tree-lines{left:0;overflow:visible;position:absolute;top:0}.tree-cards{height:0;width:0}.canvas-empty{align-items:center;color:var(--text-muted);display:flex;flex-direction:column;gap:8px;inset:0;justify-content:center;pointer-events:none;position:absolute;text-align:center}.canvas-empty-icon{font-size:48px;margin-bottom:8px}.canvas-empty h2{color:var(--text-secondary);font-family:Playfair Display,serif;font-size:22px;font-weight:400}.canvas-empty p{color:var(--text-muted);font-size:14px}.zoom-controls{border:1px solid #e8e8e8;border-radius:10px;bottom:24px;box-shadow:var(--shadow-md);flex-direction:column;gap:2px;overflow:hidden;position:absolute;right:24px}.zoom-btn,.zoom-controls{background:#fff;display:flex}.zoom-btn{align-items:center;border:none;color:var(--text-secondary);font-size:18px;height:36px;justify-content:center;transition:background .1s,color .1s;width:36px}.zoom-btn:hover{background:#f0f5fb;color:var(--blue)}.zoom-btn--center{border-bottom:1px solid #f0f0f0;border-top:1px solid #f0f0f0;font-size:14px}.scale-indicator{background:#fffc;border-radius:6px;bottom:24px;color:var(--text-muted);font-size:11px;left:24px;padding:4px 8px;position:absolute}.modal-overlay,.scale-indicator{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-overlay{align-items:center;background:#00000073;display:flex;inset:0;justify-content:center;padding:16px;position:fixed;z-index:1000}.modal{animation:modalIn .2s ease;background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);max-height:90vh;max-width:480px;overflow-y:auto;width:100%}@keyframes modalIn{0%{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{align-items:center;display:flex;justify-content:space-between;padding:20px 24px 0}.modal-header h2{color:var(--text-primary);font-family:Playfair Display,serif;font-size:20px;font-weight:600}.modal-close{background:none;border:none;border-radius:6px;color:var(--text-muted);font-size:24px;line-height:1;padding:4px 8px;transition:background .1s}.modal-close:hover{background:#f0f0f0;color:var(--text-primary)}.modal-form{padding:16px 24px 24px}.photo-upload-area{border:2px dashed var(--line);border-radius:50%;cursor:pointer;height:96px;margin:0 auto 20px;overflow:hidden;position:relative;transition:border-color .15s;width:96px}.photo-upload-area:hover{border-color:var(--blue)}.photo-preview{height:100%;object-fit:cover;width:100%}.photo-placeholder{color:var(--text-muted);flex-direction:column;font-size:10px;gap:4px;height:100%;padding:8px;text-align:center;width:100%}.photo-placeholder,.photo-remove{align-items:center;display:flex;justify-content:center}.photo-remove{background:#00000080;border:none;border-radius:50%;color:#fff;font-size:14px;height:20px;line-height:1;position:absolute;right:4px;top:4px;width:20px}.form-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr}.form-group{display:flex;flex-direction:column;gap:5px}.form-group--wide{grid-column:1/-1}.form-group label{color:var(--text-secondary);font-size:12px;font-weight:500;letter-spacing:.02em}.form-group input,.form-group select,.form-group textarea{background:#fafafa;border:1.5px solid #e0e0e0;border-radius:8px;color:var(--text-primary);font-size:14px;outline:none;padding:9px 12px;transition:border-color .15s,box-shadow .15s}.form-group input:focus,.form-group select:focus{background:#fff;border-color:var(--blue);box-shadow:0 0 0 3px #5a9ed626}.relation-section{border-top:1px solid #f0f0f0;display:flex;flex-direction:column;gap:10px;margin-top:20px;padding-top:20px}.relation-section-header{align-items:center;display:flex;justify-content:space-between}.relation-section h3{color:var(--text-secondary);font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.btn-add-relation{background:#eef5fb;border:1px solid var(--blue-light);border-radius:6px;color:var(--blue);cursor:pointer;font-size:12px;font-weight:500;padding:4px 10px;transition:background .1s}.btn-add-relation:hover{background:#dceef8}.relation-row{background:#fafafa;border:1px solid #ebebeb;border-radius:10px;display:flex;flex-direction:column;gap:8px;padding:12px 12px 10px}.relation-row-header{align-items:center;display:flex;justify-content:space-between}.relation-row-num{color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.06em}.relation-row-remove{background:none;border:none;border-radius:4px;color:var(--text-muted);cursor:pointer;font-size:17px;line-height:1;padding:0 2px;transition:color .1s,background .1s}.relation-row-remove:hover{background:#fff0f0;color:var(--rose)}.label-optional{color:var(--text-muted);font-size:11px;font-weight:400}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:24px}.btn{border:none;border-radius:8px;font-size:14px;font-weight:500;padding:10px 20px;transition:all .15s}.btn--primary{background:var(--blue);color:#fff}.btn--primary:hover:not(:disabled){background:#4a8ec6;box-shadow:var(--shadow-sm);transform:translateY(-1px)}.btn--primary:disabled{background:var(--blue-light);cursor:not-allowed}.btn--ghost{background:#0000;border:1.5px solid #e0e0e0;color:var(--text-secondary)}.btn--ghost:hover{background:#f5f5f5}.btn--danger{background:var(--rose);color:#fff}.btn--danger:hover{background:#c46668}.detail-panel{align-items:center;animation:panelIn .2s ease;background:#fff;bottom:0;box-shadow:-4px 0 24px #0000001f;display:flex;flex-direction:column;overflow-y:auto;padding:32px 20px 20px;position:fixed;right:0;top:0;width:280px;z-index:100}@keyframes panelIn{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}.panel-close{background:none;border:none;border-radius:6px;color:var(--text-muted);cursor:pointer;font-size:22px;padding:4px 8px;position:absolute;right:12px;top:12px}.panel-close:hover{background:#f0f0f0}.panel-photo{border:3px solid var(--blue-light);border-radius:50%;height:88px;margin-bottom:14px;overflow:hidden;width:88px}.panel-photo img{height:100%;object-fit:cover;width:100%}.panel-photo-placeholder{align-items:center;color:#fff;display:flex;font-family:Playfair Display,serif;font-size:28px;font-weight:600;height:100%;justify-content:center;width:100%}.panel-photo-placeholder.male{background:linear-gradient(135deg,var(--blue-light),var(--blue))}.panel-photo-placeholder.female{background:linear-gradient(135deg,var(--rose-light),var(--rose))}.panel-photo-placeholder.neutral{background:linear-gradient(135deg,#ccc,#999)}.panel-name{color:var(--text-primary);font-family:Playfair Display,serif;font-size:18px;font-weight:600;margin-bottom:2px;text-align:center}.panel-maiden{color:var(--text-secondary);font-size:12px;font-style:italic;margin-bottom:12px}.panel-meta{border-bottom:1px solid #f0f0f0;border-top:1px solid #f0f0f0;display:flex;flex-direction:column;gap:6px;margin-bottom:16px;padding:12px 0;width:100%}.meta-item{align-items:center;color:var(--text-secondary);display:flex;font-size:13px;gap:8px}.meta-icon{font-size:14px;text-align:center;width:18px}.panel-relations{display:flex;flex:1 1;flex-direction:column;gap:12px;width:100%}.rel-group{display:flex;flex-direction:column;gap:4px}.rel-label{color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.rel-items{display:flex;flex-wrap:wrap;gap:5px}.rel-chip{background:#f0f5fb;border-radius:20px;color:var(--blue);font-size:12px;font-weight:500;padding:3px 9px}.panel-actions{display:flex;gap:8px;margin-top:20px;width:100%}.panel-btn{flex:1 1;font-size:13px;gap:6px;padding:9px 12px}.panel-btn,.ws-overlay{align-items:center;display:flex;justify-content:center}.ws-overlay{background:#f0ede8;inset:0;padding:20px;position:fixed;z-index:9999}.ws-card{background:#fff;border-radius:20px;box-shadow:0 8px 40px #0000001f;max-width:460px;padding:40px 36px;width:100%}.ws-logo{color:#1a1a1a;font-size:22px;font-weight:800;letter-spacing:-.5px;margin-bottom:8px}.ws-subtitle{color:#888;font-size:14px;margin-bottom:32px}.ws-title{color:#1a1a1a;font-size:20px;font-weight:700;margin-bottom:10px}.ws-desc{color:#555;font-size:14px;line-height:1.6;margin-bottom:24px}.ws-options{gap:14px}.ws-option,.ws-options{display:flex;flex-direction:column}.ws-option{align-items:flex-start;background:#fafafa;border:2px solid #e8e8e8;border-radius:14px;cursor:pointer;gap:4px;padding:20px;text-align:left;transition:all .15s}.ws-option:hover{transform:translateY(-1px)}.ws-option--primary,.ws-option:hover{background:#f0f4ff;border-color:#1540dc}.ws-option--primary:hover{background:#e4ecff}.ws-option-icon{color:#1540dc;font-size:20px;margin-bottom:4px}.ws-option-title{color:#1a1a1a;font-size:15px;font-weight:700}.ws-option-desc{color:#888;font-size:13px}.ws-steps{margin-bottom:28px}.ws-step,.ws-steps{align-items:center;display:flex}.ws-step{background:#e8e8e8;border-radius:50%;color:#aaa;flex-shrink:0;font-size:13px;font-weight:700;height:32px;justify-content:center;width:32px}.ws-step--active{background:#1540dc;color:#fff}.ws-step--done{background:#09ad01;color:#fff}.ws-step-line{background:#e8e8e8;flex:1 1;height:2px;margin:0 8px}.ws-step-line--done{background:#09ad01}.ws-input{border:2px solid #e8e8e8;border-radius:10px;box-sizing:border-box;color:#1a1a1a;font-size:15px;margin-bottom:12px;outline:none;padding:12px 16px;transition:border-color .15s;width:100%}.ws-input:focus{border-color:#1540dc}.ws-input--code{font-size:24px;font-weight:700;letter-spacing:8px;text-align:center}.ws-error{color:red;font-size:13px;margin-bottom:12px}.ws-hint{color:#888;font-size:13px;margin-bottom:20px}.ws-hint:hover{color:#1540dc}.ws-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.ws-btn{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;padding:10px 22px;transition:all .15s}.ws-btn--primary{background:#1540dc;color:#fff}.ws-btn--primary:hover:not(:disabled){background:#0f32b8}.ws-btn--primary:disabled{cursor:not-allowed;opacity:.6}.ws-btn--secondary{background:#f0f0f0;color:#555}.ws-btn--secondary:hover{background:#e4e4e4}.app{display:flex;flex-direction:column;height:100vh;width:100vw}.app-header{background:#fff;border-bottom:1px solid #eaeaea;box-shadow:0 1px 4px #0000000f;flex-shrink:0;height:58px;justify-content:space-between;padding:0 20px;z-index:50}.app-header,.header-brand{align-items:center;display:flex}.header-brand{gap:10px}.header-logo{font-size:22px}.header-brand h1{color:var(--text-primary);font-family:Playfair Display,serif;font-size:20px;font-weight:600;letter-spacing:-.01em}.header-count{background:#f0f0f0;border-radius:12px;color:var(--text-muted);font-size:12px;padding:2px 8px}.header-actions{gap:8px}.btn-icon,.header-actions{align-items:center;display:flex}.btn-icon{background:#0000;border:1.5px solid #e0e0e0;border-radius:8px;color:var(--text-secondary);cursor:pointer;height:36px;justify-content:center;transition:all .15s;width:36px}.btn-icon:hover:not(:disabled){background:#f5f5f5;border-color:#ccc;color:var(--text-primary)}.btn-icon:disabled{cursor:not-allowed;opacity:.4}.btn-icon--danger:hover{background:#fff0f0!important;border-color:var(--rose)!important;color:var(--rose)!important}.btn--add{align-items:center;background:var(--blue);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:7px;height:36px;margin-left:4px;padding:0 16px;transition:all .15s}.btn--add:hover{background:#4a8ec6;box-shadow:0 4px 12px #5a9ed659;transform:translateY(-1px)}.app-main{display:flex;flex:1 1;overflow:hidden;position:relative}
/*# sourceMappingURL=main.c178aae9.css.map*/