*{box-sizing:border-box;margin:0;padding:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:#f5f5f5;min-height:100vh}
.login{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:20px}
.box{background:#fff;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1);padding:40px;width:100%;max-width:400px}
.box h1{text-align:center;color:#333;margin-bottom:30px}
.form-group{margin-bottom:20px}
label{display:block;margin-bottom:8px;color:#666;font-size:14px}
.hint{color:#888;font-weight:normal}
input,textarea,select{width:100%;padding:12px;border:1px solid #ddd;border-radius:4px;font-size:14px}
textarea{min-height:150px;font-family:monospace;resize:vertical}
select{cursor:pointer;background:#fff}
.content-row{display:flex;gap:8px;margin-bottom:8px}
.content-input{flex:1;min-height:44px;resize:none;overflow:hidden;font-family:monospace}
.btn-add{width:100%;height:40px;border:1px dashed #007bff;border-radius:4px;background:#fff;color:#007bff;font-size:16px;cursor:pointer;margin-top:4px}
.btn-add:hover{background:#f0f7ff}
.btn{padding:12px 24px;border:none;border-radius:4px;cursor:pointer;font-size:14px;width:100%}
.btn:hover{opacity:.9}
.btn-pri{background:#007bff;color:#fff}
.btn-danger{background:#dc3545;color:#fff}
.btn-success{background:#28a745;color:#fff}
.btn-sm{padding:6px 12px;font-size:12px;width:auto}
.error{color:#dc3545;font-size:14px;text-align:center;margin-bottom:15px}
.container{max-width:1200px;margin:0 auto;padding:20px}
.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
.main-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}
@media(max-width:900px){.main-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.main-grid{grid-template-columns:1fr}}
.card{background:#fff;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1);padding:20px;height:fit-content}
.card h2{color:#555;margin-bottom:15px;font-size:18px;border-bottom:1px solid #eee;padding-bottom:10px}
.list{list-style:none;max-height:400px;overflow-y:auto}
.item{display:flex;justify-content:space-between;align-items:center;padding:12px;border:1px solid #eee;border-radius:4px;margin-bottom:10px}
.item:hover{background:#f9f9f9}
.item-info{flex:1;min-width:0}
.item-key{font-weight:bold;color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item-route{font-size:12px;color:#888;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.item-act{display:flex;flex-direction:column;gap:8px;flex-shrink:0}
.empty{text-align:center;color:#888;padding:40px}
.toast{position:fixed;top:20px;right:20px;padding:15px 25px;border-radius:4px;color:#fff;opacity:0;transition:opacity .3s;z-index:1000}
.toast.show{opacity:1}
.toast.ok{background:#28a745}
.toast.err{background:#dc3545}
.route-form{display:flex;flex-direction:column;gap:10px;margin-top:15px}
.route-form input,.route-form select{width:100%}
.route-btns{display:flex;gap:10px}
.route-btns .btn{flex:1;margin-right:0}
.route-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:#f9f9f9;border-radius:4px;margin-bottom:8px}
.route-info{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}
.route-info code{background:#e9ecef;padding:2px 6px;border-radius:3px;font-size:12px}
.arrow{color:#888;font-size:12px}
.hidden{display:none}
