@import url(https://fonts.googleapis.com/css2?family=Chiron+GoRound+TC:wght@200..900&family=Nunito:ital,wght@0,200..1000;1,200..1000&display=swap);.header,body{display:flex}.sidebar-left,body{flex-direction:column}.main-area,.time-display,body{overflow:hidden}.stat-box,.time-display,.tool-cat{text-align:center}.font-bold,.insp-val,.tool-cat{font-weight:700}.btn,.tab-btn,.tool-btn,.variant-btn{cursor:pointer}:root{--bg:#0B1120;--panel:#0F172A;--surface:#1E293B;--primary:#3B82F6;--primary-hover:#2563EB;--success:#10B981;--warning:#F59E0B;--danger:#EF4444;--purple:#A855F7;--text:#E2E8F0;--text-muted:#94A3B8;--border:#334155}*{box-sizing:border-box;margin:0;padding:0;font-family:Nunito,"Chiron GoRound TC","Yuanti TC","Noto Sans","Noto Sans TC","微軟正黑體",system-ui,sans-serif;user-select:none}body{background:var(--bg);color:var(--text);height:100vh;font-weight:300}.hidden{display:none!important}.glass{background:rgba(15,23,42,.9);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border)}.header{padding:.75rem 1.25rem;justify-content:space-between;align-items:center;z-index:50;border-bottom-width:1px;flex-shrink:0;box-shadow:0 4px 20px rgba(0,0,0,.3);font-size:.8em}.header-group,.header-title{align-items:center;gap:.5rem;display:flex}.header-title{letter-spacing:-.02em;background:linear-gradient(to right,#60a5fa,#a78bfa);-webkit-background-clip:text;color:transparent;font-size:1.2rem}.btn,.footer{letter-spacing:.05em;text-transform:uppercase}.header-group{background:var(--panel);padding:.25rem;border-radius:.5rem;border:1px solid var(--border)}.btn,.time-display{align-items:center}.time-display{background:var(--bg);border:1px solid var(--border);padding:.375rem 1rem;border-radius:.5rem;width:14rem;box-shadow:inset 0 2px 4px rgba(0,0,0,.5);font-family:monospace;position:relative;display:flex;justify-content:center}.time-progress{position:absolute;top:0;left:0;height:100%;background:rgba(59,130,246,.2);transition:width .2s}.stop-dot,.variant-menu{top:50%;transform:translateY(-50%)}.btn,.tab-btn,.tool-btn{transition:.2s}.main-area{display:flex;flex:1;position:relative}.sidebar-left{width:4.5rem;display:flex;align-items:center;padding:1rem 0;z-index:40;border-right-width:1px;box-shadow:4px 0 20px rgba(0,0,0,.3);overflow-y:auto}.sidebar-right{width:340px;display:flex;flex-direction:column;z-index:40;border-left-width:1px;box-shadow:-8px 0 20px rgba(0,0,0,.5)}.footer{padding:.5rem 1.25rem;display:flex;justify-content:space-between;align-items:center;z-index:50;border-top-width:1px;color:var(--text-muted);font-size:.75rem}.btn{display:inline-flex;justify-content:center;gap:.375rem;padding:.375rem .75rem;border-radius:.375rem;color:var(--text);background:0 0;border:none}.panel-content,.tab-group,.tool-btn{display:flex;display:flex}.flex-row,.tool-btn{align-items:center}.card-title,.tab-btn,.text-muted,.tool-btn,.tool-cat{color:var(--text-muted)}.btn:hover{background:rgba(255,255,255,.1);color:#fff}.btn.primary,.tool-btn.active,.variant-btn.active{background:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-hover);box-shadow:0 0 10px rgba(59,130,246,.4)}.tool-cat{text-transform:uppercase;letter-spacing:.1em;margin-bottom:.5rem;margin-top:1rem;width:100%;font-size:.6em}.card-title,.tooltip{text-transform:uppercase;letter-spacing:.05em}.tool-cat:first-child{margin-top:0}.tool-btn{justify-content:center;background:rgba(from var(--border) r g b / .1);border:1px solid rgba(from var(--border) r g b / .5);position:relative;width:calc(100% - 1em);min-height:2em;border-radius:.5rem;justify-content:center;background:rgba(from var(--border) r g b / .1);border:1px solid rgba(from var(--border) r g b / .5);margin-bottom:.375rem;font-size:1em}.tool-btn:hover:not(.disabled):not(.active){background:rgba(from var(--border) r g b / .5);border-color:var(--border);color:var(--text)}.tool-btn.active{border-color:#60a5fa;box-shadow:0 0 15px rgba(59,130,246,.4)}.tool-btn.danger:hover:not(.disabled){background:rgba(239,68,68,.2);border-color:var(--danger);color:var(--danger)}.tool-btn.disabled{opacity:.2;pointer-events:none;filter:grayscale(100%)}.tool-has-variants::after{content:'';position:absolute;bottom:3px;right:3px;width:0;height:0;border-left:5px solid transparent;border-bottom:5px solid var(--text-muted);transition:.2s}.tool-btn.active.tool-has-variants::after{border-bottom-color:#fff}.speed-btn{height:100%;padding:0;font-size:.75rem}.speed-btn.bg-yellow-600{background:#d69e2e}.ring-2{outline:solid 2px}.speed-btn.active{background:var(--primary);color:#fff;box-shadow:0 0 10px rgba(59,130,246,.4)}.divider{width:2rem;min-height:1px;background:var(--border);margin:.5rem auto}.tab-group{background:var(--panel);padding:.25rem;border-bottom:1px solid var(--border);gap:.25rem;flex-shrink:0}.tab-btn{flex:1;padding:.5rem;text-transform:uppercase;border-radius:.25rem;border:1px solid transparent;background:0 0}.card,.stat-box{border:1px solid var(--border)}.tab-btn:hover,.variant-btn:hover{background:var(--surface);color:var(--text)}.tab-btn.active{border-color:var(--primary);background:rgba(59,130,246,.1);color:var(--primary)}.panel-content{position:absolute;inset:0;overflow-y:auto;padding:.75rem;flex-direction:column;gap:.75rem}.flex-col,.flex-row{display:flex;gap:.5rem}.card{background:var(--surface);border-radius:.5rem;padding:.75rem;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);flex-shrink:0}.prog-bg,.stops-container .prog-fill{border-radius:1em}.card-title{margin-bottom:.5rem;border-bottom:1px solid var(--border);padding-bottom:.25rem;display:flex;justify-content:space-between;align-items:center;font-size:.75em}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-col{flex-direction:column}.gap-2{gap:1rem}.grid-2,.grid-3{display:grid;gap:.5rem}.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:1fr 1fr 1fr}.text-xs{font-size:.65rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.text-white{color:#fff}.text-primary{color:var(--primary)}.text-success{color:var(--success)}.text-warning{color:var(--warning)}.text-danger{color:var(--danger)}.text-purple{color:#a855f7}.text-percentage::after{content:' %';font-size:.75em}.prog-bg{width:100%;background:var(--bg);height:.5rem;display:flex;overflow:hidden;margin-bottom:.25rem}.inspector,.stat-box{background:var(--surface)}.prog-fill{height:100%;transition:.3s}.stops-container .prog-bg{overflow:visible}.stat-box{border-radius:.5rem;padding:.5rem}.alert-card,.feed-card,.input-field,.route-card{border:1px solid var(--border);background:var(--panel)}.inspector{height:14rem;flex-shrink:0;border-top:1px solid var(--border);padding:.75rem;display:flex;flex-direction:column;overflow-y:auto}.insp-row{display:flex;justify-content:space-between}.insp-label{color:var(--text-muted);text-transform:uppercase;display:block;font-size:.75em}.insp-val{color:var(--text)}.alert-card,.feed-card,.route-card{border-radius:.25rem;padding:.5em .75em;flex-shrink:0}.alert-card p{color:var(--text-muted);margin:.25rem 0;line-height:1.2}.input-field{width:100%;border-radius:.25rem;padding:.25rem .5rem;color:#fff;outline:0}.input-field:focus{border-color:var(--primary)}.variant-menu{position:absolute;left:4.5rem;background:var(--panel);border:1px solid var(--border);border-radius:0 .5rem .5rem 0;padding:.5rem;z-index:50;width:10rem;display:flex;flex-direction:column;gap:.25rem;box-shadow:10px 0 20px rgba(0,0,0,.5);border-left:none}.notification,.tooltip{box-shadow:0 4px 6px rgba(0,0,0,.3)}.variant-btn{width:100%;text-align:left;padding:.25rem .5rem;background:0 0;border:none;color:var(--text-muted);border-radius:.25rem}.stop-dot{position:absolute;width:6px;height:6px;border-radius:50%;background:#94a3b8;border:1px solid var(--panel);z-index:10}.notification{background:var(--primary);color:#fff;padding:.5rem 1rem;border-radius:.25rem;transition:opacity .3s;margin-bottom:.5rem}.notification.danger{background:var(--danger)}.tooltip{position:fixed;z-index:9999;background:var(--panel);border:1px solid var(--border);color:#fff;padding:.375rem .6rem;border-radius:.25rem;pointer-events:none;display:none;white-space:nowrap;font-size:.75em/*! font-weight: 500; */}.badge{background:var(--danger);color:#fff;border-radius:999px;padding:.1rem .3rem;font-size:.5em}.route-color-btn{width:1.25rem;height:1.25rem;border-radius:50%;transition:outline-offset .2s;outline-offset:-2px;outline:currentColor solid 2px;border:none;cursor:pointer}.route-color-btn.active{outline:currentColor solid 2.5px;outline-offset:2px}.scrollbar-hide::-webkit-scrollbar{display:none}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}