* { box-sizing: border-box; margin: 0; padding: 0; }
:root { --indigo:#1b1a72; --indigo-deep:#13125b; --indigo-soft:#efefff; --coral:#ff526d; --coral-soft:#fff0f3; --mint:#22c6aa; --mint-soft:#e9faf6; --paper:#f7f7fb; --surface:#fff; --ink:#17172b; --ink-soft:#65657a; --ink-muted:#9696a8; --line:#e7e6ef; --weekend:#f0f0f5; --shadow:0 18px 55px rgba(31,28,92,.10); }
html { scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body { min-width:320px; background:var(--paper); color:var(--ink); font-family:-apple-system,BlinkMacSystemFont,"SF Pro TC","PingFang TC","Microsoft JhengHei",sans-serif; line-height:1.5; -webkit-font-smoothing:antialiased; }
button,select { color:inherit; font:inherit; } button { cursor:pointer; } a { color:inherit; text-decoration:none; }
button:focus-visible,select:focus-visible,a:focus-visible { outline:3px solid rgba(255,82,109,.32); outline-offset:3px; }
.visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.hero-shell { position:relative; min-height:610px; overflow:hidden; background:var(--indigo); color:#fff; }
.hero-shell::after { content:""; position:absolute; z-index:0; left:-8%; right:-8%; bottom:-155px; height:245px; border-radius:50% 50% 0 0; background:var(--paper); }
.site-header { position:relative; z-index:3; width:min(1380px,calc(100% - 64px)); min-height:86px; margin:0 auto; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:52px; border-bottom:1px solid rgba(255,255,255,.14); }
.brand { display:flex; align-items:center; gap:12px; font-size:14px; font-weight:760; }
.brand-symbol { width:38px; height:38px; display:grid; place-items:center; border:1px solid rgba(255,255,255,.35); border-radius:7px; background:rgba(255,255,255,.10); font-size:11px; font-weight:850; }
.site-nav { display:flex; align-items:center; justify-content:center; gap:34px; }
.site-nav a,.nav-filter { border:0; background:transparent; color:rgba(255,255,255,.74); font-size:13px; transition:color .18s ease; }
.site-nav a:hover,.nav-filter:hover { color:#fff; }
.market-snapshot { display:flex; align-items:center; gap:16px; }.snapshot-date { display:none; }
.status-item { display:flex; align-items:center; gap:7px; color:rgba(255,255,255,.65); font-size:11px; }.status-item strong { color:#fff; font-size:12px; }
.status-dot { width:7px; height:7px; border-radius:50%; background:#a9a9c9; }.status-dot.is-open { background:var(--mint); box-shadow:0 0 0 4px rgba(34,198,170,.13); }.status-dot.is-closed { background:var(--coral); box-shadow:0 0 0 4px rgba(255,82,109,.13); }
.hero-content { position:relative; z-index:2; width:min(1380px,calc(100% - 64px)); margin:0 auto; display:grid; grid-template-columns:minmax(570px,.95fr) minmax(580px,1.05fr); align-items:center; min-height:475px; }
.hero-copy { position:relative; z-index:2; padding:42px 0 62px; }
.hero-kicker,.section-kicker { color:var(--coral); font-size:11px; font-weight:820; letter-spacing:0; }
.hero-copy h1 { margin-top:14px; max-width:650px; font-size:58px; line-height:1.08; font-weight:790; letter-spacing:0; white-space:nowrap; }
.hero-copy h1 span { display:inline; }
.hero-intro { margin-top:18px; color:rgba(255,255,255,.66); font-size:16px; line-height:1.75; }
.hero-visual { position:absolute; right:-70px; top:-6px; width:min(735px,57vw); }.hero-visual img { display:block; width:100%; }
.next-card { margin-top:30px; width:min(570px,100%); min-height:116px; display:grid; grid-template-columns:1fr 1fr 116px; align-items:center; border-top:1px solid rgba(255,255,255,.18); border-bottom:1px solid rgba(255,255,255,.18); }
.next-left,.next-mid,.next-right,.next-empty { padding:16px 18px; min-width:0; }.next-left { padding-left:0; }.next-mid { border-left:1px solid rgba(255,255,255,.14); }.next-right { border-left:1px solid rgba(255,255,255,.14); text-align:right; }
.next-head { display:flex; align-items:center; flex-wrap:wrap; gap:7px; }.next-pill { color:rgba(255,255,255,.6); font-size:10px; font-weight:720; }.next-name { margin-top:5px; font-size:25px; font-weight:760; }.next-date { margin-top:2px; color:rgba(255,255,255,.64); font-size:11px; }
.next-meta-row + .next-meta-row { margin-top:8px; }.next-meta-label { display:block; color:rgba(255,255,255,.48); font-size:9px; }.next-meta-value { display:block; margin-top:1px; color:rgba(255,255,255,.88); font-size:11px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.next-count-label { display:block; color:rgba(255,255,255,.5); font-size:9px; }.next-count { display:flex; align-items:baseline; justify-content:flex-end; gap:4px; color:var(--coral); }.days-num { font-size:42px; line-height:1; font-weight:820; }.days-unit { font-size:14px; font-weight:760; }.next-count-note { color:var(--coral); font-size:12px; }
.sample-badge { display:inline-flex; align-items:center; max-width:100%; padding:3px 7px; border-radius:999px; background:var(--coral-soft); color:#cf3650; font-size:9px; font-weight:730; white-space:nowrap; }
.workbench { position:relative; z-index:4; width:min(1380px,calc(100% - 64px)); margin:-24px auto 0; padding-bottom:36px; }
.section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:22px; padding:0 8px; }.section-heading h2 { margin-top:3px; font-size:30px; line-height:1.2; }.section-heading>p { color:var(--ink-soft); font-size:13px; }
.workspace { display:grid; grid-template-columns:minmax(0,2.05fr) minmax(300px,.95fr); gap:22px; align-items:start; }
.calendar-panel,.schedule-panel { background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow); }.calendar-panel { border-radius:8px; overflow:hidden; }.schedule-panel { display:flex; flex-direction:column; border-radius:8px; padding:24px; overflow:hidden; }
.calendar-toolbar { min-height:72px; padding:14px 18px; display:flex; align-items:center; justify-content:space-between; gap:16px; border-bottom:1px solid var(--line); }
.filters { display:inline-flex; padding:4px; border-radius:7px; background:#f1f1f6; }.filter-btn { min-height:34px; padding:0 15px; border:0; border-radius:5px; background:transparent; color:var(--ink-soft); font-size:12px; font-weight:680; }.filter-btn.active { background:var(--coral); color:#fff; box-shadow:0 5px 14px rgba(255,82,109,.22); }
.calendar-actions { display:flex; align-items:center; gap:7px; }.nav-btn,.back-today,.month-select { min-height:34px; border:1px solid var(--line); border-radius:5px; background:#fff; font-size:11px; }.nav-btn,.back-today { padding:0 11px; }.month-select { min-width:118px; padding:0 9px; font-weight:720; }.nav-btn:hover,.back-today:hover,.month-select:hover { border-color:#c8c6d9; background:#fafaff; }.nav-btn:disabled { cursor:not-allowed; opacity:.38; }.back-today { color:var(--indigo); font-weight:720; }
.legend { min-height:46px; padding:0 20px; display:flex; align-items:center; flex-wrap:wrap; gap:16px; border-bottom:1px solid var(--line); color:var(--ink-soft); font-size:10px; }.legend span { display:inline-flex; align-items:center; gap:6px; }.legend-swatch { width:9px; height:9px; border-radius:2px; border:1px solid var(--line); background:#fff; }.legend-swatch.weekend { background:var(--weekend); }.legend-swatch.hk { background:#fff0f3; border-color:#ff9bad; }.legend-swatch.a { background:var(--mint-soft); border-color:#71d9c7; }.legend-swatch.both { background:var(--indigo); border-color:var(--indigo); }
.calendar-body { padding:15px 18px 20px; }.weekdays,#calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }.weekdays { height:34px; align-items:center; color:var(--ink-muted); text-align:center; font-size:10px; font-weight:700; }.weekdays { display:grid; }.weekday { text-align:center; } #calendar-grid { gap:6px; }
.day { min-width:0; height:78px; }.day.empty { pointer-events:none; }.day-cell { width:100%; height:100%; padding:9px; display:flex; flex-direction:column; align-items:flex-start; justify-content:space-between; border:1px solid var(--line); border-radius:6px; background:#fff; text-align:left; transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease; }.day-cell:hover { transform:translateY(-2px); border-color:#c8c6d9; box-shadow:0 8px 18px rgba(27,26,114,.08); }
.day-num { font-size:13px; font-weight:740; }.day-name,.day-state { display:block; width:100%; font-size:9px; font-weight:700; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.day.weekend .day-cell { background:var(--weekend); color:#9999aa; border-color:transparent; }.day.holiday.hol-hk .day-cell { background:var(--coral-soft); color:#c92e49; border-color:#ff9bad; }.day.holiday.hol-a .day-cell { background:var(--mint-soft); color:#087d69; border-color:#71d9c7; }.day.holiday.hol-both .day-cell { background:var(--indigo); color:#fff; border-color:var(--indigo); box-shadow:0 8px 18px rgba(27,26,114,.18); }.day.today .day-cell { outline:2px solid var(--coral); outline-offset:1px; }
.panel-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; padding-bottom:17px; border-bottom:1px solid var(--line); }.panel-heading h2 { margin-top:4px; font-size:22px; }.range-badge { padding:5px 8px; border-radius:5px; background:var(--indigo-soft); color:var(--indigo); font-size:9px; font-weight:750; }.panel-note { margin:14px 0 3px; color:var(--ink-muted); font-size:11px; }.holiday-list { min-height:0; margin-top:4px; padding-right:9px; overflow-y:auto; overscroll-behavior:contain; scrollbar-color:#c8c5dc transparent; scrollbar-width:thin; list-style:none; }.holiday-list::-webkit-scrollbar { width:5px; }.holiday-list::-webkit-scrollbar-track { background:transparent; }.holiday-list::-webkit-scrollbar-thumb { border-radius:999px; background:#c8c5dc; }
.list-item { position:relative; display:grid; grid-template-columns:54px minmax(0,1fr); gap:13px; padding:17px 22px 17px 0; border-bottom:1px solid var(--line); cursor:pointer; }.list-item::after { content:"查看"; position:absolute; right:0; top:18px; color:var(--indigo); font-size:9px; font-weight:730; opacity:0; transition:opacity .16s ease; }.list-item:hover::after { opacity:1; }.list-date { min-height:55px; display:flex; flex-direction:column; align-items:center; justify-content:center; border-radius:6px; background:var(--indigo-soft); color:var(--indigo); }.list-month { font-size:9px; font-weight:700; }.list-day { font-size:22px; line-height:1.1; font-weight:820; }.list-info { min-width:0; }.list-name { padding-right:6px; font-size:13px; font-weight:750; }.list-name .sample-badge { margin-top:5px; }.list-meta { margin-top:4px; color:var(--ink-soft); font-size:10px; }.list-empty { padding:24px 0; color:var(--ink-muted); font-size:12px; }
.source-bar { margin-top:22px; padding:18px 4px 0; display:flex; align-items:center; justify-content:space-between; gap:20px; border-top:1px solid var(--line); color:var(--ink-muted); font-size:10px; }.source-bar div { display:flex; gap:10px; }.source-bar strong { color:var(--ink-soft); }
.source-bar a,.source-link { color:var(--indigo); text-decoration:underline; text-underline-offset:2px; }
.modal.hidden { display:none; }.modal { position:fixed; inset:0; z-index:20; display:grid; place-items:center; padding:20px; }.modal-backdrop { position:absolute; inset:0; background:rgba(10,9,45,.58); opacity:0; transition:opacity .2s ease; }.modal-panel { position:relative; width:min(540px,100%); max-height:calc(100vh - 40px); overflow:auto; padding:29px; border-radius:8px; background:#fff; box-shadow:0 30px 90px rgba(10,9,45,.34); opacity:0; transform:translateY(10px); transition:opacity .2s ease,transform .2s ease; }.modal.shown .modal-backdrop,.modal.shown .modal-panel { opacity:1; }.modal.shown .modal-panel { transform:translateY(0); }.modal-close { position:absolute; right:18px; top:18px; padding:6px 9px; border:1px solid var(--line); border-radius:5px; background:#fff; color:var(--ink-soft); font-size:10px; }
.modal-head { padding-right:58px; }.modal-head h3 { font-size:25px; }.modal-head .sample-badge { margin-top:8px; }.detail-list { margin-top:22px; }.detail-row { display:grid; grid-template-columns:92px minmax(0,1fr); gap:14px; padding:13px 0; border-top:1px solid var(--line); }.detail-row dt { color:var(--ink-muted); font-size:11px; }.detail-row dd { font-size:12px; font-weight:620; }.detail-desc { color:var(--ink-soft); font-weight:450; line-height:1.7; }.tag { display:inline-flex; padding:3px 7px; margin:0 5px 4px 0; border-radius:4px; background:var(--indigo-soft); color:var(--indigo); font-size:10px; font-weight:700; }.modal-open { overflow:hidden; }
@media (max-width:1100px) { .site-header,.hero-content,.workbench { width:min(100% - 40px,980px); }.site-nav { display:none; }.site-header { grid-template-columns:1fr auto; }.hero-content { grid-template-columns:minmax(430px,.9fr) minmax(430px,1.1fr); }.hero-copy h1 { font-size:46px; }.hero-visual { right:-145px; width:650px; }.workspace { grid-template-columns:minmax(0,1.7fr) minmax(270px,.8fr); }.calendar-toolbar { align-items:flex-start; flex-direction:column; }.calendar-actions { width:100%; }.back-today { margin-left:auto; }.day { height:68px; } }
@media (max-width:780px) { .hero-shell { min-height:830px; }.hero-shell::after { bottom:-170px; height:220px; }.site-header,.hero-content,.workbench { width:calc(100% - 28px); }.site-header { min-height:72px; gap:14px; }.brand>span:last-child { display:none; }.market-snapshot { gap:11px; }.status-item strong { display:none; }.hero-content { display:block; min-height:700px; }.hero-copy { padding:48px 4px 0; }.hero-copy h1 { max-width:350px; font-size:46px; white-space:normal; }.hero-copy h1 span { display:block; }.hero-intro { font-size:14px; }.hero-visual { top:385px; right:-85px; width:610px; opacity:.98; }.next-card { margin-top:23px; grid-template-columns:minmax(0,1fr) 92px; min-height:96px; }.next-mid { display:none; }.next-left { padding:13px 12px 13px 0; }.next-right { padding:13px 0 13px 12px; }.next-name { font-size:21px; }.days-num { font-size:34px; }.workbench { margin-top:-20px; }.section-heading { align-items:flex-start; flex-direction:column; }.section-heading h2 { font-size:26px; }.workspace { grid-template-columns:1fr; }.schedule-panel { padding:20px; }.calendar-toolbar { padding:13px; }.filters { width:100%; }.filter-btn { flex:1; padding:0 8px; }.calendar-actions { display:grid; grid-template-columns:auto 1fr auto; }.back-today { grid-column:1/-1; width:100%; margin-left:0; }.month-select { width:100%; }.legend { padding:9px 13px; gap:9px 13px; }.calendar-body { padding:10px 8px 13px; } #calendar-grid { gap:3px; }.day { height:54px; }.day-cell { padding:6px; border-radius:4px; }.day-num { font-size:11px; }.day-name,.day-state { font-size:8px; }.source-bar,.source-bar div { align-items:flex-start; flex-direction:column; gap:5px; } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition-duration:.01ms!important; } }
