/* OpenNexus 门户明亮主题 · 本体 / 安全 / 交付等子页共用 */
:root {
  --bg:#f4f7fb; --white:#fff; --primary:#1e3a5f; --accent:#2563eb;
  --accent-light:#dbeafe; --accent-dark:#1d4ed8; --tech:#0f766e; --tech-bg:#f0fdfa;
  --warn:#b45309; --warn-bg:#fffbeb; --secure:#7c3aed; --secure-bg:#f5f3ff;
  --text:#1f2937; --text-2:#4b5563; --muted:#6b7280; --border:#d1d5db;
  --mono:'JetBrains Mono',Consolas,monospace;
  --shadow:0 2px 16px rgba(30,58,95,.08); --radius:10px;
  --sidebar-w:248px; --topbar-h:48px;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Noto Sans SC',sans-serif;background:var(--bg);color:var(--text);line-height:1.7;font-size:16px}
abbr.term{text-decoration:none;border-bottom:1px dashed var(--accent);cursor:help;color:var(--accent-dark);font-weight:600}
a{color:var(--accent-dark)}

.portal-topbar{position:fixed;top:0;left:0;right:0;z-index:300;height:var(--topbar-h);background:linear-gradient(90deg,#0f172a,#1e3a5f);border-bottom:1px solid rgba(255,255,255,.08);box-shadow:0 2px 12px rgba(0,0,0,.15)}
.portal-topbar-inner{max-width:1400px;margin:0 auto;padding:10px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.portal-brand{display:flex;align-items:baseline;gap:10px;text-decoration:none;color:#fff}
.portal-brand .on{font-family:var(--mono);font-weight:700;letter-spacing:2px;color:#60a5fa;font-size:.85rem}
.portal-brand .sub{font-size:.78rem;color:#94a3b8}
.portal-nav{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.portal-nav a{font-size:.76rem;padding:6px 11px;border-radius:4px;text-decoration:none;color:#cbd5e1;border:1px solid rgba(255,255,255,.12)}
.portal-nav a:hover{background:rgba(255,255,255,.1);color:#fff}
.portal-nav a.active{background:#2563eb;border-color:#2563eb;color:#fff;font-weight:600}

.sidebar{position:fixed;left:0;top:var(--topbar-h);bottom:0;width:var(--sidebar-w);background:var(--white);border-right:1px solid var(--border);overflow-y:auto;z-index:100;padding:14px 0}
.sidebar .brand{padding:0 16px 14px;border-bottom:1px solid var(--border);margin-bottom:6px}
.sidebar .brand .title{font-size:1.02rem;font-weight:700;color:var(--primary)}
.sidebar .brand .sub{font-size:.8rem;color:var(--accent);font-weight:600;margin-top:2px}
.sidebar .brand .ver{font-size:.7rem;color:var(--muted)}
.nav-g{padding:4px 8px}
.nav-g-t{font-size:.66rem;color:var(--muted);font-weight:600;letter-spacing:1px;padding:8px 10px 4px;text-transform:uppercase}
.nav-g-t.accent{color:var(--accent)}
.nav-g-t.tech{color:var(--tech)}
.nav-g-t.secure{color:var(--secure)}
.nav-g-t.delivery{color:var(--tech)}
.nav-a{display:block;padding:7px 12px;margin:1px 0;font-size:.82rem;color:var(--text-2);text-decoration:none;border-radius:6px;border-left:3px solid transparent}
.nav-a:hover{background:var(--accent-light);color:var(--accent-dark)}
.nav-a.on{background:var(--accent-light);color:var(--accent-dark);font-weight:600;border-left-color:var(--accent)}

.layout-main{margin-left:var(--sidebar-w)}
.topbar-mobile{display:none;position:fixed;top:var(--topbar-h);left:0;right:0;z-index:200;background:var(--white);border-bottom:1px solid var(--border);padding:10px 16px;justify-content:space-between;align-items:center}
.menu-btn{background:var(--accent);color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer;font-size:.82rem}

.page-hero{margin-left:var(--sidebar-w);margin-top:var(--topbar-h);padding:56px 40px 48px;color:#fff;text-align:center}
.page-hero.ontology{background:linear-gradient(135deg,#1e3a5f 0%,#1d4ed8 55%,#3b82f6 100%)}
.page-hero.security{background:linear-gradient(135deg,#4c1d95 0%,#6d28d9 45%,#7c3aed 100%)}
.page-hero.delivery{background:linear-gradient(135deg,#064e3b 0%,#0f766e 45%,#14b8a6 100%)}
.page-hero .eyebrow{font-size:.78rem;letter-spacing:3px;opacity:.8;margin-bottom:14px}
.page-hero h1{font-size:2.2rem;font-weight:700;margin-bottom:12px;max-width:800px;margin-left:auto;margin-right:auto}
.page-hero .tagline{font-size:1.05rem;opacity:.92;max-width:720px;margin:0 auto 20px}
.page-hero-pills{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:800px;margin:0 auto}
.page-hero-pills span{font-size:.8rem;padding:6px 14px;border-radius:20px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25)}

.sec{max-width:1060px;margin:0 auto;padding:48px 32px}
.sec.alt{background:var(--white)}
.sec + .sec{border-top:1px solid var(--border)}
.lbl{display:inline-block;font-size:.72rem;font-weight:600;color:var(--accent);background:var(--accent-light);padding:3px 12px;border-radius:12px;margin-bottom:12px;letter-spacing:.5px}
.lbl.tech{color:var(--tech);background:var(--tech-bg)}
.lbl.secure{color:var(--secure);background:var(--secure-bg)}
.lbl.delivery{color:var(--tech);background:var(--tech-bg)}
.sec h2{font-size:1.75rem;color:var(--primary);font-weight:700;margin-bottom:12px}
.lead{font-size:1.02rem;color:var(--text-2);margin-bottom:24px;max-width:820px}

.pillar-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin:24px 0}
.pillar-card{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:24px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.pillar-card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px}
.pillar-card.c-data::before{background:#2563eb}
.pillar-card.c-logic::before{background:#f59e0b}
.pillar-card.c-action::before{background:#10b981}
.pillar-card.c-security::before{background:#7c3aed}
.pillar-card .k{font-family:var(--mono);font-size:.7rem;color:var(--muted);letter-spacing:1px;margin-bottom:6px}
.pillar-card h3{font-size:1.1rem;color:var(--primary);margin-bottom:8px}
.pillar-card p{font-size:.9rem;color:var(--text-2);margin-bottom:12px}
.pillar-card ul{margin:0 0 0 18px;font-size:.88rem;color:var(--text-2)}
.pillar-card .ex{margin-top:12px;padding:10px 12px;background:var(--bg);border-radius:8px;font-size:.82rem;color:var(--text-2);border-left:3px solid var(--accent)}

.flow-strip{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;margin:24px 0;padding:20px;background:linear-gradient(135deg,#eff6ff,#f0fdfa);border-radius:12px;border:1px solid var(--border)}
.flow-node{background:var(--white);border:1px solid var(--border);border-radius:8px;padding:12px 16px;text-align:center;min-width:90px}
.flow-node .en{font-family:var(--mono);font-size:.68rem;color:var(--accent);font-weight:600}
.flow-node .cn{font-size:.85rem;font-weight:600;color:var(--primary);margin-top:4px}
.flow-arrow{color:var(--muted)}

.tw{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);margin:16px 0}
table{width:100%;border-collapse:collapse;font-size:.88rem;background:var(--white)}
th{background:var(--primary);color:#fff;padding:11px 14px;text-align:left;font-weight:600}
td{padding:10px 14px;border-bottom:1px solid #e5e7eb;color:var(--text-2);vertical-align:top}
td:first-child{color:var(--text);font-weight:500}
td code{font-family:var(--mono);font-size:.8rem;background:#f3f4f6;padding:1px 5px;border-radius:3px}
tr:hover td{background:#f9fafb}

.cg{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:20px 0}
.card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}
.card h3{font-size:1rem;color:var(--primary);margin-bottom:8px}
.card p{font-size:.88rem;color:var(--text-2)}

.tech-box{background:var(--tech-bg);border:1px solid #99f6e4;border-left:4px solid var(--tech);border-radius:var(--radius);padding:16px 20px;margin:16px 0;font-size:.92rem}
.tech-box strong{color:var(--tech)}
.secure-box{background:var(--secure-bg);border:1px solid #ddd6fe;border-left:4px solid var(--secure);border-radius:var(--radius);padding:16px 20px;margin:16px 0;font-size:.92rem}
.secure-box strong{color:var(--secure)}
.warn-box{background:var(--warn-bg);border:1px solid #fcd34d;border-left:4px solid var(--warn);border-radius:var(--radius);padding:16px 20px;margin:16px 0;font-size:.92rem}

.code-block{background:#1e293b;color:#e2e8f0;font-family:var(--mono);font-size:.76rem;padding:16px 20px;border-radius:var(--radius);overflow-x:auto;margin:16px 0;line-height:1.65;white-space:pre}
.pre{font-family:var(--mono);font-size:.76rem;background:#1e293b;color:#e2e8f0;padding:14px 16px;border-radius:8px;overflow-x:auto;line-height:1.65;margin:12px 0;white-space:pre}

.check-list{display:flex;flex-direction:column;gap:10px;margin:16px 0}
.check-item{display:flex;gap:12px;align-items:flex-start;background:var(--white);border:1px solid var(--border);border-radius:10px;padding:14px 16px;font-size:.9rem;color:var(--text-2)}
.check-item .id{font-family:var(--mono);font-size:.72rem;background:var(--accent-light);color:var(--accent-dark);padding:4px 8px;border-radius:6px;white-space:nowrap;font-weight:600}
.check-item.secure .id{background:var(--secure-bg);color:var(--secure)}

.layer-stack{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}
.layer-card{background:var(--white);border:1px solid var(--border);border-radius:10px;padding:16px;text-align:center;box-shadow:var(--shadow)}
.layer-card .num{font-family:var(--mono);font-size:.7rem;color:var(--accent);font-weight:700}
.layer-card h4{font-size:.92rem;color:var(--primary);margin:6px 0}
.layer-card p{font-size:.78rem;color:var(--muted)}

.cta{background:var(--primary);color:#fff;text-align:center;padding:48px 32px;margin-left:var(--sidebar-w)}
.cta h2{color:#fff;margin-bottom:10px;font-size:1.6rem}
.cta p{opacity:.9;max-width:560px;margin:0 auto;font-size:.95rem}
.cta-links{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:20px}
.cta-links a{display:inline-block;background:#fff;color:var(--primary);padding:12px 24px;border-radius:8px;font-weight:600;text-decoration:none;font-size:.9rem}
.cta-links a.ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4)}

.phase-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin:20px 0}
.phase-card{background:var(--white);border:1px solid var(--border);border-radius:12px;padding:20px;box-shadow:var(--shadow);position:relative}
.phase-card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:var(--tech)}
.phase-card .ph{font-family:var(--mono);font-size:.72rem;color:var(--tech);font-weight:700;margin-bottom:6px}
.phase-card h3{font-size:1.05rem;color:var(--primary);margin-bottom:8px}
.phase-card p,.phase-card li{font-size:.88rem;color:var(--text-2)}
.phase-card ul{margin:8px 0 0 18px}
.phase-card .status{display:inline-block;font-size:.72rem;padding:3px 10px;border-radius:12px;margin-top:10px}
.phase-card .status.done{background:#d1fae5;color:#065f46}
.phase-card .status.wip{background:#fef3c7;color:#92400e}
.phase-card .status.todo{background:#f3f4f6;color:#6b7280}

@media(max-width:900px){
  .sidebar{transform:translateX(-100%);transition:transform .3s}
  .sidebar.open{transform:translateX(0)}
  .layout-main,.page-hero,.cta{margin-left:0}
  .topbar-mobile{display:flex}
  .pillar-grid,.layer-stack,.phase-grid{grid-template-columns:1fr}
  .page-hero h1{font-size:1.75rem}
  .portal-nav{width:100%;overflow-x:auto;flex-wrap:nowrap}
}
@media print{.sidebar,.topbar-mobile,.portal-topbar{display:none}.layout-main,.page-hero,.cta{margin-left:0}}
