
:root{font-size:118%;--ease:cubic-bezier(.2,.75,.25,1);--fast:180ms;--mid:420ms;--max:1260px;--radius:8px;--radius-soft:14px}
html[data-theme="ascension"]{--bg:#dfe1de;--scene:#d5d7d3;--surface:#f1f1ed;--surface2:#e6e7e2;--surface3:#d9dbd6;--ink:#17191b;--muted:#676b69;--line:#b8bbb5;--line2:#878c87;--gold:#aa873f;--gold2:#d5b967;--blood:#681923;--blood2:#9b2734;--void:#08090b;--shadow:rgba(30,33,31,.24);--shadow-contact:rgba(22,24,23,.38)}
html[data-theme="umbra"]{--bg:#090a0c;--scene:#0d0e11;--surface:#141619;--surface2:#1c1f23;--surface3:#272a2f;--ink:#eee8df;--muted:#9d9892;--line:#34363b;--line2:#5a5d63;--gold:#9d835c;--gold2:#c3a56f;--blood:#761d2a;--blood2:#bf3143;--void:#050506;--shadow:rgba(0,0,0,.55);--shadow-contact:rgba(0,0,0,.8)}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg)}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;line-height:1.58;transition:background var(--mid) var(--ease),color var(--mid) var(--ease)}a{color:inherit}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.shell{width:min(var(--max),calc(100% - 38px));margin:auto}.skip{position:absolute;left:-9999px}.skip:focus{left:18px;top:18px;z-index:1000;background:var(--surface);padding:10px 14px;border:1px solid var(--line)}
/* header */
.header-wrap{position:sticky;top:0;z-index:70;padding:12px 0;background:transparent;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;isolation:isolate}.header{height:64px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:24px;border:1px solid color-mix(in srgb,var(--line) 86%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 99%,white 1%),color-mix(in srgb,var(--surface) 97%,var(--bg) 3%));box-shadow:0 12px 36px color-mix(in srgb,var(--shadow) 68%,transparent);padding:0 18px;border-radius:6px;position:relative;overflow:hidden;transform:translateZ(0)}.header:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.12),transparent 34%,rgba(0,0,0,.025));opacity:.72}.header>*{position:relative;z-index:1}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-family:Georgia,"Times New Roman",serif;letter-spacing:.16em;font-size:.9rem;white-space:nowrap}.brand-mark{width:25px;height:25px;border:1px solid var(--gold);transform:rotate(45deg);position:relative;flex:none}.brand-mark:after{content:"";position:absolute;inset:7px;background:var(--blood)}.nav{display:flex;justify-content:center;align-items:center;gap:20px}.nav a{text-decoration:none;color:var(--muted);font-size:.67rem;text-transform:uppercase;letter-spacing:.11em;position:relative;padding:21px 0 19px}.nav a:hover,.nav a.active{color:var(--ink)}.nav a.active:after{content:"";position:absolute;left:0;right:0;bottom:12px;height:1px;background:var(--gold)}.nav a.active:before{content:"";position:absolute;left:55%;bottom:10px;width:28px;height:3px;background:var(--blood2);clip-path:polygon(0 52%,17% 6%,31% 90%,48% 23%,66% 79%,83% 10%,100% 51%);opacity:.72}.header-actions{display:flex;align-items:center;gap:8px}.theme{width:38px;height:38px;border-radius:50%;border:1px solid var(--line2);background:var(--surface2);position:relative;overflow:hidden}.theme:before{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--ink);transform:translateX(-7px);transition:transform .55s var(--ease),background .3s}.theme:after{content:"";position:absolute;inset:11px;border-radius:50%;border-top:1px solid var(--gold2);transform:rotate(-20deg)}html[data-theme="umbra"] .theme:before{transform:translateX(7px);background:var(--blood2)}.menu-btn{display:none;width:38px;height:38px;border:1px solid var(--line);background:var(--surface2);border-radius:4px}.mobile-nav{display:none}
/* common */
.kicker{font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:800}.display{font-family:Georgia,"Times New Roman",serif;font-weight:500;letter-spacing:.01em;line-height:.9}.muted{color:var(--muted)}.pill-row{display:flex;gap:8px;flex-wrap:wrap}.pill{border:1px solid var(--line);padding:6px 9px;border-radius:999px;color:var(--muted);font-size:.72rem}.btns{display:flex;gap:10px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:43px;padding:0 16px;text-decoration:none;border:1px solid var(--line2);background:var(--surface);border-radius:999px;font-size:.7rem;text-transform:uppercase;letter-spacing:.09em;transition:transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease),border-color var(--fast)}.btn:hover{transform:translateY(-1.5px);box-shadow:0 8px 18px color-mix(in srgb,var(--shadow) 82%,transparent)}.btn.primary{border-color:var(--gold);color:var(--gold);position:relative}.btn.primary:after{content:"";position:absolute;left:18px;right:18px;bottom:7px;height:2px;background:var(--blood2);clip-path:polygon(0 50%,12% 8%,22% 90%,35% 24%,51% 76%,64% 13%,78% 82%,91% 22%,100% 50%);opacity:.55}.section{padding:76px 0}.section-head{display:flex;align-items:end;justify-content:space-between;gap:28px;margin-bottom:26px;border-bottom:1px solid var(--line);padding-bottom:14px}.section-head h2{font-family:Georgia,"Times New Roman",serif;font-size:2rem;font-weight:500;margin:0}.section-head p{max-width:650px;margin:0;color:var(--muted);font-size:.85rem}.surface{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 16px 42px var(--shadow)}
/* scene */
.scene{position:relative;min-height:650px;overflow:hidden;background:radial-gradient(circle at 50% -8%,color-mix(in srgb,var(--gold) 13%,transparent),transparent 34%),linear-gradient(180deg,var(--scene),color-mix(in srgb,var(--scene) 70%,var(--bg)));border-bottom:1px solid var(--line)}.scene:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.03),transparent 24%,rgba(0,0,0,.03) 56%,rgba(0,0,0,.16));pointer-events:none}.eclipse{position:absolute;width:min(41vw,470px);aspect-ratio:1;border-radius:50%;background:var(--void);left:58%;top:70px;box-shadow:0 0 0 1px rgba(255,255,255,.025)}.eclipse:after{content:"";position:absolute;inset:-6px;border-radius:50%;border-top:2px solid var(--gold2);border-right:1px solid transparent;border-left:1px solid transparent;transform:rotate(-19deg);filter:drop-shadow(0 0 7px color-mix(in srgb,var(--gold2) 35%,transparent));pointer-events:none}.seal{position:absolute;left:58%;top:132px;width:min(48vw,560px);height:390px;transform:translateX(-3%);opacity:.24}.seal .arc{position:absolute;inset:20px;border:1px solid color-mix(in srgb,var(--gold) 50%,transparent);border-radius:50%;clip-path:inset(0 0 49% 0)}.seal .axis{position:absolute;left:50%;top:6%;height:72%;width:1px;background:linear-gradient(transparent,color-mix(in srgb,var(--gold) 60%,transparent),transparent)}.seal .slash{position:absolute;left:18%;right:5%;top:50%;height:3px;background:var(--blood2);transform:rotate(-17deg);clip-path:polygon(0 50%,10% 5%,17% 93%,29% 24%,40% 75%,52% 12%,63% 88%,76% 26%,90% 79%,100% 50%);opacity:.72}.tower,.mono{position:absolute;bottom:0;border:1px solid color-mix(in srgb,var(--line2) 32%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--ink) 6%,transparent),transparent)}.tower{width:42px;border-radius:10px 10px 0 0}.tower.t1{left:5%;height:310px}.tower.t2{left:17%;height:235px}.tower.t3{right:16%;height:270px}.tower.t4{right:5%;height:350px}.mono{width:88px}.mono.m1{left:30%;height:220px}.mono.m2{right:29%;height:260px}.mist{position:absolute;left:0;right:0;bottom:0;height:260px;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--bg) 32%,transparent),color-mix(in srgb,var(--bg) 76%,transparent));filter:blur(8px)}.hero-copy{position:relative;z-index:4;padding:118px 0 120px;max-width:650px}.hero-copy h1{font-size:clamp(4rem,8vw,7.4rem);margin:15px 0 22px}.hero-copy p{max-width:600px;color:var(--muted);font-size:1.02rem}.hero-copy .btns{margin-top:24px}.hero-copy .pill-row{margin-top:22px}
/* depth break & bastion */
.bastion{position:relative;background:var(--surface);margin-top:-58px;z-index:8;border:1px solid var(--line);border-radius:12px 12px 0 0;box-shadow:0 -22px 48px var(--shadow-contact),0 -7px 14px color-mix(in srgb,var(--shadow-contact) 62%,transparent),inset 0 1px 0 color-mix(in srgb,white 35%,transparent);padding:38px 34px 58px}.bastion:before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:.45}.identity{display:grid;grid-template-columns:1.1fr .9fr;gap:46px;align-items:start}.identity h2{font-family:Georgia,"Times New Roman",serif;font-weight:500;font-size:3rem;line-height:1;margin:0 0 18px}.identity .lead{color:var(--muted);font-size:1rem}.principles{display:grid;gap:10px}.principle{border-top:1px solid var(--line);padding:13px 0;display:grid;grid-template-columns:36px 1fr;gap:12px}.principle b{font-family:Georgia,"Times New Roman",serif;color:var(--gold);font-weight:500}.principle strong{display:block;font-size:.83rem}.principle span{display:block;color:var(--muted);font-size:.76rem;margin-top:2px}.entry-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:36px}.entry{min-height:168px;border:1px solid var(--line);background:var(--surface2);padding:20px;text-decoration:none;position:relative;overflow:hidden;transition:transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.entry:hover{transform:translateY(-2px);box-shadow:0 10px 22px color-mix(in srgb,var(--shadow) 84%,transparent)}.entry small{color:var(--gold);letter-spacing:.12em}.entry h3{font-family:Georgia,"Times New Roman",serif;font-size:1.32rem;font-weight:500;margin:26px 0 5px}.entry p{margin:0;color:var(--muted);font-size:.76rem}.entry:after{content:"";position:absolute;right:-8%;top:24%;width:34%;height:2px;background:var(--blood2);clip-path:polygon(0 50%,13% 3%,24% 95%,38% 22%,53% 74%,68% 10%,82% 86%,100% 50%);opacity:.28}
/* news home */
.news-grid{display:grid;grid-template-columns:1.45fr .75fr;gap:14px}.feature-news{min-height:355px;padding:28px;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden;background:linear-gradient(150deg,var(--surface2),var(--surface));border:1px solid var(--line);text-decoration:none;transition:transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.feature-news:hover{transform:translateY(-2px);box-shadow:0 10px 22px color-mix(in srgb,var(--shadow) 82%,transparent)}.feature-news:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 75% 20%,color-mix(in srgb,var(--gold) 16%,transparent),transparent 12rem),linear-gradient(145deg,transparent 32%,color-mix(in srgb,var(--blood) 8%,transparent))}.feature-news:after{content:"";position:absolute;right:8%;top:19%;width:170px;height:3px;background:var(--blood2);clip-path:polygon(0 50%,13% 8%,20% 88%,33% 19%,44% 78%,55% 11%,67% 91%,78% 23%,91% 80%,100% 50%);opacity:.6}.feature-news>*{position:relative;z-index:2}.date{font-size:.64rem;letter-spacing:.11em;color:var(--muted);text-transform:uppercase}.feature-news h3{font-family:Georgia,"Times New Roman",serif;font-size:2.2rem;font-weight:500;margin:9px 0}.feature-news p{max-width:55ch;color:var(--muted);font-size:.8rem}.news-rail{display:grid;gap:10px}.news-rail .empty-card{padding:20px;border:1px solid var(--line);background:var(--surface2);min-height:108px}.news-rail strong{display:block;font-family:Georgia,"Times New Roman",serif;font-weight:500}.news-rail span{font-size:.72rem;color:var(--muted)}
/* chronicle */
.chronicle{display:grid;grid-template-columns:1.05fr .95fr;gap:20px}.chron-feature{min-height:330px;padding:26px;display:flex;flex-direction:column;justify-content:flex-end;background:linear-gradient(155deg,var(--surface2),var(--surface));border:1px solid var(--line);position:relative;overflow:hidden;transition:transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease)}.chron-feature:hover{transform:translateY(-2px);box-shadow:0 10px 22px color-mix(in srgb,var(--shadow) 82%,transparent)}.chron-feature:before{content:"";position:absolute;width:210px;height:210px;border-radius:50%;background:var(--void);right:8%;top:35px}.chron-feature:after{content:"";position:absolute;width:220px;height:220px;border-radius:50%;right:calc(8% - 5px);top:30px;border-top:2px solid var(--gold2);transform:rotate(-18deg)}.chron-feature>*{position:relative;z-index:2}.chron-feature h3{font-family:Georgia,"Times New Roman",serif;font-size:2rem;font-weight:500;margin:7px 0}.timeline{position:relative;padding-left:30px;display:grid;gap:0}.timeline:before{content:"";position:absolute;left:9px;top:8px;bottom:8px;width:1px;background:var(--line2)}.tl{padding:0 0 24px 20px;position:relative}.tl:before{content:"";position:absolute;left:-26px;top:5px;width:10px;height:10px;transform:rotate(45deg);border:1px solid var(--gold);background:var(--surface)}.tl.current:before{background:var(--blood2);border-color:var(--blood2);box-shadow:0 0 13px color-mix(in srgb,var(--blood2) 45%,transparent)}.tl small{color:var(--muted);font-size:.64rem}.tl strong{display:block;font-family:Georgia,"Times New Roman",serif;font-weight:500;margin-top:3px}.tl span{display:block;color:var(--muted);font-size:.75rem;margin-top:3px}
/* inner hero */
.inner-scene{position:relative;min-height:300px;overflow:hidden;background:linear-gradient(180deg,var(--scene),color-mix(in srgb,var(--scene) 62%,var(--bg)));border-bottom:1px solid var(--line)}.inner-scene .eclipse{width:260px;left:calc(89% - 260px);right:auto;top:25px}.inner-scene .seal{width:340px;height:260px;left:auto;right:7%;top:28px;transform:none}.inner-copy{position:relative;z-index:3;padding:90px 0 82px;max-width:740px}.inner-copy h1{font-size:clamp(3rem,6vw,5.4rem);margin:13px 0 16px}.inner-copy p{max-width:650px;color:var(--muted)}.inner-bastion{position:relative;z-index:6;margin-top:-42px;background:var(--surface);border:1px solid var(--line);border-radius:10px 10px 0 0;box-shadow:0 -19px 44px var(--shadow-contact),0 -6px 13px color-mix(in srgb,var(--shadow-contact) 62%,transparent),inset 0 1px 0 color-mix(in srgb,white 35%,transparent);padding:32px 30px 70px}
/* article */
.article-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:46px}.toc{position:sticky;top:98px;align-self:start;border-top:1px solid var(--line)}.toc a{display:block;text-decoration:none;color:var(--muted);font-size:.72rem;padding:9px 4px;border-bottom:1px solid var(--line)}.toc a:hover{color:var(--ink)}.article{max-width:820px}.article section{padding:0 0 36px;margin:0 0 36px;border-bottom:1px solid var(--line)}.article section:last-child{border-bottom:0}.article h2{font-family:Georgia,"Times New Roman",serif;font-size:1.75rem;font-weight:500;margin:0 0 14px}.article h3{font-family:Georgia,"Times New Roman",serif;font-size:1.14rem;font-weight:500;margin:22px 0 8px}.article p{margin:0 0 14px;color:color-mix(in srgb,var(--ink) 90%,var(--muted))}.article ul{padding-left:20px}.article li{margin:6px 0}.callout{padding:18px 20px;border:1px solid var(--line);border-left:3px solid var(--gold);background:var(--surface2);margin:18px 0}.callout strong{display:block;margin-bottom:5px}.callout.danger{border-left-color:var(--blood2)}.role-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.role{border:1px solid var(--line);padding:15px;background:var(--surface2)}.role strong{display:block;font-family:Georgia,"Times New Roman",serif;font-weight:500}.role span{color:var(--muted);font-size:.76rem}
/* loot map */
.decision-map{display:grid;grid-template-columns:1fr 44px 1fr 44px 1fr;gap:8px;align-items:stretch;margin:0 0 42px}.decision{border:1px solid var(--line);background:var(--surface2);padding:18px;min-height:145px}.decision small{color:var(--gold);letter-spacing:.11em}.decision strong{display:block;font-family:Georgia,"Times New Roman",serif;font-size:1.14rem;font-weight:500;margin:18px 0 5px}.decision span{display:block;color:var(--muted);font-size:.74rem}.arrow{display:grid;place-items:center;color:var(--gold);font-size:1.2rem}
/* news landing/article */
.news-list{display:grid;grid-template-columns:1.45fr .75fr;gap:14px}.news-card{display:block;text-decoration:none;border:1px solid var(--line);background:var(--surface2);padding:22px;transition:transform var(--fast) var(--ease)}.news-card:hover{transform:translateY(-1.5px)}.news-card.featured{min-height:330px;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden}.news-card.featured:before{content:"";position:absolute;right:9%;top:30px;width:180px;height:180px;border-radius:50%;background:var(--void)}.news-card.featured:after{content:"";position:absolute;right:calc(9% - 5px);top:25px;width:190px;height:190px;border-radius:50%;border-top:2px solid var(--gold2);transform:rotate(-18deg)}.news-card>*{position:relative;z-index:2}.news-card h2,.news-card h3{font-family:Georgia,"Times New Roman",serif;font-weight:500;margin:8px 0}.news-card h2{font-size:2.1rem}.article-head{max-width:850px;margin:0 auto 42px}.article-head h1{font-size:clamp(3rem,6vw,5.5rem);margin:14px 0 18px}.prose{max-width:800px;margin:auto}.prose h2{font-family:Georgia,"Times New Roman",serif;font-weight:500;font-size:1.7rem;margin:38px 0 12px}.prose p{margin:0 0 16px}.prose .callout{margin:28px 0}
/* equipment */
.eq-toolbar{display:grid;grid-template-columns:1.5fr repeat(4,minmax(130px,.55fr));gap:8px;margin-bottom:12px}.eq-toolbar input,.eq-toolbar select{min-height:43px;border:1px solid var(--line);background:var(--surface2);padding:0 12px;border-radius:4px;outline:none}.eq-toolbar input:focus,.eq-toolbar select:focus{border-color:var(--gold)}.eq-summary{display:flex;justify-content:space-between;gap:18px;align-items:center;margin:12px 0;color:var(--muted);font-size:.72rem}.eq-table-wrap{position:relative}.eq-table{border:1px solid var(--line);background:var(--surface);overflow:hidden}.eq-row{display:grid;grid-template-columns:minmax(280px,1.6fr) .55fr .7fr .6fr .65fr;min-height:50px;border-bottom:1px solid var(--line);align-items:center}.eq-row:last-child{border-bottom:0}.eq-row.head{min-height:40px;background:var(--surface3);color:var(--muted);font-size:.65rem;text-transform:uppercase;letter-spacing:.08em}.eq-cell{padding:9px 12px;min-width:0}.eq-row.item{cursor:default;transition:background var(--fast)}.eq-row.item:hover,.eq-row.item:focus-within{background:color-mix(in srgb,var(--gold) 7%,var(--surface2))}.eq-name{font-family:Georgia,"Times New Roman",serif;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge{display:inline-flex;padding:3px 6px;border:1px solid var(--line);border-radius:999px;font-size:.62rem;color:var(--muted)}.badge.arch{border-color:var(--blood);color:var(--blood2)}.eq-load{display:block;margin:16px auto 0}.hover-card{position:fixed;z-index:100;pointer-events:none;width:min(390px,calc(100vw - 28px));padding:16px;border:1px solid var(--line2);background:color-mix(in srgb,var(--surface) 97%,transparent);box-shadow:0 18px 48px var(--shadow);border-radius:7px;opacity:0;transform:translateY(5px);transition:opacity 120ms,transform 120ms;backdrop-filter:blur(12px)}.hover-card.show{opacity:1;transform:none}.hover-card h3{font-family:Georgia,"Times New Roman",serif;font-size:1.1rem;font-weight:500;margin:4px 0 9px}.hover-meta{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:11px}.hover-source{border-top:1px solid var(--line);padding:7px 0;font-size:.7rem}.hover-source strong{display:block;font-weight:600}.hover-source span{color:var(--muted)}.eq-empty{text-align:center;padding:54px;color:var(--muted);border:1px solid var(--line);display:none}
/* footer */
.footer{border-top:1px solid var(--line);padding:28px 0 40px;background:var(--surface)}.footer-inner{display:flex;justify-content:space-between;gap:20px;align-items:center}.footer-brand{font-family:Georgia,"Times New Roman",serif;letter-spacing:.15em}.footer small{color:var(--muted)}
@media(max-width:1050px){.nav{gap:12px}.nav a{font-size:.61rem}.entry-grid{grid-template-columns:1fr}.identity,.chronicle{grid-template-columns:1fr}.article-layout{grid-template-columns:200px minmax(0,1fr)}.eq-toolbar{grid-template-columns:1fr 1fr 1fr}.eq-row{grid-template-columns:minmax(220px,1.4fr) .6fr .75fr .7fr}.eq-row .sources-col{display:none}.eclipse{left:auto;right:-70px}.seal{left:auto;right:-80px;transform:none}}
@media(max-width:780px){:root{font-size:108%}.shell{width:min(100% - 24px,var(--max))}.header{grid-template-columns:auto 1fr auto;height:58px}.nav{display:none}.menu-btn{display:block}.mobile-nav.open{display:grid;position:absolute;left:12px;right:12px;top:72px;background:var(--surface);border:1px solid var(--line);box-shadow:0 18px 38px var(--shadow);padding:8px}.mobile-nav a{text-decoration:none;padding:12px;border-bottom:1px solid var(--line);color:var(--muted);font-size:.76rem}.mobile-nav a:last-child{border-bottom:0}.scene{min-height:660px}.hero-copy{padding:86px 0 205px;max-width:92%}.hero-copy h1{font-size:4.25rem}.eclipse{width:310px;right:-90px;top:280px}.seal{width:360px;height:300px;right:-130px;top:265px}.tower.t1,.tower.t4{display:none}.mono.m1{left:8%}.mono.m2{right:10%}.bastion{margin-top:-42px;padding:28px 20px 45px}.identity h2{font-size:2.4rem}.news-grid,.news-list{grid-template-columns:1fr}.feature-news{min-height:300px}.chronicle{grid-template-columns:1fr}.chron-feature{min-height:280px}.inner-scene{min-height:315px}.inner-copy{padding:72px 0 95px}.inner-scene .eclipse{left:calc(100% - 160px);right:auto;top:70px;width:230px}.inner-scene .seal{right:-100px;top:60px;width:300px}.inner-bastion{padding:24px 18px 50px}.article-layout{grid-template-columns:1fr}.toc{position:static;display:grid;grid-template-columns:repeat(2,1fr);margin-bottom:30px}.role-grid{grid-template-columns:1fr}.decision-map{grid-template-columns:1fr}.arrow{height:30px;transform:rotate(90deg)}.eq-toolbar{grid-template-columns:1fr 1fr}.eq-row{grid-template-columns:minmax(200px,1.5fr) .75fr .65fr}.eq-row .category-col,.eq-row .sources-col{display:none}.footer-inner{align-items:flex-start;flex-direction:column}}
@media(max-width:520px){.hero-copy h1{font-size:3.45rem}.entry-grid{gap:8px}.section{padding:55px 0}.section-head{align-items:start;flex-direction:column}.toc{grid-template-columns:1fr}.eq-toolbar{grid-template-columns:1fr}.eq-row{grid-template-columns:minmax(170px,1fr) .65fr}.eq-row .tier-col,.eq-row .category-col,.eq-row .sources-col{display:none}.hover-card{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}


/* =========================================================
   X ECLIPSE production preview v0.3
   Continuous world / single Bastion / shared eclipse motion
   ========================================================= */

/* one continuous world behind every page */
html,body{min-height:100%}
body{background:var(--scene);overflow-x:hidden}
main#content{position:relative;isolation:isolate;background:transparent;min-height:calc(100vh - 88px)}
main#content>.world-backdrop{position:absolute;z-index:-2;inset:0;overflow:hidden;pointer-events:none;background:
  radial-gradient(ellipse at 57% 5%,color-mix(in srgb,var(--gold) 11%,transparent),transparent 25%),
  radial-gradient(ellipse at 12% 38%,color-mix(in srgb,var(--ink) 4%,transparent),transparent 28%),
  radial-gradient(ellipse at 88% 63%,color-mix(in srgb,var(--gold) 5%,transparent),transparent 31%),
  linear-gradient(180deg,var(--scene) 0%,color-mix(in srgb,var(--scene) 92%,var(--bg)) 44%,color-mix(in srgb,var(--scene) 86%,var(--bg)) 100%)}
main#content>.world-backdrop:before{content:"";position:absolute;inset:0;background:
  linear-gradient(90deg,transparent 0 8%,color-mix(in srgb,var(--ink) 2.5%,transparent) 8.05%,transparent 8.1% 91%,color-mix(in srgb,var(--ink) 2.5%,transparent) 91.05%,transparent 91.1%),
  linear-gradient(180deg,rgba(255,255,255,.025),transparent 17%,rgba(0,0,0,.035) 46%,transparent 72%,rgba(0,0,0,.055));opacity:.8}
