
  :root{
    --ground:#EDEFF3;
    --paper:#FFFFFF;
    --ink:#16233B;
    --muted:#6B7488;
    --line:#C9CFDA;
    --stamp:#A4262C;
    --stamp-bg:#FBEEEE;
    --done:#2F6B4F;
  }
  *{box-sizing:border-box}
  html,body{margin:0;padding:0}
  body{
    background:var(--ground);
    color:var(--ink);
    font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    font-size:16px;
    line-height:1.5;
    -webkit-font-smoothing:antialiased;
  }
  .wrap{max-width:640px;margin:0 auto;padding:20px 16px 64px}

  /* ---- Route selector (the hero) ---- */
  .route{
    background:var(--paper);
    border:1px solid var(--line);
    padding:20px 18px 18px;
  }
  .route h1{
    font-family:"IBM Plex Serif",Georgia,serif;
    font-size:1.35rem;
    font-weight:600;
    line-height:1.25;
    margin:0 0 4px;
  }
  .route p.lede{
    margin:0 0 20px;
    color:var(--muted);
    font-size:0.9rem;
  }
  .leg{display:flex;align-items:flex-start;gap:12px}
  .rail{
    display:flex;flex-direction:column;align-items:center;
    padding-top:22px;
  }
  .dot{width:9px;height:9px;border-radius:50%;border:2px solid var(--ink);background:var(--paper)}
  .dot.filled{background:var(--ink)}
  .rail-line{width:2px;flex:1;min-height:34px;background:var(--line)}
  .leg-fields{flex:1;min-width:0}
  label.f{
    display:block;
    font-size:0.72rem;
    letter-spacing:0.04em;
    color:var(--muted);
    margin-bottom:4px;
  }
  select,input[type=number]{
    width:100%;
    font:inherit;
    font-size:0.95rem;
    color:var(--ink);
    background:var(--paper);
    border:1px solid var(--line);
    padding:10px 11px;
    border-radius:2px;
    appearance:none;
  }
  select:focus,input:focus,button:focus{outline:2px solid var(--ink);outline-offset:1px}
  .fixed-dest{
    border:1px solid var(--line);
    border-left:3px solid var(--ink);
    padding:10px 11px;
    font-size:0.95rem;
    background:#F7F8FA;
  }
  .fixed-dest span{color:var(--muted);font-size:0.8rem;display:block}

  .household{margin-top:22px;border-top:1px solid var(--line);padding-top:16px}
  .choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
  .choice{
    font:inherit;font-size:0.88rem;
    padding:8px 13px;
    border:1px solid var(--line);
    background:var(--paper);
    color:var(--ink);
    border-radius:2px;
    cursor:pointer;
  }
  .choice[aria-pressed="true"]{
    background:var(--ink);color:#fff;border-color:var(--ink);
  }
  .kids-row{margin-top:12px;display:none;align-items:center;gap:10px}
  .kids-row.on{display:flex}
  .kids-row input{width:74px}
  .kids-row label{font-size:0.88rem;color:var(--muted)}

  .go{
    margin-top:20px;width:100%;
    font:inherit;font-weight:600;font-size:0.98rem;
    background:var(--ink);color:#fff;border:none;
    padding:14px;border-radius:2px;cursor:pointer;
  }
  .go:disabled{background:var(--line);color:#fff;cursor:not-allowed}

  /* ---- Results ---- */
  .results{margin-top:28px}
  .summary{
    font-size:0.9rem;color:var(--muted);
    padding-bottom:14px;border-bottom:1px solid var(--line);
    margin-bottom:8px;
  }
  .summary strong{color:var(--ink);font-weight:500}
  .phase{margin-top:26px}
  .phase-head{
    font-family:"IBM Plex Serif",Georgia,serif;
    font-size:1.05rem;font-weight:600;
    margin:0 0 2px;
  }
  .phase-sub{margin:0 0 12px;font-size:0.84rem;color:var(--muted)}

  .step{
    background:var(--paper);
    border:1px solid var(--line);
    margin-bottom:8px;
  }
  .step.done{opacity:0.62}
  .step-top{display:flex;gap:0;align-items:stretch}
  .num{
    flex:0 0 40px;
    display:flex;align-items:center;justify-content:center;
    font-size:0.9rem;font-weight:600;
    color:var(--muted);
    border-right:1px solid var(--line);
    background:#F7F8FA;
  }
  .step.done .num{background:var(--done);color:#fff;border-color:var(--done)}
  .step-btn{
    flex:1;text-align:left;font:inherit;
    background:none;border:none;cursor:pointer;
    padding:13px 14px;color:var(--ink);
    display:flex;justify-content:space-between;gap:10px;align-items:flex-start;
  }
  .step-title{font-weight:500;line-height:1.35}
  .step.done .step-title{text-decoration:line-through}
  .step-office{display:block;font-size:0.82rem;color:var(--muted);margin-top:3px;font-weight:400;text-decoration:none}
  .chev{flex:0 0 auto;color:var(--muted);font-size:0.8rem;padding-top:3px}

  .body{display:none;padding:0 14px 14px 54px;border-top:1px solid #E4E8EE}
  .body.open{display:block}
  .body dl{margin:0}
  .body dt{
    font-size:0.74rem;color:var(--muted);
    margin-top:13px;letter-spacing:0.03em;
  }
  .body dd{margin:2px 0 0;font-size:0.9rem}
  .body ul{margin:4px 0 0;padding-left:18px;font-size:0.9rem}
  .body li{margin-bottom:3px}
  .prereq{
    margin-top:13px;padding:9px 11px;
    background:#F2F4F8;border-left:3px solid var(--muted);
    font-size:0.85rem;
  }
  .stamp{
    display:inline-block;margin-top:14px;
    font-size:0.72rem;letter-spacing:0.05em;
    color:var(--stamp);background:var(--stamp-bg);
    border:1px solid var(--stamp);
    padding:3px 7px;border-radius:2px;
  }
  .stamp.ok{color:var(--done);background:#EDF5F0;border-color:var(--done)}
  .stamp.neutral{color:var(--muted);background:#F2F4F8;border-color:var(--line)}
  .src-note{color:var(--muted);font-size:0.84rem}
  .varies{
    margin-top:13px;padding:9px 11px;
    background:#FFF8E8;border-left:3px solid #B07A1E;
    font-size:0.85rem;
  }
  .varies b{font-weight:600}
  .partners{
    margin-top:13px;padding:10px 12px;
    background:#F2F4F8;border-left:3px solid var(--ink);
    font-size:0.85rem;
  }
  .partners-h{margin:0 0 4px;font-weight:600}
  .partners-intro{margin:0 0 6px}
  .partners ul{margin:4px 0 0;padding-left:18px}
  .partners li{margin-bottom:4px}
  .partners a{color:var(--ink);font-weight:600}
  .partners-note{margin:8px 0 0;font-size:0.76rem;color:var(--muted)}
  .mark{
    margin-top:12px;font:inherit;font-size:0.85rem;
    background:none;border:1px solid var(--line);
    padding:7px 12px;border-radius:2px;cursor:pointer;color:var(--ink);
  }
  .step.done .mark{border-color:var(--done);color:var(--done)}

  .contacts{
    background:var(--paper);
    border:1px solid var(--line);
    border-top:3px solid var(--ink);
    padding:15px 16px;
    margin-bottom:20px;
  }
  .contacts h3{
    font-family:"IBM Plex Serif",Georgia,serif;
    font-size:0.98rem;font-weight:600;margin:0 0 3px;
  }
  .contacts .hint{margin:0 0 13px;font-size:0.82rem;color:var(--muted)}
  .phone{display:flex;gap:12px;align-items:baseline;padding:9px 0;border-top:1px solid #E4E8EE}
  .phone a{
    font-size:1.15rem;font-weight:600;color:var(--ink);
    text-decoration:none;border-bottom:2px solid var(--line);
    flex:0 0 auto;
  }
  .phone-txt{font-size:0.86rem}
  .phone-txt b{font-weight:500;display:block}
  .phone-txt span{color:var(--muted)}
  .links{margin:12px 0 0;padding:11px 0 0;border-top:1px solid #E4E8EE;font-size:0.86rem}
  .links a{display:block;color:var(--ink);margin-bottom:6px;word-break:break-word}
  .find{
    margin-top:11px;font-size:0.82rem;color:var(--muted);
  }
  .search-term{
    display:inline-block;margin-top:3px;
    font-size:0.86rem;
    background:#F2F4F8;border:1px solid var(--line);
    padding:4px 8px;border-radius:2px;
  }
  .src-empty{
    margin-top:6px;font-size:0.84rem;color:var(--stamp);
  }
  .docs-panel{border-top-color:var(--muted)}
  .docrow{
    display:flex;flex-wrap:wrap;gap:2px 14px;
    padding:9px 0;border-top:1px solid #E4E8EE;
  }
  .doc-en{flex:0 0 100%;font-size:0.78rem;color:var(--muted)}
  .doc-group{
    font-family:"IBM Plex Serif",Georgia,serif;
    font-size:0.9rem;font-weight:600;
    margin:16px 0 0;padding-top:13px;
    border-top:2px solid var(--ink);
  }
  .doc-groupnote{margin:4px 0 0;font-size:0.82rem;color:var(--muted)}
  .doc-local{font-size:0.98rem;font-weight:500}
  .doc-note{flex:0 0 100%;font-size:0.8rem;color:var(--muted);margin-top:2px}
  .origin-note{color:var(--ink);border-left:2px solid var(--line);padding-left:9px;margin-top:6px}
  .note{
    margin-top:32px;padding:16px;
    border:1px dashed var(--line);
    font-size:0.85rem;color:var(--muted);
  }
  .note strong{color:var(--ink);font-weight:500}
  .empty{padding:20px;background:var(--paper);border:1px solid var(--line);font-size:0.9rem}
  @media (prefers-reduced-motion:no-preference){
    .results{animation:fade .25s ease-out}
    @keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
  }
