:root{--ink:#17202a;--muted:#748091;--line:#e5e9ee;--bg:#f5f7f9;--navy:#0d2847;--blue:#2563eb;--cyan:#0f9ea8;--orange:#e47b31;--red:#c94f45;--white:#fff;--color-primary:#2165c1;--color-topbar:#10263f;--color-bg:var(--bg);--color-surface:#fff;--color-text:var(--ink);--color-text-secondary:var(--muted);--color-border:var(--line);--radius:7px;color:var(--ink);background-color:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans TC,Microsoft JhengHei,PingFang TC,PingFang SC,Arial,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);min-width:320px;color:var(--ink);margin:0;font-size:14px}button,input,textarea,select{font:inherit}.app-shell{background:var(--bg);min-height:100vh;color:var(--ink);display:flex}.sidebar{color:#cbd6e2;z-index:3;background:#10263f;flex-direction:column;width:220px;padding:22px 14px;display:flex;position:fixed;inset:0 auto 0 0}.brand{color:#fff;letter-spacing:.02em;align-items:center;gap:11px;height:50px;padding:0 10px;font-size:18px;font-weight:700;display:flex}.brand-mark{color:#fff;background:#2872d8;border-radius:9px;flex-shrink:0;place-items:center;width:34px;height:34px;display:grid}.sidebar nav{flex-direction:column;gap:4px;margin-top:22px;display:flex}.nav-label{color:#7f93a9;text-transform:uppercase;letter-spacing:.12em;margin:0 0 7px;padding:0 12px;font-size:11px}.nav-label.second{margin-top:24px}.sidebar nav button{color:#b9c7d6;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:7px;align-items:center;gap:11px;padding:11px 12px;display:flex}.sidebar nav button:hover:not(:disabled),.sidebar nav button.active{color:#fff;background:#1d3b5d}.sidebar nav button.active{box-shadow:inset 3px 0 #4a90e2}.sidebar nav button:disabled{opacity:.45;cursor:not-allowed}.sidebar-foot{border-top:1px solid #29435e;align-items:center;gap:9px;margin-top:auto;padding:17px 6px 0;display:flex}.sidebar-foot .avatar{color:#183a5d;background:#d9e4ef;border-radius:50%;place-items:center;width:34px;height:34px;font-weight:700;display:grid}.sidebar-foot div:nth-child(2){flex-direction:column;flex:1;min-width:0;display:flex}.sidebar-foot strong{color:#fff;font-size:12px}.sidebar-foot span{color:#8fa3b8;font-size:11px}.logout-icon{color:#8fa3b8;cursor:pointer;background:0 0;border:0;place-items:center;padding:4px;display:grid}.logout-icon:hover{color:#fff}.main{width:calc(100% - 220px);min-width:0;margin-left:220px}.topbar{border-bottom:1px solid var(--line);background:#fff;justify-content:space-between;align-items:center;height:84px;padding:17px 26px;display:flex}.topbar h1{color:var(--ink);margin:0;font-size:21px;font-weight:700}.topbar p{color:var(--muted);margin:4px 0 0;font-size:12px}.top-actions{align-items:center;gap:8px;display:flex}.ghost,.outline,.primary{border:1px solid var(--line);color:#374455;cursor:pointer;background:#fff;border-radius:7px;justify-content:center;align-items:center;gap:7px;height:36px;padding:0 12px;display:inline-flex}.ghost{background:#f7f8fa}.primary{color:#fff;background:#2165c1;border-color:#2165c1;font-weight:600}.primary:disabled{opacity:.45;cursor:not-allowed}.app-shell.auth-shell{background:radial-gradient(900px 420px at 12% -10%, #2872d81f, transparent 55%), radial-gradient(700px 360px at 100% 0%, #0f9ea814, transparent 50%), var(--bg);place-items:center;min-height:100vh;padding:1.5rem;display:grid}.auth-card{border:1px solid var(--line);background:#fff;border-radius:12px;gap:1rem;width:min(100%,380px);padding:1.75rem 1.5rem;display:grid;box-shadow:0 18px 48px #1825361a}.auth-brand{align-items:center;gap:12px;display:flex}.auth-card h1{margin:0;font-size:1.35rem;font-weight:700}.auth-field{color:#444;gap:.45rem;font-size:.9rem;display:grid}.auth-field input{border-radius:var(--radius);width:100%;color:var(--color-text);background:#fff;border:1px solid #ccc;padding:.6rem .7rem}.auth-field input:focus{border-color:var(--color-primary);outline:none}.auth-error{color:#a33;margin:-.25rem 0 0;font-size:.85rem}.process-strip{border-bottom:1px solid var(--line);background:#fff;justify-content:center;align-items:center;padding:15px 28px;display:flex}.process-strip>div{color:#9ba4af;align-items:center;gap:7px;font-size:12px;display:flex;position:relative}.process-strip>div:not(:last-child){padding-right:54px}.process-strip>div:not(:last-child):after{content:"";background:#d9dee5;width:28px;height:1px;position:absolute;right:13px}.process-strip span{border:1px solid #d8dde4;border-radius:50%;place-items:center;width:23px;height:23px;font-size:11px;display:grid}.process-strip b{font-weight:600}.process-strip .done,.process-strip .current{color:#2667bd}.process-strip .done span{background:#eaf2fc;border-color:#a9c6ea}.process-strip .current span{color:#fff;background:#2667bd;border-color:#2667bd}.status-banner{border-radius:8px;align-items:flex-start;gap:10px;margin-top:.85rem;padding:10px 12px;display:flex}.status-banner.ready{color:#23715a;background:#edf7f3;border:1px solid #b7dfd0}.status-banner.loading{color:#a55116;background:#fff8ed;border:1px solid #f2b26d}.status-banner .status-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:5px}.status-banner.ready .status-dot{background:#36a27d}.status-banner div{flex-direction:column;gap:2px;display:flex}.status-banner strong{font-size:12px}.status-banner span{opacity:.9;font-size:12px}.app-main{min-height:calc(100vh - 140px);padding:18px 22px 28px}.route-layout,.minutes-layout{grid-template-columns:minmax(380px,520px) minmax(0,1fr);align-items:start;gap:1rem;display:grid}.route-sidebar,.minutes-input,.route-map,.minutes-output{flex-direction:column;gap:.75rem;display:flex}.directory-layout{flex-direction:column;gap:.75rem;width:min(100%,720px);display:flex}.route-map{min-height:480px}@media (width>=961px){.route-map{position:sticky;top:1.5rem}}.panel{border:1px solid var(--line);background:#fff;border-radius:9px;padding:1rem;overflow:hidden}.panel h2{margin:0 0 .35rem;font-size:1rem;font-weight:600}.hint{color:#666;margin:0 0 .85rem;font-size:.875rem;line-height:1.5}.meeting-mode-toggle{flex-wrap:wrap;align-items:center;gap:.85rem;margin-bottom:.85rem;display:flex}.meeting-mode-toggle .btn{min-width:7.5rem;padding:.6rem 1.15rem}.record-draft-meta{flex-wrap:wrap;gap:.45rem;margin:0 0 .85rem;display:flex}.record-draft-meta span{border:1px solid var(--line);height:24px;color:var(--muted);background:#f7f8fa;border-radius:999px;align-items:center;padding:0 8px;font-size:12px;display:inline-flex}.record-draft-actions,.recorder-controls{flex-wrap:wrap;align-items:center;gap:.65rem;display:flex}.btn{border:1px solid var(--line);color:#374455;cursor:pointer;background:#fff;border-radius:7px;justify-content:center;align-items:center;gap:7px;height:36px;padding:0 12px;font-size:.875rem;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{color:#fff;background:#2165c1;border-color:#2165c1;font-weight:600}.btn.primary:hover:not(:disabled){filter:brightness(1.05)}.btn.danger{border-color:var(--red);color:var(--red);background:#fff}.btn.text{color:#666;background:0 0;border:none;padding:0;text-decoration:underline}.btn.text:hover{color:#1a1a1a}.btn.inline-action{color:inherit;font-size:inherit;margin-left:.5rem}.minutes-output{min-height:420px}.minutes-output-tabs{background:#f3f3f1;border-radius:6px;gap:.35rem;margin-bottom:.85rem;padding:.15rem;display:flex}.minutes-output-tab{color:#666;cursor:pointer;font:inherit;background:0 0;border:none;border-radius:4px;flex:1;justify-content:center;align-items:center;gap:.4rem;padding:.45rem .65rem;font-size:.875rem;display:inline-flex}.minutes-output-tab.active{color:#1a1a1a;background:#fff;font-weight:600;box-shadow:0 1px 2px #0000000f}.tab-badge{color:#777;font-size:.72rem;font-weight:500}.minutes-section{margin-top:1rem}.minutes-section h3{margin:0 0 .5rem;font-size:.95rem;font-weight:600}.minutes-section p{color:#333;margin:0;line-height:1.6}.minutes-list,.minutes-actions{margin:0;padding-left:1.2rem;line-height:1.6}.minutes-actions li+li{margin-top:.65rem}.minutes-action-meta{color:#666;margin-top:.2rem;font-size:.85rem;display:block}.minutes-toggle{margin-bottom:.5rem}.minutes-transcript{white-space:pre-wrap;color:#444;background:#fafafa;border:1px solid #eee;border-radius:4px;max-height:240px;padding:.75rem;font-size:.9rem;line-height:1.55;overflow:auto}.si-caption-stage{color:#f4f7f8;background:radial-gradient(120% 140% at 10% 0,#145a781a,#0000 55%),linear-gradient(160deg,#10232b 0%,#1a333d 55%,#243f4a 100%);border-radius:8px;flex-direction:column;justify-content:center;gap:.55rem;min-height:7.5rem;margin:.5rem 0 1rem;padding:1.25rem 1.1rem;display:flex}.si-caption-line{letter-spacing:.01em;margin:0;font-family:Iowan Old Style,Palatino Linotype,Palatino,Book Antiqua,Georgia,serif;font-size:clamp(1.15rem,2.2vw,1.55rem);line-height:1.45}.si-caption-line+.si-caption-line{margin-top:.35rem}.si-caption-line-b{color:#f4f7f8d1;font-size:clamp(1.02rem,1.9vw,1.32rem)}.si-caption-line-partial{color:#f4f7f8bd}.si-caption-line-pending:before{content:"​"}.si-caption-line.interim{color:#f4f7f8b8;font-style:italic}.si-caption-waiting{color:#f4f7f8c7;margin:0;font-size:1rem;line-height:1.5;animation:1.6s ease-in-out infinite si-pulse}@keyframes si-pulse{0%,to{opacity:.55}50%{opacity:1}}.si-caption-meta{color:#f4f7f8b8;flex-wrap:wrap;gap:.65rem 1rem;margin:0;font-size:.8rem;line-height:1.4;display:flex}.si-subtitle-list{flex-direction:column;gap:.35rem;max-height:280px;display:flex;overflow:auto}.si-subtitle-item{width:100%;color:inherit;text-align:left;cursor:pointer;font:inherit;background:0 0;border:1px solid #0000;border-radius:6px;grid-template-columns:3.4rem 1fr;align-items:start;gap:.65rem;padding:.55rem .65rem;display:grid}.si-subtitle-item:hover{background:#f6f6f4}.si-subtitle-item.active{background:#eef5f7;border-color:#d5e4e9}.si-subtitle-time{color:#777;font-variant-numeric:tabular-nums;padding-top:.15rem;font-size:.78rem}.si-subtitle-text{color:#2a2a2a;text-align:left;flex-direction:column;gap:.2rem;font-size:.92rem;line-height:1.5;display:flex}.si-subtitle-source{color:#6a6a6a;font-size:.82rem;font-weight:400}.si-subtitle-line{display:block}.si-subtitle-line-b{color:#5a5a5a;font-size:.86rem;font-weight:400}.si-subtitle-item.active .si-subtitle-text{color:#10232b;font-weight:600}.si-subtitle-item.active .si-subtitle-source,.si-subtitle-item.active .si-subtitle-line-b{color:#4a5a62;font-weight:400}.status,.result-card,.map-placeholder,.map-banner{border-radius:6px;padding:.85rem 1rem;font-size:.875rem}.status{background:#fff;border:1px solid #ddd;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.status.loading{color:#444}.status.error,.error-text{color:#a33;background:#fff5f5;border:1px solid #e8b4b4}.result-card,.transcript-card,.empty-panel,.location-panel{background:#fff;border:1px solid #ddd}.transcript-card{border-radius:6px;padding:.85rem 1rem}.transcript-card h3{margin:0;font-size:.95rem;font-weight:600}.btn.play-audio{background:#fafafa;border:1px solid #d0d0d0;border-radius:999px;min-width:3.5rem;padding:.28rem .65rem;font-size:.78rem}.btn.play-audio:hover{background:#f0f0f0}.transcript-card p{color:#444;margin:.5rem 0 0;font-size:.875rem}.timing-meta{flex-wrap:wrap;gap:.45rem;margin-top:.65rem;display:flex}.timing-chip{color:#555;background:#f4f4f4;border:1px solid #e8e8e8;border-radius:4px;align-items:center;padding:.18rem .5rem;font-size:.78rem;display:inline-flex}.timing-chip.timing-total{color:#334;background:#f0f4ff;border-color:#d5def8;font-weight:600}.location-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.location-item{cursor:grab;background:#fff;border:1px solid #e5e5e5;border-radius:4px;justify-content:space-between;align-items:flex-start;gap:.5rem;padding:.55rem .65rem;display:flex}.location-item.dragging{opacity:.55}.location-item.active{background:#fafafa;border-color:#1a1a1a}.drag-handle{color:#aaa;letter-spacing:-.12em;-webkit-user-select:none;user-select:none;cursor:grab;flex-shrink:0;margin-top:.35rem;font-size:.75rem}.trip-controls{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.65rem;margin:.35rem 0 .65rem;display:flex}.trip-date-field{color:#666;gap:.25rem;font-size:.78rem;display:grid}.trip-date-field input{font:inherit;color:#1a1a1a;background:#fff;border:1px solid #ccc;border-radius:4px;padding:.4rem .5rem;font-size:.88rem}.fleet-actions{gap:.4rem;display:flex}.btn.secondary{color:#1a1a1a;font:inherit;cursor:pointer;background:#fff;border:1px solid #ccc;border-radius:4px;padding:.4rem .7rem;font-size:.85rem}.btn.secondary:hover{background:#f5f5f5}.vehicle-groups{gap:.75rem;margin-top:.35rem;display:grid}.vehicle-group{border:1px solid #e5e5e5;border-left:3px solid var(--vehicle-color,#2563eb);background:#fcfcfc;border-radius:6px;padding:.55rem .65rem .65rem;transition:box-shadow .15s,border-color .15s,background .15s}.vehicle-group.focused{box-shadow:0 0 0 2px color-mix(in srgb, var(--vehicle-color,#2563eb) 35%, transparent);background:#fff}.vehicle-group.drop-target{border-color:var(--vehicle-color,#2563eb);background:color-mix(in srgb, var(--vehicle-color,#2563eb) 8%, #fff)}.vehicle-group.empty-vehicle{margin-bottom:.5rem}.vehicle-group-header{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.35rem;display:flex}.vehicle-focus-btn{font:inherit;color:#1a1a1a;cursor:pointer;background:0 0;border:none;align-items:center;gap:.4rem;padding:0;font-size:.92rem;font-weight:600;display:inline-flex}.vehicle-swatch{background:var(--vehicle-color,#2563eb);border-radius:999px;flex-shrink:0;width:.7rem;height:.7rem}.vehicle-count{color:#555;background:#eee;border-radius:999px;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 .3rem;font-size:.72rem;font-weight:500;display:inline-flex}.vehicle-load{color:#666;margin-bottom:.45rem;font-size:.78rem}.vehicle-load.overloaded{color:#a33;font-weight:600}.vehicle-drop-hint{text-align:center;color:#888;background:#fff;border:1px dashed #ccc;border-radius:4px;margin:.25rem 0 0;padding:.65rem;font-size:.82rem}.capacity-field.compact{flex:1;min-width:7rem;margin:0}.capacity-field.compact input{max-width:8rem}.route-map-panel{flex-direction:column;flex:1;gap:.55rem;min-height:0;display:flex}.map-summaries{flex-direction:column;gap:.4rem;display:flex}.vehicle-route-summaries{gap:.4rem;display:grid}@media (width>=720px){.vehicle-route-summaries{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}}.vehicle-route-card{text-align:left;cursor:pointer;border-left:3px solid var(--vehicle-color,#2563eb);width:100%;transition:opacity .15s}.vehicle-route-card.dimmed{opacity:.45}.vehicle-route-card.focused{opacity:1;box-shadow:0 0 0 1px color-mix(in srgb, var(--vehicle-color,#2563eb) 40%, transparent)}.vehicle-route-title{align-items:center;gap:.4rem;margin-bottom:.2rem;font-weight:600;display:flex}.route-error{color:#a33;font-weight:500}.trip-date-banner{font-weight:600}.location-main{flex:1;gap:.4rem;min-width:0;display:grid}.location-label{cursor:pointer;flex:1;align-items:center;gap:.55rem;display:flex}.location-index{color:#666;background:#eee;border-radius:999px;justify-content:center;align-items:center;width:1.25rem;height:1.25rem;font-size:.75rem;display:inline-flex}.location-name{font-size:.9rem}.location-name-input{width:100%;min-width:0;font:inherit;color:#1a1a1a;background:0 0;border:1px solid #0000;border-radius:4px;padding:.35rem .45rem;font-size:.9rem}.location-name-input:focus{background:#fff;border-color:#2684ff;outline:none}.location-meta{color:#777;margin-left:3.1rem;font-size:.78rem;line-height:1.4}.location-meta.error{color:#a33}.candidate-select{color:#1a1a1a;width:calc(100% - 3.1rem);min-width:0;max-width:100%;font:inherit;background:#fff;border:1px solid #ccc;border-radius:4px;margin-left:3.1rem;padding:.55rem .6rem;font-size:.88rem;line-height:1.4}.engine-select{color:#1a1a1a;width:100%;font:inherit;background:#fff;border:1px solid #ccc;border-radius:4px;padding:.55rem .6rem;font-size:.9rem}.directory-actions{flex-wrap:wrap;gap:.5rem;display:flex}.directory-table{gap:.45rem;margin-top:1rem;display:grid}.directory-row{border-bottom:1px solid #eee;grid-template-columns:minmax(100px,140px) minmax(0,1fr) 42px;align-items:center;gap:.75rem;padding:.55rem 0;font-size:.85rem;display:grid}.directory-row span{word-break:break-word;min-width:0}.directory-input{width:100%;min-width:0;font:inherit;color:#1a1a1a;background:#fff;border:1px solid #ccc;border-radius:4px;padding:.4rem .5rem;font-size:.85rem}.directory-input:focus{border-color:#2684ff;outline:none}.directory-head{color:#777;font-size:.78rem;font-weight:600}.result-card{background:#fff;border:1px solid #ddd}.result-header{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.result-header-actions{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.result-card h3{margin:0;font-size:.95rem;font-weight:600}.result-card dl{gap:.65rem;margin:0;display:grid}.result-card dt{color:#888;font-size:.75rem}.result-card dd{margin:.15rem 0 0}.map-wrapper,.map-placeholder{background:#eee;border:1px solid #ddd;border-radius:6px;flex:1;height:480px;min-height:480px;position:relative;overflow:hidden}.map-placeholder{color:#888;text-align:center;place-items:center;padding:2rem;font-size:.875rem;display:grid}.map-banner{color:#444;background:#fff;border:1px solid #ddd;position:relative}.map-banner.error{color:#a33;background:#fff;border:1px solid #e8b4b4}.map-banner.route-order{color:#444;background:#fff;border:1px solid #ddd;padding:.55rem .7rem;font-size:.8rem;line-height:1.4}.map-banner.route-order.overload{color:#a33;border-color:#e8b4b4}.load-summary{gap:.25rem;margin-top:.4rem;display:grid}.load-stops{gap:.1rem;margin:0;padding-left:1.1rem;display:grid}.load-stops .overloaded{color:#a33;font-weight:600}.capacity-field,.weight-field{color:#666;gap:.25rem;font-size:.78rem;display:grid}.manual-add-form{grid-template-columns:minmax(0,1fr) 4.5rem auto;gap:.4rem;margin:.5rem 0 .75rem;display:grid}.manual-name-input,.manual-weight-input{width:100%;min-width:0;font:inherit;color:#1a1a1a;background:#fff;border:1px solid #ccc;border-radius:4px;padding:.45rem .55rem;font-size:.88rem}.manual-name-input:focus,.manual-weight-input:focus{border-color:#2684ff;outline:none}.capacity-field{margin:.35rem 0 .65rem}.weight-field{width:calc(100% - 2.4rem);margin-left:2.4rem}.capacity-field input,.weight-field input{width:100%;max-width:12rem;font:inherit;color:#1a1a1a;background:#fff;border:1px solid #ccc;border-radius:4px;padding:.4rem .5rem;font-size:.88rem}.capacity-field input:focus,.weight-field input:focus{border-color:#2684ff;outline:none}@media (width<=960px){.route-layout,.minutes-layout{grid-template-columns:1fr}}@media (width<=760px){.sidebar{width:68px;padding:15px 8px}.brand>span:last-child,.nav-label,.sidebar-foot>div:nth-child(2){display:none}.brand{justify-content:center;padding:0}.sidebar nav button{justify-content:center;padding:12px;font-size:0}.sidebar-foot>.logout-icon{display:none}.main{width:calc(100% - 68px);margin-left:68px}.topbar{align-items:flex-start;height:auto;padding:14px}.app-main{padding:12px 10px 20px}}
