
*{box-sizing:border-box}
body.page{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,"PingFang SC","Microsoft YaHei",Arial,sans-serif;color:#0b1736;background:#f3f6fb}
.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:linear-gradient(90deg,#0b3a82,#1760d6);color:#fff;position:sticky;top:0;z-index:10}
.brand{font-weight:700;color:#fff;text-decoration:none}
.nav a{color:#fff;margin:0 8px;text-decoration:none;opacity:.9}
.nav a:hover{opacity:1}
.btn{background:#1e88e5;color:#fff;border:none;padding:8px 12px;border-radius:10px;cursor:pointer;transition:.2s;box-shadow:0 2px 6px rgba(0,0,0,.1);text-decoration:none;display:inline-block}
.btn:hover{transform:translateY(-1px)}
.btn.small{padding:6px 10px;border-radius:8px}
.btn.primary{background:#ffd54f;color:#172a3a}
.btn.danger{background:#ef5350}
.input{padding:8px 10px;border:1px solid #d7dbe7;border-radius:8px;outline:none;min-width:0}
.input:focus{border-color:#1e88e5;box-shadow:0 0 0 3px rgba(30,136,229,.15)}
.panel{background:#fff;border-radius:12px;box-shadow:0 2px 8px rgba(0,0,0,.05);margin:12px;padding:12px}
.panel-title{font-weight:700;margin-bottom:8px}
.row{display:flex;align-items:center;gap:8px;margin:8px 0;flex-wrap:wrap}
.spacer{flex:1}
.hero{padding:60px 20px;text-align:center}
.auth-wrap{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px}
.card{background:#fff;border-radius:12px;padding:12px;box-shadow:0 2px 8px rgba(0,0,0,.05)}
.list{list-style:none;margin:12px;padding:0}
.list-item{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border:1px solid #e6eaf4;border-radius:8px;background:#fafcff;margin:6px 12px}
.table{width:calc(100% - 24px);margin:12px;border-collapse:separate;border-spacing:0 6px}
.table th,.table td{background:#fff;padding:8px 10px}
.table th{background:#f4f7ff}
.tip{color:#ef5350;margin:8px 12px;min-height:20px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ft{text-align:center;color:#8aa; padding:30px 0}
.layout{display:grid;grid-template-columns:320px 1fr 320px;gap:12px;padding:12px;height:calc(100vh - 140px);overflow:hidden}
.left,.right{overflow:auto}
.canvas-wrap{background:#fff;border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.06);position:relative;overflow:auto}
#board{background:linear-gradient(180deg,#fafdff,#ffffff);border-radius:12px}
.node{cursor:pointer}
.node.selected .shape{stroke:#ffd54f !important;stroke-width:3px !important}
.shape{stroke:#1c2a4a;stroke-width:2px;fill:#fff}
.text{font-size:12px;fill:#1c2a4a;user-select:none}
.badge{stroke:#fff;stroke-width:1px}
.menu{position:absolute;background:#fff;border:1px solid #dfe4f0;border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,.15);min-width:220px;overflow:hidden}
.menu .mi{padding:8px 12px;cursor:pointer;border-bottom:1px solid #f1f4fb}
.menu .mi:last-child{border-bottom:0}
.menu .mi:hover{background:#f6f9ff}
