*{box-sizing:border-box}body{margin:0;font-family:Noto Sans Thai,system-ui,sans-serif;color:#352a42;background:#f9f7fb}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid #e8e0ee;border-radius:9px;padding:9px 12px;background:#fff;color:#59426f;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}button:hover{background:#f1eaf7}button:disabled{opacity:.4;cursor:not-allowed}.primary{background:#7650a5;color:#fff;border-color:#7650a5}.primary:hover{background:#674391}.app{display:flex;flex-direction:column;height:100dvh;min-height:470px}.topbar{height:70px;flex-shrink:0;background:#fff;display:flex;align-items:center;gap:22px;padding:0 22px;border-bottom:1px solid #eae4ef}.brand{display:flex;align-items:center;gap:10px;font-size:20px;font-weight:750;white-space:nowrap;color:#49315e}.brand-icon{display:grid;place-items:center;width:39px;height:39px;border-radius:12px;background:#eee6f6;color:#7650a5}.brand small{font-size:9px;color:#a58db9;letter-spacing:1.4px}.top-actions{display:flex;gap:8px}.local-indicator{margin-left:auto;color:#4f9b77;font-size:12px;white-space:nowrap}.toolbar{display:flex;align-items:center;gap:6px;padding:9px 14px;background:#fff;border-bottom:1px solid #eae4ef;overflow-x:auto;flex-shrink:0}.toolbar button{font-size:12px;background:#f8f6fa;padding:8px 10px}.toolbar .toggled{background:#e9def4}.separator{height:24px;border-left:1px solid #e6ddea;margin:0 4px}.toggle{display:flex;align-items:center;gap:5px;font-size:12px;white-space:nowrap}.workspace{display:grid;grid-template-columns:250px minmax(0,1fr) 295px;min-height:0;flex:1}.panel{background:#fff;padding:19px 16px;overflow-y:auto}.sidebar{border-right:1px solid #ebe5ef}.editor{border-left:1px solid #ebe5ef}.panel h3{font-size:14px;margin:3px 0 14px;color:#5b486c}.panel-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.panel-title h3{margin:0}.panel input:not([type=checkbox]),.panel select,.panel textarea,.modal input,.modal select{width:100%;border:1px solid #ded5e5;border-radius:9px;background:#fff;padding:10px;min-width:0;outline-color:#a585c6}.panel label,.modal label{display:flex;flex-direction:column;gap:6px;margin:13px 0;font-size:12px;font-weight:650;color:#6a5878}.panel label.check{flex-direction:row;align-items:center}.panel label.check input{width:auto}.small-actions{display:flex;gap:7px;margin:9px 0 28px}.small-actions button{font-size:12px;padding:7px 9px}.count{background:#eee7f5;color:#775c91;border-radius:20px;padding:2px 9px;font-size:11px}.people-list{margin-top:12px;display:flex;flex-direction:column;gap:6px}.person-list-item{justify-content:flex-start;text-align:left;width:100%;border-radius:11px;padding:10px;white-space:normal}.person-list-item.active{background:#f0e7fa;border-color:#ceb7e6}.person-list-item span:last-child{display:flex;flex-direction:column;gap:3px;min-width:0}.person-list-item strong{font-size:12px;overflow-wrap:anywhere}.person-list-item small{font-size:10px;color:#8a7d95}.avatar{width:30px;height:30px;border-radius:50%;background:#e8dff1;display:grid;place-items:center;flex-shrink:0}.canvas-area{position:relative;min-width:0;overflow:hidden;background:#fcfbfe;touch-action:none}.tree-svg{width:100%;height:100%;display:block;cursor:grab}.canvas-empty{position:absolute;top:45%;width:100%;text-align:center;pointer-events:none;color:#9b8baa}.canvas-hint{position:absolute;bottom:14px;left:50%;transform:translate(-50%);font-size:11px;color:#9b8baa;pointer-events:none;white-space:nowrap}.editor-name{padding:12px;border-radius:10px;background:#f3edf8;color:#63477b;font-weight:700}.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.muted{color:#94869e;font-size:13px;line-height:1.8}.danger{color:#b74359;border-color:#f0d0d8}.status{background:#fff;border-top:1px solid #ebe5ef;padding:7px 16px;color:#7c6c89;font-size:12px;flex-shrink:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#24152f77;display:grid;place-items:center;z-index:20;padding:16px}.modal{background:#fff;border-radius:19px;padding:28px;width:min(420px,100%);box-shadow:0 20px 80px #26163244}.modal-icon{font-size:29px}.modal h2{font-size:19px;margin:12px 0 20px}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}@media(max-width:1050px){.workspace{grid-template-columns:200px minmax(0,1fr) 240px}.topbar{gap:10px;padding:10px}.brand{font-size:16px}.top-actions button{font-size:12px;padding:8px}}@media(max-width:720px){.app{height:auto;min-height:100dvh}.topbar{height:auto;flex-wrap:wrap;padding:12px}.top-actions{order:3;overflow-x:auto;width:100%}.toolbar{padding:8px}.workspace{display:flex;flex-direction:column}.canvas-area{height:55vh;min-height:370px;order:0}.sidebar{order:1;max-height:300px;border-top:1px solid #eee}.editor{order:2;max-height:none}.canvas-hint{font-size:9px}.local-indicator{margin-left:auto}}@media print{.topbar,.toolbar,.sidebar,.editor,.status,.canvas-hint{display:none!important}.workspace{display:block}.canvas-area{height:95vh}.app{height:auto}}.deceased-toggle{display:flex!important;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;border:1px solid #e0d4e8;border-radius:10px;background:#fbf7fc;margin:12px 0;color:#5e3c73;font-weight:650}.deceased-toggle input{width:17px;height:17px;accent-color:#7850a2}.deceased-toggle small{font-size:11px;font-weight:400;color:#85778d}.tree-svg,.tree-svg *,.person-node,.person-node *{user-select:none!important;-webkit-user-select:none!important;-webkit-user-drag:none;touch-action:none}.person-node text{pointer-events:none}.modal .relation-note{font-size:12px;color:#786a85;line-height:1.6;margin-top:8px}.gen-color{display:inline-flex;align-items:center;gap:5px;font-size:12px;white-space:nowrap;color:#59426f}.gen-color input{width:30px;height:27px;border:1px solid #e8e0ee;border-radius:6px;padding:1px;cursor:pointer;background:#fff}.gen-handle{cursor:ns-resize;-webkit-user-select:none;user-select:none}.tree-svg text{user-select:none;-webkit-user-select:none}.tree-svg{touch-action:none}.arrange-tools{display:flex;align-items:center}.arrange-label{font-size:12px;display:flex;align-items:center;gap:5px;white-space:nowrap}.arrange-label select{font:inherit;border:1px solid #e8e0ee;border-radius:7px;background:#fff;color:#59426f;padding:7px;max-width:145px}.person-node{cursor:move}.topbar{min-width:0;gap:12px}.top-actions{min-width:0;flex-wrap:wrap}.toolbar{display:block;overflow:visible;padding:8px 12px;position:relative;z-index:10}.toolbar-main{display:flex;flex-wrap:wrap;align-items:center;gap:7px;min-width:0}.tool-cluster,.toolbar-menus,.menu-inline{display:flex;align-items:center;gap:5px;min-width:0}.tool-cluster{border-right:1px solid #e6ddea;padding-right:8px}.toolbar-menus{flex-wrap:wrap}.toolbar .tool-menu{position:relative}.tool-menu summary{list-style:none;display:flex;align-items:center;gap:6px;cursor:pointer;padding:8px 11px;border:1px solid #e8e0ee;border-radius:9px;color:#59426f;background:#f8f6fa;font-size:12px;white-space:nowrap;-webkit-user-select:none;user-select:none}.tool-menu summary::-webkit-details-marker{display:none}.tool-menu[open] summary,.tool-menu summary:hover{background:#eee5f7}.chevron{font-size:14px;color:#8d77a4}.menu-panel{position:absolute;z-index:30;top:calc(100% + 7px);left:0;min-width:215px;max-width:min(290px,calc(100vw - 28px));padding:12px;display:flex;flex-direction:column;align-items:stretch;gap:9px;background:#fff;border:1px solid #e4d8ee;border-radius:12px;box-shadow:0 12px 35px #352a4226}.menu-panel strong,.move-caption{font-size:12px;color:#5b486c}.menu-panel select{width:100%;border:1px solid #ded5e5;border-radius:8px;padding:8px;background:#fff;color:#59426f;font:inherit;font-size:12px}.menu-panel .toggle{padding:6px 0}.menu-panel .gen-color{justify-content:space-between}.menu-panel button{justify-content:flex-start}.validate-button{margin-left:auto}.toolbar .arrange-primary{background:#eee6f6}.tool-menu:last-child .menu-panel{left:auto;right:0}@media(max-width:1000px){.topbar{height:auto;min-height:64px;flex-wrap:wrap;padding:10px 14px}.local-indicator{margin-left:auto}.top-actions{order:3;width:100%}.toolbar-main{gap:6px}.validate-button{margin-left:0}}@media(max-width:720px){.toolbar{padding:8px}.tool-cluster{padding-right:5px}.toolbar-main{gap:5px}.toolbar .tool-label{display:none}.toolbar button{padding:8px 9px}.tool-menu summary{padding:8px}.top-actions{overflow:visible}.top-actions button{flex:1 1 auto}.workspace{min-height:0}.menu-panel{position:fixed;left:12px!important;right:12px!important;top:auto;margin-top:6px;max-width:none;width:auto}.canvas-hint{white-space:normal;text-align:center;max-width:90%}}@media(max-width:430px){.brand{font-size:15px}.brand small{display:none}.local-indicator{font-size:11px}.toolbar-menus{gap:4px}.tool-menu summary{font-size:11px}}@media print{.tool-menu .menu-panel{display:none}}.workspace.hide-left{grid-template-columns:minmax(0,1fr) 295px}.workspace.hide-right{grid-template-columns:250px minmax(0,1fr)}.workspace.hide-left.hide-right{grid-template-columns:minmax(0,1fr)}.workspace.hide-left>.sidebar,.workspace.hide-right>.editor{display:none}.panel-switches{display:flex;gap:5px;margin-left:4px}.panel-switches button[aria-pressed=false]{background:#eee5f7;color:#674391}.arrange-options{min-width:245px;gap:3px}.arrange-options button{justify-content:flex-start;width:100%;background:transparent;border:0;text-align:left;padding:10px 9px}.arrange-options button:hover{background:#eee6f6}.arrange-options svg{flex-shrink:0;color:#7953a2}@media(max-width:1050px){.workspace.hide-left{grid-template-columns:minmax(0,1fr) 240px}.workspace.hide-right{grid-template-columns:200px minmax(0,1fr)}}@media(max-width:720px){.workspace.hide-left,.workspace.hide-right,.workspace.hide-left.hide-right{display:flex;flex-direction:column}.workspace.hide-left>.sidebar,.workspace.hide-right>.editor{display:none}.panel-switches{margin-left:0}.panel-switches .tool-label{display:none}}@media print{.panel-switches{display:none!important}}.selection-actions{display:flex;gap:6px}.selection-actions button{flex:1;border:1px solid #e2d8ec;background:#f8f5fb;padding:7px;border-radius:7px;font-size:12px}.arrange-options small{font-size:11px;line-height:1.5;color:#786b83}.person-node text{user-select:none;-webkit-user-select:none;pointer-events:none}.cloud-account{position:relative;margin-left:auto;flex-shrink:0}.cloud-trigger{color:#68448b}.cloud-dropdown{position:absolute;right:0;top:calc(100% + 10px);width:min(340px,90vw);z-index:80;display:flex;flex-direction:column;gap:8px;padding:14px;background:#fff;border:1px solid #e5dbee;box-shadow:0 10px 30px #39234826;border-radius:12px}.cloud-dropdown small{white-space:normal;overflow-wrap:anywhere;color:#776b83}.cloud-dropdown button{justify-content:flex-start;white-space:normal;text-align:left}.cloud-files{max-height:220px;overflow:auto;display:flex;flex-direction:column;gap:5px}@media(max-width:720px){.cloud-trigger{font-size:12px}.cloud-dropdown{right:0}}.mobile-only-tree,.mobile-mode-switch,.mobile-edit-overlay{display:none}@media(max-width:767px){.app{height:auto;min-height:100dvh}.mobile-only-tree{display:block}.workspace:not(.mobile-desktop){display:none!important}.toolbar.mobile-hidden{display:none!important}.mobile-mode-switch{display:block;padding:8px 12px;background:#f5effa}.mobile-mode-switch button{width:100%}.workspace.mobile-desktop{display:flex;flex-direction:column}.workspace.mobile-desktop .canvas-area{height:65dvh}.mobile-tree{padding:12px 14px 90px;background:#faf8fd;min-height:60dvh}.mobile-family-heading{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:12px;background:#fff;border-radius:14px;border:1px solid #e9dfef}.mobile-family-heading div{display:flex;flex-direction:column;min-width:0}.mobile-family-heading small,.mobile-person small,.mobile-child small{color:#8b7a97;font-size:11px}.mobile-family-heading strong{font-size:16px;overflow-wrap:anywhere}.mobile-family-heading button{font-size:12px;padding:8px}.mobile-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:13px 0}.mobile-tabs button{width:100%;padding:12px 6px;font-size:13px}.mobile-tabs button.active,.mobile-generation-filters button.active{background:#e9dcf5;color:#603585;border-color:#cbb3e2;font-weight:700}.mobile-section-title{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:700;color:#725388;margin:16px 3px 10px}.mobile-section-title small{font-weight:400}.mobile-parents,.mobile-focus-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.mobile-person{min-width:0;width:100%;white-space:normal;display:flex;flex-direction:column;gap:5px;text-align:center;padding:13px 7px;border-radius:14px}.mobile-person strong{font-size:14px;overflow-wrap:anywhere;line-height:1.5}.mobile-person.parent{background:#f3effa}.mobile-person.focus{background:#efe5f8;border:2px solid #b58bda;grid-column:span 1}.mobile-person.focus:only-child{grid-column:span 2}.mobile-person.spouse{background:#fff0f5;border-color:#e5bbce}.mobile-avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#e4e0f5;color:#6652a1;flex-shrink:0}.mobile-avatar.female{background:#f9dce9;color:#a44d78}.mobile-avatar.male{background:#deebfb;color:#487cae}.mobile-connector{height:35px;display:flex;justify-content:center}.mobile-connector span{width:2px;height:100%;background:#b998d1}.mobile-focus-actions{display:flex;gap:8px;margin-top:9px}.mobile-focus-actions button{flex:1;font-size:12px}.mobile-expand{width:100%;border:0;background:transparent;padding:0;justify-content:flex-start;gap:8px}.mobile-descendants,.mobile-siblings{display:flex;flex-direction:column;gap:8px}.mobile-child{width:100%;white-space:normal;display:flex;justify-content:flex-start;gap:11px;padding:11px 12px;text-align:left;border-radius:12px;min-height:65px}.mobile-child span:nth-child(2){display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.mobile-child strong{font-size:14px;overflow-wrap:anywhere}.mobile-muted{padding:12px;color:#93859c;font-size:13px}.mobile-search{display:flex;gap:8px;align-items:center;background:#fff;border:1px solid #e8ddee;padding:9px 12px;border-radius:12px}.mobile-search input{border:0;outline:0;width:100%;min-width:0}.mobile-generation-filters{display:flex;gap:7px;overflow-x:auto;padding:12px 0;scrollbar-width:thin}.mobile-generation-filters button{font-size:12px;padding:8px 11px}.mobile-count{font-size:12px;color:#8b7a97;margin:4px 0 9px}.mobile-empty{text-align:center;padding:36px 8px;color:#8b7a97}.mobile-edit-overlay{display:flex;position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#fff;flex-direction:column;overflow:auto}.mobile-edit-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#f2e9f8}.mobile-edit-overlay .editor{display:block!important;max-height:none;overflow:visible;border:0;flex:1}.topbar .top-actions{display:none}.cloud-account{max-width:55vw}.cloud-trigger{max-width:100%;overflow:hidden;text-overflow:ellipsis}.status{font-size:11px}}@media(min-width:768px){.mobile-only-tree,.mobile-mode-switch,.mobile-edit-overlay{display:none!important}}@media print{.mobile-only-tree,.mobile-mode-switch,.mobile-edit-overlay{display:none!important}.workspace{display:block!important}}.cloud-file-label{display:flex;flex-direction:column;align-items:flex-start;min-width:0;gap:2px;overflow-wrap:anywhere}.cloud-file-label strong{font-size:13px}.cloud-file-label small{font-size:11px;color:#8b7a97}
