
:root {
  --red:#b71924; --deep:#8f111a; --ink:#262322; --muted:#77716b;
  --gold:#ac8152; --paper:#f6f4ef; --line:#dedad3; --white:#fff;
  font-family:"PingFang SC","Microsoft YaHei",sans-serif; color:var(--ink);
  background:var(--paper); font-synthesis:none;
}
* { box-sizing:border-box }
body { margin:0; font-size:15px; line-height:1.65 }
button,input,select { font:inherit }
button { cursor:pointer }
button,a,input,select { -webkit-tap-highlight-color:transparent }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible {
  outline:3px solid var(--gold); outline-offset:4px;
}
button { color:inherit }
[hidden] { display:none!important }
h1,h2,h3,p { margin:0 }
a { color:var(--red); text-underline-offset:4px }
.preview-bar {
  background:#252322; color:#eee9e2; padding:11px max(24px,calc((100% - 1320px)/2));
  display:flex; align-items:center; gap:20px; flex-wrap:wrap; font-size:12px;
}
.preview-mark { font-weight:650; white-space:nowrap }
.preview-mark b { color:#e8bb83; margin-right:10px; letter-spacing:1px }
.preview-controls { margin-left:auto; display:flex; gap:7px; align-items:center; flex-wrap:wrap }
.preview-controls button {
  border:1px solid #66605a; padding:5px 12px; background:transparent; color:inherit; border-radius:3px;
}
.preview-controls button[aria-pressed="true"] { background:#efe9df; border-color:#efe9df; color:#292522 }
.preview-controls label { margin-left:10px }
.preview-controls select { color:#f4efe9; border:1px solid #66605a; background:#252322; padding:5px 8px; border-radius:3px }
.shell { max-width:1320px; margin:26px auto 42px; background:var(--white); border:1px solid #d5d0c8; padding:0 42px }
.brand-row { display:flex; align-items:center; justify-content:space-between; min-height:98px; gap:28px; border-bottom:1px solid var(--line) }
.logo { width:178px; height:auto; display:block }
.brand-meta { display:flex; align-items:center; gap:22px }
.brand-slogan { font-size:12px; letter-spacing:3px; color:#59534e; border-left:1px solid var(--line); padding-left:22px }
.utility { color:var(--muted); display:flex; gap:18px; align-items:center; font-size:12px }
.plain { background:none; border:0; padding:6px 0; color:var(--muted) }
.plain:hover { color:var(--red) }
.masthead { display:flex; gap:30px; align-items:center; justify-content:space-between; padding:35px 0 25px }
.eyebrow { font-size:11px; letter-spacing:3px; font-weight:600; color:var(--muted); text-transform:uppercase }
h1 { color:var(--red); font-size:64px; line-height:1.2; letter-spacing:5px; font-weight:800; margin:10px 0 11px }
.masthead-sub { letter-spacing:4px; font-size:16px; font-weight:600 }
.edition { text-align:right; min-width:150px; border-left:1px solid var(--line); padding-left:30px; align-self:stretch; display:flex; flex-direction:column; justify-content:center }
.edition strong { font-family:Georgia,serif; font-size:56px; line-height:1.1; font-weight:400; letter-spacing:-3px; color:var(--ink) }
.edition span { font-size:11px; letter-spacing:2px; color:var(--muted); margin-top:6px }
.double-rule { height:9px; border-top:3px solid var(--ink); border-bottom:1px solid var(--ink); position:relative }
.double-rule:after { content:""; position:absolute; width:122px; height:5px; background:var(--red); left:0; top:-3px }
.navbar { min-height:52px; display:flex; gap:30px; align-items:center; border-bottom:1px solid var(--line) }
.nav-tab { align-self:stretch; border:0; border-bottom:3px solid transparent; background:none; padding:10px 0; font-size:14px; letter-spacing:2px }
.nav-tab.active { border-color:var(--red); color:var(--red); font-weight:650 }
.nav-aside { margin-left:auto; color:var(--muted); font-size:12px }
.welcome-strip { position:relative; margin:28px 0 32px; padding:25px 30px; background:var(--red); color:#fff; overflow:hidden; display:flex; justify-content:space-between; align-items:center; gap:24px }
.welcome-strip:before { content:""; position:absolute; width:540px; height:270px; border:1px solid #ffffff20; transform:rotate(-18deg); top:-120px; right:-80px }
.welcome-strip:after { content:""; position:absolute; width:500px; height:260px; border:1px solid #e6bd6f45; transform:rotate(-18deg); top:-75px; right:-50px }
.welcome-copy,.welcome-seal { position:relative; z-index:1 }
.welcome-copy h2 { font-size:27px; letter-spacing:3px; font-weight:650 }
.welcome-copy p { font-size:13px; margin-top:7px; color:#f7dcdd; letter-spacing:1px }
.welcome-seal { display:flex; flex-direction:column; text-align:right; padding-left:25px; border-left:1px solid #ffffff45; white-space:nowrap }
.welcome-seal strong { color:#f2d5a4; letter-spacing:3px; font-size:17px }
.welcome-seal span { font-size:10px; letter-spacing:2px; margin-top:3px; color:#f0c7c9 }
.section-heading { display:flex; justify-content:space-between; align-items:center; margin-bottom:18px; gap:20px }
.section-heading h2 { font-size:22px; letter-spacing:2px }
.section-heading h2 em { font:normal 16px Georgia,serif; margin-left:12px; color:var(--gold) }
.section-heading p { font-size:12px; color:var(--muted) }
.module-grid { display:grid; grid-template-columns:1fr 1fr; gap:26px }
.module-card { min-width:0; border:1px solid var(--line); border-top:3px solid var(--ink); display:flex; flex-direction:column; transition:border-color .15s,transform .15s }
.module-card:hover { border-color:#ba8b83; transform:translateY(-2px) }
.module-head { padding:24px 26px 15px; display:flex; justify-content:space-between; align-items:flex-start; gap:15px }
.module-head h3 { font-size:30px; letter-spacing:3px; margin-top:2px }
.module-number { font:normal 48px/1 Georgia,serif; color:var(--red); letter-spacing:-2px }
.module-kicker { font-size:10px; letter-spacing:2px; color:var(--muted) }
.module-description { padding:0 26px; color:#6b635d; font-size:14px; min-height:48px }
.topics { display:grid; grid-template-columns:repeat(3,1fr); margin:21px 26px; border-top:1px solid var(--line); border-bottom:1px solid var(--line) }
.topics span { padding:12px 5px; text-align:center; font-size:12px }
.topics span+span { border-left:1px solid var(--line) }
.module-footer { margin-top:auto; background:#faf8f5; padding:17px 26px; display:flex; align-items:center; justify-content:space-between; gap:16px; border-top:1px solid var(--line) }
.module-status { font-size:11px; color:var(--muted); line-height:1.9 }
.module-status strong { color:#635d57; display:block; font-weight:500 }
.primary { background:var(--red); color:#fff; border:1px solid var(--red); padding:11px 21px; border-radius:0; font-weight:600; font-size:13px; white-space:nowrap }
.primary:hover { background:var(--deep); border-color:var(--deep) }
.primary .arrow { margin-left:20px; font-size:19px; line-height:0 }
.secondary { background:#fff; border:1px solid var(--ink); padding:10px 18px; font-size:13px; white-space:nowrap }
.secondary:hover { background:var(--paper) }
.footnote { display:flex; gap:30px; align-items:center; justify-content:space-between; margin:28px 0; padding:20px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line) }
.footnote strong { font-size:14px; letter-spacing:2px; font-weight:600 }
.footnote p { color:var(--muted); font-size:12px; margin-top:5px }
.footnote-symbol { font:normal 44px/1 Georgia,serif; color:var(--gold); align-self:flex-start }
.footnote-copy { flex:1 }
.page-footer { display:flex; justify-content:space-between; align-items:center; gap:20px; font-size:10px; color:var(--muted); padding:0 0 24px; letter-spacing:1px; flex-wrap:wrap }
.page-footer b { font-weight:500; color:var(--red) }
.red-edge { margin:0 -42px; height:9px; background:var(--red) }
.empty-state { text-align:center; border:1px solid var(--line); padding:50px 20px }
.empty-state strong { display:block; font-size:23px; margin-bottom:10px }
.empty-state p { color:var(--muted); font-size:14px }
.login-layout { display:grid; grid-template-columns:1.05fr 1fr; min-height:620px; margin:0 -42px }
.login-brand { color:#fff; background:var(--red); padding:62px 50px 38px; position:relative; overflow:hidden; display:flex; flex-direction:column; isolation:isolate }
.login-brand:after { content:""; width:630px; height:630px; border:1px solid #e1b87660; border-radius:50%; position:absolute; left:-220px; bottom:-480px; box-shadow:0 0 0 25px #e1b8760b,0 0 0 65px #e1b8760b,0 0 0 105px #e1b87608; z-index:-1 }
.login-brand .eyebrow { color:#e9bcbc }
.login-brand h2 { font-size:49px; line-height:1.45; letter-spacing:6px; margin:32px 0 26px; font-weight:750 }
.login-brand h2 span { color:#f0d19a }
.login-brand p { font-size:14px; color:#f0cfd0; line-height:2; letter-spacing:2px }
.brand-bottom { margin-top:auto; padding-top:70px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid #ffffff50; padding-bottom:18px; font-size:12px; letter-spacing:2px }
.brand-bottom b { font:normal 26px Georgia,serif; color:#eed5ad }
.login-form-wrap { padding:60px 58px 38px; display:flex; flex-direction:column; justify-content:center }
.login-form-wrap h2 { font-size:30px; letter-spacing:3px; margin-bottom:6px }
.login-intro { color:var(--muted); font-size:13px; margin-bottom:28px }
.login-form-wrap label { display:block; font-size:13px; font-weight:600; margin-bottom:8px; letter-spacing:1px }
.login-form-wrap input { width:100%; border:1px solid #d8d2c9; background:#fcfbf8; padding:13px 15px; margin-bottom:21px; border-radius:0; font-size:14px; color:var(--muted); opacity:1 }
.login-form-wrap input::placeholder { color:#9a9189 }
.login-form-wrap .primary { width:100%; padding:14px 20px; margin-top:3px }
.login-hint { margin-top:16px; color:var(--muted); font-size:12px; line-height:1.9 }
.preview-inline { border-left:2px solid var(--gold); padding:10px 14px; background:#f7f3ec; font-size:12px; line-height:1.8; color:#776349; margin-top:28px }
.login-footer { border-top:1px solid var(--line); padding-top:22px; margin-top:0 }
dialog { padding:0; border:1px solid var(--line); max-width:min(590px,calc(100% - 32px)); width:590px; max-height:88vh; color:var(--ink); box-shadow:0 20px 90px #21151135 }
dialog::backdrop { background:#211a1866; backdrop-filter:blur(3px) }
.dialog-top { padding:24px 28px 18px; border-top:5px solid var(--red); display:flex; gap:18px; justify-content:space-between; align-items:flex-start }
.dialog-top h2 { font-size:23px; letter-spacing:2px; margin-top:4px }
.close { font-size:24px; border:0; background:var(--paper); line-height:1; padding:7px 10px }
.dialog-body { padding:0 28px 28px; color:#655e58; font-size:14px }
.dialog-body p+p { margin-top:15px }
.dialog-body ul { padding-left:20px }
.dialog-body li { padding:4px 0 }
.dialog-note { padding:13px 15px; background:var(--paper); border-left:2px solid var(--gold); margin:20px 0; font-size:12px }
.permission-choice { display:flex; align-items:center; gap:12px; padding:16px; border:1px solid var(--line); margin-top:12px; color:var(--ink) }
.permission-choice input { accent-color:var(--red); width:18px; height:18px }
.permission-choice small { color:var(--muted); display:block; font-size:12px }
.roster { width:100%; border-collapse:collapse; margin-top:20px; font-size:13px; color:var(--ink) }
.roster th,.roster td { text-align:left; padding:11px 8px; border-bottom:1px solid var(--line) }
.roster th { color:var(--muted); font-size:11px; font-weight:500; background:var(--paper) }
.roster input { width:18px; height:18px; accent-color:var(--red); vertical-align:middle }
.roster button { border:0; background:none; padding:5px 0; font-size:12px; color:var(--red) }
.roster-footer { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-top:20px; font-size:12px }
.swatches { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin:20px 0 }
.swatch { text-align:center; font-size:10px; letter-spacing:.5px; color:var(--muted) }
.swatch i { height:36px; display:block; margin-bottom:6px; border:1px solid #00000012 }
.dependency-list { margin-top:20px; border-top:1px solid var(--line) }
.dependency { padding:12px 0; border-bottom:1px solid var(--line); display:grid; grid-template-columns:80px 1fr; gap:15px; font-size:12px }
.dependency b { color:var(--ink) }
@media(min-width:1500px) { .shell { margin-top:36px } }
@media(max-width:1100px) {
  .shell { margin:20px; padding:0 30px }
  .red-edge,.login-layout { margin-left:-30px; margin-right:-30px }
  .brand-slogan { display:none }
  h1 { font-size:53px }
  .login-brand { padding:46px 32px 32px }
  .login-brand h2 { font-size:40px }
  .login-form-wrap { padding:42px 34px }
  .preview-controls { gap:6px }
}
@media(max-width:760px) {
  .preview-bar { padding:12px 16px; gap:10px }
  .preview-mark { width:100%; font-size:11px }
  .preview-controls { margin-left:0; width:100%; gap:6px }
  .preview-controls button { font-size:11px; padding:5px 9px }
  .preview-controls label { display:none }
  .preview-controls select { margin-left:auto; max-width:120px; font-size:11px }
  .shell { margin:14px; padding:0 21px }
  .brand-row { min-height:77px; gap:10px }
  .logo { width:145px }
  .utility { gap:10px; font-size:10px }
  .utility>span { display:none }
  .masthead { padding:27px 0 22px; gap:12px }
  .eyebrow { font-size:9px; letter-spacing:1.7px }
  h1 { font-size:38px; letter-spacing:2px; margin-top:10px; margin-bottom:12px }
  .masthead-sub { font-size:12px; letter-spacing:2px }
  .edition { display:none }
  .navbar { gap:20px }
  .nav-tab { font-size:12px; letter-spacing:1px }
  .nav-aside { font-size:10px }
  .welcome-strip { padding:23px 20px; margin:23px 0 28px }
  .welcome-copy h2 { font-size:21px; letter-spacing:1px }
  .welcome-copy p { font-size:11px; letter-spacing:0; max-width:240px }
  .welcome-seal { display:none }
  .section-heading { align-items:flex-end; margin-bottom:15px }
  .section-heading h2 { font-size:19px }
  .section-heading p { font-size:10px; text-align:right; max-width:100px }
  .section-heading h2 em { margin-left:5px; font-size:14px }
  .module-grid { grid-template-columns:1fr; gap:20px }
  .module-head { padding:20px 20px 12px }
  .module-head h3 { font-size:27px }
  .module-number { font-size:43px }
  .module-description { padding:0 20px; font-size:13px; min-height:0 }
  .topics { margin:19px 20px }
  .topics span { font-size:11px; padding:11px 2px }
  .module-footer { padding:15px 20px; gap:9px }
  .module-status { font-size:10px }
  .primary { padding:10px 13px; font-size:12px }
  .primary .arrow { margin-left:10px }
  .footnote { gap:16px; margin:24px 0; padding:18px 0 }
  .footnote-symbol { font-size:34px }
  .footnote strong { font-size:12px; letter-spacing:1px }
  .footnote p { font-size:11px }
  .page-footer { gap:5px; font-size:9px; letter-spacing:.3px; padding-bottom:20px }
  .red-edge,.login-layout { margin-left:-21px; margin-right:-21px }
  .login-layout { grid-template-columns:1fr; min-height:auto }
  .login-brand { padding:30px 26px }
  .login-brand h2 { font-size:34px; letter-spacing:4px; margin:16px 0 12px; line-height:1.5 }
  .login-brand p { font-size:11px; letter-spacing:1px }
  .brand-bottom { display:none }
  .login-form-wrap { padding:30px 26px }
  .login-form-wrap h2 { font-size:25px }
  .login-intro { font-size:12px }
  .login-footer { margin-top:0; padding-top:20px }
  .dialog-top { padding:20px 22px 16px }
  .dialog-body { padding:0 22px 23px }
  .dialog-top h2 { font-size:21px }
}
@media(prefers-reduced-motion:reduce) { * { transition:none!important } }

.stage-bar {background:#252322;color:#eee9e2;padding:11px 24px;display:flex;justify-content:center;gap:22px;font-size:12px}
.stage-bar b{color:#e8bb83;letter-spacing:2px}
.app-footer{border-top:1px solid var(--line);margin-top:28px;padding-top:22px}
.button-link{display:inline-block;text-decoration:none}
.navbar a{text-decoration:none;display:flex;align-items:center}
button:disabled{opacity:.5;cursor:wait}
input:disabled{cursor:not-allowed}
.error{color:#b71924;margin-top:14px;font-size:13px;line-height:1.8}
.message{padding:16px;border-left:3px solid var(--red);background:var(--paper);margin:24px 0}
.network-panel{padding:28px 0 12px;display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center}
.network-panel h2{font-size:23px;letter-spacing:1px;margin:7px 0}
.network-panel p{font-size:13px;color:var(--muted)}
.network-results{grid-column:1/-1;line-height:2}
.network-results strong{color:#256047;border:1px solid #bed0c5;background:#eef5f0;padding:8px 15px;display:inline-block;margin-top:9px;font-size:14px}
.network-results .error{color:var(--red)}
.owner-entry{text-align:right;font-size:11px;margin:12px 0 20px}
.owner-entry a{color:var(--muted)}
.setup-panel{max-width:620px;padding:35px 0 45px}
.setup-panel h2{font-size:25px;margin-bottom:10px}
.setup-panel>p{color:var(--muted);font-size:14px;margin-bottom:24px}
.standard-form{margin-top:25px;display:grid;gap:18px;max-width:520px}
.standard-form>label{display:grid;gap:7px;font-size:13px;font-weight:600}
.standard-form input:not([type=checkbox]){border:1px solid #d8d2c9;background:#fcfbf8;padding:12px 13px;min-width:0;width:100%;border-radius:0;font-size:14px;font-weight:400}
.form-hint{font-size:12px;line-height:1.8;color:var(--muted)}
.app-notice{margin:25px 0;font-size:12px;color:var(--muted)}
.module-placeholder{margin:30px 0;padding:65px 20px;border:none}
.module-placeholder p{margin-top:10px}
.module-placeholder a{margin-top:24px}
.admin-content{padding-top:28px}
.planned-roster{background:var(--paper);padding:23px}
.planned-roster h2,.admin-columns h2,.reset-panel h2{font-size:21px}
.planned-roster p{font-size:13px;color:var(--muted);margin:8px 0 16px}
.roster-actions{display:flex;flex-wrap:wrap;gap:12px}
.admin-columns{display:grid;grid-template-columns:1fr 1.15fr;gap:50px;margin:32px 0}
.admin-columns>div{min-width:0}
.grant-options{display:flex;gap:20px;flex-wrap:wrap}
.grant-options label{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:400}
.grant-options input{accent-color:var(--red);width:17px;height:17px}
.account-row{border-bottom:1px solid var(--line);padding:22px 0}
.account-title{display:flex;justify-content:space-between;gap:15px;margin-bottom:12px;flex-wrap:wrap}
.account-title span{color:var(--muted);font-size:12px}
.row-actions{display:flex;gap:18px;margin-top:17px}
.reset-panel{border:1px solid var(--line);padding:25px;margin:25px 0}
@media(max-width:760px){.stage-bar{font-size:10px;padding:12px 14px;gap:8px;flex-wrap:wrap}.network-panel{grid-template-columns:1fr;padding-top:24px;gap:16px}.network-panel h2{font-size:19px}.network-panel .primary{justify-self:start}.network-results{grid-column:auto}.admin-columns{grid-template-columns:1fr;gap:32px}.utility>span{display:inline}.utility{flex-wrap:wrap;justify-content:flex-end}.app-footer{margin-top:24px}.masthead h1{font-size:34px}.row-actions{flex-wrap:wrap}.planned-roster{padding:18px}.standard-form{max-width:100%}.reset-panel{padding:18px}}
