  :root{
    --paper:#ffffff;
    --wash:#f6f8f9;
    --ink:#172b3a;
    --ink-2:#2f4655;
    --muted:#5f7280;
    --faint:#8496a2;
    --rule:#d8e0e5;
    --rule-dark:#b9c6cd;
    --teal:#0b5f73;
    --teal-soft:#eaf3f5;
    --blue:#1f4e79;
    --blue-soft:#edf3f8;
    --green:#2f6b4f;
    --green-soft:#eef6f1;
    --amber:#8a5b12;
    --amber-soft:#fbf4e6;
    --red:#9b3434;
    --red-soft:#faf0f0;
    --serif:"Noto Serif SC","Songti SC","SimSun",serif;
    --sans:"Microsoft YaHei","Noto Sans SC","PingFang SC",sans-serif;
    --mono:"Consolas","SFMono-Regular","Cascadia Code",monospace;
    --max:1480px;
  }
  *{box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{
    margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);
    font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased;
  }
  a{color:var(--teal);text-underline-offset:3px}
  button{font-family:inherit}
  ::selection{background:#dcecef}
  .topbar{
    position:sticky;top:0;z-index:30;background:rgba(255,255,255,.96);
    border-bottom:1px solid var(--rule);backdrop-filter:blur(10px);
  }
  .topbar-inner{
    max-width:var(--max);margin:0 auto;padding:0 28px;height:64px;
    display:flex;align-items:center;gap:28px;
  }
  .brand{display:flex;align-items:center;gap:12px;min-width:250px}
  .brand-mark{
    width:30px;height:30px;border:1.5px solid var(--teal);border-radius:50%;
    position:relative;display:grid;place-items:center;
  }
  .brand-mark::before{content:"";width:12px;height:12px;border:1px solid var(--teal);border-radius:50%}
  .brand-mark::after{content:"";position:absolute;width:4px;height:4px;border-radius:50%;background:var(--teal)}
  .brand b{display:block;font:700 11px/1.1 var(--mono);letter-spacing:.12em;color:var(--teal)}
  .brand span{display:block;font-size:12px;color:var(--muted);margin-top:2px}
  .nav{display:flex;gap:4px;margin-left:auto}
  .nav a{
    text-decoration:none;color:var(--muted);font-size:12px;padding:7px 10px;border-radius:3px;
  }
  .nav a:hover{color:var(--ink);background:var(--wash)}
  .top-meta{font:10px var(--mono);color:var(--faint);border-left:1px solid var(--rule);padding-left:18px;white-space:nowrap}
  main{max-width:var(--max);margin:0 auto;padding:0 28px 54px}
  .hero{padding:38px 0 30px;border-bottom:1px solid var(--rule)}
  .eyebrow{font:700 10px var(--mono);letter-spacing:.15em;color:var(--teal);margin:0 0 10px}
  .hero h1{font-family:var(--serif);font-size:clamp(30px,3.2vw,46px);line-height:1.18;letter-spacing:-.015em;margin:0;font-weight:700}
  .subtitle{font-family:var(--serif);font-size:18px;color:var(--ink-2);margin:10px 0 0}
  .hero-grid{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:38px;margin-top:24px;align-items:start}
  .abstract{max-width:780px;margin:0;color:var(--muted);font-size:13.5px;line-height:1.9}
  .hero-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
  .hero-meta span{border:1px solid var(--rule);padding:4px 9px;font-size:10.5px;color:var(--muted);background:var(--wash)}
  .thesis{border:1px solid var(--rule-dark);background:var(--wash);padding:18px 20px}
  .thesis .label{font:700 9px var(--mono);letter-spacing:.12em;color:var(--teal);display:block;margin-bottom:7px}
  .thesis p{margin:0;font-size:12px;color:var(--ink-2)}
  .thesis ol{margin:8px 0 12px;padding-left:18px;color:var(--muted);font-size:11.5px;line-height:1.65}
  .thesis li{margin:3px 0}
  .thesis li::marker{color:var(--teal);font-family:var(--mono);font-size:10px}
  .formula{
    border-top:1px solid var(--rule-dark);padding-top:9px;font:10px/1.7 var(--mono);
    color:var(--teal);letter-spacing:.01em;
  }
  .section{padding-top:44px}
  section[id]{scroll-margin-top:80px}
  .diagram-mobile-hint{display:none}
  .section-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:18px}
  .section-no{font:700 10px var(--mono);color:var(--teal);letter-spacing:.1em;padding-top:5px;min-width:34px}
  .section-head h2{font-family:var(--serif);font-size:25px;line-height:1.35;margin:0;font-weight:700}
  .section-head p{margin:5px 0 0;color:var(--muted);font-size:12.5px;max-width:900px}
  .rule{height:1px;background:var(--rule);margin:0 0 22px}
  .definition{
    border-left:3px solid var(--teal);background:var(--teal-soft);padding:16px 20px;margin-bottom:18px;
    display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:28px;
  }
  .definition p{margin:0;font-family:var(--serif);font-size:17px;line-height:1.75;color:var(--ink)}
  .definition .aside{font-size:11px;color:var(--muted);border-left:1px solid #c9dde1;padding-left:18px}
  .definition .aside b{display:block;color:var(--ink-2);font-size:10px;font-family:var(--mono);letter-spacing:.08em;margin-bottom:5px}
  .card-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
  .card{border:1px solid var(--rule);padding:15px 16px;background:#fff}
  .card .k{font:700 9px var(--mono);letter-spacing:.08em;color:var(--teal);display:block;margin-bottom:6px}
  .card h3{font-size:13px;line-height:1.5;margin:0 0 6px;font-weight:700}
  .card p{margin:0;color:var(--muted);font-size:11.5px;line-height:1.7}
  .note{margin:14px 0 0;color:var(--faint);font-size:10.5px;line-height:1.7}
  .principles{display:grid;grid-template-columns:1fr 1fr;gap:0 30px;border-top:1px solid var(--rule)}
  .principle{display:grid;grid-template-columns:34px 1fr;gap:12px;padding:16px 0;border-bottom:1px solid var(--rule)}
  .principle .pno{font:700 11px var(--mono);color:var(--teal);padding-top:2px}
  .principle h3{font-size:13px;margin:0 0 4px;font-weight:700}
  .principle p{margin:0;color:var(--muted);font-size:11.5px;line-height:1.7}
  .principle .ref{display:inline-block;font:9px var(--mono);color:var(--faint);margin-top:4px}
  .diagram-section{margin-top:18px}
  .figure{border:1px solid var(--rule);background:#fff;min-width:0}
  .figure-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border-bottom:1px solid var(--rule);background:var(--wash)}
  .figure-head b{font-size:12px}
  .figure-head .fig-no{font:700 9px var(--mono);color:var(--teal);letter-spacing:.1em;margin-right:8px}
  .fig-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .fig-controls button{
    appearance:none;border:1px solid var(--rule-dark);background:#fff;color:var(--ink-2);
    padding:5px 9px;font-size:10.5px;cursor:pointer;
  }
  .fig-controls button:hover{background:var(--teal-soft);border-color:var(--teal);color:var(--teal)}
  .fig-controls button.active{background:var(--teal);border-color:var(--teal);color:#fff}
  .diagram-wrap{padding:10px 12px 4px;overflow-x:auto;background:#fff}
  #singleLine{display:block;width:100%;min-width:820px;height:auto}
  .fig-caption{padding:9px 16px 13px;border-top:1px solid var(--rule);font-size:10.5px;color:var(--faint);line-height:1.6}
  .fig-caption b{color:var(--ink-2);font-weight:600}
  .interactive-grid{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:18px;align-items:start}
  .left-column{min-width:0}
  .candidate-panel{border:1px solid var(--rule);background:#fff;margin-top:14px}
  .candidate-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--rule);background:var(--wash)}
  .candidate-head b{font-size:11px}
  .candidate-head span{font:9px var(--mono);color:var(--faint)}
  .candidate-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--rule)}
  .cand-chip{
    appearance:none;border:0;background:#fff;text-align:left;padding:8px 9px;cursor:pointer;
    display:grid;grid-template-columns:22px 1fr;gap:7px;align-items:start;min-height:50px;
    color:var(--ink);transition:background .15s;
  }
  .cand-chip:hover{background:var(--teal-soft)}
  .cand-chip .n{font:700 9px var(--mono);color:var(--teal);padding-top:2px}
  .cand-chip b{display:block;font:700 10.5px/1.35 var(--mono);letter-spacing:.01em}
  .cand-chip small{display:block;font-size:9px;line-height:1.4;color:var(--muted);margin-top:2px}
  .cand-chip.selected{background:var(--blue-soft);box-shadow:inset 3px 0 0 var(--blue)}
  .cand-chip[data-status="valid"]{background:var(--green-soft)}
  .cand-chip[data-status="conditional"]{background:var(--amber-soft)}
  .cand-chip[data-status="invalid"]{background:var(--red-soft)}
  .cand-chip.selected[data-status="valid"]{box-shadow:inset 3px 0 0 var(--green)}
  .cand-chip.selected[data-status="conditional"]{box-shadow:inset 3px 0 0 var(--amber)}
  .cand-chip.selected[data-status="invalid"]{box-shadow:inset 3px 0 0 var(--red)}
  .analysis{border:1px solid var(--rule-dark);background:#fff;position:sticky;top:82px;min-width:0;scroll-margin-top:82px}
  .analysis-head{padding:16px 17px 13px;border-bottom:1px solid var(--rule)}
  .analysis-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
  .analysis .sel-label{font:700 9px var(--mono);color:var(--teal);letter-spacing:.1em;margin-bottom:4px}
  .analysis h2{font-family:var(--serif);font-size:19px;line-height:1.4;margin:0;font-weight:700}
  .analysis .meta{font-size:10px;color:var(--muted);margin:5px 0 0;line-height:1.6}
  .verdict{
    flex:0 0 auto;border:1px solid var(--rule-dark);padding:5px 8px;font-size:10px;
    font-weight:700;white-space:nowrap;margin-top:3px;
  }
  .verdict.valid{border-color:#9bc4ad;color:var(--green);background:var(--green-soft)}
  .verdict.conditional{border-color:#d8bd86;color:var(--amber);background:var(--amber-soft)}
  .verdict.invalid{border-color:#d2a3a3;color:var(--red);background:var(--red-soft)}
  .verdict small{display:block;font-size:8.5px;font-weight:400;margin-top:2px;color:inherit}
  .sides{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);border-bottom:1px solid var(--rule)}
  .side{background:#fff;padding:10px 14px}
  .side span{display:block;font:8.5px var(--mono);letter-spacing:.06em;color:var(--faint);margin-bottom:3px}
  .side b{display:block;font-size:11px;line-height:1.5;color:var(--ink-2);font-weight:600}
  .checklist{padding:13px 17px;border-bottom:1px solid var(--rule)}
  .checklist h3,.reason h3,.principle h3{font:700 9px var(--mono);letter-spacing:.1em;color:var(--faint);margin:0 0 8px;text-transform:uppercase}
  .check-row{display:grid;grid-template-columns:20px 94px 1fr;gap:7px;align-items:start;padding:5px 0;border-bottom:1px dotted #e3e9ed}
  .check-row:last-child{border-bottom:0}
  .check-ico{width:16px;height:16px;border-radius:50%;display:grid;place-items:center;font-size:10px;font-weight:700;margin-top:1px}
  .check-ico.yes{background:var(--green-soft);color:var(--green);border:1px solid #b8d6c4}
  .check-ico.no{background:var(--red-soft);color:var(--red);border:1px solid #dfbcbc}
  .check-ico.cond{background:var(--amber-soft);color:var(--amber);border:1px solid #e0ca9c}
  .check-row .ck{font-size:10.5px;color:var(--ink-2);font-weight:600}
  .check-row .cv{font-size:10.5px;color:var(--muted);line-height:1.5}
  .reason{padding:13px 17px;border-bottom:1px solid var(--rule)}
  .reason p{margin:0;font-size:11px;line-height:1.75;color:var(--ink-2)}
  .principle{padding:12px 17px 14px;background:var(--wash)}
  .principle p{margin:0;font-size:10px;line-height:1.65;color:var(--muted)}
  .principle b{color:var(--teal);font-weight:600}
  .condition{margin:10px 17px 14px;border-left:2px solid var(--amber);background:var(--amber-soft);padding:8px 10px;font-size:10px;color:var(--amber);line-height:1.6}
  .table-wrap{overflow-x:auto;border:1px solid var(--rule);background:#fff}
  table{width:100%;border-collapse:collapse;min-width:900px}
  th{
    text-align:left;background:var(--wash);border-bottom:1px solid var(--rule-dark);
    padding:9px 10px;font:700 9px var(--mono);letter-spacing:.06em;color:var(--muted);white-space:nowrap;
  }
  td{border-bottom:1px solid var(--rule);padding:9px 10px;font-size:10.5px;color:var(--ink-2);vertical-align:top;line-height:1.55}
  tbody tr:last-child td{border-bottom:0}
  tbody tr{cursor:pointer}
  tbody tr:hover{background:var(--wash)}
  tbody tr.selected{background:var(--teal-soft);box-shadow:inset 3px 0 0 var(--teal)}
  td.idx{font:700 9px var(--mono);color:var(--teal);white-space:nowrap}
  td.dev{font-weight:600;white-space:nowrap}
  .status{display:inline-block;border:1px solid var(--rule-dark);padding:2px 5px;font-size:9px;font-weight:700;white-space:nowrap}
  .status.valid{color:var(--green);border-color:#a9c9b6;background:var(--green-soft)}
  .status.conditional{color:var(--amber);border-color:#dac18f;background:var(--amber-soft)}
  .status.invalid{color:var(--red);border-color:#d6aaaa;background:var(--red-soft)}
  .table-note{margin:9px 0 0;font-size:10px;color:var(--faint)}
  .connection-table td:first-child{font-weight:600;white-space:nowrap}
  .pitfalls{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .pitfall{border:1px solid var(--rule);padding:14px 16px}
  .pitfall .tag{font:700 8.5px var(--mono);color:var(--red);letter-spacing:.08em}
  .pitfall h3{font-size:12.5px;margin:5px 0 6px}
  .pitfall p{margin:0;font-size:11px;color:var(--muted);line-height:1.7}
  .pitfall p b{color:var(--ink-2)}
  .method{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule)}
  .step{background:#fff;padding:14px}
  .step em{font:700 9px var(--mono);color:var(--teal);font-style:normal}
  .step b{display:block;margin:5px 0 5px;font-size:11.5px}
  .step p{margin:0;font-size:10px;color:var(--muted);line-height:1.65}
  .conclusion{border-top:2px solid var(--ink);border-bottom:1px solid var(--rule);padding:18px 0;margin-top:22px;display:grid;grid-template-columns:1fr 1fr;gap:30px}
  .conclusion p{margin:0;font-family:var(--serif);font-size:15px;line-height:1.8;color:var(--ink)}
  .conclusion p.small{font-family:var(--sans);font-size:11px;color:var(--muted);line-height:1.75}
  .refs{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}
  .refs li{display:grid;grid-template-columns:32px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--rule);font-size:10.5px;color:var(--muted);line-height:1.65}
  .refs li b{font:700 9px var(--mono);color:var(--teal)}
  .refs a{word-break:break-all}
  footer{border-top:1px solid var(--rule);margin-top:44px;padding:18px 0 0;display:flex;justify-content:space-between;gap:20px;font:9.5px var(--mono);color:var(--faint)}
  /* SVG diagram */
  #singleLine text{font-family:var(--sans);user-select:none}
  .wire{stroke:#3b5667;stroke-width:2;fill:none;stroke-linecap:round}
  .bus{stroke:#17384a;stroke-width:7;fill:none;stroke-linecap:round}
  .bus-cap{stroke:#17384a;stroke-width:2}
  .dev{fill:#fff;stroke:#17384a;stroke-width:1.8}
  .dev-blade{stroke:#17384a;stroke-width:1.8;fill:none;stroke-linecap:round}
  .dev-dot{fill:#17384a}
  .lbl{font:600 12px var(--mono);fill:#1d3544}
  .lbl-sm{font:10.5px var(--mono);fill:#5f7280}
  .sub{font:10px var(--sans);fill:#7a8b96}
  .bus-label{font:700 12.5px var(--sans);fill:#1d3544}
  .tv-label{font:9px var(--mono);fill:#5f7280}
  .sys-label{font:11px var(--sans);fill:#1d3544}
  .sys-sub{font:9.5px var(--sans);fill:#7a8b96}
  .load-label{font:10.5px var(--sans);fill:#5f7280}
  .cand{cursor:pointer;outline:none}
  .cand .tag{fill:#fff;stroke:#24576b;stroke-width:1.5;transition:fill .15s,stroke .15s}
  .cand .num{font:700 9px var(--mono);fill:#24576b;text-anchor:middle;pointer-events:none}
  .cand .lead{stroke:#7c929e;stroke-width:1;stroke-dasharray:2 3;fill:none}
  .cand:hover .tag,.cand:focus .tag{stroke:#0b5f73;stroke-width:2.2}
  .cand.selected .tag{fill:#0b5f73;stroke:#0b5f73}
  .cand.selected .num{fill:#fff}
  .cand.selected .lead{stroke:#0b5f73;stroke-width:1.4;stroke-dasharray:none}
  .cand.status-valid .tag{fill:var(--green);stroke:var(--green)}
  .cand.status-conditional .tag{fill:var(--amber);stroke:var(--amber)}
  .cand.status-invalid .tag{fill:var(--red);stroke:var(--red)}
  .cand.status-valid .num,.cand.status-conditional .num,.cand.status-invalid .num{fill:#fff}
  .cand.selected.status-valid .tag,.cand.selected.status-conditional .tag,.cand.selected.status-invalid .tag{stroke:#0b5f73;stroke-width:3}
  #deviceHalo{fill:none;stroke:#1f4e79;stroke-width:1.2;stroke-dasharray:4 4;opacity:0;pointer-events:none}
  .diagram-legend{display:flex;flex-wrap:wrap;gap:14px;padding:0 16px 10px;font-size:9.5px;color:var(--muted)}
  .diagram-legend span{display:inline-flex;align-items:center;gap:5px}
  .lg-symbol{width:12px;height:12px;border:1px solid var(--ink);display:inline-block}
  .lg-symbol.circle{border-radius:50%}
  .lg-line{width:18px;height:2px;background:var(--ink);display:inline-block}
  .lg-dash{width:18px;height:0;border-top:1px dashed var(--faint);display:inline-block}
  @media (max-width:1160px){
    .hero-grid,.interactive-grid{grid-template-columns:1fr}
    .analysis{position:static}
    .candidate-grid{grid-template-columns:repeat(3,1fr)}
    .card-grid{grid-template-columns:repeat(2,1fr)}
    .principles{grid-template-columns:1fr}
    .nav{display:none}
    .brand{min-width:0}
  }
  @media (max-width:760px){
    .topbar-inner,main{padding-left:14px;padding-right:14px}
    .top-meta{display:none}
    .hero{padding-top:26px}
    .hero-grid{gap:20px}
    .definition{grid-template-columns:1fr}
    .definition .aside{border-left:0;border-top:1px solid #c9dde1;padding-left:0;padding-top:10px}
    .card-grid,.pitfalls,.conclusion{grid-template-columns:1fr}
    .candidate-grid{grid-template-columns:repeat(2,1fr)}
    .method{grid-template-columns:1fr}
    .analysis-top{flex-direction:column}
    .verdict{margin-top:0}
    .section-head h2{font-size:21px}
    .diagram-mobile-hint{display:block;margin:0 0 2px;font-size:10px;color:var(--faint)}
    footer{flex-direction:column}
  }
  @media print{
    .topbar,.fig-controls,.candidate-panel,.analysis{display:none}
    .interactive-grid{grid-template-columns:1fr}
    #singleLine{min-width:0}
    .section{padding-top:24px}
  }