@font-face{font-family:Soulside Betrayed;src:url(../assets/fonts/soulside-betrayed.otf) format("opentype");font-display:swap}@font-face{font-family:Ashborn;src:url(../assets/fonts/ashborn.otf) format("opentype");font-display:swap}:root{color-scheme:dark;background:#020304}*{box-sizing:border-box}html,body{width:100%;min-height:100%;margin:0}body{overflow-x:hidden;background:#020304;color:#e5e9ed;font-family:Arial,Helvetica,sans-serif}.app-shell{display:flex;width:100%;min-height:100dvh;background:#020304}.portal-layout{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);flex:1 1 auto;min-width:0;min-height:100dvh;overflow:hidden;background-color:#020304;background-image:radial-gradient(ellipse 34% 80% at -8% 50%,rgba(9,21,43,.27),transparent 82%),radial-gradient(ellipse 34% 80% at 108% 50%,rgba(7,19,42,.25),transparent 82%),linear-gradient(120deg,#030509,#010203 45%,#020407)}.portal-layout:before{content:"";position:absolute;inset:19px;border:1px solid rgba(230,238,247,.12);pointer-events:none}.story-copy{position:relative;z-index:2;display:flex;flex-direction:column;align-items:flex-start;min-height:0;max-height:100dvh;overflow-y:auto;padding:clamp(38px,5vh,78px) 30px clamp(38px,6vh,80px) clamp(56px,7vw,112px);scrollbar-color:#273747 transparent;scrollbar-width:thin}h1{max-width:none;margin:24px 0 0;color:#f0f2f4;font-family:Soulside Betrayed,Georgia,serif;font-size:clamp(74px,6.7vw,106px);font-weight:400;letter-spacing:0;line-height:.94;white-space:nowrap}h1 em{display:inline-block;color:#b8c6d4;font-style:normal;font-weight:400}.story-index{display:flex;align-items:center;gap:13px;color:#b8c3ce;font-family:Georgia,Times New Roman,serif;font-size:10px;letter-spacing:.2em;white-space:nowrap}.story-index-line{width:29px;height:1px;background:#f0f5faa6}.story-index-number{margin-left:10px;color:#8795a5}.story-archetype{margin:13px 0 0;color:#8293a6;font:10px/1.4 Georgia,Times New Roman,serif;letter-spacing:.16em;text-transform:uppercase}.story-archetype cite{color:#c0cbd5;font-style:normal}.story-reading{width:100%;max-width:460px;margin-top:29px}.reading-block h2{margin:0;color:#e0e8ef;font:10px/1.3 Georgia,Times New Roman,serif;font-weight:400;letter-spacing:.26em;text-transform:uppercase}.reading-block p{margin:7px 0 0;color:#aab5c1;font:11px/1.48 Georgia,Times New Roman,serif}.reading-block .reading-essence{color:#d3dce5;font-style:italic}.reading-block .reading-essence+p{margin-top:6px}.reading-keywords p{color:#c7d1dc;letter-spacing:.04em}.reading-divider{display:flex;align-items:center;gap:11px;height:42px;margin:4px 0}.reading-divider>span{flex:1;height:1px;background:linear-gradient(90deg,#84aacd1a,#84aacd66)}.reading-divider>span:last-child{transform:rotate(180deg)}.story-glyph{display:block;flex:0 0 38px;width:38px;height:38px;background-image:url(../assets/glyph-atlas.png);background-size:900% 600%;background-position:calc(var(--glyph-col) * 12.5%) calc(var(--glyph-row) * 20%);mix-blend-mode:screen;opacity:.78}.portal-area{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:center;align-items:center;min-width:0;padding:70px 52px 60px 10px;perspective:var(--card-perspective, 900px)}.portal-card{position:relative;width:min(var(--card-width, 520px),100%,calc((100dvh - 140px)*.619));aspect-ratio:13 / 21;border:1px solid rgba(246,249,252,.88);border-radius:4px;transform-style:preserve-3d;transform:rotateX(var(--card-rotate-x, 0deg)) rotateY(var(--card-rotate-y, 0deg));background:#030507;box-shadow:0 28px 60px #000000a6;will-change:transform}.portal-card-face{position:absolute;inset:4px;display:grid;grid-template-rows:36px minmax(0,1fr) minmax(48px,max-content) 22px;overflow:hidden;padding:5px 8px 6px;border-radius:2px;background:#030507;transform:translateZ(1px)}.portal-card-face:before{content:"";position:absolute;inset:4px;z-index:3;border:1px solid rgba(246,249,252,.46);border-radius:1px;pointer-events:none}.portal-card-face:after{content:"";position:absolute;z-index:5;inset:0;pointer-events:none;opacity:var(--card-sheen, .11);background:radial-gradient(circle at var(--sheen-x, 50%) var(--sheen-y, 50%),rgba(255,255,255,.17),transparent 47%);mix-blend-mode:screen}.card-arch{position:relative;z-index:4;display:flex;justify-content:center;align-items:center;gap:10px;color:#f0f3f6;font-family:Georgia,Times New Roman,serif;pointer-events:none}.arch-wing{font-size:11px;letter-spacing:.15em;opacity:.72}.arch-star{max-width:68%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Ashborn,Georgia,serif;font-size:31px;line-height:1;transform:translateY(2px)}.card-art{position:relative;min-height:0;margin:0 6px;overflow:hidden;border:1px solid rgba(246,249,252,.78);background:#00000a}.viewport{width:100%;height:100%;overflow:hidden;background:#00000a}.stage{position:relative;width:100%;height:100%;overflow:hidden;background:var(--page-background, #00000a)}.stage canvas{display:block;width:100%;height:100%;touch-action:none}.reference{position:absolute;z-index:2;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;pointer-events:none}.card-corner{position:absolute;z-index:4;color:#f1f4f7;font-family:Georgia,Times New Roman,serif;font-size:13px;line-height:1;pointer-events:none}.corner-tl{top:8px;left:10px}.corner-tr{top:8px;right:10px}.corner-bl{bottom:8px;left:10px}.corner-br{bottom:8px;right:10px}.card-title{position:relative;z-index:4;display:flex;align-items:center;justify-content:center;gap:10px;color:#f0f3f6;font-family:Ashborn,Georgia,serif;font-size:var(--card-title-size, 27px);letter-spacing:0;line-height:1;white-space:nowrap;pointer-events:none}.card-title #cardName{max-width:76%;overflow:hidden;text-overflow:ellipsis}.card-title-rule{width:12%;height:1px;background:linear-gradient(90deg,transparent,rgba(246,249,252,.7))}.card-title-rule:last-child{transform:rotate(180deg)}.card-number{position:relative;z-index:4;display:flex;align-items:center;justify-content:center;gap:13px;color:#f6f9fcad;font-family:Georgia,Times New Roman,serif;font-size:9px;letter-spacing:.25em;pointer-events:none}.card-number span{color:#f1f4f7;font-size:8px}#controls.sh-panel{position:relative;inset:auto;flex:0 0 320px;width:320px;max-width:none;height:100dvh;border-left:1px solid #283344;background:#10151c;-webkit-backdrop-filter:none;backdrop-filter:none}#controls.sh-panel.collapsed{flex-basis:0;width:0;border-left:0}.panel-intro,.panel-status{padding:12px 16px;color:#a5b2bf;line-height:1.45;font-size:12px}.panel-intro{border-bottom:1px solid #283344}.panel-intro strong{display:block;margin-bottom:5px;color:#d9ebff;font-size:14px}.panel-status{border-top:1px solid #283344}.panel-status[data-state=error]{color:#ffb6a6}.panel-status[data-state=ready]{color:#a7d9f5}.scene-text-control .sh-label{display:block}.scene-text-control input,.scene-text-control textarea{display:block;width:100%;margin-top:7px;padding:9px 10px;border:1px solid #384452;border-radius:4px;color:#e8f5f1;background:#0c1820;font:12px/1.45 system-ui,sans-serif}.scene-text-control textarea{min-height:56px;resize:vertical}.scene-text-control input:focus,.scene-text-control textarea:focus{outline:1px solid #a7d9f5}.sh-panel-hint{display:none}@media(max-width:1150px){.story-copy{padding-left:clamp(36px,5vw,64px)}.story-index-number{display:none}h1{font-size:clamp(62px,6vw,78px)}.portal-area{padding-right:36px}.card-title{font-size:calc(var(--card-title-size, 27px) * .76)}}@media(max-width:850px){.story-copy{padding-right:0}}@media(max-width:700px){.app-shell{flex-direction:column}.portal-layout{grid-template-columns:1fr;min-height:100dvh;padding-bottom:35px}.portal-layout:before{inset:13px}.story-copy{max-height:none;overflow:visible;padding:56px 37px 8px}.story-index{font-size:9px}h1{font-size:clamp(52px,13vw,80px)}.story-reading{max-width:500px}.portal-area{padding:28px 42px 36px}.portal-card{width:min(var(--card-width, 520px),78vw,37.14dvh)}.card-title{font-size:calc(var(--card-title-size, 27px) * .7)}#controls.sh-panel{flex:0 0 42dvh;width:100%;height:42dvh;border-left:0;border-top:1px solid #283344}#controls.sh-panel.collapsed{flex-basis:0;width:100%;height:0;border-top:0}}@media(prefers-reduced-motion:reduce){.portal-card{transition:none}}
