[hidden]{display:none!important}
.family-page .page-hero{padding-bottom:28px}.family-hero p{max-width:880px}.family-auth{margin-bottom:16px;padding:17px 22px;display:flex;justify-content:space-between;align-items:center;gap:18px;border-width:4px}.family-auth>div:first-child{display:flex;flex-direction:column;gap:4px}.auth-kicker{font-size:9px;font-weight:900;letter-spacing:.16em;color:#7d334d}.family-auth strong{font-family:Cinzel,serif;font-size:18px}.family-auth #authCopy{color:#685c5d;font-size:11px;line-height:1.45}.auth-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}.auth-user{display:flex;align-items:center;gap:8px;padding:7px 10px;background:#e0d3b6;border:1px solid #c0aa80;font-size:10px;font-weight:900}.auth-user img{width:28px;height:28px;border-radius:50%}.auth-access{padding:6px 9px;border-radius:999px;font-size:9px;font-weight:900;background:#d8ccb2}.auth-access.editor{background:#0e5e68;color:#fff}.auth-loading{font-size:10px;color:#766865}.family-panel{padding:0;overflow:hidden}.family-toolbar{position:relative;z-index:2;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;border-bottom:1px solid #bba985;background:#e7dac0}.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.family-title{font-family:Cinzel,serif;font-weight:800;color:#2a2229;letter-spacing:.06em}.family-meta{font-size:10px;font-weight:800;color:#6e5a49;letter-spacing:.08em;text-transform:uppercase}.royal-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:999px;background:#7d334d;color:#fff8dc;font-size:9px;font-weight:900;letter-spacing:.05em}.family-tool{border:1px solid #9e8a65;background:#fffaf0;color:#241d27;min-height:36px;padding:0 11px;font-weight:900;cursor:pointer;border-radius:6px}.family-tool:hover{background:#f2e6cd}.family-search{min-height:36px;width:min(260px,70vw);padding:0 12px;border:1px solid #a9946e;background:#fffdf8;font:700 12px Inter,Arial,sans-serif}.region-filters{display:flex;gap:5px;flex-wrap:wrap}.region-filter{border:1px solid #a9946e;background:#fffaf0;padding:8px 9px;font-size:9px;font-weight:900;border-radius:6px;cursor:pointer;opacity:.55}.region-filter.active{opacity:1;color:#fff}.region-filter[data-region="chief"].active{background:#388ee0;border-color:#388ee0}.region-filter[data-region="count"].active{background:#8655d8;border-color:#8655d8}.region-filter[data-region="patrician"].active{background:#22b85f;border-color:#22b85f}.region-filter[data-region="na"].active{background:#74767d;border-color:#74767d}.family-stage-wrap{display:grid;grid-template-columns:minmax(0,1fr) 330px;min-height:730px;background:#171a31}.family-tree-viewport{position:relative;min-width:0;height:min(76vh,900px);min-height:730px;overflow:hidden;cursor:grab;touch-action:none;user-select:none;background:linear-gradient(rgba(9,14,31,.94),rgba(9,14,31,.96)),url('assets/tile.png') center/410px repeat}.family-tree-viewport.dragging{cursor:grabbing}.family-tree-stage{position:absolute;left:0;top:0;width:1800px;height:1000px;transform-origin:0 0;will-change:transform}.tree-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:120px 120px}.relationship-layer{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.family-node{--node-region:#74767d;position:absolute;width:176px;height:208px;transform:translate(-50%,-50%);border:4px solid var(--node-region);border-radius:15px;background:#211d2a;color:#f8f3e7;box-shadow:0 12px 28px rgba(0,0,0,.52);padding:8px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease;overflow:visible}.family-node:hover{transform:translate(-50%,-50%) scale(1.045);box-shadow:0 18px 35px rgba(0,0,0,.68)}.family-node.selected{box-shadow:0 0 0 5px rgba(223,191,120,.75),0 18px 40px rgba(0,0,0,.7)}.family-node.filtered{opacity:.08;pointer-events:none}.family-node.search-match{box-shadow:0 0 0 5px rgba(255,232,120,.85),0 18px 36px rgba(0,0,0,.62)}.family-node.current-royal:before{content:'♛';position:absolute;right:-13px;top:-18px;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#7d334d;border:3px solid #e1c36e;color:#fff4bd;font-size:21px;z-index:3}.portrait-frame{height:142px;overflow:hidden;border-radius:9px;background:#101521;border:1px solid rgba(255,255,255,.17);position:relative}.portrait-frame img{width:100%;height:205%;object-fit:cover;object-position:50% 0%;display:block}.portrait-placeholder{height:100%;display:grid;place-items:center;font-family:Cinzel,serif;font-size:50px;background:linear-gradient(160deg,#29283b,#151826);color:#d8ceb9}.entry-label{display:block;font-family:Cinzel,serif;font-size:11px;line-height:1.15;font-weight:800;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.region-label{display:block;font-size:8px;font-weight:900;letter-spacing:.09em;text-transform:uppercase;color:var(--node-region);margin-top:4px}.tree-hint{position:absolute;left:14px;bottom:14px;z-index:4;background:rgba(13,11,18,.86);border:1px solid rgba(255,255,255,.16);color:#eadbbf;padding:8px 10px;font-size:9px;font-weight:900;letter-spacing:.1em;pointer-events:none}.family-sidebar{position:relative;z-index:2;background:#efe4ca;color:#201923;border-left:6px solid #c8b58d;padding:24px;overflow:auto;max-height:min(76vh,900px)}.sidebar-kicker{font-size:9px;font-weight:900;letter-spacing:.18em;color:#7d334d;margin-bottom:7px}.family-sidebar h2{font-family:Cinzel,serif;font-size:25px;line-height:1.05;margin:0 0 7px}.selected-crown{display:inline-block;background:#7d334d;color:#fff1bc;border:1px solid #b58442;padding:6px 8px;font-size:8px;font-weight:900;letter-spacing:.1em;margin-bottom:9px}.selected-region{display:inline-block;padding:6px 9px;border-radius:999px;color:#fff;font-size:9px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;background:#74767d}.selected-region.chief{background:#388ee0}.selected-region.count{background:#8655d8}.selected-region.patrician{background:#22b85f}.selected-region.na{background:#74767d}.selected-portrait{height:235px;background:#181525;border:3px solid #c8b58d;margin:17px 0;overflow:hidden}.selected-portrait img{width:100%;height:200%;object-fit:cover;object-position:50% 0%;display:block}.selected-title{font-family:Cinzel,serif;font-weight:700;color:#463b42;margin:0 0 7px}.selected-notes{font-size:11px;color:#6c6266;line-height:1.55;white-space:pre-wrap}.relationship-summary{display:grid;gap:7px;margin:16px 0}.relationship-row{display:flex;justify-content:space-between;gap:10px;padding:8px 9px;background:#e1d5bd;border:1px solid #c4b188;font-size:10px}.relationship-row strong{font-family:Cinzel,serif}.relationship-row button{border:0;background:none;color:#0e5e68;font-weight:900;text-align:right;cursor:pointer}.editor-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}.editor-actions .btn:first-child{grid-column:1/-1}.family-help{margin-top:17px;padding:13px;background:#dfd2b6;border:1px solid #bca77e;color:#5e504c;font-size:10px;line-height:1.55;display:grid;gap:7px}.family-help strong{font-family:Cinzel,serif}.family-help span{display:flex;align-items:center;gap:8px}.help-line{display:inline-block;width:26px;height:4px;border-radius:4px;background:#efe7d7}.help-line.spouse{background:#ff3848}.help-line.sibling{background:#65a6d9;height:2px;border-top:2px dashed #65a6d9}.help-line.succession{background:#bd55ff;height:6px}.family-legend{display:flex;gap:7px;flex-wrap:wrap;margin-top:14px}.legend-chip{display:flex;align-items:center;gap:6px;background:#fffaf0;border:1px solid #c1ae87;padding:6px 8px;font-size:8px;font-weight:900}.legend-dot{width:10px;height:10px;border-radius:50%;background:#74767d}.legend-dot.chief{background:#388ee0}.legend-dot.count{background:#8655d8}.legend-dot.patrician{background:#22b85f}.legend-dot.na{background:#74767d}.relationship-parent{stroke:#eee5d3;stroke-width:5;fill:none;stroke-linecap:round;stroke-linejoin:round}.relationship-spouse{stroke:#ff3848;stroke-width:5;fill:none;stroke-linecap:round;stroke-linejoin:round}.relationship-sibling{stroke:#65a6d9;stroke-width:3;stroke-dasharray:12 10;fill:none;stroke-linecap:round}.relationship-succession-under{stroke:#130d1a;stroke-width:12;fill:none;stroke-linecap:round;stroke-linejoin:round;opacity:.65}.relationship-succession{stroke:#bd55ff;stroke-width:7;fill:none;stroke-linecap:round;stroke-linejoin:round}.modal-backdrop,.confirm-backdrop{position:fixed;inset:0;z-index:200;background:rgba(10,8,15,.78);backdrop-filter:blur(8px);display:grid;place-items:center;padding:20px}.modal-backdrop[hidden],.confirm-backdrop[hidden]{display:none}.noble-modal{width:min(760px,96vw);max-height:92vh;overflow:auto;padding:28px;border-width:5px}.noble-modal h2,.takeover-card h2{font-family:Cinzel,serif;font-size:28px;margin:4px 0 18px}.modal-close{position:absolute;right:17px;top:12px;border:0;background:none;font-size:28px;cursor:pointer;color:#6e5960;z-index:3}.noble-modal .field{margin-top:13px}.noble-modal .field small{display:block;color:#786e6f;font-size:9px;margin-top:5px}.portrait-preview{margin-top:12px;display:flex;align-items:center;gap:13px;color:#786762;font-size:9px;font-weight:900;letter-spacing:.08em}.portrait-preview>div{width:110px;height:110px;overflow:hidden;background:#1b1822;border:3px solid #c8b58d}.portrait-preview img{width:100%;height:200%;object-fit:cover;object-position:50% 0%;display:none}.modal-actions{display:flex;gap:9px;justify-content:flex-end;margin-top:20px}.takeover-card{width:min(520px,94vw);padding:30px;border-width:5px;color:#201923}.takeover-card p{line-height:1.65;color:#665b60}.family-toast{position:fixed;left:50%;bottom:25px;z-index:400;transform:translate(-50%,25px);opacity:0;background:#15111b;color:#fff7e6;border:1px solid #c8aa6b;padding:11px 16px;transition:.18s;pointer-events:none}.family-toast.show{opacity:1;transform:translate(-50%,0)}@media(max-width:1100px){.family-stage-wrap{grid-template-columns:1fr}.family-sidebar{border-left:0;border-top:6px solid #c8b58d;max-height:none}.family-tree-viewport{height:68vh;min-height:610px}}@media(max-width:720px){.family-auth{align-items:flex-start;flex-direction:column}.auth-actions{justify-content:flex-start}.family-tree-viewport{min-height:520px}.family-toolbar{padding:11px}.family-sidebar{padding:18px}.family-node{width:154px;height:190px}.portrait-frame{height:126px}.family-search{width:100%}.editor-actions{grid-template-columns:1fr}.editor-actions .btn:first-child{grid-column:auto}.form-grid{grid-template-columns:1fr}}

/* v14: contained upper-body portrait crop + open-edit testing mode */
.local-edit-banner{background:#efe4ca}.local-edit-banner .auth-access.editor{background:#0e5e68;color:#fff}.portrait-frame{display:block;width:100%;height:142px;overflow:hidden;position:relative}.portrait-frame img{position:absolute;left:0;top:0;width:100%;height:200%;max-width:100%;object-fit:contain;object-position:50% 0%;display:block}.selected-portrait{position:relative;overflow:hidden}.selected-portrait img{position:absolute;left:0;top:0;width:100%;height:200%;max-width:100%;object-fit:contain;object-position:50% 0%;display:block}.portrait-preview>div{position:relative;overflow:hidden}.portrait-preview img{position:absolute;left:0;top:0;width:100%;height:200%;max-width:100%;object-fit:contain;object-position:50% 0%;}
@media(max-width:720px){.portrait-frame{height:126px}}

/* v15 — royal banners and takeover creation */
.family-node{width:210px;height:248px;padding:8px 8px 10px}.portrait-frame{display:block;height:154px;overflow:hidden}.portrait-frame img{display:block;width:100%;height:205%;object-fit:cover;object-position:50% 0%}.entry-label{font-size:11px;margin-top:10px}.region-label{margin-top:5px}.family-node.current-royal:before{right:-13px;top:-18px}.family-node.historic-royal{box-shadow:0 0 0 2px rgba(218,183,105,.22),0 12px 28px rgba(0,0,0,.52)}

.royal-nameplate{position:relative;display:flex;align-items:center;justify-content:center;width:194px;height:38px;margin:7px auto 0;padding:0 18px;color:#fff0c4;font-family:Cinzel,serif;font-size:9px;font-weight:800;line-height:1.05;text-align:center;text-shadow:0 2px 3px rgba(0,0,0,.75);isolation:isolate}.royal-nameplate::before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#922b4a 0%,#681b38 54%,#421123 100%);-webkit-mask:url('assets/header_backerCentral.png') center/100% 100% no-repeat;mask:url('assets/header_backerCentral.png') center/100% 100% no-repeat;filter:drop-shadow(0 2px 1px rgba(227,190,104,.55)) drop-shadow(0 5px 6px rgba(0,0,0,.48))}.royal-nameplate::after{content:'';position:absolute;inset:3px 12px;z-index:-1;border-top:1px solid rgba(247,215,139,.48);border-bottom:1px solid rgba(75,16,32,.5);pointer-events:none}.royal-nameplate-text{position:relative;z-index:1;display:block;max-width:162px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.family-node .royal-nameplate+.region-label{margin-top:2px;color:#d9bf84}

.selected-royal-banner{position:relative;min-height:58px;margin:-4px 0 16px;display:flex;align-items:center;justify-content:center;padding:0 34px;text-align:center;color:#fff0c4;font-family:Cinzel,serif;font-size:14px;font-weight:800;line-height:1.08;text-shadow:0 2px 3px rgba(0,0,0,.7);isolation:isolate}.selected-royal-banner[hidden]{display:none}.selected-royal-banner::before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#9d3150,#681b38 58%,#431023);-webkit-mask:url('assets/header_backerCentral.png') center/100% 100% no-repeat;mask:url('assets/header_backerCentral.png') center/100% 100% no-repeat;filter:drop-shadow(0 2px 1px rgba(225,188,101,.65)) drop-shadow(0 6px 7px rgba(0,0,0,.28))}.selected-royal-banner span{max-width:245px}

.royal-takeover-card{width:min(720px,96vw);max-height:92vh;overflow:auto}.takeover-mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:18px 0}.takeover-mode{border:1px solid #aa946e;background:#fff8e9;color:#33252b;padding:11px 12px;border-radius:7px;font:800 10px Cinzel,serif;letter-spacing:.04em;cursor:pointer}.takeover-mode.active{background:#7d334d;color:#fff2c7;border-color:#7d334d;box-shadow:inset 0 0 0 2px rgba(226,194,111,.32)}.takeover-mode:disabled{opacity:.42;cursor:not-allowed}.takeover-panel{padding:15px;background:#e7dac0;border:1px solid #bca77e}.takeover-panel[hidden]{display:none}.takeover-selected{display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:center;margin-bottom:12px;padding:10px;background:#f7efdd;border:1px solid #c6b48f}.takeover-selected img{width:52px;height:52px;object-fit:cover;object-position:50% 12%;border:2px solid #ad976e;background:#1c1824}.takeover-selected strong{font-family:Cinzel,serif;display:block}.takeover-selected span{font-size:10px;color:#6f6060}.takeover-preview{margin-bottom:4px}.takeover-card .field{margin-top:12px}.takeover-card .field small{display:block;color:#786e6f;font-size:9px;margin-top:5px}

@media(max-width:720px){.family-node{width:184px;height:230px}.portrait-frame{height:140px}.royal-nameplate{width:168px;height:34px;font-size:8px}.takeover-mode-switch{grid-template-columns:1fr}.selected-royal-banner{font-size:12px}}

/* v16 — clearer names, reign/life data, personal-family view and separated takeovers */
.family-node{width:230px;height:300px;padding:10px 10px 9px;border-width:4px}
.portrait-frame{height:168px;border-radius:10px}
.portrait-frame img{width:100%;height:205%;object-fit:contain;object-position:50% 0%;background:#111523}
.entry-label{display:block;margin-top:9px;padding:0 4px;font-family:Cinzel,serif;font-size:15px;line-height:1.08;font-weight:800;white-space:normal;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:32px;text-align:center;color:#fffaf0}
.region-label{margin-top:4px;font-size:10px;letter-spacing:.1em;text-align:center}
.node-dates{display:block;margin-top:3px;font-size:8px;font-weight:700;color:#cfc4b1;text-align:center;white-space:nowrap}
.personal-cue{position:absolute;left:10px;right:10px;bottom:5px;height:18px;display:flex;align-items:center;justify-content:center;border-top:1px solid rgba(255,255,255,.1);font-size:8px;font-weight:900;letter-spacing:.12em;color:#d9c89e;opacity:.72}
.family-node:hover .personal-cue{opacity:1;color:#fff0bd}
.family-node.current-royal:before{right:-14px;top:-18px;width:40px;height:40px}
.family-node.historic-royal{box-shadow:0 0 0 2px rgba(218,183,105,.28),0 12px 28px rgba(0,0,0,.52)}
.royal-title-plate{display:block;margin:4px 7px 0;padding:5px 7px;border-radius:5px;border:1px solid #c9a65b;background:linear-gradient(180deg,#5e2941,#341a2b);color:#ffe9a9;font-family:Cinzel,serif;font-size:11px;line-height:1.08;font-weight:800;text-align:center;white-space:normal;overflow:hidden;max-height:31px;box-shadow:inset 0 1px rgba(255,255,255,.08)}
.family-node .royal-title-plate+.region-label{margin-top:3px;color:#e2c37f}

.family-sidebar h2{font-size:30px;line-height:1.05}
.selected-title{font-size:15px}
.selected-notes{font-size:13px;line-height:1.6}
.relationship-row{font-size:12px;padding:10px 10px}
.relationship-row button{font-size:12px}
.selected-royal-banner{min-height:auto;margin:10px 0 14px;padding:10px 12px;border:2px solid #b99143;border-radius:7px;background:linear-gradient(180deg,#5b2a41,#38202f);color:#ffe6a0;font-family:Cinzel,serif;font-size:16px;line-height:1.18;font-weight:800;text-shadow:none;box-shadow:inset 0 1px rgba(255,255,255,.08),0 5px 12px rgba(0,0,0,.13)}
.selected-royal-banner::before,.selected-royal-banner::after{display:none!important}
.selected-royal-banner span{max-width:none}
.life-summary{display:grid;gap:7px;margin:14px 0;padding:11px;background:#e1d5bd;border:1px solid #c4b188}
.life-summary>div{display:grid;grid-template-columns:70px 1fr;gap:10px;align-items:start;font-size:11px;line-height:1.4}
.life-summary strong{font-family:Cinzel,serif;font-size:10px;color:#4e3f42}
.life-summary span{color:#62565b;font-weight:700}
.family-view-actions{display:grid;grid-template-columns:1fr;gap:7px;margin:12px 0 6px}
.personal-tree-btn{background:#0e5e68;color:#fff}
.personal-tree-btn:disabled{opacity:.55;cursor:default}
.tree-view-chip{display:inline-flex;align-items:center;min-height:31px;padding:0 10px;border:1px solid #b69e72;background:#f8eed9;color:#5e4c43;font-size:9px;font-weight:900;letter-spacing:.09em;border-radius:999px}
.back-dynasty{background:#7d334d;color:#fff8dc;border-color:#7d334d}
.back-dynasty[hidden],#sidebarBackToDynasty[hidden]{display:none}
.relationship-succession-under{stroke-width:13;opacity:.75}
.relationship-succession{stroke-width:7.5}
.date-grid{margin-top:2px}

@media(max-width:720px){
  .family-node{width:205px;height:282px}
  .portrait-frame{height:154px}
  .entry-label{font-size:14px;min-height:30px}
  .royal-title-plate{font-size:10px}
  .family-sidebar h2{font-size:26px}
}

/* v16 spacing safety */
.family-node{width:240px;height:330px}.portrait-frame{height:176px}.personal-cue{bottom:6px}.entry-label{font-size:16px;min-height:35px}.royal-title-plate{font-size:12px;max-height:36px}.region-label{font-size:10px}.node-dates{font-size:9px}
@media(max-width:720px){.family-node{width:215px;height:305px}.portrait-frame{height:160px}.entry-label{font-size:15px}}

/* v17 — historical Ages, relationship maintenance, existing-noble linking */
.age-chip{display:inline-flex;align-items:center;min-height:31px;padding:0 11px;border:1px solid #a98242;background:linear-gradient(180deg,#593047,#342333);color:#ffe4a3;border-radius:999px;font:800 9px Cinzel,serif;letter-spacing:.075em;white-space:nowrap;box-shadow:inset 0 1px rgba(255,255,255,.08)}
.age-tool{border-color:#a98242!important;background:#5a3047!important;color:#ffe9af!important}.age-tool:hover{background:#703b59!important}

.history-rail{position:absolute;left:20px;top:0;width:250px;z-index:2;pointer-events:none;border-left:3px solid rgba(215,188,127,.38)}
.history-current-year{position:absolute;top:20px;left:12px;width:208px;padding:10px 12px;border:2px solid #d2b46c;background:#3f2637;color:#ffe9ae;box-shadow:0 7px 15px rgba(0,0,0,.24)}
.history-current-year strong{display:block;font:800 17px Cinzel,serif}.history-current-year span{display:block;margin-top:3px;font-size:9px;font-weight:800;letter-spacing:.08em;color:#ddc995;text-transform:uppercase}
.age-era{position:absolute;left:12px;width:208px;padding:11px 12px;background:rgba(20,18,30,.93);border:1px solid rgba(211,183,111,.48);border-left:5px solid #795063;color:#f4ead6;box-shadow:0 7px 17px rgba(0,0,0,.24)}
.age-era.current{border-left-color:#d6b66c;background:linear-gradient(180deg,rgba(88,48,69,.96),rgba(39,28,41,.96))}
.age-era-label{display:block;font:800 13px Cinzel,serif;line-height:1.15}.age-era-range{display:block;margin-top:5px;font-size:10px;color:#d9cbb1;font-weight:700}.age-era-status{display:inline-block;margin-top:7px;padding:3px 6px;border-radius:3px;background:#8a6a35;color:#fff0bf;font-size:8px;font-weight:900;letter-spacing:.1em}.age-era-status.ended{background:#4c4650;color:#d8d1cb}
.age-ending{position:absolute;left:0;width:236px;height:36px;border-top:4px double #c7a85f;color:#d7c39a;padding:5px 8px 0 18px;display:flex;justify-content:space-between;gap:8px;font-size:8px;font-weight:900;letter-spacing:.09em}.age-ending strong{font-family:Cinzel,serif;color:#ffdda0;font-size:10px}

.link-existing-toggle{display:flex;align-items:flex-start;gap:9px;margin:14px 0;padding:11px 12px;background:#e9dcc2;border:1px solid #b8a47d;color:#4c4042;font-size:11px;font-weight:800;line-height:1.4;cursor:pointer}.link-existing-toggle input{margin-top:2px;accent-color:#7d334d}.existing-relative-field{padding:12px;background:#f3ead8;border:1px solid #c3ae84;margin-bottom:12px}.existing-relative-field[hidden],#newNobleFields[hidden]{display:none!important}
.character-creator-option{margin-top:14px;padding:12px;background:#e1d6bf;border:1px dashed #ad966f}.character-creator-option .btn{width:100%;opacity:1;cursor:pointer}.character-creator-option .btn:hover{filter:brightness(1.03)}.character-creator-option .btn:disabled{opacity:.52;cursor:not-allowed}.character-creator-option small{display:block;margin-top:7px;color:#6d6060;font-size:9px;line-height:1.45}

.editor-actions .btn.danger,.btn.danger{background:#7b2630;color:#fff;border-color:#7b2630}.editor-actions .btn.danger:hover,.btn.danger:hover{background:#952f3b}.editor-actions .btn.danger:disabled{opacity:.4;cursor:not-allowed}
.relationship-row>span{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.relationship-item{display:inline-flex;align-items:center;gap:3px;padding:2px 3px;border-radius:6px;background:rgba(255,255,255,.28)}.remove-rel{display:inline-grid!important;place-items:center!important;width:21px!important;height:21px!important;min-width:21px!important;padding:0!important;border-radius:50%!important;background:#7d2633!important;color:#fff!important;border:0!important;font-size:14px!important;line-height:1!important;cursor:pointer}.remove-rel:hover{background:#a12e40!important}.derived-rel{font-size:7px;color:#8d8177;font-weight:800;text-transform:uppercase;letter-spacing:.05em}

.ages-modal{width:min(720px,96vw);max-height:90vh;overflow:auto}.ages-intro{color:#675b5d;font-size:12px;line-height:1.55}.current-year-editor{display:grid;grid-template-columns:1fr auto;align-items:end;gap:10px;padding:13px;background:#e8dcc3;border:1px solid #c2ad83;margin:15px 0}.current-year-editor .field{margin:0}.age-list{display:grid;gap:8px;margin:15px 0}.age-list-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 13px;border:1px solid #c2ae89;background:#f5ecda}.age-list-row.current{border:2px solid #9b7940;background:#e8d9bb}.age-list-row strong{display:block;font:800 13px Cinzel,serif;color:#35282c}.age-list-row span{display:block;margin-top:4px;font-size:10px;color:#6f6260}.age-current-badge{padding:5px 8px!important;margin:0!important;background:#6f4a36;color:#ffe8af!important;border-radius:4px;font-weight:900!important}.age-delete{border:1px solid #9a5c5f;background:#fff3ee;color:#7c2932;padding:7px 9px;font-size:9px;font-weight:900;cursor:pointer}.start-age-box{margin-top:16px;padding:15px;background:#e1d5bd;border:1px solid #bca77e}.start-age-box h3{margin:0 0 8px;font:800 15px Cinzel,serif;color:#4c373c}

@media(max-width:900px){.history-rail{width:190px}.history-current-year,.age-era{width:160px}.age-ending{width:178px}.history-current-year strong{font-size:14px}.age-era-label{font-size:11px}}
@media(max-width:720px){.history-rail{display:none}.age-chip{font-size:8px}.current-year-editor{grid-template-columns:1fr}.editor-actions .btn.danger{grid-column:auto}}

/* v18 — high-resolution/readability pass + clearer half-sibling family layout */
.family-page{max-width:1880px!important;padding-left:24px!important;padding-right:24px!important}
.family-page .page-hero{max-width:1180px}.family-hero p{max-width:1080px;font-size:17px;line-height:1.65}
.family-auth{padding:20px 26px}.auth-kicker{font-size:11px}.family-auth strong{font-size:22px}.family-auth #authCopy{font-size:14px;line-height:1.55}.auth-access{font-size:11px;padding:8px 12px}
.family-toolbar{padding:18px 20px;gap:16px}.family-title{font-size:19px}.family-meta{font-size:12px}.royal-chip,.age-chip,.tree-view-chip{font-size:11px;min-height:38px;padding-left:13px;padding-right:13px}.family-tool{min-height:42px;padding:0 14px;font-size:13px}.family-search{min-height:42px;width:min(320px,72vw);font-size:14px}.region-filter{padding:10px 12px;font-size:11px}
.family-stage-wrap{grid-template-columns:minmax(0,1fr) 480px;min-height:860px}
.family-tree-viewport{height:min(84vh,1080px);min-height:860px;background-size:480px}
.family-tree-stage{will-change:auto}
.tree-grid{background-size:150px 150px}

.family-node{width:300px;height:400px;padding:14px 14px 12px;border-width:5px;border-radius:18px;box-shadow:0 16px 34px rgba(0,0,0,.5)}
.family-node:hover{transform:translate(-50%,-50%) scale(1.025)}
.family-node.selected{box-shadow:0 0 0 6px rgba(223,191,120,.78),0 20px 44px rgba(0,0,0,.68)}
.family-node.current-royal:before{width:48px;height:48px;right:-17px;top:-21px;font-size:25px;border-width:4px}
.portrait-frame{height:222px;border-radius:12px;border-width:2px}.portrait-frame img{height:205%;image-rendering:auto}.portrait-placeholder{font-size:68px}
.entry-label{margin-top:12px;font-size:21px;line-height:1.08;min-height:47px;padding:0 7px}
.royal-title-plate{margin:5px 10px 0;padding:7px 9px;font-size:14px;line-height:1.12;max-height:45px;border-width:2px}
.region-label{font-size:12px;margin-top:6px}.node-dates{font-size:11px;margin-top:5px}.personal-cue{left:14px;right:14px;bottom:7px;height:24px;font-size:10px}
.tree-hint{font-size:11px;padding:10px 13px}

.family-sidebar{padding:32px 30px;max-height:min(84vh,1080px);border-left-width:7px}
.sidebar-kicker{font-size:12px;margin-bottom:9px}.family-sidebar h2{font-size:39px;line-height:1.05;margin-bottom:10px}
.selected-crown{font-size:10px;padding:8px 10px}.selected-region{font-size:11px;padding:8px 11px}
.selected-portrait{height:330px;margin:20px 0;border-width:4px}.selected-portrait img{height:200%;image-rendering:auto}
.selected-royal-banner{font-size:20px;padding:13px 15px;margin:12px 0 18px}
.selected-title{font-size:20px;line-height:1.3;margin-bottom:10px}.selected-notes{font-size:16px;line-height:1.65}
.life-summary{gap:10px;margin:18px 0;padding:15px}.life-summary>div{grid-template-columns:98px 1fr;gap:12px;font-size:14px;line-height:1.5}.life-summary strong{font-size:13px}.life-summary span{font-size:14px}
.family-view-actions{gap:10px;margin:16px 0 10px}.family-view-actions .btn{font-size:14px;padding:14px 16px}
.relationship-summary{gap:10px;margin:20px 0}.relationship-row{display:grid;grid-template-columns:92px 1fr;align-items:start;font-size:15px;padding:13px 14px;gap:12px}.relationship-row strong{font-size:14px}.relationship-row button{font-size:15px;line-height:1.3}.relationship-row>span{gap:8px}.relationship-item{gap:5px;padding:4px 6px}.derived-rel{font-size:9px}.remove-rel{width:25px!important;height:25px!important;min-width:25px!important;font-size:16px!important}
.editor-actions{gap:10px;margin-top:20px}.editor-actions .btn{font-size:14px;padding:14px 16px}.family-help{font-size:13px;padding:16px;gap:9px;line-height:1.6}.legend-chip{font-size:11px;padding:8px 10px}.legend-dot{width:13px;height:13px}

.history-rail{left:24px;width:300px;border-left-width:4px}.history-current-year,.age-era{left:16px;width:248px;padding:13px 15px}.history-current-year strong{font-size:21px}.history-current-year span{font-size:11px}.age-era-label{font-size:16px}.age-era-range{font-size:12px}.age-era-status{font-size:10px;padding:4px 8px}.age-ending{width:278px;height:44px;padding-top:7px;font-size:10px}.age-ending strong{font-size:12px}

.relationship-parent{stroke-width:6}.relationship-spouse{stroke-width:6}.relationship-sibling{stroke-width:4;stroke-dasharray:14 11}.relationship-succession-under{stroke-width:16}.relationship-succession{stroke-width:9}

.noble-modal{width:min(900px,96vw);padding:34px}.noble-modal h2,.takeover-card h2{font-size:34px}.noble-modal .field label,.takeover-card .field label{font-size:12px}.noble-modal .field input,.noble-modal .field select,.noble-modal .field textarea,.takeover-card .field input,.takeover-card .field select,.takeover-card .field textarea{font-size:15px;padding:13px 14px}.noble-modal .field small,.takeover-card .field small{font-size:11px}.portrait-preview{font-size:11px}.portrait-preview>div{width:150px;height:150px}.modal-actions .btn{font-size:14px;padding:14px 18px}

@media(max-width:1250px){.family-stage-wrap{grid-template-columns:minmax(0,1fr) 410px}.family-sidebar{padding:26px 22px}.family-sidebar h2{font-size:34px}.selected-portrait{height:290px}}
@media(max-width:950px){.family-stage-wrap{grid-template-columns:1fr}.family-sidebar{max-height:none;border-left:0;border-top:7px solid #c8b58d}.family-tree-viewport{min-height:720px;height:72vh}.family-page{padding-left:14px!important;padding-right:14px!important}}
@media(max-width:720px){.family-node{width:270px;height:375px}.portrait-frame{height:205px}.entry-label{font-size:19px}.family-sidebar h2{font-size:31px}.selected-notes{font-size:15px}.relationship-row{font-size:14px;grid-template-columns:82px 1fr}}

/* v19 — age theming, regional silhouettes and clearer succession routing */
.family-tree-viewport{background:#090f20!important;background-image:none!important}
.family-tree-stage{isolation:isolate}
.age-backdrop-layer{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;background:#0a1020}
.age-backdrop-band{position:absolute;left:0;width:100%;overflow:hidden;border-top:3px solid rgba(222,191,114,.48);border-bottom:3px solid rgba(12,8,21,.72);background-position:center top;background-repeat:repeat;background-size:500px 500px}
.age-backdrop-band:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,10,24,.72),rgba(7,10,24,.43) 30%,rgba(7,10,24,.40) 72%,rgba(7,10,24,.72));pointer-events:none}
.age-backdrop-band.current:after{background:linear-gradient(90deg,rgba(7,10,24,.66),rgba(37,13,31,.34) 32%,rgba(37,13,31,.30) 72%,rgba(7,10,24,.66))}
.age-start-banner{position:absolute;left:50%;top:74px;transform:translateX(-50%);z-index:2;width:min(720px,62%);min-width:520px;padding:15px 38px 17px;text-align:center;color:#fff4c5;background:linear-gradient(180deg,rgba(111,42,65,.98),rgba(72,26,45,.98));border:3px solid #d4b66e;box-shadow:0 12px 28px rgba(0,0,0,.45),inset 0 0 0 2px rgba(255,239,185,.12);clip-path:polygon(0 18%,6% 18%,9% 0,91% 0,94% 18%,100% 18%,96% 50%,100% 82%,94% 82%,91% 100%,9% 100%,6% 82%,0 82%,4% 50%)}
.age-start-banner small{display:block;font:900 10px Inter,sans-serif;letter-spacing:.22em;color:#e0c982;text-transform:uppercase}.age-start-banner strong{display:block;margin-top:4px;font:800 28px Cinzel,serif;letter-spacing:.06em;text-shadow:0 2px 4px #1b0912}.age-start-banner span{display:block;margin-top:4px;font:800 12px Inter,sans-serif;letter-spacing:.12em;color:#f0dca8;text-transform:uppercase}
.tree-grid{z-index:1}.history-rail{z-index:5}.relationship-layer{z-index:3}#familyNodes{position:absolute;inset:0;z-index:4;pointer-events:none}#familyNodes .family-node{pointer-events:auto}

.portrait-frame{background:linear-gradient(160deg,color-mix(in srgb,var(--node-region) 34%,#101521),#101521 72%)}
.portrait-frame img.silhouette{height:190%!important;object-fit:contain!important;object-position:50% 0!important;filter:drop-shadow(0 8px 7px rgba(0,0,0,.32));opacity:.96}
.selected-portrait{background:linear-gradient(160deg,#344052,#181525)}
.selected-portrait img.silhouette{height:185%!important;object-fit:contain!important;object-position:50% 0!important;filter:drop-shadow(0 12px 9px rgba(0,0,0,.3));opacity:.96}
.takeover-selected img.silhouette{object-fit:contain!important;object-position:center top!important;background:#1a1d2a}
.entry-label{white-space:normal!important;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}
.optional-label{font-size:.78em;font-weight:700;color:#8a7b74;text-transform:uppercase;letter-spacing:.06em}

.age-edit-help{font-size:11px;line-height:1.5;color:#6d6160;background:#eee3ce;border:1px solid #c7b28a;padding:10px 12px}
.age-list-row{align-items:flex-start!important}.age-list-row .age-main{min-width:0;flex:1}.age-list-row .age-controls{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.age-edit{border:1px solid #816c48;background:#fff7e9;color:#48372f;padding:7px 10px;font-size:9px;font-weight:900;cursor:pointer}.age-editor{grid-column:1/-1;width:100%;margin-top:10px;padding:12px;background:#e9dcc4;border:1px solid #baa57e}.age-editor .form-grid{margin-top:8px}.age-editor-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}.age-tile-preview{width:74px;height:52px;border:2px solid #7e6a4d;background-size:110px 110px;background-repeat:repeat;box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}
.age-theme-grid{align-items:end}.age-theme-grid input[type=file]{font-size:12px}
.history-current-year{border-left-color:#e3c26b!important}.history-current-year span:after{content:' · GAME DATE';color:#f1d184;font-weight:900}
.age-era{backdrop-filter:blur(4px)}.age-ending{background:rgba(12,10,22,.82)}
.relationship-succession-under,.relationship-succession{pointer-events:none}

@media(max-width:1100px){.age-start-banner{min-width:420px;width:68%;padding-left:24px;padding-right:24px}.age-start-banner strong{font-size:23px}}
@media(max-width:720px){.age-start-banner{display:none}.age-backdrop-band{background-size:360px 360px}}

/* v20 — current-Age background + dedicated succession tree */
.age-backdrop-current{
  left:0!important;
  width:100%!important;
  background-position:center top!important;
  background-repeat:repeat!important;
  background-size:500px 500px!important;
  border-top:0!important;
  border-bottom:0!important;
}
.age-backdrop-current:after{
  background:linear-gradient(90deg,rgba(7,10,24,.67),rgba(23,15,34,.33) 28%,rgba(23,15,34,.29) 74%,rgba(7,10,24,.67))!important;
}
.current-age-banner{top:76px!important;position:absolute!important;transform:translateX(-50%)}
.age-ending.compact{height:38px;padding-top:5px;width:278px}
.succession-tree-tool{border-color:#b451ee!important;color:#f2dfff!important;background:rgba(92,25,128,.24)!important}
.succession-tree-tool:hover,.succession-tree-tool.active{background:#782baa!important;color:#fff!important;border-color:#d76cff!important}
.succession-tree-btn{background:linear-gradient(180deg,#8240ad,#582a7c)!important;border-color:#b85fe8!important;color:#fff!important}
.succession-tree-btn:hover{filter:brightness(1.12)}
.family-view-actions{grid-template-columns:1fr!important}
.tree-view-chip{white-space:nowrap}
.relationship-succession-under{stroke:#170a21!important;stroke-width:18!important;opacity:.92}
.relationship-succession{stroke:#c34fff!important;stroke-width:9!important;filter:drop-shadow(0 0 5px rgba(195,79,255,.28))}

/* v21 — simplify the tree while family/succession layout is being refined */
.family-tree-viewport{
  background:
    linear-gradient(rgba(9,14,31,.90),rgba(9,14,31,.94)),
    url('assets/tile.png') center/480px repeat!important;
}
.family-tree-stage{background:transparent!important}
.age-backdrop-layer,.history-rail{display:none!important}
.personal-cue{display:none!important}
.game-year-chip{
  border-color:#8c7a5d!important;
  background:#293249!important;
  color:#f2dfb2!important;
  box-shadow:inset 0 1px rgba(255,255,255,.06)!important;
}
.game-year-tool{
  border-color:#8c7a5d!important;
  background:#fffaf0!important;
  color:#2d2530!important;
}
.game-year-tool:hover{background:#f1e4cb!important}
.game-year-modal{width:min(620px,96vw)!important}
.relationship-succession-under{stroke:#130d1a!important;stroke-width:18!important;opacity:.95!important}
.relationship-succession{stroke:#bd55ff!important;stroke-width:9!important;filter:drop-shadow(0 0 4px rgba(189,85,255,.28))}

/* v31 — performance and large-dynasty rendering */
.family-tree-stage{will-change:transform;transform-origin:0 0}
#relationshipLayer{pointer-events:none}
.family-node img{backface-visibility:hidden}

/* v32 — centred monarch / horizontal generation layout */
.generation-guide-line{stroke:rgba(233,220,190,.16);stroke-width:2;stroke-dasharray:16 16;pointer-events:none}
.generation-guide-label{fill:rgba(233,220,190,.58);font:900 13px Inter,Arial,sans-serif;letter-spacing:.14em;pointer-events:none}


/* v33 — classic straight-line family branches */
.relationship-parent,.relationship-spouse,.relationship-sibling,.relationship-succession,.relationship-succession-under{shape-rendering:geometricPrecision}
.relationship-parent{stroke-linecap:square;stroke-linejoin:miter}


/* v34 — clarity-first pedigree spacing and consistent connector ports */
.relationship-parent,.relationship-spouse,.relationship-sibling,.relationship-succession,.relationship-succession-under{
  stroke-linecap:square!important;
  stroke-linejoin:miter!important;
}
.relationship-parent{stroke-width:6!important}
.relationship-spouse{stroke-width:6!important}
.relationship-sibling{stroke-width:4!important}


/* v35 — pedigree-first layout + local succession bridge */
.relationship-parent,.relationship-spouse,.relationship-sibling,.relationship-succession,.relationship-succession-under{
  stroke-linecap:square!important;
  stroke-linejoin:miter!important;
}
.relationship-parent{stroke-width:6!important}
.relationship-spouse{stroke-width:6!important}
/* The dark under-stroke creates an unmistakable bridge wherever chronology must
   cross a white pedigree rail; the two relationship types never visually merge. */
.relationship-succession-under{stroke:#090f20!important;stroke-width:17!important;opacity:1!important}
.relationship-succession{stroke:#bd55ff!important;stroke-width:7!important;filter:drop-shadow(0 0 3px rgba(189,85,255,.24))}


/* v37 — former-spouse relationship line */
.relationship-ex-spouse{
  stroke:#ff3848!important;
  stroke-width:6!important;
  fill:none!important;
  stroke-linecap:square!important;
  stroke-linejoin:miter!important;
  pointer-events:none;
  shape-rendering:geometricPrecision;
}
.relationship-ex-spouse-x{
  fill:#fff4ee;
  stroke:#130d1a;
  stroke-width:7px;
  paint-order:stroke fill;
  font-family:Arial,sans-serif;
  font-size:27px;
  font-weight:900;
  pointer-events:none;
  user-select:none;
}
.help-line.ex-spouse{position:relative;background:#ff3848}

/* v38 — standard pedigree / family-unit layout */
.help-line.step-parent{
  height:0;
  background:transparent;
  border-top:3px dotted #9a7b45;
  border-radius:0;
}
/* Biological pedigree rails are deliberately orthogonal and visually dominant. */
.relationship-parent{
  stroke-linecap:square!important;
  stroke-linejoin:miter!important;
  shape-rendering:geometricPrecision;
}
/* Marriage and former-marriage lines always leave/enter the side-centre ports. */
.relationship-spouse,.relationship-ex-spouse{
  stroke-linecap:square!important;
  stroke-linejoin:miter!important;
  shape-rendering:geometricPrecision;
}
/* Succession is chronology, not genealogy: keep the purple chronology visually separate. */
.relationship-succession-under{stroke:#090f20!important;stroke-width:17!important;opacity:1!important}
.relationship-succession{stroke:#bd55ff!important;stroke-width:7!important;stroke-linecap:square!important;stroke-linejoin:miter!important}
.relationship-item .convert-step-rel{
  border:1px solid #9a7b45;
  background:#efe2bd;
  color:#5c4726;
  border-radius:4px;
  padding:2px 5px;
  font-size:7px;
  font-weight:900;
  letter-spacing:.05em;
  cursor:pointer;
}
.relationship-item .convert-step-rel:hover{background:#e1ce9b}


/* v39 — manual portrait move mode */
.move-mode-tool.active{
  background:#0e5e68!important;
  border-color:#42c5d1!important;
  color:#fff!important;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.10),0 0 0 2px rgba(66,197,209,.18);
}
.reset-moves-tool{border-color:#9b604d!important;color:#6e2e24!important;background:#fff3e8!important}
.reset-moves-tool:hover{background:#f4d9c4!important}
.family-tree-viewport.move-mode{cursor:grab;box-shadow:inset 0 0 0 3px rgba(66,197,209,.42)}
.family-tree-viewport.move-mode .family-node{cursor:move}
.family-tree-viewport.move-mode .family-node:hover{transform:translate(-50%,-50%) scale(1.012)}
.family-node.move-selected{
  box-shadow:0 0 0 7px rgba(63,205,224,.96),0 0 0 11px rgba(7,31,43,.82),0 22px 46px rgba(0,0,0,.72)!important;
}
.family-node.move-selected:after{
  content:'MOVE';position:absolute;left:50%;top:-19px;transform:translateX(-50%);z-index:5;
  padding:4px 8px;border-radius:999px;background:#0e5e68;border:2px solid #63d9e2;color:#fff;
  font:900 9px Inter,Arial,sans-serif;letter-spacing:.12em;pointer-events:none;
}
.family-node.move-dragging{transition:none!important;z-index:20;transform:translate(-50%,-50%) scale(1.018)!important}
.family-tree-viewport.move-mode .tree-hint{border-color:rgba(99,217,226,.62);color:#e9feff;background:rgba(8,42,52,.92)}


/* v40 — move undo + alignment grid */
.undo-moves-tool{
  border-color:#7a6a96!important;color:#3d3157!important;background:#f4efff!important
}
.undo-moves-tool:hover:not(:disabled){background:#e5d9fb!important}
.undo-moves-tool:disabled,.reset-moves-tool:disabled{opacity:.45;cursor:not-allowed}
.grid-snap-tool{
  border-color:#497a83!important;color:#214e57!important;background:#e8f8fa!important
}
.grid-snap-tool.active{
  background:#124e58!important;border-color:#63d9e2!important;color:#fff!important;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.08)
}
.family-tree-viewport.move-grid .tree-grid{
  opacity:1;
  background-image:
    linear-gradient(rgba(99,217,226,.18) 1px,transparent 1px),
    linear-gradient(90deg,rgba(99,217,226,.18) 1px,transparent 1px),
    linear-gradient(rgba(99,217,226,.34) 2px,transparent 2px),
    linear-gradient(90deg,rgba(99,217,226,.34) 2px,transparent 2px);
  background-size:50px 50px,50px 50px,250px 250px,250px 250px;
  background-position:0 0,0 0,0 0,0 0;
}
.family-tree-viewport.move-mode:not(.move-grid) .tree-grid{opacity:.28}

/* v42 — consistent family rails, draggable line rails, smart guides, card-width grid */
.family-tree-viewport.move-grid .tree-grid{
  background-image:
    linear-gradient(rgba(99,217,226,.16) 1px,transparent 1px),
    linear-gradient(90deg,rgba(99,217,226,.16) 1px,transparent 1px),
    linear-gradient(rgba(99,217,226,.38) 2px,transparent 2px),
    linear-gradient(90deg,rgba(99,217,226,.38) 2px,transparent 2px);
  background-size:50px 50px,50px 50px,300px 300px,300px 300px;
  background-position:0 0,0 0,0 0,0 0;
}
.move-guide-layer{position:absolute;left:0;top:0;width:100%;height:100%;z-index:6;overflow:visible;pointer-events:none}
.move-smart-guide{stroke:#59e8f2;stroke-width:2;stroke-dasharray:10 7;opacity:.95;vector-effect:non-scaling-stroke}
.move-smart-guide-label{fill:#061a21;stroke:#8af2f7;stroke-width:5;paint-order:stroke fill;font:900 14px Inter,Arial,sans-serif;letter-spacing:.08em}
.family-tree-viewport.move-mode .family-line-hit{stroke:transparent;stroke-width:34;fill:none;pointer-events:stroke;cursor:ns-resize}
.family-tree-viewport.move-mode .family-line-grip{fill:#0e5e68;stroke:#63d9e2;stroke-width:5;pointer-events:all;cursor:ns-resize;filter:drop-shadow(0 3px 5px rgba(0,0,0,.7))}
.family-tree-viewport.move-mode .family-line-grip.selected{fill:#5ae1ea;stroke:#e9ffff;stroke-width:6}
.family-tree-viewport.move-mode .family-line-grip-mark{fill:#fff;font:900 18px Inter,Arial,sans-serif;pointer-events:all;cursor:ns-resize;user-select:none}
.relationship-parent.family-rail.line-move-selected{stroke:#8af2f7;filter:drop-shadow(0 0 7px rgba(90,225,234,.9))}

/* v45 — conservative generation-row dragging + separated succession ports */
.generation-tool{border-color:#7d6a4c!important;background:#f8efd9!important;color:#4a3826!important}
.generation-tool:hover{background:#eadbb9!important}

/* The working grid keeps 50px fine divisions while every sixth division is one
   complete 300px portrait width. Automatic and migrated portrait positions use
   the same grid, so cards no longer sit between guide coordinates. */
.family-tree-viewport.move-grid .tree-grid{
  background-image:
    linear-gradient(rgba(99,217,226,.15) 1px,transparent 1px),
    linear-gradient(90deg,rgba(99,217,226,.15) 1px,transparent 1px),
    linear-gradient(rgba(99,217,226,.42) 2px,transparent 2px),
    linear-gradient(90deg,rgba(99,217,226,.42) 2px,transparent 2px)!important;
  background-size:50px 50px,50px 50px,300px 300px,300px 300px!important;
}

.generation-guide-line{
  stroke:rgba(233,220,190,.28)!important;
  stroke-width:2!important;
  stroke-dasharray:16 16!important;
}
.generation-guide-label{
  fill:rgba(241,226,194,.78)!important;
  font:900 13px Inter,Arial,sans-serif!important;
  letter-spacing:.16em!important;
}
.generation-guide-year{
  fill:rgba(99,217,226,.86);
  font:900 11px Inter,Arial,sans-serif;
  letter-spacing:.13em;
  pointer-events:none;
}

/* Current monarch keeps the gold crown; every previous monarch receives a
   matching silver badge so royal history is visible without opening the sidebar. */
.family-node.historic-royal:before{
  content:'♛';position:absolute;right:-17px;top:-21px;width:48px;height:48px;border-radius:50%;
  display:grid;place-items:center;background:linear-gradient(180deg,#5f6671,#343943);
  border:4px solid #c9d0d8;color:#f1f4f7;font-size:25px;z-index:3;
  box-shadow:0 5px 13px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.22)
}
.family-node.current-royal:before{
  box-shadow:0 5px 13px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.18)
}

.season-year-inputs{display:grid;grid-template-columns:minmax(120px,.9fr) minmax(100px,1fr);gap:8px}
.season-year-inputs select,.season-year-inputs input{width:100%}

.generations-modal{width:min(760px,96vw)!important}
.generation-editor-summary{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:14px 0;padding:12px 14px;background:#e8dcc3;border:1px solid #c2ad83}
.generation-editor-summary strong{font-family:Cinzel,serif;color:#35282c}
.generation-editor-summary span{font-size:10px;color:#6c5f5d;text-align:right}
.generation-year-list{display:grid;gap:8px;max-height:52vh;overflow:auto;padding-right:4px}
.generation-year-row{display:grid;grid-template-columns:minmax(145px,1fr) minmax(150px,220px);gap:12px;align-items:center;padding:11px 13px;background:#f5ecda;border:1px solid #c2ae89}
.generation-year-row strong{font:800 13px Cinzel,serif;color:#35282c}
.generation-year-row small{display:block;margin-top:3px;color:#786e6f;font-size:9px}
.generation-year-row input{width:100%;padding:10px 11px;border:1px solid #a9946e;background:#fffdf8;font:700 13px Inter,Arial,sans-serif}
.generation-actions{display:flex;justify-content:space-between;gap:10px;margin-top:12px;flex-wrap:wrap}
.generation-actions .btn{flex:1;min-width:220px}

/* Succession is chronology, not genealogy. v45 uses upper/lower-third side ports
   and always retains a visible fallback if a completely clear route is impossible. */
.relationship-succession-under{stroke-width:15!important}

@media(max-width:720px){
  .season-year-inputs{grid-template-columns:1fr}
  .generation-year-row{grid-template-columns:1fr}
  .generation-editor-summary{align-items:flex-start;flex-direction:column}
  .generation-editor-summary span{text-align:left}
}


/* v46 — succession routing is view-specific.
   Full Dynasty uses the upper inter-generation corridor and treats portrait cards
   as hard obstacles. Royal Succession uses a straight centre spine; current
   spouses are displayed beside their monarch without expanding child branches. */

/* v47 — editor login, noble classes, portrait tiles and manual save states */
.region-filter[data-region="baron"].active{background:#c73b42;border-color:#c73b42}
.region-filter[data-region="grandee"].active{background:#d5ad2f;border-color:#b68b14;color:#241d27}
.selected-region.baron{background:#c73b42}
.selected-region.grandee{background:#d5ad2f;color:#241d27}
.legend-dot.baron{background:#c73b42}.legend-dot.grandee{background:#d5ad2f}

/* Pattern art is a true repeat tile beneath transparent character PNGs. */
.portrait-frame,.selected-portrait,.portrait-preview>div{
  background-color:#11182a;
  background-image:var(--portrait-pattern,none);
  background-repeat:repeat;
  background-position:center;
  background-size:118px 118px;
}
.selected-portrait{background-size:154px 154px}
.portrait-preview>div{background-size:96px 96px}
.portrait-frame img,.selected-portrait img,.portrait-preview img{position:relative;z-index:1}

.auth-login-btn{white-space:nowrap}.auth-actions .btn{min-height:34px}
.save-states-tool{border-color:#7d334d!important;background:#f5e5e9!important;color:#6b253c!important}.save-states-tool:hover{background:#ead1d8!important}
.login-modal{width:min(500px,94vw)!important}.login-modal .field input{width:100%}
.save-states-modal{width:min(780px,96vw)!important}
.save-state-create{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:center;margin:14px 0}.save-state-create input{min-height:42px;padding:0 12px;border:1px solid #a9946e;background:#fffdf8;font:700 12px Inter,Arial,sans-serif}
.save-state-list{display:grid;gap:8px;max-height:50vh;overflow:auto}.save-state-row{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:12px 13px;background:#f5ecda;border:1px solid #c2ae89}.save-state-row>div:first-child{display:grid;gap:3px}.save-state-row strong{font:800 13px Cinzel,serif}.save-state-row span{font-size:9px;color:#736868}.save-state-row>div:last-child{display:flex;gap:7px}.btn.small{padding:7px 10px;min-height:32px;font-size:9px}.save-state-empty{padding:18px;border:1px dashed #b6a37e;color:#716464;text-align:center;font-size:11px;background:#f5ecda}

@media(max-width:720px){.save-state-create{grid-template-columns:1fr}.save-state-row{align-items:flex-start;flex-direction:column}.save-state-row>div:last-child{width:100%}.save-state-row .btn{flex:1}}

/* v111 — safer relationship editing */
.keep-layout-toggle{align-items:flex-start!important;padding:11px 12px!important;background:#f3ead7;border:1px solid #c8b58d;border-radius:8px;margin-top:8px}.keep-layout-toggle input{margin-top:3px}.keep-layout-toggle span{display:grid;gap:3px}.keep-layout-toggle b{font:800 10px Inter,sans-serif;text-transform:uppercase;color:#31272d}.keep-layout-toggle small{font:600 9px/1.45 Inter,sans-serif;color:#76696b}.relation-undo{border-color:#b17b39!important;color:#6b431a!important;background:#fff5df!important}.relation-undo[hidden]{display:none!important}
/* v162: a Player Noble's personal tree uses the Royal Family Tree renderer, but omits crown-only controls. */
.personal-tree-mode #viewSuccessionToolbar,
.personal-tree-mode #viewSuccessionBtn,
.personal-tree-mode #royalTakeoverBtn,
.personal-tree-mode #editReignDatesBtn,
.personal-tree-mode #manageAgesBtn,
.personal-tree-mode #currentRoyalChip,
.personal-tree-mode #currentAgeChip,
.personal-tree-mode #viewPersonalBtn,
.personal-tree-mode .succession-tree-tool { display:none !important; }
.personal-tree-mode .personal-overview-back { text-decoration:none; display:inline-flex; align-items:center; }

/* v163: personal trees inherit their complete Royal-connected family automatically. */
.personal-royal-sync-note{cursor:default;opacity:.82;border-style:dashed}.personal-royal-sync-note:hover{transform:none}
