/* Public three-page entrance to the cultivation game. */
html[data-page-mode="portal"] #app { display:none !important; }
html[data-page-mode="game"] #publicSite { display:none !important; }
html[data-page-mode="game"] #app { display:none !important; }
html[data-page-mode="game"] body.game-authenticated #app { display:flex !important; }
html[data-page-mode="game"] body.game-authenticated #loginOverlay { display:none !important; }
html[data-page-mode="game"] body.game-page:not(.game-authenticated) #loginOverlay { z-index:5000; }
html[data-page-mode="game"] body.game-page:not(.game-authenticated) .skip-link { z-index:5001; }
html[data-page-mode="portal"] body { background-attachment:scroll; overflow-x:clip; }
html[data-page-mode="portal"] .world-stage,html[data-page-mode="portal"] #particleCanvas { display:none !important; }
html[data-page-mode="portal"] { scroll-behavior:smooth; }
body.portal-page { min-height:100vh; overflow-x:hidden; color:#f3ecd9; background:linear-gradient(180deg,#080c15 0%,#0b1218 45%,#090d14 100%); }
.portal-shell { position:relative; z-index:2; width:100%; min-height:100vh; overflow-x:clip; background-color:#080c15; background-image:linear-gradient(180deg,rgba(7,12,20,.34),rgba(7,12,20,.78) 40%,rgba(7,12,20,.86)),url('/assets/ui/xianxia-portal-bg.jpg'); background-repeat:no-repeat; background-position:center top; background-size:100% auto; background-attachment:fixed; }
.portal-header { position:sticky; z-index:900; top:0; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:24px; min-height:82px; padding:0 clamp(20px,5.2vw,88px); border-bottom:1px solid rgba(220,193,132,.18); background:rgba(8,14,20,.82); box-shadow:0 12px 35px rgba(0,0,0,.2); backdrop-filter:blur(18px) saturate(1.1); }
.portal-brand { display:inline-flex; align-items:center; gap:12px; width:max-content; color:#f2dfb4; text-decoration:none; }
.portal-brand-seal { display:grid; place-items:center; width:42px; height:42px; border:1px solid rgba(230,198,127,.66); border-radius:50%; background:radial-gradient(circle at 34% 30%,#fff2c5,#a98445 33%,#163b35 68%,#0c1820); box-shadow:0 0 0 4px rgba(224,190,115,.055),0 0 24px rgba(214,183,112,.2),inset 0 1px rgba(255,255,255,.45); color:#ffefbd; font-family:serif; font-size:19px; }
.portal-brand b,.portal-brand small { display:block; }.portal-brand b { font-family:var(--font-title); font-size:12px; letter-spacing:.17em; }.portal-brand small { margin-top:4px; color:#92b09e; font-size:8px; letter-spacing:.25em; }
.portal-nav { display:flex; align-items:center; gap:clamp(21px,3.1vw,48px); }
.portal-nav a { position:relative; display:inline-flex; align-items:center; min-height:82px; color:#b3b7ae; font-size:12px; font-weight:800; letter-spacing:.08em; text-decoration:none; transition:color .18s ease; }
.portal-nav a::after { position:absolute; right:0; bottom:0; left:0; height:2px; background:linear-gradient(90deg,transparent,#e1c17a,transparent); box-shadow:0 0 14px rgba(222,191,119,.4); content:""; transform:scaleX(0); transition:transform .2s ease; }
.portal-nav a:hover,.portal-nav a.active { color:#f3dfaf; }.portal-nav a.active::after,.portal-nav a:hover::after { transform:scaleX(1); }
.portal-nav a.portal-play-link { gap:8px; color:#9de1bd; }.portal-play-link span { font-size:15px; }
.portal-header-cta { justify-self:end; display:inline-flex; align-items:center; gap:13px; padding:12px 17px; border:1px solid rgba(224,194,126,.44); border-radius:12px 4px 12px 4px; background:linear-gradient(145deg,rgba(51,85,65,.55),rgba(20,44,41,.68)); box-shadow:inset 0 1px rgba(255,255,255,.09),0 5px 18px rgba(0,0,0,.18); color:#ead8a6; font-size:10px; font-weight:900; letter-spacing:.1em; text-decoration:none; transition:transform .18s, box-shadow .18s; }
.portal-header-cta:hover { transform:translateY(-2px); box-shadow:inset 0 1px rgba(255,255,255,.12),0 9px 24px rgba(0,0,0,.24); }.portal-header-cta span { color:#9cdbb7; font-size:17px; }
.portal-menu-toggle { display:none; }
.portal-main { width:min(1440px,100%); margin:0 auto; padding:0 clamp(18px,5vw,76px); }
.portal-page[hidden] { display:none !important; }
.portal-hero { position:relative; isolation:isolate; display:grid; grid-template-columns:minmax(0,1.04fr) minmax(360px,.96fr); align-items:center; min-height:min(690px,calc(100vh - 82px)); padding:55px 2.4% 65px; }
.portal-hero::before { position:absolute; z-index:-2; top:0; right:-16vw; bottom:0; left:-16vw; background:radial-gradient(ellipse at 73% 48%,rgba(83,142,128,.16),transparent 31%),radial-gradient(ellipse at 60% 23%,rgba(201,173,107,.09),transparent 28%),linear-gradient(180deg,rgba(8,12,21,.06),rgba(6,11,17,.28)); content:""; }
.portal-hero::after { position:absolute; z-index:-1; right:-13vw; bottom:0; left:-13vw; height:33%; background:linear-gradient(180deg,transparent,rgba(8,13,18,.83)); clip-path:polygon(0 68%,9% 38%,17% 58%,29% 17%,40% 76%,50% 37%,62% 69%,73% 22%,84% 60%,92% 33%,100% 70%,100% 100%,0 100%); content:""; opacity:.86; }
.portal-hero-copy { position:relative; z-index:3; max-width:650px; padding:30px 0 24px; }
.portal-eyebrow { display:flex; align-items:center; gap:10px; color:#a3c7ae; font-size:9px; font-weight:900; letter-spacing:.23em; }
.portal-eyebrow i,.news-toolbar > span i { width:7px; height:7px; border-radius:50%; background:#9cdeb7; box-shadow:0 0 12px rgba(142,225,183,.75); }
.portal-hero h1 { margin:24px 0 17px; color:#f3e6c7; font-family:var(--font-title); font-size:clamp(42px,4.7vw,62px); font-weight:800; line-height:1.08; letter-spacing:.005em; text-shadow:0 4px 35px rgba(229,203,142,.12); }
.portal-hero h1 em,.portal-page-heading h1 em,.portal-section-heading h2 em { color:#d9bf7d; font-style:normal; }
.portal-hero-copy > p { max-width:540px; color:#b7b9b0; font-size:15px; line-height:1.85; }
.portal-hero-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:28px; }
.portal-button { display:inline-flex; align-items:center; justify-content:center; gap:18px; min-height:49px; padding:0 21px; border:1px solid transparent; border-radius:12px 4px 12px 4px; font-size:10px; font-weight:900; letter-spacing:.12em; text-decoration:none; transition:transform .18s,filter .18s,box-shadow .18s; }
.portal-button:hover { transform:translateY(-2px); filter:brightness(1.08); }
.portal-button-primary { border-color:rgba(154,224,184,.42); background:linear-gradient(145deg,#4e9d76,#28694f 56%,#174637); box-shadow:inset 0 1px rgba(255,255,255,.17),0 9px 24px rgba(24,89,62,.28); color:#f6f1de; }
.portal-button-primary span { color:#ffe9a6; font-size:17px; }
.portal-button-quiet { border-color:rgba(226,199,139,.24); background:rgba(13,25,28,.49); color:#c8c1ab; }
.portal-button-quiet span { color:#a4d7b3; font-size:17px; }
.portal-proof-row { display:flex; align-items:center; gap:22px; margin-top:44px; }.portal-proof-row > span { display:grid; gap:5px; }.portal-proof-row b { color:#edd7a0; font-family:var(--font-title); font-size:18px; letter-spacing:.06em; }.portal-proof-row small { color:#788c80; font-size:7px; font-weight:900; letter-spacing:.2em; }.portal-proof-row > i { width:1px; height:28px; background:linear-gradient(transparent,rgba(224,193,127,.5),transparent); }
.portal-hero-art { position:relative; display:grid; place-items:end center; align-self:stretch; min-height:470px; overflow:hidden; perspective:900px; }
.portal-hero-art::after { position:absolute; z-index:-1; right:3%; bottom:6%; left:4%; height:36%; border-radius:50%; background:radial-gradient(ellipse,rgba(136,196,160,.2),rgba(52,98,82,.08) 38%,transparent 72%); content:""; filter:blur(9px); }
.portal-hero-art img { position:absolute; z-index:2; bottom:7%; width:min(77%,390px); height:86%; object-fit:contain; object-position:center bottom; filter:drop-shadow(0 18px 24px rgba(0,0,0,.63)) drop-shadow(0 0 22px rgba(223,213,171,.13)); animation:portalImmortalFloat 5s ease-in-out infinite; }
.portal-art-moon { position:absolute; top:12%; left:31%; width:clamp(155px,19vw,248px); aspect-ratio:1; border-radius:50%; background:radial-gradient(circle at 36% 31%,#fff8dc,#e0dbbb 35%,#93a39b 68%,rgba(106,149,145,.06) 75%,transparent 76%); box-shadow:0 0 50px rgba(195,222,194,.17),0 0 135px rgba(100,188,169,.14); opacity:.7; }
.portal-art-orbit { position:absolute; top:21%; left:17%; width:73%; height:50%; border:1px solid rgba(226,199,135,.32); border-radius:50%; transform:rotate(-32deg); box-shadow:0 0 20px rgba(214,186,119,.07); }.orbit-two { top:28%; left:25%; width:61%; height:43%; border-color:rgba(125,215,177,.2); transform:rotate(34deg); }
.portal-art-cloud { position:absolute; right:0; bottom:25%; left:0; height:100px; border-radius:50%; background:radial-gradient(ellipse,rgba(179,211,185,.16),rgba(121,163,164,.07) 43%,transparent 73%); filter:blur(14px); }
.portal-art-platform { position:absolute; z-index:1; bottom:5%; left:50%; display:grid; place-items:center; width:70%; height:13%; transform:translateX(-50%) rotateX(62deg); border:1px solid rgba(222,195,132,.66); border-radius:50%; background:radial-gradient(ellipse,rgba(226,194,121,.18),rgba(14,37,35,.84) 48%,rgba(10,19,27,.66)); box-shadow:0 0 0 9px rgba(223,193,125,.035),0 0 38px rgba(177,211,175,.14),inset 0 0 18px rgba(230,202,144,.17); color:#f2d990; }
.portal-art-platform span { display:grid; place-items:center; width:42px; height:42px; transform:rotateX(-62deg); border:1px solid rgba(225,199,135,.6); background:radial-gradient(circle,rgba(207,178,106,.29),rgba(12,32,31,.92)); color:#f3d88f; font-family:serif; font-size:22px; }
.portal-art-caption { position:absolute; z-index:3; bottom:1%; color:rgba(227,204,151,.75); font-family:var(--font-title); font-size:8px; letter-spacing:.29em; text-shadow:0 2px 8px #000; }
.portal-hero-coordinate { position:absolute; right:1%; bottom:9%; color:rgba(201,190,156,.43); font-family:serif; font-size:8px; letter-spacing:.17em; writing-mode:vertical-rl; }
.portal-scroll-cue { position:absolute; bottom:1%; left:2.5%; display:flex; align-items:center; gap:11px; color:#788a81; font-size:7px; font-weight:900; letter-spacing:.22em; }.portal-scroll-cue i { display:block; width:1px; height:24px; background:linear-gradient(#e5c77e,transparent); }
@keyframes portalImmortalFloat { 50% { transform:translateY(-8px); filter:drop-shadow(0 22px 27px rgba(0,0,0,.57)) drop-shadow(0 0 26px rgba(223,213,171,.2)); } }
@keyframes portalCloudDrift { to { transform:translateX(18px) scale(1.06); } }

.portal-section { padding:clamp(54px,8vw,105px) 2.5%; }
.portal-intro { display:grid; grid-template-columns:1fr minmax(280px,.7fr); align-items:end; gap:45px; border-top:1px solid rgba(221,194,132,.13); }
.portal-section-heading > span { color:#9ac0a6; font-size:8px; font-weight:900; letter-spacing:.22em; }.portal-section-heading h2 { margin-top:13px; color:#eee1c1; font-family:var(--font-title); font-size:clamp(24px,3.4vw,43px); line-height:1.33; }.portal-section-heading.compact h2 { font-size:clamp(24px,3vw,34px); }
.portal-intro-copy { max-width:470px; margin-bottom:4px; color:#aeb5ac; font-size:13px; line-height:1.9; }
.portal-feature-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:15px; padding:0 2.5% clamp(65px,9vw,120px); }
.portal-feature-card { position:relative; min-height:285px; overflow:hidden; padding:25px 25px 22px; border:1px solid rgba(212,190,137,.19); border-radius:18px 5px 18px 5px; background:linear-gradient(145deg,rgba(23,43,39,.9),rgba(11,22,27,.95)); box-shadow:inset 0 1px rgba(255,255,255,.05),0 16px 34px rgba(0,0,0,.21); transition:transform .22s,border-color .22s,box-shadow .22s; }
.portal-feature-card::after { position:absolute; right:-38px; bottom:-63px; width:180px; height:180px; border:1px solid rgba(224,196,131,.12); border-radius:50%; box-shadow:0 0 0 12px rgba(224,196,131,.027),0 0 0 29px rgba(224,196,131,.02); content:""; }
.portal-feature-card:hover { transform:translateY(-5px); border-color:rgba(223,194,128,.41); box-shadow:inset 0 1px rgba(255,255,255,.07),0 23px 42px rgba(0,0,0,.27),0 0 30px rgba(115,195,158,.06); }
.feature-number { color:#8ba89a; font-size:8px; font-weight:900; letter-spacing:.2em; }.feature-emblem { display:grid; place-items:center; width:49px; height:49px; margin:32px 0 19px; border:1px solid rgba(226,198,131,.43); border-radius:50%; background:radial-gradient(circle,rgba(211,179,104,.19),rgba(16,34,32,.7)); color:#e9d38f; font-size:23px; box-shadow:0 0 24px rgba(218,185,105,.08); }.portal-feature-card h3 { color:#f0e3c4; font-family:var(--font-title); font-size:16px; }.portal-feature-card p { max-width:320px; margin-top:11px; color:#9eaaa2; font-size:11px; line-height:1.8; }.portal-feature-card > a { position:absolute; z-index:2; right:23px; bottom:23px; left:25px; display:flex; justify-content:space-between; color:#cfbd8a; font-size:9px; font-weight:900; letter-spacing:.13em; text-decoration:none; }.portal-feature-card > a b { color:#92d5b0; font-size:14px; }
.feature-expedition { background:radial-gradient(ellipse at 88% 17%,rgba(96,85,137,.19),transparent 43%),linear-gradient(145deg,rgba(29,37,51,.9),rgba(13,22,30,.95)); }.feature-battle { background:radial-gradient(ellipse at 86% 20%,rgba(133,60,52,.17),transparent 43%),linear-gradient(145deg,rgba(44,34,34,.88),rgba(16,22,27,.96)); }
.portal-journey { position:relative; display:grid; grid-template-columns:minmax(220px,.7fr) 1fr; align-items:center; gap:clamp(30px,7vw,95px); min-height:300px; margin:0 2.5% 75px; padding:36px clamp(24px,5vw,68px); overflow:hidden; border:1px solid rgba(225,196,129,.25); border-radius:20px 5px 20px 5px; background:radial-gradient(ellipse at 18% 50%,rgba(103,163,129,.19),transparent 38%),linear-gradient(110deg,rgba(19,41,37,.95),rgba(12,24,31,.97)); box-shadow:inset 0 1px rgba(255,255,255,.055),0 22px 42px rgba(0,0,0,.2); }.portal-journey h2 { margin:9px 0; color:#f0e1bc; font-family:var(--font-title); font-size:clamp(24px,3vw,36px); }.portal-journey p { max-width:600px; margin:0 0 20px; color:#aeb8ad; font-size:12px; line-height:1.8; }.portal-journey code { color:#e6cf94; }
.journey-art { position:relative; display:grid; place-items:center; width:min(100%,220px); aspect-ratio:1; justify-self:center; border:1px solid rgba(225,196,129,.15); border-radius:50%; background:radial-gradient(circle,rgba(202,177,111,.14),transparent 63%); box-shadow:0 0 0 12px rgba(225,196,129,.025),0 0 0 29px rgba(225,196,129,.02); color:#ecd391; font-family:serif; font-size:60px; }.journey-ring { position:absolute; inset:12%; border:1px solid rgba(225,196,129,.35); border-radius:50%; transform:rotateX(68deg) rotateZ(-20deg); box-shadow:0 0 0 9px rgba(134,211,173,.035); }.journey-art > i { position:absolute; bottom:7%; color:#91b69f; font-size:8px; letter-spacing:.18em; }
.portal-latest-news { border-top:1px solid rgba(221,194,132,.13); }.portal-latest-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; margin:27px 0 20px; }.portal-latest-open { color:inherit; text-decoration:none; }.portal-latest-card { height:100%; padding:19px 20px; border:1px solid rgba(212,190,137,.18); border-radius:13px 4px 13px 4px; background:linear-gradient(130deg,rgba(24,45,40,.83),rgba(12,23,29,.91)); transition:transform .2s,border-color .2s; }.portal-latest-open:hover .portal-latest-card { transform:translateY(-3px); border-color:rgba(219,191,126,.43); }.portal-latest-meta,.news-card-meta { display:flex; align-items:center; justify-content:space-between; gap:14px; color:#87978c; font-size:8px; }.news-category { color:#ddc47f; font-weight:900; letter-spacing:.13em; text-transform:uppercase; }.portal-latest-card h3 { margin:12px 0 7px; color:#eadfc5; font-family:var(--font-title); font-size:14px; }.portal-latest-excerpt { color:#a4ada4; font-size:10px; line-height:1.7; }.portal-text-link { display:inline-flex; gap:11px; color:#d8c48e; font-size:9px; font-weight:900; letter-spacing:.12em; text-decoration:none; }.portal-text-link span { color:#91d2af; font-size:14px; }
.portal-rankings { border-top:1px solid rgba(221,194,132,.15); scroll-margin-top:90px; }.portal-ranking-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; }.portal-ranking-heading .portal-section-heading p { margin-top:12px; color:#aeb5ac; font-size:11px; line-height:1.75; }.portal-rank-tabs { display:flex; gap:7px; padding:5px; border:1px solid rgba(220,193,132,.18); border-radius:12px 4px 12px 4px; background:rgba(6,13,19,.62); }.portal-rank-tabs button { min-height:39px; padding:0 15px; border:1px solid transparent; border-radius:8px 3px 8px 3px; background:transparent; color:#9ba99f; font:700 10px/1 var(--font-body); cursor:pointer; transition:background .18s,color .18s,border-color .18s; }.portal-rank-tabs button:hover { color:#eee0bd; }.portal-rank-tabs button.active { border-color:rgba(218,190,126,.34); background:linear-gradient(140deg,rgba(72,105,76,.72),rgba(27,57,50,.88)); color:#f0dfa9; box-shadow:inset 0 1px rgba(255,255,255,.08); }.portal-ranking-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:9px; margin-top:25px; }.portal-rank-row { display:grid; grid-template-columns:38px minmax(0,1fr) auto; align-items:center; gap:11px; min-height:67px; padding:10px 13px; border:1px solid rgba(214,191,138,.15); border-radius:12px 4px 12px 4px; background:linear-gradient(110deg,rgba(18,37,35,.88),rgba(12,22,29,.91)); box-shadow:inset 0 1px rgba(255,255,255,.025); }.portal-rank-number { display:grid; place-items:center; width:34px; height:34px; border:1px solid rgba(214,191,138,.23); border-radius:50%; color:#b0b5aa; font:700 12px var(--font-title); }.portal-rank-row:nth-child(1) .portal-rank-number { border-color:rgba(246,213,132,.67); background:radial-gradient(circle,rgba(220,180,91,.28),rgba(52,43,27,.55)); color:#ffe6a5; box-shadow:0 0 16px rgba(230,188,94,.14); }.portal-rank-row:nth-child(2) .portal-rank-number { color:#d4e1db; }.portal-rank-row:nth-child(3) .portal-rank-number { color:#d8aa88; }.portal-rank-player { min-width:0; }.portal-rank-player strong,.portal-rank-player span { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.portal-rank-player strong { color:#eee5d1; font-size:11px; font-weight:700; }.portal-rank-player span { margin-top:5px; color:#8d9c91; font-size:9px; }.portal-rank-score { color:#e7cf91; font-size:10px; font-weight:800; text-align:right; white-space:nowrap; }.portal-ranking-state { grid-column:1/-1; display:grid; place-items:center; min-height:150px; border:1px dashed rgba(214,191,138,.2); border-radius:14px 4px 14px 4px; color:#a5b0a5; font-size:11px; }.portal-ranking-state.error { color:#dfa496; }.portal-ranking-footer { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-top:15px; color:#829188; font-size:9px; }.portal-ranking-footer a { color:#d7c38e; font-size:9px; font-weight:800; text-decoration:none; }.portal-ranking-footer a b { margin-left:7px; color:#9ed6b2; font-size:14px; }
.portal-muted { color:#8f9d93; font-size:11px; }

/* News discovery, readable article sections, and image publishing. */
.news-browse-tools { display:grid; grid-template-columns:minmax(0,1fr) minmax(220px,310px); align-items:center; gap:14px; margin:0 2.5% 19px; }
.news-category-filters { display:flex; flex-wrap:wrap; gap:7px; }
.news-filter-chip { min-height:34px; padding:0 12px; border:1px solid rgba(215,194,145,.19); border-radius:999px; background:rgba(9,20,25,.7); color:#a9b4a9; font:700 10px var(--font-body); cursor:pointer; transition:background .15s,border-color .15s,color .15s; }
.news-filter-chip:hover,.news-filter-chip.active { border-color:rgba(220,193,132,.52); background:linear-gradient(140deg,rgba(57,91,68,.72),rgba(25,51,45,.88)); color:#f0dfa9; }
.news-search { display:flex !important; grid-template-columns:auto 1fr auto !important; align-items:center; gap:9px !important; padding:0 11px; border:1px solid rgba(204,188,143,.2); border-radius:9px 3px 9px 3px; background:rgba(5,13,17,.72); color:#a6baaa !important; }
.news-search input { min-width:0; padding:10px 0 !important; border:0 !important; background:transparent !important; box-shadow:none !important; color:#f0e6cc; font-size:11px !important; }
.news-search input:focus { outline:none; }
.news-card-image { display:block; width:100%; max-height:360px; margin:0 0 19px; border:1px solid rgba(220,193,132,.2); border-radius:12px 4px 12px 4px; background:#0a1319; object-fit:cover; }
.portal-latest-image { float:right; width:82px; height:68px; margin:0 0 10px 16px; border:1px solid rgba(220,193,132,.2); border-radius:8px 3px 8px 3px; object-fit:cover; }
.news-card-subheading { margin:22px 0 7px; color:#e8d39a; font-family:var(--font-title); font-size:clamp(14px,1.7vw,18px); line-height:1.4; }
.news-card-content p { margin:0 0 13px; white-space:pre-wrap; overflow-wrap:anywhere; }
.news-editor-hint { color:#93a398 !important; font-size:9px !important; font-weight:500 !important; letter-spacing:0 !important; line-height:1.6; }
.news-image-picker { align-content:start; }
.news-image-picker input { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; clip-path:inset(50%); }
.news-image-picker-button { display:flex; min-height:45px; align-items:center; justify-content:center; border:1px dashed rgba(211,190,137,.36); border-radius:9px 3px 9px 3px; background:rgba(5,13,17,.5); color:#ddcc9d; font-size:11px; cursor:pointer; }
.news-image-picker-button:hover { border-color:rgba(143,219,175,.65); background:rgba(28,56,46,.5); }
.news-image-hint { color:#8d9d91; font-size:9px; font-weight:500; letter-spacing:0; }
.news-image-preview { display:grid; grid-template-columns:112px minmax(0,1fr) auto; align-items:center; gap:12px; margin-top:10px; padding:9px; border:1px solid rgba(211,190,137,.2); border-radius:9px 3px 9px 3px; background:rgba(5,13,17,.48); }
.news-image-preview[hidden] { display:none !important; }.news-image-preview img { width:112px; height:70px; border-radius:6px; object-fit:cover; }.news-image-preview b,.news-image-preview small { display:block; overflow:hidden; color:#aeb8ac; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.news-image-preview small { margin-top:5px; color:#829287; font-size:9px; }.news-image-preview button { border:0; background:transparent; color:#dcaa99; font:700 10px var(--font-body); cursor:pointer; }
@media (max-width:640px) { .news-browse-tools { grid-template-columns:1fr; margin:0 2px 15px; }.news-category-filters { flex-wrap:nowrap; overflow-x:auto; padding:2px 0 5px; }.news-filter-chip { flex:0 0 auto; }.news-search { width:100%; }.news-card-image { max-height:230px; }.portal-latest-image { width:70px; height:60px; }.news-image-preview { grid-template-columns:82px minmax(0,1fr); }.news-image-preview img { width:82px; height:60px; }.news-image-preview button { grid-column:2; justify-self:start; } }

/* Keep the leaderboard in a single, centered reading column. */
.portal-ranking-list { grid-template-columns:minmax(0,1fr); width:min(100%,980px); margin-right:auto; margin-left:auto; }
.portal-ranking-footer { width:min(100%,980px); margin-right:auto; margin-left:auto; }

/* News landing page and secure publisher's desk. */
.portal-news-page { min-height:calc(100vh - 82px); padding-top:clamp(52px,8vw,98px); padding-bottom:100px; }
.portal-page-heading { position:relative; padding:0 2.5% 39px; border-bottom:1px solid rgba(221,194,132,.16); }.portal-page-heading h1 { margin:15px 0 10px; color:#f0e2c2; font-family:var(--font-title); font-size:clamp(37px,5.5vw,68px); letter-spacing:.04em; }.portal-page-heading p { color:#abb4aa; font-size:13px; line-height:1.8; }
.news-toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; margin:23px 2.5% 17px; }.news-toolbar > span { display:flex; align-items:center; gap:9px; color:#94a99a; font-size:8px; font-weight:900; letter-spacing:.18em; }.news-toolbar > span i { width:6px; height:6px; }
.portal-editor-trigger { min-height:36px; padding:0 13px; border:1px solid rgba(218,190,126,.25); border-radius:9px 3px 9px 3px; background:rgba(24,42,40,.75); color:#d9c58d; font-size:9px; font-weight:900; letter-spacing:.06em; cursor:pointer; transition:border-color .15s,background .15s; }.portal-editor-trigger:hover { border-color:rgba(224,195,129,.53); background:rgba(37,63,51,.8); }
.portal-editor-panel { margin:0 2.5% 20px; padding:22px clamp(17px,3vw,32px); border:1px solid rgba(220,192,129,.28); border-radius:15px 4px 15px 4px; background:linear-gradient(145deg,rgba(22,44,39,.94),rgba(12,23,29,.96)); box-shadow:0 14px 32px rgba(0,0,0,.2),inset 0 1px rgba(255,255,255,.05); }.portal-editor-panel[hidden] { display:none; }.portal-editor-panel > div > b,.news-editor-heading b { color:#eddfbb; font-family:var(--font-title); font-size:14px; }.portal-editor-panel p { margin-top:7px; color:#9daaa1; font-size:10px; line-height:1.7; }
#newsAdminLoginForm { width:min(510px,100%); margin-top:17px; }.portal-editor-panel label { display:grid; gap:7px; color:#bdc5b9; font-size:9px; font-weight:900; letter-spacing:.06em; }.portal-login-row { display:flex; gap:9px; margin-top:7px; }.portal-login-row input,.news-editor input,.news-editor textarea { width:100%; min-width:0; padding:12px 13px; border:1px solid rgba(204,188,143,.23); border-radius:9px 3px 9px 3px; outline:none; background:rgba(5,13,17,.72); color:#f0e6cc; font:inherit; font-size:11px; }.portal-login-row input:focus,.news-editor input:focus,.news-editor textarea:focus { border-color:rgba(131,211,170,.64); box-shadow:0 0 0 3px rgba(111,189,145,.1); }.portal-login-row .portal-button { min-height:41px; flex:0 0 auto; padding-inline:15px; font-size:8px; }.portal-editor-panel small[role="status"] { display:block; min-height:16px; margin-top:7px; color:#e5a18b; font-size:9px; }
.news-editor-heading { display:flex; align-items:center; justify-content:space-between; gap:15px; padding-bottom:15px; border-bottom:1px solid rgba(217,193,140,.15); }.news-editor form { display:grid; gap:13px; margin-top:16px; }.news-editor-grid { display:grid; grid-template-columns:1fr .42fr; gap:13px; }.news-editor label input,.news-editor label textarea { margin-top:1px; }.news-editor textarea { resize:vertical; line-height:1.65; }.news-editor-actions { display:flex; justify-content:space-between; align-items:center; gap:14px; }.news-editor-actions small { margin:0 !important; color:#a5dcb7 !important; }.news-editor-actions .portal-button { min-height:42px; font-size:8px; }
.news-editor label select { width:100%; margin-top:1px; padding:12px 13px; border:1px solid rgba(204,188,143,.23); border-radius:9px 3px 9px 3px; outline:none; background:#101b1d; color:#f0e6cc; color-scheme:dark; font:inherit; font-size:11px; }
.news-feed { display:grid; gap:14px; margin:0 2.5%; }
.news-card { position:relative; padding:clamp(18px,2.5vw,26px); border:1px solid rgba(212,190,137,.18); border-radius:16px 4px 16px 4px; background:linear-gradient(135deg,rgba(22,42,39,.91),rgba(12,22,28,.96) 58%,rgba(15,23,32,.96)); box-shadow:inset 0 1px rgba(255,255,255,.045),0 12px 28px rgba(0,0,0,.18); transition:border-color .2s,box-shadow .2s; }
.news-card::before { position:absolute; top:17px; bottom:17px; left:0; width:2px; border-radius:999px; background:linear-gradient(transparent,#d7bb75,#83cda3,transparent); content:""; }
.news-card.is-expanded { border-color:rgba(224,196,131,.45); box-shadow:inset 0 1px rgba(255,255,255,.08),0 16px 36px rgba(0,0,0,.28),0 0 25px rgba(214,185,115,.08); }
.news-card-summary { cursor:pointer; user-select:none; }
.news-card-summary:hover h2 { color:#ffeab3; }
.news-card h2 { margin:12px 0 7px; color:#f0e4c7; font-family:var(--font-title); font-size:clamp(16px,2vw,22px); transition:color .18s; }
.news-card-excerpt { color:#c1b695; font-size:11px; font-weight:700; line-height:1.7; }
.news-card-action { display:flex; align-items:center; justify-content:space-between; margin-top:13px; }
.news-expand-btn { display:inline-flex; align-items:center; gap:8px; min-height:34px; padding:0 14px; border:1px solid rgba(220,193,132,.32); border-radius:9px 3px 9px 3px; background:linear-gradient(145deg,rgba(43,76,60,.65),rgba(18,38,33,.85)); color:#f2e1b4; font:700 11px var(--font-body); letter-spacing:.04em; cursor:pointer; transition:all .18s ease; }
.news-expand-btn:hover { border-color:rgba(142,225,183,.65); background:linear-gradient(145deg,rgba(56,104,80,.8),rgba(24,52,45,.95)); color:#fff2cb; box-shadow:0 0 14px rgba(115,195,158,.18); transform:translateY(-1px); }
.news-expand-btn.active { border-color:rgba(220,193,132,.5); background:rgba(25,35,40,.85); color:#c7cfc5; }
.news-expand-icon { display:inline-block; font-style:normal; font-size:12px; transition:transform .2s ease; }
.news-card-body { margin-top:18px; padding-top:18px; border-top:1px dashed rgba(220,195,138,.16); animation:newsFadeIn .22s ease-out; }
.news-card-body[hidden] { display:none !important; }
@keyframes newsFadeIn { from { opacity:0; transform:translateY(-6px); } to { opacity:1; transform:translateY(0); } }
.news-card-content { margin-top:14px; color:#abb5ac; font-size:12px; line-height:1.9; white-space:pre-wrap; overflow-wrap:anywhere; }
.news-card-subheading-small { margin:16px 0 5px; color:#d8c697; font-family:var(--font-title); font-size:clamp(12px,1.4vw,15px); }
.news-card-footer { display:flex; justify-content:space-between; align-items:center; margin-top:19px; padding-top:12px; border-top:1px solid rgba(220,195,138,.12); color:#819489; font-size:9px; }
.news-collapse-bottom-btn { display:inline-flex; align-items:center; gap:6px; min-height:30px; padding:0 12px; border:1px solid rgba(214,191,138,.2); border-radius:6px 2px 6px 2px; background:transparent; color:#aeb8ad; font:600 10px var(--font-body); cursor:pointer; transition:all .15s; }
.news-collapse-bottom-btn:hover { border-color:rgba(220,193,132,.4); color:#f0e4c7; background:rgba(255,255,255,.03); }
.news-delete-button { border:0; background:none; color:#db9989; font-size:9px; cursor:pointer; }
.news-empty,.news-load-error { display:grid; justify-items:center; gap:10px; min-height:200px; align-content:center; padding:30px; border:1px dashed rgba(216,192,136,.2); border-radius:16px 4px 16px 4px; background:rgba(11,23,28,.55); text-align:center; }
.news-empty > span { color:#dfc782; font-family:serif; font-size:34px; }
.news-empty b { color:#e8dbb9; font-family:var(--font-title); font-size:13px; }
.news-empty p,.news-load-error { color:#94a097; font-size:10px; }
.news-load-error { color:#e1a899; }
.portal-footer { display:flex; align-items:center; justify-content:space-between; gap:22px; min-height:100px; padding:24px clamp(20px,5vw,78px); border-top:1px solid rgba(220,193,132,.16); background:rgba(7,13,18,.87); }.portal-footer > span { color:#819188; font-size:9px; }.portal-footer > div { display:flex; gap:17px; }.portal-footer > div a { color:#bdc0b2; font-size:9px; text-decoration:none; }.portal-footer > div a:hover { color:#e8d296; }
.portal-return { display:grid; place-items:center; color:#ddca94; font-size:20px; text-decoration:none; }

@media (max-width:900px) {
  .portal-header { grid-template-columns:1fr auto auto; }.portal-header-cta { display:none; }.portal-nav { gap:22px; }.portal-hero { grid-template-columns:1fr minmax(280px,.8fr); }.portal-hero-art { min-height:390px; }.portal-feature-card { min-height:300px; padding:20px; }.portal-journey { grid-template-columns:.6fr 1fr; }
}
@media (max-width:640px) {
  .portal-shell { background-size:auto 680px; background-attachment:scroll; }.portal-header { min-height:68px; grid-template-columns:1fr auto; gap:13px; padding-inline:17px; }.portal-brand-seal { width:37px; height:37px; }.portal-brand b { font-size:10px; }.portal-brand small { font-size:7px; }.portal-menu-toggle { display:grid; place-items:center; width:39px; height:39px; border:1px solid rgba(220,193,132,.28); border-radius:10px 3px 10px 3px; background:rgba(19,36,34,.8); color:#ecd79d; font-size:19px; }.portal-nav { position:absolute; top:calc(100% + 1px); right:0; left:0; display:none; align-items:stretch; gap:0; padding:8px 16px 13px; border-bottom:1px solid rgba(220,193,132,.2); background:rgba(8,15,20,.97); box-shadow:0 16px 26px rgba(0,0,0,.28); }.portal-nav-open .portal-nav { display:grid; }.portal-nav a { min-height:46px; padding:0 10px; }.portal-nav a::after { right:auto; width:45px; }.portal-main { padding-inline:16px; }.portal-hero { grid-template-columns:1fr; min-height:0; padding:48px 2px 58px; }.portal-hero-copy { padding:0; }.portal-eyebrow { font-size:7px; letter-spacing:.17em; }.portal-hero h1 { margin:17px 0 12px; font-size:clamp(34px,9.2vw,49px); letter-spacing:0; }.portal-hero-copy > p { max-width:540px; font-size:12px; line-height:1.75; }.portal-hero-actions { margin-top:20px; }.portal-button { min-height:45px; padding:0 15px; font-size:8px; }.portal-proof-row { gap:16px; margin-top:25px; }.portal-proof-row b { font-size:15px; }.portal-hero-art { width:min(100%,410px); min-height:370px; margin:16px auto -24px; }.portal-art-moon { top:7%; }.portal-art-orbit { top:14%; }.portal-hero-art img { width:76%; height:90%; }.portal-hero-coordinate { right:0; bottom:12%; }.portal-scroll-cue { bottom:0; left:3%; }.portal-section { padding:47px 2px 56px; }.portal-intro { grid-template-columns:1fr; gap:13px; }.portal-section-heading h2 { font-size:26px; }.portal-intro-copy { font-size:11px; }.portal-feature-grid { grid-template-columns:1fr; gap:10px; padding:0 2px 59px; }.portal-feature-card { min-height:220px; }.feature-emblem { margin:23px 0 13px; }.portal-journey { grid-template-columns:1fr; gap:22px; margin:0 2px 50px; padding:25px 20px 30px; }.journey-art { width:150px; }.portal-journey h2 { font-size:26px; }.portal-journey p { font-size:11px; }.portal-latest-list { grid-template-columns:1fr; gap:10px; }.portal-latest-card { padding:16px; }.portal-ranking-heading { align-items:flex-start; flex-direction:column; }.portal-rank-tabs { width:100%; }.portal-rank-tabs button { flex:1; padding:0 8px; font-size:9px; }.portal-ranking-list { grid-template-columns:1fr; gap:8px; margin-top:17px; }.portal-rank-row { min-height:62px; padding:9px; }.portal-rank-score { font-size:9px; }.portal-ranking-footer { align-items:flex-start; flex-direction:column; }.portal-news-page { min-height:calc(100vh - 68px); padding-top:45px; }.portal-page-heading { padding:0 2px 25px; }.portal-page-heading h1 { font-size:36px; }.portal-page-heading p { font-size:11px; }.news-toolbar { align-items:flex-start; margin:17px 2px 13px; }.news-toolbar > span { padding-top:12px; font-size:7px; }.portal-editor-trigger { font-size:8px; }.portal-editor-panel,.news-feed { margin-right:2px; margin-left:2px; }.portal-login-row { flex-wrap:wrap; }.portal-login-row .portal-button { width:100%; }.news-editor-grid { grid-template-columns:1fr; }.news-editor-heading { align-items:flex-start; flex-direction:column; }.news-editor-heading .portal-editor-trigger { align-self:flex-start; }.news-editor-actions { align-items:flex-end; flex-direction:column; }.news-editor-actions .portal-button { width:100%; }.news-card { padding:18px; }.news-card-content { font-size:11px; }.portal-footer { align-items:flex-start; flex-direction:column; gap:12px; padding:23px 19px; }.portal-footer > div { gap:14px; }.portal-footer > span { line-height:1.7; }
}
@media (prefers-reduced-motion:reduce) { .portal-hero-art img,.portal-art-cloud { animation:none !important; } }