main#content>.world-backdrop:after{content:"";position:absolute;left:-10%;right:-10%;top:20%;height:46%;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--scene) 20%,transparent),transparent 64%);filter:blur(42px);opacity:.65}
.world-mono{position:absolute;display:block;border:1px solid color-mix(in srgb,var(--line2) 28%,transparent);background:linear-gradient(180deg,color-mix(in srgb,var(--ink) 5%,transparent),color-mix(in srgb,var(--ink) 1%,transparent));box-shadow:inset 0 1px color-mix(in srgb,white 8%,transparent);opacity:.58}
.world-mono.w1{left:5%;top:250px;width:54px;height:460px;border-radius:12px 12px 0 0}
.world-mono.w2{left:17%;top:410px;width:44px;height:560px;border-radius:10px 10px 0 0;opacity:.4}
.world-mono.w3{right:16%;top:340px;width:48px;height:620px;border-radius:11px 11px 0 0;opacity:.45}
.world-mono.w4{right:5%;top:210px;width:60px;height:760px;border-radius:12px 12px 0 0}
.world-mono.w5{left:2%;top:1250px;width:90px;height:720px;opacity:.26}
.world-mono.w6{right:1%;top:1130px;width:110px;height:880px;opacity:.24}
.world-mono.w7{left:12%;top:2050px;width:72px;height:760px;opacity:.20}
.world-mono.w8{right:11%;top:2220px;width:82px;height:880px;opacity:.18}
.world-veil{position:absolute;display:block;left:-5%;right:-5%;top:520px;height:680px;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--scene) 38%,transparent) 35%,color-mix(in srgb,var(--scene) 64%,transparent) 64%,transparent);filter:blur(20px);opacity:.80}
.world-veil.v2{top:1660px;height:850px;opacity:.52}

