@font-face{font-family:PortalNewsreader;src:url('portals/newsreader-600.ttf');font-weight:600;font-display:swap}
@font-face{font-family:PortalManrope;src:url('portals/manrope-400.ttf');font-weight:400;font-display:swap}
@font-face{font-family:PortalManrope;src:url('portals/manrope-700.ttf');font-weight:700;font-display:swap}
/* A project's identity carries from its scene through the story and controls. */
[data-project-theme=heirloom]{--p-bg:#071820;--p-copy:#0b2029;--p-text:#f4edda;--p-muted:#b7c8ca;--p-accent:#e6c684;--p-line:#34505a;--p-active:#18343e}
[data-project-theme=character]{--p-bg:#080b20;--p-copy:#11162d;--p-text:#f5f7ff;--p-muted:#b6c2df;--p-accent:#f3cb72;--p-line:#3d4164;--p-active:#25234a}
[data-project-theme=archivist]{--p-bg:#14161a;--p-copy:#1b1e23;--p-text:#eeeaf8;--p-muted:#bcb7cb;--p-accent:#c2a8fa;--p-line:#45404f;--p-active:#30283e}
[data-project-theme=report]{--p-bg:#e4eae5;--p-copy:#f4f5ee;--p-text:#16382f;--p-muted:#50635b;--p-accent:#205b47;--p-line:#b9c8bd;--p-active:#d3e3d5}
.project-ribbon{background:var(--p-bg);color:var(--p-text);border:1px solid var(--p-line);border-radius:10px;overflow:hidden;transition:background .5s,color .5s}
.project-ribbon .ribbon-toolbar{padding:15px 24px}.project-ribbon .ribbon-counter,.project-ribbon .ribbon-counter span{color:var(--p-muted)}
.project-ribbon .ribbon-controls button{border-color:var(--p-line);color:var(--p-text);border-radius:5px}.project-ribbon .ribbon-controls button:hover{background:var(--p-active);border-color:var(--p-accent)}
.project-ribbon .ribbon-project{grid-template-columns:1.13fr 1fr;background:var(--p-copy);color:var(--p-text)}
.project-ribbon.is-ready .ribbon-track{align-items:start}.project-ribbon.is-ready .ribbon-window{overflow:clip;transition:height .4s ease}
.project-ribbon .ribbon-copy{background:var(--p-copy);padding:36px 38px}
.project-ribbon .ribbon-copy h3{color:var(--p-text);font-size:clamp(2rem,3vw,2.7rem)}
.project-ribbon .ribbon-description,.project-ribbon .ribbon-details dd,.project-ribbon .ribbon-eyebrow{color:var(--p-muted)}
.project-ribbon .ribbon-details{border-color:var(--p-line)}.project-ribbon .ribbon-headline{color:var(--p-text)}
.project-ribbon .ribbon-copy .text-link{color:var(--p-accent);border-color:var(--p-accent)}
.project-ribbon .status{background:var(--p-active);color:var(--p-accent);border:1px solid var(--p-line)}
.project-ribbon .ribbon-nav{border-color:var(--p-line)}.project-ribbon .ribbon-tab{color:var(--p-muted);border-color:var(--p-line)}
.project-ribbon .ribbon-tab[aria-pressed=true],.project-ribbon .ribbon-tab:hover{background:var(--p-active);color:var(--p-text)}
.project-ribbon .ribbon-tab[aria-pressed=true]:before{background:var(--p-accent)}.project-ribbon .ribbon-tab-number{color:var(--p-accent)}
.project-ribbon :focus-visible,.portal-stage :focus-visible{outline:3px solid var(--p-accent,#9de4ed);outline-offset:3px}
.project-ribbon [data-project-theme=character] .ribbon-copy{font-family:PortalManrope,system-ui,sans-serif}
.project-ribbon [data-project-theme=character] h3{font-family:PortalNewsreader,Georgia,serif}
.portal-stage{--rx:0deg;--ry:0deg;position:relative;min-width:0;min-height:565px;overflow:hidden;isolation:isolate;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#f4edda;background:#071820;padding:70px 26px 65px;perspective:1100px}
.portal-stage button{font:inherit;cursor:pointer;touch-action:manipulation}
.portal-stage [hidden]{display:none!important}.portal-stage [data-tilt]{transform:rotateX(var(--rx)) rotateY(var(--ry));transition:transform .45s ease-out;transform-style:preserve-3d}
.portal-kicker{position:absolute;top:28px;left:30px;right:30px;display:flex;align-items:center;gap:12px;font:11px/1.4 var(--mono,monospace);letter-spacing:.1em;text-transform:uppercase;color:inherit;z-index:3}
.portal-bottom{position:absolute;bottom:17px;left:25px;right:25px;display:flex;align-items:center;justify-content:space-between;gap:10px;z-index:3;font:10px/1.5 var(--mono,monospace);color:inherit}
.portal-motion{min-height:44px;padding:8px 11px;border-radius:30px;border:1px solid #78929880;background:#07131fd9;color:#e6e6ec;white-space:nowrap;font-size:10px!important}
.portal-motion:hover{border-color:currentColor}.portal-stars{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.portal-heirloom{background:radial-gradient(ellipse at 50% 43%,#183b43 0%,#091e28 43%,#030c14 100%)}
.heirloom-halo{position:absolute;width:340px;height:340px;border:1px solid #e5cb8933;border-radius:50%;box-shadow:0 0 70px #a8d7c314,inset 0 0 50px #c2ddbf0d;pointer-events:none}
.heirloom-halo:after{content:'';position:absolute;inset:-27px;border:1px solid #e5cb8914;border-radius:50%}
.heirloom-lockup{display:flex;align-items:center;flex-direction:column;text-align:center;position:relative}
.heirloom-lockup img{width:220px;height:220px;object-fit:contain;filter:drop-shadow(0 12px 25px #0009);border:0!important;box-shadow:none!important;background:transparent!important;transform:translateZ(30px)}
.heirloom-wordmark{font-family:PortalNewsreader,Georgia,serif;font-size:68px;line-height:1.2;letter-spacing:-.035em;margin-top:12px;color:#f1dbab;text-shadow:0 2px 30px #d8b26c33;transform:translateZ(40px)}
.heirloom-motto{font-size:13px;letter-spacing:.025em;color:#becbcc;margin-top:8px;transform:translateZ(20px)}
.portal-character{background:#080b20;color:#d7e0f9;font-family:PortalManrope,system-ui,sans-serif}
.character-world{position:absolute;inset:-30px;background:linear-gradient(180deg,#080b2066,#080b2077 65%,#080b20),url('portals/astro-gateway.webp') 68% center/cover;opacity:.66;z-index:-1;transform:scale(1.07)}
.portal-character .portal-kicker{font-family:PortalNewsreader,serif;font-size:18px;letter-spacing:.01em;color:#ffe1a0}.portal-kicker img{width:25px!important;height:30px!important;background:none!important;box-shadow:none!important;border:0!important}
.character-scene{width:100%;height:315px;display:grid;place-items:center;position:relative}
.level-orbit{position:absolute;width:285px;height:285px;border:1px solid #bba2ff88;border-radius:50%;transform:rotateX(56deg) rotateZ(-25deg);box-shadow:0 0 40px #7956ff55,inset 0 0 35px #7956ff22}
.level-orbit:before,.level-orbit:after{content:'';position:absolute;border-radius:50%;border:1px solid #cfb5ff55;inset:18px}.level-orbit:after{inset:-30px;border-color:#ead48b44}
.level-medallion{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:220px;height:220px;border:7px solid transparent;border-radius:50%;background:radial-gradient(circle at 35% 25%,#443765,#151631 70%) padding-box,conic-gradient(from -35deg,#a77a35,#fff0b0 14%,#af7c32 29%,#eed491 48%,#79531f 66%,#f4d991 85%,#a77a35) border-box;box-shadow:0 4px 0 #665028,0 7px 0 #111326,0 22px 42px #0009,inset 0 0 25px #b7a2ff22;transform:translateZ(30px) rotate(-6deg)}
.level-medallion:before{content:'';position:absolute;inset:-17px;border-radius:50%;background:repeating-conic-gradient(from -1deg,#e8ce8b99 0deg 1deg,transparent 1deg 15deg);mask:radial-gradient(farthest-side,transparent calc(100% - 5px),#000 calc(100% - 4px));pointer-events:none}
.level-medallion:after{content:'';position:absolute;inset:7px;border:1px solid #e8ce8b55;border-radius:50%;box-shadow:inset 0 1px 5px #fff1ba15;pointer-events:none}
.level-medallion>span{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#edca80}.level-medallion strong{font:600 86px/1.1 PortalNewsreader,serif;color:#f8dda0;text-shadow:0 0 30px #b893e655}.level-medallion small{font-size:9px;color:#d1cce5}
[data-active-ability=wisdom]{--ability-accent:#8ae2f3;--ability-glow:#238caa}
[data-active-ability=strength]{--ability-accent:#ffb49a;--ability-glow:#b64f42}
[data-active-ability=charisma]{--ability-accent:#dbb4ff;--ability-glow:#935acc}
.portal-character{overflow:clip}
.portal-character .level-medallion{background:radial-gradient(circle at 35% 25%,var(--ability-glow,#443765),#151631 75%) padding-box,conic-gradient(from -35deg,#a77a35,#fff0b0 14%,#af7c32 29%,#eed491 48%,#79531f 66%,#f4d991 85%,#a77a35) border-box}
.portal-character .level-medallion strong,.portal-character .level-medallion>span{color:var(--ability-accent,#f8dda0);transition:color .3s ease;text-shadow:0 0 28px var(--ability-glow,#b893e655)}
.portal-character .level-medallion:after{border-color:var(--ability-accent,#e8ce8b55);box-shadow:inset 0 0 20px var(--ability-glow,#b7a2ff22);transition:border-color .3s,box-shadow .3s}
.portal-character .level-orbit{border-color:var(--ability-accent,#bba2ff88);box-shadow:0 0 40px var(--ability-glow,#7956ff55),inset 0 0 35px #7956ff22;transition:border-color .3s,box-shadow .3s}
.portal-character .ability-float>strong{color:#f8dda0}
.ability-float{position:absolute;right:0;bottom:17px;min-width:150px;display:grid;grid-template-columns:1fr auto;gap:6px 14px;background:#161833ed;border:1px solid #9782c8;border-radius:10px;padding:16px;box-shadow:0 18px 40px #0007;transform:translateZ(60px) rotate(5deg)}
.ability-float>span:first-child{font-size:13px;color:#dac6ff}.ability-float>strong{grid-row:span 2;font:600 42px/1 PortalNewsreader,serif;color:#8ae2f3}.ability-float>span:last-child{font-size:9px;color:#c5c9e0}
.level-spark{position:absolute;top:35px;left:17%;color:#f0ce87;font-size:29px;text-shadow:0 0 20px #eed2b5;transform:translateZ(60px)}
.ability-selector,.archive-selector,.report-selector{position:relative;z-index:3;display:flex;justify-content:center;gap:7px;width:100%;margin:15px 0 5px}
.ability-selector button,.archive-selector button,.report-selector button{min-height:44px;border:1px solid #5b5680;border-radius:24px;padding:9px 14px;background:#11152be6;color:#d7d4e7;font-size:11px}
.ability-selector button[aria-pressed=true]{background:#352958;border-color:#c6a6f5;color:#fff2c9}.ability-selector button:hover{border-color:#e2cdfd}
.portal-character .ability-selector button[aria-pressed=true]{border-color:var(--ability-accent,#c6a6f5);color:var(--ability-accent,#fff2c9);background:color-mix(in srgb,var(--ability-glow,#352958) 35%,#11162d)}
.portal-archivist{background:radial-gradient(ellipse at 50% 45%,#343044,#14161a 65%);color:#ded7ed}.portal-archivist .portal-kicker{font-family:var(--display,Georgia,serif);text-transform:none;font-size:21px;letter-spacing:-.02em}.portal-kicker-detail{font:10px var(--mono,monospace);letter-spacing:0;margin-left:auto;color:#bfb4d5}.archivist-sigil{display:grid;place-items:center;width:30px;height:34px;border:1px solid #b9a3d7;clip-path:polygon(0 0,100% 0,100% 78%,50% 100%,0 78%);font-family:Georgia,serif;color:#d4c0f3}
.archive-scene{position:relative;width:100%;height:328px;display:grid;place-items:center}.archive-orbit{position:absolute;width:310px;height:155px;bottom:0;border:1px solid #aa8dc333;border-radius:50%;background:radial-gradient(ellipse,#9b72c619,transparent 70%)}
.card-fan{--fan-spread:73px;--fan-scale:1;position:relative;width:204px;height:286px;transform:scale3d(var(--fan-scale),var(--fan-scale),var(--fan-scale));transform-style:preserve-3d}
.archive-card{position:absolute;inset:0;border-radius:13px;background:#211c2d;border:7px solid #101115;box-shadow:0 20px 30px #0009,0 0 0 1px #8b819a;overflow:hidden;display:flex;flex-direction:column;transition:filter .3s ease;will-change:transform}
.archive-card[data-slot=left]{transform:translate3d(calc(-1 * var(--fan-spread)),15px,-40px) rotate(-18deg);filter:brightness(.7)}
.archive-card[data-slot=right]{transform:translate3d(var(--fan-spread),8px,-25px) rotate(18deg);filter:brightness(.8)}
.archive-card[data-slot=front]{transform:translate3d(0,0,55px) rotate(-3deg);filter:brightness(1)}
.card-name{display:flex;justify-content:space-between;padding:10px 8px;font:600 14px Georgia,serif;color:#f0e6fa;background:#342b43;border-bottom:1px solid #68517d}
.card-landscape{height:123px;position:relative;overflow:hidden;background:linear-gradient(#1b2248,#9c78ac);flex-shrink:0}.card-landscape:before{content:'';position:absolute;width:62px;height:62px;border-radius:50%;background:#eadff9;box-shadow:0 0 25px #ddd4fa88;top:13px;right:35px}.card-landscape:after{content:'';position:absolute;width:105%;height:95px;bottom:-20px;background:#2e2447;clip-path:polygon(0 100%,0 72%,18% 45%,31% 53%,53% 4%,72% 44%,90% 35%,100% 55%,100% 100%)}.card-landscape i{position:absolute;inset:0;background:radial-gradient(circle at 20% 20%,white 0 1px,transparent 2px),radial-gradient(circle at 70% 13%,#fff9 0 1px,transparent 2px),radial-gradient(circle at 39% 39%,white 0 1px,transparent 2px)}.card-landscape b{position:absolute;width:160%;height:36px;background:#332244;bottom:-12px;left:-30px;transform:rotate(-12deg);z-index:1}.card-landscape em{position:absolute;width:13px;height:55px;bottom:11px;left:52%;background:linear-gradient(90deg,#8977b8,#c8b3eb,#5e4a83);clip-path:polygon(50% 0,100% 100%,0 100%);z-index:2}
.landscape-forest{background:linear-gradient(#24454b,#82aea0)}.landscape-forest:after{background:#153e35}.landscape-sun{background:linear-gradient(#78434b,#deb48b)}.landscape-sun:before{background:#faddb3}.card-type{padding:6px 8px;font:9px var(--mono,monospace);background:#443650;color:#ebdef3}.card-rules{font:12px/1.6 Georgia,serif;padding:12px 9px;color:#dfd4e9;flex:1}.card-footer{display:flex;justify-content:space-between;font:7px var(--mono,monospace);color:#b5a6c6;padding:0 8px 8px}
.archive-selector button{background:#211d29;border-color:#5d506e;color:#ddd2ed}.archive-selector button[aria-pressed=true]{background:#bda1e3;color:#21152d;border-color:#d8bafa}
.portal-report{background:radial-gradient(ellipse at 50% 50%,#f8faf3,#dce5dd);color:#345746}.report-live-dot{width:7px;height:7px;background:#537963;border-radius:50%;margin-left:auto}
.report-scene{position:relative;width:100%;max-width:370px;margin:12px 0 8px}.report-paper{position:relative;background:#fffef8;color:#203e32;padding:24px 22px 21px;border:1px solid #b5c7b6;border-radius:3px;box-shadow:7px 8px 0 #e9eee3,8px 9px 0 #afc2b1,15px 16px 0 #d5e1d4,16px 17px 0 #a8baa7,0 30px 40px #234a3426;transform:rotate(-4deg) translateZ(20px)}
.report-heading{display:flex;align-items:center;justify-content:space-between;font:8px var(--mono,monospace);letter-spacing:.08em;color:#596d5c}.report-mark{display:grid;place-items:center;font-size:23px;background:#dce6d9;border-radius:50%;width:33px;height:33px}.report-paper h4{font:600 27px/1.05 var(--display,Georgia,serif);margin:11px 0;color:#203e32}.report-period{display:flex;justify-content:space-between;font-size:10px;padding-bottom:14px;border-bottom:1px solid #c8d3c6;color:#5b6a5b}.report-total{display:flex;flex-direction:column;margin:17px 0 20px;gap:7px}.report-total>span{font-size:10px;color:#5b6a5b}.report-total strong{font:600 40px/1 var(--display,Georgia,serif);letter-spacing:-.04em}.report-total small{font:9px var(--mono,monospace);color:#526d43}.report-paper table{width:100%;border-collapse:collapse;font-size:10px;font-variant-numeric:tabular-nums}.report-paper th,.report-paper td{padding:9px 0;text-align:right;border-bottom:1px solid #e0e5da;white-space:nowrap}.report-paper tr>:first-child{text-align:left}.report-paper thead{font:8px var(--mono,monospace);color:#65715e}.report-paper tbody th{font-weight:400}.report-paper tbody td:last-child{font-weight:600;color:#305b42}.report-footnote{display:flex;justify-content:space-between;font:8px var(--mono,monospace);padding-top:14px;color:#66715f}.report-stamp{position:absolute;right:-9px;bottom:25px;background:#264e3c;color:#f2f1da;border-radius:50%;width:78px;height:78px;display:grid;place-content:center;text-align:center;font:italic 16px/1.1 Georgia,serif;transform:translateZ(50px) rotate(9deg);box-shadow:0 7px 20px #17342533;pointer-events:none}
.report-selector{margin-top:32px}.report-selector button{background:#f8faf1;color:#34533d;border-color:#9aad99}.report-selector button[aria-pressed=true]{background:#284f3d;color:#f5f5e7;border-color:#284f3d}
.level-orbit{animation:level-orbit 20s linear infinite paused}.level-spark{animation:portal-spark 5s ease-in-out infinite paused}.archive-orbit{animation:portal-spark 7s ease-in-out infinite paused}.portal-stage.is-moving .level-orbit,.portal-stage.is-moving .level-spark,.portal-stage.is-moving .archive-orbit{animation-play-state:running}
.report-stamp{display:none}
@keyframes level-orbit{from{transform:rotateX(56deg) rotateZ(-25deg)}to{transform:rotateX(56deg) rotateZ(335deg)}}
@keyframes portal-spark{0%,100%{opacity:.45}50%{opacity:1}}
.case-visual:has(.portal-stage){padding:0;background:transparent;border:0;overflow:hidden;border-radius:10px}.case-visual .portal-stage{min-height:600px;max-width:100%;width:100%}.case-visual .character-scene,.case-visual .archive-scene{max-width:460px}.case-visual .ability-selector,.case-visual .archive-selector{max-width:440px}.case-visual .portal-character .character-world{background-position:65% center}
@media(max-width:1050px){.project-ribbon .ribbon-copy{padding:30px 25px}.portal-stage{padding-left:18px;padding-right:18px}.portal-kicker{left:24px;right:24px}.portal-kicker-detail{display:none}.report-paper{padding:22px 17px}.report-paper h4{font-size:24px}.report-stamp{display:none}.ability-float{right:-5px;min-width:135px;padding:13px}.level-medallion{margin-left:-20px}}
@media(max-width:767px){.project-ribbon .ribbon-project{grid-template-columns:1fr;grid-template-rows:auto 1fr}.portal-stage{min-height:460px;padding:67px 28px 66px}.project-ribbon .ribbon-copy{padding:28px 25px 32px}.project-ribbon .ribbon-toolbar{padding:12px 15px}.project-ribbon .ribbon-nav{display:grid;grid-template-columns:1fr 1fr}.project-ribbon .ribbon-tab{padding:14px 13px;min-height:62px;font-size:12px;gap:8px;border:1px solid var(--p-line);border-bottom:0}.project-ribbon .ribbon-tab-number{font-size:10px}.project-ribbon .ribbon-tab:before{width:3px}.heirloom-lockup img{width:190px;height:190px}.heirloom-wordmark{font-size:58px}.heirloom-halo{width:280px;height:280px}.portal-bottom{left:20px;right:20px;font-size:9px}.portal-kicker{top:24px;font-size:10px}.character-scene{height:280px}.level-medallion{width:180px;height:180px;border-width:6px}.level-medallion strong{font-size:68px}.level-medallion>span{font-size:9px}.level-medallion small{font-size:8px}.level-orbit{width:230px;height:230px}.ability-float{right:0;bottom:7px;padding:12px;min-width:135px}.ability-float>strong{font-size:34px}.ability-float>span:first-child{font-size:11px}.ability-float>span:last-child{font-size:8px}.ability-selector,.archive-selector{gap:5px;margin-top:10px}.ability-selector button,.archive-selector button{font-size:10px;padding:9px 12px}.archive-scene{height:300px}.card-fan{--fan-spread:50px;width:185px;height:269px}.card-landscape{height:111px}.card-rules{font-size:11px}.card-name{font-size:13px}.portal-report{padding:70px 28px 50px;min-height:540px}.report-paper h4{font-size:25px}.report-total strong{font-size:38px}.report-scene{max-width:330px}.report-paper{padding:20px 17px}.report-selector{margin-top:22px}.case-visual .portal-stage{min-height:490px}.case-visual .portal-report{min-height:540px}}
@media(max-width:380px){.portal-stage{padding-left:19px;padding-right:19px}.portal-kicker{left:20px;right:20px}.portal-bottom{left:15px;right:15px}.portal-bottom>span{max-width:140px}.report-paper{padding:17px 13px}.report-paper h4{font-size:22px}.report-paper table{font-size:9px}.report-footnote{font-size:7px}.ability-float{right:-5px}.level-medallion{margin-left:-35px}.heirloom-motto{font-size:12px}.project-ribbon .ribbon-copy{padding:25px 21px}}
@media(prefers-reduced-motion:reduce){.portal-stage *,.project-ribbon,.project-ribbon.is-ready .ribbon-window{animation:none!important;transition:none!important}.portal-stage [data-tilt]{transform:none!important}}
/* Keep project choice before the story on every screen. */
.project-ribbon .ribbon-nav{border-top:1px solid var(--p-line);border-bottom:1px solid var(--p-line)}
.project-ribbon .ribbon-tab{min-height:64px;padding-top:15px;padding-bottom:15px}
.ribbon-skills{border-top:1px solid var(--p-line);padding-top:18px;color:var(--p-muted);font-size:13px;line-height:1.6;margin:0 0 24px}
.project-ribbon .portal-motion{border-color:transparent;background:transparent;color:inherit;text-decoration:underline;text-underline-offset:4px}
.project-ribbon .portal-motion:hover{border-color:currentColor}
@media(max-width:767px){.project-ribbon .ribbon-tab{min-height:58px;padding:12px;font-size:12px}.project-ribbon .ribbon-copy{padding:25px 23px 28px}.project-ribbon .ribbon-eyebrow{margin-bottom:12px}.project-ribbon .ribbon-copy h3{margin-bottom:14px}.ribbon-skills{font-size:12px;margin-bottom:18px;padding-top:14px}.project-ribbon .portal-heirloom{min-height:365px;padding-top:58px;padding-bottom:60px}.project-ribbon .heirloom-lockup img{width:145px;height:145px}.project-ribbon .heirloom-wordmark{font-size:48px}.project-ribbon .heirloom-halo{width:240px;height:240px}}
/* Keep the stat badge centered and the persistent level card inside phone frames. */
@media(max-width:767px){.character-scene{height:300px}.level-medallion{margin-left:0}.ability-float{right:8px;bottom:0}.level-orbit{width:220px;height:220px}}
@media(max-width:380px){.level-orbit{width:200px;height:200px}}
