:root{color:#222;font-family:system-ui,PingFang TC,Noto Sans TC,sans-serif}body{background:#f6f7f9;margin:0}.app{padding:16px 20px 80px}.app h1{margin:0;font-size:22px;font-weight:700}.app h2{color:#111;margin:0 0 8px;font-size:17px;font-weight:700}.app h3{color:#666;margin:12px 0 6px;font-size:12px;font-weight:600}.nav-bar{background:#fff;border-bottom:1px solid #e3e7ec;justify-content:space-between;align-items:center;gap:16px;height:52px;margin:-16px -20px 14px;padding:0 20px;display:flex}.app h1.nav-brand{letter-spacing:.04em;font-size:15px;font-weight:650}.nav-title{color:#1b2430;border-radius:8px;align-items:center;gap:10px;margin-left:-4px;padding:4px 6px 4px 4px;text-decoration:none;display:inline-flex}.nav-title:hover{background:#f2f4f7}.nav-mark{flex:none;width:28px;height:28px;display:block}.nav-mark rect{fill:#1b2430}.nav-mark path{fill:none;stroke-linecap:round}.nav-mark-road{stroke:#5b6573;stroke-width:1.2px}.nav-mark-band{stroke:#3fca6b;stroke-width:2.6px}.nav-links{align-items:center;gap:4px;margin-left:auto;display:flex}.nav-link{color:#5b6573;border-radius:8px;align-items:center;gap:4px;padding:5px 8px;font-size:13px;font-weight:400;text-decoration:none;display:inline-flex}.nav-link-ext{fill:none;stroke:currentColor;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;width:11px;height:11px}.nav-link:hover{background:#f2f4f7}.nav-link[aria-current=page]{color:#1a4fd6;background:#e8eefc}.nav-account{position:relative}.nav-account-button{color:#1b2430;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:8px;height:36px;padding:0 8px 0 4px;display:inline-flex}.nav-account-button:hover,.nav-account-button[aria-expanded=true]{background:#f2f4f7;border-color:#e3e7ec}.nav-avatar{color:#1a4fd6;background:#e6ecfb;border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-size:13px;font-weight:650;display:inline-grid}.nav-avatar.large{width:36px;height:36px;font-size:16px}.nav-account-name{text-overflow:ellipsis;white-space:nowrap;max-width:12em;font-weight:500;overflow:hidden}.nav-view-only{color:#5b6573;white-space:nowrap;background:#f2f4f7;border-radius:999px;padding:2px 8px;font-size:11px}.nav-chevron{fill:none;stroke:#6b7480;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:12px;height:12px;transition:transform .15s}.nav-account-button[aria-expanded=true] .nav-chevron{transform:rotate(180deg)}.nav-menu{z-index:1100;transform-origin:100% 0;background:#fff;border:1px solid #e3e7ec;border-radius:12px;width:264px;animation:.12s ease-out nav-menu-in;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 12px 32px #1b243024,0 2px 6px #1b24300f}@keyframes nav-menu-in{0%{opacity:0;transform:translateY(-4px)scale(.98)}}.nav-menu-who{align-items:center;gap:10px;padding:14px;font-size:13px;display:flex}.nav-menu-id{flex-direction:column;gap:1px;min-width:0;display:flex}.nav-menu-permissions{border-top:1px solid #eef0f3;flex-direction:column;gap:4px;padding:10px 14px 12px;font-size:13px;display:flex}.nav-menu-heading{color:#6b7480;margin-bottom:2px;font-size:12px}.nav-permission{color:#9aa2ad;align-items:center;gap:8px;display:flex}.nav-permission.held{color:#1b2430}.nav-permission-mark{text-align:center;color:#2e9e4f;flex:none;width:14px;font-weight:700}.nav-menu-items{border-top:1px solid #eef0f3;flex-direction:column;padding:6px;display:flex}.nav-menu-item{color:#1b2430;border-radius:8px;align-items:center;gap:10px;padding:8px;font-size:13px;text-decoration:none;display:flex}.nav-menu-item:hover{background:#f2f4f7}button.nav-menu-item{width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;font-size:13px}.nav-menu-icon{fill:none;stroke:#6b7480;stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;width:16px;height:16px}.nav-title:focus-visible,.nav-link:focus-visible,.nav-account-button:focus-visible,.nav-menu-item:focus-visible{outline-offset:2px;outline:2px solid #1a4fd6}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (width<=480px){.nav-account-name{display:none}}@media (prefers-reduced-motion:reduce){.nav-menu{animation:none}.nav-chevron{transition:none}}.account-notice{max-width:520px}.accounts-page{flex-direction:column;gap:12px;max-width:1000px;display:flex}.accounts-page>h2,.accounts-page>p{margin:0}.accounts-error{font-size:13px}.accounts-add{flex-wrap:wrap;gap:8px 14px;font-size:13px}.accounts-add input:not([type=checkbox]){width:180px}.accounts-table-wrap{overflow-x:auto}.accounts-table{border-collapse:collapse;background:#fff;width:100%;font-size:13px}.accounts-table th,.accounts-table td{text-align:left;white-space:nowrap;border-bottom:1px solid #e6e9ee;padding:6px 10px}.accounts-table th{color:#666;font-weight:600}.accounts-table .accounts-check{text-align:center}.accounts-rename{gap:4px}.card{background:#fff;border:1px solid #dfe3e8;border-radius:8px;padding:12px 14px}.card-head{border-bottom:1px solid #e6e9ee;margin:-12px -14px 12px;padding:12px 14px 8px}.card-head h2{margin:0}.card-head h2 .muted{margin-left:8px;font-weight:400}.muted{color:#777;font-size:12px}.small{font-size:11px}.issue{color:#b00020;font-size:12px}.issues{margin:6px 0;padding-left:18px}.row{align-items:flex-start;gap:16px;display:flex}.row.center{align-items:center}.grow{flex:1;min-width:0}.nowrap{white-space:nowrap}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.center-text{text-align:center}.push-right{margin-left:auto}button{font:inherit;cursor:pointer;background:#fff;border:1px solid #ccd;border-radius:6px;padding:4px 10px;font-size:13px}button.small{padding:2px 6px;font-size:11px}select{font:inherit;margin:0 4px;font-size:13px}input.num{width:56px;font:inherit;border:1px solid #ccd;border-radius:4px;padding:2px 4px}input.num.narrow{width:44px}.invalid,input.invalid,select.invalid{outline-offset:1px;outline:2px solid #b00020}details summary{cursor:pointer;color:#1a4fd6;font-size:13px}.phase-list{flex-wrap:wrap;gap:8px;display:flex}.phase-sets{flex-direction:column;gap:8px;display:flex}.phase-set-head{width:100%;margin:2px 0}.phase-card{text-align:center;cursor:pointer;box-sizing:border-box;background:#fff;border:2px solid #dfe3e8;border-radius:8px;width:104px;padding:6px;position:relative}.phase-card.selected{background:#eef3ff;border-color:#1a4fd6}.phase-card img{object-fit:contain;image-rendering:auto;width:80px;height:80px}.phase-card .placeholder{color:#aaa;background:#f2f2f2;place-items:center;width:80px;height:80px;font-size:11px;display:grid}.phase-card .code{font-size:13px;font-weight:600}.phase-card .remove{color:#999;background:0 0;border:0;padding:0 2px;font-size:11px;position:absolute;top:2px;right:2px}.phase-card.add{cursor:default;flex-direction:column;justify-content:center;gap:4px;display:flex}.phase-card.add input{width:72px;font:inherit;padding:2px;font-size:12px}.phase-card.unassigned{cursor:default}.diagrams{gap:20px}.intersection-diagram{text-align:center;flex:none}.intersection-diagram>img{object-fit:contain;image-rendering:auto;cursor:zoom-in;border:1px solid #eee;max-width:220px;height:150px}.intersection-diagram .placeholder{color:#aaa;background:#f2f2f2;place-items:center;width:150px;height:150px;font-size:11px;display:grid}.lightbox,.dialog-backdrop{z-index:999;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox{cursor:zoom-out}.lightbox img{object-fit:contain;width:min(90vw,900px);max-height:90vh;image-rendering:pixelated;cursor:zoom-out;background:#fff;border-radius:8px;padding:12px}.badge.warn{color:#9a5b00;background:#fff4e0}.dialog-backdrop{padding:16px}.about-dialog{width:min(92vw,380px);box-shadow:0 12px 40px #0000004d}.about-dialog h2{margin:0 0 10px;font-size:18px}.about-dialog p{margin:0 0 8px;font-size:13px}.about-dialog .dialog-actions{justify-content:flex-end;margin-top:12px}.session-expired-backdrop{z-index:2000}.session-expired-dialog{width:min(92vw,380px);box-shadow:0 12px 40px #0000004d}.session-expired-dialog h2{margin:0 0 10px;font-size:18px}.session-expired-dialog p{margin:0;font-size:14px}.session-expired-dialog .dialog-actions{justify-content:flex-end;margin-top:16px}button.primary{color:#fff;background:#1a4fd6;border-color:#1a4fd6;padding:6px 18px}.tabs{flex-wrap:wrap;gap:4px;display:flex}.tabs button{border-radius:6px;padding:4px 10px}.tabs button.active{color:#fff;background:#1a4fd6;border-color:#1a4fd6}.tabs button.missing{color:#999;border-style:dashed}table.steps{border-collapse:collapse;width:100%;font-size:13px}table.steps th,table.steps td{text-align:left;border-bottom:1px solid #eee;padding:3px 6px}table.steps tr.green{background:#edf8f0}table.steps tr.dragging{opacity:.4}table.steps .grab{cursor:grab}table.steps select.chosen{font-weight:700}table.steps th.pedestrian-group{text-align:center;color:#666;border-bottom:1px solid #ddd;font-weight:600}table.steps .pedestrian-cell{white-space:nowrap}table.steps button.add-pedestrian{color:#1a4fd6;border-style:dashed;width:100%}table.steps button.remove-pedestrian{vertical-align:middle;color:#999;background:0 0;border:0;justify-content:center;align-items:center;width:24px;height:24px;margin-left:2px;padding:0;font-size:12px;display:inline-flex}table.steps button.remove-pedestrian:hover{color:#b00020}table.steps .total{font-weight:600}table.steps .total.ok{color:#2e9e4f}table.steps .total.bad{color:#b00020}.light-green{color:#2e9e4f}.light-yellow{color:#b08900}.light-allRed{color:#c94040}.badge{color:#1a4fd6;background:#eef3ff;border-radius:999px;padding:2px 8px;font-size:12px;display:inline-block}.result-table{border-collapse:collapse;font-size:13px}.result-table th,.result-table td{text-align:center;border:1px solid #e3e6ea;padding:4px 10px}.result-table tbody th{text-align:left}.result-table .current{background:#eef3ff}.result-table td.answer{color:#1a4fd6;font-weight:700}.result-table td.small{font-size:11px}.print-only{display:none}@page sheet-landscape{size:A4 landscape;margin:10mm}@page sheet-portrait{size:A4 portrait;margin:8mm}@media print{:root:has([data-printing=landscape]){page:sheet-landscape}:root:has([data-printing=portrait]){page:sheet-portrait}body{background:#fff}.app{padding:0}:root:not(:has([data-printing])) body>*{display:none!important}:root:has([data-printing]) :not([data-printing]):not([data-printing] *):not(:has([data-printing])){display:none!important}.print-only{display:revert}}.site-footer{color:#777;margin-top:10px;font-size:11px;line-height:1.5}.about-page{color:#1b2430;max-width:680px;margin:0 auto;padding:16px 20px 72px;font-size:16px;line-height:1.8}.about-page h2{margin:12px 0 28px;font-size:26px;line-height:1.3}.about-page section{margin:0 0 36px}.about-page h3{color:#1b2430;border-bottom:1px solid #e3e6ea;margin:0 0 12px;padding-bottom:6px;font-size:19px;line-height:1.4}.about-page p,.about-page ul,.about-page ol{margin:0 0 12px}.about-page ul,.about-page ol{padding-left:1.6em}.about-page li{margin:0 0 6px}.about-page a{color:#1a4fd6}.legend-swatch{vertical-align:middle;width:40px;height:6px;margin-right:4px;display:inline-block}.legend-note-list{grid-template-columns:max-content 1fr;gap:6px 12px;margin:0;padding:0;list-style:none;display:grid}.legend-note-list li{display:contents}.legend-note-label{white-space:nowrap;font-weight:600}.legend-note-text{color:#333;line-height:1.5}.legend-note-foot{color:#5f6368;margin:8px 0 0}.about-page .legend-note-list{gap:8px 14px;margin:10px 0 8px;padding:0;font-size:15px}.about-page .legend-note-list li{margin:0}.about-page .legend-note-foot{margin:8px 0 12px;font-size:15px}@media (width<=600px){.about-page{padding:8px 14px 56px;font-size:15px}.about-page h2{margin:8px 0 20px;font-size:22px}.about-page h3{font-size:17px}}
