:root{
  --bg-0:#031f2c;
  --bg-1:#06455b;
  --bg-2:#0b7d91;
  --cyan:#34e9ef;
  --cyan-soft:#aafaff;
  --text:#f5fdff;
  --muted:#b7d9df;
  --card-border:rgba(165,244,255,.58);
  --card-bg:linear-gradient(145deg,rgba(129,236,246,.18),rgba(4,61,79,.24) 42%,rgba(7,35,49,.45));
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:#031f2c;font-family:"Microsoft YaHei","PingFang SC","Noto Sans SC",Arial,sans-serif;color:var(--text)}
body{min-height:100vh;overflow-x:hidden}
.portal{position:relative;min-height:100vh;overflow:hidden;background:
  radial-gradient(circle at 86% 14%,rgba(45,223,236,.37),transparent 32%),
  radial-gradient(circle at 65% 82%,rgba(13,176,194,.28),transparent 35%),
  linear-gradient(122deg,var(--bg-0) 0%,#044054 48%,#08788c 100%)}
.portal:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.02),transparent 28%,rgba(126,239,247,.05) 58%,transparent 70%);pointer-events:none}
.bg-grid{position:absolute;inset:0;opacity:.09;background-image:linear-gradient(rgba(122,237,245,.22) 1px,transparent 1px),linear-gradient(90deg,rgba(122,237,245,.22) 1px,transparent 1px);background-size:72px 72px;mask-image:linear-gradient(to bottom,transparent,black 30%,black 75%,transparent)}
.bg-glow{position:absolute;border-radius:50%;filter:blur(70px);pointer-events:none}
.glow-a{width:34vw;height:34vw;right:-8vw;top:3vh;background:rgba(46,232,240,.18)}
.glow-b{width:28vw;height:28vw;left:25vw;bottom:-14vw;background:rgba(39,201,219,.16)}
.hero{position:relative;z-index:3;width:min(1480px,90vw);margin:0 auto;padding:12vh 0 14vh}
.hero-copy{max-width:1180px}
.brand-mark{display:none}
h1{margin:0;font-size:clamp(44px,5.4vw,86px);line-height:1.08;letter-spacing:.02em;font-weight:700;text-shadow:0 0 24px rgba(160,249,255,.16),0 8px 30px rgba(0,0,0,.18)}
.accent-line{display:flex;gap:6px;width:110px;margin:32px 0 28px}
.accent-line span{height:5px;border-radius:99px;background:linear-gradient(90deg,#44fbff,#14cbd4);box-shadow:0 0 12px rgba(57,238,245,.6)}
.accent-line span:nth-child(1){width:48px}.accent-line span:nth-child(2){width:26px;opacity:.56}.accent-line span:nth-child(3){width:18px;opacity:.24}
.hero-sub{font-size:clamp(17px,1.55vw,25px);color:var(--muted);letter-spacing:.02em;margin:0 0 58px}
.portal-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:20px;max-width:1260px}
.portal-card{position:relative;min-height:318px;padding:34px 25px 26px;border:1px solid var(--card-border);border-radius:18px;text-decoration:none;color:inherit;background:var(--card-bg);box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 12px 34px rgba(0,20,29,.22),0 0 0 1px rgba(56,229,239,.06);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);overflow:hidden;transition:transform .28s ease,border-color .28s ease,box-shadow .28s ease,background .28s ease}
.portal-card:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(255,255,255,.19),transparent 25%,transparent 65%,rgba(41,232,241,.16));opacity:.55;pointer-events:none}
.portal-card:after{content:"";position:absolute;left:12%;right:12%;bottom:-3px;height:5px;border-radius:50%;background:var(--cyan);filter:blur(5px);opacity:.56;transition:.28s ease}
.portal-card:hover,.portal-card:focus-visible{transform:translateY(-9px) scale(1.012);outline:none;border-color:rgba(211,253,255,.95);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 24px 50px rgba(0,21,30,.3),0 0 26px rgba(52,233,239,.26)}
.portal-card:hover:after{opacity:1;filter:blur(4px)}
.portal-card.disabled{cursor:default;opacity:.74}
.portal-card.disabled:hover{transform:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 12px 34px rgba(0,20,29,.22)}
.icon-wrap{height:118px;display:flex;align-items:center;justify-content:center;margin-bottom:8px}
.icon-wrap svg{width:100px;height:100px;overflow:visible;filter:drop-shadow(0 7px 12px rgba(0,230,242,.22))}
.card-title{position:relative;margin:0;text-align:center;font-size:clamp(20px,1.45vw,28px);font-weight:700;letter-spacing:.01em}
.card-subtitle{position:relative;margin:12px 0 0;text-align:center;font-size:13px;line-height:1.6;color:#a9d1d8;min-height:42px}
.card-arrow{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);font-size:32px;font-weight:200;line-height:1;color:#a7f8fb;transition:transform .25s ease,color .25s ease}
.portal-card:hover .card-arrow{transform:translateX(-40%);color:#fff}
.card-badge{position:absolute;right:14px;top:14px;padding:5px 9px;border:1px solid rgba(190,248,250,.35);border-radius:999px;font-size:11px;color:#c6edf1;background:rgba(0,42,56,.28)}
.glass-scene{position:absolute;z-index:1;right:-2vw;bottom:-2vh;width:29vw;height:72vh;pointer-events:none;opacity:.9}
.glass-pane{position:absolute;right:0;bottom:0;width:58%;height:62%;border:2px solid rgba(200,253,255,.88);background:linear-gradient(135deg,rgba(130,242,249,.11),rgba(35,221,232,.23) 48%,rgba(11,119,142,.06));box-shadow:0 0 24px rgba(88,238,247,.5),inset 0 0 38px rgba(183,254,255,.11);transform-origin:bottom right;clip-path:polygon(36% 0,100% 0,100% 100%,0 100%);backdrop-filter:blur(3px)}
.p1{transform:translate(0,0) skewY(-18deg)}.p2{transform:translate(-7vw,-2vh) scale(.72) skewY(-18deg);opacity:.6}.p3{transform:translate(3vw,-14vh) scale(.86) skewY(-18deg);opacity:.5}.p4{transform:translate(-2vw,-25vh) scale(.54) skewY(-18deg);opacity:.28}
.footer{position:absolute;z-index:4;left:5vw;bottom:28px;display:flex;gap:13px;align-items:center;color:rgba(196,230,236,.55);font-size:11px;letter-spacing:.24em}
.footer .dot{width:4px;height:4px;border-radius:50%;background:#49eaf0;box-shadow:0 0 8px #49eaf0}
@media(max-width:1180px){.portal-cards{grid-template-columns:repeat(3,1fr)}.glass-scene{opacity:.45}.hero{padding-top:9vh}.portal-card{min-height:285px}}
@media(max-width:760px){.portal{min-height:100dvh}.hero{width:min(92vw,620px);padding:8vh 0 100px}.hero-copy{text-align:left}h1{font-size:clamp(38px,11vw,56px);line-height:1.16}.hero-sub{font-size:15px;line-height:1.9;margin-bottom:34px}.portal-cards{grid-template-columns:1fr 1fr;gap:13px}.portal-card{min-height:220px;padding:20px 12px 20px;border-radius:15px}.icon-wrap{height:78px}.icon-wrap svg{width:68px;height:68px}.card-title{font-size:18px}.card-subtitle{font-size:11px;margin-top:7px}.card-arrow{font-size:25px;bottom:15px}.glass-scene{width:75vw;height:45vh;opacity:.24}.footer{left:4vw;right:4vw;bottom:19px;font-size:8px;letter-spacing:.11em;justify-content:center}.card-badge{font-size:9px;right:8px;top:8px}}
@media(max-width:440px){.portal-cards{grid-template-columns:1fr}.portal-card{min-height:196px;display:grid;grid-template-columns:90px 1fr;grid-template-rows:auto auto;align-items:center;text-align:left;padding:22px 44px 22px 15px}.icon-wrap{grid-row:1/3;margin:0;height:auto}.card-title,.card-subtitle{text-align:left}.card-subtitle{min-height:auto}.card-arrow{left:auto;right:18px;bottom:50%;transform:translateY(50%)}.portal-card:hover .card-arrow{transform:translate(5px,50%)}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* V1.1 右下角门户后台 */
.admin-gear{position:fixed;z-index:30;right:22px;bottom:20px;width:42px;height:42px;border-radius:50%;border:1px solid rgba(177,248,252,.28);background:rgba(2,39,52,.56);color:rgba(214,253,255,.72);display:grid;place-items:center;cursor:pointer;box-shadow:0 8px 28px rgba(0,17,24,.25),inset 0 1px rgba(255,255,255,.08);backdrop-filter:blur(12px);transition:.22s ease}
.admin-gear:hover{color:#fff;border-color:rgba(196,252,255,.72);background:rgba(5,77,92,.74);box-shadow:0 0 22px rgba(52,233,239,.2)}
.admin-gear svg{width:20px;height:20px}
.admin-modal[hidden]{display:none}.admin-modal{position:fixed;z-index:1000;inset:0;display:grid;place-items:center;padding:24px}.admin-backdrop{position:absolute;inset:0;background:rgba(0,19,27,.72);backdrop-filter:blur(10px)}
.admin-dialog{position:relative;width:min(920px,94vw);max-height:min(88vh,920px);overflow:auto;border:1px solid rgba(170,246,251,.46);border-radius:22px;background:linear-gradient(160deg,rgba(9,67,82,.97),rgba(3,34,47,.98));box-shadow:0 30px 90px rgba(0,11,17,.5),inset 0 1px rgba(255,255,255,.12);padding:30px;color:#f5fdff}
.admin-close{position:absolute;right:18px;top:15px;width:36px;height:36px;border:0;background:transparent;color:#a8d5dc;font-size:29px;line-height:1;cursor:pointer}.admin-close:hover{color:#fff}
.admin-head{padding-right:44px;margin-bottom:22px}.admin-kicker{display:block;color:#54e5ec;font-size:11px;letter-spacing:.26em;margin-bottom:8px}.admin-head h2{margin:0 0 7px;font-size:30px}.admin-head p{margin:0;color:#9ec7cf;font-size:14px}.admin-content{min-height:120px}.admin-loading,.admin-error{padding:40px 10px;text-align:center;color:#abd6dc}.admin-error{color:#ffc8c8}
.admin-form label{display:flex;flex-direction:column;gap:8px;color:#b7d7dd;font-size:13px}.admin-form input[type=text],.admin-form input[type=url],.admin-form input[type=password]{width:100%;height:44px;border:1px solid rgba(155,230,237,.25);border-radius:10px;background:rgba(1,27,38,.48);color:#fff;padding:0 13px;outline:none;font:inherit;transition:.2s ease}.admin-form input:focus{border-color:#4ce8ef;box-shadow:0 0 0 3px rgba(52,233,239,.1)}
.auth-form{width:min(440px,100%);display:grid;gap:17px}.admin-primary,.admin-secondary,.admin-text-btn{border:0;border-radius:10px;cursor:pointer;font:inherit}.admin-primary{min-height:44px;padding:0 22px;background:linear-gradient(90deg,#0dc7d0,#29e5e9);color:#02323c;font-weight:700;box-shadow:0 8px 22px rgba(14,204,214,.18)}.admin-primary:hover{filter:brightness(1.08)}.admin-secondary{min-height:44px;padding:0 20px;border:1px solid rgba(165,235,240,.28);background:rgba(7,56,70,.56);color:#d7f6f8}.admin-text-btn{padding:6px 0;background:transparent;color:#8fcbd2}.admin-text-btn:hover{color:#fff}.admin-hint{margin:0;color:#7faeb6;font-size:12px;line-height:1.7}
.admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:14px;padding:0 2px}.checkbox-line{display:flex!important;flex-direction:row!important;align-items:center;gap:9px!important}.checkbox-line input{accent-color:#28dce3}
.module-list{display:grid;gap:12px}.module-row{border:1px solid rgba(154,230,237,.16);border-radius:14px;padding:16px;background:rgba(1,27,38,.24)}.module-row-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:15px}.module-row-head strong{font-size:16px}.module-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.module-fields .wide{grid-column:1/-1}
.switch{display:flex!important;flex-direction:row!important;align-items:center!important;gap:9px!important;cursor:pointer}.switch input{position:absolute;opacity:0;pointer-events:none}.switch span{position:relative;width:42px;height:23px;border-radius:99px;background:#294f59;box-shadow:inset 0 0 0 1px rgba(255,255,255,.1);transition:.2s}.switch span:after{content:"";position:absolute;width:17px;height:17px;left:3px;top:3px;border-radius:50%;background:#c7e7eb;transition:.2s}.switch input:checked+span{background:#13bac4}.switch input:checked+span:after{transform:translateX(19px);background:#fff}.switch em{font-style:normal;color:#9dc8cf;font-size:12px}
.admin-actions{display:flex;gap:12px;align-items:center;margin-top:18px}.admin-toast{position:sticky;bottom:0;height:0;opacity:0;transform:translateY(12px);text-align:center;color:#ffd1d1;transition:.2s}.admin-toast.show{height:auto;margin-top:14px;padding:10px 13px;opacity:1;transform:none;border:1px solid rgba(255,156,156,.18);border-radius:9px;background:rgba(95,21,27,.38)}.admin-toast.good{color:#c7ffef;border-color:rgba(76,234,198,.18);background:rgba(15,88,73,.34)}
body.admin-open{overflow:hidden}
@media(max-width:760px){.admin-gear{right:14px;bottom:14px;width:39px;height:39px}.admin-modal{padding:10px}.admin-dialog{width:100%;max-height:94dvh;border-radius:18px;padding:22px 16px}.admin-head h2{font-size:25px}.module-fields{grid-template-columns:1fr}.module-fields .wide{grid-column:auto}.admin-toolbar{align-items:flex-start;flex-direction:column}.admin-actions{align-items:stretch;flex-direction:column}.admin-primary,.admin-secondary{width:100%}}
