:root{--bg: #191713;--bg-2: #1f1c17;--surface: #24211b;--ink: #ece7dd;--ink-60: rgba(236, 231, 221, .6);--ink-40: rgba(236, 231, 221, .4);--gold: #c28d41;--gold-hi: #e1ad66;--gold-soft: rgba(194, 141, 65, .35);--divider: rgba(236, 231, 221, .14);--heading: "Cormorant Garamond", serif;--body: "Lora", serif}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.55;overflow:hidden;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--heading);font-weight:600;line-height:1.12;letter-spacing:-.015em;margin:0}a{color:var(--gold-hi);text-underline-offset:3px}a:hover{color:var(--gold)}:focus{outline:none}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}::selection{background:#c28d414d}.kicker{font-family:var(--body);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);font-feature-settings:"tnum"}.kicker-gap{margin-bottom:8px}.arabic{font-family:Amiri,serif}.muted{color:var(--ink-60)}.small{font-size:12px;color:var(--ink-60)}.app{position:relative;height:100%}.app>canvas{position:absolute!important;top:0;right:0;bottom:0;left:0}.atlas{position:absolute;top:0;right:0;bottom:0;left:0}.atlas svg{display:block;touch-action:none;cursor:grab}.atlas svg:active{cursor:grabbing}.tafsir-block{margin-top:10px}.tafsir{max-height:260px;overflow-y:auto;white-space:pre-line;font-size:12.5px;line-height:1.6;color:var(--ink-60);border-left:2px solid var(--gold-soft);padding-left:10px;margin-top:6px;scrollbar-width:thin;scrollbar-color:var(--divider) transparent}.gradebar{display:inline-flex;margin-top:12px;border:1px solid var(--divider);border-radius:4px;overflow:hidden}.gradebar button{font:inherit;font-size:11.5px;color:var(--ink-60);background:transparent;border:0;padding:4px 12px;cursor:pointer}.gradebar button+button{border-left:1px solid var(--divider)}.gradebar button.on{color:var(--gold-hi);box-shadow:inset 0 0 0 1px var(--gold)}.gradebar button:not(.on):hover{background:#ece7dd0d}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes routeDrift{to{stroke-dashoffset:-600}}.atlas-route{animation:routeDrift 54s linear infinite}.city-label{font-family:var(--heading);font-weight:600;fill:var(--ink);paint-order:stroke;stroke:#191713;stroke-width:3px;stroke-linejoin:round}.city-sub{font-family:var(--body);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;fill:#ece7dd8c;paint-order:stroke;stroke:#191713;stroke-width:3px;stroke-linejoin:round}.geo-label{font-family:var(--body);font-style:italic;fill:#ece7dd6b;letter-spacing:.35em;text-transform:uppercase}.country-label{font-family:var(--body);font-size:9px;letter-spacing:.22em;text-transform:uppercase;fill:#ece7dd52}.minor-label{font-family:var(--body);font-size:9.5px;font-style:italic;fill:#ece7dd8c;paint-order:stroke;stroke:#191713;stroke-width:3px;stroke-linejoin:round}.narrator-label{font-family:var(--heading);font-weight:600;font-size:11px;fill:var(--ink);paint-order:stroke;stroke:#191713;stroke-width:3px;stroke-linejoin:round}.mention-label{font-family:var(--body);font-size:9.5px;font-style:italic;fill:var(--gold-hi);paint-order:stroke;stroke:#191713;stroke-width:3px;stroke-linejoin:round}.event-label{font-family:var(--body);font-size:9.5px;fill:var(--ink);paint-order:stroke;stroke:#191713;stroke-width:3px;stroke-linejoin:round}.ruler-label{font-family:var(--body);font-size:10px;font-style:italic;fill:#e1ad66bf;paint-order:stroke;stroke:#191713;stroke-width:3px;stroke-linejoin:round}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}.overlay button,.overlay input,.panel,.search,.legend,.lang,.seg{pointer-events:auto}.topbar{position:absolute;inset:0 0 auto 0;z-index:10;display:flex;align-items:center;gap:28px;padding:14px 28px;border-bottom:1px solid var(--divider);background:linear-gradient(#191713eb,#191713bf);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.brand{display:flex;align-items:baseline;gap:12px;margin-right:8px}.brand b{font-family:var(--heading);font-weight:600;font-size:26px;letter-spacing:.04em;color:var(--ink);-webkit-user-select:none;user-select:none}.brand b .dot{display:inline-block;width:7px;height:7px;margin-left:3px;border-radius:50%;background:var(--gold);vertical-align:baseline}.brand>span{font-family:var(--heading);font-weight:600;font-size:15px;letter-spacing:.02em;color:var(--ink-60)}.seg{display:inline-flex;border:1px solid var(--divider);border-radius:4px;overflow:hidden}.seg button{font-family:var(--heading);font-weight:600;font-size:14px;letter-spacing:.03em;color:var(--ink-60);background:transparent;border:0;padding:7px 18px;cursor:pointer}.seg button+button{border-left:1px solid var(--divider)}.seg button.on{color:var(--gold-hi);box-shadow:inset 0 0 0 1px var(--gold)}.seg button:not(.on):hover{background:#ece7dd0f}.search{flex:1;max-width:420px;margin-left:auto;position:relative}.search input{width:100%;min-height:36px;padding:6px 12px 6px 34px;font:inherit;font-size:14px;color:var(--ink);caret-color:var(--gold);background:transparent;border:1px solid var(--divider);border-radius:4px}.search input::placeholder{color:var(--ink-40);font-style:italic}.search input:hover{border-color:#ece7dd59}.search input:focus-visible{border-color:var(--gold);outline-offset:0}.search-icon{position:absolute;left:10px;top:50%;translate:0 -50%;color:var(--ink-40)}.search-results{position:absolute;top:calc(100% + 8px);left:0;right:0;margin:0;padding:6px;list-style:none;background:linear-gradient(#1f1c17f7,#191713f7);border:1px solid var(--divider);border-radius:4px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:20;animation:fadeUp .16s ease}.search-results button{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:9px 11px;border:0;border-radius:3px;background:transparent;color:var(--ink);font:inherit;font-size:13px;text-align:left;cursor:pointer}.search-results button:hover{background:#ece7dd0f;color:var(--gold-hi)}.lang{display:flex;border:1px solid var(--divider);border-radius:4px;overflow:hidden}.lang button{font:inherit;font-size:12px;letter-spacing:.06em;padding:7px 12px;background:transparent;border:0;color:var(--ink-60);cursor:pointer}.lang button+button{border-left:1px solid var(--divider)}.lang button.on{color:var(--gold-hi)}.lang button:not(.on):hover{background:#ece7dd0f}.back{position:absolute;top:70px;left:172px;padding:7px 14px;border:1px solid var(--divider);border-radius:4px;background:#191713d9;color:var(--ink-60);font:inherit;font-size:13px;cursor:pointer;animation:fadeUp .2s ease;z-index:11}.back:hover{color:var(--gold-hi);border-color:var(--gold)}.boot{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:radial-gradient(ellipse at center,#19171366,#191713e6)}.boot-ring{width:46px;height:46px;border-radius:50%;border:2px solid var(--divider);border-top-color:var(--gold);animation:spin .9s linear infinite;margin-bottom:14px}.boot-title{font-family:var(--heading);font-size:30px;font-weight:600;letter-spacing:.08em;color:var(--ink)}.boot-sub{font-size:13px;font-style:italic;color:var(--ink-60)}.center-status{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:18px 26px;background:linear-gradient(#1f1c17f0,#191713f0);border:1px solid var(--divider);border-radius:4px;font-size:14px}.center-status button,.panel-status button,.morelink{padding:6px 12px;border:1px solid var(--divider);border-radius:4px;background:transparent;color:var(--gold-hi);font:inherit;font-size:13px;cursor:pointer}.center-status button:hover,.panel-status button:hover,.morelink:hover{border-color:var(--gold);color:var(--gold)}.morelink{display:inline-block;margin-top:12px;border:0;padding:0;text-decoration:underline;text-underline-offset:3px}.hint{position:absolute;bottom:28px;left:50%;transform:translate(-50%);z-index:9;font-size:12px;font-style:italic;color:var(--ink-60);border:1px solid var(--divider);border-radius:4px;padding:7px 16px;background:#191713d9;white-space:nowrap}.credit{position:absolute;right:28px;bottom:6px;z-index:9;font-size:10.5px;color:var(--ink-40);width:330px;text-align:right;line-height:1.5}.legend{position:absolute;left:28px;bottom:28px;z-index:10;width:230px;max-height:calc(100vh - 150px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--divider) transparent;border:1px solid var(--divider);border-radius:4px;padding:16px 18px;background:linear-gradient(#1f1c17e6,#191713e6);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fadeUp .25s ease}.legend h3{font-size:17px;margin-bottom:2px}.legend .sub{font-size:11px;font-style:italic;color:var(--ink-60);margin:0 0 10px}.legend hr,.panel hr{height:1px;border:0;background:var(--divider);margin:10px 0}.lrow{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-60);padding:3px 0}.kdef{margin:4px 0 0;font-size:11px;line-height:1.45;color:var(--ink-60)}.kinds summary{cursor:pointer;-webkit-user-select:none;user-select:none}.kinds summary:hover{color:var(--gold-hi)}.lrow .num{margin-left:auto;font-feature-settings:"tnum";color:var(--ink-40);font-size:11px}.sw{width:14px;height:14px;flex:none;border-radius:50%;border:1.5px solid var(--gold)}.sw.f1{background:var(--gold-hi);border-color:var(--gold-hi)}.sw.f2{background:var(--gold);border-color:var(--gold)}.sw.f3{background:transparent;border-color:var(--gold-hi)}.sw.ring{border-style:double;border-width:3px}.sw.diam{border-radius:1px;width:11px;height:14px;border-left-width:4px;border-color:var(--gold)}.sw.arch{border-radius:6px 6px 1px 1px;border-color:var(--gold-hi);width:11px;height:14px}.sw.route{border:0;border-radius:0;height:0;border-top:1px dashed var(--gold);width:16px}.sw.star{border:0;border-radius:0;color:var(--gold-hi);font-size:13px;line-height:14px;text-align:center}.bar{width:16px;height:3px;flex:none}.dot{width:10px;height:10px;border-radius:50%;flex:none;box-shadow:0 0 8px currentColor}.tip{position:fixed;z-index:20;pointer-events:none;border:1px solid var(--gold-soft);border-radius:4px;background:#191713f2;padding:8px 12px;max-width:220px}.tip .t-k{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}.tip .t-n{font-family:var(--heading);font-weight:600;font-size:17px;line-height:1.15}.tip .t-a{font-size:14px;color:var(--ink-60);line-height:1.5}.tip .t-m{font-size:11px;color:var(--ink-60);font-feature-settings:"tnum"}.panel{position:absolute;right:28px;top:86px;bottom:28px;z-index:10;width:min(var(--panel-w, 360px),92vw);display:flex;flex-direction:column;border:1px solid var(--divider);border-radius:4px;overflow:hidden;background:linear-gradient(#1f1c17f0,#191713f0);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fadeUp .24s ease}.panel-resizer{position:absolute;left:0;top:0;bottom:0;width:7px;cursor:col-resize;z-index:3;touch-action:none}.panel-resizer:hover,.panel-resizer:active{background:linear-gradient(to right,var(--gold-soft),transparent)}.panel-expand{display:none;position:absolute;top:10px;left:12px;z-index:3;padding:5px 11px;border:1px solid var(--divider);border-radius:4px;background:#191713e6;color:var(--gold-hi);font:inherit;font-size:12px;cursor:pointer}.panel .close{position:absolute;top:12px;right:12px;width:30px;height:30px;display:grid;place-items:center;background:transparent;border:1px solid var(--divider);border-radius:4px;color:var(--ink-60);cursor:pointer;z-index:2}.panel .close:hover{color:var(--gold-hi);border-color:var(--gold)}.panel-in{padding:22px 24px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--divider) transparent}.panel h2{font-size:30px;margin:2px 0}.panel .meta{font-size:12px;color:var(--ink-60);font-feature-settings:"tnum"}.panel p.lead{font-size:13.5px;text-align:justify;-webkit-hyphens:auto;hyphens:auto;color:var(--ink-60);margin:12px 0 0}.ptable{width:100%;border-collapse:collapse;font-size:13px}.ptable td{padding:7px 0;border-bottom:1px solid var(--divider)}.ptable td:last-child{text-align:right;font-feature-settings:"tnum";color:var(--ink-60)}.ptable .pd{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:9px;vertical-align:-1px}.slist{list-style:none;margin:0;padding:0}.slist li{display:flex;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px solid var(--divider);cursor:pointer}.slist li:hover .sname{color:var(--gold-hi)}.slist .n{font-size:11px;color:var(--gold);font-feature-settings:"tnum";width:24px;flex:none}.slist .sname{font-family:var(--heading);font-weight:600;font-size:16.5px}.slist .ar{margin-left:auto;font-size:13px;color:var(--ink-40)}.panel-head{padding:20px 24px 16px;border-bottom:1px solid var(--divider)}.sura-arabic{font-size:34px;color:var(--gold-hi);text-align:right;line-height:1.4}.panel-head h2{font-size:24px;margin:4px 0 2px}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.chip{padding:4px 10px;border:1px solid var(--divider);border-radius:3px;font-size:11px;color:var(--ink-60)}.disclaimer{margin:12px 0 0;font-size:11px;font-style:italic;line-height:1.55;color:var(--ink-40)}.panel-status{padding:18px 24px;font-size:13px;color:var(--ink-60)}.verses{margin:0;padding:8px 0;list-style:none;overflow-y:auto;flex:1;scrollbar-width:thin;scrollbar-color:var(--divider) transparent}.verse{padding:13px 24px;cursor:pointer;border-left:2px solid transparent;transition:background .15s,border-color .15s}.verse:hover{background:#ece7dd0a}.verse.selected{background:#c28d4114;border-left-color:var(--gold)}.verse-key{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:6px;font-feature-settings:"tnum"}.grades{color:var(--gold-hi);text-transform:none;letter-spacing:normal}.verse-arabic{font-size:22px;line-height:2;margin-bottom:9px;color:var(--ink)}.verse-translation{font-size:13.5px;line-height:1.65;color:var(--ink-60)}.mt-btn{margin-top:8px;padding:0;border:0;background:transparent;font:inherit;font-size:12px;color:var(--gold-hi);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.mt-btn:hover{color:var(--gold)}.mt-text{margin-top:10px;padding-left:10px;border-left:2px solid var(--gold-soft);color:var(--ink)}.mt-note{margin-top:6px;font-size:10.5px;font-style:italic;color:var(--ink-40)}.verses::-webkit-scrollbar,.panel-in::-webkit-scrollbar{width:8px}.verses::-webkit-scrollbar-thumb,.panel-in::-webkit-scrollbar-thumb{background:var(--divider);border-radius:4px}.verses::-webkit-scrollbar-thumb:hover,.panel-in::-webkit-scrollbar-thumb:hover{background:#ece7dd4d}:focus-visible{outline:2px solid var(--gold, #ffc36b);outline-offset:2px}@media (max-width: 1200px){.hint{display:none}}@media (max-width: 720px){.topbar{flex-wrap:wrap;gap:8px;padding:10px 14px}.brand{margin-right:0}.brand b{font-size:22px}.brand>span{display:none}.seg button{font-size:12.5px;padding:6px 10px}.lang{margin-left:auto}.lang button{padding:6px 10px}.mode-switch button,.lang-switch button,.back{min-height:44px;min-width:44px}.search input{min-height:44px}.search{order:5;max-width:none;flex-basis:100%;margin-left:0}.search input{min-height:32px}.back{top:104px;bottom:auto;left:12px;z-index:12}.panel{top:auto;left:12px;right:12px;bottom:12px;width:auto;height:56vh;z-index:12}.panel-resizer{display:none}.panel-expand{display:block}.panel-head,.panel-in{padding-top:46px}.panel.full{top:0;left:0;right:0;bottom:0;width:100%;height:100%;border-radius:0;border:0;z-index:30}.legend,.credit{display:none}}.bible-label{font-family:var(--body);font-size:9.5px;font-style:italic;fill:#b9c9dd;paint-order:stroke;stroke:#191713;stroke-width:3px;stroke-linejoin:round}.bible-text{margin:10px 0 6px;padding-left:12px;border-left:2px solid rgba(159,179,207,.5);font-size:14.5px;line-height:1.7;color:var(--ink)}.sw.scroll,.sw.codex{border-radius:2px;border:1.5px solid #9fb3cf;width:11px;height:14px;margin:0 1px}.sw.codex{border-color:#b9c9dd;border-left-width:4px}.seg button:disabled{opacity:.38;cursor:not-allowed}.seg button:disabled:hover{background:transparent}.ctl-toggle{position:absolute;top:70px;left:28px;z-index:12;display:flex;align-items:center;gap:7px;padding:7px 15px;border:1px solid var(--divider);border-radius:4px;background:#191713e6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:var(--ink-60);font-family:var(--heading);font-weight:600;font-size:13.5px;letter-spacing:.03em;cursor:pointer;pointer-events:auto}.ctl-toggle:hover,.ctl-toggle.on{color:var(--gold-hi);border-color:var(--gold)}.ctl-badge{width:6px;height:6px;border-radius:50%;background:var(--gold-hi)}.controls{position:absolute;top:112px;left:28px;bottom:28px;z-index:11;width:310px;display:none;flex-direction:column;border:1px solid var(--divider);border-radius:4px;overflow:hidden;background:linear-gradient(#1f1c17f5,#191713f5);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:auto;animation:fadeUp .2s ease}.controls.open{display:flex}.ctl-in{padding:16px 18px 20px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--divider) transparent}.ctl-in .kicker-gap{margin-top:14px}.ctl-in .kicker-gap:first-child{margin-top:0}.ctl-row{display:flex;border:1px solid var(--divider);border-radius:4px;overflow:hidden;margin-bottom:2px}.ctl-row.wrap{flex-wrap:wrap;border:0;gap:5px}.ctl-row button{flex:1;min-height:34px;padding:6px 10px;border:0;background:transparent;color:var(--ink-60);font:inherit;font-size:12.5px;cursor:pointer}.ctl-row:not(.wrap) button+button{border-left:1px solid var(--divider)}.ctl-row.wrap button{flex:0 0 auto;border:1px solid var(--divider);border-radius:4px}.ctl-row button.on{color:var(--gold-hi);box-shadow:inset 0 0 0 1px var(--gold)}.ctl-row button:not(.on):hover{background:#ece7dd0f;color:var(--ink)}.ctl-slider{display:flex;align-items:center;gap:10px;margin:8px 0 4px}.ctl-slider input[type=range]{flex:1;accent-color:var(--gold);min-height:24px}.ctl-slider .hyear{font-size:13px;color:var(--gold-hi);font-feature-settings:"tnum";min-width:76px;text-align:right}.ctl-empty{font-size:12.5px;font-style:italic;color:var(--ink-40);margin:8px 0 0}.evlist{margin-top:6px}.ev{border-bottom:1px solid var(--divider)}.ev-head{display:flex;align-items:baseline;gap:9px;width:100%;min-height:38px;padding:8px 2px;border:0;background:transparent;color:var(--ink);font:inherit;font-size:13.5px;text-align:left;cursor:pointer}.ev-head:hover .ev-name,.ev.open .ev-name{color:var(--gold-hi)}.ev-dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--ink-40)}.ev-dot.battle,.ev-dot.siege{background:#cf7a66}.ev-dot.treaty,.ev-dot.conquest{background:var(--gold-hi)}.ev-dot.migration,.ev-dot.expedition{background:#9fb3a6}.ev-dot.world{background:transparent;border:1.5px solid var(--ink-60)}.ev-dot.ruler{border-radius:1px;background:#e1ad66bf}.ev-name{flex:1;line-height:1.35}.ev-year{font-size:11.5px;color:var(--ink-40);font-feature-settings:"tnum";white-space:nowrap}.ev-body{padding:0 2px 12px 17px;font-size:12.5px;line-height:1.6;color:var(--ink-60)}.ev-body p{margin:0 0 8px}.ev-meanwhile{font-size:11.5px;color:var(--ink-40)}.ev-sep{margin-top:16px}@media (max-width: 720px){.ctl-toggle{top:auto;bottom:16px;left:50%;translate:-50% 0;min-height:44px;padding:10px 20px;font-size:15px;z-index:14}.controls{top:auto;left:0;right:0;bottom:0;width:auto;height:72vh;border-radius:12px 12px 0 0;border-left:0;border-right:0;border-bottom:0;z-index:13;animation:sheetIn .22s ease both}.ctl-in{padding:18px 18px 78px}.ctl-row button{min-height:44px;font-size:14px}.ev-head{min-height:48px;font-size:15px}.ev-body{font-size:14px}.ctl-slider .hyear{font-size:15px}}@keyframes sheetIn{0%{opacity:.5}to{opacity:1}}.ctl-note{margin:6px 0 0;font-size:11px;line-height:1.5;color:var(--ink-40)}.territories path{transition:fill-opacity .2s,stroke-opacity .2s}.share-btn{display:inline-flex;align-items:center;gap:7px;margin-top:12px;padding:6px 12px;border:1px solid var(--divider);border-radius:4px;background:transparent;color:var(--ink-60);font:inherit;font-size:12.5px;cursor:pointer}.share-btn:hover{color:var(--gold-hi);border-color:var(--gold)}.ctl-share{margin-top:18px;padding-top:14px;border-top:1px solid var(--divider)}.ctl-share .share-btn{width:100%;justify-content:center;min-height:40px}.ctl-slider .play{flex:none;width:32px;height:32px;padding:0;display:grid;place-items:center;border:1px solid var(--divider);border-radius:4px;background:transparent;color:var(--ink-60);font-size:11px;cursor:pointer}.ctl-slider .play:hover,.ctl-slider .play.on{color:var(--gold-hi);border-color:var(--gold)}@media (max-width: 720px){.ctl-slider .play{width:44px;height:44px;font-size:14px}.share-btn{min-height:44px}}