/* hero and inner hero are windows into the same world, never separate backgrounds */
.scene,.inner-scene{background:transparent!important;border-bottom:0!important}
.scene:before{background:linear-gradient(180deg,rgba(255,255,255,.025),transparent 22%,rgba(0,0,0,.025) 58%,rgba(0,0,0,.08));opacity:.55}
.scene>.tower,.scene>.mono,.scene>.mist{display:none}
.inner-scene{overflow:visible}

/* eased cross-document identity motion: only the eclipse travels; the page itself never fades/scales */
.eclipse{view-transition-name:xe-eclipse;contain:paint}
.seal{contain:paint}
@view-transition{navigation:auto}
::view-transition{pointer-events:none}
::view-transition-group(root){animation-duration:0s}
::view-transition-old(root),::view-transition-new(root){animation:none;pointer-events:none}
::view-transition-group(xe-eclipse){animation-duration:.56s;animation-timing-function:cubic-bezier(.65,0,.35,1);pointer-events:none}

/* theme switch: disk and crescent travel as one object */
.theme:before,.theme:after{transition:transform .55s var(--ease),background .3s,border-color .3s}
html[data-theme="ascension"] .theme:before{transform:translateX(-7px)}
html[data-theme="ascension"] .theme:after{transform:translateX(-7px) rotate(-20deg)}
html[data-theme="umbra"] .theme:before{transform:translateX(7px);background:var(--blood2)}
html[data-theme="umbra"] .theme:after{transform:translateX(7px) rotate(-20deg)}

