/* 0.5 · PDF artwork, lighter motion, navigation, reading panels and music. */
.portal-admin-entry{margin-left:12px;color:#c4a6d7;text-decoration:none}.portal-admin-entry:hover{color:#f0d9b3;text-shadow:0 0 8px #cba4df}.admin-entry{font-size:10px;color:#bea2d0}
:root{--sans:"Microsoft YaHei","PingFang SC","Noto Sans SC",sans-serif;--serif:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong","SimSun",serif}
body{font-weight:400;-webkit-font-smoothing:antialiased}
.site-header nav{gap:13px;font-size:14px;letter-spacing:.07em;font-weight:500}
.site-header nav a{padding:0 8px;transition:color .2s,background .2s,text-shadow .2s}
.site-header nav a:before{content:"";position:absolute;left:10px;right:10px;bottom:22px;height:1px;background:linear-gradient(90deg,transparent,#dac19c,#c59be4,transparent);transform:scaleX(0);transition:transform .24s;transform-origin:center}
.site-header nav a:hover,.site-header nav a:focus-visible{color:#f4dfff!important;background:linear-gradient(0deg,#ba8ad722,transparent 75%);text-shadow:0 0 13px #c599e88c}
.site-header nav a:hover:before,.site-header nav a:focus-visible:before{transform:scaleX(1)}
.portal-wordmark:hover{color:#f1ddff;text-shadow:0 0 14px #bb87d8}
.portal-tools button{transition:color .2s,transform .2s,filter .2s}
.portal-tools button:hover{color:#f3dfb9;transform:translateY(-2px);filter:drop-shadow(0 0 5px #d9b9ed66)}
.beam-label>span{font-size:19px;font-weight:400;letter-spacing:.14em}
.faction-symbol{display:grid;place-items:center;min-height:130px}
.faction-crest{width:140px;height:140px;object-fit:contain;filter:invert(1);mix-blend-mode:screen;opacity:.94}
.record-faction-crest{width:110px;height:110px;object-fit:contain;float:right;margin:12px 0 15px 25px;filter:invert(1);mix-blend-mode:screen}
.character-portrait{object-fit:cover;transition:transform .45s,filter .3s}
.character-card:hover .character-portrait{transform:scale(1.035);filter:brightness(1.04)}
.portrait-placeholder{aspect-ratio:1;border-radius:2px;box-shadow:0 0 0 5px #b78fd507}
.portrait-placeholder:has(.character-portrait) .portrait-id{background:#100b17b5;padding:3px 6px;border:1px solid #c5a3d841;color:#d4c19e}
.portrait-placeholder:has(.character-portrait) .portrait-status{bottom:10px;background:#110c1ac9;padding:3px 10px;border:1px solid #b592cc4d;color:#ddc9ec}
.record-avatar{float:right;width:96px;height:96px;object-fit:cover;margin:18px 0 16px 26px;border:1px solid #c49fe180;outline:5px solid #bd8ed414;border-radius:50%;box-shadow:0 0 30px #a979ce26}

/* Keep transitions airy instead of masking the full page. */
.route-veil{background:radial-gradient(ellipse,#7d5c7c45,#20182112)}
.route-veil.is-active{animation:light-route-veil .4s ease both}
.route-veil img{width:48px;height:48px;animation-duration:.4s;filter:brightness(0) invert(1) drop-shadow(0 0 6px #c59bd580)}
.route-veil-ring{width:88px;height:88px;animation-duration:.4s;border-color:#c4a5d15c;box-shadow:0 0 0 9px #bd92d008,0 0 0 10px #d6bb8d30}
.route-veil-star{transform:translate(44px,0) rotate(45deg);opacity:.5}
.page-enter{animation:light-page-enter .32s ease both}
dialog.is-entering{animation:light-panel-enter .28s cubic-bezier(.2,.8,.2,1) both}
.record-reveal{animation:light-record-enter .25s ease both}
@keyframes light-route-veil{0%{opacity:0}25%{opacity:.3}100%{opacity:0}}
@keyframes light-page-enter{from{opacity:.62;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes light-panel-enter{from{opacity:.35;transform:translateY(7px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes light-record-enter{from{opacity:.55;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}

/* Reading surfaces: fine orbit linework, brighter headings and decorated controls. */
#detail-dialog,#search-dialog{border-color:#d2b5e3a6;background:radial-gradient(ellipse at 100% 0,#754b8333,transparent 55%),linear-gradient(145deg,#2b2033,#18141e 53%,#302b24);box-shadow:0 22px 110px #000a,0 0 0 5px #c49bd008,0 0 44px #b081c532}
#detail-dialog::backdrop,#search-dialog::backdrop{background:#09050d99;backdrop-filter:blur(5px)}
.detail-wrap{padding:52px 48px 40px}
.detail-wrap:before{border-color:#bda0d866;box-shadow:0 0 0 16px #261c2d,0 0 0 17px #c9b68d7a;top:-142px;right:-112px}
.detail-wrap:after{content:"";position:absolute;right:66px;top:82px;width:44px;height:44px;clip-path:polygon(50% 0,58% 42%,100% 50%,58% 58%,50% 100%,42% 58%,0 50%,42% 42%);background:#b58bcd25;z-index:-1}
.detail-wrap .eyebrow{font-size:10px;letter-spacing:.18em;color:#d6be93}
.detail-wrap .eyebrow:before{content:"";display:inline-block;width:7px;height:7px;clip-path:polygon(50% 0,58% 42%,100% 50%,58% 58%,50% 100%,42% 58%,0 50%,42% 42%);background:#d7bd93;margin-right:10px}
.detail-wrap #detail-title{font-size:38px;line-height:1.5;letter-spacing:.12em;margin-bottom:19px;color:#eacffd}
.detail-meta{padding-bottom:20px;border-image:linear-gradient(90deg,#c7abd47a,#d9c39c4d,transparent) 1}
.article-prose p{font-size:14px;letter-spacing:.045em;line-height:2.3;color:#e2d7eb}
.detail-close{border-radius:50%;width:34px;height:34px;font-size:23px;transition:transform .25s,color .2s,border-color .2s,box-shadow .2s}
.detail-close:hover{transform:rotate(90deg);box-shadow:0 0 16px #cda2e740;color:#f2dcaf}
.profile-fields>div{border-bottom:1px solid #b08abb1f;padding:12px 0}
.profile-fields dt{color:#bea3cf}.profile-fields dd{line-height:1.9}
.related-section{background:#bb91d008;padding:20px;border:1px solid #b79bc52b;position:relative}
.related-section h3{font-size:12px;letter-spacing:.12em}
.source-caption{font-size:10px;line-height:1.9;color:#b7a3c2}
.dialog-head{font-size:13px;letter-spacing:.13em;background:#b78fcd0d}
.search-field input{font-size:15px}
.search-result{transition:background .2s,transform .2s,border-color .2s;border-left:2px solid transparent;padding-left:12px}
.search-result:hover,.search-result:focus-visible{border-left-color:#d6bc8b;transform:translateX(3px);background:#ba89d722!important}
.search-result strong{font-size:15px;font-weight:500;color:#e4caef}.search-result p{font-size:11px;line-height:1.9}

/* One persistent audio engine, with home controls and a small inner-page dock. */
.music-host .transport{display:flex;align-items:center;gap:8px;flex-shrink:0}
.music-host .transport>button:not(.audio-play){padding:4px;width:23px;height:30px;display:grid;place-items:center;color:#c4a9d6;transition:color .2s,transform .2s}
.music-host .transport>button:not(.audio-play) svg{width:14px;height:14px;stroke-width:1.15}
.music-host .transport>button:hover{color:#f2dcae;transform:scale(1.06)}
.music-host .audio-play{width:42px;height:42px;background:#b789d315;border-color:#b892d685;color:#ead9f5;box-shadow:0 0 17px #b281cd15}
.music-host .audio-play:hover{background:#bd91db26}
.music-host #track-picker{display:flex;align-items:center;gap:9px;padding:0;color:#e7d3f4;max-width:100%;font-size:12px;letter-spacing:.12em;text-align:left}
.music-host #track-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.track-chevron{color:#d5ba90;font-size:11px}
.music-host .track-info{gap:10px}
.music-host .track-subline{font-size:9px}
.music-host .music-collapse{display:none;color:#d0b1e5;font-size:18px;padding:5px}
.music-host[data-mode="dock"]{position:fixed;left:auto;right:24px;bottom:22px;width:430px;max-width:calc(100vw - 32px);height:98px;margin:0;padding:17px 20px;gap:15px;background:linear-gradient(135deg,#302138f5,#19141ff5);border:1px solid #c19ad373;box-shadow:0 9px 45px #0007,0 0 22px #b781d21c;z-index:22;backdrop-filter:blur(16px)}
.music-host[data-mode="dock"] .player-volume{width:54px;gap:7px;margin:0}
.music-host[data-mode="dock"] .player-volume input{width:30px}
.music-host[data-mode="dock"] .music-collapse{display:block}
.music-host[data-mode="dock"].is-collapsed{width:262px;height:55px;padding:9px 13px;gap:10px}
.music-host[data-mode="dock"].is-collapsed .track-slider,.music-host[data-mode="dock"].is-collapsed .track-subline,.music-host[data-mode="dock"].is-collapsed #track-time,.music-host[data-mode="dock"].is-collapsed .player-volume{display:none}
.music-host[data-mode="dock"].is-collapsed .audio-play{width:30px;height:30px}
.music-host[data-mode="dock"].is-collapsed .audio-play svg{width:13px;height:13px}
.music-host[data-mode="dock"].is-collapsed .transport{gap:3px}
.music-host[data-mode="dock"].is-collapsed .transport>button:not(.audio-play){width:19px}
.music-host .playlist-popover{position:absolute;bottom:calc(100% + 12px);left:0;width:260px;max-width:calc(100vw - 48px);background:linear-gradient(145deg,#31203e,#1a1521);border:1px solid #c7a0df85;box-shadow:0 10px 45px #0008,0 0 25px #b582d522;padding:15px 14px;z-index:10}
.music-host .playlist-popover[hidden]{display:none}
.playlist-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #b192c03d;padding:0 8px 12px;color:#d9c093;font-size:11px;letter-spacing:.14em}
.playlist-heading small{font-size:9px;color:#a78ab7}
.playlist-popover>button{display:flex;align-items:center;width:100%;gap:14px;padding:13px 9px;color:#d0b5e3;font-size:13px;border-left:2px solid transparent;transition:background .2s,color .2s,border-color .2s;text-align:left}
.playlist-popover>button:hover,.playlist-popover>button[aria-pressed="true"]{background:#b082ce1a;border-left-color:#d4b98b;color:#f0ddff}
.track-number{font:9px var(--mono);color:#b6a184}.selected-track-mark{margin-left:auto;color:#dbc18e;opacity:0}.playlist-popover>button[aria-pressed="true"] .selected-track-mark{opacity:1}
body:not(.portal-mode){padding-bottom:82px}
@media(max-width:1100px){.site-header nav{gap:6px;font-size:12.5px}.site-header nav a{padding:0 6px}.music-host[data-mode="home"]{gap:12px}.music-host[data-mode="home"] .player-volume{width:58px}}
@media(max-width:700px){
 .site-header nav{font-size:14px}.site-header nav a{padding:15px 12px}.site-header nav a:before{bottom:8px;left:12px;right:12px}
 .beam-label>span{font-size:17px}.faction-symbol{min-height:75px}.faction-crest{width:68px;height:75px}.faction-row{grid-template-columns:72px 1fr;gap:17px}.faction-main h2{font-size:28px}
 .record-avatar{width:72px;height:72px;margin:18px 0 14px 17px}.record-faction-crest{width:76px;height:76px}
 .detail-wrap{padding:36px 25px 28px}.detail-wrap #detail-title{font-size:29px;letter-spacing:.1em}.article-prose p{font-size:13px;line-height:2.2}.detail-close{margin-right:-12px}
 .source-caption{font-size:9px}.related-section{padding:15px}.search-field input{font-size:16px}
 .music-host[data-mode="home"]{gap:12px}.music-host .transport{gap:4px}.music-host .audio-play{width:36px;height:36px}.music-host .transport>button:not(.audio-play){width:20px}.music-host .transport>button:not(.audio-play) svg{width:12px}.music-host .track-info{font-size:10px}.music-host #track-picker{font-size:11px}.music-host .track-info>span:last-child{font-size:8px}
 .music-host[data-mode="dock"]{right:16px;bottom:16px;padding:14px;width:calc(100vw - 32px);gap:12px}.music-host[data-mode="dock"].is-collapsed{width:248px;height:53px}
 .music-host .playlist-popover{width:240px}.music-host[data-mode="dock"] .player-volume{display:none}
}
@media(prefers-reduced-motion:reduce){.page-enter,dialog.is-entering,.record-reveal,.route-veil.is-active{animation:none!important}.site-header nav a,.site-header nav a:before,.character-portrait,.search-result{transition:none!important}.character-card:hover .character-portrait,.search-result:hover{transform:none}}
