:root{color-scheme:dark;--ink:#edf0e9;--muted:#aabbbb;--gold:#d4bd87;--line:rgba(180,201,194,.19);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:#101c22;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100svh}a{color:inherit}button,input{font:inherit}button,a{touch-action:manipulation}header,main,footer{position:relative;z-index:1;width:min(1180px,calc(100% - 96px));margin-inline:auto}
header{height:104px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(180,201,194,.08)}.brand{display:flex;gap:17px;align-items:center;font-family:Georgia,serif;font-size:24px;text-decoration:none;letter-spacing:-.4px}.brand small{display:block;margin-top:7px;font:11px system-ui;letter-spacing:1.7px;color:var(--muted)}.sigil{display:grid;place-items:center;width:46px;height:46px;border:1px solid #a99c6c;border-radius:7px;color:var(--gold);font:29px Georgia;background:linear-gradient(145deg,#d4bd8710,transparent);transition:box-shadow .3s,border-color .3s}.brand:hover .sigil{border-color:var(--gold);box-shadow:0 0 24px #d4bd8715}.private{padding:9px 13px;border:1px solid var(--line);border-radius:30px;background:#ffffff02;font-size:11px;color:#bbc8c4;display:flex;gap:10px;align-items:center}.private span{width:5px;height:5px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 4px #d4bd870b}
main{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:clamp(40px,7vw,100px);min-height:calc(100svh - 177px);padding:48px 0 56px}.intro{animation:arrive .8s both}.eyebrow{font-size:10px;font-weight:650;letter-spacing:2px;color:var(--gold);margin:0 0 24px}.intro .eyebrow{display:flex;align-items:center;gap:14px}.intro .eyebrow:before{content:"";width:28px;height:1px;background:var(--gold);opacity:.65}h1{font:clamp(38px,4.3vw,60px)/1.12 Georgia,serif;letter-spacing:-1.9px;margin:0 0 27px;text-wrap:balance}h1 em{font-weight:400;color:var(--gold)}p{line-height:1.7}.lead{max-width:400px;color:var(--muted);font-size:15px;margin:0}
.card{position:relative;isolation:isolate;padding:32px 36px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,#24353bf2,#19282df5);box-shadow:0 24px 70px #00000024,inset 0 1px 0 #ffffff06;backdrop-filter:blur(16px);animation:arrive .85s .12s both;transition:border-color .3s,box-shadow .3s}.card:before{content:"";position:absolute;top:-1px;left:18%;right:18%;height:1px;background:linear-gradient(90deg,transparent,#d4bd8799,transparent)}.card:focus-within{border-color:#d4bd8755;box-shadow:0 24px 70px #0003,0 0 40px #d4bd8705}.card .eyebrow{margin:0 0 14px}h2{font:32px/1.15 Georgia,serif;letter-spacing:-.7px;margin:0 0 14px}.muted{color:var(--muted);font-size:13px;margin:0 0 30px;max-width:340px}.muted strong{color:var(--ink)}label{display:block;font-size:12px;font-weight:500;color:#cbd5d0;margin:20px 0 9px}input:not([type=hidden]){width:100%;height:51px;background:#102026b3;border:1px solid #a7bdbb35;border-radius:7px;color:#f4f4ec;padding:13px 14px;transition:border-color .2s,box-shadow .2s,background .2s}input:not([type=hidden]):hover{border-color:#a7bdbb60}input:not([type=hidden]):focus{border-color:#d4bd87a6;background:#102026;box-shadow:0 0 0 3px #d4bd8710;outline:none}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #e1c88b;outline-offset:5px}
.primary{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;text-align:center;width:100%;min-height:51px;padding:14px 44px;margin-top:24px;border:1px solid #dec791;border-radius:7px;background:linear-gradient(115deg,#d4bd87,#ddc794);color:#16232a;text-decoration:none;font-size:13px;font-weight:650;letter-spacing:.15px;cursor:pointer;box-shadow:0 4px 16px #00000012;transition:transform .2s,box-shadow .2s,filter .2s}.primary>span{position:absolute;right:20px;transition:transform .25s}.primary:before{content:"";position:absolute;inset:0;transform:translateX(-120%) skewX(-20deg);background:linear-gradient(90deg,transparent,#ffffff30,transparent);transition:transform .65s}.primary:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 8px 24px #0003;filter:brightness(1.05)}.primary:not(:disabled):hover:before{transform:translateX(120%) skewX(-20deg)}.primary:not(:disabled):hover>span{transform:translateX(3px)}.primary:not(:disabled):active{transform:translateY(0)}.primary:disabled{background:#46524a;color:#d0d3c7;border-color:#687166;cursor:default;box-shadow:none}.invite-note{font-size:12px;color:#a9b9b7;line-height:1.8;text-align:center;border-top:1px solid var(--line);margin:24px 0 0;padding-top:20px}.error{background:#7d333330;border:1px solid #bd7373;color:#ffd9d9;font-size:13px;border-radius:7px;padding:12px}.card-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.text-button{color:var(--gold);font-size:12px;background:none;border:0;cursor:pointer;padding:5px}.text-button:hover{text-decoration:underline;text-underline-offset:4px}.download-box{display:flex;align-items:center;gap:15px;background:#122329;border:1px solid var(--line);border-radius:8px;padding:18px}.download-box strong,.download-box div span{display:block;font-size:13px}.download-box div span{font-size:11px;color:var(--muted);margin-top:6px}.file-icon{font-size:27px;color:var(--gold)}.file-meta{font-size:11px;color:var(--muted);text-align:center;overflow-wrap:anywhere}details{font-size:12px;color:#c0cac4}summary{cursor:pointer}.hash{display:block;overflow-wrap:anywhere;font-size:11px}footer{display:flex;justify-content:space-between;gap:24px;color:#95aaaa;font-size:10px;letter-spacing:.3px;padding:26px 0;border-top:1px solid var(--line)}
.landscape{position:fixed;inset:0;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 18% 16%,#334b5155,transparent 60%),linear-gradient(165deg,#1b303a,#0f1b21 70%)}.landscape:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 78% 46%,#9bbeb40b,transparent 45%)}.moon{position:absolute;top:5%;left:13%;width:45vw;height:45vw;border-radius:50%;background:radial-gradient(circle,#80aaa517,transparent 65%);animation:ambient 24s ease-in-out infinite alternate;will-change:transform}.ridge{position:absolute;bottom:0;left:-5%;width:110%;height:50%;clip-path:polygon(0 55%,9% 30%,15% 46%,28% 0,35% 24%,40% 16%,48% 56%,59% 33%,66% 52%,75% 12%,85% 58%,93% 25%,100% 64%,100% 100%,0 100%);background:#354a501c}.ridge.front{height:30%;background:#07151b50;transform:scaleX(-1)}
@keyframes arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes ambient{from{transform:translate(-5%,-5%) scale(.95)}to{transform:translate(25%,15%) scale(1.15)}}
@media(min-width:1400px){h1{font-size:62px}}@media(max-width:900px){header,main,footer{width:calc(100% - 48px)}header{height:100px}main{grid-template-columns:1fr;gap:28px;padding:32px 0 40px;max-width:480px;min-height:auto}.intro{text-align:center}.intro .eyebrow{justify-content:center}.intro .eyebrow:before{display:none}h1{font-size:42px;margin-bottom:18px}.lead{margin-inline:auto}.card{padding:30px 34px}.brand{font-size:21px}.private{font-size:11px}}@media(max-width:480px){header,main,footer{width:calc(100% - 40px)}header{height:84px}.brand{font-size:19px;gap:12px}.brand small{font-size:9px;letter-spacing:1.1px}.sigil{width:36px;height:40px;font-size:27px}.private{font-size:10px;gap:7px;padding:7px 9px}.private span{box-shadow:none}main{padding-top:30px;gap:25px}h1{font-size:36px;letter-spacing:-1.4px}.intro .eyebrow{font-size:9px;letter-spacing:1.5px;margin-bottom:19px}.lead{font-size:13px;max-width:285px}.card{padding:26px 24px;border-radius:14px}h2{font-size:31px}input:not([type=hidden]){font-size:16px}footer{font-size:9px;line-height:1.7}footer span:last-child{max-width:150px;text-align:right}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.moon{will-change:auto}}
.login-heading{text-align:center}.access-icon{width:40px;height:40px;display:grid;place-items:center;margin:0 auto 16px;border:1px solid #d4bd8738;border-radius:12px;color:var(--gold);background:linear-gradient(145deg,#d4bd8710,#d4bd8703);box-shadow:inset 0 1px 0 #ffffff08}.access-icon svg{width:21px;height:21px}.login-heading .eyebrow{font-size:9px;letter-spacing:1.8px;margin-bottom:10px}.login-heading h2{margin-bottom:10px}.login-heading .muted{max-width:none;margin-bottom:26px;font-size:12px}.invite-note strong{display:block;font-weight:500;color:#cbd5d0}.invite-note span{display:block;font-size:11px;margin-top:2px}.ridge{opacity:.55}.brand{transition:opacity .2s}.brand:hover{opacity:.9}input:-webkit-autofill{-webkit-text-fill-color:var(--ink);box-shadow:0 0 0 1000px #15262b inset}::selection{color:#f6f1e4;background:#677468}header{animation:arrive .65s both}@media(max-width:480px){.access-icon{width:36px;height:36px;margin-bottom:14px}.login-heading .muted{margin-bottom:22px}.lead{max-width:300px}.private{white-space:nowrap}.brand{font-size:18px}.brand small{letter-spacing:.6px}}@media(prefers-reduced-motion:reduce){.brand{transition:none}}
/* Original fantasy artwork, with quiet contrast behind the interface. */
.landscape{background:linear-gradient(90deg,rgba(7,20,26,.38),rgba(7,20,26,.22) 45%,rgba(7,20,26,.52)),linear-gradient(0deg,#0c1b22 0%,transparent 38%,#10212933 80%,#10212988 100%),url('/fantasy-background-v1.png') center center/cover no-repeat}
.landscape:after{background:radial-gradient(ellipse at 35% 50%,#07171e44,transparent 65%)}.moon{background:radial-gradient(circle,#99cbb61b,transparent 65%)}.starfield{position:absolute;inset:0;opacity:.45;background:radial-gradient(circle at 12% 26%,#dfc58c 0 1px,transparent 2px),radial-gradient(circle at 31% 78%,#dfc58c 0 1px,transparent 2px),radial-gradient(circle at 67% 16%,#dfc58c 0 1px,transparent 2px),radial-gradient(circle at 84% 69%,#dfc58c 0 1px,transparent 2px),radial-gradient(circle at 58% 87%,#dfc58c 0 1px,transparent 2px);animation:motes 12s ease-in-out infinite alternate}
.intro{position:relative}h1{text-shadow:0 3px 25px #08171ed9}.lead{color:#c0cfcd;text-shadow:0 2px 12px #07171e}.celestial-seal{width:70px;height:70px;border:1px solid #d4bd8750;border-radius:50%;display:grid;place-items:center;margin-bottom:30px;position:relative;color:var(--gold);background:radial-gradient(circle,#172f3688,transparent);box-shadow:0 0 35px #d4bd870a}.celestial-seal:before{content:"";position:absolute;inset:6px;border:1px solid #d4bd8725;border-radius:50%}.celestial-seal:after{content:"";position:absolute;inset:13px;border:1px solid #d4bd8740;transform:rotate(45deg)}.celestial-seal span{font:38px/1 Georgia;text-shadow:0 0 18px #d4bd8733}.ornament{display:flex;gap:14px;align-items:center;width:180px;color:#d4bd8799;margin-top:30px;font-size:12px}.ornament:before,.ornament:after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,#d4bd8770)}.ornament:after{transform:scaleX(-1)}
.card{background:linear-gradient(145deg,#203239ed,#12242bec);border-color:#b9ac7d50;box-shadow:0 28px 90px #0006,inset 0 1px 0 #ead7a611}.card:after{content:"";position:absolute;inset:10px;pointer-events:none;border-radius:9px;background:linear-gradient(#d4bd8770,#d4bd8770) left top/18px 1px no-repeat,linear-gradient(#d4bd8770,#d4bd8770) left top/1px 18px no-repeat,linear-gradient(#d4bd8770,#d4bd8770) right bottom/18px 1px no-repeat,linear-gradient(#d4bd8770,#d4bd8770) right bottom/1px 18px no-repeat;opacity:.6}.sigil{background:linear-gradient(145deg,#223a40cc,#10242bc9);outline:1px solid #d4bd8725;outline-offset:4px}.private{background:#10242b77}.access-icon{border-radius:50%;box-shadow:0 0 0 4px #d4bd8705,inset 0 1px 0 #ffffff08}footer{color:#adbfbd;text-shadow:0 1px 8px #07171e}
@keyframes motes{from{transform:translateY(0);opacity:.25}to{transform:translateY(-15px);opacity:.7}}
@media(max-width:900px){.celestial-seal{margin:0 auto 22px;width:54px;height:54px}.celestial-seal span{font-size:30px}.celestial-seal:after{inset:11px}.ornament{margin:22px auto 0;width:140px}.landscape{background-position:center,center,30% center}}
@media(max-width:480px){.celestial-seal{width:46px;height:46px;margin-bottom:18px}.celestial-seal span{font-size:26px}.celestial-seal:after{inset:10px}.ornament{margin-top:18px}.landscape{background-position:center,center,26% center}}
@media(prefers-reduced-motion:reduce){.starfield{animation:none}}
.preview-notice{margin-top:18px;padding:15px 16px;border:1px solid #d4bd8738;border-radius:8px;background:#d4bd8707;color:#c0cfcd;font-size:12px;line-height:1.7}.preview-notice strong{color:var(--gold);font-weight:550}.preview-notice p{margin:6px 0 0}.download-box>div{min-width:0}.primary{overflow-wrap:anywhere}

/* Canonical World of Ammon wordmark. */
.brand-logo{display:block;width:clamp(168px,19vw,220px);height:auto;filter:drop-shadow(0 5px 14px #0008);transition:filter .2s,transform .2s}.brand-tagline{font:10px/1.25 system-ui;letter-spacing:1.4px;color:var(--muted);white-space:nowrap}.brand:hover .brand-logo{filter:drop-shadow(0 6px 18px #d4bd8730);transform:translateY(-1px)}
@media(max-width:700px){.brand-logo{width:154px}.brand-tagline{display:none}}@media(max-width:480px){.brand-logo{width:138px}}@media(prefers-reduced-motion:reduce){.brand-logo{transition:none}}

.pairing-code{font:24px/1.5 ui-monospace,monospace;letter-spacing:3px;text-align:center;color:var(--gold);border:1px solid var(--line);border-radius:8px;padding:15px;background:#10202680;overflow-wrap:anywhere}

.password-help{font-size:11px;line-height:1.6;color:var(--muted);margin:10px 0 0}.muted a,.invite-note a{text-underline-offset:3px;color:var(--gold)}

/* Signed-in member home */
.member-home main{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(40px,6vw,80px)}
.member-home .card{padding:0;overflow:hidden;border-color:#aebca62e;background:linear-gradient(145deg,#21343bf5,#11242bf7)}
.member-home .card:after{display:none}.member-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 30px;border-bottom:1px solid #b4c9c216;background:#0c202538}.member-identity{display:flex;align-items:center;gap:12px;min-width:0}.member-avatar{display:grid;place-items:center;flex:none;width:37px;height:37px;border-radius:50%;border:1px solid #d4bd8738;background:#d4bd8709;color:var(--gold);font:21px Georgia,serif}.member-caption{display:block;font-size:10px;color:var(--muted);margin-bottom:4px}.member-identity strong{display:block;font-size:12px;font-weight:550;letter-spacing:.3px;overflow-wrap:anywhere}.member-toolbar .text-button{font-size:11px;color:#b6c5c3;white-space:nowrap}.member-toolbar .text-button span{margin-left:6px;color:var(--gold)}
.member-welcome{padding:29px 30px 23px}.member-welcome .eyebrow{font-size:9px;letter-spacing:1.3px;margin-bottom:12px}.member-welcome h2{font-size:31px;line-height:1.18;margin-bottom:9px}.member-welcome>p:last-child{font-size:12px;color:var(--muted);margin:0;line-height:1.6}
.launcher-panel{margin:0 30px;padding:22px;border:1px solid #b9cabe24;border-radius:12px;background:linear-gradient(135deg,#21353c,#10242bd9);box-shadow:0 8px 24px #00000012}.launcher-heading{display:flex;align-items:center;gap:12px}.launcher-mark{width:43px;height:43px;display:grid;place-items:center;border:1px solid #d4bd8738;border-radius:10px;background:#d4bd8707;color:var(--gold);flex:none}.launcher-mark svg{width:29px;height:29px}.launcher-heading h3{font-size:15px;line-height:1.3;font-weight:600;margin:0}.launcher-heading p{font-size:11px;margin:4px 0 0;color:var(--muted)}.release-badge{margin-left:auto;align-self:flex-start;font-size:9px;padding:5px 8px;border:1px solid #d4bd8733;background:#d4bd8708;border-radius:20px;color:var(--gold)}.launcher-description{font-size:12px;line-height:1.7;color:#bac9c5;margin:18px 0 13px;max-width:330px}.launcher-specs{display:flex;gap:8px 12px;flex-wrap:wrap;font-size:10px;color:#9fb3b1}.launcher-specs span+span:before{content:'·';margin-right:12px;color:#7d9290}.launcher-download{margin-top:21px;min-height:49px;font-size:12px}.download-caption{margin:10px 0 0;text-align:center;font-size:10px;line-height:1.6;color:#a5b7b3}
.release-note{display:flex;align-items:flex-start;gap:10px;margin:20px 30px 0}.note-icon{display:grid;place-items:center;flex:none;width:16px;height:16px;margin-top:2px;border:1px solid #a5b7b366;border-radius:50%;font:11px Georgia,serif;color:#b9c7c1}.release-note strong{font-size:11px;font-weight:550;color:#cdd7d0}.release-note p{margin:5px 0 0;font-size:11px;line-height:1.75;color:#a5b7b3}.download-details{margin:17px 30px 25px;font-size:10px;color:#a5b7b3}.download-details summary{padding-block:5px}.download-details dl{margin:12px 0 0;padding:13px;border:1px solid var(--line);border-radius:7px}.download-details dt{font-size:10px;color:var(--gold)}.download-details dd{margin:5px 0 14px;overflow-wrap:anywhere;line-height:1.6}.download-details dd:last-child{margin-bottom:0}.download-details .hash{font-size:10px}
.admin-tools{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:21px 30px;border-top:1px solid #b4c9c21a;background:#0c20254d}.admin-tools strong{display:block;font-size:11px;font-weight:500;color:#d2dbd5}.secondary-action{display:inline-flex;align-items:center;justify-content:center;gap:12px;flex:none;padding:10px 12px;border:1px solid #d4bd8745;border-radius:7px;font-size:10px;color:var(--gold);text-decoration:none;background:#d4bd8705;transition:background .2s,border-color .2s}.secondary-action:hover{background:#d4bd8712;border-color:#d4bd8780}
@media(max-width:900px){.member-home main{grid-template-columns:1fr;gap:30px}.member-home .intro .celestial-seal,.member-home .intro .ornament,.member-home .intro .eyebrow{display:none}.member-home .intro h1{font-size:34px;margin-bottom:12px}.member-home .intro .lead{font-size:12px}}
@media(max-width:480px){.member-toolbar{padding:19px 20px}.member-welcome{padding:24px 20px 20px}.member-welcome h2{font-size:29px}.launcher-panel{margin-inline:20px;padding:18px}.launcher-heading{gap:9px}.launcher-heading h3{font-size:13px}.release-badge{font-size:9px;padding:4px 6px}.launcher-mark{width:36px;height:36px}.release-note{margin-inline:20px}.download-details{margin-inline:20px}.admin-tools{padding:20px;align-items:flex-start;flex-direction:column;gap:13px}.secondary-action{width:100%;font-size:12px}.member-home .intro h1{font-size:32px}}

/* Fantasy art direction — original responsive artwork and restrained relic details. */
.landscape{background:linear-gradient(90deg,rgba(4,15,20,.62) 0%,rgba(5,17,22,.34) 38%,rgba(4,15,20,.60) 76%,rgba(3,12,17,.76) 100%),linear-gradient(0deg,#07161d 0%,transparent 44%,rgba(8,22,28,.28) 82%,rgba(8,22,28,.65) 100%),url('/fantasy-background-v2.png') center center/cover no-repeat}
.landscape:after{background:radial-gradient(ellipse at 23% 52%,rgba(4,17,23,.12),rgba(4,17,23,.58) 78%)}
.mist-veil{position:absolute;inset:25% -20% -12%;opacity:.22;background:radial-gradient(ellipse at 25% 70%,#8eaaa54a,transparent 44%),radial-gradient(ellipse at 70% 78%,#76918d36,transparent 48%);filter:blur(32px);animation:drift-mist 22s ease-in-out infinite alternate;will-change:transform}
.fireflies{position:absolute;inset:0}.fireflies i{position:absolute;width:3px;height:3px;border-radius:50%;background:#e3c677;box-shadow:0 0 7px 2px #d4bd8750;opacity:.3;animation:firefly 7s ease-in-out infinite}.fireflies i:nth-child(1){left:8%;top:73%;animation-delay:-1s}.fireflies i:nth-child(2){left:27%;top:62%;animation-delay:-4s}.fireflies i:nth-child(3){left:43%;top:82%;animation-delay:-2s}.fireflies i:nth-child(4){left:67%;top:71%;animation-delay:-5s}.fireflies i:nth-child(5){left:83%;top:58%;animation-delay:-3s}.fireflies i:nth-child(6){left:93%;top:79%;animation-delay:-6s}
.celestial-seal{width:78px;height:78px;background:radial-gradient(circle,#1a363bba 0%,#10262cb8 58%,transparent 70%);border-color:#d4bd8766;box-shadow:0 0 0 6px #d4bd8705,0 0 42px #d4bd8715}.celestial-seal:before{inset:8px;border-style:dashed;animation:seal-turn 28s linear infinite}.celestial-seal:after{inset:18px;opacity:.65}.celestial-seal svg{width:58px;height:58px;stroke:currentColor;stroke-width:1;opacity:.88;filter:drop-shadow(0 0 7px #d4bd873f)}.celestial-seal .seal-star{fill:#d4bd870e;stroke-width:1.25}
.fantasy-relics{display:flex;align-items:center;gap:11px;margin-top:20px;color:#d4bd8790}.fantasy-relics b{display:block;width:22px;height:1px;background:linear-gradient(90deg,transparent,#d4bd8755,transparent)}.relic{display:grid;place-items:center;width:30px;height:30px;border:1px solid #d4bd8733;border-radius:50%;background:#0c20267d;box-shadow:inset 0 1px 0 #ffffff08,0 4px 18px #0002}.relic svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round}
.card{box-shadow:0 32px 100px #0009,0 0 0 1px #08161b73,inset 0 1px 0 #ead7a616}.card:before{left:22%;right:22%;height:1px;background:linear-gradient(90deg,transparent,#e4ce95b8,transparent);box-shadow:0 0 18px #d4bd8730}.primary{background-image:linear-gradient(115deg,#d4bd87,#e0ca96),radial-gradient(circle at 20% 0%,#fff4d055,transparent 35%)}
@keyframes drift-mist{from{transform:translate3d(-2%,1%,0) scale(1)}to{transform:translate3d(3%,-2%,0) scale(1.07)}}
@keyframes firefly{0%,100%{opacity:.16;transform:translate(0,0) scale(.7)}45%{opacity:.8;transform:translate(7px,-11px) scale(1)}70%{opacity:.35;transform:translate(-4px,-18px) scale(.8)}}
@keyframes seal-turn{to{transform:rotate(360deg)}}
@media(max-width:900px){.landscape{background:linear-gradient(180deg,rgba(5,16,21,.34),rgba(5,17,23,.66) 42%,rgba(4,15,20,.84) 100%),url('/fantasy-background-mobile-v2.png') center top/cover no-repeat}.landscape:after{background:linear-gradient(90deg,rgba(4,15,20,.54),rgba(4,15,20,.28),rgba(4,15,20,.54))}.celestial-seal{width:60px;height:60px}.celestial-seal svg{width:45px;height:45px}.fantasy-relics{justify-content:center;margin-top:17px}.fireflies i:nth-child(n+5){display:none}}
@media(max-width:480px){.fantasy-relics{gap:8px}.fantasy-relics b{width:15px}.relic{width:27px;height:27px}.relic svg{width:13px;height:13px}.landscape{background-position:center top}.mist-veil{opacity:.14}.card{box-shadow:0 24px 70px #0009,0 0 0 1px #08161b66}}
@media(prefers-reduced-motion:reduce){.mist-veil,.fireflies i,.celestial-seal:before{animation:none!important}.mist-veil{will-change:auto}}

/* ==========================================================================
   Member area — signed-in app shell (nav + account), dashboard, downloads,
   guide index/chapter and administrator pages. Everything above this line
   is unchanged; the signed-out login/invite/pairing card keeps using it
   as-is. New rules are scoped to body.member-app / .guide so they cannot
   affect the signed-out experience.
   ========================================================================== */

/* Shell: header nav + account chip, centered content column */
.member-app header{flex-wrap:wrap;align-content:center;gap:10px 22px;height:auto;min-height:104px;padding:16px 0}
.app-account{display:flex;align-items:center;gap:10px;margin-left:auto}
.app-account-name{font-size:12px;font-weight:550;color:#dbe3df;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.app-account .text-button{white-space:nowrap}
.app-nav{display:flex;gap:4px;align-items:center;flex:1 1 100%;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.app-nav::-webkit-scrollbar{display:none}
.app-nav a{flex:none;padding:9px 15px;border-radius:20px;border:1px solid transparent;font-size:12px;font-weight:550;color:#b8c7c2;text-decoration:none;white-space:nowrap;transition:background .2s,color .2s,border-color .2s}
.app-nav a:hover{color:var(--ink);background:#ffffff08}
.app-nav a[aria-current="page"]{color:var(--gold);background:#d4bd8712;border-color:#d4bd8730}
.member-app main.shell{display:block;width:min(1100px,calc(100% - 96px));max-width:none;min-height:auto;margin-inline:auto;padding:44px 0 70px;grid-template-columns:none;animation:arrive .6s both}
@media(max-width:900px){.member-app header{min-height:100px}.member-app main.shell{width:calc(100% - 48px);padding:34px 0 52px}}
@media(max-width:480px){.member-app header{min-height:84px;padding:14px 0}.member-app main.shell{width:calc(100% - 40px);padding:26px 0 40px}}
@media(prefers-reduced-motion:reduce){.member-app main.shell{animation:none}}

/* Shared page furniture */
.page-head{margin:0 0 32px}
.page-head .eyebrow{margin-bottom:14px}
.page-head h1{font:clamp(30px,3.6vw,42px)/1.16 Georgia,serif;letter-spacing:-1px;margin:0 0 10px;color:var(--ink)}
.page-lead{color:var(--muted);font-size:14px;line-height:1.7;max-width:600px;margin:0}
.guide-pdf-cta.primary{width:auto;display:inline-flex;padding-inline:28px;margin-top:22px}
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px;margin:0 0 22px}
.panel{position:relative;isolation:isolate;padding:26px 28px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,#24353bf2,#19282df5);box-shadow:0 20px 60px #00000020,inset 0 1px 0 #ffffff06}
.panel:before{content:"";position:absolute;top:-1px;left:18%;right:18%;height:1px;background:linear-gradient(90deg,transparent,#d4bd8799,transparent)}
.panel h2{font:22px/1.28 Georgia,serif;letter-spacing:-.3px;margin:0 0 16px;color:var(--ink)}
.panel .muted{max-width:none}
.panel-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}
.panel-actions .primary,.panel-actions .secondary-action{width:auto;flex:none;margin-top:0}

/* Home dashboard */
.status-pill{display:inline-flex;align-items:center;gap:9px;padding:8px 15px;border-radius:30px;border:1px solid var(--line);font-size:12px;font-weight:650;letter-spacing:.2px;margin:0 0 12px}
.status-pill span{width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 0 4px currentColor;opacity:.9}
.status-online{color:#9fdcb6;border-color:#4f9d7250;background:#3fae6f14}
.status-online span{box-shadow:0 0 0 4px #3fae6f22}
.status-offline{color:#eab3b3;border-color:#c4757550;background:#c4757514}
.status-offline span{box-shadow:0 0 0 4px #c4757522}
.status-unknown{color:var(--muted)}
.status-unknown span{opacity:.4}
.status-meta{font-size:11.5px;color:var(--muted);margin:0 0 4px}
.status-address{font-family:ui-monospace,Consolas,monospace;color:#c7d3ce;letter-spacing:.2px}
.quickstart-steps{list-style:none;padding:0;margin:2px 0 20px;counter-reset:qs}
.quickstart-steps li{counter-increment:qs;position:relative;padding:10px 0 10px 40px;border-bottom:1px solid var(--line);font-size:13px;color:#cbd5d0}
.quickstart-steps li:last-child{border-bottom:0}
.quickstart-steps li:before{content:counter(qs);position:absolute;left:0;top:7px;width:25px;height:25px;display:grid;place-items:center;border:1px solid #d4bd8750;border-radius:7px;color:var(--gold);font:13px Georgia,serif;background:#d4bd8709}
.whats-new{list-style:none;margin:0;padding:0}
.whats-new li a{display:block;padding:13px 2px;border-bottom:1px solid var(--line);text-decoration:none;color:#d6dedb;font-size:13px;transition:color .2s}
.whats-new li:last-child a{border-bottom:0}
.whats-new li a:hover{color:var(--gold)}
.help-list{list-style:none;margin:0;padding:0}
.help-list li{padding:11px 2px;border-bottom:1px solid var(--line);font-size:13px;color:#cbd5d0}
.help-list li:last-child{border-bottom:0}
.help-list strong,.quickstart-steps strong{color:#e6ece9}
.promo-panel .muted{margin-bottom:0}
.admin-panel{border-color:#bd737336}

/* Downloads page — reuses .launcher-panel/.release-note/.download-details as-is */
.launcher-shell{padding:24px 0}

/* Guide index */
.chapter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:20px;margin-top:6px}
.chapter-card{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:linear-gradient(145deg,#24353bf2,#19282df5);text-decoration:none;color:inherit;transition:border-color .2s,transform .2s,box-shadow .2s}
.chapter-card:hover{border-color:#d4bd8760;transform:translateY(-3px);box-shadow:0 16px 40px #00000030}
.chapter-banner{height:108px;background-color:#0b161b;background-size:cover;background-position:center}
.chapter-card-body{display:flex;flex-direction:column;gap:6px;padding:16px 18px 20px}
.chapter-num{font-size:10px;letter-spacing:1.6px;text-transform:uppercase;color:var(--gold)}
.chapter-card-body strong{font:19px/1.32 Georgia,serif;color:var(--ink);letter-spacing:-.2px}
.chapter-card-body .muted{font-size:12px;margin:0}

/* Guide chapter page */
.chapter-list{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 30px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.chapter-list a{padding:7px 13px;border:1px solid var(--line);border-radius:20px;font-size:11px;color:#b8c7c2;text-decoration:none;white-space:nowrap;transition:color .2s,border-color .2s,background .2s}
.chapter-list a:first-child{font-weight:600;color:var(--ink)}
.chapter-list a:hover{color:var(--ink);border-color:#d4bd8750}
.chapter-list a[aria-current="page"]{color:var(--gold);border-color:#d4bd8770;background:#d4bd8712}
.chapter-banner-head{position:relative;height:230px;border-radius:16px;overflow:hidden;margin:0 0 32px;background-color:#0b161b;background-size:cover;background-position:center;border:1px solid var(--line)}
.chapter-banner-veil{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:26px 30px;background:linear-gradient(90deg,rgba(11,22,27,.97) 0%,rgba(11,22,27,.84) 42%,rgba(11,22,27,.28) 76%,rgba(11,22,27,.06) 100%),linear-gradient(180deg,transparent 55%,rgba(11,22,27,.6) 100%)}
.chapter-banner-veil .eyebrow{margin-bottom:8px}
.chapter-banner-veil h1{font:clamp(28px,3.4vw,40px)/1.15 Georgia,serif;letter-spacing:-.8px;margin:0 0 6px;color:var(--ink);text-shadow:0 3px 20px #08171ed9}
.chapter-sub{margin:0;font-size:13px;color:#c3d0cc}
.chapter-private .chapter-banner-veil .eyebrow{color:#e0a3a3}
.chapter-pager{display:flex;justify-content:space-between;gap:16px;margin-top:44px;padding-top:24px;border-top:1px solid var(--line)}
.chapter-pager a{max-width:46%;font-size:12px;color:var(--gold);text-decoration:none;line-height:1.5}
.chapter-pager a:hover{text-decoration:underline;text-underline-offset:4px}
.chapter-pager-next{margin-left:auto;text-align:right}
.chapter-pdf-link{margin:26px 0 0;text-align:center}

/* Administrator hub */
.admin-warning{display:flex;flex-direction:column;gap:4px;margin:0 0 28px;padding:16px 19px;border:1px solid #bd737350;border-radius:10px;background:#7d333314;color:#f0c9c9;font-size:12px;line-height:1.7}
.admin-warning strong{color:#ffd9d9;font-size:12px}
.admin-warning p{margin:0}
.admin-chapter-list{list-style:none;margin:0;padding:0}
.admin-chapter-list a{display:flex;flex-direction:column;gap:4px;padding:14px 2px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}
.admin-chapter-list li:last-child a{border-bottom:0}
.admin-chapter-list strong{font-size:13px;color:var(--ink)}
.admin-chapter-list a:hover strong{color:var(--gold)}

@media(max-width:480px){.panel{padding:22px 20px}.page-head h1{letter-spacing:-.6px}.chapter-banner-head{height:180px}.chapter-banner-veil{padding:20px 20px}.chapter-pager{flex-direction:column}.chapter-pager a{max-width:none}.chapter-pager-next{text-align:left}}

/* Chapter banner artwork — one class per chapter number, screen equivalent
   of the print guide's per-chapter background art. Banner images are public
   (served from an in-memory whitelist); a missing file simply falls back to
   the solid background-color set above. */
.banner-01{background-image:url(/guide/banner-01.jpg)}
.banner-02{background-image:url(/guide/banner-02.jpg)}
.banner-03{background-image:url(/guide/banner-03.jpg)}
.banner-04{background-image:url(/guide/banner-04.jpg)}
.banner-05{background-image:url(/guide/banner-05.jpg)}
.banner-06{background-image:url(/guide/banner-06.jpg)}
.banner-07{background-image:url(/guide/banner-07.jpg)}
.banner-08{background-image:url(/guide/banner-08.jpg)}
.banner-09{background-image:url(/guide/banner-09.jpg)}
.banner-10{background-image:url(/guide/banner-10.jpg)}
.banner-11{background-image:url(/guide/banner-11.jpg)}
.banner-12{background-image:url(/guide/banner-12.jpg)}
.banner-13{background-image:url(/guide/banner-13.jpg)}
.banner-14{background-image:url(/guide/banner-14.jpg)}
.banner-15{background-image:url(/guide/banner-15.jpg)}
.banner-16{background-image:url(/guide/banner-16.jpg)}
.banner-17{background-image:url(/guide/banner-17.jpg)}
.banner-18{background-image:url(/guide/banner-18.jpg)}
.banner-19{background-image:url(/guide/banner-19.jpg)}
.banner-20{background-image:url(/guide/banner-20.jpg)}
.banner-21{background-image:url(/guide/banner-21.jpg)}
.banner-22{background-image:url(/guide/banner-22.jpg)}

/* ==========================================================================
   .guide — screen port of guides/source/guide.css's print components, used
   to render the trusted pre-built chapter HTML (guide-content/*.json).
   ========================================================================== */
.guide{font-size:15px;line-height:1.72;color:var(--ink)}
.guide p{margin:0 0 14px}
.guide b,.guide strong{font-weight:600;color:#f6f4ea}
.guide .gold{color:var(--gold)}
.guide .muted{color:var(--muted);font-size:inherit;max-width:none;margin:0}
.guide .red{color:#e0a3a3}
.guide .ally{color:#8fb8ea}
.guide .horde{color:#e08f86}
.guide a{color:var(--gold);text-decoration:underline;text-underline-offset:3px}
.guide .eyebrow{font:650 11px system-ui,sans-serif;letter-spacing:2px;text-transform:uppercase;color:var(--gold);margin:0 0 10px}
.guide h2{font:26px/1.28 Georgia,serif;letter-spacing:-.3px;color:#dfc58c;margin:36px 0 15px;display:flex;align-items:center;gap:14px}
.guide h2:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(212,189,135,.45),transparent)}
.guide h2.first,.guide>h2:first-child{margin-top:0}
.guide ul,.guide ol{margin:0 0 16px;padding-left:22px}
.guide li{margin-bottom:6px}
.guide li::marker{color:var(--gold)}
.guide code{font:.92em/1.4 ui-monospace,Consolas,monospace;color:#ecdcb0;background:rgba(7,20,26,.75);border:1px solid rgba(212,189,135,.16);border-radius:5px;padding:2px 7px;overflow-wrap:anywhere}
.guide .lead{font-size:1.12em;line-height:1.72;color:#c8d3cf;max-width:none;margin:0 0 22px}

.guide .tiles{display:flex;flex-wrap:wrap;gap:12px;margin:8px 0 24px}
.guide .tile{flex:1;min-width:130px;padding:16px 16px 14px;border:1px solid var(--line);border-radius:12px;background:linear-gradient(145deg,#24353b,#19282d);position:relative;text-align:center}
.guide .tile:before{content:"";position:absolute;top:-1px;left:22%;right:22%;height:1px;background:linear-gradient(90deg,transparent,rgba(212,189,135,.6),transparent)}
.guide .tile b{display:block;font:400 24px/1.15 Georgia,serif;color:var(--gold);letter-spacing:-.3px}
.guide .tile span{display:block;margin-top:6px;font-size:10.5px;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted)}

.guide ol.steps{list-style:none;padding:0;counter-reset:s;margin:8px 0 22px}
.guide ol.steps li{counter-increment:s;position:relative;padding:11px 0 11px 46px;border-bottom:1px solid var(--line);margin:0}
.guide ol.steps li:before{content:counter(s);position:absolute;left:0;top:9px;width:28px;height:28px;display:grid;place-items:center;border:1px solid rgba(212,189,135,.5);border-radius:7px;color:var(--gold);font:15px Georgia,serif;background:rgba(212,189,135,.06)}

.guide .box{margin:18px 0 20px;padding:16px 19px;border:1px solid rgba(212,189,135,.3);border-radius:12px;background:linear-gradient(145deg,rgba(212,189,135,.07),rgba(212,189,135,.02))}
.guide .box-t{font:650 11px system-ui,sans-serif;letter-spacing:1.6px;text-transform:uppercase;color:var(--gold);margin-bottom:7px}
.guide .box-b{font-size:.95em;line-height:1.68;color:#d5ddd9}
.guide .box-b p{margin:10px 0 0}
.guide .box.warn{border-color:rgba(224,190,120,.5);background:linear-gradient(145deg,rgba(190,140,50,.13),rgba(190,140,50,.04))}
.guide .box.warn .box-t{color:#f0cf86}
.guide .box.danger{border-color:#bd7373;background:rgba(125,51,51,.2)}
.guide .box.danger .box-t{color:#ffc9c9}
.guide .box table{margin:8px 0 2px}

.guide .cmd{margin:8px 0 20px;padding:14px 17px;border:1px solid var(--line);border-left:2px solid var(--gold);border-radius:10px;background:linear-gradient(145deg,#0c181d,#0a1418)}
.guide .cmd div{display:flex;justify-content:space-between;gap:20px;padding:5px 0;font:13px/1.5 ui-monospace,Consolas,monospace}
.guide .cmd .c{color:#ecdcb0;overflow-wrap:anywhere}
.guide .cmd .d{color:#8fa4a2;font-family:system-ui,sans-serif;font-size:.85em;text-align:right;flex:none;max-width:52%}

.guide .quest{margin:6px 0 24px;padding:22px 26px;border:1px solid rgba(212,189,135,.35);border-radius:14px;background:linear-gradient(145deg,rgba(212,189,135,.09),rgba(16,28,34,.2));text-align:center}
.guide .q-text{font:italic 17px/1.7 Georgia,serif;color:#ebe5d0;margin:0 auto 10px;max-width:560px}
.guide .q-by{font-size:11px;letter-spacing:1.3px;text-transform:uppercase;color:var(--muted);margin:0}

.guide .orn{display:flex;align-items:center;justify-content:center;gap:12px;margin:24px auto;width:60%}
.guide .orn i{flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(212,189,135,.6))}
.guide .orn i:last-child{background:linear-gradient(270deg,transparent,rgba(212,189,135,.6))}
.guide .orn b{width:7px;height:7px;transform:rotate(45deg);border:1px solid var(--gold);background:rgba(212,189,135,.2);flex:none}

.guide .side{padding:20px 22px;border:1px solid var(--line);border-radius:12px;background:linear-gradient(145deg,#24353b,#19282d);font-size:.96em;line-height:1.68;margin:0}
.guide .side p:last-child{margin-bottom:0}

.guide table{width:100%;border-collapse:collapse;margin:8px 0 20px;font-size:14px;line-height:1.6}
.guide th{text-align:left;font:650 11px system-ui,sans-serif;letter-spacing:1.3px;text-transform:uppercase;color:var(--gold);padding:10px 12px;border-bottom:1px solid rgba(212,189,135,.4);background:rgba(212,189,135,.045)}
.guide td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
.guide tbody tr:nth-child(even) td{background:rgba(255,255,255,.014)}
.guide td:first-child{color:#f1efe4}
.guide table.kv th{display:none}
.guide table.kv td:first-child{width:26%;color:var(--gold);font:650 11px system-ui;letter-spacing:1.2px;text-transform:uppercase}
.guide table.setbonus td:first-child{width:60px;text-align:center;font:26px Georgia,serif}
.guide table.cmdtable td:first-child{width:44%}

.guide .tt-rowwrap{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin:0 0 16px;align-items:stretch}
.guide .tt-rowwrap .side{grid-column:span 2}
.guide .tt{min-width:0;position:relative;padding:13px 14px 24px;border:1px solid #5d666d;border-radius:8px;background:linear-gradient(180deg,rgba(6,12,20,.96),rgba(9,17,24,.96));box-shadow:inset 0 0 0 1px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.05);font:12.5px/1.5 system-ui,sans-serif;color:#fff}
.guide .tt-empty{display:none}
.guide .tt-name{color:#ff8000;font-size:1.2em;line-height:1.3;margin-bottom:2px;font-weight:600}
.guide .tt-ilvl{color:#ffd100}
.guide .tt-row{display:flex;justify-content:space-between;gap:10px}
.guide .tt-green{color:#3fe04a}
.guide .tt-script{color:#7df0c8}
.guide .tt-set{color:#ffd100;margin-top:4px}
.guide .tt-flavor{color:#ffd100;margin-top:4px;font-style:italic}
.guide .tt-sock{display:flex;align-items:center;gap:6px;color:#9aa3ad}
.guide .tt-sock i{width:10px;height:10px;border:1.5px solid #9aa3ad;border-radius:3px;background:rgba(255,255,255,.04)}
.guide .sock-2{border-color:#c0392b}
.guide .sock-4{border-color:#d4a72c}
.guide .sock-8{border-color:#3b7dd8}
.guide .sock-14{border-color:#c9d3e0}
.guide .tt-class.c2{color:#f58cba}
.guide .tt-class.c32{color:#c41f3b}
.guide .tt-id{position:absolute;right:10px;bottom:7px;font:600 9px system-ui;letter-spacing:1px;color:#5f6d75}

@media(max-width:700px){
  .guide table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}
  .guide .cmd div{flex-direction:column;align-items:flex-start;gap:2px}
  .guide .cmd .d{text-align:left;max-width:none}
  .guide .tt-rowwrap .side{grid-column:1/-1}
}
@media(prefers-reduced-motion:reduce){.member-app main.shell{animation:none}}

/* Chapter body sits on a card so long-form text never competes with the landscape. */
.guide{padding:36px 40px 40px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(145deg,#1c2b31f5,#131f25f7);box-shadow:0 24px 70px #0000002e,inset 0 1px 0 #ffffff06}
.guide>:first-child{margin-top:0}.guide>:last-child{margin-bottom:0}
@media(max-width:700px){.guide{padding:22px 18px 26px;border-radius:14px}}
