*{box-sizing:border-box}body{background:#f4f5f7;color:#222;font-family:system-ui,sans-serif;margin:0}.layout{display:flex;min-height:100vh}.sidebar{background:#1f2937;color:#fff;display:flex;flex-direction:column;gap:4px;padding:16px;width:220px}.sidebar h2{font-size:18px;margin:0 0 16px}.sidebar a{border-radius:6px;color:#cbd5e1;display:block;padding:8px 12px;text-decoration:none}.sidebar a.router-link-active{background:#374151;color:#fff}.sidebar .group{color:#94a3b8;font-size:12px;margin:12px 12px 4px;text-transform:uppercase}.sidebar .sub{padding-left:24px}.main,.sidebar .spacer{flex:1}.main{padding:24px}.card{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0001;padding:20px}.row{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}h1{font-size:22px;margin:0}table{border-collapse:collapse;width:100%}td,th{border-bottom:1px solid #eee;padding:10px;text-align:left}input,select{border:1px solid #cbd5e1;border-radius:6px;margin-bottom:10px;padding:8px 10px;width:100%}button{background:#2563eb;border:0;border-radius:6px;color:#fff;cursor:pointer;padding:8px 14px}button.gray{background:#64748b}button.red{background:#dc2626}button+button{margin-left:6px}.modal{align-items:center;background:#0006;display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;position:fixed}.modal .card{width:380px}.err{color:#dc2626;margin:0 0 10px}.login{margin:12vh auto;max-width:340px}.badge{background:#dcfce7;border-radius:10px;color:#166534;font-size:12px;padding:2px 8px}.badge.closed{background:#fee2e2;color:#991b1b}