/* one massive working plateau on homepage */
.home-plateau{margin-top:-58px;padding:38px 34px 18px;border-radius:12px 12px 8px 8px;box-shadow:
  0 -25px 54px var(--shadow-contact),
  0 -8px 16px color-mix(in srgb,var(--shadow-contact) 68%,transparent),
  0 34px 72px color-mix(in srgb,var(--shadow) 56%,transparent),
  inset 0 1px 0 color-mix(in srgb,white 35%,transparent)}
.home-plateau .entry-grid{margin-bottom:14px}
.plateau-section{position:relative;padding:72px 0 62px;border-top:1px solid var(--line)}
.plateau-section:first-of-type{margin-top:30px}
.plateau-section .section-head{margin-bottom:26px}
.plateau-section:last-child{padding-bottom:48px}

/* internal pages keep the same physical object treatment */
.inner-bastion{border-radius:10px 10px 8px 8px;box-shadow:
  0 -22px 48px var(--shadow-contact),
  0 -7px 15px color-mix(in srgb,var(--shadow-contact) 68%,transparent),
  0 28px 64px color-mix(in srgb,var(--shadow) 48%,transparent),
  inset 0 1px 0 color-mix(in srgb,white 35%,transparent)}

/* footer does not cut the world into a third color band */
.footer{background:transparent;border-top:0;padding-top:22px}
.footer-inner{border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent);padding-top:24px}

/* local file preview fallback: short eased eclipse-only handoff; content remains visually stable */
.xe-local-leave .eclipse{transition:width .30s cubic-bezier(.65,0,.35,1),left .30s cubic-bezier(.65,0,.35,1),right .30s cubic-bezier(.65,0,.35,1),top .30s cubic-bezier(.65,0,.35,1),transform .30s cubic-bezier(.65,0,.35,1)}
body[data-page="home"].xe-local-leave .eclipse{width:260px;left:auto;right:11%;top:25px}
body[data-page="inner"].xe-local-home .eclipse{width:min(41vw,470px);left:58%;right:auto;top:70px;transform:none}

@media(max-width:780px){
  .world-mono.w1,.world-mono.w4{opacity:.35}.world-mono.w5,.world-mono.w6,.world-mono.w7,.world-mono.w8{opacity:.08}
  .home-plateau{margin-top:-42px;padding:28px 20px 14px}
  .plateau-section{padding:54px 0 46px}
}


/* =========================================================
   X ECLIPSE v0.7 · GSAP motion prototype
   SmoothSmoother = page weight, ScrollTrigger = subtle choreography
   ========================================================= */
#smooth-wrapper{width:100%;overflow:hidden}
#smooth-content{width:100%;overflow:visible}
html.xe-gsap-ready #smooth-content{will-change:transform}
html.xe-gsap-ready .world-mono,html.xe-gsap-ready .world-veil,html.xe-gsap-ready .seal{will-change:transform}
/* header remains outside ScrollSmoother's transformed content */
.header-wrap{z-index:90}
/* keep native anchor targets from hiding under the sticky header */
[id]{scroll-margin-top:92px}
/* subtle section choreography should never fight the UI */
.xe-motion-reveal{will-change:transform,opacity}
@media(prefers-reduced-motion:reduce){
  #smooth-content,.world-mono,.world-veil,.seal,.xe-motion-reveal{transform:none!important;transition:none!important;animation:none!important}
}


/* =========================================================
   X ECLIPSE v0.10 · MONOLITH DEPTH / MATERIAL PASS
   Stronger readable architecture without flattening depth
   ========================================================= */
