:root{--bg-primary:#0a0a0f;--bg-secondary:#12121a;--bg-elevated:#1a1a2e;--bg-panel:#0d0d15;--text-primary:#eeece9;--text-secondary:#b0aeaa;--text-muted:#7a7a8a;--gold:#d4a847;--gold-dim:#b8943e;--gold-glow:#d4a8474d;--dynasty-rashidun:#40916c;--dynasty-sufyanid:#d4a017;--dynasty-zubayyid:#9b72cf;--dynasty-marwanid:#e07b39;--dynasty-abbasid:#5b8bd4;--death-natural:#4caf50;--death-assassinated:#ff1744;--death-poisoned:#a0f;--death-battle:#ff6d00;--death-abdicated:#ffd600;--kill-line:#ff1744;--font-display:"Amiri", serif;--font-body:"Cairo", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);direction:rtl;overflow:hidden}#loading-screen{z-index:9999;background:var(--bg-primary);justify-content:center;align-items:center;transition:opacity .8s,visibility .8s,transform .8s,filter .8s;display:flex;position:fixed;inset:0}#loading-screen.hidden{opacity:0;visibility:hidden;pointer-events:none;filter:blur(10px);transform:scale(1.05)}.loading-content{text-align:center}.loading-ornament{color:var(--gold);opacity:.5;margin-bottom:.8rem;font-size:2rem;animation:1s fadeInUp}.loading-title{font-family:var(--font-display);color:var(--gold);margin-bottom:.3rem;font-size:3.5rem;animation:1s fadeInUp}.loading-subtitle{font-family:var(--font-display);color:var(--text-secondary);margin-bottom:.3rem;font-size:1.5rem;animation:1s .2s both fadeInUp}.loading-range{font-family:var(--font-body);color:var(--text-muted);margin-bottom:2rem;font-size:.85rem;animation:1s .4s both fadeInUp}.loading-geometric{justify-content:center;align-items:center;width:60px;height:60px;margin:1.5rem auto 0;display:flex;position:relative}.geo-outer{border:2px solid var(--gold);border-radius:4px;justify-content:center;align-items:center;width:100%;height:100%;animation:6s linear infinite geoRotate;display:flex;transform:rotate(22.5deg)}.geo-inner{border:1.5px solid var(--gold-dim);border-radius:2px;width:70%;height:70%;animation:6s linear infinite reverse geoRotate;transform:rotate(45deg)}@keyframes geoRotate{0%{transform:rotate(22.5deg)}to{transform:rotate(382.5deg)}}.loading-dynasty-cycle{font-family:var(--font-body);color:var(--text-muted);height:1.4em;margin-top:1rem;font-size:.85rem;transition:opacity .2s;animation:1s .6s both fadeInUp}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}#app-header{z-index:100;-webkit-backdrop-filter:blur(12px);pointer-events:none;background:linear-gradient(#0a0a0feb 0%,#0a0a0fb3 60%,#0000 100%);padding:14px 24px;position:fixed;top:0;left:0;right:0}.header-inner{text-align:center;pointer-events:auto;max-width:900px;margin:0 auto}.header-title{font-family:var(--font-display);color:var(--gold);font-size:clamp(1.15rem,3.6vw,2.2rem);font-weight:700}.header-subtitle{color:var(--text-muted);margin-bottom:10px;font-size:clamp(.6rem,1.5vw,.85rem)}#dynasty-filters{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}#dynasty-filters button{font-family:var(--font-body);border:1px solid var(--text-muted);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:20px;padding:5px 16px;font-size:.82rem;transition:all .3s cubic-bezier(.34,1.56,.64,1)}#dynasty-filters button:hover{border-color:var(--gold);color:var(--gold)}#dynasty-filters button.active{background:var(--gold);color:var(--bg-primary);border-color:var(--gold);font-weight:600}#left-toolbar{z-index:200;pointer-events:none;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:60px;left:24px}#left-toolbar>*{pointer-events:auto}#controls{-webkit-backdrop-filter:blur(20px);background:#1e1e30eb;border:1px solid #d4a84740;border-radius:12px;grid-template-columns:1fr 1fr 1fr;gap:4px;padding:8px;display:grid;box-shadow:0 8px 32px #00000080,inset 0 1px #ffffff14}#controls button{height:36px;color:var(--text-secondary);cursor:pointer;background:#ffffff0a;border:none;border-radius:8px;justify-content:center;align-items:center;font-size:1.1rem;transition:all .2s;display:flex}#controls button:hover{color:var(--gold);background:#ffffff1a}#controls button.active{color:var(--kill-line);background:#ff174426}#btn-search,#btn-toggle-kills{grid-column:1/-1}.control-divider{background:#ffffff0f;grid-column:1/-1;height:1px;margin:2px 0}#legend{-webkit-backdrop-filter:blur(20px);background:#1e1e30eb;border:1px solid #d4a84740;border-radius:12px;min-width:160px;padding:14px 18px;font-size:.82rem;box-shadow:0 8px 32px #00000080,inset 0 1px #ffffff14}.legend-title{color:var(--gold);margin-bottom:8px;font-size:.9rem;font-weight:700}.legend-item{color:var(--text-secondary);align-items:center;gap:8px;margin-bottom:4px;display:flex}.legend-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.legend-icon{text-align:center;width:10px;color:var(--death-natural);flex-shrink:0;font-size:.8rem}.legend-divider{background:#ffffff0f;height:1px;margin:8px 0}#app-footer{z-index:100;-webkit-backdrop-filter:blur(12px);pointer-events:none;background:linear-gradient(#0000 0%,#0a0a0fb3 40%,#0a0a0feb 100%);padding:10px 24px;position:fixed;bottom:0;left:0;right:0}.footer-inner{text-align:center;max-width:900px;color:var(--text-muted);pointer-events:auto;margin:0 auto;font-size:.78rem}.footer-source a{color:var(--gold-dim);text-decoration:none;transition:color .2s}.footer-source a:hover{color:var(--gold);text-decoration:underline}.footer-divider{opacity:.4;margin:0 8px}.footer-hint{opacity:.6}.html-node{will-change:transform;box-shadow:0 4px 20px #0000004d}.html-node:hover{z-index:10!important}@media (width<=768px){#app-header{padding:10px 12px}#dynasty-filters{-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto}#dynasty-filters::-webkit-scrollbar{display:none}#dynasty-filters button{white-space:nowrap;flex-shrink:0}#legend,#minimap{display:none}#left-toolbar{max-width:160px;bottom:50px;left:12px}#controls button{height:38px;font-size:1.1rem}#detail-panel{width:100%;max-width:100vw}#panel-close{width:44px;height:44px}.footer-hint,.footer-divider{display:none}#app-header,#app-footer{-webkit-backdrop-filter:none}}@media (width>=769px) and (width<=1024px){#legend{min-width:130px;padding:10px 14px}}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--gold-dim)}#graph-container{background:var(--bg-primary);width:100%;height:100%;position:absolute;inset:0;overflow:hidden}#graph-container:before{content:"";pointer-events:none;z-index:0;background-image:radial-gradient(circle,#d4a84709 1px,#0000 1px);background-size:40px 40px;position:absolute;inset:0}#graph-container:after{content:"";pointer-events:none;z-index:0;background:radial-gradient(600px 400px at 20% 30%,#40916c09 0%,#0000 70%),radial-gradient(500px 350px at 75% 60%,#5b8bd409 0%,#0000 70%),radial-gradient(400px 300px at 50% 80%,#9b72cf06 0%,#0000 70%);width:200%;height:200%;animation:45s ease-in-out infinite alternate atmosphereFloat;position:absolute;inset:-50%}@keyframes atmosphereFloat{0%{transform:translate(0)rotate(0)}33%{transform:translate(-3%,2%)rotate(1deg)}66%{transform:translate(2%,-2%)rotate(-.5deg)}to{transform:translate(-1%,1%)rotate(.5deg)}}#graph-container svg{z-index:1;will-change:transform;display:block;position:relative}.node{transition:opacity .3s ease-out}.node-bg{transition:rx .25s cubic-bezier(.34,1.56,.64,1),ry .25s cubic-bezier(.34,1.56,.64,1),stroke-width .2s,stroke .2s}.succession-link{transition:opacity .3s ease-out,stroke-width .15s}.dynasty-bg-el{transition:rx .25s cubic-bezier(.34,1.56,.64,1),ry .25s cubic-bezier(.34,1.56,.64,1),stroke-width .2s}.dynasty-glow-el{transition:opacity .2s}.node-assassinated .node-glow-outer{animation:3s ease-in-out infinite assassinatedPulse}@keyframes assassinatedPulse{0%,to{opacity:.03}50%{opacity:.09}}.node-poisoned .node-glow-outer{animation:4s ease-in-out infinite poisonedShimmer}@keyframes poisonedShimmer{0%,to{opacity:.03}33%{opacity:.07}66%{opacity:.04}}.node-battle .node-glow-outer{animation:2.5s ease-in-out infinite battleFlicker}@keyframes battleFlicker{0%,to{opacity:.03}40%{opacity:.06}60%{opacity:.08}}.flowing-edge{animation:3s linear infinite flowDots}@keyframes flowDots{0%{stroke-dashoffset:0}to{stroke-dashoffset:-48px}}.flowing-edge-lead{animation:2.5s linear infinite flowDotsLead}@keyframes flowDotsLead{0%{stroke-dashoffset:0}to{stroke-dashoffset:-40px}}.flowing-edge-trail{animation:3s linear infinite flowDotsTrail}@keyframes flowDotsTrail{0%{stroke-dashoffset:0}to{stroke-dashoffset:-40px}}.kill-edge-path{stroke-dasharray:12 4 3 4 8 4;animation:2.5s ease-in-out infinite killPulse}@keyframes killPulse{0%,to{stroke-opacity:.3}50%{stroke-opacity:.55}}@media (width<=768px){.node-glow-outer,.node-glow-mid,.node-glow-inner,.dynasty-glow-el{display:none}.flowing-edge,.flowing-edge-lead,.flowing-edge-trail,.kill-edge-path,#graph-container:after{animation:none}.dynasty-regions rect{filter:none!important}}#detail-panel{z-index:150;-webkit-backdrop-filter:blur(24px);background:#0e0e16f5;border-left:1px solid #d4a84726;width:420px;max-width:90vw;height:100%;padding:0;transition:transform .5s cubic-bezier(.34,1.56,.64,1);position:fixed;top:0;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-10px 0 60px #0009,inset 1px 0 #ffffff0a}#detail-panel.panel-open{transform:translate(0)}#panel-close{float:right;background:var(--bg-elevated);width:36px;height:36px;color:var(--text-secondary);cursor:pointer;z-index:10;border:none;border-radius:50%;justify-content:center;align-items:center;margin:12px;font-size:1.4rem;transition:all .2s;display:flex;position:sticky;top:0}#panel-close:hover{color:var(--kill-line);background:#ff174433}#panel-content{padding:24px}.panel-header{text-align:center;border-bottom:1px solid #ffffff0f;margin-bottom:20px;padding-bottom:20px}.panel-number{border-radius:50%;width:32px;height:32px;margin-bottom:8px;font-size:.85rem;font-weight:700;line-height:32px;display:inline-block}.panel-name-ar{font-family:var(--font-display);color:var(--gold);margin-bottom:4px;font-size:1.8rem;line-height:1.4}.panel-name-en{color:var(--text-muted);font-size:.85rem;font-style:italic}.panel-dynasty-badge{border-radius:12px;margin-top:10px;padding:3px 14px;font-size:.8rem;font-weight:600;display:inline-block}.panel-section{margin-bottom:20px}.panel-section-title{font-family:var(--font-display);color:var(--gold);border-bottom:1px solid var(--gold-glow);margin-bottom:8px;padding-bottom:4px;font-size:1rem}.panel-section p,.panel-section li{color:var(--text-secondary);margin-bottom:4px;font-size:.85rem;line-height:1.7}.panel-section ul{padding:0;list-style:none}.panel-section li:before{content:"◆";color:var(--gold-dim);vertical-align:middle;margin-left:8px;font-size:.55rem}.death-box{border:1px solid;border-radius:10px;margin-top:8px;padding:14px}.death-box.assassinated{background:#ff17440f;border-color:#ff174433}.death-box.natural{background:#4caf500f;border-color:#4caf5026}.death-box.poisoned{background:#aa00ff0f;border-color:#aa00ff26}.death-box.battle{background:#ff6d000f;border-color:#ff6d0026}.death-box.abdicated{background:#ffd6000f;border-color:#ffd60026}.death-symbol{margin-bottom:6px;font-size:1.5rem}.death-label{margin-bottom:4px;font-size:.85rem;font-weight:700}.death-detail{color:var(--text-secondary);font-size:.8rem;line-height:1.6}.killer-name{color:var(--kill-line);font-weight:700}.killing-entry{background:var(--bg-elevated);border-right:3px solid var(--kill-line);border-radius:8px;margin-bottom:6px;padding:10px 12px;font-size:.85rem}.killing-entry .victim{color:var(--text-primary);font-weight:600}.killing-entry .method{color:var(--text-muted);font-size:.8rem}#search-overlay{z-index:500;-webkit-backdrop-filter:blur(8px);opacity:1;background:#0a0a0fbf;justify-content:center;align-items:flex-start;padding-top:18vh;transition:opacity .2s;display:flex;position:fixed;inset:0}#search-overlay.search-hidden{opacity:0;pointer-events:none;visibility:hidden}#search-container{background:#12121ae6;border:1px solid #d4a84726;border-radius:16px;width:480px;max-width:90vw;transition:transform .25s cubic-bezier(.34,1.56,.64,1),opacity .2s;overflow:hidden;transform:translateY(0);box-shadow:0 24px 80px #00000080,0 0 0 1px #ffffff08}#search-overlay.search-hidden #search-container{transform:translateY(-12px)}#search-input{width:100%;color:var(--text-primary);font-family:var(--font-display);text-align:right;direction:rtl;background:0 0;border:none;border-bottom:1px solid #ffffff0d;outline:none;padding:18px 22px;font-size:1.3rem}#search-input::placeholder{color:var(--text-muted);opacity:.7}#search-results{max-height:320px;padding:6px 0;overflow-y:auto}#search-results:empty{display:none}.search-result{cursor:pointer;direction:rtl;align-items:center;gap:12px;padding:12px 22px;transition:background .15s;display:flex}.search-result:hover,.search-result.search-active{background:#d4a84714}.search-result-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;box-shadow:0 0 6px}.search-result-info{flex:1;min-width:0}.search-result-name{font-family:var(--font-display);color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:1rem;font-weight:700;overflow:hidden}.search-result-meta{font-family:var(--font-body);color:var(--text-muted);margin-top:2px;font-size:.8rem}.search-result-number{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.78rem;font-weight:700;display:flex}#search-hint{color:var(--text-muted);text-align:center;direction:rtl;border-top:1px solid #ffffff0a;padding:10px 22px;font-size:.75rem}.search-hint-key{font-family:var(--font-body);background:#ffffff0f;border-radius:4px;margin:0 2px;padding:2px 7px;font-size:.7rem;display:inline-block}@media (width<=768px){#search-overlay{padding-top:8vh}#search-container{border-radius:12px;width:95vw}#search-input{padding:14px 16px;font-size:1.1rem}.search-result{padding:10px 16px}}#minimap{-webkit-backdrop-filter:blur(20px);opacity:.65;cursor:pointer;background:#1e1e30eb;border:1px solid #d4a84740;border-radius:12px;width:100%;height:120px;transition:opacity .3s;position:relative;overflow:hidden;box-shadow:0 8px 32px #00000080,inset 0 1px #ffffff14}#minimap:hover{opacity:1}#minimap-canvas{width:100%;height:100%;display:block}#minimap-viewport{border:1.5px solid var(--gold);pointer-events:none;background:#d4a8470d;border-radius:2px;transition:none;position:absolute}@media (width<=768px){#minimap{display:none}}@media (width>=769px) and (width<=1024px){#minimap{height:100px}}
