/* Sky campus: scoped to the signed-in workstation, not the public landing page. */
.home-page{--ink:#0b2045;--muted:#587391;--medical:#086b96;--line:#dceaf6;--mist:#f2f8ff;--font-data:'Consolas',monospace;background:radial-gradient(ellipse at 5% 7%,#fff 0,transparent 42%),radial-gradient(ellipse at 100% 15%,#b8dcff 0,transparent 46%),linear-gradient(145deg,#e1efff,#f8fcff 56%,#d3e9ff);background-attachment:fixed;color:var(--ink)}
.home-page::before,.home-page::after{content:'';position:fixed;pointer-events:none;z-index:-1;border:1px solid #fff9;border-radius:48%;width:90vw;height:50vh;right:-38vw;bottom:-10vh;transform:rotate(-24deg);background:linear-gradient(130deg,#ffffff08,#82b9f333)}
.home-page::after{bottom:-24vh;right:-12vw;width:100vw;background:#ffffff55}
.home-page .station-header,.home-page .home-shell{width:min(1180px,calc(100% - 56px));margin-left:auto;margin-right:7vw}
.home-page .station-header{height:60px;margin-top:16px;border-color:#fff;border-radius:17px;box-shadow:0 12px 36px #3662960b}
.home-page .hero-board{grid-template-columns:minmax(0,1fr) 320px;gap:16px;background:none;box-shadow:none;border:0;border-radius:0;overflow:visible;min-height:326px}
.home-page .hero-board::before,.home-page .hero-board::after{display:none}
.home-page .hero-copy{position:relative;isolation:isolate;overflow:hidden;padding:40px 34px 58px;border:1px solid #fff;border-radius:20px;background:linear-gradient(100deg,#fff 8%,#ffffffea 37%,#ffffff12 100%),var(--hero-image,url('/img/campus-sky.svg')) right center/cover;box-shadow:0 14px 36px #3463880a}
.home-page .hero-copy::after{content:'BETTER TOOLS / BRIGHTER MINDS';position:absolute;bottom:25px;left:34px;font:10px Consolas,monospace;letter-spacing:3px;color:#698bac}
.home-page .hero-copy h1,.home-page .hero-board.hero-has-image .hero-copy h1{font-family:'Microsoft YaHei','PingFang SC',sans-serif;font-size:clamp(30px,2.7vw,45px);line-height:1.35;letter-spacing:-1px;color:#102450;max-width:560px;text-shadow:0 1px #fff}
.home-page .hero-copy h1{background:linear-gradient(#0b2045 45%,#245aca 60%);background-clip:text;-webkit-background-clip:text;color:transparent}
.home-page .hero-note,.home-page .hero-board.hero-has-image .hero-note{font-size:12px;line-height:1.9;max-width:430px;margin-top:15px;color:#45658c}
.home-page .date-line{font-size:11px;color:#52718e;margin-bottom:19px;letter-spacing:1px}
.home-page .announcement-board,.home-page .hero-board.hero-has-image .announcement-board{position:relative;overflow:hidden;padding:25px 24px;border:1px solid #81dce766;border-radius:20px;background:radial-gradient(ellipse at 100% 95%,#13a9bf66,transparent 64%),linear-gradient(140deg,#123e6d,#075776 80%);box-shadow:0 16px 32px #155b8226;color:white}
.home-page .announcement-board::after{content:'';position:absolute;width:260px;height:110px;right:-40px;bottom:-74px;transform:rotate(-20deg);border-radius:50%;border:1px solid #7beaf580;background:#55cadd20;pointer-events:none}
.home-page .announcement-board h2{font-size:19px;color:#fff;line-height:1.45;max-width:185px}
.home-page .announcement-board .panel-kicker{color:#8ae5f2;font-size:9px;letter-spacing:2px;margin-bottom:8px}
.home-page .release-meta b{color:#b2f7e9;background:#ffffff12;padding:4px 7px;border-radius:6px;font-size:10px;white-space:nowrap}.home-page .release-meta span{color:#b5d9e8;font-size:10px}
.bulletin-intro{color:#c5e7f2;font-size:12px;line-height:1.8;margin:16px 0 0}
.home-page .announcement-list{margin-top:12px}.home-page .announcement-list li{grid-template-columns:7px 1fr;min-height:39px;gap:12px}.home-page .announcement-list i{background:#89efe4;box-shadow:0 0 10px #71e8e055;width:5px;height:5px}.home-page .announcement-list b{font-size:12px;font-weight:500;line-height:1.6;padding:8px 0}
.home-page .announcement-foot .announcement-more{color:#b5f5ff;font-size:11px;position:relative;z-index:1}
.home-page .workstation-grid{grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start;margin-top:16px}
.home-page .task-board,.home-page .api-board{background:#ffffffed;border:1px solid #fff;border-radius:20px;padding:24px;box-shadow:0 12px 34px #285b8610}
.home-page .section-heading{padding-bottom:14px}.home-page .section-heading h2,.home-page .section-heading.inverse h2{font-size:18px;color:#102450}.home-page .section-heading .panel-kicker{color:#397bc2;font-size:9px;letter-spacing:2px}
.home-page .task-row{grid-template-columns:48px minmax(0,1fr) auto;min-height:67px;gap:16px}.home-page .task-number{display:none}.home-page .task-code{width:44px;height:44px;background:linear-gradient(135deg,#e5f6ff,#dfeaff);border:0;color:#1268b9;font-size:11px;border-radius:14px}.home-page .task-copy b{font-size:13px}.home-page .task-copy small{font-size:11px;margin-top:4px}.home-page .task-action{font-size:11px}.home-page .task-row:hover{padding-inline:0;background:#f0f8ff}
.home-page .api-board{color:#183d68}.home-page .api-row{min-height:60px;border-color:#e4eef7}.home-page .api-row span{color:#486585;font-size:12px}.home-page .api-row b{color:#5c7692;font-size:10px}.home-page .api-row i{background:transparent;border:1px solid #7998b6}.home-page .api-row.ready i{background:#0b9b8a}.home-page .api-row.ready b{color:#078071}.home-page .api-summary{color:#52769a}.home-page .api-note{color:#68829d;font-size:11px}.home-page .section-heading.inverse{border-color:#e4eef7}
.sky-motto{position:fixed;left:3.5vw;top:31vh;font-family:'KaiTi','STKaiti',serif;font-size:clamp(20px,2vw,32px);color:#496e9d;line-height:1.7;transform:rotate(-7deg);z-index:0;pointer-events:none}.sky-motto span{padding-left:24px}.sky-motto small{display:block;font:9px/2.1 Consolas,monospace;letter-spacing:3px;color:#6f9ed0;margin:24px 0 0 10px;transform:rotate(7deg)}
.home-page :focus-visible{outline:3px solid #54baff;outline-offset:4px}.home-page .admin-link{background:#10475a!important}
@media(min-width:1600px){.home-page .station-header,.home-page .home-shell{margin-right:12vw}}
@media(max-width:1450px){.sky-motto{display:none}.home-page .station-header,.home-page .home-shell{margin-inline:auto}}
@media(max-width:900px){.home-page .hero-board,.home-page .workstation-grid{grid-template-columns:1fr}.home-page .announcement-board{min-height:0}.home-page .hero-copy{min-height:300px}.home-page .api-board{min-height:0}}
@media(max-width:600px){.home-page .station-header,.home-page .home-shell{width:calc(100% - 24px)}.home-page .station-header{padding-inline:10px;gap:8px}.home-page .hero-copy{padding:32px 22px 65px}.home-page .task-board,.home-page .api-board{padding:20px}.home-page .task-row{grid-template-columns:42px minmax(0,1fr);gap:12px;padding:13px 0}.home-page .task-action{grid-column:2;margin:0}.home-page .task-copy small{white-space:normal}.home-page .hero-copy::after{left:22px;font-size:8px;letter-spacing:2px}}
@media(prefers-reduced-motion:reduce){.home-page *{animation:none!important;transition:none!important}}
.home-page .hero-copy{background-image:linear-gradient(100deg,#fff 8%,#ffffffed 37%,#ffffff12 100%),var(--hero-image,url('/img/sysu-south-campus.jpg'));background-position:center,center 68%}
.home-page .hero-board.hero-has-image .hero-copy .date-line{color:#52718e}
/* 这里原本是图片署名（中大南校园 · MA Haofeng · CC BY-SA 4.0 · 展示裁切与蒙层）
   的浮层样式，连同那个"小标签框"一起删掉了：署名已从首页移除。 */
/* 模型 API 未配齐时的红字警告（首页「模型 API 连接状态」面板下方）。 */
.home-page .api-warning{margin:10px 0 0;padding:9px 11px;border-radius:10px;background:#fdecec;border:1px solid #f3c2c2;color:#b91c1c;font-size:11.5px;line-height:1.75}
.home-page .api-warning a{color:#b91c1c;font-weight:700;text-decoration:underline;text-underline-offset:2px}
.home-page .api-warning a:hover{color:#7f1d1d}
.home-page .hero-copy h1,.home-page .hero-board.hero-has-image .hero-copy h1{color:#163b81!important;-webkit-text-fill-color:#163b81!important;background:none!important;text-shadow:none!important}
/* 页脚必须和其它页面一样钉在视口最底部。
   这里以前用 position:relative!important 把首页页脚"拉回文档流"，
   结果是首页只有滚到最下面才看得到它 —— 与"始终锁死可见"的产品要求相反。
   默认的 .compliance-footer 就是 position:fixed，所以这里只需要不再覆盖它。 */
@media(max-width:600px){.home-page .hero-copy{background-image:linear-gradient(100deg,#fffffff5,#ffffffd9 65%,#ffffff70),var(--hero-image,url('/img/sysu-south-campus.jpg'))}}

/* ---------------- 首页公告栏：多条公告的列表 / 弹窗右栏 ----------------
   条目现在整行都是按钮（点开对应那条公告）。原来的 li 是「7px 圆点 + 1fr 文字」
   两列网格——按钮作为 li 的唯一子元素会被塞进那 7px 的列里，文字会被压成
   每两个字换一行，所以这里把网格交给按钮自己排版。 */
.home-page .announcement-list li{grid-template-columns:1fr;gap:0;min-height:0}
.announcement-item-btn{display:grid;grid-template-columns:32px minmax(0,1fr) 8px;align-items:center;gap:12px;width:100%;padding:9px 0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:8px}
.announcement-item-btn span{font:700 10px var(--font-data,monospace);color:#8ae5f2;letter-spacing:.08em}
.announcement-item-btn b{font-size:12px;font-weight:500;line-height:1.6;color:inherit}
.announcement-item-btn i{justify-self:end}
.announcement-item-btn:hover b{text-decoration:underline;text-decoration-color:#7beaf5}
.announcement-item-btn:focus-visible{outline:2px solid #54baff;outline-offset:2px}

/* 弹窗：左侧正文 + 右侧公告栏目。只有一条公告时 JS 把整栏隐藏，正文占满。 */
.announcement-dialog-main{display:grid;grid-template-columns:minmax(0,1fr) 212px;flex:1;min-height:0;overflow:hidden}
.announcement-dialog-main .announcement-dialog-body{min-height:0}
.announcement-dialog-toc{border-left:1px solid var(--line,#e6eef2);background:var(--paper,#f7fbfc);padding:14px 12px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.announcement-dialog-toc[hidden]{display:none}
.announcement-toc-item{display:flex;flex-direction:column;gap:3px;width:100%;padding:9px 11px;border:1px solid transparent;border-radius:10px;background:none;color:var(--ink-2,#31535b);font:inherit;text-align:left;cursor:pointer}
.announcement-toc-item b{font-size:.8rem;font-weight:600;line-height:1.45}
.announcement-toc-item small{font-size:.68rem;color:var(--muted,#667e84)}
.announcement-toc-item:hover{background:#fff;border-color:var(--line,#e6eef2)}
.announcement-toc-item.active{background:#fff;border-color:var(--medical,#176d88);box-shadow:0 4px 14px rgba(23,109,136,.1)}
.announcement-toc-item.active b{color:var(--medical,#176d88)}
@media(max-width:680px){
  .announcement-dialog-main{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}
  .announcement-dialog-toc{flex-direction:row;overflow-x:auto;border-left:0;border-bottom:1px solid var(--line,#e6eef2);padding:10px 12px}
  .announcement-toc-item{min-width:158px;flex:none}
}

/* Two-image home hero: one continuous horizontal slide, with a calm text veil. */
.home-page .hero-copy{background:#eaf7fb}
.home-page .hero-slides{position:absolute;inset:0;z-index:0;pointer-events:none}
.home-page .hero-slide-track{display:flex;width:400%;height:100%;transform:translateX(-25%);transition:transform .7s cubic-bezier(.22,.68,0,1)}
.home-page .hero-slide{flex:0 0 25%;min-width:0;background-image:linear-gradient(100deg,#f0fbfefb 0%,#edfaf9eb 37%,#e8faff0d 77%),var(--hero-photo);background-position:center;background-repeat:no-repeat;background-size:cover}
.home-page .hero-slide-campus{background-image:linear-gradient(100deg,#f8fdff 0%,#f8fdfff0 38%,#f8fdff21 78%),var(--hero-image,url('/img/sysu-south-campus.jpg'));background-position:center,center 68%}
.home-page .hero-slide-assistant{background-image:linear-gradient(100deg,#f0fbfefb 0%,#edfaf9eb 37%,#e8faff0d 77%),url('/img/assistant-hero.png');background-position:center,center}
.home-page .hero-copy>:not(.hero-slides){position:relative;z-index:1}
.home-page .hero-copy .hero-carousel-controls{position:absolute;right:18px;bottom:16px;z-index:3;display:flex;align-items:center;gap:8px;padding:4px;border:1px solid #ffffffa8;border-radius:999px;background:#f8fdffe8;box-shadow:0 6px 18px #123e6d20;backdrop-filter:blur(12px)}
.home-page .hero-copy .hero-carousel-controls[hidden],.home-page .hero-slides[hidden]{display:none}
.hero-carousel-controls button{width:30px;height:30px;display:grid;place-items:center;padding:0;border:0;border-radius:50%;background:transparent;color:#16416b;font:700 18px/1 Arial,sans-serif;cursor:pointer}
.hero-carousel-controls button:hover{background:#d9f4f6}
.hero-carousel-controls button:focus-visible{outline:2px solid #086b96;outline-offset:2px}
.hero-carousel-count{min-width:34px;text-align:center;color:#3b6b80;font:700 10px/1 Consolas,monospace}
@media(max-width:600px){.home-page .hero-slide-campus{background-position:center,64% center}.home-page .hero-slide-assistant{background-image:linear-gradient(90deg,#f0fbfefc 0%,#f0fbfef0 54%,#f0fbfe8c 100%),url('/img/assistant-hero.png');background-position:center,72% center}.home-page .hero-copy .hero-carousel-controls{right:12px;bottom:12px}}
@media(prefers-reduced-motion:reduce){.home-page .hero-slide-track{transition:none}}

/* The pale cyan illustration sits below the existing left-rail motto. */
.sky-motto .sky-motto-art{display:block;width:clamp(210px,17vw,310px);height:auto;margin:19px 0 0 -8px;transform:rotate(7deg);mix-blend-mode:multiply;mask-image:radial-gradient(ellipse 75% 77% at 50% 50%,#000 62%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 75% 77% at 50% 50%,#000 62%,transparent 100%)}
@media(min-width:1300px) and (max-width:1750px){.sky-motto{display:block}.home-page .station-header,.home-page .home-shell{width:min(1180px,calc(100% - 370px));margin-left:auto;margin-right:3.5vw}}