html[data-theme="ascension"]{
  --mono-near-a:rgba(74,78,76,.20);
  --mono-near-b:rgba(74,78,76,.075);
  --mono-mid-a:rgba(82,86,84,.145);
  --mono-mid-b:rgba(82,86,84,.045);
  --mono-far-a:rgba(88,92,90,.105);
  --mono-far-b:rgba(88,92,90,.025);
  --mono-edge:rgba(70,75,72,.28);
  --mono-highlight:rgba(255,255,255,.50);
  --mono-shadow:rgba(44,48,46,.18);
}
html[data-theme="umbra"]{
  --mono-near-a:rgba(174,181,186,.135);
  --mono-near-b:rgba(111,119,126,.035);
  --mono-mid-a:rgba(145,153,160,.095);
  --mono-mid-b:rgba(91,99,106,.022);
  --mono-far-a:rgba(121,130,138,.065);
  --mono-far-b:rgba(75,82,89,.012);
  --mono-edge:rgba(185,194,201,.20);
  --mono-highlight:rgba(236,242,246,.12);
  --mono-shadow:rgba(0,0,0,.48);
}
.world-mono{
  opacity:1!important;
  border-color:var(--mono-edge)!important;
  background:
    linear-gradient(90deg,var(--mono-near-a) 0%,var(--mono-near-b) 56%,transparent 100%)!important;
  box-shadow:
    -14px 22px 44px var(--mono-shadow),
    inset 1px 0 0 var(--mono-highlight),
    inset -1px 0 0 color-mix(in srgb,var(--mono-edge) 48%,transparent)!important;
}
/* near plane */
.world-mono.w1,.world-mono.w4{
  opacity:.92!important;
  filter:none;
}
/* middle plane */
.world-mono.w2,.world-mono.w3{
  opacity:.74!important;
  background:linear-gradient(90deg,var(--mono-mid-a),var(--mono-mid-b) 60%,transparent)!important;
  box-shadow:-10px 18px 34px color-mix(in srgb,var(--mono-shadow) 76%,transparent),inset 1px 0 0 color-mix(in srgb,var(--mono-highlight) 72%,transparent)!important;
  filter:blur(.15px);
}
/* far plane */
.world-mono.w5,.world-mono.w6{
  opacity:.54!important;
  background:linear-gradient(90deg,var(--mono-far-a),var(--mono-far-b) 62%,transparent)!important;
  box-shadow:-7px 15px 26px color-mix(in srgb,var(--mono-shadow) 52%,transparent),inset 1px 0 0 color-mix(in srgb,var(--mono-highlight) 48%,transparent)!important;
  filter:blur(.55px);
}
.world-mono.w7,.world-mono.w8{
  opacity:.40!important;
  background:linear-gradient(90deg,color-mix(in srgb,var(--mono-far-a) 76%,transparent),var(--mono-far-b) 64%,transparent)!important;
  box-shadow:-5px 12px 22px color-mix(in srgb,var(--mono-shadow) 38%,transparent)!important;
  filter:blur(.9px);
}
/* Light theme needed stronger architectural separation. */
html[data-theme="ascension"] main#content>.world-backdrop{
  background:
    radial-gradient(ellipse at 57% 5%,color-mix(in srgb,var(--gold) 12%,transparent),transparent 25%),
    radial-gradient(ellipse at 8% 35%,rgba(75,79,77,.075),transparent 30%),
    radial-gradient(ellipse at 92% 60%,rgba(69,73,71,.055),transparent 32%),
    linear-gradient(180deg,#d8dad6 0%,#d3d5d1 42%,#cbceca 100%)!important;
}
html[data-theme="ascension"] .world-veil{opacity:.54!important;filter:blur(26px)}
html[data-theme="ascension"] .world-veil.v2{opacity:.34!important}
html[data-theme="umbra"] .world-veil{opacity:.70!important}
html[data-theme="umbra"] .world-veil.v2{opacity:.44!important}
/* A faint floor shadow makes the large forms feel planted in depth. */
main#content>.world-backdrop:after{
  background:
    radial-gradient(ellipse at 17% 19%,color-mix(in srgb,var(--ink) 7%,transparent),transparent 20%),
    radial-gradient(ellipse at 83% 25%,color-mix(in srgb,var(--ink) 6%,transparent),transparent 22%),
    radial-gradient(ellipse at center,color-mix(in srgb,var(--scene) 18%,transparent),transparent 64%)!important;
  opacity:.82!important;
}
@media(max-width:780px){
  .world-mono.w1,.world-mono.w4{opacity:.70!important}
  .world-mono.w2,.world-mono.w3{opacity:.52!important}
  .world-mono.w5,.world-mono.w6{opacity:.25!important}
  .world-mono.w7,.world-mono.w8{opacity:.12!important}
}


