*{box-sizing:border-box}
html{min-width:320px;scroll-behavior:smooth}
body{margin:0;background:var(--rr-bg-canvas);color:var(--rr-ink-primary);font:var(--rr-size-body)/1.55 var(--rr-font-cjk)}
button,input,select{font:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.55}
:focus-visible{outline:var(--rr-focus-outline);outline-offset:var(--rr-focus-offset)}
[hidden]{display:none!important}
.topbar{height:64px;background:var(--rr-bg-card);border:1px solid var(--rr-line-soft);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 24px}
.brand{display:inline-flex;align-items:center;gap:8px;color:var(--rr-ink-primary);text-decoration:none;white-space:nowrap}
.brand strong{font:700 20px/1 var(--rr-font-numeric)}
.brand-sub{font-size:12px;color:var(--rr-ink-secondary);margin-left:4px}
.brand-icon{width:28px;height:28px;border-radius:7px;background:var(--rr-ink-primary);display:grid;place-items:center;flex:none}
.brand-icon svg{width:24px;height:24px;fill:none;stroke:#ecf3dd;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.top-meta{display:flex;align-items:center;gap:12px;white-space:nowrap}
.demo-pill{font-size:11px;background:var(--rr-bg-demo);color:var(--rr-ink-demo);padding:6px 8px;border-radius:var(--rr-radius-tag);font-weight:700}
.review-date{font-size:11px;color:var(--rr-ink-muted)}
.english-guide{color:#285f62;font-weight:700;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.demo-banner{padding:10px 24px;background:var(--rr-bg-demo);color:var(--rr-ink-demo);font-size:11px}
.page{max-width:1560px;margin:auto;padding:24px}
.hero{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:100px}
.hero>div:first-child{min-width:0}
.eyebrow{font-size:11px;letter-spacing:.08em;color:var(--rr-ink-muted);margin:0 0 6px}
h1{font-size:var(--rr-size-display);line-height:1.25;margin:0 0 8px;letter-spacing:-.03em}
.hero p:not(.eyebrow){color:var(--rr-ink-secondary);margin:0;font-size:12px}
.hero-result{width:280px;min-height:88px;padding:16px;border-radius:var(--rr-radius-card);background:var(--rr-bg-select);flex:none}
.hero-result.error{background:#f5e7e4;border:1px solid var(--rr-status-error)}
.hero-result.warn{background:#f6eadb;border:1px solid var(--rr-status-warn)}
.hero-result strong{font-size:14px;display:block;margin-bottom:6px}
.hero-result p{font-size:11px;margin:0;color:var(--rr-ink-primary)}
.presets{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:22px 0 16px}
.presets>span{font-size:11px;color:var(--rr-ink-secondary);font-weight:700;white-space:nowrap}
.presets button,.button{border:1px solid var(--rr-line-soft);background:var(--rr-bg-card);color:var(--rr-ink-primary);border-radius:var(--rr-radius-control);min-height:44px;padding:8px 12px;font-weight:600}
.presets button{min-height:34px;font-size:11px;padding:6px 10px;white-space:nowrap}
.presets button:hover,.button:hover:not(:disabled){border-color:var(--rr-route-current)}
.presets button.active{background:var(--rr-route-current);border-color:var(--rr-route-current);color:#fff}
.button.primary{background:var(--rr-route-current);border-color:var(--rr-route-current);color:#fff}
.button.primary:hover:not(:disabled){background:#264b39}
.button.ghost{background:transparent}
.button.full{width:100%}
.dirty-notice{background:#f7ead7;border-left:4px solid var(--rr-status-warn);padding:10px 14px;margin-bottom:16px;color:var(--rr-status-warn);border-radius:4px;font-size:12px}
.dashboard{display:grid;grid-template-columns:264px minmax(0,1fr) 308px;gap:16px;align-items:start}
.dashboard>*{min-width:0}
.center-column,.evidence-column{display:grid;gap:16px;min-width:0}
.card{background:var(--rr-bg-card);border:1px solid var(--rr-line-soft);border-radius:var(--rr-radius-card);padding:18px;min-width:0}
.card h2{font-size:var(--rr-size-section);line-height:1.3;margin:0 0 10px}
.card-heading{display:flex;justify-content:space-between;align-items:start;gap:12px;min-width:0}
.card-heading h2{margin-bottom:3px}
.card-heading small,.subtle{color:var(--rr-ink-muted);font-size:11px;margin:0}
.controls .field{margin:0 0 14px;min-width:0}
.controls label:not(.rain-toggle){font-weight:700;font-size:11px;color:var(--rr-ink-secondary);display:block;margin:0 0 5px}
.controls select,.controls input[type=number]{width:100%;min-width:0;min-height:44px;padding:9px 10px;border:1px solid var(--rr-line-soft);border-radius:var(--rr-radius-control);color:var(--rr-ink-primary);background:var(--rr-bg-subtle)}
.controls input[type=number]{background:#fff}
.controls select:hover,.controls input[type=number]:hover{border-color:var(--rr-line-strong)}
.rain-toggle{display:flex;align-items:center;gap:8px;min-height:44px;border-radius:var(--rr-radius-control);background:var(--rr-bg-select);padding:8px 10px;margin:3px 0 14px;font-weight:700;font-size:12px;cursor:pointer}
.rain-toggle input{position:absolute;opacity:0;width:1px;height:1px}
.rain-toggle .check-mark{display:grid;place-items:center;width:19px;height:19px;border:2px solid var(--rr-route-current);border-radius:4px;color:transparent;background:#fff;flex:none}
.rain-toggle input:checked+.check-mark{background:var(--rr-route-current);color:#fff}
.rain-toggle:has(input:focus-visible){outline:var(--rr-focus-outline);outline-offset:2px}
.controls .fault-field{margin-top:4px}
.helper{color:var(--rr-ink-muted);font-size:11px;margin:12px 0 0}
.input-error{font-size:11px;color:var(--rr-status-error);margin:0 0 8px}
.map-card{padding:18px}
.map-card .button{font-size:11px;min-height:34px;white-space:nowrap;padding:6px 10px}
.map-wrap{overflow:hidden;background:#f1f4ed;border-radius:8px;margin:12px 0 10px;perspective:900px}
#route-map{display:block;width:100%;height:auto;min-height:280px;transition:transform .3s ease-in-out;transform-origin:center}
.map-wrap.tilt #route-map{transform:rotateX(23deg) rotateZ(-3deg) scale(.93)}
.map-legend{display:flex;align-items:center;flex-wrap:wrap;gap:9px 16px;font-size:11px;color:var(--rr-ink-secondary)}
.map-legend>span{white-space:nowrap}
.map-legend small{margin-left:auto;color:var(--rr-ink-muted);font-size:10px}
.legend-line{display:inline-block;width:24px;height:0;vertical-align:middle;margin-right:5px}
.legend-line.original{border-top:2.5px dashed var(--rr-route-original)}
.legend-line.current{border-top:4px solid var(--rr-route-current)}
.legend-blocked{color:var(--rr-status-error);font-size:16px;vertical-align:middle;margin-right:4px;font-style:normal}
.route-original{fill:none;stroke:var(--rr-route-original);stroke-width:2.5;stroke-dasharray:7 6}
.route-current{fill:none;stroke:var(--rr-route-current);stroke-width:4;stroke-linejoin:round;stroke-linecap:round}
.map-node{cursor:pointer}
.map-node:focus-visible{outline:none}
.map-node:focus-visible .node-circle{stroke:#a8be77;stroke-width:4}
.map-node-name{font-size:11px;fill:var(--rr-ink-primary);text-anchor:middle}
.map-node-sub{font-size:9px;fill:var(--rr-status-error);text-anchor:middle}
.map-node-id{font-size:9px;text-anchor:middle;dominant-baseline:middle;font-weight:700}
.branch-section .card-heading{align-items:center}
.branch-list{display:grid;gap:10px;margin-top:10px}
.branch-option{width:100%;text-align:left;border:1px solid var(--rr-line-soft);border-radius:var(--rr-radius-control);background:#fff;padding:12px 14px;color:var(--rr-ink-primary);min-height:72px}
.branch-option[aria-pressed=true]{background:var(--rr-bg-select);border:2px solid var(--rr-route-current);padding:11px 13px}
.branch-option strong{display:block;font-size:13px;margin-bottom:4px}
.branch-option span{display:block;font-size:11px;color:var(--rr-ink-secondary)}
.branch-option .branch-metrics{font-weight:700;color:var(--rr-route-current)}
.branch-option:hover{border-color:var(--rr-route-current)}
.evidence h2,.agent-trace h2{font-size:16px}
.change-card{background:var(--rr-bg-subtle);border-radius:8px;padding:12px;margin:0 0 10px}
.change-card strong{display:block;font-size:12px;margin-bottom:4px}
.change-card p{margin:0 0 4px;color:var(--rr-ink-secondary);font-size:11px}
.change-card small{color:var(--rr-ink-muted);font-size:10px;line-height:1.45;display:block}
.source-note{border:1px solid var(--rr-line-soft);border-radius:8px;padding:10px;margin:12px 0;color:var(--rr-source-qloo)}
.source-note strong{font-size:11px}
.source-note p{font-size:10px;margin:5px 0 0;color:var(--rr-ink-secondary)}
.adopt-note{margin-top:7px}
.agent-trace ol{padding:0;margin:0;list-style:none;counter-reset:trace}
.agent-trace li{display:grid;grid-template-columns:24px 1fr;gap:8px;color:var(--rr-ink-secondary);font-size:11px;margin:9px 0}
.agent-trace li::before{counter-increment:trace;content:counter(trace, decimal-leading-zero);color:var(--rr-ink-muted)}
.comparison{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.selected-route:has(.route-empty){border-color:var(--rr-line-soft)}
.selected-route:has(.route-timeline){border:2px solid var(--rr-route-current);padding:17px}
.route-metrics{display:flex;gap:12px;flex-wrap:wrap;align-items:baseline;margin:6px 0 10px;font-size:11px;color:var(--rr-ink-secondary)}
.route-metrics strong{font-size:15px;color:var(--rr-ink-primary)}
.route-metrics em{font-style:normal;font-weight:700}
.route-metrics em.pass{color:var(--rr-status-pass)}
.route-metrics em.fail{color:var(--rr-status-error)}
.route-empty{color:var(--rr-ink-muted);font-size:12px;padding:16px 0}
.route-timeline{display:grid;gap:10px}
.route-stop{display:grid;grid-template-columns:64px minmax(0,1fr);gap:8px;border-top:1px solid var(--rr-line-soft);padding-top:9px;font-size:11px}
.route-stop time{color:var(--rr-ink-secondary);font-family:var(--rr-font-numeric)}
.route-stop button{border:0;background:transparent;color:var(--rr-ink-primary);font-weight:700;padding:0;text-align:left;font-size:12px}
.route-stop small{display:block;color:var(--rr-ink-muted);font-size:10px}
.route-stop .stop-fail{color:var(--rr-status-error)}
.checks-card{margin-top:16px}
.checks-card h2{font-size:16px;margin:0}
.checks-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:11px}
.checks-table th,.checks-table td{border:1px solid var(--rr-line-soft);padding:10px;text-align:left;vertical-align:top}
.checks-table th{background:var(--rr-bg-subtle);color:var(--rr-ink-secondary)}
.checks-table .pass{color:var(--rr-status-pass);font-weight:700}
.checks-table .fail{color:var(--rr-status-error);font-weight:700}
.checks-table .unknown{color:var(--rr-ink-muted);font-weight:700}
.mobile-adopt{display:none}
footer{display:flex;justify-content:space-between;gap:12px;margin:20px 0 0;color:var(--rr-ink-muted);font-size:10px}
.venue-dialog{width:min(440px,calc(100vw - 32px));border:1px solid var(--rr-line-soft);border-radius:12px;padding:24px;color:var(--rr-ink-primary);box-shadow:0 16px 48px #203d3530}
.venue-dialog::backdrop{background:#203d3577}
.venue-dialog h2{margin:0 28px 12px 0;font-size:18px}
.venue-dialog p{font-size:12px;color:var(--rr-ink-secondary)}
.dialog-close{position:absolute;right:10px;top:10px;border:0;background:transparent;font-size:25px;color:var(--rr-ink-secondary);min-width:36px;min-height:36px}
.no-solution,.fault-panel{border:1px solid var(--rr-status-error);border-radius:var(--rr-radius-card);padding:18px;margin-top:10px}
.fault-panel{border-color:var(--rr-status-warn)}
.no-solution h3,.fault-panel h3{margin:0 0 8px;font-size:16px}
.no-solution p,.fault-panel p{font-size:11px;color:var(--rr-ink-secondary)}
.conflicts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
.conflict{background:#f5e3df;padding:12px;border-radius:8px;font-size:11px}
.conflict strong{display:block;color:var(--rr-status-error);margin-bottom:4px}
.adjust-box{background:var(--rr-bg-subtle);border-radius:8px;padding:12px;margin-top:14px}
.adjust-box strong{display:block;margin-bottom:8px;font-size:12px}
.adjust-actions{display:flex;gap:8px;flex-wrap:wrap}
.adjust-actions button{background:#fff;border:1px solid var(--rr-line-soft);border-radius:7px;min-height:36px;padding:6px 10px;color:var(--rr-ink-primary);font-size:11px}
.fault-types{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
.fault-type{background:var(--rr-bg-subtle);border-radius:8px;padding:12px;font-size:11px}
.fault-type.active{background:#f5e8d7;border:1px solid var(--rr-status-warn)}
.fault-type strong{display:block;margin-bottom:5px}

@media(max-width:1180px){
  .dashboard{grid-template-columns:252px minmax(0,1fr)}
  .evidence-column{grid-column:1/-1;grid-template-columns:1fr 1fr}
  .hero-result{width:260px}
}
@media(max-width:720px){
  .topbar{height:52px;padding:0 16px}
  .brand strong{font-size:16px}.brand-sub,.review-date{display:none}
  .brand-icon{width:25px;height:25px}.brand-icon svg{width:21px;height:21px}
  .demo-pill{display:none}
  .english-guide{font-size:11px}
  .demo-banner{padding:9px 16px;font-size:10px}
  .page{padding:16px}
  .hero{display:block;min-height:auto}
  h1{font-size:22px}
  .hero p:not(.eyebrow){font-size:11px}
  .hero-result{width:100%;min-height:auto;padding:10px 12px;margin-top:12px}
  .hero-result strong{font-size:12px;margin-bottom:2px}
  .presets{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin;margin:14px -16px 16px;padding:0 16px 6px}
  .presets button{flex:none}
  .dashboard,.evidence-column,.comparison{display:grid;grid-template-columns:minmax(0,1fr)}
  .evidence-column{grid-column:auto}
  .controls{display:flex;flex-direction:column}
  .controls h2{order:-2}
  .rain-toggle{order:-1;margin:2px 0 12px}
  .controls .theme-field{order:0}
  .controls .control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .controls .control-grid .field{margin:0}
  .controls .fault-field{margin-top:12px}
  .controls .primary{margin-top:12px}
  .card{padding:16px}
  .map-card .button{font-size:10px}
  #route-map{min-height:0}
  .map-node-name,.map-node-sub,.map-start-label{display:none}
  .map-legend{gap:6px 10px}
  .map-legend small{display:block;flex-basis:100%;margin-left:0}
  .branch-option{min-height:70px}
  .evidence .adopt,.evidence .adopt-note{display:none}
  .comparison{margin-top:16px}
  .comparison .card{padding:16px}
  .checks-table{display:block}
  .checks-table thead{display:none}
  .checks-table tbody{display:grid;gap:8px}
  .checks-table tr{display:grid;grid-template-columns:1fr 1fr;background:var(--rr-bg-subtle);border-radius:8px;padding:10px;gap:3px}
  .checks-table td{border:0;padding:0;min-width:0}
  .checks-table td:first-child{grid-column:1/-1;font-weight:700}
  .checks-table td:last-child{grid-column:1/-1;color:var(--rr-ink-muted);font-size:10px}
  .checks-table td:nth-child(2)::before{content:'原计划：';color:var(--rr-ink-muted)}
  .checks-table td:nth-child(3)::before{content:'当前：';color:var(--rr-ink-muted)}
  .mobile-adopt{display:block;background:#fff;border:1px solid var(--rr-line-soft);padding:12px;margin-top:16px}
  .conflicts,.fault-types{grid-template-columns:1fr}
  footer{display:block}
  footer span{display:block;margin:4px 0}
}
@media(max-width:360px){
  .page{padding:12px}
  .topbar{padding:0 12px}
  .demo-banner{padding:9px 12px}
  .presets{margin-left:-12px;margin-right:-12px;padding-left:12px;padding-right:12px}
  .controls .control-grid{grid-template-columns:1fr}
  .card-heading{flex-wrap:wrap}
  .map-legend>span{white-space:normal}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}#route-map{transition:none}}
