@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2)format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2)format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(./bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2)format("woff2-variations");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:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(./instrument-sans-latin-ext-wght-normal-B5bTHO_g.woff2)format("woff2-variations");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:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(./instrument-sans-latin-wght-normal-BbzFLZTg.woff2)format("woff2-variations");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{--bg:#f6f8f6;--grille:#e2e7e1;--carte:#fff;--bord:#e4e8e2;--encre:#17211b;--encre-2:#6b7469;--encre-3:#9aa396;--accent:#17a673;--accent-fonce:#128a5e;--accent-pale:#e2f6ee;--danger:#d1483a;--ombre:0 1px 2px #17211b0d, 0 6px 20px #17211b14;--ombre-forte:0 2px 6px #17211b12, 0 16px 40px #17211b1f;--font-display:"Bricolage Grotesque Variable", "Bricolage Grotesque", system-ui, sans-serif;--font-ui:"Instrument Sans Variable", "Instrument Sans", system-ui, sans-serif}*{box-sizing:border-box;margin:0}html,body,#root{height:100%}body{font-family:var(--font-ui);color:var(--encre);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:14px}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}.app{flex-direction:column;height:100%;display:flex}.topbar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--bord);z-index:30;background:#ffffffbf;justify-content:space-between;align-items:center;gap:16px;padding:10px 18px;display:flex;position:relative}.brand{align-items:baseline;gap:9px;display:flex}.brand svg{align-self:center}.brand-name{font-family:var(--font-display);letter-spacing:-.01em;font-size:20px;font-weight:700}.brand-tagline{color:var(--encre-3);font-size:12.5px}.topbar-actions{align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--bord);background:var(--carte);white-space:nowrap;border-radius:999px;padding:8px 16px;font-weight:500;list-style:none;transition:border-color .15s,background .15s,transform .1s}.btn:hover{border-color:var(--encre-3)}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover{background:var(--accent-fonce);border-color:var(--accent-fonce)}.menu{position:relative}.menu summary{display:inline-block}.menu summary::-webkit-details-marker{display:none}.menu[open] summary{border-color:var(--encre-3)}.menu-list{z-index:20;background:var(--carte);border:1px solid var(--bord);min-width:290px;box-shadow:var(--ombre-forte);border-radius:14px;padding:6px;position:absolute;top:calc(100% + 8px);right:0}.menu-list button{text-align:left;border-radius:9px;flex-direction:column;gap:2px;width:100%;padding:10px 12px;font-weight:500;display:flex}.menu-list button span{color:var(--encre-2);font-size:12px;font-weight:400}.menu-list button:hover:not(:disabled){background:var(--bg)}.menu-list button:disabled{opacity:.45;cursor:default}.workspace{flex:1;min-height:0;display:flex;position:relative}.sidebar{border-right:1px solid var(--bord);background:var(--carte);flex-direction:column;flex-shrink:0;gap:8px;width:250px;padding:12px;display:flex}.search{font:inherit;border:1px solid var(--bord);background:var(--bg);color:var(--encre);border-radius:10px;padding:9px 12px}.search::placeholder{color:var(--encre-3)}.search:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.sidebar-count{text-transform:uppercase;letter-spacing:.06em;color:var(--encre-3);padding-left:4px;font-size:11.5px;font-weight:500}.person-list{flex:1;padding:0;list-style:none;overflow-y:auto}.person-list button{text-align:left;border-radius:10px;flex-direction:column;gap:1px;width:100%;padding:8px 10px;transition:background .1s;display:flex}.person-list button:hover{background:var(--bg)}.person-list button.active{background:var(--accent-pale)}.person-list button.active .person-name{color:var(--accent-fonce)}.person-name{font-weight:500}.person-dates{color:var(--encre-3);font-size:11.5px}.no-result{color:var(--encre-3);padding:10px}.canvas{flex:1;min-width:0;position:relative}.canvas svg{cursor:grab;touch-action:none;width:100%;height:100%;display:block}.canvas svg:active{cursor:grabbing}.person-card rect{transition:stroke .15s}.person-card:hover rect{stroke:var(--accent)}.canvas-legend{color:var(--encre-3);pointer-events:none;align-items:center;gap:6px;font-size:11.5px;display:flex;position:absolute;bottom:14px;left:14px}.canvas-legend span{border:1.5px solid var(--encre-3);width:10px;height:10px;margin-left:8px;display:inline-block}.canvas-legend span:first-child{margin-left:0}.legend-square{border-radius:3px}.legend-circle{border-radius:50%}.legend-diamond{border-radius:2px;transform:rotate(45deg)scale(.9)}.zoom-controls{background:var(--carte);border:1px solid var(--bord);box-shadow:var(--ombre);border-radius:12px;flex-direction:column;display:flex;position:absolute;bottom:16px;right:16px;overflow:hidden}.zoom-controls button{width:38px;height:36px;color:var(--encre-2);font-size:16px}.zoom-controls button:hover{background:var(--bg);color:var(--encre)}.zoom-controls button+button{border-top:1px solid var(--bord)}.empty-state{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;padding:32px;display:flex}.empty-icon{background:var(--accent-pale);border-radius:24px;place-items:center;width:76px;height:76px;margin-bottom:6px;display:grid}.empty-state h1{font-family:var(--font-display);letter-spacing:-.02em;font-size:34px;font-weight:700}.empty-state p{max-width:430px;color:var(--encre-2);line-height:1.55}.empty-actions{gap:10px;margin-top:8px;display:flex}.link{color:var(--accent-fonce);text-underline-offset:3px;font-size:13px;text-decoration:underline}.edit-panel{border-left:1px solid var(--bord);background:var(--carte);flex-direction:column;flex-shrink:0;width:310px;display:flex}.edit-panel>header{border-bottom:1px solid var(--bord);justify-content:space-between;align-items:center;gap:8px;padding:16px 18px 12px;display:flex}.edit-panel h2{font-family:var(--font-display);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-size:18px;font-weight:600;overflow:hidden}.edit-panel .close{color:var(--encre-3);border-radius:8px;padding:2px 7px;font-size:20px;line-height:1}.edit-panel .close:hover{color:var(--encre);background:var(--bg)}.panel-body{flex-direction:column;gap:10px;padding:14px 18px 22px;display:flex;overflow-y:auto}.panel-body h3{text-transform:uppercase;letter-spacing:.08em;color:var(--encre-3);margin-top:10px;font-size:11px;font-weight:600}.field{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.field>span{color:var(--encre-2);font-size:12px;font-weight:500}.field input,.field select,.panel-body textarea{font:inherit;border:1px solid var(--bord);color:var(--encre);background:#fff;border-radius:10px;width:100%;padding:8px 10px;transition:border-color .15s}.field input:hover,.field select:hover,.panel-body textarea:hover{border-color:var(--encre-3)}.field input:focus-visible,.field select:focus-visible,.panel-body textarea:focus-visible,.btn:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.panel-body textarea{resize:vertical}.field-row{flex-wrap:wrap;gap:8px;display:flex}.field-row .field{min-width:110px}.relation-actions{flex-direction:column;gap:6px;display:flex}.relation-actions button,.relation-add{border:1px solid var(--bord);background:var(--carte);text-align:left;border-radius:10px;padding:9px 12px;font-weight:500;transition:border-color .15s,background .15s}.relation-actions button:hover:not(:disabled),.relation-add:hover:not(:disabled){border-color:var(--accent);background:var(--accent-pale)}.relation-actions button:disabled{color:var(--encre-3);cursor:default;font-weight:400}.relation-add.subtle{color:var(--encre-2);border-color:#0000;padding:5px 12px;font-size:12.5px;font-weight:400}.relation-add.subtle:hover{border-color:var(--bord);color:var(--encre);background:0 0}.check-row{color:var(--encre-2);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.check-row input{accent-color:var(--accent);width:15px;height:15px}.family-block{border:1px solid var(--bord);background:color-mix(in srgb, var(--bg) 55%, var(--carte));border-radius:12px;flex-direction:column;gap:8px;padding:10px 12px;display:flex}.family-head{text-transform:uppercase;letter-spacing:.06em;color:var(--encre-2);justify-content:space-between;align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.family-sub{color:var(--encre-3);margin-top:2px;font-size:11.5px;font-weight:500}.field-row .field:has(.date-field){flex:1.7;min-width:215px}.date-field{gap:6px;display:flex}.date-field input,.date-field select{font:inherit;border:1px solid var(--bord);color:var(--encre);background:#fff;border-radius:10px;min-width:0;padding:8px}.date-field input:disabled,.date-field select:disabled{background:var(--bg);color:var(--encre-3)}.field .date-field .date-day{text-align:center;flex:0 0 44px;width:44px;padding:8px 4px}.field .date-field .date-month{flex:auto;width:auto}.field .date-field .date-year{text-align:center;flex:0 0 60px;width:60px;padding:8px 4px}.link-list{flex-direction:column;gap:4px;padding:0;list-style:none;display:flex}.link-row{align-items:center;gap:4px;display:flex}.link-person{border:1px solid var(--bord);background:var(--bg);text-align:left;border-radius:9px;flex-direction:column;flex:1;gap:1px;min-width:0;padding:7px 10px;display:flex}.link-person:hover{border-color:var(--accent)}.unlink{width:26px;height:26px;color:var(--encre-3);border-radius:8px;flex-shrink:0;font-size:16px;line-height:1}.unlink:hover{color:var(--danger);background:#d1483a14}.btn-danger{color:var(--danger);text-align:left;border:1px solid #0000;border-radius:10px;margin-top:10px;padding:9px 12px}.btn-danger:hover{border-color:var(--danger);background:#d1483a0f}.dot{vertical-align:1px;background:var(--encre-3);border-radius:50%;width:8px;height:8px;margin-right:7px;display:inline-block}.dot-connected{background:var(--accent)}.dot-connecting{background:#e0a63c}.modal-backdrop{z-index:50;background:#17211b59;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--carte);width:100%;max-width:460px;box-shadow:var(--ombre-forte);border-radius:18px;overflow:hidden}.modal>header{border-bottom:1px solid var(--bord);justify-content:space-between;align-items:center;padding:16px 20px 12px;display:flex}.modal h2{font-family:var(--font-display);letter-spacing:-.01em;font-size:19px;font-weight:600}.modal .close{color:var(--encre-3);border-radius:8px;padding:2px 7px;font-size:20px;line-height:1}.modal .close:hover{color:var(--encre);background:var(--bg)}.modal-body{flex-direction:column;gap:12px;padding:16px 20px 20px;display:flex}.modal-body .field input{font:inherit;border:1px solid var(--bord);color:var(--encre);background:#fff;border-radius:10px;width:100%;padding:8px 10px}.hint{color:var(--encre-2);font-size:12.5px;line-height:1.5}.hint code{background:var(--bg);border-radius:5px;padding:1px 5px;font-size:11.5px}.sync-status{background:var(--bg);border-radius:10px;padding:10px 12px;font-weight:500}.sync-status .peers{color:var(--encre-2);font-weight:400}.invite-row{gap:8px;display:flex}.invite-row input{min-width:0;color:var(--encre-2);flex:1;font-size:12px}.picker-list{border:1px solid var(--bord);border-radius:10px;max-height:40vh;padding:4px;overflow-y:auto}.card-add circle:first-of-type{transition:fill .12s}.card-add:hover circle:first-of-type{fill:var(--accent-pale)}.loading{color:var(--encre-3);flex:1;place-items:center;display:grid}@media (width<=900px){.sidebar,.brand-tagline{display:none}.edit-panel{z-index:10;box-shadow:var(--ombre-forte);max-width:88vw;position:absolute;top:0;bottom:0;right:0}}@media (width<=640px){.topbar{gap:8px;padding:8px 10px}.brand{gap:6px}.brand-name{font-size:17px}.topbar-actions{gap:5px}.btn{padding:7px 11px;font-size:13px}.menu-list{min-width:0;position:fixed;top:54px;left:10px;right:10px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