/* Corrupted Perfect integration — additive layer over approved v0.10 */
.breach-panel{position:relative!important;background:transparent!important;border-color:transparent!important;isolation:isolate;overflow:hidden!important;contain:paint}
.breach-panel.entry:after,.breach-panel.feature-news:before,.breach-panel.feature-news:after,.breach-panel.chron-feature:before,.breach-panel.chron-feature:after,.breach-panel.news-card.featured:before,.breach-panel.news-card.featured:after{display:none!important}
.breach-panel>.breach-underlay{position:absolute;z-index:0;pointer-events:none;transition:transform .5s var(--ease),filter .45s var(--ease),opacity .45s var(--ease);opacity:.96}
.breach-panel>.breach-underlay .breach-life{display:block;width:100%;height:100%;animation:breachBreathe 5.8s ease-in-out infinite;transform-origin:50% 50%}
.breach-panel>.breach-underlay svg{width:100%;height:100%;display:block}
.breach-panel>.breach-skin{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
.breach-panel>:not(.breach-underlay):not(.breach-skin){position:relative;z-index:2}
.breach-panel.breach-gold>.breach-underlay{left:-5%;top:-7%;width:48%;height:56%}
.breach-panel.breach-watcher>.breach-underlay{right:-3%;bottom:-7%;width:48%;height:48%}

.breach-panel:hover>.breach-underlay{transform:scale(1.045) translateX(4px);filter:saturate(1.12) brightness(1.08)}

@keyframes breachBreathe{0%,100%{transform:scale(1) translate3d(0,0,0)}50%{transform:scale(1.035) translate3d(2px,-2px,0)}}
.breach-underlay .gold-core{fill:#17130c}.breach-underlay .gold-glow{fill:#654b20}.breach-underlay .gold-hot{fill:#d2ad61}.breach-underlay .gold-line{stroke:#ead6aa;stroke-opacity:.5;fill:none;stroke-width:2.2}
.breach-underlay .watch-core{fill:#160207}.breach-underlay .watch-glow{fill:#821020}.breach-underlay .watch-hot{fill:#f0526b}.breach-underlay .watch-iris{fill:#280006}.breach-underlay .watch-line{stroke:#b5283d;stroke-opacity:.38;fill:none;stroke-width:2.2}
.breach-underlay .rupt-core{fill:#230208}.breach-underlay .rupt-glow{fill:#861522}.breach-underlay .rupt-hot{fill:#f05a70}.breach-underlay .rupt-line{stroke:#ff7b8e;stroke-opacity:.55;fill:none;stroke-width:2.4}
html[data-theme="ascension"] .breach-underlay{filter:saturate(.84) contrast(.94)}
html[data-theme="ascension"] .breach-panel:hover>.breach-underlay{filter:saturate(.98) contrast(.98) brightness(1.02)}

.corrupt-btn{position:relative!important;display:inline-block!important;width:244px!important;height:58px!important;min-height:58px!important;padding:0!important;border:0!important;border-radius:0!important;background:none!important;overflow:visible!important;isolation:isolate;box-shadow:none!important;transition:filter .32s var(--ease)!important;text-transform:none!important;letter-spacing:normal!important}
.corrupt-btn.primary:after{display:none!important}
.corrupt-btn>.corrupt-underlay{position:absolute;right:-4%;bottom:-20%;width:49%;height:78%;pointer-events:none;z-index:0;transition:transform .5s var(--ease),filter .45s var(--ease);filter:drop-shadow(0 0 12px color-mix(in srgb,var(--blood2) 20%,transparent))}
.corrupt-btn>.corrupt-underlay .breach-life{display:block;width:100%;height:100%;animation:breachBreathe 5.8s ease-in-out infinite}
.corrupt-btn>.corrupt-underlay svg{width:100%;height:100%;display:block}
.corrupt-btn>.corrupt-button-skin{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
.corrupt-btn>.corrupt-content{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:0 18px 0 18px;color:var(--ink)}
.corrupt-btn .corrupt-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.09em;white-space:nowrap}
.corrupt-btn .corrupt-arrow{font-size:1.25rem;color:var(--gold2);transition:transform .35s var(--ease),color .35s var(--ease)}
.corrupt-btn:hover{filter:drop-shadow(0 8px 18px color-mix(in srgb,var(--shadow) 78%,transparent))}
.corrupt-btn:hover>.corrupt-underlay{transform:scale(1.06) translate(5px,-2px);filter:saturate(1.16) brightness(1.1) drop-shadow(0 0 14px color-mix(in srgb,var(--blood2) 28%,transparent))}
.corrupt-btn:hover .corrupt-arrow{transform:translateX(4px);color:var(--gold2)}
html[data-theme="ascension"] .corrupt-btn>.corrupt-underlay{filter:saturate(.85) contrast(.94)}

@media(max-width:520px){.corrupt-btn{width:min(100%,244px)!important}}
@media(prefers-reduced-motion:reduce){.breach-panel>.breach-underlay .breach-life,.corrupt-btn>.corrupt-underlay .breach-life{animation:none!important}}

.corrupt-underlay .watch-core{fill:#160207}.corrupt-underlay .watch-glow{fill:#821020}.corrupt-underlay .watch-hot{fill:#f0526b}.corrupt-underlay .watch-iris{fill:#280006}.corrupt-underlay .watch-line{stroke:#b5283d;stroke-opacity:.38;fill:none;stroke-width:2.2}



/* =========================================================
   X ECLIPSE v0.18 · SEAM KILL
   Seam sources disabled aggressively; right monolith cluster pulled inward and lowered again
   ========================================================= */
/* Header is intentionally artless for now. A dedicated header artwork will be added later. */
.header{border:1px solid color-mix(in srgb,var(--line) 86%,transparent)!important;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 99%,white 1%),color-mix(in srgb,var(--surface) 97%,var(--bg) 3%))!important;box-shadow:0 12px 36px color-mix(in srgb,var(--shadow) 68%,transparent)!important;overflow:hidden!important}
.header:before{display:block!important;content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.12),transparent 34%,rgba(0,0,0,.025));opacity:.72}

/* The old ritual guide-lines were only a construction layer. */
.seal{display:none!important}
.scene{border-bottom:none!important}
.bastion:before{display:none!important}
.world-veil,.world-veil.v2,.mist{display:none!important}
main#content>.world-backdrop:before,main#content>.world-backdrop:after,.scene:before{display:none!important}
/* Hard-disable the previous CSS monolith placeholders even if an old fragment is reintroduced. */
.world-mono,.world-texture{display:none!important}
/* Real monolith art is now the only architecture layer. */
.world-art{scale:1;transition:opacity var(--mid) var(--ease);will-change:transform,scale}
.world-art.art-left{left:-12%;top:34px;width:min(74vw,1180px);opacity:.62;transform-origin:18% 32%;filter:saturate(.95) contrast(1.03) drop-shadow(0 32px 56px color-mix(in srgb,var(--shadow) 62%,transparent))}
.world-art.art-right{right:14%;top:1120px;width:min(72vw,1120px);opacity:.28;transform:scaleX(-1);transform-origin:82% 38%;filter:saturate(.84) contrast(.98) blur(.25px) drop-shadow(0 22px 42px color-mix(in srgb,var(--shadow) 48%,transparent))}
html[data-theme="ascension"] .world-art.art-left{opacity:.32;filter:saturate(.76) contrast(.94) brightness(.98) drop-shadow(0 24px 44px color-mix(in srgb,var(--shadow) 30%,transparent))}
html[data-theme="ascension"] .world-art.art-right{opacity:.15;filter:saturate(.68) contrast(.90) brightness(.99) blur(.45px) drop-shadow(0 14px 28px color-mix(in srgb,var(--shadow) 16%,transparent))}
html[data-theme="umbra"] .world-art.art-left{opacity:.64}
html[data-theme="umbra"] .world-art.art-right{opacity:.30}
/* Make the Manifest fracture read as an intentional corner, not a tiny chip. */
.home-plateau .entry.breach-gold>.breach-underlay{left:-3%!important;top:-11%!important;width:92%!important;height:104%!important}
@media(max-width:780px){
  .world-art.art-left{left:-28%;top:170px;width:158vw;opacity:.44}
  .world-art.art-right{right:-4%;top:1240px;width:146vw;opacity:.14;display:block}
  html[data-theme="ascension"] .world-art.art-left{opacity:.26}
  html[data-theme="ascension"] .world-art.art-right{opacity:.11}
}
@media(prefers-reduced-motion:reduce){.world-art{scale:1!important}}


.nav a.active{color:var(--ink)!important}.nav a.active:after{content:""!important;display:block!important;position:absolute;left:0;right:0;bottom:12px;height:1px;background:var(--gold)!important}.nav a.active:before{content:""!important;display:block!important;position:absolute;left:55%;bottom:10px;width:28px;height:3px;background:var(--blood2)!important;clip-path:polygon(0 52%,17% 6%,31% 90%,48% 23%,66% 79%,83% 10%,100% 51%);opacity:.72!important}

/* Restore the wide shadow strip under the sticky top navigation, like the earlier build. */

/* v0.23: remove the page-wide header strip and tune breach cards/corners. */
.header-wrap:after{display:none!important}
/* The news / chron corner should be translucent, not fully missing. */


.breach-panel.breach-watcher::before{width:30%;height:38%;clip-path:polygon(100% 0,100% 100%,21% 100%,28% 89%,43% 93%,49% 79%,62% 82%,68% 65%,81% 69%,86% 51%)}
/* Home manifesto card: smaller break, bigger image, shifted inward so there is no ugly gap. */
.home-plateau .entry.breach-gold>.breach-underlay{left:-3%!important;top:-11%!important;width:92%!important;height:104%!important}
.breach-panel.breach-gold:hover>.breach-underlay{transform:scale(1.03) translateX(2px)!important;filter:saturate(1.02) brightness(1.03)}

.header-wrap{overflow:visible!important}
.header-wrap:after{display:none!important}
.header-wrap>.shell,.header-wrap .header{position:relative;z-index:1}
html[data-theme="ascension"] .header-wrap:after{display:none!important}
html[data-theme="umbra"] .header-wrap:after{display:none!important}







/* =========================================================
   X ECLIPSE v0.28 · UNIFIED BREACH SYSTEM
   Shared breach templates. One geometry per type, no per-card drift.
   ========================================================= */

.breach-panel>.breach-skin{display:block!important}
.breach-panel{--breach-scale:1;--breach-shift-x:0px;--breach-shift-y:0px}
.breach-panel>.breach-underlay{transform:translate(var(--breach-shift-x),var(--breach-shift-y)) scale(var(--breach-scale))}
.breach-panel:hover>.breach-underlay{transform:translate(calc(var(--breach-shift-x) + 4px),var(--breach-shift-y)) scale(calc(var(--breach-scale) * 1.045));filter:saturate(1.12) brightness(1.08)}

html[data-theme="ascension"] .breach-panel:hover>.breach-underlay{filter:saturate(.98) contrast(.98) brightness(1.02)}


/* =========================================================
   X ECLIPSE v0.29 · RUPTURE TEXTURE
   Eye texture in rupture breach cards; corner made ~15% less transparent.
   ========================================================= */







/* =========================================================
   X ECLIPSE v0.30 · RUPTURE GRADIENT BLEND
   Remove the inner dark stair band and fade the rupture corner smoothly.
   ========================================================= */



/* =========================================================
   X ECLIPSE v0.31 · RUPTURE SMOOTH FADE
   No stepped silhouette: one smooth curved fade into the texture.
   ========================================================= */



/* =========================================================
   X ECLIPSE v0.32 · RUPTURE RADIAL FADE
   Fade origin moved to the actual bottom-right rupture corner.
   ========================================================= */

/* =========================================================
   X ECLIPSE v0.33 · RUPTURE FEATHERED RADIAL
   Full-card radial mask removes the last visible geometric edge.
   ========================================================= */




/* =========================================================
   X ECLIPSE v0.34 · RUPTURE UNDERLAY ROUNDING
   Shrink the underlay slightly and clip it with rounded corners
   so the texture does not protrude as a rectangular plate.
   ========================================================= */






/* =========================================================
   X ECLIPSE v0.35 · RUPTURE UNDERLAY REFINE
   Reduce the rupture texture plate a bit more and enforce rounded clipping.
   ========================================================= */






/* =========================================================
   X ECLIPSE v0.36 · RUPTURE CSS UNIFIED
   Stop fighting separate underlay + mask rectangles.
   Use one full-card texture layer and one full-card smooth fade.
   ========================================================= */

/* Hide the old rupture internals so they stop leaking geometry. */

/* Full-card texture, clipped by the card itself. */

/* One smooth feathered overlay above the texture and below content.
   Because it fills the whole card and inherits the card radius,
   there is no rectangular sub-plate left to protrude. */

/* Keep content above both visual layers. */

/* Softer hover so the card does not expose geometry shifts. */




/* =========================================================
   X ECLIPSE v0.37 · RUPTURE REAL CLIP FIX
   This override lives inside every page's inline CSS.
   Previous v0.36 rules were only in assets/site.css, while these pages
   carry their own inline stylesheet. The card, texture and fade now share
   the same rounded clipping box, with a small internal inset.
   ========================================================= */


/* Retire the old independent SVG/underlay geometry for rupture only. */


/* Force the unified texture layer back on even on cards where old
   feature/news rules disabled ::before with !important. */


/* One fade over the same inset/radius as the texture. No rectangular
   sub-plate can extend past the card because both layers share the clip. */




/* Keep hover motion on the card itself only; never move the texture layer
   outside the clipping box. */




/* =========================================================
   X ECLIPSE v0.38 · RUPTURE CASCADE FIX
   Final authoritative rupture rules. Must stay LAST in the stylesheet.
   ========================================================= */


/* Old SVG/underlay implementation is fully retired for rupture. */


/* Texture: slightly inset, same rounding as the card, impossible to protrude. */


/* Smooth fade over the SAME inset area. No secondary plate, no polygon. */









/* =========================================================
   X ECLIPSE v0.39 · RUPTURE SINGLE LAYER
   Rupture is now one clipped card background + one soft cover.
   No detached underlay, no SVG skin, no pseudo-element geometry.
   ========================================================= */


/* Kill every old pseudo-element implementation for rupture. */


/* Old SVG/underlay nodes are physically removed, but keep this as a guard. */


/* The cover is the actual card surface. It is fully opaque across most of
   the card and feathers to transparent only near the bottom-right texture. */




/* Keep the texture safely inside the rounded card on hover too. */




/* =========================================================
   X ECLIPSE v0.40 · RUPTURE MASKED ART
   The texture is no longer a rectangular card background.
   It lives in one full-card layer with its own radial alpha mask,
   so the image box edge cannot become visible.
   ========================================================= */








/* Do not move the texture box on hover; only very slightly intensify it. */





/* =========================================================
   X ECLIPSE v0.41 · RUPTURE RETHINK
   Rebuilt rupture as a single corner-art component:
   - no SVG skin
   - no old underlay
   - no pseudo-element image box
   - one corner wrapper with internal fade cover
   ========================================================= */
















/* =========================================================
   X ECLIPSE v0.42 · RUPTURE ALPHA ASSET
   Use a pre-faded transparent PNG corner asset.
   No CSS masks, no pseudo-element image boxes, no visible rectangle edges.
   ========================================================= */












/* =========================================================
   X ECLIPSE v0.48 · RUPTURE HOVER DIRECTION
   Single implementation only. All earlier rupture CSS was removed.
   The decorative image is a pre-faded alpha PNG anchored bottom-right.
   ========================================================= */
.breach-panel.breach-rupture{
  position:relative!important;
  overflow:hidden!important;
  isolation:isolate!important;
  background:var(--surface2)!important;
  border:1px solid var(--line)!important;
  border-radius:18px!important;
}
.breach-panel.breach-rupture::before,
.breach-panel.breach-rupture::after{content:none!important;display:none!important}
.breach-panel.breach-rupture>.rupture-v44{
  position:absolute!important;
  left:auto!important;
  top:auto!important;
  right:0!important;
  bottom:0!important;
  width:38%!important;
  height:42%!important;
  max-width:360px!important;
  z-index:1!important;
  pointer-events:none!important;
  display:block!important;
  overflow:hidden!important;
  border-bottom-right-radius:17px!important;
}
.feature-news.breach-panel.breach-rupture>.rupture-v44{width:35%!important;height:40%!important;max-width:320px!important}
.callout.danger.breach-panel.breach-rupture>.rupture-v44{width:31%!important;height:41%!important;max-width:285px!important}
.breach-panel.breach-rupture>.rupture-v44>img{
  position:absolute!important;
  right:-2%!important;
  bottom:-2%!important;
  width:106%!important;
  height:106%!important;
  display:block!important;
  object-fit:cover!important;
  object-position:right bottom!important;
  border:0!important;
  outline:0!important;
  transition:transform .65s cubic-bezier(.22,.61,.36,1), filter .65s cubic-bezier(.22,.61,.36,1)!important;
  transform-origin:100% 100%!important;
}
.breach-panel.breach-rupture>*:not(.rupture-v44){position:relative!important;z-index:2!important}
.breach-panel.breach-rupture:hover>.rupture-v44>img{transform:translate(8px,4px) scale(1.025)!important;filter:saturate(1.06) brightness(1.02)!important}



/* =========================================================
   X ECLIPSE v0.49 · WATCHER WEBM
   Third breach type: animated eye video. Plays on hover/focus.
   ========================================================= */
.breach-panel.breach-watcher{
  position:relative!important;
  overflow:hidden!important;
  isolation:isolate!important;
  background:var(--surface2)!important;
}
.breach-panel.breach-watcher::before,
.breach-panel.breach-watcher::after{
  content:none!important;
  display:none!important;
  background:none!important;
}
.breach-panel.breach-watcher > .breach-underlay,
.breach-panel.breach-watcher > .breach-skin{
  display:none!important;
}
.breach-panel.breach-watcher > .watcher-v49{
  position:absolute!important;
  right:0!important;
  bottom:0!important;
  width:47%!important;
  height:50%!important;
  max-width:470px!important;
  z-index:1!important;
  pointer-events:none!important;
  overflow:hidden!important;
  border-bottom-right-radius:17px!important;
}
.chron-feature.breach-panel.breach-watcher > .watcher-v49{
  width:49%!important;
  height:50%!important;
  max-width:480px!important;
}
.callout.breach-panel.breach-watcher > .watcher-v49{
  width:38%!important;
  height:46%!important;
  max-width:350px!important;
}
.breach-panel.breach-watcher > .watcher-v49 > video{
  position:absolute!important;
  right:-8%!important;
  bottom:-8%!important;
  width:124%!important;
  height:124%!important;
  object-fit:cover!important;
  object-position:50% 50%!important;
  display:block!important;
  border:0!important;
  outline:0!important;
  filter:saturate(.96) contrast(1.03) brightness(.98)!important;
  transform:scale(1.10)!important;
  transform-origin:100% 100%!important;
  transition:filter .45s ease!important;
}
.breach-panel.breach-watcher > .watcher-v49 > .watcher-v49-fade{
  position:absolute!important;
  inset:-1px!important;
  z-index:2!important;
  pointer-events:none!important;
  background:
    linear-gradient(90deg,
      var(--surface2) 0%,
      color-mix(in srgb,var(--surface2) 99%,transparent) 18%,
      color-mix(in srgb,var(--surface2) 94%,transparent) 32%,
      color-mix(in srgb,var(--surface2) 74%,transparent) 48%,
      color-mix(in srgb,var(--surface2) 42%,transparent) 64%,
      color-mix(in srgb,var(--surface2) 14%,transparent) 78%,
      transparent 90%),
    linear-gradient(180deg,
      var(--surface2) 0%,
      color-mix(in srgb,var(--surface2) 98%,transparent) 16%,
      color-mix(in srgb,var(--surface2) 88%,transparent) 30%,
      color-mix(in srgb,var(--surface2) 60%,transparent) 46%,
      color-mix(in srgb,var(--surface2) 30%,transparent) 62%,
      color-mix(in srgb,var(--surface2) 10%,transparent) 76%,
      transparent 88%)!important;
}
.breach-panel.breach-watcher > *:not(.watcher-v49):not(.breach-underlay):not(.breach-skin){
  position:relative!important;
  z-index:3!important;
}
.breach-panel.breach-watcher.is-watcher-playing > .watcher-v49 > video{
  filter:saturate(1.06) contrast(1.04) brightness(1.01)!important;
}
@media (prefers-reduced-motion:reduce){
  .breach-panel.breach-watcher > .watcher-v49 > video{
    display:none!important;
  }
  .breach-panel.breach-watcher > .watcher-v49{
    background-image:var(--watcher-poster)!important;
    background-repeat:no-repeat!important;
    background-position:right bottom!important;
    background-size:cover!important;
  }
}



/* =========================================================
   X ECLIPSE v0.50 · WATCHER + GOLD UNIFY
   1) Watcher video slightly smaller.
   2) Gold breach geometry from the approved home Manifest card
      is now shared by every breach-gold card.
   ========================================================= */

/* WATCHER — slightly smaller visible zone */
.breach-panel.breach-watcher > .watcher-v49{
  width:42%!important;
  height:45%!important;
  max-width:410px!important;
}
.chron-feature.breach-panel.breach-watcher > .watcher-v49{
  width:43%!important;
  height:45%!important;
  max-width:420px!important;
}
.callout.breach-panel.breach-watcher > .watcher-v49{
  width:35%!important;
  height:42%!important;
  max-width:320px!important;
}

/* GOLD — use the same approved Manifest geometry everywhere */
.breach-panel.breach-gold > .breach-underlay{
  left:-3%!important;
  top:-11%!important;
  width:92%!important;
  height:104%!important;
}
.breach-panel.breach-gold > .breach-underlay .breach-life{
  position:relative!important;
  display:block!important;
  width:100%!important;
  height:100%!important;
  background-image:url('gold-imperfect.png')!important;
  background-repeat:no-repeat!important;
  background-position:left top!important;
  background-size:contain!important;
}
.breach-panel.breach-gold > .breach-underlay .breach-life svg{
  display:none!important;
}
.breach-panel.breach-gold:hover > .breach-underlay{
  transform:translate(var(--breach-shift-x),var(--breach-shift-y)) scale(calc(var(--breach-scale) * 1.03)) translateX(2px)!important;
  filter:saturate(1.02) brightness(1.03)!important;
}



/* =========================================================
   X ECLIPSE v0.51 · ROLE HOVER LIFT
   Role cards in the guild article now lift on hover like the home-page cards.
   ========================================================= */
.role{
  transition:transform var(--fast) var(--ease),box-shadow var(--fast) var(--ease),border-color var(--fast) var(--ease)!important;
}
.role:hover,
.role:focus-within{
  transform:translateY(-2px)!important;
  box-shadow:0 10px 22px color-mix(in srgb,var(--shadow) 82%,transparent)!important;
  border-color:color-mix(in srgb,var(--gold) 26%,var(--line))!important;
}



/* =========================================================
   X ECLIPSE v0.52 · DISCORD BUTTON FIX
   Tighten the home Discord breach button so the gold texture sits cleanly under the corner cut.
   ========================================================= */
.corrupt-btn{width:242px!important;height:56px!important;min-height:56px!important}
.corrupt-btn>.corrupt-content{padding:0 18px 0 16px!important}
.corrupt-btn>.corrupt-underlay{right:-1.5%!important;bottom:-8%!important;width:42%!important;height:70%!important;opacity:.98!important;filter:drop-shadow(0 0 12px color-mix(in srgb,var(--blood2) 18%,transparent))!important}
.corrupt-btn>.corrupt-underlay .breach-life{background-position:left top!important;background-size:contain!important}
.corrupt-btn:hover>.corrupt-underlay{transform:scale(1.035) translate(3px,1px)!important;filter:saturate(1.04) brightness(1.03) drop-shadow(0 0 14px color-mix(in srgb,var(--blood2) 20%,transparent))!important}
.corrupt-btn>.corrupt-button-skin{filter:drop-shadow(0 1px 0 color-mix(in srgb,white 18%,transparent))!important}
.corrupt-btn .corrupt-label{font-size:.69rem!important;letter-spacing:.10em!important}
.corrupt-btn .corrupt-arrow{font-size:1.18rem!important;line-height:1!important}



/* =========================================================
   X ECLIPSE v0.53 · HERO BUTTONS UNIFIED
   Replace the custom Discord fracture button with the same whole pill system as Clanmate.
   ========================================================= */
.hero-copy .btns{gap:14px!important}
.hero-copy .btns .hero-link{
  min-width:208px!important;
  justify-content:space-between!important;
  padding:0 18px!important;
}
.hero-copy .btns .hero-link .hero-link-arrow{
  margin-left:12px!important;
  font-size:1rem!important;
  line-height:1!important;
  color:var(--gold2)!important;
}
@media (max-width: 560px){
  .hero-copy .btns .hero-link{width:100%!important;min-width:0!important}
}



/* =========================================================
   X ECLIPSE v0.54a · ECLIPSE CLEAN RINGS
   Generated eclipse art replaces the placeholder circle and legacy seal.
   ========================================================= */
.eclipse{
  background-color:transparent!important;
  background-image:url('eclipse-v54a.webp')!important;
  background-repeat:no-repeat!important;
  background-position:center!important;
  background-size:contain!important;
  border-radius:0!important;
  box-shadow:none!important;
  overflow:visible!important;
}
.eclipse::after{content:none!important;display:none!important}
.seal{display:none!important}



/* =========================================================
   X ECLIPSE v0.55 · ECLIPSE SMOOTH RETURN
   Smooth the small -> large eclipse handoff.
   The destination snapshot is used for the whole geometry tween,
   avoiding the default old/new crossfade that was visible on expansion.
   ========================================================= */
.eclipse{
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}
::view-transition-group(xe-eclipse){
  animation-duration:.66s!important;
  animation-timing-function:cubic-bezier(.22,.61,.36,1)!important;
}
::view-transition-image-pair(xe-eclipse){
  isolation:auto!important;
}
::view-transition-old(xe-eclipse){
  animation:none!important;
  opacity:0!important;
}
::view-transition-new(xe-eclipse){
  animation:none!important;
  opacity:1!important;
}

/* file:// fallback: let the geometry tween actually finish before navigation */
.xe-local-leave .eclipse{
  transition:
    width .40s cubic-bezier(.22,.61,.36,1),
    left .40s cubic-bezier(.22,.61,.36,1),
    right .40s cubic-bezier(.22,.61,.36,1),
    top .40s cubic-bezier(.22,.61,.36,1),
    transform .40s cubic-bezier(.22,.61,.36,1)!important;
}



/* =========================================================
   X ECLIPSE v0.57 · COPY CLEANUP
   Restore a real ease-in-out "weight" and soften page handoff.
   ========================================================= */

/* Cross-document: weighted acceleration/deceleration on the Eclipse itself. */
::view-transition-group(xe-eclipse){
  animation-duration:.72s!important;
  animation-timing-function:cubic-bezier(.65,0,.35,1)!important;
}

/* The previous build swapped the rest of the document instantly.
   A short overlap removes the one-frame "reload" feeling without
   turning the transition into a visible full-page effect. */
::view-transition-group(root){
  animation-duration:.24s!important;
  animation-timing-function:cubic-bezier(.45,0,.55,1)!important;
}
::view-transition-old(root){
  animation:xe-root-out .24s cubic-bezier(.45,0,.55,1) both!important;
  pointer-events:none!important;
}
::view-transition-new(root){
  animation:xe-root-in .24s cubic-bezier(.45,0,.55,1) both!important;
  pointer-events:none!important;
}
@keyframes xe-root-out{
  from{opacity:1}
  to{opacity:.18}
}
@keyframes xe-root-in{
  from{opacity:.18}
  to{opacity:1}
}

/* Keep the Eclipse itself clean: geometry is animated by its transition group,
   not by an image crossfade. */
::view-transition-old(xe-eclipse){
  animation:none!important;
  opacity:0!important;
}
::view-transition-new(xe-eclipse){
  animation:none!important;
  opacity:1!important;
}

/* file:// fallback — same weighted curve, enough time to finish fully. */
.xe-local-leave .eclipse{
  transition:
    width .62s cubic-bezier(.65,0,.35,1),
    left .62s cubic-bezier(.65,0,.35,1),
    right .62s cubic-bezier(.65,0,.35,1),
    top .62s cubic-bezier(.65,0,.35,1),
    transform .62s cubic-bezier(.65,0,.35,1)!important;
}

/* Only content fades very briefly during a local-file document handoff.
   Header, world backdrop and Eclipse stay visible, so it no longer looks
   like the whole page blinked/reloaded. */
.hero-copy,
.inner-copy,
.bastion,
.inner-bastion,
.footer{
  transition:opacity .18s cubic-bezier(.45,0,.55,1)!important;
}
body.xe-local-leave .hero-copy,
body.xe-local-leave .inner-copy,
body.xe-local-leave .bastion,
body.xe-local-leave .inner-bastion,
body.xe-local-leave .footer{
  opacity:0!important;
}

html.xe-local-arrive .hero-copy,
html.xe-local-arrive .inner-copy,
html.xe-local-arrive .bastion,
html.xe-local-arrive .inner-bastion,
html.xe-local-arrive .footer{
  opacity:0!important;
}
html.xe-local-arrive.xe-local-ready .hero-copy,
html.xe-local-arrive.xe-local-ready .inner-copy,
html.xe-local-arrive.xe-local-ready .bastion,
html.xe-local-arrive.xe-local-ready .inner-bastion,
html.xe-local-arrive.xe-local-ready .footer{
  opacity:1!important;
}

